-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversion of LJ parameters for ions #12
Comments
@kdfong this sounds like it's related to one of the subtle differences between codes you were telling me about. Do you think I'm understanding this correctly? |
As an additional point of reference, I found this example file from moltemplate that seems to confirm my understanding and my number for Na+:
|
Hey @rkingsbury, I think that is a very interesting topic!!! Based on my understanding of the "Simulation conditions" part of the JC paper, I derived the conversion relation as follows:
|
@rkingsbury Have opened PR #14, all values now conform to the above JJ form (opls, geometric mixing). |
Thanks @htz1992213 , this sounds more complicated than I realized and it sounds like geometric mixing is the way to go. . Let me read the paper you show above and I'll reply here again. My main, immediate interest in this is figuring out how to properly convert values from this paper so that they can be used with TIP4P-FB water. I'd also like to see if I can find an example somewhere that confirms this approach. |
OK, I've done a little more reading about this and I think we might be talking about slightly different things (or at least, there is a bigger philosophical question to address here). If I understand correctly, the ion values presently stored in However, I'm not sure we should be storing pre-mixed parameters in For example, in my runs, I have not been explicitly setting the pair_style for every pair type. Rather, I just provide the single atom parameters in my data file like this:
And then rely on LAMMPS to mix them. It appears that LAMMPS uses geometric mixing by default (see pair_modify command), and from the documentation of the TIP4P model in LAMMPS it says:
So if we wanted to only store single atom parameters and externalize the mixing somewhere else, I think the conversion formula I posted at the top of this issue is correct. In addition, if we only store pre-mixed ion parameters between the ion and water O, it's not clear to me how the user or LAMMPS could easily calculate the correct pair parameters for ion-ion interactions (e.g., in a binary, ternary, or higher system with many ions). One final complication is that some of the parameter sets use a combination of arithmetic and geometric mixing rules, which appears equivalent to the non-default arithmetic style supported by LAMMPS
The LB rules are also used in the newer parameter set that I want to add: Whatever we decide to do, we should definitely document in the respective data files whether the parameters are pre-mixed or single atom, because if someone sets up a simulation like I have and does not realize the parameters are pre-mixed, LAMMPS is going to mix the parameters anyway and lead to unexpected results. Given all of this, I would advocate only storing single atom values in |
Per discussion earlier today, I will work on updating the ion parameters so that what is stored in |
Hi @htz1992213 , I'm trying to understand how to convert literature Lennard Jones parameters into LAMMPS format, and I'm concerned that the ones for ions stored in
/data/ions
may not have been converted correctly.For example, consider Na+ from the Joung-Cheatham paper here
Here is what we have in
mdgo
for Na+ for the SPCE model:https://github.com/htz1992213/mdgo/blob/c843a9643a67992cf5069e7be668b194e86ef889/mdgo/data/ion/joung_cheatham/spce/Na%2B.lmp#L16-L18
Here is the relevant excerpt from the paper:
![image](https://user-images.githubusercontent.com/1908695/126012855-3d189094-2664-4c44-86d1-c765dfc59e4c.png)
The LAMMPS docs say that
For whatever reason, it's conventional to report sigma as r_min/2 in many papers I've seen. The potential should equal zero when sigma = r. So if I understand correctly, to convert rmin/2 to the sigma that LAMMPS wants, you should do
(r_min / 2 * 2) / 2^(1/6)
If I perform this conversion on the Na+ value from the paper, I get 2.159, vs. 2.238 in
mdgo
. Am I missing something? Also, would there be benefit to storing more decimal places for the epsilon parameter?This is incredibly tricky and I'm really surprised that this subtle point about how LAMMPS defines LJ parameters is not documented more clearly (or that the research community doesn't just report sigma instead of r_min/2). Please let me know what you think, because as I add new parameters I want to make sure I'm converting them correctly.
The text was updated successfully, but these errors were encountered: