pub struct LennardJonesGauss {
pub epsilon: f64,
pub sigma_squared: f64,
pub r_0: f64,
pub scale: f64,
}Expand description
Double-well potential with a steep repulsive core
U(r) = 1[\mathrm{energy}]\cdot\left[ \left(\frac{\ell}{r}\right)^{12} - 2\left(\frac{\ell}{r}\right)^{6}\right] - \varepsilon \exp \left(-\frac{(r/\ell-r_0)^2}{2\sigma^2}\right)Compute the Lennard-Jones-Gauss (LJG) potential and force as a function of r.
§Examples
use approxim::{assert_abs_diff_eq, assert_relative_eq};
use hoomd_interaction::univariate::{
LennardJonesGauss, UnivariateEnergy, UnivariateForce,
};
let epsilon = 0.5;
let sigma_squared = 0.5;
let r_0 = 0.5_f64.powf(1.0 / 6.0);
let scale = 1.0_f64;
let lennard_jones_gauss: LennardJonesGauss = LennardJonesGauss {
epsilon,
sigma_squared,
r_0,
scale,
};
assert_relative_eq!(
lennard_jones_gauss.energy(0.5_f64.powf(1.0 / 6.0)),
-epsilon,
epsilon = 1e-12
);The parameters are public fields and may be accessed directly:
use hoomd_interaction::univariate::LennardJonesGauss;
let mut lennard_jones_gauss: LennardJonesGauss = LennardJonesGauss {
epsilon: 1.5,
sigma_squared: 0.02,
r_0: 3.2,
scale: 1.0,
};
lennard_jones_gauss.epsilon = 1.5;
lennard_jones_gauss.sigma_squared = 0.02;
lennard_jones_gauss.r_0 = 3.2;Fields§
§epsilon: f64Scale of Gaussian, in units of energy
sigma_squared: f64Width of Gaussian, sigma^2, unitless
r_0: f64Gaussian center, unitless
scale: f64unit of the length scale
Trait Implementations§
Source§impl Clone for LennardJonesGauss
impl Clone for LennardJonesGauss
Source§fn clone(&self) -> LennardJonesGauss
fn clone(&self) -> LennardJonesGauss
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for LennardJonesGauss
impl Debug for LennardJonesGauss
Source§impl<'de> Deserialize<'de> for LennardJonesGauss
impl<'de> Deserialize<'de> for LennardJonesGauss
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 PartialEq for LennardJonesGauss
impl PartialEq for LennardJonesGauss
Source§impl Serialize for LennardJonesGauss
impl Serialize for LennardJonesGauss
Source§impl UnivariateEnergy for LennardJonesGauss
impl UnivariateEnergy for LennardJonesGauss
Source§impl UnivariateForce for LennardJonesGauss
impl UnivariateForce for LennardJonesGauss
impl StructuralPartialEq for LennardJonesGauss
Auto Trait Implementations§
impl Freeze for LennardJonesGauss
impl RefUnwindSafe for LennardJonesGauss
impl Send for LennardJonesGauss
impl Sync for LennardJonesGauss
impl Unpin for LennardJonesGauss
impl UnwindSafe for LennardJonesGauss
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