Sputtering modification for reaxff

Hi,

I have been looking at the sputter file and modifying it for reaxff. The original file Axel kindly provided seems to work fine based on videos I have seen. However, when I modify it for reaxff and track the number of atoms it will only get to about 3 added and then the number will go back to 2 and ultimately zero. Below is my input file. I define simulation boxes, run a langevin equilibration, then do a deposit but it is not working.

Thanks

Sabir

surface sputtering demo

dimension variables

box length in x and y

variable len index 10.0

height of layer

variable hgt index 4.0

delta between insert area and box

variable len0 index 0.1

full length minus delta

variable len1 equal {len}-{len0}

half length

variable len2 equal ${len}*0.5

units real

atom_style full

boundary p p f

lattice bcc 2.85

region box block 0.0 {len} 0.0 {len} -1.0 20.0 units lattice

particle density in z-direction is inhomogeneous:

only do domain decomposition in x- and y-direction

processors * * 1

two atom types: surface and sputter atoms

create_box 2 box

region layer block 0.0 {len} 0.0 {len} 0.0 ${hgt}

create_atoms 2 region layer

mass 1 16.12
mass 2 55.85

region fixed block INF INF INF INF 0.0 0.1

group fixed region fixed

group mobile subtract all fixed

pair_style reax/c NULL checkqeq yes
pair_coeff * * ffield.reax.Fe_O_C_H O Fe
fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 reax/c

neigh_modify delay 0

#minimize 1.0e-5 1.0e-8 1000 10000

reset_timestep 0

velocity mobile create 300 87287

use the temperature of the mobile layer atoms as reference

compute mtemp mobile temp

fix 2 mobile nve

fix 3 mobile langevin 300 300 5.0 982434

fix_modify 3 temp mtemp

thermo 100

thermo_style custom step atoms temp etotal

thermo_modify temp mtemp

dump id all xyz 200 sputter.xyz

minimal equilibration

run 1000

define region for inserting particles

region sphere sphere {len2} {len2} 21.0 ${len2} units lattice

region insert intersect 2 box sphere

define group of inserted particles

group insert region insert

deposite particles regularly into insert volume

#fix insert insert deposit 50 1 200 12345 region insert vz -.05 -.05 target {len2} {len2} ${hgt} units lattice
fix insert insert deposit 50 1 200 12345 region insert vz -.05 -.05

neigh_modify every 1 delay 0 check yes

time integrate inserted particles

fix 4 insert nve

remove thermostat on layer atoms

unfix 2

variable nlayer equal count(mobile)+count(fixed)

variable ninsert equal count(insert)

thermo_style custom step atoms v_nlayer v_ninsert temp etotal

thermo_modify temp mtemp

handling of atoms the get bounced back from surface

or sputtered off the surface.

thermo_modify lost ignore

run 15000

Hi,

I have been looking at the sputter file and modifying it for reaxff. The original file Axel kindly provided seems to work fine based on videos I have seen. However, when I modify it for reaxff and track the number of atoms it will only get to about 3 added and then the number will go back to 2 and ultimately zero. Below is my input file. I define simulation boxes, run a langevin equilibration, then do a deposit but it is not working.

​you first have to worry, if you have all your unit conversions correctly.
can you run the simulation without the depositing of particles without losing atoms?
if not, then you have to correct this issue first.
second, you need check very carefully the units for the fix deposit command. this can be a big problem. it will help to visualize what happens.

axel. ​

Thanks for the response Dr. Kohlmeyer!

I first commented out the deposit and the thermo lost ignore and ran it. It equilibrated to 300, then simply ran the nve with no lost atoms (the number in layer and number in insert were constant).

Next, I took a look at my reaxFF and made sure units were proper. I tried a timestep of 0.5fs as I have seen this in other sputtering papers that use reaxff. However, in the log file I see this, and when I look at the video it is just going straight through the substrate and not impacting. This makes me feel like there is a glaring error in the input that I am missing.

Step Atoms v_nlayer v_ninsert Temp TotEng
1000 900 900 0 293.35592 -85522.682
1100 901 900 1 293.35592 -85561.239
1200 901 900 1 293.35592 -85561.239
1300 902 900 2 293.35592 -85599.046
1400 902 900 2 293.35592 -85617.128
1500 903 900 3 293.35592 -85734.567
1600 902 900 2 293.35592 -85602.612
1700 903 900 3 293.35592 -85737.126
1800 902 900 2 293.35592 -85659.352
1900 903 900 3 293.35592 -85735.149
2000 902 900 2 293.35592 -85700.253
2100 902 900 2 293.35592 -85599.046
2200 902 900 2 293.35592 -85602.502
2300 903 900 3 293.35592 -85733.16
2400 902 900 2 293.35592 -85703.711
2500 903 900 3 293.35592 -85730.879
2600 903 900 3 293.35592 -85770.424
2700 904 900 4 293.35592 -85775.104
2800 903 900 3 293.35592 -85654.577
2900 903 900 3 293.35592 -85636.472
3000 903 900 3 293.35592 -85734.3

Below is input script. Thoughts on why it is flying straight through? I checked the forum on this with no luck.

surface sputtering demo

dimension variables

box length in x and y

variable len index 10.0

height of layer

variable hgt index 4.0

delta between insert area and box

variable len0 index 0.1

full length minus delta

variable len1 equal {len}-{len0}

half length

variable len2 equal ${len}*0.5

#simulation set up

units real

atom_style full

boundary p p f

lattice bcc 2.85

region box block 0.0 {len} 0.0 {len} -1.0 20.0 units lattice

particle density in z-direction is inhomogeneous:

only do domain decomposition in x- and y-direction

processors * * 1

two atom types: surface and sputter atoms

create_box 2 box

region layer block 0.0 {len} 0.0 {len} 0.0 ${hgt}

create_atoms 2 region layer

mass 1 15.99

mass 2 55.85

region fixed block INF INF INF INF 0.0 0.1

group fixed region fixed

group mobile subtract all fixed

reaxff force field

pair_style reax/c NULL checkqeq yes
pair_coeff * * ffield.reax.Fe_O_C_H O Fe
fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 reax/c

#neigh_modify delay 0

neighbor 0.3 bin
neigh_modify every 2 delay 6 check yes

minimize 1.0e-5 1.0e-8 1000 10000

reset_timestep 0

timestep 0.5

velocity mobile create 300 87287

use the temperature of the mobile layer atoms as reference

compute mtemp mobile temp

fix 2 mobile nve

fix 3 mobile langevin 300 300 25 982434

fix_modify 3 temp mtemp

thermo 100

thermo_style custom step atoms temp etotal

thermo_modify temp mtemp

dump id all xyz 200 sputter.xyz

minimal equilibration

run 1000

define region for inserting particles

region sphere sphere {len2} {len2} 21.0 ${len2} units lattice

region insert intersect 2 box sphere

define group of inserted particles

group insert region insert

deposite particles regularly into insert volume

#fix insert insert deposit 50 1 200 12345 region insert vz -.074 -.074 target {len2} {len2} ${hgt} units lattice
fix insert insert deposit 50 1 200 12345 region insert vz -.074 -.074 units lattice

neigh_modify every 1 delay 0 check yes

time integrate inserted particles

fix 4 insert nve

remove thermostat on layer atoms

unfix 2

variable nlayer equal count(mobile)+count(fixed)

variable ninsert equal count(insert)

thermo_style custom step atoms v_nlayer v_ninsert temp etotal

thermo_modify temp mtemp

handling of atoms the get bounced back from surface or sputtered off the surface.

thermo_modify lost ignore

dump 3 all movie 50 movie.mpg type type axes yes 0.8 0.02 view 80 -30

timestep 0.5

run 3000

Thanks for the response Dr. Kohlmeyer!

I first commented out the deposit and the thermo lost ignore and ran it. It equilibrated to 300, then simply ran the nve with no lost atoms (the number in layer and number in insert were constant).

Next, I took a look at my reaxFF and made sure units were proper. I tried a timestep of 0.5fs as I have seen this in other sputtering papers that use reaxff. However, in the log file I see this, and when I look at the video it is just going straight through the substrate and not impacting. This makes me feel like there is a glaring error in the input that I am missing.

​it likely is a units error. convert the speed of your deposited atoms into m/s and compare that with typical estimated experimental velocities.​

axel.

Thanks, Dr. Kohlmeyer . I checked my speed and typical atomic oxygen impacts around 7-8km/s. Which equates to 0.07 angstrom/fs,s making me feel like this is the proper speed. What is interesting is another user had this error without using reaxff (they used an EAM script with aluminum) and seemed to indicate a basic error:

http://lammps.sandia.gov/threads/msg61610.html

I tried the script in the forum above, and the only error I could see was in his fix langevin he did not change the tstart tstop, but even fixing this it made no difference.

Obviously, I do not expect you to read through my code line by line, just stuck as to why it is passing straight through the iron slab and not interacting with the surface. I can attach the video if this would help.

You have 2 pretty bad mistakes in your input script:

  1. fix insert insert deposit 50 1 200 12345 region insert vz -.074 -.074 units lattice

By “units lattice” the velocity is 0.074*2.85, not 0.074.

  1. unfix 2

Without time integration, your slab will not move hence will not interact with inserted particles.

Hi Ray/Axel,

Good catch, my unfit was meant to be on the thermostat, not the nve. After doing that the slab now has atomic motion similar to the video posted by Axel. However, I was also recommended that a potential error could be that the I am not declaring the ensemble after the insert is done. Meaning that these inserted atoms have not been assigned to a specific group and should be assigned to the group after insertion. What I see now in my video is that the atoms are interacting a little bit but also bouncing around a lot in the substrate, as opposed to actually impacting the surface like Axel’s video.

I am concerned I am starting from a poor beginning sputter script. In my lammps example files I do not have a sputter script, not sure if anyone can attach one. With the modifications you suggested my input is now:

dimension variables

box length in x and y

variable len index 10.0

height of layer

variable hgt index 4.0

delta between insert area and box

variable len0 index 0.1

full length minus delta

variable len1 equal {len}-{len0}

half length

variable len2 equal ${len}*0.5

#simulation set up

units real

atom_style full

boundary p p f

lattice bcc 2.85

region box block 0.0 {len} 0.0 {len} -1.0 20.0 units lattice

particle density in z-direction is inhomogeneous:

only do domain decomposition in x- and y-direction

processors * * 1

two atom types: surface and sputter atoms

create_box 2 box

region layer block 0.0 {len} 0.0 {len} 0.0 ${hgt}

create_atoms 2 region layer

mass 1 15.99

mass 2 55.85

region fixed block INF INF INF INF 0.0 0.1
group fixed region fixed
group mobile subtract all fixed

reaxff force field

pair_style reax/c NULL checkqeq yes
pair_coeff * * ffield.reax.Fe_O_C_H O Fe
fix 1 all qeq/reax 1 0.0 10.0 1.0e-6 reax/c

#neigh_modify delay 0

neighbor 0.3 bin
neigh_modify every 2 delay 6 check yes

minimize 1.0e-5 1.0e-8 1000 10000

reset_timestep 0

timestep 0.5

velocity mobile create 300 87287

use the temperature of the mobile layer atoms as reference

compute mtemp mobile temp
fix 2 mobile nve

fix 3 mobile langevin 300 300 25 982434

fix_modify 3 temp mtemp

thermo 100
thermo_style custom step atoms temp etotal
thermo_modify temp mtemp

dump id all xyz 200 sputter.xyz

minimal equilibration

run 1000

define region for inserting particles

region sphere sphere {len2} {len2} 21.0 ${len2} units lattice
region insert intersect 2 box sphere

define group of inserted particles

group insert region insert

deposite particles regularly into insert volume

#fix insert insert deposit 50 1 200 12345 region insert vz -.074 -.074 target {len2} {len2} ${hgt} units lattice
fix insert insert deposit 50 1 200 12345 region insert vz -.074 -.074

neigh_modify every 1 delay 0 check yes

time integrate inserted particles

fix 4 insert nve

remove thermostat on layer atoms

unfix 3

variable nlayer equal count(mobile)+count(fixed)
variable ninsert equal count(insert)

thermo_style custom step atoms v_nlayer v_ninsert temp etotal
thermo_modify temp mtemp

handling of atoms the get bounced back from surface or sputtered off the surface.

thermo_modify lost ignore