Hi William, Axel,
Unfortunately I run into problems with the simulation halting after just a few timesteps and the volume either exploding or collapsing (and energies exploding).
By some coincidence, I spent the last days investigating the exact same phenomenon doing NPT in metallic systems (B~140GPa) with MEAM potential. Cell geometry in the reference structure (which is always a stable state in MEAM) was fully relaxed to press->0 using minimize and box/relax before.
The problem seems to come from the Nose-Hoover dynamics itself, which do not work at low temperatures. The barostat mass is taken as kT/w^2 (see also MTK1994, Section II.F). At low temperatures, that mass vanishes and the barostat has no inertia. Therefore, even the also very small thermal pressure is enough to fully "explode" an otherwise stable system unless one uses absurdly small dt.
For example, consider this test:
- take relaxed structure (Etot = -3057.8151 eV)
- equilibrate at 30K, p=1bar
- step down to 25, 20, 15, 1, 5, 1K
- record ensemble averages of quantities in stable state after each step
== With temp/berendsen, press/berendsen, nve integrator:
T p H
30.00 0.90 -3051.10
25.00 0.99 -3052.22
20.00 0.96 -3053.34
15.00 1.02 -3054.46
10.00 1.03 -3055.58
5.00 1.01 -3056.69
1.00 1.01 -3057.59
== With npt:
T p H
30.01 1.08 -3051.10
25.01 1.20 -3052.22
20.03 1.22 -3053.33
15.02 1.24 -3054.45
10.00 11.60 -3055.54
5.51 4387.24 -62.44
# simulation aborts due to broken numerics
I can't really think of anything that could be done about that, except manually scaling the barostat time constants for low temperatures to "fake" a larger inertia... so I tried doing that with a bit of guessed parameters:
tauscaled = taubarostat * (1 + exp((25 - Tnext) * 0.15))
lmp.command(f"fix int all npt temp {Tnext} {Tnext} {tauthermostat} iso {press} {press} {tauscaled} nreset 2000")
== With npt with scaled tau_press:
T p H
30.00 1.01 -3051.10
25.02 1.06 -3052.22
20.02 1.08 -3053.34
15.08 1.25 -3054.44
10.02 0.94 -3055.57
5.00 1.28 -3056.69
1.00 0.94 -3057.59
It's a bit arbitrary, but it works and I don't have to give up the NPT ensemble. Maybe you can do something similar for your system?
Best,
Sebastian