CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::SimpleOrbit< _SymCompareType > Class Template Reference

#include <SimpleOrbit.hh>

Detailed Description

template<typename _SymCompareType>
class CASM::SimpleOrbit< _SymCompareType >

Generate an orbit of unique Element generated by a group

SimpleOrbit is similar to Orbit, but does not require use of SymOp and SymGroup and does not use an existing multiplication table. This allows it to be used with large groups (for example, groups that include translations within a supercell). Therefore it also does not maintain the generating group or equivalence map and element sorting is not based on the equivalence map.

Use of SimpleOrbit requires implementation of a SymCompareType that describes how to apply group elements to the orbit elements and how to compare orbit elements. The struct VectorSymCompare in symmetry/ Symmetrizer.cc provides an example implementation.

Definition at line 28 of file SimpleOrbit.hh.

Public Types

using size_type = unsigned int
 
using SymCompareType = _SymCompareType
 
using Element = typename _SymCompareType::Element
 
using InvariantsType = typename _SymCompareType::InvariantsType
 
using const_iterator = typename std::vector< Element >::const_iterator
 

Public Member Functions

template<typename GroupIterator >
 SimpleOrbit (typename SymCompareType::Element const &_generating_element, GroupIterator _group_begin, GroupIterator _group_end, SymCompareType const &_sym_compare)
 Construct a SimpleOrbit using a range of SymOp or PermuteIterator. More...
 
const_iterator begin () const
 
const_iterator end () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
size_type size () const
 
Element const & prototype () const
 Identical to element(0) More...
 
Element const & operator[] (size_type index) const
 Return Element at index, without bounds checking. More...
 
Element const & element (size_type index) const
 Equivalent to operator[](size_type index) const. More...
 
std::vector< Element > const & elements () const
 const Access vector of Element More...
 
const multivector< SymOp >::X< 2 > & equivalence_map () const
 Not implemented: Will throw. Exists only for compatibility with orbit printing. More...
 
const SymGroupgenerating_group () const
 Not implemented: Will throw. Exists only for compatibility with orbit printing. More...
 
SymCompareType const & sym_compare () const
 Return the SymCompare functor reference. More...
 
InvariantsType const & invariants () const
 
bool operator< (const SimpleOrbit &B) const
 Compare orbits, using SymCompareType::inter_orbit_compare. More...
 

Private Attributes

SymCompareType m_sym_compare
 
InvariantsType m_invariants
 
std::vector< Elementm_element
 

Member Typedef Documentation

◆ const_iterator

template<typename _SymCompareType >
using CASM::SimpleOrbit< _SymCompareType >::const_iterator = typename std::vector<Element>::const_iterator

Definition at line 34 of file SimpleOrbit.hh.

◆ Element

template<typename _SymCompareType >
using CASM::SimpleOrbit< _SymCompareType >::Element = typename _SymCompareType::Element

Definition at line 32 of file SimpleOrbit.hh.

◆ InvariantsType

template<typename _SymCompareType >
using CASM::SimpleOrbit< _SymCompareType >::InvariantsType = typename _SymCompareType::InvariantsType

Definition at line 33 of file SimpleOrbit.hh.

◆ size_type

template<typename _SymCompareType >
using CASM::SimpleOrbit< _SymCompareType >::size_type = unsigned int

Definition at line 30 of file SimpleOrbit.hh.

◆ SymCompareType

template<typename _SymCompareType >
using CASM::SimpleOrbit< _SymCompareType >::SymCompareType = _SymCompareType

Definition at line 31 of file SimpleOrbit.hh.

Constructor & Destructor Documentation

◆ SimpleOrbit()

template<typename SymCompareType >
template<typename GroupIterator >
CASM::SimpleOrbit< SymCompareType >::SimpleOrbit ( typename SymCompareType::Element const &  _generating_element,
GroupIterator  _group_begin,
GroupIterator  _group_end,
SymCompareType const &  _sym_compare 
)

Construct a SimpleOrbit using a range of SymOp or PermuteIterator.

Definition at line 14 of file SimpleOrbit_impl.hh.

Member Function Documentation

◆ begin()

template<typename _SymCompareType >
const_iterator CASM::SimpleOrbit< _SymCompareType >::begin ( ) const
inline

Definition at line 42 of file SimpleOrbit.hh.

◆ cbegin()

template<typename _SymCompareType >
const_iterator CASM::SimpleOrbit< _SymCompareType >::cbegin ( ) const
inline

Definition at line 46 of file SimpleOrbit.hh.

◆ cend()

template<typename _SymCompareType >
const_iterator CASM::SimpleOrbit< _SymCompareType >::cend ( ) const
inline

Definition at line 48 of file SimpleOrbit.hh.

◆ element()

template<typename _SymCompareType >
Element const& CASM::SimpleOrbit< _SymCompareType >::element ( size_type  index) const
inline

Equivalent to operator[](size_type index) const.

  • May not be prepared

Definition at line 63 of file SimpleOrbit.hh.

◆ elements()

template<typename _SymCompareType >
std::vector<Element> const& CASM::SimpleOrbit< _SymCompareType >::elements ( ) const
inline

const Access vector of Element

  • May not be prepared

Definition at line 68 of file SimpleOrbit.hh.

◆ end()

template<typename _SymCompareType >
const_iterator CASM::SimpleOrbit< _SymCompareType >::end ( ) const
inline

Definition at line 44 of file SimpleOrbit.hh.

◆ equivalence_map()

template<typename _SymCompareType >
const multivector<SymOp>::X<2>& CASM::SimpleOrbit< _SymCompareType >::equivalence_map ( ) const
inline

Not implemented: Will throw. Exists only for compatibility with orbit printing.

Definition at line 72 of file SimpleOrbit.hh.

◆ generating_group()

template<typename _SymCompareType >
const SymGroup& CASM::SimpleOrbit< _SymCompareType >::generating_group ( ) const
inline

Not implemented: Will throw. Exists only for compatibility with orbit printing.

Definition at line 78 of file SimpleOrbit.hh.

◆ invariants()

template<typename _SymCompareType >
InvariantsType const& CASM::SimpleOrbit< _SymCompareType >::invariants ( ) const
inline

Definition at line 87 of file SimpleOrbit.hh.

◆ operator<()

template<typename SymCompareType >
bool CASM::SimpleOrbit< SymCompareType >::operator< ( const SimpleOrbit< _SymCompareType > &  B) const

Compare orbits, using SymCompareType::inter_orbit_compare.

Definition at line 49 of file SimpleOrbit_impl.hh.

◆ operator[]()

template<typename _SymCompareType >
Element const& CASM::SimpleOrbit< _SymCompareType >::operator[] ( size_type  index) const
inline

Return Element at index, without bounds checking.

  • May not be prepared

Definition at line 58 of file SimpleOrbit.hh.

◆ prototype()

template<typename _SymCompareType >
Element const& CASM::SimpleOrbit< _SymCompareType >::prototype ( ) const
inline

Identical to element(0)

Definition at line 53 of file SimpleOrbit.hh.

◆ size()

template<typename _SymCompareType >
size_type CASM::SimpleOrbit< _SymCompareType >::size ( ) const
inline

Definition at line 50 of file SimpleOrbit.hh.

◆ sym_compare()

template<typename _SymCompareType >
SymCompareType const& CASM::SimpleOrbit< _SymCompareType >::sym_compare ( ) const
inline

Return the SymCompare functor reference.

  • implements symmetry properties of this orbit

Definition at line 85 of file SimpleOrbit.hh.

Member Data Documentation

◆ m_element

template<typename _SymCompareType >
std::vector<Element> CASM::SimpleOrbit< _SymCompareType >::m_element
private

Definition at line 95 of file SimpleOrbit.hh.

◆ m_invariants

template<typename _SymCompareType >
InvariantsType CASM::SimpleOrbit< _SymCompareType >::m_invariants
private

Definition at line 94 of file SimpleOrbit.hh.

◆ m_sym_compare

template<typename _SymCompareType >
SymCompareType CASM::SimpleOrbit< _SymCompareType >::m_sym_compare
private

Definition at line 93 of file SimpleOrbit.hh.


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