MAST-SEY is an open-source Monte Carlo code capable of predicting secondary electron emission using input data generated entirely from first principle (density functional theory) calculations. It utilises the complex dielectric function and Penn's theory for inelastic scattering processes, and relativistic Schrödinger theory by means of partial-wave expansion method to govern elastic scattering. It allows to not only use the momentum independent (q=0) dielectric function but also to include explicitly calculated momentum dependence, as well as to utilise first-principle density of states in secondary electron generation.
For more details please refer to the paper which this code accompanies, which is to be cited whenever the code is used:
Maciej P. Polak and Dane Morgan, MAST-SEY: MAterial Simulation Toolkit for Secondary Electron Yield. A Monte Carlo Approach to Secondary Electron Emission Based On Complex Dielectric Functions, Comput. Mater. Sci. 193 (2021), 110281 (https://doi.org/10.1016/j.commatsci.2021.110281)
- Download the source code and compile. Optimal performance is achieved with Intel compilers:
icc -std=c++11 -g -O3 -o mast_sey mast_sey.cpp
Compiling with gcc
is also possible, although the code works twice slower, version > 6.2 of gcc
is required:
g++ -std=c++11 -g -O3 -o mast_sey mast_sey.cpp
-Ofast
and architecture specific optimization flags may be used but the performance is unlikely to get noticeably better.
-
Download the elsepa code (https://doi.org/10.1016/j.cpc.2004.09.006, https://doi.org/10.1016/j.cpc.2020.107704).
-
Unzip the downloaded
w4hm5vymym-1.zip
file and unpack the file inside:
unzip w4hm5vymym-1.zip
unzip elsepa-2020.zip
- Move the
elsepa2020.patch
patch inside theelsepa-2020
directory and apply it:
cd elsepa-2020
patch < ../elsepa2020.patch
If for some reason you wish to use the old version of elsepa
the elsepa_old.patch
is available too.
- Compile the patched
elsepa
:
ifort -o elsepa elscata.f
or
gfortran -o elsepa elscata.f
- Add write permissions to all density files for convenience:
chmod +w database/z_*
- Make sure that the necessary files are executable:
chmod +x /path/to/your/elsepa/elsepa /path/to/your/mastsey/mast_sey /path/to/your/mastsey/getDDCS
- Add the directories containing compiled elsepa and mast_sey to your PATH.
export PATH=/path/to/your/elsepa:/path/to/your/mastsey:${PATH}
The code is executed in two steps:
This step postprocesses the input files to a form convenient for the second step to use. It takes the dielectric function eps.in
or the energy loss function elf.in
, and using the parameters contained in material.in
, prepares the cumulative integrals of cross sections. These results are stored in inelastic.in
and elastic.in
. Additionally a file mfp.plot
is generated, and allows for a convenient plotting of the inelastic and elastic mean free paths, which are generated in this step as well. This step is performed only once for each case.
The command below is an example of how to run the "prepare" step:
mast_sey prepare -e 1000 100 -i 100 50 -qdep DFT -elastic P DHFS FM
The user should be greeted with the default MAST-SEY output screen. It contains the basic info along with a short feedback on the chosen options and files used. If a basic error is detected, it will be displayed here. In all the input values are correct, a progress bar on the bottom should start filling up (although for accurate calculations it may take a while for even the first bar to appear).
A detailed list of options is given upon execution of the code with the -h
flag:
MAterials Simulation Toolkit for Secondary Electron Emission (MAST-SEY)
Cite as: https://doi.org/10.1016/j.commatsci.2020.XXXXXX
(c) 2020 Maciej P. Polak ([email protected]) & Dane Morgan
Input options:
"prepare" as first argument will run input preparation from "eps/elf.in" and "material.in"
otherwise, the "simulate" version will be executed
"prepare" options:
-e [iniE(eV,optional) range(eV) grid] energy range and grid (def: 1000 500)
-lin generate the energy grid on a linear scale (default is logarithmic)
-i [ICS q-int] grids for ICS and q integration (def: 1000 100)
-qdep [SPA/SSPA/CUSTOM] specify type of q-dependence of ELF (def: SPA)
-sumr output sum rules for plotting
-saveq [E_grid q_grid q_max] save q-dependence for plotting
-elastic [nuclear electron exchange (SOLID LDA opt.)] models to use in elastic scattering (def: F TFM FM)
nuclear: [P]oint/[U]niform/[F]ermi
electron: [TFM]Thomas–Fermi–Moliere/[TFD]Thomas-Fermi-Dirac/[DHFS]Dirac–Hartree–Fock–Slater/[DF]Dirac-Fock
exchange: [NO]/[FM]Furness–McCarthy/[TF]Thomas-Fermi/[RT]Riley–Truhlar
(optional): [SOLID] muffin-tin model potential
(optional): [LDA] LDA correlation–polarization potential model
"simulate" options:
-e [incident_energy(eV)] energy of incident energy
-m [number_of_e-] number of incident electrons (def: 1000)
-core [energy(eV)] allow secondaries to come from bound states
-dos [FEG (optional)] generate secondaries from joint DOS from prepared "jdos.in"
or from parabolic free electron gas approximation (FEG)
-pa [angle(deg)] angle of incident electrons with respect to surface normal
-coord save travel paths of e-
-distr save distribution of secondaries
-noang use classical approach to inelastic angle scattering
-noout supress all output
-v display version of the code
-h this message
Please be careful when giving input arguments, there is no extensive input checks
Example executions:
./mast_sey prepare -e 700 1000 -i 200 100 -elastic F TFD TF
./mast_sey -e 350 -m 10000
The examples directory contains examples that showcase most of the capabilities of the code. They serve as a tutorial for the code and also allow to reproduce the results presented in the paper which this code accompanies: Maciej P. Polak and Dane Morgan, MAST-SEY: MAterial Simulation Toolkit for Secondary Electron Yield. A Monte Carlo Approach to Secondary Electron Emission Based On Complex Dielectric Functions, Comput. Mater. Sci. 193 (2021), 110281 (https://doi.org/10.1016/j.commatsci.2021.110281)
Two material systems are considered: [copper] and [aluminium].
Each directory contains all the neccessary input files and a set of commands that should be executed. It also contains a directory with the calculations already completed, for comparison.
It is highly recommended to execute the code on multiple cores for efficiency. For that users might find particularily helpful the GNU Parralel software.