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>,
pub r_matrix_limited: Option<RmlRange>,
}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.
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
r_matrix_limited: Option<RmlRange>R-Matrix Limited parameters; Some only for a parsed LRF=7 range.
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 levels(&self) -> impl Iterator<Item = (f64, f64)> + '_
pub fn levels(&self) -> impl Iterator<Item = (f64, f64)> + '_
Energy and total width, both in eV, of every level of the range: the L-grouped resonances of LRF=1/2/3 and the spin-group resonances of LRF=7.
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 LRF=1/2/3 range and the spin-group resonances of an LRF=7 range. LRU=2 ranges contribute 0.
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 with either R-Matrix Limited
(LRF=7) parameters in at least one spin group, or an SLBW (LRF=1),
MLBW (LRF=2) or Reich-Moore (LRF=3) formalism with at least one
resonance-bearing L-group and no competitive width (LRX = 0 in every
L-group). A resolved LRF=1/2/3 range whose L-groups are all empty is a
placeholder: it is not evaluated and contributes zero cross-section,
although SAMMY gives its channels hard-sphere scattering. LRU=2
(unresolved) and LRU=0 (scattering-radius-only) ranges are not
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 shapes, no resonances or a competitive width
(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