1 #ifndef CASM_SupercellSymInfo
2 #define CASM_SupercellSymInfo
16 namespace SymRepTools {
25 class PermuteIterator;
41 std::map<DoFKey, SymGroupRepID>
const &global_dof_symrep_IDs,
42 std::vector<SymGroupRepID>
const &occ_symrep_IDs,
43 std::map<
DoFKey, std::vector<SymGroupRepID> >
const
44 &local_dof_symrep_IDs);
158 Index supercell_factor_group_index)
const;
165 Index translation_index)
const;
251 std::string supercell_name);
257 DoFKey const &_key, std::vector<PermuteIterator>
const &_group);
A class that collects all symmetry information for for performing symmetry transformations on the sit...
const xtal::Superlattice & superlattice() const
const reference to superlattice
SymGroupRep::RemoteHandle m_basis_perm_symrep
const Permutation & factor_group_permute(Index supercell_factor_group_index) const
Site permutation corresponding to supercell factor group operation.
const xtal::UnitCellCoordIndexConverter & unitcellcoord_index_converter() const
UnitCellCoordIndexConverter for this superstructure/primstructure pair Used to convert from lattice t...
SupercellSymInfo(Lattice const &_prim_lat, Lattice const &_super_lat, Index number_of_sublats, SymGroup const &_prim_factor_group, SymGroupRepID basis_permutation_symrep_ID, std::map< DoFKey, SymGroupRepID > const &global_dof_symrep_IDs, std::vector< SymGroupRepID > const &occ_symrep_IDs, std::map< DoFKey, std::vector< SymGroupRepID > > const &local_dof_symrep_IDs)
Construct with primitive and super lattice, number of sublattice and all relevant representation IDs.
xtal::UnitCellCoordIndexConverter m_unitcellcoord_to_index_converter
SublatSymReps m_occ_symreps
permute_const_iterator translate_end() const
End PermuteIterator over pure translational permutations.
const xtal::Lattice & prim_lattice() const
const reference to primitive lattice
SymGroup const & factor_group() const
Subgroup of primitive-cell factor group operations that leave supercell lattice invariant.
permute_const_iterator permute_end() const
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
const xtal::Lattice & supercell_lattice() const
const reference to supercell lattice
const std::vector< Permutation > & translation_permutations() const
Permutations describing reordering of sites of supercell due to a lattice translation of the primitiv...
SublatSymReps const & local_dof_symreps(DoFKey const &_key) const
SymGroupRep handle for site DoF matrix representation of supercell's factor group If sites are also p...
xtal::UnitCellIndexConverter m_unitcell_to_index_converter
bool m_has_occupation_dofs
PermuteIterator permute_const_iterator
bool has_occupation_dofs() const
true if any sublattice has more than one allowed occupant
std::vector< SymGroupRep::RemoteHandle > SublatSymReps
permute_const_iterator permute_begin() const
permute_const_iterator permute_it(Index supercell_factor_group_index, Index translation_index) const
std::map< DoFKey, SymGroupRep::RemoteHandle > m_global_dof_symreps
SymGroupRep::RemoteHandle const & basis_permutation_symrep() const
std::map< DoFKey, SymGroupRep::RemoteHandle > const & global_dof_symreps() const
Const reference global DoF matrix representations of the supercell's factor group.
permute_const_iterator translate_begin() const
Begin PermuteIterator over pure translational permutations / Equivalent to permute_begin()
Eigen::Matrix3l transformation_matrix_to_super() const
long-int transformation from primitive lattice vectors to supercell lattice vectors supercell_lattice...
std::map< DoFKey, SublatSymReps > m_local_dof_symreps
SymGroupRep::RemoteHandle m_site_perm_symrep
std::map< DoFKey, SublatSymReps > const & local_dof_symreps() const
Const reference local DoF matrix representations of the supercell's factor group.
bool has_aniso_occs() const
true if any species are anisotropic, such that the occ_symreps are non-trivial
xtal::Superlattice m_supercell_superlattice
std::vector< Permutation > m_translation_permutations
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...
Type-safe ID object for communicating and accessing Symmetry representation info.
const Lattice & prim_lattice() const
const Eigen::Matrix3l & transformation_matrix_to_super() const
const Lattice & superlattice() const
xtal::Superlattice make_superlattice_from_supercell_name(Structure const &prim, std::string supercell_name)
Construct a Superlattice from the supercell name.
std::string make_canonical_supercell_name(Structure const &prim, xtal::Superlattice const &superlattice)
Make the canonical supercell name from a Superlattice.
std::string make_supercell_name(Structure const &prim, xtal::Superlattice const &superlattice)
Make the supercell name from a Superlattice.
std::pair< MasterSymGroup, SymGroupRepID > make_collective_dof_symrep(std::set< Index > const &site_indices, SupercellSymInfo const &_syminfo, DoFKey const &_key, std::vector< PermuteIterator > const &_group)
Make the matrix representation for group '_group' describing the transformation of DoF '_key' among a...
Eigen::Matrix3l make_hermite_normal_form(std::string hermite_normal_form_name)
std::string hermite_normal_form_name(const Eigen::Matrix3l &matrix)
INDEX_TYPE Index
For long integer indexing:
Matrix< long int, 3, 3 > Matrix3l