pub struct DynamicSpec {
pub fluence_cm2: f64,
pub ions_per_step: u64,
pub max_change: Option<f64>,
pub min_ions_per_step: u64,
pub slab_nm: Option<f64>,
pub relaxation: RelaxationChoice,
pub number_density_cm3: Option<f64>,
pub atomic_volume_nm3: BTreeMap<String, f64>,
pub energies: BTreeMap<String, EnergyOverride>,
pub erosion: bool,
pub retention_limit: BTreeMap<String, f64>,
}Expand description
[dynamic]: a fluence-dependent target. The run’s ions are delivered in
steps; after each step the target composition is updated from the
transport events (module docs of crate::ion::dynamic).
Fields§
§fluence_cm2: f64Total fluence of the whole run, ions/cm². The run.ions histories
represent it, each standing for fluence_cm2 / ions ions/cm².
ions_per_step: u64Ions per step; with max_change set, the largest (and first) step.
max_change: Option<f64>Adaptive steps: the largest relative composition change per step (see
crate::ion::dynamic::DynamicRun). Absent: fixed steps.
min_ions_per_step: u64Adaptive steps: the smallest step. Default 1.
slab_nm: Option<f64>Split every finite layer into slabs at most this thick, nm. Default (absent): each layer is one slab.
relaxation: RelaxationChoiceVolume relaxation convention. Default "ideal-mixing".
number_density_cm3: Option<f64>Total atom number density, atoms/cm³ ("fixed-number-density" only).
atomic_volume_nm3: BTreeMap<String, f64>Atomic volume per element symbol, nm³/atom ("ideal-mixing" only);
overrides the elemental solid volume. Required for an element with no
tabulated solid density (a gas, for example).
energies: BTreeMap<String, EnergyOverride>Energies for elements that only enter the target during the run (the
beam species, for example); an element already in a layer keeps the
energies of that layer. Falls back to [physics.energies], then to
the element defaults.
erosion: boolSputter erosion and surface recession: sputtered atoms are removed from
the front of the target and the surface follows (see
crate::ion::dynamic::DynamicRun, “Erosion”). Default false, which
keeps the surface fixed at x = 0.
retention_limit: BTreeMap<String, f64>Retention limit per element symbol: the largest atomic fraction of that
element a slab may hold, in (0, 1); the excess is re-emitted (see
crate::ion::dynamic::DynamicRun, “Retention limit”). There is no
default value; absent or empty: no limit.
Trait Implementations§
Source§impl Clone for DynamicSpec
impl Clone for DynamicSpec
Source§fn clone(&self) -> DynamicSpec
fn clone(&self) -> DynamicSpec
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DynamicSpec
impl Debug for DynamicSpec
Source§impl<'de> Deserialize<'de> for DynamicSpec
impl<'de> Deserialize<'de> for DynamicSpec
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 PartialEq for DynamicSpec
impl PartialEq for DynamicSpec
Source§impl Serialize for DynamicSpec
impl Serialize for DynamicSpec
impl StructuralPartialEq for DynamicSpec
Auto Trait Implementations§
impl Freeze for DynamicSpec
impl RefUnwindSafe for DynamicSpec
impl Send for DynamicSpec
impl Sync for DynamicSpec
impl Unpin for DynamicSpec
impl UnsafeUnpin for DynamicSpec
impl UnwindSafe for DynamicSpec
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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