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