Dear LAMMPS community,
I’m doing NVE steps on a Silicon rod. The rescale algorithm is used for thermostatting to 300 K. Periodic boundary conditions are applied. While the system temperature is fixed to the correct value, the per atom temperature plotted in atom.dump is completely random without even having an average valued centered to 300K. What am I missing?
Thanks,
Giuseppe
Here is some code:
compute myKE all ke/atom
variable N equal count(all)
variable per_atom_temp atom c_myKE * v_N (1.5 * 8.6E-5)
velocity all create 300 4928459 rot no dist gaussian
fix 3 all temp/rescale 10 300 300 1.0 1.0
fix NVE all nve
dump my_dump all custom 10 atom.dump id type x y z v_per_atom_temp
run 1000
Dear LAMMPS community,
I'm doing NVE steps on a Silicon rod. The rescale algorithm is used for
thermostatting to 300 K. Periodic boundary conditions are applied. While the
system temperature is fixed to the correct value, the per atom temperature
plotted in atom.dump is completely random without even having an average
valued centered to 300K. What am I missing?
a) you initialize the kinetic energy to a gaussian distribution of
random velocities.
temp/rescale (which is a horrible way to thermostat, by the way)
will only rescale
and thus not change the relative distribution. the only thing that
change change
the distribution is dissipation through the interaction of the
atoms with its neighbors.
that is usually a slow process. you are only running a very small
number of steps,
so why should it be equilibrated?
b) i have not looked at the sources, but my guess is that your per atom kinetic
energy is computed before temp/rescale is active. since you output
the temperature
at the same frequency that you rescale, you don't see how far it may deviate
in between. also, you don't seem to be subtracting the three
translational degrees
of freedom that may also have an impact depending on the number of atoms
in your system.
axel.