Theory background
IRMA evaluates the thermal scattering response of a material as the thermal
scattering law S(α,β), a tabulated function of momentum and energy transfer,
and writes it to ENDF-6 File 7. This page collects the physics behind that
sentence, in just enough depth to read the rest of the manual with confidence.
IRMA is a Python reimplementation and generalization of the LEAPR module of
NJOY2016: the classic phonon-expansion kernels are reproduced faithfully
(validated against published NJOY tapes), and on top of them IRMA adds a
generalized coherent-elastic (Bragg-edge) treatment for any crystal and an
exact one-phonon inelastic treatment for noncubic crystals, driven by phonopy
eigenvectors. If you already know LEAPR, the first half of the page is
familiar ground and the noncubic sections are the new material.
In plain language
A slow ("thermal") neutron entering a material can scatter from its atoms and,
in doing so, gain or lose energy by creating or absorbing lattice vibrations,
called phonons. S(α,β) is the bookkeeping for that exchange: a table that
says how likely a scattering event is for each combination of momentum kick
(α) and energy change (β). Reactor-physics and neutron-instrument codes
read this table to predict how neutrons slow down in, or scatter from, a
moderator or sample. IRMA's job is to compute that table from a description of
the material's atoms and their vibrations and to write it in the standard
ENDF-6 format other codes expect. The recurring terms, in plain words:
| Term | Plain meaning |
|---|---|
S(α,β) |
the per-material table of scattering probabilities vs. momentum (α) and energy (β) transfer |
α |
dimensionless momentum transfer, how hard the neutron is kicked |
β |
dimensionless energy transfer, how much energy the neutron gains/loses (β>0 = energy loss) |
| Phonon | a quantum of lattice vibration; one-phonon = a single vibration created/destroyed, multiphonon = several |
| Elastic | scattering with no energy change (β=0): coherent Bragg edges + the incoherent Debye-Waller line |
| Inelastic | scattering that creates/absorbs phonons (β≠0) |
| Debye-Waller factor | the thermal-vibration damping of scattering, e^{-2W} |
| ENDF-6 / MF7 | the standard nuclear-data file format; File 7 holds thermal scattering data (MT2 elastic, MT4 inelastic) |
| LEAPR | the NJOY2016 module IRMA reimplements and generalizes |
| Tape | the historical name for an ENDF-format data file, used throughout |
| THERMR | the NJOY module that turns the S(α,β) table into cross sections downstream |
S(α,β): conventions
The double-differential thermal cross section, differential in both scattering
angle and outgoing energy, is carried by S(α,β), written as a function of
the dimensionless momentum and energy transfers
where Q is the momentum transfer, E the energy transfer, M the scatterer
mass, T the temperature, ℏ the reduced Planck constant, and k_B the
Boltzmann constant. α is non-negative; β runs over both signs, with
β > 0 for energy loss (down-scatter, the neutron loses energy) and β < 0
for energy gain (up-scatter).
Two conventions for S(α,β) appear in the literature and in ENDF tapes. The
symmetric convention obeys detailed balance explicitly (the thermodynamic
relation that fixes the ratio of up-scatter to down-scatter at a given
temperature) and is even in β. The asymmetric (sometimes "script-S")
convention folds the exp(−β/2) Boltzmann factor in, so the two sides of β
differ. IRMA's noncubic engine builds the physical, energy-loss (down-scatter)
side and stores a downscatter-side asymmetric table,
with β = E/kT, α as above, and σ_b the bound scattering cross section of
the scatterer. The factor 4π converts the internal per-steradian
differential S(Q,E) into the angle-integrated normalization of S(α,β).
The programs that process the tape recover the up-scatter side through
detailed balance; Card 4 isabt (cards are the numbered records of the
input file; see the input file reference) selects
whether S(α,−β) is also written.
The grids themselves may be supplied either at the actual temperature or at
the LEAPR reference temperature T_0 = 0.0253 eV (≈ 293.6 K), chosen by
Card 7 lat. With lat = 1 the α and β grids are interpreted as given at
T_0, and the kernels rescale every grid value internally by T_0/kT before
evaluation; with lat = 0 the grids are at the actual temperature. The choice
only changes how the grid numbers map to physical Q and E. The underlying
physics is identical.
The classic LEAPR phonon-expansion kernels
For the incoherent inelastic part of S(α,β), and for the incoherent
approximation (every atom treated as if it scattered incoherently, with no
interference between atoms, while carrying the full cross-section strength),
IRMA ports the LEAPR machinery from NJOY2016's leapr.f90. The scatterer's
frequency spectrum is reduced to a first-order phonon kernel T_1(β) and a
Debye-Waller λ (start/contin), and the full S(α,β) is built up by the
harmonic phonon expansion: successive orders are generated by
self-convolution (convol), weighted by Poisson factors in α λ, and summed.
Beyond the tabulated support, a short-collision-time (SCT) approximation, an
analytic free-gas-like limit that becomes accurate at large energy and
momentum transfer, closes the calculation. The pieces below are each one
optional contribution to the same expansion.
| Kernel | Routine | Role |
|---|---|---|
| Continuous spectrum | contin |
Phonon expansion from the tabulated DOS |
| Translational | trans |
Free-gas or diffusive center-of-mass motion |
| Discrete oscillators | discre |
Sharp internal vibrational lines |
| Cold H/D | coldh |
Rotational structure of ortho/para H₂ and D₂ |
| Sköld | skold_approx |
Static intermolecular coherence correction |
Continuous spectrum. The phonon density of states (DOS) ρ(ε)
(Cards 11–12) is the backbone of the calculation. start transforms it into
the normalized first-order kernel T_1(β) and computes the Debye-Waller λ
and effective temperature. contin then runs the phonon expansion to order
nphon (Card 3): each order is the convolution of T_1 with the previous
order, scaled by the Poisson weight e^{−αλ}(αλ)^n/n!. This is the standard
incoherent harmonic expansion; it captures the smooth multiphonon continuum
of a moderator.
Translational. Materials such as liquids have a diffusive or free-gas
center-of-mass mode that is not in the bound phonon spectrum. trans builds a
diffusion (twt c tbeta, Card 13) or free-gas table (the stable
routine) and convolves
it with the bound S(α,β) (the part built from the phonon spectrum). c = 0
selects the free-gas limit; a nonzero diffusion constant gives the
Egelstaff-Schofield diffusion model.
Discrete oscillators. Sharp molecular vibrations (Cards 14–16) are handled
analytically as Einstein oscillators. discre builds each line's
Bessel-function weight ladder (bfact) and convolves the resulting discrete
delta functions into the continuous S(α,β), so a moderator can carry both a
broad phonon continuum and crisp internal modes.
Cold hydrogen / deuterium. Below room temperature the rotational quantum
structure of H₂ and D₂ matters, and the ortho and para nuclear-spin species
scatter differently. coldh (Card 5 ncold, options 0–4) convolves the
bound S(α,β) with the molecular rotational transitions, using spherical
Bessel functions (sjbes) and Clebsch-Gordan coefficients (cn_cg), and
reproduces the ortho/para-H₂ and -D₂ scattering kernels. The S(κ) form
factor (Cards 17–18) feeds the intramolecular structure.
Sköld. Intermolecular coherence in liquids is approximated by the Sköld
prescription (Card 5 nsk = 2): skold_approx rescales α by a static
structure factor S(κ) (Cards 17–18) and blends the coherent piece in with
weight cfrac (Card 19). Of the pair-correlation options only Sköld modifies
the stored table; Vineyard (an alternative pair-correlation prescription)
is accepted for compatibility but does not alter S(α,β).
These kernels are reproduced, not reinvented. They match published
ENDF/B-VIII.1 reference tapes to 7e-5, and freshly generated NJOY2016
tapes exactly for several material families (liquid methane,
ortho-/para-hydrogen and -deuterium, BeO). A handful of deliberate,
documented divergences from NJOY exist (noted inline in
irma/core/kernels.py); none affect the validated comparisons. Treat the
classic kernels as a faithful LEAPR; the
validation methodology page has the details.
Generalized coherent elastic (Bragg edges)
For a crystalline solid, coherent elastic scattering produces the familiar
sawtooth of Bragg edges; below the lowest reflection there is no coherent
elastic scattering at all. The legacy LEAPR path (iel = 1–6) carries this
for a fixed list of built-in materials. IRMA generalizes it (iel = 10) to
any crystal supplied through Cards 6c–6d: the lattice and atom positions are
enumerated, reciprocal-lattice planes are generated down to a d-spacing
(interplanar distance) cutoff derived from the maximum energy, and the
coherent structure factor of each plane family is accumulated into edges at
the corresponding threshold energies. Per-edge plane contributions are kept
separate, so the Debye-Waller suppression is applied with the correct
direction for each (hkl) family rather than collapsing equal-energy edges
prematurely.
The reciprocal-lattice and Bragg-edge enumeration in irma/core/crystal.py
is adapted from NCrystal (Apache-2.0; see THIRD_PARTY_NOTICES.md) and
follows the NCrystal elastic-scattering formalism; the licensing notice is
retained as required. The formalism is that of T. Kittelmann et al., "Elastic
neutron scattering models for NCrystal", Computer Physics Communications
267 (2021) 108082, and K. Ramic, J. I. Marquez Damian, et al.,
"NJOY+NCrystal", NIM-A 1027 (2022) 166227.
Elastic format: SEF vs. MEF (Card 6b field 1)
Two ENDF-6 elastic formats are available, chosen by elastic_mode:
elastic_mode |
Format | ENDF LTHR |
Behavior |
|---|---|---|---|
| 1 | SEF (single-channel elastic format) | 1 or 2 | The full elastic strength is folded into one elastic component per tape (rules below); the standard one-component layout transport codes expect today |
| 2 | MEF (mixed elastic format) | 3 | Coherent and incoherent elastic coexist on one material; needs downstream code support |
SEF was called the current ENDF format (CEF) when the mixed elastic format was introduced in Ramić et al., NIM-A 1027 (2022) 166227; the name was updated because "current" stopped discriminating once MEF entered the ENDF-6 standard.
SEF folds the full elastic strength (σ_coh + σ_inc) into a single elastic
component, chosen as follows (Eqs. 24–26 of Ramic et al., NIM-A 1027
(2022) 166227). For a single atom type the dominant component carries it: if
σ_coh > σ_inc, the Bragg edges are written (LTHR=1) scaled by
(σ_coh + σ_inc)/σ_coh (Eq. 24); otherwise the incoherent Debye-Waller line
is written (LTHR=2) with bound cross section σ_coh + σ_inc (Eq. 25), and
no coherent elastic appears on the tape at all. For a polyatomic cell the
designated-coherent (DC) atom, the type with the smallest f/(1−f)·σ_inc
(f is the type's atom fraction in the cell) and hence the smallest
incoherent contribution, carries the coherent elastic (LTHR=1, scaled by
1/f_DC). A principal scatterer (the atom species the evaluation is written
for) that is not the DC atom gets incoherent elastic (LTHR=2) with the DC
atom's incoherent strength redistributed onto it (Eq. 26).
For materials whose high-energy region carries a very dense forest of Bragg
edges, optional edge grouping (ENDF-102 §7.2.2; Card 6b fields 5–6) merges
the steps above a threshold energy into bins_per_decade log-uniform bins
with structure-factor-weighted placement. The merge is mass-conserving:
cumulative S and the total cross section are preserved. It is off by
default.
The noncubic inelastic engine
Cubic crystals have an isotropic Debye-Waller factor, so the legacy
scalar-DOS expansion (inelastic_mode = 0) is adequate. Anisotropic crystals
do not: the mean-square displacement is a tensor, and treating it as a scalar
mis-suppresses high-Q scattering. IRMA's noncubic engine
(irma/core/noncubic_engine.py, inelastic_mode = 1/2) builds the inelastic
S(α,β) directly from phonopy eigenvectors and frequencies and keeps the
directional information throughout.
Exact one-phonon scattering
From the phonopy mesh (eigenvectors e, frequencies ω, occupations) the
engine forms three exact harmonic one-phonon terms at fixed Q. The coherent
term S^{(1)}_coh(Q,E) is the crystal amplitude sum: atom contributions
b_coh (Q·e) e^{iQ·r} (with b_coh the atom's coherent scattering length
and r its position in the cell) are summed over the cell and only then
squared, so interference between sites is exact; IRMA also records the
diagonal (self) and interference pieces separately. This is Squires' (UV) term (§3.7), his label for the coherent
one-phonon contribution. The incoherent term S^{(1)}_inc(Q,E) is the exact per-atom
self term, Squires' (UV0) label (§3.9) for the incoherent one-phonon
contribution, weighted by σ_inc. The
incoherent-approximation term S^{(1)}_approx(Q,E) is the same self kernel
scaled with the total cross section σ_tot instead of σ_inc; it is the
practical n = 1 partner of the multiphonon background.
The mode definitions follow from which of these are combined:
inelastic_mode |
One-phonon term | Multiphonon |
|---|---|---|
| 0 | (legacy cubic, scalar DOS, isotropic Debye-Waller) | classic LEAPR expansion |
| 1 | incoherent-approximation self term (σ_tot) |
incoherent-approximation |
| 2 | exact coherent + incoherent (σ_coh + σ_inc) |
incoherent-approximation |
Each one-phonon line carries a Bose occupation factor (the thermal phonon
population at temperature T) and both an emission branch (energy loss,
phonon creation) and an absorption branch (energy gain, phonon annihilation);
the engine deposits both, so detailed balance is built in before the
conversion to S(α,β).
Powder averaging over directions
A polycrystalline sample averages over all crystal orientations, so the
fixed-Q terms must be powder-averaged over the sphere. IRMA samples
directions with a golden-spiral (Fibonacci) quadrature, a set of points that
covers the sphere with equal solid angle per point, one radius per Q bin.
This is the rigorous continuous-direction spherical average, equivalent to
Euphonic's golden powder method. The direction count is Card 6g ndir
(production default 10000, the validation-campaign sampling). The coherent
one-phonon term is validated against Euphonic, coherent component against
coherent component: the integrals, compared in the symmetric convention,
agree to ratios of 1.00001 (graphite), 1.0002 (beryllium), and 0.9998
(BeO).
Multiphonon via self-convolution on a work grid
Exact coherent multiphonon scattering is not attempted. Instead a smooth
higher-order background is built in the incoherent approximation, in the
style of Squires §3.10: a per-atom self kernel is normalized to the
directional mean-square displacement, and higher orders are generated by the
harmonic recursion T_n = (T_1 * T_{n−1}) / n (self-convolution), with
Debye-Waller and cross-section factors applied after the convolution. The
orders are weighted by a bounded Poisson factor in 2W = Q²a, where a is
the directional mean-square displacement, rather than by the overflow-prone
(Q²)^n/n! split.
Self-convolution needs a uniform signed-energy work grid. A uniform output
grid is used directly. A non-uniform (for example log-tailed) output grid
would blow the work grid up to billions of bins on its finest spacing, so the
engine switches to the output grid's median spacing and rebins the smooth
result back in an integral-conserving way. The multiphonon direction count is
Card 6g mpdir (converges by ~50–100; 1000 recommended, cost linear).
Transfers beyond the tabulated grid are covered downstream by THERMR's
short-collision-time extension.
Directional anisotropic Debye-Waller: why isotropic fails
For each atom the thermal-displacement tensor U_d enters S(α,β) through
the Debye-Waller exponent: along a unit direction \hat u,
the directional mean-square displacement, evaluated per powder direction
before averaging, not the orientation-averaged scalar \mathrm{Tr}(U_d)/3.
This distinction is the whole point of the noncubic modes.
Replacing the tensor with its trace-averaged
scalar applies one suppression to every direction, and for a strongly
anisotropic crystal the exact directional factor and the isotropic one
diverge at high Q. In graphite (W_c/W_ab ≈ 6.6, the ratio of
out-of-plane to in-plane Debye-Waller exponents) the isotropically averaged
one-phonon S is suppressed by a factor of about 2 at Q = 20 1/Å and about
4×10⁶ at Q = 50 1/Å relative to IRMA's exact directional powder average,
for the constant-energy cut at E ≈ 2 meV (the figure below). This is not a
numerical artifact: IRMA's own inelastic_mode = 0 (isotropic Debye-Waller)
reproduces the isotropic roll-off; the Debye-Waller treatment is the only
difference between the two runs. Use
inelastic_mode = 2 for anisotropic crystals.

References
- LEAPR / classic kernels: R. E. MacFarlane, D. W. Muir, R. M. Boicourt, A. C. Kahler III, "The NJOY Nuclear Data Processing System, Version 2016", LA-UR-17-20093 (2016). See the LEAPR chapter for the phonon-expansion, translational, oscillator, cold-hydrogen, and Sköld formalism IRMA ports.
- Bragg-edge / coherent-elastic format: ENDF-102, Data Formats and Procedures for the Evaluated Nuclear Data Files, §7.2.2 (thermal coherent elastic, edge grouping).
- Generalized elastic algorithm: T. Kittelmann et al., Comput. Phys. Commun. 267 (2021) 108082; K. Ramic et al., NIM-A 1027 (2022) 166227.
- Phonopy: A. Togo, "First-principles Phonon Calculations with Phonopy and Phono3py", J. Phys. Soc. Jpn. 92 (2023) 012001.
- One-phonon scattering theory: G. L. Squires, Introduction to the Theory of Thermal Neutron Scattering (§3.7, §3.9, §3.10).