Total energy can not conserve when using extremely small time step in NVE simulation

GROMACS version: 2020
GROMACS modification: No

Hi guys,

Recent I ran several NVE simulations using different time steps (dt). And I found that when using extremely small time steps (like 0.1 fs), the total energy cannot conserve, however the larger time steps (like 0.5fs or 1fs) can generate a total energy that conserve at the beginning of the simulation. Here is my mdp options, which is very simple, is there anything wrong with my simulation setup?

Thanks!

total energy:

mdp options:

title = Define here
cpp = /lib/cpp
constraints = h-bonds
constraint-algorithm = LINCS
integrator = md
dt = 0.0001
nsteps = 100000
nstenergy = 10
nstxout = 10
nstvout = 10
nstfout = 10
nstlog = 10
nstxtcout = 0
cutoff-scheme = Verlet
nstlist = 10

coulombtype = PME
rvdw = 1.2
rlist = 1.2
rcoulomb = 1.2
fourierspacing = 0.1
pme_order = 4
ewald_rtol = 1e-5

Tcoupl = no

Pcoupl = no

gen_vel = no
gen_temp = 300
gen_seed = -1

I assume you are using single precision. You then get too small increments in coordinates to represent accurately in single precision, in particular when using constraints. You need to switch to double precision when using small time steps.

Thank you, Prof. Hess. That works. When using double precision, the total energy conserves.