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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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 moreSource§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.