MLFF volume explosion during production run
Hi Vasp team, good day!
I hope you are doing well.
I trained an MLFF for the eutectic NaCl-MgCl2 salt using the NPT approach from 750 K to 1150 K for 100 ps. My production temperature is 900 K. This is the content of my INCAR file:
# ---------- Electronic / accuracy ----------
ALGO = Normal # SCF algorithm (robust choice for MD runs)
PREC = Accurate # Precision; 'Accurate' improves force quality (important for ML training)
NELM = 100 # Max number of electronic SCF steps per ionic move
ISMEAR = 0 # Gaussian smearing (good for insulators / ionic liquids)
SIGMA = 0.1 # Smearing width in eV
ENCUT = 550 # Plane-wave energy cutoff (basis set size)
EDIFF = 1E-05 # Electronic SCF convergence criterion (tighter = more accurate forces)
LASPH = .TRUE. # Include non-spherical corrections inside PAW spheres (improves accuracy)
LREAL = Auto # Projection operators evaluated in real space automatically (faster)
LWAVE = .FALSE. # Don't write WAVECAR (saves disk during MD/ML runs)
LCHARG = .FALSE. # Don't write CHGCAR (saves disk during MD/ML runs)
# ---------- MD (NVT) ----------
IBRION = 0 # Molecular dynamics mode (no ionic relaxation)
ISIF = 3 # Change positions AND cell shape/volume dynamically (True NpT)
ISYM = 0 # Turn symmetry off (important for MD + MLFF)
ISPIN = 1 # Non-spin-polarized run
MDALGO = 3 # Langevin thermostat for NPT sampling
LANGEVIN_GAMMA = 10 10 10 # Thermal friction per species (ps^-1)
LANGEVIN_GAMMA_L = 5 # Lattice friction coefficient (ps^-1) for barostat
PMASS = 1000 # Fictitious lattice mass (amu) - paper used 1000
PSTRESS = 0.001 # Target pressure in kbar (0.001 kbar = 1 bar)
TEBEG = 750 # Starting temperature (K)
TEEND = 1150 # Target temperature at end of run (linear ramp if not equal to TEBEG)
NSW = 100000 # Number of MD steps
POTIM = 1.0 # Time step (in fs)
NCORE = 2 # Parallelization control
# ---------- (optional) Dispersion corrections ----------
GGA = ML # vdW-DF2 functional base (when using ML-type GGA = "ML")
AGGAC = 0.0 # Exchange parameter for vdW-DF2
LUSE_VDW = .TRUE. # Enable nonlocal vdW-DF2 correction
ZAB_VDW = -1.8867 # Kernel parameter (specific to vdW functional)
# ---------- MLFF: enable on-the-fly training ----------
ML_LMLFF = .TRUE. # Switch on the MLFF framework
ML_MODE = train # Training mode: ab-initio + ML hybrid MD
Now, after training with a simulation cell of 58 atoms, and doing the refitting, I do get good training errors:
# ERR nstep rmse_energy rmse_force rmse_stress
# ERR 2 3 4 5
# ERR ######################################################################
ERR 0 1.09769321E-03 2.83920615E-02 2.34328322E-01
Also, I do get good test set errors too.
Now, when I scale my system from 58 atoms to 1210 atoms and then run a prediction-only NPT simulation at 900 K (for 400 ps) to obtain the system's equilibrium volume, the volume keeps increasing and doesn't seem to converge (goes up to 200000 Å^3). The temperature and energy do converge, and the total pressure of the system fluctuates around zero.
Please, what might be causing this volume behavior? Looking forward to your response. Thanks!