[lammps-users] Multiple PKA cascade problems

Hi,

I am trying to run a pka cascade model on a NiFe alloy. More specifically I am trying to run several subsequent cascades (about 500). The idea is to pick a random atom in the box and give it a velocity (1e+3 A/ps) in the y direction. In order to run the subsequent cascade I apply a loop – next (jump SELF) cycle and a read-restart command for initiating the new cascade with the box as it was left in the previous cascade.

The problem is very soon in the cascades (after about 10-50 cascades) the box expands into a very bigger box and the microstructure begins to fall apart leaving nothing but small “droplets” of atoms very far one from each other. I tried several times with different settings but nothing I tried solved the problem.

I attach here an example of input file that may better explain what I was trying to do.

---------- INITIALIZATION ----------------------------------------------------

clear

timer full

units metal

dimension 3

boundary p p p

atom_style atomic

---------- GEOMETRY DEFINITION -----------------------------------------------

variable a loop 500

reset_timestep 0

read_restart NiFe_rst.*

group Fe type 1

group Ni type 2

group Cr type 3

region xlow block 0 0.5 0 30 0 30 #units box

region xhigh block 29.5 30 0 30 0 30 #units box

region ylow block 0 30 0 0.5 0 30 #units box

region yhigh block 0 30 29.5 30 0 30 #units box

region zlow block 0 30 0 30 0 0.5 #units box

region zhigh block 0 30 0 30 29.5 30

group xbot region xlow

group xtop region xhigh

group ybot region ylow

group ytop region yhigh

group zbot region zlow

group ztop region zhigh

group boundary union xbot xtop ybot ytop zbot ztop

--------- FORCE FIELD -------------------------------------------------------

pair_style eam/alloy

pair_coeff * * FeNiCr_Bonny_2013_ptDef.eam.alloy Fe Ni Cr

---------- SETTINGS ----------------------------------------------------------

COMPUTES

compute eng all pe/atom

compute new all temp

---------- DYNAMICS ----------------------------------------------------------

run 0

PRINT-SCREEN

thermo 1000

thermo_style custom step pe lx ly lz press pxx pyy pzz

--------- set temperature ----------------------------------------------------

fix 1 all dt/reset 10 0.0001 0.01 0.05 units box

fix 2 all npt temp 300 300 100 iso 1 1 1

run 100000

unfix 1

--------- run PKA cascade ----------------------------------------------------

reset_timestep 0

fix 3 all dt/reset 10 0.0001 0.01 0.05 units box

variable mypka equal round(random(1,108000,$a*146324)) # the box has 108000 atoms

group PKA id ${mypka}

velocity PKA set 0.0 1e3 0.0 units box

fix 4 boundary nvt temp 300 300 100 # Nosé-Hoover

run 50000

unfix 3

---------- minimize ----------------------------------------------------------

min_style cg

minimize 1e-15 1e-15 15000 15000

reset_timestep 0

dump 1 all custom 1000 dump.relax.1.$a id type xs ys zs c_eng

run 1000

undump 1

---------- OUTPUTS -----------------------------------------------------------

write_restart NiFe_rst.*

run 0

variable my_pe equal pe

print ${my_pe} append PE.fdata

next a

jump SELF

well, you cannot “cheat” physics. every time to knock an atom you add kinetic energy to your system and manipulate the structure. while you can remove kinetic energy through thermostatting and try to reduce damage with minimization, if you knock your system often enough, it is no surprise that it may fall apart. LAMMPS will compute what you tell it to do following the laws of physics of the models and methods that you employ.

axel.

Axel,

Thank you for your answer. I was pretty sure it was a problem of my model because I was trying to reproduce results of a scientific paper. Authors of such article state that they knock atoms subsequently for 1500 times up to 0.5 dpa.

(For additional informations, if interested, article DOI is the following: https://doi.org/10.1016/j.actamat.2017.12.064)

Btw, I’ve got another question which is more related to LAMMPS commands and less to the field: is it possible to chose a random atom and then shift the entire box so as to have such atom in the center of the box?

Thank you again.

Cheers,

Stefano

[…]

Btw, I’ve got another question which is more related to LAMMPS commands and less to the field: is it possible to chose a random atom and then shift the entire box so as to have such atom in the center of the box?

it may be possible using atom style variables and the set command, but I don’t recommend it. you can just as easily transform the resulting trajectory after the fact.

axel.

yes - see the displace_atoms command. The arguments to that command
could be the coords of a selected atom (using variables).

Steve