Skip to main content

ResonanceRange

Struct ResonanceRange 

Source
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: f64

Lower energy bound (eV).

§energy_high: f64

Upper energy bound (eV).

§resolved: bool

Resolved (true) or unresolved (false).

§formalism: ResonanceFormalism

Resonance formalism used in this range.

§target_spin: f64

Target spin (I).

§scattering_radius: f64

Scattering 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: i32

NAPS 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

Source

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.
Source

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.

Source

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.

Source

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

Source§

fn clone(&self) -> ResonanceRange

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ResonanceRange

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for ResonanceRange

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for ResonanceRange

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,