Question regarding SETTLE (RigidWater)

From: Siddharth (
Date: Mon Oct 01 2007 - 17:02:11 CDT


I have an implementation specific question regarding the
implementation of the SETTLE algorithm in NAMD. Peter Kollman's
original paper details the SETTLE algorithm, where the positional
constraints are implemented using a "reference triangle" approach and
the velocity constraints are implemented by subtracting off the
component of velocity along the O-H bonds. I noticed in NAMD, the
positional constraints are implemented exactly like the paper
suggests (settle1 () in Settle.c), and the velocity constraints are
also implemented like the paper (settle2 () in Settle.c). However the
velocity constraint routine never seem to be actually called, even
though the code exists. The half-step velocities are constrained in
the settle1 () routine, presumably for the VV integrator by taking
the difference between the constrained position and the original
position and dividing by the timestep. Logically it makes sense to
update the velocities just once, either at the half-step stage (t+dt/
2) or at the full-step stage (t+dt). I am wondering if someone can
  1. Tell me if my interpretation of the source is correct. And if it
is wrong, where the settle2 ()/rattle2 () routine is actually being
  2. Explain the reasoning behind this deviation from the original
paper, where only half step velocities need adjusting

I apologize if my question is on the wrong forum, but its my first
time using the group.


This archive was generated by hypermail 2.1.6 : Wed Feb 29 2012 - 15:45:19 CST