9 #include "casm/external/Eigen/src/Core/Matrix.h"
17 : m_sym_info(iter.m_sym_info),
19 m_factor_group_index(iter.m_factor_group_index),
20 m_translation_index(iter.m_translation_index) {}
23 Index _factor_group_index,
24 Index _translation_index)
25 : m_sym_info(&_sym_info),
27 m_factor_group_index(_factor_group_index),
28 m_translation_index(_translation_index) {}
107 DoFKey const &_key)
const {
118 return lattice_translation_op *
195 Eigen::Vector3d translation_cart =
199 translation_cart, this->
sym_info().prim_lattice());
218 Eigen::Vector3d translation_cart =
222 translation_cart, this->
sym_info().prim_lattice());
235 template <
typename PermuteIteratorIt>
240 for (; begin != end; ++begin) {
241 Index f = begin->sym_op().index();
243 for (i = 0; i < result.size(); ++i) {
244 if (f == result[i].index())
break;
246 if (i == result.size()) {
247 result.
push_back((begin->sym_op()).no_trans());
261 template <
typename PermuteIteratorIt>
266 while (begin != end) {
281 template <
typename PermuteIteratorIt>
283 PermuteIteratorIt begin, PermuteIteratorIt end,
285 auto sym_group_ptr = notstd::make_unique<SymGroup>();
287 while (begin != end) {
288 sym_group_ptr->push_back(begin->sym_op());
291 sym_group_ptr->sort();
292 return sym_group_ptr;
298 std::vector<PermuteIterator>::const_iterator begin,
299 std::vector<PermuteIterator>::const_iterator end,
302 std::vector<PermuteIterator>::iterator end,
308 std::vector<PermuteIterator>::const_iterator begin,
309 std::vector<PermuteIterator>::const_iterator end,
312 std::vector<PermuteIterator>::iterator end,
324 std::set<Index>
const &site_indices) {
330 return std::none_of(site_indices.begin(), site_indices.end(), [&](
Index s) {
331 return site_indices.count(permute_it.permute_ind(s)) == 0;
344 return scel_info.
permute_it(json[
"factgrp"].get<Index>(),
345 json[
"trans"].get<Index>());
352 return adaptable.
sym_op();
std::set< std::string > & s
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
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 const & factor_group() const
Subgroup of primitive-cell factor group operations that leave supercell lattice invariant.
const xtal::UnitCellIndexConverter & unitcell_index_converter() const
UnitCellIndexConverter for this superlattice/primlattice pair Used to convert from lattice translatio...
SymGroupRep::RemoteHandle const & site_permutation_symrep() const
permute_const_iterator permute_it(Index supercell_factor_group_index, Index translation_index) const
std::map< DoFKey, SublatSymReps > const & local_dof_symreps() const
Const reference local DoF matrix representations of the supercell's factor group.
SublatSymReps const & occ_symreps() const
SymGroupRep handle for occupant permutation representation of supercell's factor group An occupant pe...
SymGroupRep::RemoteHandle const & global_dof_symrep(DoFKey const &_key) const
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
Index ind_inverse(Index i) const
Get index of operation that is inverse of operation at(i)
virtual void sort()
Sort SymOp in the SymGroup.
Index ind_prod(Index i, Index j) const
Get index of operation that is result of multiplication of at(i)*at(j)
virtual void push_back(const SymOp &new_op)
void set_lattice(const Lattice &new_lat)
Lattice used for periodic comparisons (for instance, to generate multiplcation table)
Permutation const * permutation(Index i) const
pointer to Permutation corresponding to SymOpRepresentation at entry 'i' of this SymGroupRep Returns ...
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
SymOp inverse() const
get the inverse of this SymOp
const vector_type & tau() const
Const access of the cartesian translation vector, 'tau'.
static SymOp translation(const Eigen::Ref< const vector_type > &_tau)
static method to create operation that describes pure translation
SymOpRepresentation is the base class for anything describes a symmetry operation.
jsonParser & put_obj()
Puts new empty JSON object.
static UnitCell from_cartesian(const Eigen::Vector3d &cartesian_coord, const Lattice &tiling_unit)
Coordinate make_superlattice_coordinate(const UnitCell &ijk, const Superlattice &superlattice)
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.
void swap(ConfigDoF &A, ConfigDoF &B)
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.
void swap(PermuteIterator &a, PermuteIterator &b)
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.
static ReturnType from_json(const jsonParser &json)
Default from_json is equivalent to.