Dear Community,
I performed some experiments with writing and reading binary restart files on some relatively simple test system (ionic liquid). On the one hand, I was running the simulation as a whole, and on the other hand, I restarted the simulation in the middle of the run. Then I compared the trajectories and potential energy time series.
With a truly "exact" restart, both trajectories should be identical. However, I observed that while the first few hundred steps after the restart are identical, the trajectories start to differ significantly after around 1000 steps.
I know that a MD simulation is a good example for a chaotic system, and that tiny changes in positions/velocities lead to dramatic changes at later times. However, if the restart file contains the binary representations of all floating point numbers, I would not expect any deviation at all...
So my question is if it should be possible to have an "exact" restart with LAMMPS, such that the full trajectory after restarting strictly equals the trajectory without restarting.
The following things I already checked:
(*) I don't use a thermostat (only "fix nve"), so it can't be related to a wrongly restarted internal thermostat state. There are no other fixes apart from "nve", so no fix needs to be restarted.
(*) I don't use long-range methods in the test runs (only lj/cut/coul/cut), so it's not related to pppm.
(*) It also happens in a serial LAMMPS version, so it has nothing to do with MPI parallelism.
The things one normally evaluates from a MD simulation (RDFs, MSD, etc.) will not be affected by this finding... So if you tell me that this behavior is correct, I will just settle with it. If, however, a truly "exact" restart should be possible in theory, then I will provide some more details here to find the cause of the problem.
Best regards,
Martin