Skip to content
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

LJPME is implemented but not a part of the SMIRNOFF spec #989

Closed
mattwthompson opened this issue Jun 16, 2021 · 4 comments
Closed

LJPME is implemented but not a part of the SMIRNOFF spec #989

mattwthompson opened this issue Jun 16, 2021 · 4 comments

Comments

@mattwthompson
Copy link
Member

Is your feature request related to a problem? Please describe.
LJPME is implemented in some capacity in the toolkit, but it not part of the SMIRNOFF spec. This adds a decent amount of complexity to handling and testing non-bonded methods/OpenMM exports.

It's covered in CodeCov's opinion, but I don't think any substantive tests cover LJPME.

Describe the solution you'd like
It seems straightforward to suggest that either the implementation should be removed or it should be added to the SMIRNOFF spec.

Describe alternatives you've considered
We could leave it be, but that's likely to produce maintenance issues, bad behavior and/or user experience; implementation should follow specification, not vice versa. Deprecating and then removing LJPME functionality should be straightforward, or expanding the SMIRNOFF spec to allow method="pme" in the vdW section (openforcefield/standards#11) would sync things up.

Additional context
As far as I know, nobody is using LJPME from the toolkit; if they were, it might take a significant amount of modifications (either tinkering with the OpenMM System or using a force field that does not follow SMIRNOFF).

I don't think re-fitting with LJPME is on the next year or so of the science roadmap, but there might be some interest in using it long-term. I'm pretty sure it's implemented in all major simulation engines.

I'm probably missing some history, but I couldn't quickly find anything documented on this.

@jchodera
Copy link
Member

jchodera commented Jun 16, 2021

I would recommend that LJPME be added to the spec. I think this was originally our intention, but it must have slipped through the cracks.

There is now significant evidence that LJPME is superior to the standard PME + LJ-cutoff/analytical dispersion correction approach in multiple applications of import:

Since recent algorithmic improvements have made it possible to carry out LJPME simulations even for Lorentz-Berthelot combining rules, and LJPME is supported by OpenMM, gromacs, CHARMM, and AMBER, there is no risk in parameterizing a force field with it.

Just as we should be considering producing reaction field and standard PME variants of our main line force fields, we should seriously consider producing an LJPME variant with improved properties.

@mattwthompson
Copy link
Member Author

mattwthompson commented Aug 3, 2023

After #1679, "PME" is no longer an allowed value for vdWHandler.method (or its relevant replacement, vdWHandler.periodic_method).

This should (typo edit) NOT be interpreted as backing away from LJPME - I believe we're all in agreement that we want it in our infrastructure and would like to at least explore its use in mainline OpenFF force fields - but the toolkit should avoid filling in gaps in the SMIRNOFF spec. Once some form of LJPME is in the spec, I hope we can add it in the toolkit and Interchange in short time.

@jchodera
Copy link
Member

jchodera commented Aug 3, 2023

We should not "back away from LJPME" since it is a best practice.

See this proposal to amend the SMIRNOFF spec to address the LJPME issue from July 2022:
openforcefield/standards#44

@mattwthompson
Copy link
Member Author

I have a knack for unhelpful typos and this is one such instance - I mean to say this should NOT be interpreted as backing away from LJPME! My mistake, sorry for the confusion!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants