CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::CanonicalForm< Base > Class Template Reference

#include <HasCanonicalForm.hh>

+ Inheritance diagram for CASM::CanonicalForm< Base >:

Detailed Description

template<typename Base>
class CASM::CanonicalForm< Base >

Implements canonical form finding when using SymCompare.

Definition at line 19 of file HasCanonicalForm.hh.

Public Types

typedef Base::MostDerived MostDerived
 

Public Member Functions

template<typename SymCompareType >
bool is_canonical (const std::vector< SymOp > &g, const SymCompareType &sym_compare) const
 Check if canonical. More...
 
template<typename SymCompareType >
MostDerived canonical_form (const std::vector< SymOp > &g, const SymCompareType &sym_compare) const
 Return canonical form. More...
 
template<typename SymCompareType >
bool is_sym_equivalent (const MostDerived &other, const std::vector< SymOp > &g, const SymCompareType &sym_compare) const
 Check if two elements have the same canonical form. More...
 
template<typename ObjIterator , typename SymCompareType >
ObjIterator find_sym_equivalent (ObjIterator begin, ObjIterator end, const std::vector< SymOp > &g, const SymCompareType &sym_compare) const
 Find element that has the same canonical form. More...
 
template<typename SymCompareType >
SymOp to_canonical (const std::vector< SymOp > &g, const SymCompareType &sym_compare) const
 Return op that transforms this into canonical form. More...
 
template<typename SymCompareType >
SymOp from_canonical (const std::vector< SymOp > &g, const SymCompareType &sym_compare) const
 Return op that transforms the canonical form into this. More...
 
template<typename SymCompareType >
SymGroup invariant_subgroup (const SymGroup &super_grp, const SymCompareType &sym_compare) const
 Return subgroup of super_grp that leaves this invariant. More...
 
bool is_canonical (const Supercell &scel) const
 Check if canonical in Supercell. More...
 
MostDerived canonical_form (const Supercell &scel) const
 Return canonical form in Supercell. More...
 
bool is_sym_equivalent (const MostDerived &B, const Supercell &scel) const
 True if this and B have same canonical form in Supercell. More...
 
SymOp to_canonical (const Supercell &scel) const
 Return operation in Supercell that transforms this into canonical form. More...
 
SymOp from_canonical (const Supercell &scel) const
 Return operation in Supercell that transforms canonical form into this. More...
 
std::vector< PermuteIteratorinvariant_subgroup (const Supercell &scel) const
 Return subgroup of Supercell permutations that leave this invariant. More...
 
template<typename PermuteIteratorIt >
bool is_canonical (const Supercell &scel, PermuteIteratorIt begin, PermuteIteratorIt end) const
 
template<typename PermuteIteratorIt >
MostDerived canonical_form (const Supercell &scel, PermuteIteratorIt begin, PermuteIteratorIt end) const
 
template<typename PermuteIteratorIt >
bool is_sym_equivalent (const MostDerived &B, const Supercell &scel, PermuteIteratorIt begin, PermuteIteratorIt end) const
 True if this and B have same canonical form. More...
 
template<typename ObjIterator , typename PermuteIteratorIt >
ObjIterator find_sym_equivalent (ObjIterator obj_begin, ObjIterator obj_end, const Supercell &scel, PermuteIteratorIt begin, PermuteIteratorIt end) const
 Find element that has the same canonical form, with respect to a subgroup. More...
 
template<typename PermuteIteratorIt >
SymOp to_canonical (const Supercell &scel, PermuteIteratorIt begin, PermuteIteratorIt end) const
 
template<typename PermuteIteratorIt >
SymOp from_canonical (const Supercell &scel, PermuteIteratorIt begin, PermuteIteratorIt end) const
 
template<typename PermuteIteratorIt >
std::vector< PermuteIteratorinvariant_subgroup (const Supercell &scel, PermuteIteratorIt begin, PermuteIteratorIt end) const
 

Member Typedef Documentation

◆ MostDerived

template<typename Base >
typedef Base::MostDerived CASM::CanonicalForm< Base >::MostDerived

Definition at line 21 of file HasCanonicalForm.hh.

Member Function Documentation

◆ canonical_form() [1/3]

template<typename _Base >
template<typename SymCompareType >
CanonicalForm< _Base >::MostDerived CASM::CanonicalForm< _Base >::canonical_form ( const std::vector< SymOp > &  g,
const SymCompareType &  sym_compare 
) const

Return canonical form.

Definition at line 29 of file HasCanonicalForm_impl.hh.

◆ canonical_form() [2/3]

template<typename _Base >
CanonicalForm< _Base >::MostDerived CASM::CanonicalForm< _Base >::canonical_form ( const Supercell scel) const

Return canonical form in Supercell.

Definition at line 87 of file HasCanonicalForm_impl.hh.

◆ canonical_form() [3/3]

template<typename _Base >
template<typename PermuteIteratorIt >
CanonicalForm< _Base >::MostDerived CASM::CanonicalForm< _Base >::canonical_form ( const Supercell scel,
PermuteIteratorIt  begin,
PermuteIteratorIt  end 
) const

Return canonical form in Supercell, with respect to a subgroup of Supercell permutations

Definition at line 131 of file HasCanonicalForm_impl.hh.

◆ find_sym_equivalent() [1/2]

template<typename _Base >
template<typename ObjIterator , typename SymCompareType >
ObjIterator CASM::CanonicalForm< _Base >::find_sym_equivalent ( ObjIterator  begin,
ObjIterator  end,
const std::vector< SymOp > &  g,
const SymCompareType &  sym_compare 
) const

Find element that has the same canonical form.

Definition at line 46 of file HasCanonicalForm_impl.hh.

◆ find_sym_equivalent() [2/2]

template<typename _Base >
template<typename ObjIterator , typename PermuteIteratorIt >
ObjIterator CASM::CanonicalForm< _Base >::find_sym_equivalent ( ObjIterator  obj_begin,
ObjIterator  obj_end,
const Supercell scel,
PermuteIteratorIt  begin,
PermuteIteratorIt  end 
) const

Find element that has the same canonical form, with respect to a subgroup.

Definition at line 152 of file HasCanonicalForm_impl.hh.

◆ from_canonical() [1/3]

template<typename _Base >
template<typename SymCompareType >
SymOp CASM::CanonicalForm< _Base >::from_canonical ( const std::vector< SymOp > &  g,
const SymCompareType &  sym_compare 
) const

Return op that transforms the canonical form into this.

Definition at line 68 of file HasCanonicalForm_impl.hh.

◆ from_canonical() [2/3]

template<typename _Base >
SymOp CASM::CanonicalForm< _Base >::from_canonical ( const Supercell scel) const

Return operation in Supercell that transforms canonical form into this.

Definition at line 108 of file HasCanonicalForm_impl.hh.

◆ from_canonical() [3/3]

template<typename _Base >
template<typename PermuteIteratorIt >
SymOp CASM::CanonicalForm< _Base >::from_canonical ( const Supercell scel,
PermuteIteratorIt  begin,
PermuteIteratorIt  end 
) const

Return operation in Supercell that transforms canonical form into this, with respect to a subgroup of Supercell permutations

Definition at line 175 of file HasCanonicalForm_impl.hh.

◆ invariant_subgroup() [1/3]

template<typename _Base >
std::vector< PermuteIterator > CASM::CanonicalForm< _Base >::invariant_subgroup ( const Supercell scel) const

Return subgroup of Supercell permutations that leave this invariant.

Definition at line 114 of file HasCanonicalForm_impl.hh.

◆ invariant_subgroup() [2/3]

template<typename _Base >
template<typename PermuteIteratorIt >
std::vector< PermuteIterator > CASM::CanonicalForm< _Base >::invariant_subgroup ( const Supercell scel,
PermuteIteratorIt  begin,
PermuteIteratorIt  end 
) const

Return subgroup of Supercell permutations that leave this invariant, with respect to a subgroup of Supercell permutations

Definition at line 184 of file HasCanonicalForm_impl.hh.

◆ invariant_subgroup() [3/3]

template<typename _Base >
template<typename SymCompareType >
SymGroup CASM::CanonicalForm< _Base >::invariant_subgroup ( const SymGroup super_grp,
const SymCompareType &  sym_compare 
) const

Return subgroup of super_grp that leaves this invariant.

Definition at line 75 of file HasCanonicalForm_impl.hh.

◆ is_canonical() [1/3]

template<typename _Base >
template<typename SymCompareType >
bool CASM::CanonicalForm< _Base >::is_canonical ( const std::vector< SymOp > &  g,
const SymCompareType &  sym_compare 
) const

Check if canonical.

Definition at line 21 of file HasCanonicalForm_impl.hh.

◆ is_canonical() [2/3]

template<typename _Base >
bool CASM::CanonicalForm< _Base >::is_canonical ( const Supercell scel) const

Check if canonical in Supercell.

Definition at line 81 of file HasCanonicalForm_impl.hh.

◆ is_canonical() [3/3]

template<typename _Base >
template<typename PermuteIteratorIt >
bool CASM::CanonicalForm< _Base >::is_canonical ( const Supercell scel,
PermuteIteratorIt  begin,
PermuteIteratorIt  end 
) const

Check if canonical in Supercell, with respect to a subgroup of Supercell permutations

Definition at line 122 of file HasCanonicalForm_impl.hh.

◆ is_sym_equivalent() [1/3]

template<typename _Base >
bool CASM::CanonicalForm< _Base >::is_sym_equivalent ( const MostDerived B,
const Supercell scel 
) const

True if this and B have same canonical form in Supercell.

True if this and B have same canonical form.

Definition at line 95 of file HasCanonicalForm_impl.hh.

◆ is_sym_equivalent() [2/3]

template<typename _Base >
template<typename PermuteIteratorIt >
bool CASM::CanonicalForm< _Base >::is_sym_equivalent ( const MostDerived B,
const Supercell scel,
PermuteIteratorIt  begin,
PermuteIteratorIt  end 
) const

True if this and B have same canonical form.

True if this and B have same canonical form, with respect to a subgroup of Supercell permutations

Definition at line 141 of file HasCanonicalForm_impl.hh.

◆ is_sym_equivalent() [3/3]

template<typename _Base >
template<typename SymCompareType >
bool CASM::CanonicalForm< _Base >::is_sym_equivalent ( const MostDerived other,
const std::vector< SymOp > &  g,
const SymCompareType &  sym_compare 
) const

Check if two elements have the same canonical form.

Definition at line 37 of file HasCanonicalForm_impl.hh.

◆ to_canonical() [1/3]

template<typename _Base >
template<typename SymCompareType >
SymOp CASM::CanonicalForm< _Base >::to_canonical ( const std::vector< SymOp > &  g,
const SymCompareType &  sym_compare 
) const

Return op that transforms this into canonical form.

Definition at line 59 of file HasCanonicalForm_impl.hh.

◆ to_canonical() [2/3]

template<typename _Base >
SymOp CASM::CanonicalForm< _Base >::to_canonical ( const Supercell scel) const

Return operation in Supercell that transforms this into canonical form.

Definition at line 102 of file HasCanonicalForm_impl.hh.

◆ to_canonical() [3/3]

template<typename _Base >
template<typename PermuteIteratorIt >
SymOp CASM::CanonicalForm< _Base >::to_canonical ( const Supercell scel,
PermuteIteratorIt  begin,
PermuteIteratorIt  end 
) const

Return operation in Supercell that transforms this into canonical form, with respect to a subgroup of Supercell permutations

Definition at line 165 of file HasCanonicalForm_impl.hh.


The documentation for this class was generated from the following files: