Skip to main content

Module data

Module data 

Source
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 function ELF(ħω) = 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). ShellChannelTable wraps 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§

AtomBindings
The occupied subshells of one neutral atom.
CrossSectionTable
A precomputed cross-section table for one material and one process, cacheable on disk (format version CACHE_FORMAT_VERSION).
CrossSectionTableParts
The unvalidated contents of a CrossSectionTable, for CrossSectionTable::new. See CrossSectionTable for the meaning and invariants of each field.
OpticalElf
A tabulated optical energy-loss function ELF(ħω) = Im[-1/ε(ω)] of one material, at zero momentum transfer.
ShellBinding
The binding energy and ground-state occupancy of one occupied subshell.
ShellChannelTable
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::label and Subshell::orbital).
SubshellBindingTable
Subshell binding energies for a set of elements, with provenance.

Enums§

ElectronDataError
Errors from building, reading or querying electron data.
SamplingAxis
What a CrossSectionTable samples. 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 ShellChannelTable file this build reads and writes.