36 if (!
almost_equal(1.0, std::abs(tfrac_op.determinant()), 0.01) ||
47 if (std::abs(tfrac_op.determinant()) != 1) {
51 return _check(tfrac_op.cast<
double>());
79 tMat = tMat * tMat.transpose();
102 return is_equiv(other);
bool _check(const Eigen::Matrix3d &tfrac_op) const
Find the effect of applying symmetry to the lattice vectors.
Eigen::Matrix3d cart_op() const
const Eigen::Matrix3d & lat_column_mat() const
IsPointGroupOp(const Lattice &lat)
Eigen::Matrix3d m_cart_op
bool operator()(const SymOp &cart_op) const
Checks if ref_lat = cart_op*ref_lat*transf_mat(), for any transf_mat()
double map_error() const
Return the mapping error, calculated after performing an equivalence check.
const Eigen::Matrix3d & inv_lat_column_mat() const
const Eigen::Matrix3d & lat_column_mat() const
3x3 matrix with lattice vectors as its columne
const Eigen::Matrix3d & inv_lat_column_mat() const
Inverse of Lattice::lat_column_mat() It is the transformation matrix 'C2F', such that f = C2F * c whe...
Eigen::Matrix3d U() const
Returns U found for last check.
LatticeIsEquivalent(const Lattice &_lat)
bool operator()(const Lattice &other, double tol=-1.) const
Checks if lat = other*U, with unimodular U.
bool is_unimodular(const Eigen::MatrixBase< Derived > &M, double tol)
Check if Eigen::Matrix is unimodular.
Eigen::CwiseUnaryOp< decltype(Local::round_l< typename Derived::Scalar >), const Derived > round(const Eigen::MatrixBase< Derived > &val)
Round Eigen::MatrixXd.
bool is_integer(const Eigen::MatrixBase< Derived > &M, double tol)
Check if Eigen::Matrix is integer.
bool is_equivalent(const Lattice &ref_lattice, const Lattice &other)
Check if ref_lattice = other*U, where U is unimodular.
Eigen::Matrix3d const & get_matrix(MappingNode const &_node)
External accessor for isometry, to provide xtal::SymOp adaptability.
bool almost_equal(ClusterInvariants const &A, ClusterInvariants const &B, double tol)
Check if ClusterInvariants are equal.
static SymOp point_operation(const SymOpMatrixType &mat)