Expand description
Data the electron engine consumes, as validated types.
Three kinds of data live here, each with a mandatory provenance string:
OpticalElf: a tabulated optical energy-loss functionELF(ħω) = Im[-1/ε(ω)]of one material at zero momentum transfer, the input of dielectric-function inelastic models (Ritchie, Phys. Rev. 106, 874 (1957); Penn, Phys. Rev. B 35, 482 (1987)).SubshellBindingTable: atomic subshell binding energies and ground-state occupancies, for inner-shell ionization. It can be read from the ENDF-6 File 28 (atomic relaxation) format in which EADL is distributed (SubshellBindingTable::from_endf6_mf28_str).CrossSectionTable: a precomputed cross-section cache on an incident-energy grid: the inverse mean free path and the inverse CDF of one sampled variable (elastic polar angle or inelastic energy loss).ShellChannelTablewraps an energy-loss table of one inner-shell ionisation channel with the shell’s identity, binding energy and the provenance of that energy.
§Validation
Every type has private fields and a checked constructor. The serde
implementations go through the same checks (#[serde(try_from = ...)]), so
a value read from disk by any serde format is valid by construction; a
derived deserializer cannot bypass the invariants.
A provenance (and every identity string: material, model) must be
non-blank after trimming and must not contain control characters (it is a
one-line citation that is copied into run metadata). Missing or blank
provenance is ElectronDataError::MissingProvenance, as for user stopping
tables (ion::stopping::table): data without an origin is not admitted
(docs/data-provenance.md).
§Units
SI internally (crate::units), with the unit spelled in each name at the
API boundary: energies in eV (_ev), inverse mean free paths in m⁻¹
(_per_m), angles in radians.
The EADL2017 binding-energy table is committed with this module
(SubshellBindingTable::eadl2017). No optical data is; see
docs/data-provenance.md for the sources and for which redistribution
terms are still open.
Structs§
- Atom
Bindings - The occupied subshells of one neutral atom.
- Cross
Section Table - A precomputed cross-section table for one material and one process,
cacheable on disk (format version
CACHE_FORMAT_VERSION). - Cross
Section Table Parts - The unvalidated contents of a
CrossSectionTable, forCrossSectionTable::new. SeeCrossSectionTablefor the meaning and invariants of each field. - Optical
Elf - A tabulated optical energy-loss function
ELF(ħω) = Im[-1/ε(ω)]of one material, at zero momentum transfer. - Shell
Binding - The binding energy and ground-state occupancy of one occupied subshell.
- Shell
Channel Table - The energy-loss table of one inner-shell ionisation channel, with the identity of its shell.
- Subshell
- One atomic subshell, identified by its ENDF subshell designator
(1 = K (1s1/2), 2 = L1 (2s1/2), 3 = L2 (2p1/2), 4 = L3 (2p3/2), …,
39 = Q3 (7p3/2); see
Subshell::labelandSubshell::orbital). - Subshell
Binding Table - Subshell binding energies for a set of elements, with provenance.
Enums§
- Electron
Data Error - Errors from building, reading or querying electron data.
- Sampling
Axis - What a
CrossSectionTablesamples. Elastic and inelastic tables are distinct types of data and are never interchangeable.
Constants§
- CACHE_
FORMAT_ VERSION - The cross-section cache format this build reads and writes.
- OCCUPANCY_
SUM_ TOLERANCE - Absolute tolerance on
Σ occupancy = Z. Source tables quote fractional occupancies to two or three digits (e.g. 0.67 + 1.33). - SHELL_
CHANNEL_ FORMAT_ VERSION - The format of a
ShellChannelTablefile this build reads and writes.