CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::SupercellSymInfo Class Reference

#include <SupercellSymInfo.hh>

Detailed Description

A class that collects all symmetry information for for performing symmetry transformations on the site indices, site DoFs, and global DoFs of a Supercell or Configuration.

Definition at line 31 of file SupercellSymInfo.hh.

Public Types

using permute_const_iterator = PermuteIterator
 
using SublatSymReps = std::vector< SymGroupRep::RemoteHandle >
 

Public Member Functions

 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. More...
 
SymGroupRep::RemoteHandle const & basis_permutation_symrep () const
 
SymGroupRep::RemoteHandle const & site_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. More...
 
SymGroupRep::RemoteHandle const & global_dof_symrep (DoFKey const &_key) const
 
SublatSymReps const & occ_symreps () const
 SymGroupRep handle for occupant permutation representation of supercell's factor group An occupant permutation describes how the occupants at a site change identity due to a spatial transformation EXAMPLE: The label of a x-oriented dimer and a y-oriented dimer will be exchanged due to a 90-degree rotation about z If these are the only two species at the site, the permutation will have the form p=[1,0], with p[index_after]=index_before If sites are also permuted, then the occ_symrep is used as site_at(site_index_after).specie(index_after)=site_at(site_index_before).specie(p[index_after]);. More...
 
std::map< DoFKey, SublatSymReps > const & local_dof_symreps () const
 Const reference local DoF matrix representations of the supercell's factor group. More...
 
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 permuted, then the local_dof_symrep is used as site_at(site_index_after).dof_value(_key) = representation_matrix * site_at(site_index_before).dof_value(_key) More...
 
const xtal::UnitCellIndexConverterunitcell_index_converter () const
 UnitCellIndexConverter for this superlattice/primlattice pair Used to convert from lattice translations to site permutations. More...
 
const xtal::UnitCellCoordIndexConverterunitcellcoord_index_converter () const
 UnitCellCoordIndexConverter for this superstructure/primstructure pair Used to convert from lattice translations to site permutations. More...
 
const std::vector< Permutation > & translation_permutations () const
 Permutations describing reordering of sites of supercell due to a lattice translation of the primitive translation_permutation()[l] gives the site permutation due to translating to origin cell to unitcell[l] of the supercell. More...
 
SymGroup const & factor_group () const
 Subgroup of primitive-cell factor group operations that leave supercell lattice invariant. More...
 
bool has_aniso_occs () const
 true if any species are anisotropic, such that the occ_symreps are non-trivial More...
 
bool has_occupation_dofs () const
 true if any sublattice has more than one allowed occupant More...
 
const xtal::Latticesupercell_lattice () const
 const reference to supercell lattice More...
 
const xtal::Latticeprim_lattice () const
 const reference to primitive lattice More...
 
const xtal::Superlatticesuperlattice () const
 const reference to superlattice More...
 
Eigen::Matrix3l transformation_matrix_to_super () const
 long-int transformation from primitive lattice vectors to supercell lattice vectors supercell_lattice().lat_column_mat() = prim_lattice().lat_column_mat() * transformation_matrix_to_super() More...
 
permute_const_iterator translate_begin () const
 Begin PermuteIterator over pure translational permutations / Equivalent to permute_begin() More...
 
permute_const_iterator translate_end () const
 End PermuteIterator over pure translational permutations. More...
 
const Permutationfactor_group_permute (Index supercell_factor_group_index) const
 Site permutation corresponding to supercell factor group operation. More...
 
permute_const_iterator permute_begin () const
 
permute_const_iterator permute_end () const
 
permute_const_iterator permute_it (Index supercell_factor_group_index, Index translation_index) const
 
permute_const_iterator permute_it (Index supercell_factor_group_index, UnitCell translation) const
 

Private Attributes

xtal::Superlattice m_supercell_superlattice
 
xtal::UnitCellIndexConverter m_unitcell_to_index_converter
 
xtal::UnitCellCoordIndexConverter m_unitcellcoord_to_index_converter
 
std::vector< Permutationm_translation_permutations
 
SymGroup m_factor_group
 
SymGroupRep::RemoteHandle m_basis_perm_symrep
 
SublatSymReps m_occ_symreps
 
std::map< DoFKey, SublatSymRepsm_local_dof_symreps
 
std::map< DoFKey, SymGroupRep::RemoteHandlem_global_dof_symreps
 
bool m_has_aniso_occs
 
bool m_has_occupation_dofs
 
SymGroupRep::RemoteHandle m_site_perm_symrep
 

Member Typedef Documentation

◆ permute_const_iterator

◆ SublatSymReps

Constructor & Destructor Documentation

◆ SupercellSymInfo()

CASM::SupercellSymInfo::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.

Definition at line 56 of file SupercellSymInfo.cc.

Member Function Documentation

◆ basis_permutation_symrep()

SymGroupRep::RemoteHandle const & CASM::SupercellSymInfo::basis_permutation_symrep ( ) const

Returns a "RemoteHandle" to the sublattice permutation representation of the supercell's factor group

Returns a "RemoteHandle" to the sublattice permutation representation of the supercell's factor group

A sublattice permutation consists of an index permutation and an integer lattice translation

Definition at line 130 of file SupercellSymInfo.cc.

◆ factor_group()

SymGroup const& CASM::SupercellSymInfo::factor_group ( ) const
inline

Subgroup of primitive-cell factor group operations that leave supercell lattice invariant.

Definition at line 117 of file SupercellSymInfo.hh.

◆ factor_group_permute()

const Permutation & CASM::SupercellSymInfo::factor_group_permute ( Index  supercell_factor_group_index) const

Site permutation corresponding to supercell factor group operation.

Definition at line 179 of file SupercellSymInfo.cc.

◆ global_dof_symrep()

SymGroupRep::RemoteHandle const& CASM::SupercellSymInfo::global_dof_symrep ( DoFKey const &  _key) const
inline

Returns a "RemoteHandle" to the global DoF matrix representation of the supercell's factor group

Definition at line 63 of file SupercellSymInfo.hh.

◆ global_dof_symreps()

std::map<DoFKey, SymGroupRep::RemoteHandle> const& CASM::SupercellSymInfo::global_dof_symreps ( ) const
inline

Const reference global DoF matrix representations of the supercell's factor group.

Definition at line 56 of file SupercellSymInfo.hh.

◆ has_aniso_occs()

bool CASM::SupercellSymInfo::has_aniso_occs ( ) const
inline

true if any species are anisotropic, such that the occ_symreps are non-trivial

Definition at line 121 of file SupercellSymInfo.hh.

◆ has_occupation_dofs()

bool CASM::SupercellSymInfo::has_occupation_dofs ( ) const
inline

true if any sublattice has more than one allowed occupant

Definition at line 124 of file SupercellSymInfo.hh.

◆ local_dof_symreps() [1/2]

std::map<DoFKey, SublatSymReps> const& CASM::SupercellSymInfo::local_dof_symreps ( ) const
inline

Const reference local DoF matrix representations of the supercell's factor group.

Definition at line 80 of file SupercellSymInfo.hh.

◆ local_dof_symreps() [2/2]

SublatSymReps const& CASM::SupercellSymInfo::local_dof_symreps ( DoFKey const &  _key) const
inline

SymGroupRep handle for site DoF matrix representation of supercell's factor group If sites are also permuted, then the local_dof_symrep is used as site_at(site_index_after).dof_value(_key) = representation_matrix * site_at(site_index_before).dof_value(_key)

Definition at line 90 of file SupercellSymInfo.hh.

◆ occ_symreps()

SublatSymReps const& CASM::SupercellSymInfo::occ_symreps ( ) const
inline

SymGroupRep handle for occupant permutation representation of supercell's factor group An occupant permutation describes how the occupants at a site change identity due to a spatial transformation EXAMPLE: The label of a x-oriented dimer and a y-oriented dimer will be exchanged due to a 90-degree rotation about z If these are the only two species at the site, the permutation will have the form p=[1,0], with p[index_after]=index_before If sites are also permuted, then the occ_symrep is used as site_at(site_index_after).specie(index_after)=site_at(site_index_before).specie(p[index_after]);.

Definition at line 76 of file SupercellSymInfo.hh.

◆ permute_begin()

SupercellSymInfo::permute_const_iterator CASM::SupercellSymInfo::permute_begin ( ) const

Definition at line 197 of file SupercellSymInfo.cc.

◆ permute_end()

SupercellSymInfo::permute_const_iterator CASM::SupercellSymInfo::permute_end ( ) const

Definition at line 202 of file SupercellSymInfo.cc.

◆ permute_it() [1/2]

SupercellSymInfo::permute_const_iterator CASM::SupercellSymInfo::permute_it ( Index  supercell_factor_group_index,
Index  translation_index 
) const

Definition at line 206 of file SupercellSymInfo.cc.

◆ permute_it() [2/2]

SupercellSymInfo::permute_const_iterator CASM::SupercellSymInfo::permute_it ( Index  supercell_factor_group_index,
UnitCell  translation 
) const

Definition at line 211 of file SupercellSymInfo.cc.

◆ prim_lattice()

const xtal::Lattice& CASM::SupercellSymInfo::prim_lattice ( ) const
inline

const reference to primitive lattice

Definition at line 132 of file SupercellSymInfo.hh.

◆ site_permutation_symrep()

SymGroupRep::RemoteHandle const & CASM::SupercellSymInfo::site_permutation_symrep ( ) const

Returns a "RemoteHandle" to the site permutation representation of the supercell's factor group

Returns a "RemoteHandle" to the site permutation representation

A site permutation consists of an index permutation for the sites of the supercell. If

site_coordinate(index_after) = apply(operation,
site_coordinate(index_before)),

then this encodes permutations as

permutation[index_after] = index_before.

This convention treats fixed positions in space as having an unchanging order, and the permutation describes a rearrangement of objects among those sites, due to a transformation.

Note:

  • The permutation representation is constructed for this->prim().factor_group(), which may contain more operations than this->factor_group(), so the Permutation SymGroupRep may have 'gaps' at the operations that aren't in this->factor_group().
  • This function returns the "RemoteHandle" to the permutation representation which allows accessing permutation representations using the "supercell_factor_group_index" (index into this->factor_group()) instead of the "prim_factor_group_index" (index into this->prim().factor_group()).

Definition at line 164 of file SupercellSymInfo.cc.

◆ supercell_lattice()

const xtal::Lattice& CASM::SupercellSymInfo::supercell_lattice ( ) const
inline

const reference to supercell lattice

Definition at line 127 of file SupercellSymInfo.hh.

◆ superlattice()

const xtal::Superlattice& CASM::SupercellSymInfo::superlattice ( ) const
inline

const reference to superlattice

Definition at line 137 of file SupercellSymInfo.hh.

◆ transformation_matrix_to_super()

Eigen::Matrix3l CASM::SupercellSymInfo::transformation_matrix_to_super ( ) const
inline

long-int transformation from primitive lattice vectors to supercell lattice vectors supercell_lattice().lat_column_mat() = prim_lattice().lat_column_mat() * transformation_matrix_to_super()

Definition at line 145 of file SupercellSymInfo.hh.

◆ translate_begin()

SupercellSymInfo::permute_const_iterator CASM::SupercellSymInfo::translate_begin ( ) const

Begin PermuteIterator over pure translational permutations / Equivalent to permute_begin()

Begin iterator over translation permutations.

Definition at line 186 of file SupercellSymInfo.cc.

◆ translate_end()

SupercellSymInfo::permute_const_iterator CASM::SupercellSymInfo::translate_end ( ) const

End PermuteIterator over pure translational permutations.

End iterator over translation permutations.

Definition at line 192 of file SupercellSymInfo.cc.

◆ translation_permutations()

const std::vector<Permutation>& CASM::SupercellSymInfo::translation_permutations ( ) const
inline

Permutations describing reordering of sites of supercell due to a lattice translation of the primitive translation_permutation()[l] gives the site permutation due to translating to origin cell to unitcell[l] of the supercell.

Definition at line 111 of file SupercellSymInfo.hh.

◆ unitcell_index_converter()

const xtal::UnitCellIndexConverter& CASM::SupercellSymInfo::unitcell_index_converter ( ) const
inline

UnitCellIndexConverter for this superlattice/primlattice pair Used to convert from lattice translations to site permutations.

Definition at line 96 of file SupercellSymInfo.hh.

◆ unitcellcoord_index_converter()

const xtal::UnitCellCoordIndexConverter& CASM::SupercellSymInfo::unitcellcoord_index_converter ( ) const
inline

UnitCellCoordIndexConverter for this superstructure/primstructure pair Used to convert from lattice translations to site permutations.

Definition at line 102 of file SupercellSymInfo.hh.

Member Data Documentation

◆ m_basis_perm_symrep

SymGroupRep::RemoteHandle CASM::SupercellSymInfo::m_basis_perm_symrep
private

Definition at line 207 of file SupercellSymInfo.hh.

◆ m_factor_group

SymGroup CASM::SupercellSymInfo::m_factor_group
mutableprivate

Definition at line 205 of file SupercellSymInfo.hh.

◆ m_global_dof_symreps

std::map<DoFKey, SymGroupRep::RemoteHandle> CASM::SupercellSymInfo::m_global_dof_symreps
private

Definition at line 213 of file SupercellSymInfo.hh.

◆ m_has_aniso_occs

bool CASM::SupercellSymInfo::m_has_aniso_occs
private

Definition at line 216 of file SupercellSymInfo.hh.

◆ m_has_occupation_dofs

bool CASM::SupercellSymInfo::m_has_occupation_dofs
private

Definition at line 219 of file SupercellSymInfo.hh.

◆ m_local_dof_symreps

std::map<DoFKey, SublatSymReps> CASM::SupercellSymInfo::m_local_dof_symreps
private

Definition at line 211 of file SupercellSymInfo.hh.

◆ m_occ_symreps

SublatSymReps CASM::SupercellSymInfo::m_occ_symreps
private

Definition at line 209 of file SupercellSymInfo.hh.

◆ m_site_perm_symrep

SymGroupRep::RemoteHandle CASM::SupercellSymInfo::m_site_perm_symrep
mutableprivate

Definition at line 231 of file SupercellSymInfo.hh.

◆ m_supercell_superlattice

xtal::Superlattice CASM::SupercellSymInfo::m_supercell_superlattice
private

Couples the primitive lattice to the supercell lattice, and knows the transformation matrix

Definition at line 172 of file SupercellSymInfo.hh.

◆ m_translation_permutations

std::vector<Permutation> CASM::SupercellSymInfo::m_translation_permutations
private

Stores the permutations associated with making translations from a lattice point to the origin

Definition at line 188 of file SupercellSymInfo.hh.

◆ m_unitcell_to_index_converter

xtal::UnitCellIndexConverter CASM::SupercellSymInfo::m_unitcell_to_index_converter
private

Converts between ijk (UnitCell) values and their corresponding index in an unrolled vector

Definition at line 179 of file SupercellSymInfo.hh.

◆ m_unitcellcoord_to_index_converter

xtal::UnitCellCoordIndexConverter CASM::SupercellSymInfo::m_unitcellcoord_to_index_converter
private

Converts between bijk (UnitCellCoord) values and their corresponding linear index

Definition at line 184 of file SupercellSymInfo.hh.


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