-
Notifications
You must be signed in to change notification settings - Fork 13
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
Effective potential at each charge site #51
Comments
Hi @peterbygrave. That would be very easy to add in a janky way for sure; all of the components needed are there. The potential has three components: direct, reciprocal and self terms. The reciprocal and self terms are already implemented (the self term corrects for the fact that we can't simply exclude the "probe" atom from the potential the way we can in the pairwise loops for direct space terms). The formula for the direct term is very simple, but implementing it properly is a little trickier. The problem is figuring out all the pairs in a smart way. The proper solution is to use some kind of a non bonded list generator to keep everything O(N) in code, and apply the minimum image convention to correctly wrap around periodic boundaries. I didn't add any code like this to avoid scope creep; from there it's a slippery slope to becoming OpenMM itself! Hacking in an O(N^2) solution that doesn't use a list generator should be relatively easy for me to do and, depending on your target application, it might be sufficient. Adding some simple list generating code wouldn't be too difficult on top of that, but I would rather try without it first, to avoid coding up unnecessary features. What kind of system size are you talking about, and is this something that you would want to evaluate just a handful of times, or many? |
So we are doing QM/MM and periodic electrostatics can quickly get out of
control, but also can have a variety of system sizes. We have a canonical
Ewald scheme, but this won't suffice as system sizes grow. Currently O(N^2)
would be absolutely great.
Could you let me know which function would give the reciprocal potential?
This will give me a good place to start learning the interface.
Is there anything I can do to help?
…On Sat, 12 Sep 2020, 14:11 Andy Simmonett, ***@***.***> wrote:
Hi @peterbygrave <https://github.com/peterbygrave>. That would be very
easy to add in a janky way for sure; all of the components needed are
there. The potential has three components: direct, reciprocal and self
terms. The reciprocal and self terms are already implemented (the self term
corrects for the fact that we can't simply exclude the "probe" atom from
the potential the way we can in the pairwise loops for direct space terms).
The formula for the direct term is very simple, but implementing it
properly is a little trickier. The problem is figuring out all the pairs in
a smart way. The proper solution is to use some kind of a non bonded list
generator to keep everything O(N) in code, and apply the minimum image
convention to correctly wrap around periodic boundaries. I didn't add any
code like this to avoid scope creep; from there it's a slippery slope to
becoming OpenMM itself! Hacking in an O(N^2) solution that doesn't use a
list generator should be relatively easy for me to do and, depending on
your target application, it might be sufficient. Adding some simple list
generating code wouldn't be too difficult on top of that, but I would
rather try without it first, to avoid coding up unnecessary features.
What kind of system size are you talking about, and is this something that
you would want to evaluate just a handful of times, or many?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#51 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACHGZPR65ESTM5IIPCIZ6MTSFNXORANCNFSM4RHK3VOA>
.
|
Does this library provide the periodic effective potential matrix (i.e. the
1/r_{ij}
matrix for molecular system) at each atomic/charge site in the system?In other libraries e.g. OpenMM, sampling the potential (i.e. get
q_j/r_{ij}
at sitei
) at a charge site just returns infinity and it would be awesome to have this feature.Many thanks!
The text was updated successfully, but these errors were encountered: