-
Notifications
You must be signed in to change notification settings - Fork 9
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
jsvillar
wants to merge
21
commits into
usnistgov:master
Choose a base branch
from
jsvillar:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.