[lammps-users] shake for amonia

Hello all,
I’m attempting to extend the shake routine to constrain NH3 (both bonds and angles).
At present, the routie will only constrain the bonds. So short of having to explicitly invert the 6x6 matix (it could probably be reduced to 5x5 with 3 bonds and 2 angles) on the RHS of the Lagrange multipliers equation, is there an easier way: i.e. could i constrain the bond and angles seperately in two steps?



You might consider using fix rigid rather than shake
to do rigid NH3.


This approach might not be very efficient in parallel,
but may be adequate for what you're trying to do.


I think you have 3 options. I'd recommend #3.

1 - do as Paul suggests and use fix rigid. This will work
but will be slow if you have 1000s of NH3. The fix was
designed for a handful of big rigid bodies, not 1000s of
small ones.

2 - modify fix shake to work on 5x5 or 6x6 constraint matrices.
This will be non-trivial, not only for the inverse computation,
but b/c many data structures and logic for cluster searching
in the fix will have to be changed

3 - LAMMPS will shake the bonds in NH3. Hence you could
run semi-flexible NH3 (rigid bonds, flexible angles). If you
stiffen the angle K factors, it will become nearly rigid. You
should still be able to run with a big timestep, since the bonds
are the fastest motion.