[gmx-developers] Bond-angle coupling

Bogdan Costescu bcostescu at gmail.com
Thu Oct 4 14:56:55 CEST 2012


The functions for bonded interactions are all located in
src/gmxlib/bondfree.c. The functions are called on lists of atoms, one
list for one type of interaction potential. The caller already takes
care of splitting the lists between nodes, so you don't have to care
about this aspect. There is however another aspect that comes into
play: what happens after a bond becomes broken. The lists are "fixed",
as the topology is not supposed to change during the MD simulation, so
items from these lists will not magically appear or disappear. If the
bond potential is only based on distance and allows bond reforming,
there is no state to be kept and implementation is quite simple. If,
however, the bond has to remember the state (if it becomes broken it
has to remain broken), there are 2 ways:
- change the lists yourself - they have to be kept synchronized
between nodes, so it becomes a global operation which (if happens
often) will hurt scalability a lot
- keep the state of the bond and move it around with the atoms
whenever the atoms travel between domain decomposition cells
To make things more complex, if you want bonds to break and reform
with different partners, keeping the bond state doesn't help and
changing the lists is the only way.

In terms of the actual potential, you might find some inspiration in
the cross_bond_bond() and cross_bond_angle() functions in the
bondfree.c file.

Good luck!

On Thu, Oct 4, 2012 at 2:28 PM, MURAT OZTURK <murozturk at ku.edu.tr> wrote:
> Hello!
> I am thinking about hacking gromacs in the following way :
> I would like to have an angle potential that would turn on/off depending on
> the energy of a particular bond.
> For example, I will have a lennard-jones-cosine potential for a bonded
> interaction. This will continuously go to '0' at a threshold. Then I will
> have an angle potential between these two atoms (and a third one).
> For each calculation, I would like the angle potential to be multiplied by
> the instantaneous value of the bond potential, effectively turning it off if
> the bond is 'broken'.
> This is to represent a hydrogen bond in a coarse grained model.
> I have intermediate C/C++ skills (that I haven't used in a while), but I am
> intimidated by the parallel nature of the code and am not familiar with the
> internals of gmx. I am willing to work on this full time for a week or so.
> I would truly appreciate if someone could comment on the feasibility of this
> hack, and possibly show me where to begin.
> Thank you
> Murat
> --
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://lists.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the
> www interface or send it to gmx-developers-request at gromacs.org.

More information about the gromacs.org_gmx-developers mailing list