1 #ifndef PermuteIterator_HH
2 #define PermuteIterator_HH
44 :
public std::iterator<std::bidirectional_iterator_tag, PermuteIterator>,
61 Index _translation_index);
164 template <
typename IterType>
166 Index tfg = it->factor_group_index();
167 for (++it; it != end; ++it) {
168 if (it->factor_group_index() != tfg)
break;
178 template <
typename PermuteIteratorContainer>
186 template <
typename PermuteIteratorIt>
195 template <
typename PermuteIteratorContainer>
202 template <
typename PermuteIteratorIt>
203 SymGroup
make_sym_group(PermuteIteratorIt begin, PermuteIteratorIt end,
212 template <
typename PermuteIteratorContainer>
214 const PermuteIteratorContainer &container,
221 template <
typename PermuteIteratorIt>
223 PermuteIteratorIt begin, PermuteIteratorIt end,
228 std::set<Index>
const &site_indices);
230 jsonParser &
to_json(
const PermuteIterator &clust, jsonParser &json);
232 class SupercellSymInfo;
234 template <
typename T>
235 struct jsonConstructor;
245 template <
typename ToType,
typename FromType>
Index prim_factor_group_index() const
Return the prim factor group index.
bool operator<(const PermuteIterator &iter) const
SupercellSymInfo const * m_sym_info
SupercellSymInfo const & sym_info() const
Reference the SupercellSymInfo containing the operations being pointed at.
Index m_translation_index
Index m_factor_group_index
bool is_compatible(const PermuteIterator &other_permute_iterator) const
PermuteIterator begin_next_fg_op() const
SymOpRepresentation const & global_dof_rep(DoFKey const &_key) const
Index factor_group_index() const
Return the supercell factor group index.
const Permutation & translation_permute() const
Return the translation permutation being pointed at.
SymOpRepresentation const & local_dof_rep(DoFKey const &_key, Index b) const
bool eq_impl(const PermuteIterator &iter) const
PermuteIterator inverse() const
PermuteIterator & operator--()
Index translation_index() const
Return the index into the supercell translation permutations.
const PermuteIterator * operator->() const
Returns a pointer to this.
const Permutation & factor_group_permute() const
Return the factor group permutation being pointed at.
SymOpRepresentation const & occ_rep(Index b) const
const PermuteIterator & operator*() const
Returns a reference to this.
friend void swap(PermuteIterator &a, PermuteIterator &b)
Permutation combined_permute() const
Index permute_ind(Index i) const
PermuteIterator & operator=(PermuteIterator iter)
PermuteIterator & operator++()
std::vector< Permutation > const * m_trans_permute
SymGroup const & factor_group() const
Reference the SupercellSymInfo::factor_group()
A class that collects all symmetry information for for performing symmetry transformations on the sit...
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
SymOpRepresentation is the base class for anything describes a symmetry operation.
IterType begin_next_fg_op(IterType it, IterType end)
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
SymGroup make_sym_group(const PermuteIteratorContainer &container, const Lattice &supercell_lattice)
Returns a SymGroup generated from a container of PermuteIterator.
bool site_indices_are_invariant(PermuteIterator const &permute_it, std::set< Index > const &site_indices)
Return true if the permutation does not mix given sites and other sites.
std::unique_ptr< SymGroup > make_unique_sym_group(const PermuteIteratorContainer &container, const Lattice &supercell_lattice)
Returns a std::unique_ptr<SymGroup> generated from a container of PermuteIterator.
INDEX_TYPE Index
For long integer indexing:
SymGroup make_point_group(const PermuteIteratorContainer &container, const Lattice &supercell_lattice)
Returns a SymGroup generated from a container of PermuteIterator.
Helper struct for constructing objects that need additional data.
static ReturnType from_json(const jsonParser &json)
Default from_json is equivalent to.
Implements other comparisons in terms of '<'.