-
Notifications
You must be signed in to change notification settings - Fork 505
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
Fixed bug in PME with triclinic boxes #1487
Conversation
Can you elaborate on the bug? What cases does it apply to, what is the effect, and do we need to do a bugfix update for 7.0? |
Huh, it looks like the OpenCL is failing on travis:
|
I'm not really sure. I found the problem by tracing through the calculation with the CPU and CUDA platforms and identifying where they diverged. I then spent a while trying to create a simplified test case that would reproduce the problem, but I couldn't get it to fail. So there seems to still be something about it I don't fully understand. I'll continue working on it. |
I figured out what I was missing: in my test case, every atom was a separate molecule, so they were getting correctly wrapped to the triclinic box at an earlier stage in the calculation. I had to add constraints between all of them so they would be treated as a single molecule, thus ensuring some positions would be outside the box when they arrived at the charge spreading kernel. I do think we need to issue a patch for this. I'll open a separate issue on that. |
Can you elaborate on the impact of the bug at this stage? |
I'd say that any simulation with a triclinic box, PME, and CUDA or OpenCL could potentially have incorrect forces. So it's a serious bug. |
Do you know which range of version numbers were affected? |
Is the bug fixed? I was running MD simulations for 18 small organic molecules in different solvents, namely water, octanol, and POPC lipid bilayer (the input files are pasted below) and while the temperature equilibrated at the set value for simulations in water, it did not for simulations in octanol or lipid bilayer. In particular, I set the temperature to 298.15 K and I obtained an average temperature of 310 K for simulations in octanol and 305 K for simulations in the lipid bilayer (see Figure below). Do you know which might be the problem? I am using the 7.3.0 version of openMM. ` Water and Octanol#------------------------ thermostat = AndersenThermostat(298.15 * unit.kelvin, 1/unit.picosecond) print("Minimizing") print("NPT Equilibration") ` POPC bilayer#------------------------ thermostat = AndersenThermostat(298.15 * unit.kelvin, 1/unit.picosecond) print("Minimizing") print("NPT Equilibration") |
Yes, this PR was merged fixing the bug. If you think you might have a problem, could you open a new issue for it rather than tacking it onto an unrelated one? Thanks! |
Thanks. I created a new issue #2223 |
Fixes #1486.