Struct gchemol_core::Lattice
source · pub struct Lattice { /* private fields */ }
Expand description
Periodic 3D lattice
Implementations§
source§impl Lattice
impl Lattice
sourcepub fn from_matrix<T>(tvs: T) -> Lattice
pub fn from_matrix<T>(tvs: T) -> Lattice
Construct Lattice
from lattice matrix (3x3).
sourcepub fn from_params(
a: f64,
b: f64,
c: f64,
alpha: f64,
beta: f64,
gamma: f64
) -> Lattice
pub fn from_params( a: f64, b: f64, c: f64, alpha: f64, beta: f64, gamma: f64 ) -> Lattice
Construct lattice from lattice parameters Unit cell angles in degrees, lengths in Angstrom
sourcepub fn widths(&self) -> [f64; 3]
pub fn widths(&self) -> [f64; 3]
Return the perpendicular widths of the cell along three directions. i.e. the distance between opposite faces of the unit cell
sourcepub fn volume(&self) -> f64
pub fn volume(&self) -> f64
Return the volume of the unit cell the cache will be updated if necessary
sourcepub fn set_origin<T>(&mut self, loc: T)
pub fn set_origin<T>(&mut self, loc: T)
Set cell origin in Cartesian coordinates
sourcepub fn scale_by_a(&mut self, v: f64)
pub fn scale_by_a(&mut self, v: f64)
Scale Lattice in a
direction by a positive constant v
sourcepub fn scale_by_b(&mut self, v: f64)
pub fn scale_by_b(&mut self, v: f64)
Scale Lattice in b
direction by a positive constant v
sourcepub fn scale_by_c(&mut self, v: f64)
pub fn scale_by_c(&mut self, v: f64)
Scale Lattice in c
direction by a positive constant v
sourcepub fn origin(&self) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn origin(&self) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Get cell origin in Cartesian coordinates
sourcepub fn to_frac<T>(
&self,
p: T
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn to_frac<T>( &self, p: T ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Returns the fractional coordinates given cartesian coordinates.
sourcepub fn to_cart<T>(
&self,
p: T
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn to_cart<T>( &self, p: T ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Returns the cartesian coordinates given fractional coordinates.
sourcepub fn vector_a(
&self
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn vector_a( &self ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Lattice vector a
sourcepub fn vector_b(
&self
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn vector_b( &self ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Lattice vector b
sourcepub fn vector_c(
&self
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn vector_c( &self ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Lattice vector c
sourcepub fn vectors(
&self
) -> [Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>; 3]
pub fn vectors( &self ) -> [Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>; 3]
Three lattice vectors.
sourcepub fn matrix(&self) -> Matrix<f64, Const<3>, Const<3>, ArrayStorage<f64, 3, 3>>
pub fn matrix(&self) -> Matrix<f64, Const<3>, Const<3>, ArrayStorage<f64, 3, 3>>
Lattice vectors
sourcepub fn inv_matrix(
&self
) -> Matrix<f64, Const<3>, Const<3>, ArrayStorage<f64, 3, 3>>
pub fn inv_matrix( &self ) -> Matrix<f64, Const<3>, Const<3>, ArrayStorage<f64, 3, 3>>
inverse of lattice matrix
sourcepub fn is_orthorhombic(&self) -> bool
pub fn is_orthorhombic(&self) -> bool
Check if lattice is orthorhombic
sourcepub fn wrap<T>(
&self,
vec: T
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn wrap<T>( &self, vec: T ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Wrap a point in cartesian coordinates into unit cell, obeying the periodic boundary conditions. Returns cartesian coordinates.
sourcepub fn wrap_frac<T>(
&self,
f: T
) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
pub fn wrap_frac<T>( &self, f: T ) -> Matrix<f64, Const<3>, Const<1>, ArrayStorage<f64, 3, 1>>
Wrap a point in fractional coordinates into unit cell, obeying the periodic boundary conditions. Returns fractional coordinates.
Trait Implementations§
source§impl<'de> Deserialize<'de> for Lattice
impl<'de> Deserialize<'de> for Lattice
source§fn deserialize<__D>(
__deserializer: __D
) -> Result<Lattice, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<Lattice, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
source§impl Serialize for Lattice
impl Serialize for Lattice
source§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 Copy for Lattice
Auto Trait Implementations§
impl Freeze for Lattice
impl RefUnwindSafe for Lattice
impl Send for Lattice
impl Sync for Lattice
impl Unpin for Lattice
impl UnwindSafe for Lattice
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> Configure for T
impl<T> Configure for T
source§fn print_toml(&self)
fn print_toml(&self)
source§fn from_json(s: &str) -> Result<Self, Error>
fn from_json(s: &str) -> Result<Self, Error>
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moresource§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).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.