1 #ifndef UNITCELLWITHIN_HH
2 #define UNITCELLWITHIN_HH
7 #include "casm/external/Eigen/Core"
33 const matrix_type &superlattice_transformation_matrix)
36 adjugate(superlattice_transformation_matrix)) {
41 const Eigen::Matrix3i &superlattice_transformation_matrix)
43 matrix_type(superlattice_transformation_matrix.cast<long>())) {}
48 template <
typename UnitCellType>
50 return UnitCellType(this->
operator()(
static_cast<vector_type
>(ijk)));
matrix_type m_transformation_matrix
Eigen::Matrix< long, 3, 3 > matrix_type
IntegralCoordinateWithin_f(const matrix_type &superlattice_transformation_matrix)
vector_type operator()(const vector_type &ijk) const
Brings the given lattice point within the superlattice.
static void _throw_if_bad_transformation_matrix(const matrix_type &transformation_matrix)
Throws exception if the transformation matrix has determinant 0.
matrix_type m_transformation_matrix_adjugate
IntegralCoordinateWithin_f(const Eigen::Matrix3i &superlattice_transformation_matrix)
Eigen::Matrix< long, 3, 1 > vector_type
UnitCellType operator()(const UnitCellType &ijk) const
IntegralCoordinateWithin_f::vector_type vector_type
std::array< int, 2 > m_stride
long int m_total_lattice_points
matrix_type m_smith_normal_V
vector_type _make_smith_normal_form_lattice_point(Index ix) const
vector_type _normalize_lattice_point(const vector_type &mnp) const
IntegralCoordinateWithin_f m_bring_within_f
IntegralCoordinateWithin_f::matrix_type matrix_type
vector_type operator()(Index ix) const
OrderedLatticePointGenerator(const matrix_type &transformation_matrix)
long int size() const
Returns the total number of unique lattice points that can be generated.
matrix_type m_smith_normal_S
matrix_type m_smith_normal_U
Eigen::Matrix< typename Derived::Scalar, Derived::RowsAtCompileTime, Derived::ColsAtCompileTime > adjugate(const Eigen::MatrixBase< Derived > &M)
Return adjugate matrix.
std::vector< UnitCell > make_lattice_points(const OrderedLatticePointGenerator::matrix_type &transformation_matrix)
std::vector< UnitCell > make_lattice_points(const Eigen::Matrix3l &transformation_matrix)
INDEX_TYPE Index
For long integer indexing:
Matrix< long int, 3, 3 > Matrix3l