pub struct Isotropic<E> {
pub interaction: E,
pub r_cut: f64,
}Expand description
Compute isotropic interactions between a pair of sites.
Isotropic provides a single implementation that computes pairwise
interactions that are a function only of the distance between sites. It
fills the gap between traits like SitePairEnergy which operates on
site properties and UnivariateEnergy which is a function only of the
separation distance.
Use Isotropic with PairwiseCutoff in MD and MC simulations.
§Example
use hoomd_interaction::{
SitePairEnergy, pairwise::Isotropic, univariate::LennardJones,
};
use hoomd_microstate::property::Point;
use hoomd_vector::Cartesian;
let a = Point {
position: Cartesian::from([0.0, 0.0]),
};
let b = Point {
position: Cartesian::from([0.0, 2.0 * 2.0_f64.powf(1.0 / 6.0)]),
};
let lennard_jones: LennardJones = LennardJones {
epsilon: 1.5,
sigma: 2.0,
};
let lennard_jones = Isotropic {
interaction: lennard_jones,
r_cut: 2.5,
};
let energy = lennard_jones.site_pair_energy(&a, &b);
assert_eq!(energy, -1.5);Fields§
§interaction: EThe site-site interaction.
r_cut: f64Maximum distance between two interacting sites.
Trait Implementations§
Source§impl<'de, E> Deserialize<'de> for Isotropic<E>where
E: Deserialize<'de>,
impl<'de, E> Deserialize<'de> for Isotropic<E>where
E: Deserialize<'de>,
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<E> MaximumInteractionRange for Isotropic<E>
impl<E> MaximumInteractionRange for Isotropic<E>
Source§fn maximum_interaction_range(&self) -> f64
fn maximum_interaction_range(&self) -> f64
The largest distance between two sites where the pairwise interaction may be non-zero.
Source§impl<P, S, E> SitePairEnergy<S> for Isotropic<E>
impl<P, S, E> SitePairEnergy<S> for Isotropic<E>
Source§fn site_pair_energy(&self, site_properties_i: &S, site_properties_j: &S) -> f64
fn site_pair_energy(&self, site_properties_i: &S, site_properties_j: &S) -> f64
Evaluate the energy contribution from a pair of sites.
Source§fn site_pair_energy_initial(
&self,
site_properties_i: &S,
site_properties_j: &S,
) -> f64
fn site_pair_energy_initial( &self, site_properties_i: &S, site_properties_j: &S, ) -> f64
Evaluate the energy contribution from a pair of sites in the initial state. Read more
Source§fn is_only_infinite_or_zero() -> bool
fn is_only_infinite_or_zero() -> bool
Does this potential only ever return infinity or zero? Read more
impl<E> StructuralPartialEq for Isotropic<E>
Auto Trait Implementations§
impl<E> Freeze for Isotropic<E>where
E: Freeze,
impl<E> RefUnwindSafe for Isotropic<E>where
E: RefUnwindSafe,
impl<E> Send for Isotropic<E>where
E: Send,
impl<E> Sync for Isotropic<E>where
E: Sync,
impl<E> Unpin for Isotropic<E>where
E: Unpin,
impl<E> UnsafeUnpin for Isotropic<E>where
E: UnsafeUnpin,
impl<E> UnwindSafe for Isotropic<E>where
E: UnwindSafe,
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