Struct MiePotential
pub struct MiePotential {
pub radius: f64,
pub strength: f64,
pub bound: f64,
pub cutoff: f64,
pub en: f64,
pub em: f64,
}elli only.Expand description
Generalizeation of the BoundLennardJones potential.
\begin{align} U(r) &= C\epsilon\left[ \left(\frac{\sigma}{r}\right)^n - \left(\frac{\sigma}{r}\right)^m\right]\\ C &= \frac{n}{n-m}\left(\frac{n}{m}\right)^{\frac{n}{n-m}}\\ V(r) &= \min(U(r), \beta)\theta(r-\zeta) \end{align}
This struct comes in a 64bit version MiePotential and a 32bit variant MiePotentialF32.
§References
G. Mie, “Zur kinetischen Theorie der einatomigen Körper,” Annalen der Physik, vol. 316, no. 8. Wiley, pp. 657–697, Jan. 1903. doi: 10.1002/andp.19033160802.
Fields§
§radius: f64Interaction strength $\epsilon$ of the potential.
strength: f64Overall size $\sigma$ of the object of the potential.
bound: f64Numerical bound $\beta$ of the interaction strength.
cutoff: f64Defines a cutoff $\zeta$ after which the potential will be fixed to exactly zero.
en: f64Exponent $n$ of the potential
em: f64Exponent $m$ of the potential
Implementations§
§impl MiePotential
impl MiePotential
pub fn new(
radius: f64,
strength: f64,
bound: f64,
cutoff: f64,
en: f64,
em: f64,
) -> MiePotential
Available on crate feature cpu_os_threads only.
pub fn new( radius: f64, strength: f64, bound: f64, cutoff: f64, en: f64, em: f64, ) -> MiePotential
cpu_os_threads only.Constructs a new MiePotential
use cellular_raza_building_blocks::MiePotential;
let (radius, strength, bound, cutoff, en, em) = (1.0, 1.0, 1.0, 1.0, 1.0, 1.0);
let mie_potential = MiePotential::new(
radius,
strength,
bound,
cutoff,
en,
em,
);Trait Implementations§
§impl AbsDiffEq for MiePotential
impl AbsDiffEq for MiePotential
§fn default_epsilon() -> <MiePotential as AbsDiffEq>::Epsilon
fn default_epsilon() -> <MiePotential as AbsDiffEq>::Epsilon
§fn abs_diff_eq(
&self,
other: &MiePotential,
epsilon: <MiePotential as AbsDiffEq>::Epsilon,
) -> bool
fn abs_diff_eq( &self, other: &MiePotential, epsilon: <MiePotential as AbsDiffEq>::Epsilon, ) -> bool
§fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
fn abs_diff_ne(&self, other: &Rhs, epsilon: Self::Epsilon) -> bool
AbsDiffEq::abs_diff_eq].§impl Clone for MiePotential
impl Clone for MiePotential
§fn clone(&self) -> MiePotential
fn clone(&self) -> MiePotential
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for MiePotential
impl Debug for MiePotential
§impl<'de> Deserialize<'de> for MiePotential
impl<'de> Deserialize<'de> for MiePotential
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<MiePotential, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<MiePotential, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl<const D: usize> Interaction<Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, f64> for MiePotential
impl<const D: usize> Interaction<Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, f64> for MiePotential
§fn calculate_force_between(
&self,
own_pos: &Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>,
_own_vel: &Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>,
ext_pos: &Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>,
_ext_vel: &Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>,
ext_radius: &f64,
) -> Result<(Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>), CalcError>
fn calculate_force_between( &self, own_pos: &Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, _own_vel: &Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, ext_pos: &Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, _ext_vel: &Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, ext_radius: &f64, ) -> Result<(Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>, Matrix<f64, Const<D>, Const<1>, ArrayStorage<f64, D, 1>>), CalcError>
§fn is_neighbor(
&self,
own_pos: &Pos,
ext_pos: &Pos,
ext_inf: &Inf,
) -> Result<bool, CalcError>
fn is_neighbor( &self, own_pos: &Pos, ext_pos: &Pos, ext_inf: &Inf, ) -> Result<bool, CalcError>
§fn react_to_neighbors(&mut self, neighbors: usize) -> Result<(), CalcError>
fn react_to_neighbors(&mut self, neighbors: usize) -> Result<(), CalcError>
§impl InteractionInformation<f64> for MiePotential
impl InteractionInformation<f64> for MiePotential
§fn get_interaction_information(&self) -> f64
fn get_interaction_information(&self) -> f64
§impl IntoPy<Py<PyAny>> for MiePotential
impl IntoPy<Py<PyAny>> for MiePotential
§impl<'py> IntoPyObject<'py> for MiePotential
impl<'py> IntoPyObject<'py> for MiePotential
§type Target = MiePotential
type Target = MiePotential
§type Output = Bound<'py, <MiePotential as IntoPyObject<'py>>::Target>
type Output = Bound<'py, <MiePotential as IntoPyObject<'py>>::Target>
§fn into_pyobject(
self,
py: Python<'py>,
) -> Result<<MiePotential as IntoPyObject<'py>>::Output, <MiePotential as IntoPyObject<'py>>::Error>
fn into_pyobject( self, py: Python<'py>, ) -> Result<<MiePotential as IntoPyObject<'py>>::Output, <MiePotential as IntoPyObject<'py>>::Error>
§impl PartialEq for MiePotential
impl PartialEq for MiePotential
§impl PyClass for MiePotential
impl PyClass for MiePotential
§impl PyTypeInfo for MiePotential
impl PyTypeInfo for MiePotential
§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
§fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
PyTypeInfo::type_objectPyTypeInfo::type_object].§fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type or a subclass of this type.§fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
PyTypeInfo::is_type_ofPyTypeInfo::is_type_of].§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
object is an instance of this type.§fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
PyTypeInfo::is_exact_type_ofPyTypeInfo::is_exact_type_of].§impl RelativeEq for MiePotential
impl RelativeEq for MiePotential
§fn default_max_relative() -> <MiePotential as AbsDiffEq>::Epsilon
fn default_max_relative() -> <MiePotential as AbsDiffEq>::Epsilon
§fn relative_eq(
&self,
other: &MiePotential,
epsilon: <MiePotential as AbsDiffEq>::Epsilon,
max_relative: <MiePotential as AbsDiffEq>::Epsilon,
) -> bool
fn relative_eq( &self, other: &MiePotential, epsilon: <MiePotential as AbsDiffEq>::Epsilon, max_relative: <MiePotential as AbsDiffEq>::Epsilon, ) -> bool
§fn relative_ne(
&self,
other: &Rhs,
epsilon: Self::Epsilon,
max_relative: Self::Epsilon,
) -> bool
fn relative_ne( &self, other: &Rhs, epsilon: Self::Epsilon, max_relative: Self::Epsilon, ) -> bool
RelativeEq::relative_eq].§impl Serialize for MiePotential
impl Serialize for MiePotential
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl DerefToPyAny for MiePotential
impl StructuralPartialEq for MiePotential
Auto Trait Implementations§
impl Freeze for MiePotential
impl RefUnwindSafe for MiePotential
impl Send for MiePotential
impl Sync for MiePotential
impl Unpin for MiePotential
impl UnwindSafe for MiePotential
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FromPyObject<'_> for Twhere
T: PyClass + Clone,
impl<T> FromPyObject<'_> for Twhere
T: PyClass + Clone,
§fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>
fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>
§impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
§fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>
fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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§impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
impl<'py, T> IntoPyObjectExt<'py> for Twhere
T: IntoPyObject<'py>,
§fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
fn into_bound_py_any(self, py: Python<'py>) -> Result<Bound<'py, PyAny>, PyErr>
self into an owned Python object, dropping type information.§fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
fn into_py_any(self, py: Python<'py>) -> Result<Py<PyAny>, PyErr>
self into an owned Python object, dropping type information and unbinding it
from the 'py lifetime.§fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
fn into_pyobject_or_pyerr(self, py: Python<'py>) -> Result<Self::Output, PyErr>
self into a Python object. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.