Struct Interval

pub struct Interval {
Show 18 fields pub irradiation_time: f64, pub cooling_time: f64, pub flux: f64, pub atoms: f64, pub activity: f64, pub alpha_activity: f64, pub beta_activity: f64, pub gamma_activity: f64, pub mass: f64, pub heat: f64, pub alpha_heat: f64, pub beta_heat: f64, pub gamma_heat: f64, pub ingestion: f64, pub inhalation: f64, pub dose: Dose, pub spectrum: Spectrum, pub nuclides: Vec<Nuclide>,
}
Expand description

Results of a calculation step

Traditionally this is all data written when the ATOMS keyword is used on a irradiation or cooling step.

Several tweaks are made during deserialisation, so data structures are not an exact 1:1 match for the JSON dictionary.
§Changes to FISPACT-II structure
  1. All masses are converted to grams in the background such that Nuclide and Interval mass values are consistent.

  2. Sample dose rate for intervals are converted into a more concise structure. See Dose and DoseKind for details.

  3. Several of the “totals” are renamed for brevity. e.g. “total_activity” is simply stored as Interval.activity.

Fields§

§irradiation_time: f64

Irradiation time (s)

§cooling_time: f64

Cooling time (s)

§flux: f64

Particle flux (#/cm2/s)

§atoms: f64

Total number of atoms in sample

§activity: f64

Total sample activity (Bq)

§alpha_activity: f64

Total sample alpha activity (Bq)

§beta_activity: f64

Total sample beta activity (Bq)

§gamma_activity: f64

Total sample gamma activity (Bq)

§mass: f64

Total mass of the sample (g)

§heat: f64

Combined total heating (kW)

§alpha_heat: f64

Total heat from alpha emissions (kW)

§beta_heat: f64

Total heat from beta emissions (kW)

§gamma_heat: f64

Total heat from gamma emissions (kW)

§ingestion: f64

Ingestion dose (Sv/kg)

§inhalation: f64

Inhalation dose (Sv/kg)

§dose: Dose

Dose rate information

§spectrum: Spectrum

Gamma spectrum ‘boundaries’ (MeV) and ‘values’ lists

§nuclides: Vec<Nuclide>

Nuclides list

Implementations§

§

impl Interval

pub fn nuclide_names(&self) -> Vec<String>

List of names for all nuclides in the interval

pub fn element_names(&self) -> Vec<String>

List of names for all unique elements in the interval

pub fn stable_nuclides(&self) -> Vec<&Nuclide>

Collection of only the stable nuclides

pub fn unstable_nuclides(&self) -> Vec<&Nuclide>

Collection of only the unstable nuclides

pub fn find_nuclide(&self, target: &str) -> Option<&Nuclide>

Basic search for a nuclide in the interval by name

pub fn sort_ascending(&mut self, property: SortProperty)

Sort nuclides in ascending order by property

pub fn sort_descending(&mut self, property: SortProperty)

Sort nuclides in decending order by property

pub fn filter<P>(&self, predicate: P) -> Vec<&Nuclide>
where P: FnMut(&&Nuclide) -> bool,

Filter nuclides by some predicate

Returns references to the interval nuclides after filtering by the given condition. This can be any function that operates on the nuclide that returns a boolean.

let inventory = read_json("path/to/data.json")?;
let interval  = inventory.intervals[2];

// Filter out any nuclides with activity below 1e8 Bq
let nuclides = intervals[2].filter(|n| n.activity > 1e8);
for nuclide in nuclides {
    println!("{} {}", nuclide.name(), nuclide.activity)
}

pub fn apply_normalisation(&mut self, norm: f64)

Apply a flux normalisation factor to the appropriate fields

Trait Implementations§

§

impl Debug for Interval

§

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

Formats the value using the given formatter. Read more
§

impl<'de> Deserialize<'de> for Interval

§

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

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

impl Serialize for Interval

§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
Source§

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