pub struct ThermalVibration { /* private fields */ }Expand description
Debye-model vibration of one atomic species at one temperature.
Implementations§
Source§impl ThermalVibration
impl ThermalVibration
Sourcepub fn new(
theta_d_k: f64,
mass_amu: f64,
temperature_k: f64,
) -> Result<Self, DebyeError>
pub fn new( theta_d_k: f64, mass_amu: f64, temperature_k: f64, ) -> Result<Self, DebyeError>
Build the model for Debye temperature theta_d_k (K), atomic mass
mass_amu (g/mol, numerically the mass in unified atomic mass units)
and target temperature temperature_k (K, may be 0).
Sourcepub fn debye_temperature(&self) -> f64
pub fn debye_temperature(&self) -> f64
Debye temperature in kelvin.
Sourcepub fn temperature(&self) -> f64
pub fn temperature(&self) -> f64
Target temperature in kelvin.
Sourcepub fn mean_square_1d(&self) -> f64
pub fn mean_square_1d(&self) -> f64
Mean-square displacement along one Cartesian axis, u1^2, in m^2.
Sourcepub fn zero_point_mean_square_1d(&self) -> f64
pub fn zero_point_mean_square_1d(&self) -> f64
Zero-point mean-square displacement 3 hbar^2 / (4 m k_B Theta_D)
(the T -> 0 limit of Self::mean_square_1d), in m^2.
Sourcepub fn classical_mean_square_1d(&self) -> f64
pub fn classical_mean_square_1d(&self) -> f64
Classical (equipartition) mean-square displacement
3 hbar^2 T / (m k_B Theta_D^2) (the T >> Theta_D limit), in m^2.
Sourcepub fn sample_displacement(&self, rng: &mut ParticleRng) -> [f64; 3]
pub fn sample_displacement(&self, rng: &mut ParticleRng) -> [f64; 3]
Draw an independent displacement of one atom from its lattice site:
three Cartesian components, each Gaussian with standard deviation
Self::rms_1d, in metres. Consumes exactly six u64 words from
rng.
Sourcepub fn thermal_only_mean_square_1d(&self) -> f64
pub fn thermal_only_mean_square_1d(&self) -> f64
Thermal part of Self::mean_square_1d alone, without the zero-point
term: u1^2 - 3 hbar^2 / (4 m k_B Theta_D), in m^2 (0 at T = 0).
Not a physical amplitude (zero-point motion is always present); it
exists so that a test can switch the zero-point term off.
Trait Implementations§
Source§impl Clone for ThermalVibration
impl Clone for ThermalVibration
Source§fn clone(&self) -> ThermalVibration
fn clone(&self) -> ThermalVibration
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ThermalVibration
Source§impl Debug for ThermalVibration
impl Debug for ThermalVibration
Source§impl PartialEq for ThermalVibration
impl PartialEq for ThermalVibration
impl StructuralPartialEq for ThermalVibration
Auto Trait Implementations§
impl Freeze for ThermalVibration
impl RefUnwindSafe for ThermalVibration
impl Send for ThermalVibration
impl Sync for ThermalVibration
impl Unpin for ThermalVibration
impl UnsafeUnpin for ThermalVibration
impl UnwindSafe for ThermalVibration
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