pub struct Bussi { /* private fields */ }Expand description
Stochastic momentum rescaling.
The time constant $\tau$ sets how long the kinetic energy of the system
takes to decay to equilibrium.
When $\tau$ is 0, the rescaling factor $\alpha$ is:
\alpha = \sqrt{\frac{g kT}{K}}where $K$ is the instantaneous kinetic energy of the corresponding
translational or rotational degrees of freedom, $N$ is the number of
degrees of freedom, and $g$ is a random value sampled from the gamma
distribution $\Gamma(N, 1)$ with the probability density function:
f_N(g) = \frac{1}{\Gamma{(N)}} g^{N-1} e^{-g}When $\tau$ is non-zero, $\alpha$ is given by:
\alpha = \sqrt{e^{-\delta t / \tau}
+ (1 - e^{-\delta t / \tau}) \frac{(2 g + n^2) kT}{2 K}
+ 2 n \sqrt{e^{-\delta t / \tau} (1-e^{-\delta t / \tau})
\frac{kT}{2 K}}}where $\delta t$ is the integration time step size and $n$ is a random
value sampled from the standard normal distribution $\mathcal{N}(0, 1)$.
§Reference
§Example
use hoomd_md::thermostat::Bussi;
let bussi = Bussi::new(0.5);Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Bussi
impl<'de> Deserialize<'de> for Bussi
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<M> Thermostat<M> for Bussiwhere
M: Temperature,
impl<M> Thermostat<M> for Bussiwhere
M: Temperature,
impl StructuralPartialEq for Bussi
Auto Trait Implementations§
impl Freeze for Bussi
impl RefUnwindSafe for Bussi
impl Send for Bussi
impl Sync for Bussi
impl Unpin for Bussi
impl UnsafeUnpin for Bussi
impl UnwindSafe for Bussi
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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