AlmaBTE  1.3
A solver of the space- and time-dependent Boltzmann transport equation for phonons
alma::Symmetry_operations Class Reference

Objects of this class hold a subset of the information provided by spg_get_dataset(). More...

#include <symmetry.hpp>

Public Member Functions

 Symmetry_operations (const Crystal_structure &structure, double _symprec=1e-5)
 Constructor that calls spglib to analyze the symmetries of the provided structure. More...
 
std::size_t get_nsym () const
 
int get_spacegroup_number () const
 
std::string get_spacegroup_symbol () const
 
std::string get_wyckoff () const
 
std::vector< int > get_equivalences () const
 
template<typename T >
auto transform_v (const Eigen::MatrixBase< T > &vector, std::size_t index, bool cartesian=false) const -> Eigen::Matrix< typename T::Scalar, Eigen::Dynamic, Eigen::Dynamic >
 Transform a vector according to one of the symmetry operations. More...
 
template<typename T >
auto rotate_v (const Eigen::MatrixBase< T > &vector, std::size_t index, bool cartesian=false) const -> Eigen::Matrix< typename T::Scalar, Eigen::Dynamic, Eigen::Dynamic >
 Rotate (but do not translate) a vector according to one of the symmetry operations. More...
 
template<typename T >
Eigen::Matrix< T, 3, 3 > rotate_m (const Eigen::Ref< const Eigen::Matrix< T, 3, 3 >> &matrix, std::size_t index, bool cartesian=false) const
 Rotate a 3 x 3 matrix according to one of the symmetry operations. More...
 
template<typename T >
Eigen::Matrix< T, 3, 3 > unrotate_m (const Eigen::Ref< const Eigen::Matrix< T, 3, 3 >> &matrix, std::size_t index, bool cartesian=false) const
 Rotate a 3 x 3 matrix according to the inverse of one of the symmetry operations. More...
 
std::size_t map_atom (std::size_t original, std::size_t index) const
 Get the atom index that an atom is mapped to through a symmetry operation. More...
 
bool is_inversion (std::size_t index) const
 Find out if a symmetry operation involves an inversion. More...
 
template<typename T >
auto rotate_q (const Eigen::MatrixBase< T > &vector, std::size_t index) const -> Eigen::Matrix< typename T::Scalar, Eigen::Dynamic, Eigen::Dynamic >
 Rotate a vector expressed in direct reciprocal coordinates according to one of the symmetry operations. More...
 
template<typename T >
Eigen::Matrix< T, 3, 3 > symmetrize_m (const Eigen::Ref< const Eigen::Matrix< T, 3, 3 >> &matrix, bool cartesian=false) const
 Symmetrize a 3x3 matrix using all the operations in the group. More...
 
std::vector< std::vector< Transformed_pair > > get_pair_classes () const
 Take all pairs of atoms in the structure and divide them among equivalence classes defined by the internal translations. More...
 

Public Attributes

const double symprec
 Tolerance for the symmetry search.
 

Detailed Description

Objects of this class hold a subset of the information provided by spg_get_dataset().

Constructor & Destructor Documentation

◆ Symmetry_operations()

alma::Symmetry_operations::Symmetry_operations ( const Crystal_structure structure,
double  _symprec = 1e-5 
)

Constructor that calls spglib to analyze the symmetries of the provided structure.

Parameters
[in]structure- a description of the crystal
[in]_symprec- tolerance for the symmetry search

Member Function Documentation

◆ get_equivalences()

std::vector<int> alma::Symmetry_operations::get_equivalences ( ) const
inline
Returns
the equivalence class of each atom.

◆ get_nsym()

std::size_t alma::Symmetry_operations::get_nsym ( ) const
inline
Returns
the number of symmetry operations.

◆ get_pair_classes()

std::vector< std::vector< Transformed_pair > > alma::Symmetry_operations::get_pair_classes ( ) const

Take all pairs of atoms in the structure and divide them among equivalence classes defined by the internal translations.

Returns
a vector of vectors of Transformed_Pairs

◆ get_spacegroup_number()

int alma::Symmetry_operations::get_spacegroup_number ( ) const
inline
Returns
the international space group number.

◆ get_spacegroup_symbol()

std::string alma::Symmetry_operations::get_spacegroup_symbol ( ) const
inline
Returns
the space group symbol.

◆ get_wyckoff()

std::string alma::Symmetry_operations::get_wyckoff ( ) const
inline
Returns
the Wyckoff positions of each atom.

◆ is_inversion()

bool alma::Symmetry_operations::is_inversion ( std::size_t  index) const
inline

Find out if a symmetry operation involves an inversion.

Parameters
[in]index- the operation number
Returns
True if the operation does not preserve the orientation of the axes

◆ map_atom()

std::size_t alma::Symmetry_operations::map_atom ( std::size_t  original,
std::size_t  index 
) const
inline

Get the atom index that an atom is mapped to through a symmetry operation.

Parameters
[in]original- the input atom index
[in]index- the operation number
Returns
the new atom index

◆ rotate_m()

template<typename T >
Eigen::Matrix<T, 3, 3> alma::Symmetry_operations::rotate_m ( const Eigen::Ref< const Eigen::Matrix< T, 3, 3 >> &  matrix,
std::size_t  index,
bool  cartesian = false 
) const
inline

Rotate a 3 x 3 matrix according to one of the symmetry operations.

Parameters
[in]matrix- the input matrix
[in]index- the operation number
[in]cartesian- is the input in Cartesian coordinates?
Returns
the rotated matrix

◆ rotate_q()

template<typename T >
auto alma::Symmetry_operations::rotate_q ( const Eigen::MatrixBase< T > &  vector,
std::size_t  index 
) const -> Eigen::Matrix<typename T::Scalar, Eigen::Dynamic, Eigen::Dynamic>
inline

Rotate a vector expressed in direct reciprocal coordinates according to one of the symmetry operations.

Parameters
[in]vector- the input vector or matrix of vectors
[in]index- the operation number
Returns
the transformed vector or matrix of vectors

◆ rotate_v()

template<typename T >
auto alma::Symmetry_operations::rotate_v ( const Eigen::MatrixBase< T > &  vector,
std::size_t  index,
bool  cartesian = false 
) const -> Eigen::Matrix<typename T::Scalar, Eigen::Dynamic, Eigen::Dynamic>
inline

Rotate (but do not translate) a vector according to one of the symmetry operations.

Parameters
[in]vector- the input vector or matrix of vectors

◆ symmetrize_m()

template<typename T >
Eigen::Matrix<T, 3, 3> alma::Symmetry_operations::symmetrize_m ( const Eigen::Ref< const Eigen::Matrix< T, 3, 3 >> &  matrix,
bool  cartesian = false 
) const
inline

Symmetrize a 3x3 matrix using all the operations in the group.

Parameters
[in]matrix- the input matrix
[in]cartesian- is the input in Cartesian coordinates?
Returns
the symmetrized matrix

◆ transform_v()

template<typename T >
auto alma::Symmetry_operations::transform_v ( const Eigen::MatrixBase< T > &  vector,
std::size_t  index,
bool  cartesian = false 
) const -> Eigen::Matrix<typename T::Scalar, Eigen::Dynamic, Eigen::Dynamic>
inline

Transform a vector according to one of the symmetry operations.

Parameters
[in]vector- the input vector or matrix of vectors

◆ unrotate_m()

template<typename T >
Eigen::Matrix<T, 3, 3> alma::Symmetry_operations::unrotate_m ( const Eigen::Ref< const Eigen::Matrix< T, 3, 3 >> &  matrix,
std::size_t  index,
bool  cartesian = false 
) const
inline

Rotate a 3 x 3 matrix according to the inverse of one of the symmetry operations.

Parameters
[in]matrix- the input matrix
[in]index- the operation number
[in]cartesian- is the input in Cartesian coordinates?
Returns
the rotated matrix

The documentation for this class was generated from the following files: