1 #ifndef CASM_VectorSymCompare
2 #define CASM_VectorSymCompare
8 template <
typename Base>
31 template <
typename Element,
typename SymApply>
35 template <
typename _Element,
typename _SymApply>
43 template <
typename Element,
typename SymApply>
47 template <
typename _Element,
typename _SymApply>
57 template <
typename Base>
81 template <
typename _Base>
97 using typename Base::InvariantsType;
109 template <
typename... Args>
118 InvariantsType
const &B_invariants)
const;
149 template <
typename Element>
162 template <
typename Element,
typename SymApply>
165 SymCompare<CRTPBase<DirectionSymCompare<Element, SymApply>>>> {
174 template <
typename... Args>
186 template <
typename Element,
typename SymApply>
189 SymCompare<CRTPBase<SubspaceSymCompare<Element, SymApply>>>> {
198 template <
typename... Args>
Element representation_prepare_impl(Element obj) const
Prepare an element for comparison (by doing nothing)
DirectionSymCompare(Args &&... args)
Constructor.
CRTP Base class for Vector comparisons.
SymOp m_spatial_transform
double tol() const
Return tolerance.
InvariantsType make_invariants_impl(Element const &obj) const
Make orbit invariants from one element in the orbit.
typename traits< MostDerived >::Element Element
bool invariants_compare_impl(InvariantsType const &A_invariants, InvariantsType const &B_invariants) const
Orders 'prepared' elements in the same orbit.
bool compare_impl(const Element &A, const Element &B) const
Compares 'prepared' elements.
typename traits< MostDerived >::SymApply SymApply
Element copy_apply_impl(SymOp const &op, Element obj) const
std::unique_ptr< SymOpRepresentation > canonical_transform_impl(Element const &obj) const
Returns transformation that takes 'obj' to its prepared (canonical) form.
_Base Base
Element refers to Vector, not element of Vector.
SymOp const & spatial_transform_impl() const
Spatial prepare does not apply – transform is always identity.
typename Base::MostDerived MostDerived
EigenSymCompare(double tol, Args &&... args)
Constructor.
Element spatial_prepare_impl(Element obj) const
Spatial prepare does not apply – element is returned unchanged.
Element operator()(SymOp const &op, Element obj) const
EigenSymRepApply(SymGroupRep const &_rep)
SubspaceSymCompare(Args &&... args)
Constructor.
Element representation_prepare_impl(Element obj) const
Prepare an element for comparison by rotating, sorting, and changing sign of column vectors.
CRTP base class for implementing element and orbit comparison.
typename traits< MostDerived >::Element Element
SymGroupRep is an alternative representation of a SymGroup for something other than real space....
Eigen::MatrixXd const * MatrixXd(Index i) const
pointer to MatrixXd corresponding to SymOpRepresentation at entry 'i' of this SymGroupRep Returns nul...
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
VectorInvariants(Eigen::VectorXcd const &vector)
Base class for CRTP pattern.
bool almost_equal(ClusterInvariants const &A, ClusterInvariants const &B, double tol)
Check if ClusterInvariants are equal.
bool compare(ClusterInvariants const &A, ClusterInvariants const &B, double tol)
Compare ClusterInvariants.
DirectionSymCompare< _Element, _SymApply > MostDerived
VectorInvariants InvariantsType
VectorInvariants InvariantsType
SubspaceSymCompare< _Element, _SymApply > MostDerived