6 #include "casm/external/Eigen/Core"
108 bool is_niggli(
double compare_tol)
const;
135 bool keep_handedness =
false);
double zeta() const
2ab*cos(gamma)
double ksi() const
2bc*cos(alpha)
const Eigen::Matrix3d & metrical_matrix() const
NiggliRep(const Lattice &init_lat)
bool meets_criteria_3(double compare_tol) const
For type I: ksi>0 && eta>0 && zeta>0 (all angles < 90)
bool is_niggli(double compare_tol) const
True if all conditions are true, and either 4 OR 3 is false.
bool meets_criteria_7(double compare_tol) const
|zeta|<=A OR (zeta==A, eta<=2*ksi) OR (zeta==-A, eta==0)
bool meets_criteria_5(double compare_tol) const
|ksi|<=B OR (ksi==B, zeta<=2*eta) OR (ksi==-B, zeta==0)
double eta() const
2ac*cos(beta)
Index niggli_index(double compare_tol) const
Number of criteria met.
bool meets_criteria_4(double compare_tol) const
For type II: ksi<=0 && eta<=0 && zeta<=0 (all angles >= 90)
bool meets_criteria_6(double compare_tol) const
|eta|<=A OR (eta==A, zeta<=2*ksi) OR (eta==-A, zeta==0)
bool meets_criteria_1(double compare_tol) const
A<=B OR (A==B, |ksi| <= |eta|)
bool meets_criteria_8(double compare_tol) const
double C() const
Square of lattice length c.
static std::vector< Eigen::Matrix3d > const & cell_invariant_transforms()
double A() const
Square of lattice length a.
bool is_niggli_type1(double compare_tol) const
True if all conditions except 4 are true.
bool is_niggli_type2(double compare_tol) const
True if all conditions except 3 are true.
void debug_criteria(double compare_tol) const
bool meets_criteria_2(double compare_tol) const
B<=C OR (B==C, |eta| <= |zeta|)
const Eigen::Matrix3d m_metrical_matrix
Transpose of initialization lattice dotted with itself.
const double m_scale_factor
Scaling factor for niggli comparisons.
double B() const
Square of lattice length b.
bool operator()(const Eigen::Matrix3d &LHS, const Eigen::Matrix3d &RHS) const
StandardOrientationCompare(double _tol)
Index niggli_index(const Eigen::Matrix3d &test_lat_mat, double compare_tol)
Number of niggli criteria met.
bool standard_orientation_spatial_compare(const Eigen::Matrix3d &low_score_lat_mat, Eigen::Matrix3d &high_score_lat_mat, double compare_tol)
Compare the spatial orientation (ignoring matrix symmetry) and determine which one is oriented more s...
bool is_niggli(const Eigen::Matrix3d &test_lat_mat, double compare_tol)
Eigen::VectorXd spatial_unroll(const Eigen::Matrix3d &lat_mat, double compare_tol)
Generate a vector whose lexicographical value determines how well it's oriented in space.
Lattice niggli(const Lattice &in_lat, double compare_tol, bool keep_handedness=false)
bool standard_orientation_compare(const Eigen::Matrix3d &low_score_lat_mat, const Eigen::Matrix3d &high_score_lat_mat, double compare_tol)
Determine whether high_score has a more standard format than low_score.
INDEX_TYPE Index
For long integer indexing: