pub struct SumRuleReport {
pub material: String,
pub provenance: String,
pub energy_range_ev: (f64, f64),
pub f_sum_ev2: f64,
pub plasma_energy_ev: f64,
pub electron_density_per_m3: f64,
pub p_eff: f64,
pub mean_excitation_energy_ev: f64,
pub target_density_per_m3: Option<f64>,
pub energy_ev: Vec<f64>,
pub cumulative_electron_density_per_m3: Vec<f64>,
/* private fields */
}Expand description
The sum rules of one OpticalElf. See the module docs for the
definitions. Built by SumRuleReport::new; printed by its Display
implementation.
Fields§
§material: StringMaterial identity of the ELF.
provenance: StringProvenance of the ELF.
energy_range_ev: (f64, f64)The integration range, the tabulated range of the ELF, eV.
f_sum_ev2: f64∫ W ELF(W) dW over the table, eV².
plasma_energy_ev: f64The plasma energy of all the electrons the ELF accounts for,
ħΩ_p = sqrt((2/π) ∫ W ELF dW), eV.
electron_density_per_m3: f64The effective electron density n_eff of the whole table, m⁻³.
p_eff: f64P_eff = (2/π) ∫ ELF(W)/W dW over the table (no n(0)⁻² term).
mean_excitation_energy_ev: f64Mean excitation energy I, eV: ln I = ∫ W ELF ln W dW / ∫ W ELF dW.
NaN if the f-sum is zero.
target_density_per_m3: Option<f64>The target-unit (atom or molecule) density used for N_eff, m⁻³, if
one was given.
energy_ev: Vec<f64>The tabulated energies W_k, eV.
cumulative_electron_density_per_m3: Vec<f64>n_eff(W_k), the cumulative effective electron density up to each
tabulated energy, m⁻³.
Implementations§
Source§impl SumRuleReport
impl SumRuleReport
Sourcepub fn new(elf: &OpticalElf) -> Self
pub fn new(elf: &OpticalElf) -> Self
The sum rules of elf, without a target density (N_eff is then not
available, n_eff is).
Sourcepub fn with_target_density(
elf: &OpticalElf,
target_density_per_m3: f64,
) -> Result<Self, ElectronDataError>
pub fn with_target_density( elf: &OpticalElf, target_density_per_m3: f64, ) -> Result<Self, ElectronDataError>
The sum rules of elf with the density of target units (atoms or
molecules, m⁻³), so that N_eff per unit is available. The density
must be finite and positive.
Sourcepub fn electron_density_up_to(&self, w_ev: f64) -> f64
pub fn electron_density_up_to(&self, w_ev: f64) -> f64
n_eff(W), m⁻³: the effective electron density for losses up to W
(eV), exact for the interpolant. Zero below the table and the whole
table’s value above it.
Sourcepub fn effective_electrons_up_to(&self, w_ev: f64) -> Option<f64>
pub fn effective_electrons_up_to(&self, w_ev: f64) -> Option<f64>
N_eff(W): effective electrons per target unit for losses up to W
(eV), if a target density was given.
Sourcepub fn effective_electrons(&self) -> Option<f64>
pub fn effective_electrons(&self) -> Option<f64>
N_eff of the whole table, if a target density was given.
Trait Implementations§
Source§impl Clone for SumRuleReport
impl Clone for SumRuleReport
Source§fn clone(&self) -> SumRuleReport
fn clone(&self) -> SumRuleReport
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 SumRuleReport
impl Debug for SumRuleReport
Source§impl Display for SumRuleReport
impl Display for SumRuleReport
Source§impl PartialEq for SumRuleReport
impl PartialEq for SumRuleReport
impl StructuralPartialEq for SumRuleReport
Auto Trait Implementations§
impl Freeze for SumRuleReport
impl RefUnwindSafe for SumRuleReport
impl Send for SumRuleReport
impl Sync for SumRuleReport
impl Unpin for SumRuleReport
impl UnsafeUnpin for SumRuleReport
impl UnwindSafe for SumRuleReport
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,
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