[gmx-users] Re: mdrun -rerun and box size bug not fixed?

Berk Hess gmx3 at hotmail.com
Tue Nov 6 15:55:36 CET 2007

>From: Michel Cuendet <michel.cuendet at isb-sib.ch>
>Reply-To: Discussion list for GROMACS users <gmx-users at gromacs.org>
>To: gmx-users at gromacs.org
>Subject: [gmx-users] Re: mdrun -rerun and box size bug not fixed?
>Date: Tue, 6 Nov 2007 15:26:54 +0100
>Hi Berk,
>Thanks for your reply.
>>The box is read, but in several parts of the code there are  optimizations
>>for fixed box dimensions (i.e. no pcoupl, no deform).
>>This is indeed a bit tricky, but I don't know if we would want to  change
>>for the rerun option.
>Maybe the optimizations are not necessary for the rerun option, as  energy 
>evaluations usually involve a limited number of frames. I  think that the 
>box sizes should really be read from the traj. The  present behavior seems 
>dangerous (I almost wasted a week of work  figuring it out, and some users 
>might never double check...)

The optimizations are certainly not necessary, but currently the information
that we are doing a rerun is not passed on to any routine except for
the main loop. We would have to pass this information along.

>>We do want scaling of velocties, since this influences the kinetic  
>>also for reruns.
>I never understood this one. The kinetic energy at step N should  depend 
>only on the velocities at time step N. If a frame in the  trajectory 
>contains the positions and velocities at time step N as it  should, no 
>rescaling is necessary.
>If on the other hand only velocities at step N-1/2 are saved,  velocities 
>at step N+1/2 would have to be calculated in order to get  accurate kinetic 
>energy at step N. In this case, rescaling indeed  needs to take place. But 
>the rescaling will be nonsense if a Nosé- Hoover thermostat is used, since 
>the thermostat momentum is not read  from the trajectory. If this is the 
>case, there should be a large  warning sign when using -rerun with 
>Nosé-Hoover. A solution would be  to output the kinetic energy at time step 
>  N-1/2 during the rerun,  which is in any case more accurate than the one 
>at step N, and is  just as good for statistics.

Ekin[t] = (Ekin[t-dt/2]+Ekin[t+dt/2])/2
This currently indeed goes wrong with Nose-Hoover, since the current
trajectory formats can not store the Nose-Hoover variables.
The kinetic energy at half steps does not match the potential energy
at the full step for calculating the total energy.

In general we do not want anything different to happen during an rerun
than would happen during a normal run, exactly to avoid discrepancies
between normal runs and reruns. Therefore we would like to avoid
passing along the rerun info deeping into the code.

>See a paper coming soon in JCP:
>M. M. A. Cuendet and W. F. van Gunsteren, On the calculation of  
>velocity-dependent properties in molecular dynamics simulations using  the 
>leap-frog integration algorithm, J. Chem. Phys. (in print) (2007).
>>We could consider using nstenergy=1 for rerun, but I think that  currently
>>you should already get the energy as often as for the original run,  
>>you use a trajectory without step numbers (e.g. pdb).
>This is good, but without nstenergy=1 the averages are wrong in  md.log and 
>at the end of the run.

This is a nasty issue that we still have not fixed. We should fix this,
but things are complicated due to the way the averages and fluctations
are stored.


Live Search, for accurate results! http://www.live.nl

More information about the gromacs.org_gmx-users mailing list