Closed swharden closed 4 years ago
I added a comment with the name of the bibliographic source:
https://github.com/swharden/JLJP/blob/ff32b9ee12d99d94d9cbe1affb8364474ef5cc5f/src/Ion.java#L60-L62
@dbrogioli the addition ff32b9ee12d99d94d9cbe1affb8364474ef5cc5f looks great, thanks!
Original Papers Application - Ng and Barry 1995: https://www.sciencedirect.com/science/article/pii/016502709400087W Review - Barry and Lynch 1991: https://link.springer.com/article/10.1007/BF01870526
Note: The review uses values sourced from Langes Handbook of Chemistry (1985), edited by JA Dean, and Electrolyte Solutions (1968), by Robinson and Stokes.
Thanks for pointing these papers out @saglag!
It's also reassuring to run some of their numbers and see their LJPs are consistent with ours (even though their theoretical values use the Henderson equation). References like this might be a good source for known ion sets / LJPs that can be used to create tests as discussed in #5
Note: The review uses values sourced from Langes Handbook of Chemistry (1985), edited by JA Dean, and Electrolyte Solutions (1968), by Robinson and Stokes.
@saglag it looks like a PDF of this book is available http://fptl.ru/biblioteka/spravo4niki/dean.pdf but I'm having trouble locating these values. You're more familiar with chemistry than I am - am I overlooking something?
The review paper shows a table:
...
Mobility in this chart is expressed relative to that of K+. For example, relative ionic mobility of H+ (4.76) is mobility of H+ (350.1) divided by that for K+ (73.5)
It looks like they calculate ion mobility from _equivalent molar conductivity_ which is TABLE 8.32 of Langes Handbook of Chemistry which is available as a PDF: http://fptl.ru/biblioteka/spravo4niki/dean.pdf
There are 3 temperatures available to choose from so maybe one day we can add a feature to let the user calculate LJP at different temperatures after all (#2)
@saglag thanks for the tip! That got me the rest of the way there.
TABLE 8.32 of Langes Handbook of Chemistry:\ http://fptl.ru/biblioteka/spravo4niki/dean.pdf
def showMobilityOfIon(name, charge, conductance):
Av = 6.02e23 # avogadro's number
F = 1.6e-19 # elementary charge
mobility = conductance / (Av * pow(F, 2) * abs(charge))
print("%s mobility: %E" % (name, mobility))
showMobilityOfIon("Ag+", 1, 61.9e-4)
showMobilityOfIon("Cl-", -1, 76.31e-4)
showMobilityOfIon("Ca++", 2, 59.5e-4)
showMobilityOfIon("NH2SO3-", -1, 48.6)
Ag+ mobility: 4.016559E+11
Cl- mobility: 4.951594E+11
Ca++ mobility: 1.930414E+11
NH2SO3- mobility: 3.153551E+15
The algorithm uses the mobilities but also the temperature T, independently. I think that the possibility of selecting the temperature T is useful. For example, a user can take the ion mobilities from a handbook, say at 70°C, and input them manually into JLJP. Then he/she wants also to change the value of T used in the calculations (the term k_BT).
So, I suggest to put an input field for changing the temperature! Together with this, I suggest to clarify that changing T does not account for all the temperature change effects, so the user is aware that he/she has to take care of changing the mobilities according to the temperature.
For the future, having a database of mobilities at various temperatures, which can be expanded easily with contributions from users, would be excellent!
The algorithm uses the mobilities but also the temperature T, independently. I think that the possibility of selecting the temperature T is useful. For example, a user can take the ion mobilities from a handbook, say at 70°C, and input them manually into JLJP. Then he/she wants also to change the value of T used in the calculations (the term k_BT).
So, I suggest to put an input field for changing the temperature! Together with this, I suggest to clarify that changing T does not account for all the temperature change effects, so the user is aware that he/she has to take care of changing the mobilities according to the temperature.
This sounds good! Maybe we could add a temperature box in the GUI with a button next to it that says details which launches a pop-up dialog that explains this.
For the future, having a database of mobilities at various temperatures, which can be expanded easily with contributions from users, would be excellent!
I like this idea too! Having this project open source makes it a lot easier for users to not only add their own mobilities, but also push their changes back to the main project so everyone benefits from them.
Discussion related to adding a temperature option can continue in #2 now that this mobility citation issue is resolved.
Here are some additional mobility tables useful for #10 https://medicalsciences.med.unsw.edu.au/research/research-services/ies/ionicmobilitytables
Where did mobility table come from? This should be cited in the code.
https://github.com/swharden/JLJP/blob/b585ab99d78f39960f85b17988374f3445b7dadb/src/Ion.java#L29-L125