Press/berendsen and problem with units

Dear LAMMPS users, I am trying to use the fix press/berendsen together with fix nve. I am testing this command behaviour on a pretty simple system (essentially a modification of the Lennard-Jones in.melt file provided in the example folder).

The relevant lines of my input script are:

fix nve_fix all nve
fix press_fix all press/berendsen iso 0.0 0.0 2000 modulus 10.0

in real units (i.e.: my Pdamp is 2000 fs=2 ps). The timestep is 2 fs.

If I perform an analogous simulation, with the same initial conditions, temperature, ... but with LJ reduced units, I obtain quite different results.

The lines in the input script, this time, are

fix nve_fix all nve
fix press_fix all press/berendsen iso 0.0 0.0 0.93 modulus 10.0

with a timestep = 0.00093 tau, which is almost exactly 2 fs.

If I use the LJ units, everything is apparently fine. The program prints me the values of the bounding box (e.g. the value of zhi and zlo) step by step, and they are represented by a pretty smooth curve along the simulations step with very low oscillations. On the contrary, the same curve generated by a simulation in real units is irregular and very noisy and converges to a different value (about 30% larger box side).

Am I missing something important in the unit conversion?

In LJ units: epsilon =1, mass=1, sigma=1.
In real units: epsilon = 0.238129 kcal/mol (i.e. T*=1 corresponds to 119.8 K), mass=39.948 amu, sigma=3.4 Angstrom. (This are standard LJ parameters for Argon)
The potential cutoff is the same in both cases.

If it is necessary, I can post the input files I am using.

My LAMMPS version is 17 Nov 2016.
Thanks in advance for your help!

Francesco Mambretti

If you do this correctly you can get identical results for LJ vs real units
(or any other unit options in LAMMPS), modulo growing
round-off differences for dynamics runs. However setting up two
such identical input scripts is tricky. The first thing
to test is that the output on timestep 0 is identical,
for termperature, energy, pressure. For any snapshot
you give it as input. You will have to convert outputs to
matching units to make that comparison. Then worry about
dynamics. I.e. a single timestep (of any reasonable size)
should give identical thermo output on step 1 using NVE.
Then try it with NPT.


one should also point out, that thermodynamic output for units lj is
by default normalized (thermo_modify norm yes), while for other unit
selections it is not. so that needs to be taken into consideration
when comparing numbers as well.