Equilibrate crystal SiO2 at normal pressure and atmosphere

Dear all,

I want to get equilibrated lattice constants of crystal SiO2 at room temperature. I have searched many previous posts but I am still not clear on the procedure to control temperature and atmosphere. The total number of atoms in simulation box is 13500.

I firstly run 1000 for quick test. The problem occurs when I fix pressure since I want to relax the structure after the system is in 1 atom. At step 1000, temperature is 297, Potential is -205457, total energy is -204938 and pressure is 28496.

Then at step 1100,

Temp=297, potential energy=0, total energy=519 while pressure, volume and density all becomes -nan

I also tried to fix pressure at 1atom before fixing temperature, but then it reported: ORTE_ERROR_LOG:Data unpack would read past end of buffer in file unti/show_help.c at line 500

Why does it happen and how to fix the temperature before relaxation the structure?

Thanks

Bingyu Cui

Here is my script:

#Initialization############################################################

units metal

dimension 3

boundary p p p

atom_style charge

Atom definition##########################################################

lattice custom 5.4047 &

a1 0.9092 0.0000 0.0000 &

a2 -0.4546 0.7873 0.0000 &

a3 0.0000 0.0000 1.0000 &

basis 0.4697 0.0000 0.0000 &

basis 0.0000 0.4697 0.6667 &

basis 0.5303 0.5303 0.3333 &

basis 0.4133 0.2672 0.1188 &

basis 0.2672 0.4133 0.5479 &

basis 0.7328 0.1461 0.7855 &

basis 0.5867 0.8539 0.2145 &

basis 0.8539 0.5867 0.4521 &

basis 0.1461 0.7328 0.8812

region simbox block 0.0 10.0 0.0 10.0 0.0 10.0 units lattice

create_box 2 simbox

create_atoms 1 box basis 1 1 basis 2 1 basis 3 1 basis 4 2 basis 5 2 basis 6 2 basis 7 2 basis 8 2 basis 9 2

mass 1 28.0855

mass 2 15.9994

group siliconatoms type 1

group oxygenatoms type 2

set group siliconatoms charge 2.4

set group oxygenatoms charge -1.2

Atoms interactions settings##################################

Si type 1, O type 2

pair_style table linear 10001

pair_coeff 1 1 potential.table SiSi

pair_coeff 1 2 potential.table SiO

pair_coeff 2 2 potential.table OO

#kspace_style pppm 1.0e-4

neigh_modify every 1 delay 0 check yes

pair_write 1 2 9999 r 0.001 10.0 table.txt Si_O 2.4 -1.2

pair_write 2 2 9999 r 0.001 10.0 table.txt O_O -1.2 -1.2

pair_write 1 1 9999 r 0.001 10.0 table.txt Si_Si 2.4 2.4

Equilibrate

velocity all create 298.15 635845 dist gaussian

fix 0 all npt temp 298.15 298.15 0.1 iso 1.01325 1.01325 1.0

unfix 0

fix 1 all nve

fix 2 all langevin 298.15 298.15 0.1 48279

thermo_style custom step temp pe etotal press vol density xlat ylat zlat

thermo 100

dump 2 all atom 1000 dump2.qua

run 1000000

unfix 1

unfix 2

fix 3 all pressure/berendsen iso 1.03125 1.03125 1.0

thermo_style custom step temp pe etotal press vol density xlat ylat zlat

thermo 100

dump 3 all atom 1000 dump3.qua

run 1000000

unfix 3

fix 4 all box/relax iso 0.0 vmax 0.001

Visualize the model just before step 1100 to see what happens. PE =0 means model blows up. This could be for multiple reasons - bad initial structure, bad force field etc.

Did you try with ‘Fix NVT’ and ‘Fix NPT’?

Sanjib

Dear Sanjib,

Thank you for your quick reply. As you mentioned, before step 1100 (from step 0 to step 1000), everything goes fine but the pressure fluctuates a lot. However, at step 1100, namely when fix 3 all pressure/berendsen begin to work, model blows up and all particles got lost…

If I fix NPT or NVT between fix NVE&Langevin and fix pressure/berendsen, same problem occurs.

I also tried to run fix pressure/berendsen and NPT simultaneously after fix NVE and langevin, however, it then reported unstable simulation-numerical pressure…

Regards

Bingyu Cui

Make sure that initial crystal structure and force field are correct.

To complement this suggestion, you can also ensure that your system is
statically relaxed (lower energy and forces, by minimize) and
stress-free before running the dynamics. Then slowly increase the
temperature by doing a dynamics within the NPT ensemble.

Also I do not see any timestep command in your script. I think one
should always provide such value, even if Lammps define a default one.