CASM
1.1.0
A Clusters Approach to Statistical Mechanics
|
#include <Orbit.hh>
An Orbit of Element.
Provides prototype Element, orbit of equivalent elements, and equivalence map giving symmetry operations that map the prototype onto the equivalents.
Element and orbit comparison is done via a SymCompareType functor, which includes any necessary tolerance for floating point comparison. See SymCompare
for how to implement the necessary methods.
The following relationships will be valid: element(i) = sym_compare.copy_apply(equivalence_map()[i][j], prototype()), for all j < equivalence_map()[i].size() equivalence_map()[i][j] = t * g; where g is a generating group element, and t is the "spatial_transform" defined by the SymCompareType for equivalent elements such that: sym_compare.representation_prepare(element(i)) == copy_apply(t, sym_compare.representation_prepare(copy_apply(g, prototype)))
Public Types | |
using | size_type = unsigned int |
using | Element = typename _SymCompareType::Element |
using | InvariantsType = typename _SymCompareType::InvariantsType |
using | SymCompareType = _SymCompareType |
using | const_iterator = typename std::vector< Element >::const_iterator |
using | const_symop_iterator = typename std::vector< SymOp >::const_iterator |
typedef Base::MostDerived | MostDerived |
Public Member Functions | |
Orbit (Element generating_element, SymGroup const &generating_group, SymCompareType const &sym_compare) | |
Construct an Orbit from a generating_element Element, using provided symmetry group. More... | |
const_iterator | begin () const |
const_iterator | end () const |
const_iterator | cbegin () const |
const_iterator | cend () const |
size_type | size () const |
const Element & | prototype () const |
Identical to element(0) More... | |
const Element & | operator[] (size_type index) const |
Return Element at index, without bounds checking. More... | |
const Element & | element (size_type index) const |
Equivalent to operator[](size_type index) const. More... | |
const std::vector< Element > & | elements () const |
const Access vector of Element More... | |
const multivector< SymOp >::X< 2 > & | equivalence_map () const |
Return the equivalence map. More... | |
std::pair< const_symop_iterator, const_symop_iterator > | equivalence_map (size_type index) const |
Return the equivalence map for element[index]. More... | |
SymGroupRepID | canonization_rep_ID () const |
Return the canonization symmetry representation ID. More... | |
const_iterator | find (const Element &e) const |
Find element in Orbit. More... | |
bool | contains (const Element &e) const |
Check if element is in Orbit. More... | |
const SymGroup & | generating_group () const |
Return the generating SymGroup. More... | |
const SymCompareType & | sym_compare () const |
Return the SymCompare functor reference. More... | |
InvariantsType const & | invariants () const |
Orbit & | apply_sym (const SymOp &op) |
Apply symmetry to Orbit. More... | |
bool | operator< (const Orbit &B) const |
Compare orbits, using SymCompareType::inter_orbit_compare. More... | |
bool | operator> (const MostDerived &B) const |
bool | operator<= (const MostDerived &B) const |
bool | operator>= (const MostDerived &B) const |
bool | operator== (const MostDerived &B) const |
bool | operator!= (const MostDerived &B) const |
Protected Member Functions | |
bool | eq_impl (const MostDerived &B) const |
bool | ne_impl (const MostDerived &B) const |
Private Member Functions | |
void | _construct_canonization_rep () const |
template<typename SymOpIterator > | |
void | _construct (Element generating_element, SymOpIterator begin, SymOpIterator end) |
Construct an Orbit from a generating_element Element, using provided symmetry rep. More... | |
Private Attributes | |
std::vector< Element > | m_element |
All symmetrically equivalent elements (excluding those that SymCompare equivalent) More... | |
multivector< SymOp >::X< 2 > | m_equivalence_map |
element(i) compares equivalent to prototype().copy_apply(m_equivalence_map[i][j]) for all j More... | |
SymGroup | m_generating_group |
Group used to generate the orbit. More... | |
SymGroupRepID | m_canonization_rep_ID |
ID of symmetry representation that describes the effect of each SymOp with respect to the canonical equivalent. More... | |
SymCompareType | m_sym_compare |
Functor used to check compare Element, including symmetry rules, and make canonical forms. More... | |
InvariantsType | m_invariants |
Orbit invariants. More... | |
using CASM::Orbit< _SymCompareType >::const_iterator = typename std::vector<Element>::const_iterator |
using CASM::Orbit< _SymCompareType >::const_symop_iterator = typename std::vector<SymOp>::const_iterator |
using CASM::Orbit< _SymCompareType >::Element = typename _SymCompareType::Element |
using CASM::Orbit< _SymCompareType >::InvariantsType = typename _SymCompareType::InvariantsType |
|
inherited |
Definition at line 27 of file Comparisons.hh.
using CASM::Orbit< _SymCompareType >::size_type = unsigned int |
using CASM::Orbit< _SymCompareType >::SymCompareType = _SymCompareType |
CASM::Orbit< _SymCompareType >::Orbit | ( | Element | generating_element, |
SymGroup const & | generating_group, | ||
SymCompareType const & | sym_compare | ||
) |
Construct an Orbit from a generating_element Element, using provided symmetry group.
Construct an Orbit from a generating_element Element, using provided Group.
generating_element | The element used to generate equivalents |
generating_group | The group used for generating the orbit |
sym_compare | Binary functor that implements symmetry properties |
find the best equivalence map out of all possible (lowest lexicographical sorting columnwise) ties are resolved by virtue of fact that 'tmp_element' is already sorted by m_sym_compare.compare
copy results
Definition at line 91 of file Orbit_impl.hh.
|
private |
Construct an Orbit from a generating_element Element, using provided symmetry rep.
|
private |
Definition at line 252 of file Orbit_impl.hh.
Orbit< _SymCompareType > & CASM::Orbit< _SymCompareType >::apply_sym | ( | const SymOp & | op | ) |
Apply symmetry to Orbit.
Definition at line 224 of file Orbit_impl.hh.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Equivalent to operator[](size_type index) const.
|
inline |
|
inline |
|
inlineprotectedinherited |
Definition at line 40 of file Comparisons.hh.
|
inline |
Return the equivalence map.
|
inline |
Return the equivalence map for element[index].
|
inline |
|
inline |
|
inline |
|
inlineprotectedinherited |
Definition at line 44 of file Comparisons.hh.
|
inlineinherited |
Definition at line 37 of file Comparisons.hh.
bool CASM::Orbit< _SymCompareType >::operator< | ( | const Orbit< _SymCompareType > & | B | ) | const |
Compare orbits, using SymCompareType::inter_orbit_compare.
Definition at line 246 of file Orbit_impl.hh.
|
inlineinherited |
Definition at line 31 of file Comparisons.hh.
|
inlineinherited |
Definition at line 35 of file Comparisons.hh.
|
inlineinherited |
Definition at line 29 of file Comparisons.hh.
|
inlineinherited |
Definition at line 33 of file Comparisons.hh.
|
inline |
|
inline |
|
inline |
|
inline |
Return the SymCompare functor reference.
|
mutableprivate |
|
private |
All symmetrically equivalent elements (excluding those that SymCompare equivalent)
|
private |
element(i) compares equivalent to prototype().copy_apply(m_equivalence_map[i][j]) for all j
|
private |
|
private |
|
private |