pub struct ResonanceRange {
pub energy_low: f64,
pub energy_high: f64,
pub resolved: bool,
pub formalism: ResonanceFormalism,
pub target_spin: f64,
pub scattering_radius: f64,
pub naps: i32,
pub ap_table: Option<Tab1>,
pub l_groups: Vec<LGroup>,
pub r_external: Vec<RExternalEntry>,
}Expand description
A single energy range within the resolved resonance region.
Fields§
§energy_low: f64Lower energy bound (eV).
energy_high: f64Upper energy bound (eV).
resolved: boolResolved (true) or unresolved (false).
formalism: ResonanceFormalismResonance formalism used in this range.
target_spin: f64Target spin (I).
scattering_radius: f64Scattering radius (fm).
Constant value from the ENDF CONT header AP field.
When ap_table is Some, use scattering_radius_at(energy_ev) instead
of reading this field directly — the table provides the energy-dependent
value, clamping to the nearest endpoint for energies outside the table
range. This constant is only used when ap_table is None (NRO=0).
naps: i32NAPS flag: scattering radius calculation control.
NAPS=0: use the channel radius for penetrability/shift calculations. NAPS=1: use the scattering radius (AP or AP(E)) for penetrability/shift. Reference: ENDF-6 Formats Manual §2.2.1
ap_table: Option<Tab1>Energy-dependent scattering radius AP(E) (fm), present when NRO=1.
ENDF-6 §2.2.1: when NRO≠0 a TAB1 record immediately follows the range
CONT header to give AP(E) as a piecewise function. At each energy the
table value replaces the constant scattering_radius in penetrability,
shift, and hard-sphere phase calculations.
None when the range has NRO=0 (constant AP).
Reference: ENDF-6 Formats Manual §2.2.1; SAMMY mlb/mmlb1.f90
l_groups: Vec<LGroup>Spin groups for LRF=1/2/3 (L-grouped). Empty for LRF=7 and LRU=2 (both parsed-and-skipped, non-evaluable).
r_external: Vec<RExternalEntry>R-external (background R-matrix) entries per spin group.
Diagonal, real-valued corrections to the R-matrix that approximate the effect of distant (unresolved) resonances. Keyed by (L, J).
Populated from SAMMY’s “R-EXTERNAL PARAMETERS FOLLOW” section. Empty for ENDF-only data or SAMMY cases without R-external.
SAMMY Ref: Manual Section II.B.1.d, mpar03.f90 Readrx
Implementations§
Source§impl ResonanceRange
impl ResonanceRange
Sourcepub fn scattering_radius_at(&self, energy_ev: f64) -> f64
pub fn scattering_radius_at(&self, energy_ev: f64) -> f64
Scattering radius at a given neutron energy.
Returns the interpolated value from ap_table when NRO=1 (energy-dependent
radius), or the constant scattering_radius when NRO=0.
Use this method in all physics calculations that need the channel radius,
rather than reading scattering_radius directly.
§Arguments
energy_ev— Lab-frame neutron energy in eV.
Sourcepub fn resonance_count(&self) -> usize
pub fn resonance_count(&self) -> usize
Total discrete-resonance count for this range.
Counts the L-grouped resonances of an evaluable LRF=1/2/3 range. LRF=7
(and LRU=2) ranges are parsed-and-skipped with empty l_groups, so they
contribute 0 — NEREIDS does not evaluate them.
Sourcepub fn is_evaluable(&self) -> bool
pub fn is_evaluable(&self) -> bool
Can this range actually produce non-zero cross-sections?
Evaluable means a resolved (LRU=1) range using one of the implemented
formalisms — SLBW (LRF=1), MLBW (LRF=2), or Reich-Moore (LRF=3) — with
at least one resonance-bearing L-group. A resolved range whose L-groups
are all empty evaluates to exactly zero in NEREIDS — an implementation
property, not a physics statement: NEREIDS derives its J-groups (and
with them the hard-sphere potential-scattering term) from the resonance
list, whereas SAMMY builds channels from the quantum numbers before
reading resonances and retains hard-sphere scattering for a
resonance-free group. Resonance-free channels are a declared NEREIDS
limitation; classifying the all-empty range non-evaluable keeps that
zero from being reported as physics. LRF=7 (R-Matrix Limited), LRU=2
(unresolved), and LRU=0 (scattering-radius-only) ranges are
parse-and-skip placeholders — consumed for cursor alignment, never
evaluated — so they return false and contribute zero cross-section
over their energy span.
Sourcepub fn skip_description(&self) -> String
pub fn skip_description(&self) -> String
One-line diagnostic for a parse-and-skip placeholder range, e.g.
"LRF=7 (R-Matrix Limited) over [1.000000e-5, 1.000000e3] eV".
Shared by the parser’s no-evaluable-content error, the Python-binding
UserWarning, and the GUI load log so all three surfaces describe a
skipped range identically. Only meaningful for ranges where
Self::is_evaluable is false: the resolved-formalism arms label
the accepted-but-inert no-resonance shape (callers never pass an
evaluable range).
Trait Implementations§
Source§impl Clone for ResonanceRange
impl Clone for ResonanceRange
Source§fn clone(&self) -> ResonanceRange
fn clone(&self) -> ResonanceRange
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more