Energy drift in NVE stage of spin-lattice dynamics

Dear LAMMPS Users and Developers,

I am writing to ask a question regarding spin-lattice dynamics (SLD) simulations of bcc Fe.

During the NVE stage, I observed a continuous decrease in the total energy, which appears to originate from the magnetic energy contribution. Is this behavior expected? I have included my input file below for reference.

I came across a paper discussing energy drift associated with the Suzuki–Trotter decomposition (https://www.sciencedirect.com/science/article/pii/S0010465521003155), but I am not sure whether this fully explains what I am observing.

Best,

Zeyu

bcc iron in a 3d periodic box

clear

units metal

atom_style spin

dimension 3

boundary p p p

# necessary for the serial algorithm (sametag)

atom_modify map array

read_data data.spin

mass 1 55.845

velocity all create 300 4928459 rot yes dist gaussian

pair_style hybrid/overlay eam/alloy spin/exchange 3.5

pair_coeff * * eam/alloy Fe_Mishin2006.eam.alloy Fe

pair_coeff * * spin/exchange exchange 3.4 0.042726 0.2171 1.841 offset yes

variable T equal 300

neighbor 0.1 bin

neigh_modify every 10 check yes delay 20

fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0

fix_modify 1 energy yes

fix 2 all langevin/spin 300.0 0.001 21

fix 3 all nve/spin lattice moving

#fix 4 all press/langevin x 0 0 10 y 0 0 10 z 0 0 10 temp 𝑇{T} 5351

fix 4 all press/berendsen iso 0.0 0.0 1000.0

fix 5 all langevin 𝑇{T} 10 124141

timestep 0.001

compute out_mag all spin

compute out_pe all pe

compute out_ke all ke

compute out_temp all temp

variable magx equal c_out_mag[1]

variable magy equal c_out_mag[2]

variable magz equal c_out_mag[3]

variable magnorm equal c_out_mag[4]

variable emag equal c_out_mag[5]

variable tmag equal c_out_mag[6]

thermo_style custom step time v_magnorm v_magx v_magy v_magz v_tmag temp v_emag ke pe press etotal

thermo 50

run 50000

unfix 4

run 50000

unfix 2

#unfix 4

unfix 5

#fix 6 all momentum 100 linear 1 1 1

run 50000

compute myKE all ke/atom

compute myPE all pe/atom

compute myStress all stress/atom NULL virial

compute flux all heat/flux myKE myPE myStress

compute outsp all property/atom spx spy spz sp fmx fmy fmz

dump 1 all custom 25 dump_Fe.lammpstrj id type xu yu zu vx vy vz c_outsp[1] c_outsp[2] c_outsp[3]

dump_modify 1 sort id

fix HF_out all ave/time 1 1 25 c_flux[1] c_flux[2] c_flux[3] file heat_flux_profile.dat

run 1000000

Hello Zeyu,

I am not really sure what could be wrong with your system / input, but you can find an example of NVE spin-lattice run in the SPIN examples of the LAMMPS directory.

Indeed, in the “examples/SPIN/test_problems/validation_nve” directory, you will find a validation test for this. Be careful: you will probably have to change the link to the Lammps executable in the associated shell script.

That SD-MD run should preserve the energy of your system (I just tested it, and it works fine). By comparing this Lammps input to yours, you should be able to understand where the energy drift is coming from.

Although I am well aware of the investigation of Joe Cooke and Pr. Lukes, I believe their algorithm was never released into the main version of Lammps. Which is of course unfortunate, as it seems very efficient, and it would have been a great addition to the SPIN package.

All the best Zeyu,

Julien.

Hello Julien,

I reduced the timestep from 1 fs to 0.1 fs, and the energy drift has disappeared.

Thank you for your help!

Best regards,
Zeyu

1 Like