Skip to content

Roadmap

The physics of an isolated atom is one engine with several exits. Every quantity on this page is a choice of two independent things: the operator that couples the initial and final state, and the exit — what you integrate over and what you report. Layers L0–L4 (numerics, the self-consistent atom, the continuum, the radial and angular matrix elements) are the shared toolbox — each exit uses as much of it as its operator needs — and only the top layer L5 knows what is being reported. See Architecture for the stack.

Operator and exit, on two quantities you already know

The ionization form factor \(F(s, E_0)\) and the generalized oscillator strength (GOS) use the same operator — a fast electron coupling the initial and final state through the screened Coulomb interaction in the first Born approximation — and differ in the exit: \(F\) contracts the mixed (off-diagonal) form factor over the ejected electron's energy and direction and reports a normalized shape, the GOS keeps the diagonal quantity at every energy loss and momentum transfer and reports the surface itself (so \(F\) is not simply an integral of the GOS surface). The X-ray scattering factor \(f_x(s)\) is the opposite case: no transition at all, a different operator (the Fourier transform of the charge density), and it reads the L1 density directly.

Effort estimates below are estimates of the work relative to the existing engine, not dates. In the exit tables, done means the exit exists as a subcommand of src/ionization.jl and is covered by selftest.

Where things stand

Six exits are implemented. The rest of this page is what remains.

Exit Quantity Command Status
EDX \(F(s, E_0)\), K, L1–L3, M1–M5 <Z> <channel> <E0> shipping (dataset v7.0.0)
EELS core-loss \(\mathrm{d}\sigma/\mathrm{d}\Delta E\) and the inner-shell stopping-power contribution edge done
GOS \(\mathrm{d}f/\mathrm{d}\Delta E(Q)\), the Bethe surface gos done
Elastic phases \(\delta_l\) in the neutral atom's static field phase done
Mott elastic \(\mathrm{d}\sigma/\mathrm{d}\Omega\), \(\sigma_\text{el}\), \(\sigma_\text{tr}\), Sherman function mott done
Scattering factors \(f_x(s)\), \(f_e(s)\) fx shipping (dataset-factors v2.0.0; anions: dataset-factors-ion 1.0.0)

Already computed and thrown away

Three quantities existed inside the call graph of the \(F(s, E_0)\) exit and were discarded before returning. Exposing them was output plumbing, not physics — which is why they came first, and why all three are now done.

Quantity Where it already was Status
EELS core-loss dσ/dΔE The diag.dNde matrix (ε node × K node). Its K = 0 column, times \(4\gamma^2 a_0^2\), is the parallel-illumination dσ/dε. done — edge subcommand (from the command line the transverse Møller term is on by default in this exit; --no-transverse restores the longitudinal kernel alone)
Inner-shell stopping power One contraction of diag.dNde with the ε quadrature weights. done — reported by edge
Elastic phase shifts \(\delta_l\) The continuum solver least-squares fits the tail to \(u \approx a F_l + b G_l\). Then \(\delta_l = \mathrm{atan2}(b, a)\). done — phase subcommand, validated against the Born approximation to 3 % at high \(l\). The default scattering field is purely electrostatic, \(-Z/r + V_H\); see the command-line reference

Small to medium effort

Quantity Effort Why it is cheap here
Generalized oscillator strength (GOS) / Bethe surface done The gos subcommand. The E₀ dimension is gone: one run per channel instead of one per (channel, E₀), a factor of 22 to 40 against the shipped grids (each channel of dataset v5 carries 22 to 40 E₀ rows; the GOS needs one). Checked, for hydrogen, against the Bethe sum rule at large Q and, at Q → 0, against the exact hydrogen continuum dipole strength (selftest T11).
Double-differential d²σ/dΩdΔE small The K = 0 branch of the angular integral already evaluates \(S/Q^4\) on a θ grid — and that grid is built by a transform that flattens the forward \(1/Q^4\) peak, so nodes automatically cluster where EELS collection angles are.
Partial cross sections σ(β, Δ) medium — in progress The EELS quantification k-factor itself. Broadest reach of anything on this list. The real work turned out to be the two quadratures, not the physics: the energy window (a single 16-point rule was five orders worse than its draft budget on d shells, whose cross section peaks inside the window; the candidate rule is 16 geometric panels in θ = asin√(ε/ε_max), 256 nodes, with the reference-function switch as a panel boundary) and the collection angle (split at every knot of the tabulated radial integrals instead of raising the order). A contract draft, a candidate implementation and a preregistered certification exist in the repository; nothing is shipped, and the numbers on the verification page for σ(β, Δ) are a comparison against a database, not a release.
X-ray scattering factors \(f_x(s)\), Mott–Bethe, \(f_e(s)\) done The fx subcommand — straight from the SCF charge density. Verified against the closed form for hydrogen 1s to 8×10⁻¹⁴. With the non-relativistic density it agreed with the published parameterizations to 1–3 % for light and medium Z but drifted to ~7 % for Au at high \(s\). The full Dirac SCF closes that gap to ~1 % for Au (the relativistic contraction moves \(f_x\) by 10.8 % at \(s = 4\) Å⁻¹). Dirac + KLI, the command-line default (KLI exchange — the exchange-only KLI approximation to the OEP of Krieger et al., 1992), reaches 0.030 % relative RMS for Au over \(s \le 2\) Å⁻¹ against OFFV1 (Olukayode et al., 2023), a computed Dirac–Hartree–Fock table rather than a fit; the full table is on the Verification page. Beyond \(s \approx 3\) Å⁻¹ a sum of Gaussians decays as \(\exp(-bs^2)\) while \(f_e\) genuinely falls as \(s^{-2}\), so there a Gaussian fit is simply out of its range; a computed table is not.
Mott elastic dσ/dΩ, σ_el, σ_tr done The mott subcommand. Spin is in: the κ-resolved Dirac continuum gives \(\delta_\kappa\), hence both the direct amplitude \(f(\theta)\) and the spin-flip amplitude \(g(\theta)\), the Sherman function \(S(\theta)\), and \(\sigma_\text{el}\), \(\sigma_\text{tr}\). Three scattering fields are available and they are not interchangeable. :static is the default — the purely electrostatic \(-Z/r + V_H\); against NIST SRD 64 (Powell et al., 2016) its ratio sits at 0.90–0.94 above 1 keV, and it degrades at low energy for heavy elements (Au at 100 eV: 0.667). --fm adds the Furness–McCarthy local exchange (Furness & McCarthy, 1973), which is energy-dependent and vanishes at high energy as the incoming electron's exchange should; it changes little above a few keV but a great deal below, moving Au at 100 eV to 0.912 and narrowing the overall spread from 0.67–1.04 to 0.90–1.06. That narrowing is a comparison against one reference over the range tested, not a demonstration that --fm is the more accurate physics — the residual difference is a prescription difference, since ELSEPA/NIST also carry correlation-polarization and absorption terms that Temari does not. ⚠ --xapot is for comparison only. The target's own Xα exchange is not a field the incoming electron feels, it does not vanish at high energy, and it inflates \(\sigma_\text{el}\) to 1.6–4.9× NIST (still 1.6× at 30 keV).
Photoionization σ_nl(ω) and asymmetry β_nl medium Swap the fast-electron operator for the photon dipole operator. The energy normalization is already the one photoionization requires.
M shell (M1–M5) done All five subshells ship in dataset v5 (525 channels against v3's 246). It cost five rows in the channel table plus a \([3j]^2\) table extended to \(l_\text{init} = 2\).
ΔSCF binding and relaxation energies medium Both the neutral and the relaxed-ion SCF are already solved and cached.
Compton scattering function S(q) medium Bound–bound multipole matrix elements are the same integral as the radial table.
TDS absorptive form factor medium Same shape of problem: an integrand with two forward peaks.

Larger

  • Delocalized STEM-EELS ionization form factor \(F(s; \beta, \Delta)\) — a circular aperture breaks the separable Gauss–Legendre quadrature, because θ is measured from \(\hat{k}_+\)
  • Anomalous dispersion \(f'\), \(f''\) (Cromer–Liberman class)
  • Central-atom phase and backscattering amplitude for EXAFS
  • Bound–bound transitions (white lines)

Deliberately out of scope

  • Fluorescence yields, Auger and Coster–Kronig rates. Multi-electron transition probabilities are a different problem; use the tabulated literature values.
  • Quantitative white lines. An isolated atom in a mean field cannot produce multiplets or a solid-state DOS. The planned route is indirect: the low-\(Q\) deficit in the GOS sum rule \(\int \mathrm{d}f/\mathrm{d}\Delta E \, \mathrm{d}\Delta E \to\) occupancy is the missing white-line strength, so measure it before deciding anything.

Phases

Phase Content Status
P0 Repository, design principles, layer declaration done
P1 Vectorization across radial points done — 11.7× over the code that generated the v3 dataset, all bit-identical
P2 Split into the L0–L5 layer files; verification in CI done — bit-identical; the operator/exit seam was left to the first exit that needed it
P3 The discarded exits: GOS, dσ/dΔE, δ_l, stopping power done
P4 Elastic side: \(f_x(s)\), Mott–Bethe, Mott DCS; add the sum-rule check done
P5 EELS quantification σ(β, Δ); systematic comparison against SIGMAK/SIGMAL (Egerton, 2011) and the Hartree–Slater GOS of Leapman et al. (1980) open
P6 Photon side: σ_nl, β_nl; comparison against xraylib open
P7 M shell, full Dirac continuum done — M1–M5 and the κ-resolved two-component continuum ship in dataset v5

P2 was deliberately unglamorous: pure code movement, so bit identity was a hard requirement — verified with selftest, refcheck (the cross-check against the independent Python v2 baseline, unchanged at 9.044×10⁻⁸) and the kernel bit-identity checks. What it did not do was make the operator and the exit injectable: L5 still calls the L4 routines by name. That seam was left to the first quantity that needed it, which was P3 — and P3 is where Temari first became useful for something other than EDX. What P3 actually produced is a narrow seam, eps_setup in l5_channel.jl: everything about one ε node that does not depend on the incident kinematics, factored out so that an exit only chooses its Q range. It separates kinematics from reporting, not operator from exit; the scattering-factor exit (P4) sidestepped the question by reading the L1 density directly. See Architecture.

The gap worth aiming at

The strongest scientific argument in the list is still the EELS side. The standard EELS cross-section tools date from the 1980s — SIGMAK/SIGMAL (Egerton, 2011) and the Hartree–Slater tables of Leapman et al. (1980). The one modern open reference for the GOS exit is the Dirac GOS database (Zhang et al., 2023): CC-BY, Z = 1–108, computed with the Flexible Atomic Code from Dirac–Fock–Slater orbitals. It stops at \(q = 50\) Å⁻¹ — \(s \approx 3.98\) Å⁻¹ in the crystallographic variable used throughout this site, since \(q = 4\pi s\) — and it is a GOS table, not a Bloch-wave/multislice ionization form-factor table.

The engine computed what a GOS table needs and threw it away; the gos exit now reports it, at a factor of 22 to 40 less than the shipped \(F(s, E_0)\) grids. How it compares against the Dirac GOS database is recorded on the Verification page. What the list still lacks on this side is P5: the partial cross sections σ(β, Δ) that quantification actually consumes, and the systematic comparison against SIGMAK/SIGMAL and the Hartree–Slater GOS.

References

  • Egerton, R. F. (2011). Electron Energy-Loss Spectroscopy in the Electron Microscope, 3rd ed. Springer, New York.
  • Krieger, J. B., Li, Y. & Iafrate, G. J. (1992). Construction and application of an accurate local spin-polarized Kohn–Sham potential with integer discontinuity: Exchange-only theory. Physical Review A 45, 101–126.
  • Leapman, R. D., Rez, P. & Mayers, D. F. (1980). K, L, and M shell generalized oscillator strengths and ionization cross sections for fast electron collisions. Journal of Chemical Physics 72, 1232–1243.
  • Olukayode, S., Froese Fischer, C. & Volkov, A. (2023). Revisited relativistic Dirac–Hartree–Fock X-ray scattering factors. I. Neutral atoms with Z = 2–118. Acta Crystallographica A 79, 59–79.
  • Powell, C. J., Jablonski, A., Salvat, F. & Lee, A. Y. (2016). NIST Electron Elastic-Scattering Cross-Section Database, Version 4.0. NIST Standard Reference Database 64 (NSRDS 64), National Institute of Standards and Technology, Gaithersburg. doi:10.6028/NIST.NSRDS.64
  • Zhang, Z., Lobato, I., Jannis, D., Verbeeck, J., Van Aert, S. & Nellist, P. (2023). Generalised oscillator strength for core-shell electron excitation by fast electrons based on Dirac solutions [Data set]. Zenodo. doi:10.5281/zenodo.7729585