Should I expect an exact restart from NVT/SLLOD?

Hi all –

See the subject header. Based on my understanding, I would expect yes, but here is what I find in the following comparison:

a) Run 200 steps of a vanilla simulation vs.

b) Run 100 steps of a vanilla simulation, write a restart file, clear, read restart file and run another 100 steps

c) Run 100 steps of vanilla simulation, then run another 100 steps

Up through the first 100 steps, a) and b) are exactly the same. Upon restart in case (b) however, I find

…………… less important details….

97 1.4245376 1.1271994 0.29733823 1.1342887 6.1267096 0.059720584 -0.22840436

98 1.4263275 1.1396418 0.28668572 1.1468093 6.2627651 0.060336261 -0.14811741

99 1.4248708 1.1473828 0.27748806 1.154599 6.7280443 0.060951937 0.17075202

100 1.4239158 1.1533493 0.27056654 1.1606031 6.6992116 0.061567613 0.21413923

Loop time of 0.00396991 on 1 procs for 100 steps with 160 atoms

…………… less important details….

System init for write_restart …

Reading restart file …

restart file = 4 Apr 2014, LAMMPS = 4 Apr 2014

triclinic box = (0 0 -0.769595) to (15.3919 12.3135 0.769595) with tilt (0.0615676 0 0)

1 by 1 by 1 MPI processor grid

160 atoms

Resetting global state of Fix 1 Style nvt/sllod from restart file info

Setting up run …

Memory usage per processor = 1.17087 Mbytes

Step TotEng KinEng PotEng Temp Press Xy Pxy

100 1.4240155 1.1533493 0.2706662 1.1606031 6.6999316 0.061567613 0.21370038

101 1.4216912 1.1573916 0.26429956 1.1646708 6.8546852 0.062183289 0.22302251

102 1.4196133 1.1572581 0.26235521 1.1645365 6.6490058 0.062798965 0.18065531

Upon restart, inspection of step 100 reveals that the potential energy is slightly different, although the kinetic energy

is exact to the resolution of the output.

In case ©, similar inconsistency is observed when the run starts up again, although this time minor differences in both the kinetic and potential energy are observed:

…………… less important details….

97 1.4245376 1.1271994 0.29733823 1.1342887 6.1267096 0.059720584 -0.22840436

98 1.4263275 1.1396418 0.28668572 1.1468093 6.2627651 0.060336261 -0.14811741

99 1.4248708 1.1473828 0.27748806 1.154599 6.7280443 0.060951937 0.17075202

100 1.4239158 1.1533493 0.27056654 1.1606031 6.6992116 0.061567613 0.21413923

Loop time of 0.00631189 on 1 procs for 100 steps with 160 atoms

…………… less important details….

Setting up run …

Memory usage per processor = 1.52854 Mbytes

Step TotEng KinEng PotEng Temp Press Xy Pxy

100 1.4239747 1.1533085 0.2706662 1.160562 6.6998972 0.061567613 0.21267989

101 1.4216505 1.157351 0.26429956 1.1646299 6.8546508 0.062183289 0.22200269

102 1.4195728 1.1572176 0.26235521 1.1644957 6.6489716 0.062798965 0.17963617

Can anyone confirm whether this behavior has a rational explanation?

Input scripts reproduced below, happy to supply input/output files if requested. Also, note these cases were run in the 4Apr14 version of lammps.

Thanks in advance,

Peter

Here is the input scripts for case (a)

Can you try it w/out nvt/sllod? Also try a d) run 200 steps writing
a restart file every 100 steps, and restart from that file to compare.
I think that should be the same as b) but possibly not.

You also might try it with a fixed tilt, not actively deforming.
It’s possible fix deform gets setup slightly differently with erate
when restarting.

a) will be different b/c it will not re-neighbor on step 100, leading

to round-off differences.

Steve

Steve –

Thanks for the response and suggestions.

Tried with nve + deform, same results.

Tried deform with a “roundtrip shear path” – eg. apply a +delta deformation for a number of steps, then –delta for a number of steps, so final box has zero tilt. Same results.

Tried both kinds of remap (positions vs. velocity) in nvt/sllod; same results.

Tried generating multiple restarts over 200 steps and restarting (option d) – same results.

Use nve + Turn off fix deform, that works.

The fact that case © of running back to back doesn’t perfectly “restart” suggests to me that the restart file stuff is a red herring. In all cases, my check of the box dimensions suggests these are always correctly preserved, and I think in nearly all cases, the temperature and kinetic energy is preserved, so probably no problem with velocities, or preserving the state of the thermostat variables.

So I’m guessing it has something to do with the state of the image flags info in the triclininc box during the deformation process. Just a hunch.

Peter