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.
§Changes to FISPACT-II structure
-
All masses are converted to grams in the background such that Nuclide and Interval mass values are consistent.
-
Sample dose rate for intervals are converted into a more concise structure. See Dose and DoseKind for details.
-
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
impl Interval
pub fn nuclide_names(&self) -> Vec<String>
pub fn nuclide_names(&self) -> Vec<String>
List of names for all nuclides in the interval
pub fn element_names(&self) -> Vec<String>
pub fn element_names(&self) -> Vec<String>
List of names for all unique elements in the interval
pub fn stable_nuclides(&self) -> Vec<&Nuclide>
pub fn stable_nuclides(&self) -> Vec<&Nuclide>
Collection of only the stable nuclides
pub fn unstable_nuclides(&self) -> Vec<&Nuclide>
pub fn unstable_nuclides(&self) -> Vec<&Nuclide>
Collection of only the unstable nuclides
pub fn find_nuclide(&self, target: &str) -> Option<&Nuclide>
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)
pub fn sort_ascending(&mut self, property: SortProperty)
Sort nuclides in ascending order by property
pub fn sort_descending(&mut self, property: SortProperty)
pub fn sort_descending(&mut self, property: SortProperty)
Sort nuclides in decending order by property
pub fn filter<P>(&self, predicate: P) -> Vec<&Nuclide>
pub fn filter<P>(&self, predicate: P) -> Vec<&Nuclide>
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)
pub fn apply_normalisation(&mut self, norm: f64)
Apply a flux normalisation factor to the appropriate fields
Trait Implementations§
§impl<'de> Deserialize<'de> for Interval
impl<'de> Deserialize<'de> for Interval
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Interval, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Interval, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl Serialize for Interval
impl Serialize for Interval
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for Interval
impl RefUnwindSafe for Interval
impl Send for Interval
impl Sync for Interval
impl Unpin for Interval
impl UnwindSafe for Interval
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.