Simulating a free surface under vacuum (for indentation)

Thanks, however I believe that the fix setforce command overwrites the velocity command? At any rate, the velocity command and initial equilibration step are only intended to set the simulation volume to finite temperature.

I also would like to add that setting the face of the cube which is being indented, as a boundary with zero force was not my intention… This obviously affects the indentation! However I could not find another way to fix the surface to a vacuum, without the atoms dispersing.

Any ideas/ comments?

Thanks Eric!

Are you sure your initial config is not supporting extra stresses? All your regions are defined using “units box” but you are using integer numbers and your lattice value doesn’t seem to satisfy the periodicity along the principal axis.

Carlos

I have followed your recommendations, and only set the velocity for the regions not including the boundaries. However I still get atoms flying out of the surface:

clear
units metal
dimension 3
boundary p p p
#boundary p s p
atom_style atomic
lattice fcc 3.615

#-------- Define region dimensions
region Total block 0 40 0 80 0 40 units box
region Substrate block 0 40 0 40 0 40 units box
region Vacuum block 0 40 40 80 0 40 units box
region surface1 block 0 40 0 2 0 40 units box
region surface2 block 0 40 38 40 0 40 units box
create_box 1 Total
#create_box 1 Substrate
create_atoms 1 region Substrate units box

group Boundary region surface1
group Boundary2 region surface2
group Substrate region Substrate
group Between subtract Substrate Boundary Boundary2

pair_style eam/alloy
pair_coeff * * Cu.set Cu

compute csym all centro/atom fcc
compute pe all pe/atom

timestep 0.0005
thermo 1000
thermo_style custom temp press lx ly lz vol etotal pe

timestep 0.0005
velocity Between create 50 12345 mom yes rot no

fix 1 all nvt temp 50 50 1 drag 1.0
#fix 1 all nvt temp 50 50 1
fix 3 Boundary setforce 0.0 0.0 0.0
fix 4 Boundary2 setforce 0.0 0.0 0.0

dump 1 all cfg 1000 dump.Nanoindent_*.cfg id type xs ys zs c_csym c_pe fx fy fz
shell mkdir Dump1
shell cd Dump1

run 30000

unfix 1
undump 1

#--------Indent at constant volume
reset_timestep 0
fix 1 all nvt temp 50 50 1 drag 1.0

#------- Set indent velocity
variable y equal 42
variable yInd equal “ylat-0.005*step”

fix 2 all indent 50.0 sphere 20.0 v_yInd 20.0 5.0 side out units box
fix_modify 2 energy yes

shell mkdir Dump2
shell cd Dump2
dump 1 all cfg 250 dump.Nanoindent_*.cfg id type xs ys zs c_csym c_pe fx fy fz

run 10000

#------- relax
unfix 2

run 2000

That is an interesting point. I assumed that the create_atoms command simply assigned as many whole atoms as could fit within the volume. As far as I can tell, the simulation doesn’t seem to have any problems/ partial atoms/ etc. I will try again using 20 dimensions and lattice units, to see if that has any effects… Perhaps the larger simulation volume will provide a greater buffer also?

Cheers,
Nathaniel

Yes, Nathaniel is correct that fix setforce will nullify the effect of velocity create - no force, no movement.

Carlos is also correct that your regions should not use box units; instead you should use lattice units.

Ray

Partial atoms? Here all are point particles. What matters here is the separation between them and your boundary guys don’t seem happy with the closet you have placed them into.

Carlos

Hi Nathaniel,

Your description of “the atoms do volatise and/or penetate the vacuum” is indeed a result of incorrectly used box units. The total simulation box does not satisfy periodicity so you have atoms overlapping at the boundaries. Please see the region doc page for more info.

Since your indenter is in box units, increasing your box size from 80 angstroms (box units) to 80 lattice s would definitely result in smaller local heating; if that is what you meant by “a greater buffer”.

Cheers,
Ray

Thanks very much,

The simulation is currently running (taking a long time, even with parallel computing). However, as of yet there has been no penetration of atoms into the vacuum. However, because the boundaries are set with no initial velocity, the temperature is much less than the prescribed 50K (although that is not all that important)…

Now the question remains… What would happen if I removed the “boundaries”… These must effect the indentation response.

There is another interesting point- after I unfix indent to “relax” the crystal, there is no irreversible deformation… I mentioned this earlier and Steve Plimpton explained that irreversible deformation only occurs if I prescribe sufficiently high stress to cause irreversible processes (I assume dislocation generation). How could I achieve that?

My code so far:

clear
units metal
dimension 3
boundary p p p
#boundary p s p
atom_style atomic
lattice fcc 3.615

#-------- Define region dimensions
region Total block 0 40 0 80 0 40 units box
region Substrate block 0 40 0 40 0 40 units box
region Vacuum block 0 40 40 80 0 40 units box
region surface1 block 0 40 0 2 0 40 units box
region surface2 block 0 40 38 40 0 40 units box
create_box 1 Total
#create_box 1 Substrate
create_atoms 1 region Substrate units box

group Boundary region surface1
group Boundary2 region surface2
group Substrate region Substrate
group Between subtract Substrate Boundary Boundary2

pair_style eam/alloy
pair_coeff * * Cu.set Cu

compute csym all centro/atom fcc
compute pe all pe/atom

timestep 0.0005
thermo 1000
thermo_style custom temp press lx ly lz vol etotal pe

timestep 0.0005
velocity Between create 50 12345 mom yes rot no

fix 1 all nvt temp 50 50 1 drag 1.0
#fix 1 all nvt temp 50 50 1
fix 3 Boundary setforce 0.0 0.0 0.0
fix 4 Boundary2 setforce 0.0 0.0 0.0

dump 1 all cfg 1000 dump.Nanoindent_*.cfg id type xs ys zs c_csym c_pe fx fy fz
shell mkdir Dump1
shell cd Dump1

run 30000

unfix 1
undump 1

#--------Indent at constant volume
reset_timestep 0
fix 1 all nvt temp 50 50 1 drag 1.0

#------- Set indent velocity
variable y equal 42
variable yInd equal “ylat-0.005*step”

fix 2 all indent 50.0 sphere 20.0 v_yInd 20.0 5.0 side out units box
fix_modify 2 energy yes

shell mkdir Dump2
shell cd Dump2
dump 1 all cfg 250 dump.Nanoindent_*.cfg id type xs ys zs c_csym c_pe fx fy fz

run 10000

#------- relax
unfix 2

run 2000

Cheers!
Nathaniel

Nathaniel,

The simulation is currently running (taking a long time, even with parallel computing). However, as of yet there has been no penetration of atoms into the vacuum. However, because the boundaries are set with no initial velocity, the temperature is much less than the prescribed 50K (although that is not

all that important)…

This is another discussion that surfaced quite often recently. Since you have some frozen atoms and the compute temperature is operated to group all, you will have a lower temperature.

Now the question remains… What would happen if I removed the “boundaries”… These must effect the indentation response.

A series of commands that I don’t understand is :

region surface2 block 0 40 38 40 0 40 units box
group Boundary2 region surface2

fix 3 Boundary setforce 0.0 0.0 0.0

Why are you “freezing” the top surface that is being indented? If you remove this particular boundary, I can tell you the indenter will indent the surface/substrate in a more reasonable manner.

There is another interesting point- after I unfix indent to “relax” the crystal, there is no irreversible deformation… I mentioned this earlier and Steve Plimpton explained that irreversible deformation only occurs if I prescribe sufficiently high stress to cause irreversible processes (I assume dislocation generation). How could I achieve that?

First, indenting a frozen surface does not seem to make a lot of sense. Second, if you still see “no irreversible deformation” after removing this unreasonable boundary setting, then you are still in the elastic regime. You should be able to answer this question of yours by yourself if you read more indentation papers and pay special attention to load-displacement (P-h) curves.

Cheers,
Ray

I agree that this does not make a lot of sense, however I could not find an alternative means of avoiding the atoms passing into the vacuum region.

However, perhaps I will try again and see what happens.

I understand exactly what the difference is between elastic and plastic regimes, however my question was asking how to modify the code so that it is in the plastic regime? Should I increase the “K” value?

Cheers,
Nathaniel

I agree that this does not make a lot of sense, however I could not find an alternative means of avoiding the atoms passing into the vacuum region.

Atoms shooting to the vacuum must’ve occurred for some reason (in this case the overlapping atoms at the boundaries due to box size error). Covering it with a band-aid won’t help.

I understand exactly what the difference is between elastic and plastic regimes, however my question was asking how to modify the code so that it is in the plastic regime? Should I increase the “K” value?

How do experiments take it to the plastic regime?

Hi all,

I can’t believe I am bringing this up again, but I never actually got the darn simulation to work. The system equilibrates fine, without atoms dispersing into the vacuum, however I can never get the darn simulation to spit out any dump cfg files, after indentation has started.

Here is my code:

clear
units metal
dimension 3
boundary p p p
#boundary p s p
atom_style atomic
lattice fcc 3.615

#-------- Define region dimensions
region Total block 0 20 0 40 0 20
region Substrate block 0 20 0 20 0 20
region Vacuum block 0 20 20 40 0 20
region surface1 block 0 20 0 2 0 20
region surface2 block 0 20 18 20 0 20
create_box 1 Total
#create_box 1 Substrate
create_atoms 1 region Substrate units box

group Boundary region surface1
group Boundary2 region surface2
group Substrate region Substrate
group Between subtract Substrate Boundary Boundary2

pair_style eam/alloy
pair_coeff * * Cu.set Cu

compute csym all centro/atom fcc
compute pe all pe/atom

timestep 0.0005
thermo 1000
thermo_style custom temp press lx ly lz vol etotal pe

timestep 0.0005
velocity Between create 50 12345 mom yes rot no

fix 1 all nvt temp 50 50 1 drag 1.0
#fix 1 all nvt temp 50 50 1
fix 3 Boundary setforce 0.0 0.0 0.0
fix 4 Boundary2 setforce 0.0 0.0 0.0

#dump 1 all cfg 1000 dump.Nanoindent_*.cfg id type xs ys zs c_csym c_pe fx fy fz
#shell mkdir Dump1
#shell cd Dump1

run 30000

unfix 1
#undump 1

#--------Indent at constant volume
reset_timestep 0
fix 1 all nvt temp 50 50 1 drag 1.0

#------- Set indent velocity
variable y equal 42
variable yInd equal “ylat-0.001*step”

fix 2 all indent 10.0 sphere 10.0 v_yInd 10.0 5.0 side out
fix_modify 2 energy yes

shell mkdir Dump
shell cd Dump
dump 1 all cfg 500 dump2.Nanoindent_*.cfg id type xs ys zs c_csym c_pe fx fy fz

run 10000

#------- relax
unfix 2

run 2000

Does anyone know why this might be happening? Is the simulation unstable upon indentation?

Nathaniel,

I strongly doubt your “system equilibrates fine” since you still have these three lines that don’t make sense at all:

region surface2 block 0 20 18 20 0 20

group Boundary2 region surface2
fix 4 Boundary2 setforce 0.0 0.0 0.0

What is the reasoning of indenting a frozen surface? You can’t expect reasonable results with unreasonable settings.

Ray

No, oops. That was the old version.

It was this:

clear
units metal
dimension 3
boundary p p p
#boundary p s p
atom_style atomic
lattice fcc 3.615

#-------- Define region dimensions
region Total block 0 20 0 40 0 20
region Substrate block 0 20 0 20 0 20
region Vacuum block 0 20 20 40 0 20
region surface1 block 0 20 0 2 0 20
#region surface2 block 0 20 18 20 0 20
create_box 1 Total
#create_box 1 Substrate
create_atoms 1 region Substrate units box

group Boundary region surface1
#group Boundary2 region surface2
group Substrate region Substrate
#group Between subtract Substrate Boundary Boundary2
group Between subtract Substrate Boundary

pair_style eam/alloy
pair_coeff * * Cu.set Cu

compute csym all centro/atom fcc
compute pe all pe/atom

timestep 0.0005
thermo 1000
thermo_style custom temp press lx ly lz vol etotal pe

timestep 0.0005
velocity Between create 50 12345 mom yes rot no

fix 1 all nvt temp 50 50 1 drag 1.0
#fix 1 all nvt temp 50 50 1
fix 3 Boundary setforce 0.0 0.0 0.0
#fix 4 Boundary2 setforce 0.0 0.0 0.0

#dump 1 all cfg 1000 dump.Nanoindent_*.cfg id type xs ys zs c_csym c_pe fx fy fz
#shell mkdir Dump1
#shell cd Dump1

run 30000

unfix 1
#undump 1

#--------Indent at constant volume
reset_timestep 0
fix 1 all nvt temp 50 50 1 drag 1.0

#------- Set indent velocity
variable y equal 42
variable yInd equal “ylat-0.001*step”

fix 2 all indent 10.0 sphere 10.0 v_yInd 10.0 5.0 side out
fix_modify 2 energy yes

shell mkdir Dump
shell cd Dump
dump 1 all cfg 500 dump2.Nanoindent_*.cfg id type xs ys zs c_csym c_pe fx fy fz

run 10000

#------- relax
unfix 2

run 2000

If you want people to be able to run your script, my advice is to keep the name of potential (force field) file the same.

I don’t know which potential file “cu.set” refers to, "Cu_zhou.eam.alloy " potential file failed to describe your system, and I can’t try all EAM potentials for Cu out one-by-one.

Ray

http://www.ctcms.nist.gov/~cbecker/Download/Zhou04/IPR_mod/Cu.set

A lot of people won’t, and can’t, click on clinks, due to security reasons …

Anyway, I used Cu_zhou.eam.alloy and the reason it failed was because of NANs. Did you see the NANs? It is because the indenter is not where you think it is.

Thanks for all of your help Ray…

But, why is the indented not where I think it is?

Is v_yInd not properly defined (variable yInd equal “ylat-0.001*step”)??

With regards,
nathaniel

Nathaniel,

Please use print or thermo_style commands to output variable "v_yInd",
and you will see where the indenter is. As the center of the indenter
sphere is located at (x, y, z) with a radius of R, where y equals your
v_yInd. Please also pay special attention to units (box units or
lattice units).

Ray