Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add fix electron/stopping to USER-MISC #1399

Merged
merged 7 commits into from Apr 5, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/src/Commands_fix.txt
Expand Up @@ -61,6 +61,7 @@ OPT.
"edpd/source"_fix_dpd_source.html,
"efield"_fix_efield.html,
"ehex"_fix_ehex.html,
"electron/stopping"_fix_electron_stopping.html,
"enforce2d (k)"_fix_enforce2d.html,
"eos/cv"_fix_eos_cv.html,
"eos/table"_fix_eos_table.html,
Expand Down
1 change: 1 addition & 0 deletions doc/src/fix.txt
Expand Up @@ -201,6 +201,7 @@ accelerated styles exist.
"edpd/source"_fix_dpd_source.html -
"efield"_fix_efield.html - impose electric field on system
"ehex"_fix_ehex.html - enhanced heat exchange algorithm
"electron/stopping"_fix_electron_stopping.html - electronic stopping power as a friction force
"enforce2d"_fix_enforce2d.html - zero out z-dimension velocity and force
"eos/cv"_fix_eos_cv.html -
"eos/table"_fix_eos_table.html -
Expand Down
165 changes: 165 additions & 0 deletions doc/src/fix_electron_stopping.txt
@@ -0,0 +1,165 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c

:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Commands_all.html)

:line

fix electron/stopping command :h3

[Syntax:]

fix ID group-ID electron/stopping Ecut file keyword value ... :pre

ID, group-ID are documented in "fix"_fix.html command :ulb,l
electron/stopping = style name of this fix command :l
Ecut = minimum kinetic energy for electronic stopping (energy units) :l
file = name of the file containing the electronic stopping power table :l
zero or more keyword/value pairs may be appended to args :l
keyword = {region} or {minneigh} :l
{region} value = region-ID
region-ID = region, whose atoms will be affected by this fix
{minneigh} value = minneigh
minneigh = minimum number of neighbors an atom to have stopping applied :pre
:ule

[Examples:]

fix el all electron/stopping 10.0 elstop-table.txt
fix el all electron/stopping 10.0 elstop-table.txt minneigh 3
fix el mygroup electron/stopping 1.0 elstop-table.txt region bulk :pre

[Description:]

This fix implements inelastic energy loss for fast projectiles in solids. It
applies a friction force to fast moving atoms to slow them down due to
"electronic stopping"_#elstopping (energy lost via electronic collisions per
unit of distance). This fix should be used for simulation of irradiation
damage or ion implantation, where the ions can lose noticeable amounts of
energy from electron excitations. If the electronic stopping power is not
considered, the simulated range of the ions can be severely overestimated
("Nordlund98"_#Nordlund98, "Nordlund95"_#Nordlund95).

The electronic stopping is implemented by applying a friction force
to each atom as:

\begin\{equation\}
\vec\{F\}_i = \vec\{F\}^0_i - \frac\{\vec\{v\}_i\}\{\|\vec\{v\}_i\|\} \cdot S_e
\end\{equation\}

where \(\vec\{F\}_i\) is the resulting total force on the atom.
\(\vec\{F\}^0_i\) is the original force applied to the atom, \(\vec\{v\}_i\) is
its velocity and \(S_e\) is the stopping power of the ion.

NOTE: In addition to electronic stopping, atomic cascades and irradiation
simulations require the use of an adaptive timestep (see
"fix dt/reset"_fix_dt_reset.html) and the repulsive ZBL potential (see
"ZBL"_pair_zbl.html potential) or similar. Without these settings the
interaction between the ion and the target atoms will be faulty. It is also
common to use in such simulations a thermostat ("fix_nvt"_fix_nh.html) in
the borders of the simulation cell.

NOTE: This fix removes energy from fast projectiles without depositing it as a
heat to the simulation cell. Such implementation might lead to the unphysical
results when the amount of energy deposited to the electronic system is large,
e.g. simulations of Swift Heavy Ions (energy per nucleon of 100 keV/amu or
higher) or multiple projectiles. You could compensate energy loss by coupling
bulk atoms with some thermostat or control heat transfer between electronic and
atomic subsystems with the two-temperature model ("fix_ttm"_fix_ttm.html).

At low velocities the electronic stopping is negligible. The electronic
friction is not applied to atoms whose kinetic energy is smaller than {Ecut},
or smaller than the lowest energy value given in the table in {file}.
Electronic stopping should be applied only when a projectile reaches bulk
material. This fix scans neighbor list and excludes atoms with fewer than
{minneigh} neighbors (by default one). If the pair potential cutoff is large,
minneigh should be increased, though not above the number of nearest neighbors
in bulk material. An alternative is to disable the check for neighbors by
setting {minneigh} to zero and using the {region} keyword. This is necessary
when running simulations of cluster bombardment.

If the {region} keyword is used, the atom must also be in the specified
geometric "region"_region.html in order to have electronic stopping applied to
it. This is useful if the position of the bulk material is fixed. By default
the electronic stopping is applied everywhere in the simulation cell.

:line

The energy ranges and stopping powers are read from the file {file}.
Lines starting with {#} and empty lines are ignored. Otherwise each
line must contain exactly [N+1] numbers, where [N] is the number of atom
types in the simulation.

The first column is the energy for which the stopping powers on that
line apply. The energies must be sorted from the smallest to the largest.
The other columns are the stopping powers \(S_e\) for each atom type,
in ascending order, in force "units"_units.html. The stopping powers for
intermediate energy values are calculated with linear interpolation between
2 nearest points.

For example:

# This is a comment
# atom-1 atom-2
# eV eV/Ang eV/Ang # units metal
10 0 0
250 60 80
750 100 150 :pre


If an atom which would have electronic stopping applied to it has a
kinetic energy higher than the largest energy given in {file}, LAMMPS
will exit with an error message.

The stopping power depends on the energy of the ion and the target
material. The electronic stopping table can be obtained from
scientific publications, experimental databases or by using
"SRIM"_#SRIM software. Other programs such as "CasP"_#CasP or
"PASS"_#PASS can calculate the energy deposited as a function
of the impact parameter of the ion; these results can be used
to derive the stopping power.

[Restart, fix_modify, output, run start/stop, minimize info:]

No information about this fix is written to "binary restart
files"_restart.html.

The "fix_modify"_fix_modify.html options are not supported.

This fix computes a global scalar, which can be accessed by various
"output commands"_Howto_output.html. The scalar is the total energy
loss from electronic stopping applied by this fix since the start of
the latest run. It is considered "intensive".

The {start/stop} keywords of the "run"_run.html command have no effect
on this fix.

[Restrictions:]

This pair style is part of the USER-MISC package. It is only enabled if
LAMMPS was built with that package. See the "Build package"_Build_package.html
doc page for more info.

[Default:]

The default is no limitation by region, and minneigh = 1.

:line
:link(elstopping)
[(electronic stopping)] Wikipedia - Electronic Stopping Power: https://en.wikipedia.org/wiki/Stopping_power_%28particle_radiation%29

:link(Nordlund98)
[(Nordlund98)] Nordlund, Kai, et al. Physical Review B 57.13 (1998): 7556.

:link(Nordlund95)
[(Nordlund95)] Nordlund, Kai. Computational materials science 3.4 (1995): 448-456.

:link(SRIM)
[(SRIM)] SRIM webpage: http://www.srim.org/

:link(CasP)
[(CasP)] CasP webpage: https://www.helmholtz-berlin.de/people/gregor-schiwietz/casp_en.html

:link(PASS)
[(PASS)] PASS webpage: https://www.sdu.dk/en/DPASS
1 change: 1 addition & 0 deletions doc/src/fixes.txt
Expand Up @@ -40,6 +40,7 @@ Fixes :h1
fix_dt_reset
fix_efield
fix_ehex
fix_electron_stopping
fix_enforce2d
fix_eos_cv
fix_eos_table
Expand Down
1 change: 1 addition & 0 deletions doc/src/lammps.book
Expand Up @@ -265,6 +265,7 @@ fix_drude_transform.html
fix_dt_reset.html
fix_efield.html
fix_ehex.html
fix_electron_stopping.html
fix_enforce2d.html
fix_eos_cv.html
fix_eos_table.html
Expand Down
6 changes: 6 additions & 0 deletions doc/utils/sphinx-config/false_positives.txt
Expand Up @@ -289,6 +289,7 @@ Cao
Capolungo
Caro
cartesian
CasP
Caswell
Cates
Cavium
Expand Down Expand Up @@ -656,6 +657,7 @@ ec
Ec
ecoul
ecp
Ecut
edgeIDs
edihed
edim
Expand Down Expand Up @@ -1255,6 +1257,7 @@ Jy
Jz
jzimmer
Kadiri
Kai
Kalia
Kamberaj
Kapfer
Expand Down Expand Up @@ -1285,6 +1288,7 @@ Keir
Kelchner
Kelkar
Kemper
keV
Keyes
Khersonskii
Khrapak
Expand Down Expand Up @@ -1627,6 +1631,7 @@ minima
minimizations
minimizer
minimizers
minneigh
minorder
minSteps
mintcream
Expand Down Expand Up @@ -2944,6 +2949,7 @@ Wi
Wicaksono
wih
Wijk
Wikipedia
wildcard
Wildcard
Wirnsberger
Expand Down
14 changes: 14 additions & 0 deletions examples/USER/misc/electron_stopping/Si.Si.elstop
@@ -0,0 +1,14 @@
# Electronic stopping for Si in Si
# Uses metal units
# Kinetic energy in eV, stopping power in eV/A
# For other atom types, add columns.

# energy Si in Si
3918.2 6.541
15672.9 13.091
35263.9 19.660
62691.5 26.257
97955.4 32.889
141055.9 39.566
191992.0 46.292
250766.1 53.074
1 change: 1 addition & 0 deletions examples/USER/misc/electron_stopping/Si.sw
38 changes: 38 additions & 0 deletions examples/USER/misc/electron_stopping/in.elstop
@@ -0,0 +1,38 @@
# Test case / example for fix electron/stopping
# Perfect Si lattice with one primary knock-on atom.
#
# Also uses fix dt/reset, as one should when energies are high
# enough to require electronic stopping.

units metal
boundary p p p
timestep 0.0001

lattice fcc 5.431

region rbox block -10 10 -10 10 -10 10
create_box 1 rbox

mass 1 28.0855

create_atoms 1 box

velocity all create 300 42534 mom yes rot yes

group gPKA id 1
velocity gPKA set 1120 1620 389

pair_style sw
pair_coeff * * Si.sw Si

fix fdt all dt/reset 1 NULL 0.001 0.1 emax 20.0
fix fel all electron/stopping 1.0 Si.Si.elstop
fix fnve all nve

thermo 10
thermo_style custom step time dt f_fel

#compute ek all ke/atom
#dump mydump all custom 200 elstop.dump id x y z vx vy vz fx fy fz c_ek

run 5000
39 changes: 39 additions & 0 deletions examples/USER/misc/electron_stopping/in.elstop.only
@@ -0,0 +1,39 @@
# Test case / example for fix electron/stopping
# One fast atom, no other interactions.
# Stopping only applied in a smaller box in the middle.
#
# Also uses fix dt/reset, as one should when energies are high
# enough to require electronic stopping.

units metal
boundary p p p
timestep 0.0001

lattice fcc 1

region rbox block -100 100 -100 100 -100 100
region rsmallbox block -90 90 -90 90 -90 90

create_box 1 rbox

mass 1 28.0855

create_atoms 1 single 0 0 0
velocity all set 1120 1620 389

pair_style zero 1
pair_coeff * * 1

fix fdt all dt/reset 1 NULL 0.001 0.1 emax 20.0
fix fel all electron/stopping 1.0 Si.Si.elstop minneigh 0 region rsmallbox
fix fnve all nve

compute ek all ke/atom
compute ektot all reduce sum c_ek

thermo 100
thermo_style custom step time dt f_fel c_ektot

#dump mydump all custom 200 elstop.only.dump id x y z vx vy vz fx fy fz c_ek

run 10000