Dear LAMMPS users and developers,
I realise that in the past questions about the exact LAMMPS implementation of SHAKE were raised for several times, (1-3), but unfortunately my question remains open.
(1) http://lammps.sandia.gov/threads/msg10867.html
(2) http://lammps.sandia.gov/threads/msg24771.html
(3) http://lammps.sandia.gov/threads/msg44269.html
Judging by the fix_shake implementation in LAMMPS (and by Steve’s answers in (1) and (3)), it seems that the Lagrange parameters are calculated such that the coordinates satisfy the constraints at time n+1, as originally suggested in Ref. [1] for the Verlet algorithm. However, as far as I understand, the advantage of RATTLE (Ref. [2]) is that the time derivatives of the constraints are satisfied as well for which they introduce additional Lagrange multipliers (see attached screenshot “RATTLE.jpg” of the relevant section in [2]). This is important for the velocity integration.
To me it seems that the algorithm in LAMMPS is a hybrid between SHAKE and RATTLE, for velocity Verlet is used, but the time derivatives of the constraints are not taken into account. If this was indeed the case, the velocity integration would be slightly inconsistent. I was wondering, are there any studies on the effects of the additional velocity correction in RATTLE that would justify ignoring the velocity correction? It might be a small effect anyway, but I was hoping that somebody could comment on this question.
Best wishes,
Peter
References: