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

New RandomizedScatter class #2

Open
wants to merge 21 commits into
base: master
Choose a base branch
from
Open

Conversation

jsvillar
Copy link

@jsvillar jsvillar commented Apr 1, 2020

As we discussed by email, I've completed a functional replacement for NISTMottScatteringAngle. It extends the range of energies to 300 keV, uses muffin-tin cross-sections by default but has an atomic potentials option, and should be more accurate by a factor of 10 or more.

The main new classes and resources are:

NU_ELSEPA_DCS, the new RandomizedScatter class. It internally has a Factory class and several static factories, of which two are probably the main ones of interest: (1) NU_ELSEPA_DCS.FactoryAT is a near direct replacement for NISTMottScatteringAngle.Factory and (2) NU_ELSEPA_DCS.FactoryMT is similar but cross-sections are from ELSEPA's muffin-tin model.

EPQLibrary.NU_ELSEPA_AtomicXSec and EPQLibrary.NU_ELSEPA_MuffinTinXSec house the non-uniform scattering tables.

nanoscalemetrology.JMONSELutils.NULagrangeInterpolationFunction is used internally by NU_ELSEPA_DCS to do the nonlinear interpolation.

nanoscalemetrology.JMONSELutils.IListFunction is an interface specification to which NULagrangeInterpolationFunction conforms.

Let me know if you spot any issues.

jvillar and others added 21 commits March 18, 2020 09:43
Pull updates from usnistgov/EPQ
from 50 eV to 300 keV to match ELSEPA with atomic or muffin-tin
potential via non-uniform interpolation.
extrapolation to constructors for NISTMottRS and NU_ELSEPA_DCS. This
permits these options to be exercised when instances are generated
directly via calls to the constructor (as opposed to via use of a
Factory method, where these options were already available). Use of
factory methods should be unaltered by these changes.
Energy sample spacing was chosen to keep total cross section
interpolation error below 0.5%. This is in addition to the previous
tolerance on errors in scattering angle.
Change usnistgov#1 is to the interpolation over energy. Previous tables started
with a coarse but logarithmically uniform sampling of energies after
which intervals were subdivided as needed to reach tolerance. The new
tables start from a manually provided set of energies that includes
round-numbered values that are frequently used. These intervals are
likewise subdivided as needed.

Change usnistgov#2 is to the interpolation over r (random number in [0,1]). The
new tables have a tighter error tolerance that has resulted in a larger
number of r-samples.
Put an upper limit (default 200 eV) on the
GanachaudMokraniPhononInelasticSM. Misc. comments and JavaDoc changes.
NormalDifferenceShape has an additional wholly internal change in which
a frequently needed quantity is cached to improve efficiency.
The NormalConeShape represents a conical shape that terminates in two
disks that may have different radii. (The radii may also be the same, in
which case this shape is equivalent to NormalCylindricalShape.)
Electrons now remember their original position, p0 (determined by e-gun
for beam electrons, SE generation for SE). Detector logs now have 3
additional values per line to give p0 coordinates in addition to p
(position when detected). For simple sample geometries, p0 can be used
to determine escape depth.
The change is to the high-k part of the algorithm for finite barrier
widths. The full formula has numerical imprecision if k (electron wave
vector) is too high. The previous algorithm only tested k1, the initial
wave vector. We now check both. We also reduce the threshold at which we
switch to an approximate formula that does not suffer from the
imprecision but which is valid only for k1 or k2 large enough.
To avoid numerical issues at sharp corners, the minimum beam size is now
5 pm instead of 0.
ExpQMBarrierSM now allows specification of an energy offset. Electron
kinetic energy is treated as larger by this amount. If the offset is
specified as the energy difference between conduction and valence band
bottoms, it has the effect of referencing electron energies to the
bottom of the valence band for the purpose of barrier scattering.

SEmaterial now allows direct specification of the surface potential
energy barrier. If it is unspecified the barrier defaults to the
difference between vacuum energy and conduction band bottom. However, to
use a valence band reference one can specify the barrier to be larger by
the same energy offset used in ExpQMBarrierSM.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant