[gmx-users] Time reversibility and settle

Berk Hess gmx3 at hotmail.com
Tue May 31 12:12:56 CEST 2005

>Hi again and thanks for your suggestions.
>Still in the search of better time-reversibility properties, I'd like
>to ask a few more questions.
>If I understood correctly, the leap-frog + settle algorithm is implemented
>in Gromacs according to the following steps:
>v'(t+dt/2) = v(t-dt/2) + dt*f(t)/m   ("uncorrected" velocities)
>r'(t+dt) = r(t) + dt*v'(t+dt/2)      (unconstrained move)
>r(t+dt) = settle[r'(t+dt)]           (reset of atomic position calling 
>v(t+dt/2) = [r(t+dt)-r(t)]/dt        (corrected velocities)
>is that correct?
>In this case, is not very clear to me how is it possible to "reverse" it,
>e.g. restarting from a [r(t),v(t+dt/2)] configuration and inverting the
>sign of dt, since the settle procedure modifies the atomic position in a
>way that is, apparently, not "reversible".
>Is any modification of the velocities needed?

This is how it works and it is indeed, although not obviously, time 
This is how SHAKE, SETTLE and LINCS work with leap-frog.
You have to know a bit more about how the constraint algorithms work
to see that this is time reversible.

>Another question concerns the preparation of restart files containing
>configurations like the one cited above for time-reversing purposes,
>i.e. [r(t),v(t+dt/2)] (instead of the default [r(t),v(t-dt/2)] ).
>I tried the quick and dirty way by just running one more MD step,
>converting the .trr file in ascii format, manually editing the
>ascii file in order to get the [r(t),v(t+dt/2)] configuration,
>pasting into a .gro file and converting back the .gro file into
>a .trr file for restarting. However, even if I modified the routine
>pr_rvecs in txtdump.c in order to have more decimal digits in the
>ascii files, the accuracy seems to be limited to the order of
>1.e-8, whereas I expected a better accuracy for double precision
>numbers. Is there any better way to do that? Which is the accuracy
>with which numbers are stored in the .trr file (with double
>precision compilation)?

In trr all numbers are stored in full double precision accuracy.

I think the easiest way to obtain reasonable accurate configurations
is using the ascii g96 format which stores 9 decimals after the decimal 


MSN Search, for accurate results! http://search.msn.nl

More information about the gromacs.org_gmx-users mailing list