CASM  1.1.0
A Clusters Approach to Statistical Mechanics
LatticeIsEquivalent.hh
Go to the documentation of this file.
1 #ifndef CASM_LatticeIsEquivalent
2 #define CASM_LatticeIsEquivalent
3 
6 #include "casm/external/Eigen/Dense"
7 
8 namespace CASM {
9 namespace xtal {
10 
11 struct SymOp;
12 
26  public:
27  LatticeIsEquivalent(const Lattice &_lat);
28 
31  bool operator()(const Lattice &other, double tol = -1.) const;
32 
34  Eigen::Matrix3d U() const;
35 
36  private:
39 };
40 
43  public:
44  IsPointGroupOp(const Lattice &lat);
45 
47  bool operator()(const SymOp &cart_op) const;
48 
49  template <typename ExternSymOp>
50  bool operator()(const ExternSymOp &cart_op) const {
52  }
53 
55  bool operator()(const Eigen::Matrix3d &cart_op) const;
56 
58  bool operator()(const Eigen::Matrix3i &frac_op) const;
59 
61  double map_error() const;
62 
65  Eigen::Matrix3d cart_op() const;
66 
67  SymOp sym_op() const;
68 
69  private:
71  bool _check(const Eigen::Matrix3d &tfrac_op) const;
72 
73  const Eigen::Matrix3d &lat_column_mat() const;
74 
75  const Eigen::Matrix3d &inv_lat_column_mat() const;
76 
78  mutable double m_map_error;
80 };
81 
83 bool is_equivalent(const Lattice &ref_lattice, const Lattice &other);
84 
85 } // namespace xtal
86 } // namespace CASM
87 
88 #endif
Checks if operations are point group operations.
bool _check(const Eigen::Matrix3d &tfrac_op) const
Find the effect of applying symmetry to the lattice vectors.
bool operator()(const ExternSymOp &cart_op) const
Eigen::Matrix3d cart_op() const
const Eigen::Matrix3d & lat_column_mat() const
IsPointGroupOp(const Lattice &lat)
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
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_equivalent(const Lattice &ref_lattice, const Lattice &other)
Check if ref_lattice = other*U, where U is unimodular.
Main CASM namespace.
Definition: APICommand.hh:8
Eigen::Matrix3d Matrix3d