[lammps-users] msd command


i’m running a NVT MD run and will like to compute the MSD at different Temperatures.

To do this, i’m using the following command for a temperature T=t1

fix msd1 circle1 msd 1000 c1-nvt-t1.dat

And for the next T, T=t2, i use a similar command

fix msd1 circle1 msd 1000 c1-nvt-t2.dat

In analyzing the .dat files, i notice that the initial msd for c1-nvt-t1.dat starts at 0.0;
the initial msd for c1-nvt-t2.dat starts at a number larger than 0.0.

In looking for a reason as to why the msd for c1-nvt-t2.dat does not start at 0.0,
i notice in the manual of lammps the following:

“The displacement of an atom is from its original position at the time the fix command was issued”

I assume then that lammps is calculating the msd for T=t2 with respect to the original position
taking from t1 (which i don’t understand very well, because the run are independents; that is, the fix
command is issued in two different script files that are run subsequently, as in

module load lammps
aprun -n 128 lmp_franklin -log nvt-t1.log < nvt-t1.i
aprun -n 128 lmp_franklin -log nvt-t2.log < nvt-t2.i

In any case, to solve the problem above, i have used a different id for the c2, i.e,

fix test circle1 msd 1000 c1-nvt-t2.dat

But i wonder, is there a better way to do this? I have many Ts i want to study.


If you want multiple MSD fixes to be active, you need to give
them different IDs. Or you can unfix the first one, then issue
a new fix with the same ID.