Expand description
Single-Level Breit-Wigner (SLBW) cross-section calculation.
SLBW is the simplest resonance formalism. It treats each resonance independently (no interference between resonances). It is useful as:
- A validation check against the more complex Reich-Moore calculation
- A quick approximation for isolated resonances
- An educational/debugging tool
For isolated, well-separated resonances, SLBW and Reich-Moore should give nearly identical results.
This module also provides true MLBW (Multi-Level Breit-Wigner) via
mlbw_evaluate_with_cached_jgroups, which includes resonance-resonance
interference in the elastic channel (see SAMMY mlb/mmlb3.f90).
MLBW is dispatched through the reich_moore crate’s unified
precompute+evaluate pipeline (public entry points
cross_sections_at_energy and cross_sections_on_grid) like every
other formalism.
§SAMMY Reference
mlb/mmlb3.f90Elastc_Mlb subroutine (line 56, SLBW branch) — the elastic cross-section formula this module mirrors.mlb/mmlb4.f90Abpart_Mlb subroutine — populates the Aaaone/Aaatwo/Aaathr accumulators consumed by Elastc_Mlb.xxx/mxxx9.f90lines 68-71 (Cs2sn2) — confirms SAMMY’sCs/Siarrays holdcos(2φ)/sin(2φ), notcos(φ)/sin(φ).- SAMMY manual Section II.B.3 (Breit-Wigner approximations).
§Formulas
For each resonance at energy E_r with total J, write Δ = E − E_r and D = Δ² + (Γ_tot/2)². Then:
σ_capture(E) = g_J · π/k² · Γ_n(E)·Γ_γ / D
σ_elastic(E) = g_J · π/k² · [ 4·sin²φ (potential) + Γ_n(E)² / D (resonance peak) + 2·Γ_n(E)·Δ·sin(2φ) / D (interference, Δ part) − 2·Γ_n(E)·Γ_tot·sin²φ / D (interference, Γ part) ]
where Γ_n(E) = Γ_n(E_r) × P_l(E)/P_l(E_r) per ENDF-6 §D.1.1 eq D.7 (ENDF-102 Formats Manual, IAEA public PDF page 357), and Γ_tot = Γ_n(E) + Γ_γ + Γ_f.
The penetrability ratio already carries the full energy dependence of the neutron width. For s-wave (l=0), P_0(ρ) = ρ ∝ √E, so the ratio P_0(E)/P_0(E_r) = √(E/E_r) supplies the entire √E low-energy scaling; multiplying by a separate √(E/E_r) factor double-counts the wave-number dependence and yields Γ_n ∝ E rather than the physically correct Γ_n ∝ √E (1/v capture). The reference implementations all use the penetrability-ratio-only form:
- NJOY/RECONR
src/reconr.f90csslbw/csmlbw/csmlbw2:gne = gn*pe*rper(withrper = 1/per). - SAMMY
mlb/mmlb4.f90Abpart_Mlb(lines 88-100) accumulatesΓ_n(E) = 2·P_l(E)·γ_n²from reduced amplitudesγ_nobtained viaγ_n² = GN/(2·P_l(E_r))(SAMMYnew/mnew3.f90:307-339Betset), which is algebraically identical to ENDF D.7 after substitution.
The sign of the Γ_tot·sin²φ interference term is negative. This is
equivalent to SAMMY’s (1 − cos2φ)·A + sin2φ·B + Aaathr·D form at
mmlb3.f90:56 after substituting A = 2 − Γ_n·Γ_tot/Den, and to
σ_el = g_J · π/k² · |1 − U_nn|² with
U_nn = e^{−2iφ} · [1 + iΓ_n / (E_r − E − iΓ_tot/2)].
Issue #549: prior to this commit the term had the wrong sign (+ instead
of −). The bias was numerically invisible in the existing samtry
validation suite because all SLBW test cases are at ρ ≪ 1 where
sin²φ ≈ ρ². The high-ρ regression test lives at
crates/nereids-physics/tests/slbw_elastic_oracle.rs.
Functions§
- slbw_
cross_ sections - Compute SLBW cross-sections at a single energy.
- slbw_
cross_ sections_ for_ range - Compute SLBW cross-sections for a single resolved resonance range.