pub struct ResonanceData {
pub isotope: Isotope,
pub za: u32,
pub awr: f64,
pub ranges: Vec<ResonanceRange>,
}Expand description
Top-level container for all resonance data parsed from an ENDF file.
Fields§
§isotope: IsotopeThe isotope this data belongs to.
za: u32ZA identifier (Z*1000 + A).
awr: f64Atomic weight ratio (mass of target / neutron mass).
ranges: Vec<ResonanceRange>Energy ranges containing resonance parameters.
Implementations§
Source§impl ResonanceData
impl ResonanceData
Sourcepub fn total_resonance_count(&self) -> usize
pub fn total_resonance_count(&self) -> usize
Total number of resonances across all ranges and groups.
Counts the L-grouped resonances of evaluable LRF=1/2/3 ranges. LRF=7
(and LRU=2) ranges are parsed-and-skipped with empty l_groups, so
they contribute 0 — NEREIDS does not evaluate them.
A low count for a given evaluation reflects that evaluation’s
resolved-resonance-region (RRR) extent, not a dropped energy range.
The parser reads every NER range and errors on unconsumed MF2/MT151 data,
so ranges are never silently discarded. For example, Ta-181 in
ENDF/B-VIII.0 returns 76 (RRR only to 330 eV, plus an unresolved URR that
contributes 0 discrete resonances), whereas ENDF/B-VIII.1 extended the RRR
to 2554 eV and returns 565. See test_parse_ta181_endf8_0_resonance_count
in parser.rs, which pins the VIII.0 count as a regression guard.
Sourcepub fn unevaluated_ranges(&self) -> Vec<&ResonanceRange>
pub fn unevaluated_ranges(&self) -> Vec<&ResonanceRange>
Ranges that are parsed but NOT evaluated (non-evaluable placeholders).
These are the LRF=7 (R-Matrix Limited), LRU=2 (unresolved), and LRU=0 (scattering-radius-only) ranges: the parser consumes their records for cursor alignment and discards any resonance parameters they carry in the file (LRF=7 and LRU=2 tapes do carry them; LRU=0 has none), so the stored placeholder holds none and contributes exactly zero to every cross-section. Any physics computed over their energy span reflects only the other ranges of the evaluation. Callers that surface data to users should warn when this list is non-empty.
Sourcepub fn has_unevaluated_ranges(&self) -> bool
pub fn has_unevaluated_ranges(&self) -> bool
Whether any range is a non-evaluable parse-and-skip placeholder.
Sourcepub fn has_evaluable_range(&self) -> bool
pub fn has_evaluable_range(&self) -> bool
Whether at least one range can actually produce non-zero cross-sections.
false means every range is a parse-and-skip placeholder (or there are
no ranges at all): the evaluation would return zero cross-section over
its full grid (transmission ≡ 1). This is the load-time acceptance
predicate — the parser rejects such an evaluation, and the project
loader drops it from the ENDF cache so a stale removed-physics payload
cannot silently restore as a zero-cross-section isotope.
Trait Implementations§
Source§impl Clone for ResonanceData
impl Clone for ResonanceData
Source§fn clone(&self) -> ResonanceData
fn clone(&self) -> ResonanceData
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ResonanceData
impl Debug for ResonanceData
Source§impl<'de> Deserialize<'de> for ResonanceData
impl<'de> Deserialize<'de> for ResonanceData
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for ResonanceData
impl Display for ResonanceData
Auto Trait Implementations§
impl Freeze for ResonanceData
impl RefUnwindSafe for ResonanceData
impl Send for ResonanceData
impl Sync for ResonanceData
impl Unpin for ResonanceData
impl UnsafeUnpin for ResonanceData
impl UnwindSafe for ResonanceData
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.