CASM
1.1.0
A Clusters Approach to Statistical Mechanics
|
#include <SymGroup.hh>
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operations are stored as their coordinate representation, as described by the SymOp class i.e., if SymOps 'A' and 'B' are in SymGroup, C=A*B is also in SymGroup if 'A' is in SymGroup, then A.inverse() is in SymGroup SymGroup always contains an identity operation.
Definition at line 42 of file SymGroup.hh.
Public Types | |
typedef SymOp::vector_type | vector_type |
typedef SymOp::matrix_type | matrix_type |
Public Member Functions | |
SymGroup (PERIODICITY_TYPE init_type=PERIODIC) | |
Initialize by setting periodicity mode (default mode is PERIODIC) More... | |
SymGroup (std::vector< SymOp > from_array, Lattice const *lat_ptr, PERIODICITY_TYPE init_type=PERIODIC) | |
template<typename IterType > | |
SymGroup (IterType begin, IterType end, PERIODICITY_TYPE init_type=PERIODIC) | |
virtual | ~SymGroup () |
virtual void | push_back (const SymOp &new_op) |
virtual void | clear () |
virtual void | clear_tables () |
void | set_lattice (const Lattice &new_lat) |
Lattice used for periodic comparisons (for instance, to generate multiplcation table) More... | |
const Lattice & | lattice () const |
Lattice used for periodic comparisons (for instance, to generate multiplcation table) More... | |
const MasterSymGroup & | master_group () const |
std::vector< Index > | op_indices () const |
std::vector< Index > | master_group_indices () const |
Return the MasterSymGroup indices of the operations in this SymGroup. More... | |
bool | contains_periodic (const SymOp &test_op, double tol=TOL) const |
Check to see if a SymOp is contained in in SymGroup. More... | |
Index | find_no_trans (const SymOp &test_op) const |
Check to see if a SymOp is contained in in SymGroup and return its index. More... | |
Index | find_periodic (const SymOp &test_op, double tol=TOL) const |
std::vector< Index > | find_all_periodic (const std::vector< SymOp > &subgroup, double tol=TOL) const |
virtual void | sort () |
Sort SymOp in the SymGroup. More... | |
SymGroup | get_union (const SymGroup &other_group) const |
Adds SymOps from 'other_group' and enforces the group property. More... | |
SymGroup & | apply_sym (const SymOp &op) |
Calls 'apply_sym' on all SymOps in the group. More... | |
Index | ind_prod (Index i, Index j) const |
Get index of operation that is result of multiplication of at(i)*at(j) More... | |
Index | ind_inverse (Index i) const |
Get index of operation that is inverse of operation at(i) More... | |
Index | class_of_op (Index i) const |
Get conjugacy class index of operation at(i) More... | |
void | set_irrep_ID (Index i, SymGroupRepID ID) const |
set symrep ID of a particular irrep More... | |
SymGroupRepID | get_irrep_ID (Index i) const |
Get symrep ID of a particular irrep. More... | |
SymGroupRepID | coord_rep_ID () const |
SymGroupRep const & | get_irrep (Index i) const |
Get symrep for a particular irrep. More... | |
SymGroupRepID | allocate_representation () const |
Add a new empty representation. More... | |
void | calc_space_group_in_cell (SymGroup &space_group, const Lattice &_cell) const |
void | calc_space_group_in_range (SymGroup &space_group, const Lattice &_cell, Eigen::Vector3i min_trans, Eigen::Vector3i max_trans) const |
bool | is_group (double tol=TOL) const |
Check to see if SymGroup satisfies the group property. More... | |
void | enforce_group (double tol=TOL, Index max_size=200) |
Enforce group property by adding products of operations to the group. More... | |
void | print_locations (std::ostream &stream) const |
print locations of the symmetry-generating element of each SymOp More... | |
void | write (std::string filename, COORD_TYPE mode) const |
Write the SymGroup to a file. More... | |
void | print (std::ostream &out, COORD_TYPE mode) const |
Print the SymGroup to a stream. More... | |
SymGroup & | operator+= (const Eigen::Ref< const SymOp::vector_type > &shift) |
Cartesian translation of SymGroup origin by vector 'shift'. More... | |
SymGroup & | operator-= (const Eigen::Ref< const SymOp::vector_type > &shift) |
double | max_error () |
This returns the group's max_error. More... | |
std::vector< std::vector< Index > > | left_cosets (const std::vector< SymOp > &subgroup, double tol=TOL) const |
template<typename IterType > | |
std::vector< std::vector< Index > > | left_cosets (IterType const &begin, IterType const &end) const |
const std::vector< std::vector< Index > > & | get_multi_table () const |
const std::vector< std::vector< Index > > & | get_alt_multi_table () const |
void | invalidate_multi_tables () const |
const std::vector< std::vector< Index > > & | get_conjugacy_classes () const |
const std::string & | get_name () const |
const std::string & | get_latex_name () const |
PERIODICITY_TYPE | periodicity () const |
std::string | possible_space_groups () const |
const std::vector< std::set< std::set< Index > > > & | subgroups () const |
bool | is_irreducible () const |
std::vector< SymGroup > | unique_subgroups () const |
SymGroup | copy_no_trans (bool keep_repeated=false) const |
Fill up a SymGroup with *this minus the shifts. More... | |
SymInfo | info (Index i) const |
std::vector< std::set< std::set< Index > > > | small_subgroups () const |
Static Public Member Functions | |
static SymGroup | lattice_point_group (Lattice const &_lat) |
Protected Member Functions | |
void | _generate_conjugacy_classes () const |
void | _generate_centralizers () const |
void | _generate_elem_order_table () const |
void | _generate_class_names () const |
bool | _generate_multi_table () const |
void | _generate_alt_multi_table () const |
void | _generate_subgroups () const |
std::vector< std::set< std::set< Index > > > | _small_subgroups () const |
Protected Attributes | |
Lattice const * | m_lat_ptr |
Pointer to a lattice for doing periodic comparisons. More... | |
PERIODICITY_TYPE | m_group_periodicity |
Specifies whether to use lattice periodicity when testing for equivalence. More... | |
multivector< Index >::X< 2 > | multi_table |
multi_table[i][j] gives index of operation that is result of at(i)*at(j) More... | |
multivector< Index >::X< 2 > | alt_multi_table |
std::vector< std::vector< Index > > | conjugacy_classes |
std::vector< std::string > | class_names |
std::vector< Index > | index2conjugacy_class |
std::vector< SymGroupRepID > | irrep_IDs |
std::vector< std::set< std::set< Index > > > | m_subgroups |
multivector< Index >::X< 2 > | centralizer_table |
multivector< Index >::X< 2 > | elem_order_table |
std::string | name |
std::string | latex_name |
std::string | comment |
double | m_max_error |
Definition at line 45 of file SymGroup.hh.
Definition at line 44 of file SymGroup.hh.
|
inline |
Initialize by setting periodicity mode (default mode is PERIODIC)
Definition at line 50 of file SymGroup.hh.
CASM::SymGroup::SymGroup | ( | std::vector< SymOp > | from_array, |
Lattice const * | lat_ptr, | ||
PERIODICITY_TYPE | init_type = PERIODIC |
||
) |
Definition at line 806 of file SymGroup.cc.
|
virtual |
Definition at line 773 of file SymGroup.cc.
|
protected |
Definition at line 1746 of file SymGroup.cc.
|
protected |
The centralizer of a subset S of a group G is the set of elements of G that commute with each element of S. The centralizer is a subgroup of G.
In our specific case, the subsets are the conjugacy classes, so we fill the centralizer_table with subgroups of G that commute with the corresponding conjugacy class.qq
Definition at line 1227 of file SymGroup.cc.
|
protected |
This will name your conjugacy classes according to some crazy convention, which is similar, but not exactly identical to the Schoenflies notation.
We start by finding the principal axes. Often, there will only be one. However, in cases like fcc, there can be several. All rotations that are about the principal axis will be named "XCn" if they are proper and "XSn" if they are improper. Here, X is the size of their conjugacy class, and n is the foldedness of the rotation, i.e. 60 degree rotations are 6-fold, while 120 degree rotations are 3-fold.
Definition at line 972 of file SymGroup.cc.
|
protected |
The number of irreducible representations is equal to the number of conjugacy classes.
The number of elements in each conjugacy class must be a divisor of the number of symmetry group operations.
Definition at line 1487 of file SymGroup.cc.
|
protected |
Definition at line 1253 of file SymGroup.cc.
|
protected |
Definition at line 1702 of file SymGroup.cc.
|
protected |
Definition at line 1337 of file SymGroup.cc.
Definition at line 1281 of file SymGroup.cc.
SymGroupRepID CASM::SymGroup::allocate_representation | ( | ) | const |
Add a new empty representation.
Definition at line 1601 of file SymGroup.cc.
Calls 'apply_sym' on all SymOps in the group.
Definition at line 1867 of file SymGroup.cc.
void CASM::SymGroup::calc_space_group_in_cell | ( | SymGroup & | space_group, |
const Lattice & | _cell | ||
) | const |
Gets all the space group operations in unit cell and stores them in space_group assuming that this SymGroup contains the factor group
Definition at line 1889 of file SymGroup.cc.
void CASM::SymGroup::calc_space_group_in_range | ( | SymGroup & | space_group, |
const Lattice & | _cell, | ||
Eigen::Vector3i | min_trans, | ||
Eigen::Vector3i | max_trans | ||
) | const |
gets all teh space group operations corresponding to translations in the specified range max_trans sets boundary of parillellipiped centered at origin.
Definition at line 1931 of file SymGroup.cc.
Get conjugacy class index of operation at(i)
Definition at line 1565 of file SymGroup.cc.
|
virtual |
Reimplemented in CASM::MasterSymGroup.
Definition at line 871 of file SymGroup.cc.
|
virtual |
Definition at line 826 of file SymGroup.cc.
Check to see if a SymOp is contained in in SymGroup.
Definition at line 1861 of file SymGroup.cc.
SymGroupRepID CASM::SymGroup::coord_rep_ID | ( | ) | const |
Get symrep ID of the representation that stores the Cartesian symop matrices
Definition at line 1589 of file SymGroup.cc.
SymGroup CASM::SymGroup::copy_no_trans | ( | bool | keep_repeated = false | ) | const |
Fill up a SymGroup with *this minus the shifts.
Definition at line 928 of file SymGroup.cc.
Enforce group property by adding products of operations to the group.
Definition at line 1821 of file SymGroup.cc.
std::vector< Index > CASM::SymGroup::find_all_periodic | ( | const std::vector< SymOp > & | subgroup, |
double | tol = TOL |
||
) | const |
Definition at line 1790 of file SymGroup.cc.
Check to see if a SymOp is contained in in SymGroup and return its index.
Check to see if a SymOp matrix ONLY is contained in SymGroup and return the index of this operation. This was originally written for pruning the factor groups of primitive structures to construct the factor groups of their superstructures to be consistent with the supercell lattice point groups.
Definition at line 1767 of file SymGroup.cc.
This is meant for factor groups. It will compare the Cartesian matrix of the test_op with those of the SymOps in the group. Upon a successful matrix match, it will attempt to match the shift shift vector with min_dist.
Definition at line 1779 of file SymGroup.cc.
const std::vector< std::vector< Index > > & CASM::SymGroup::get_alt_multi_table | ( | ) | const |
Definition at line 1644 of file SymGroup.cc.
const std::vector< std::vector< Index > > & CASM::SymGroup::get_conjugacy_classes | ( | ) | const |
Definition at line 1661 of file SymGroup.cc.
SymGroupRep const & CASM::SymGroup::get_irrep | ( | Index | i | ) | const |
Get symrep for a particular irrep.
Definition at line 1614 of file SymGroup.cc.
SymGroupRepID CASM::SymGroup::get_irrep_ID | ( | Index | i | ) | const |
Get symrep ID of a particular irrep.
Definition at line 1581 of file SymGroup.cc.
const std::string & CASM::SymGroup::get_latex_name | ( | ) | const |
Definition at line 1687 of file SymGroup.cc.
const std::vector< std::vector< Index > > & CASM::SymGroup::get_multi_table | ( | ) | const |
Definition at line 1633 of file SymGroup.cc.
const std::string & CASM::SymGroup::get_name | ( | ) | const |
Definition at line 1668 of file SymGroup.cc.
Adds SymOps from 'other_group' and enforces the group property.
Get index of operation that is inverse of operation at(i)
Definition at line 1540 of file SymGroup.cc.
Get index of operation that is result of multiplication of at(i)*at(j)
Definition at line 1550 of file SymGroup.cc.
Definition at line 942 of file SymGroup.cc.
void CASM::SymGroup::invalidate_multi_tables | ( | ) | const |
Definition at line 1654 of file SymGroup.cc.
bool CASM::SymGroup::is_group | ( | double | tol = TOL | ) | const |
Check to see if SymGroup satisfies the group property.
Definition at line 1805 of file SymGroup.cc.
bool CASM::SymGroup::is_irreducible | ( | ) | const |
Definition at line 2116 of file SymGroup.cc.
const Lattice & CASM::SymGroup::lattice | ( | ) | const |
Lattice used for periodic comparisons (for instance, to generate multiplcation table)
Definition at line 950 of file SymGroup.cc.
Definition at line 779 of file SymGroup.cc.
std::vector< std::vector< Index > > CASM::SymGroup::left_cosets | ( | const std::vector< SymOp > & | subgroup, |
double | tol = TOL |
||
) | const |
Definition at line 1625 of file SymGroup.cc.
|
inline |
Definition at line 73 of file SymGroup.hh.
std::vector< Index > CASM::SymGroup::master_group_indices | ( | ) | const |
Return the MasterSymGroup indices of the operations in this SymGroup.
Definition at line 857 of file SymGroup.cc.
double CASM::SymGroup::max_error | ( | ) |
This returns the group's max_error.
Definition at line 946 of file SymGroup.cc.
std::vector< Index > CASM::SymGroup::op_indices | ( | ) | const |
Return the MasterSymGroup indices of the operations in this SymGroup (equivalent to master_group_indices)
Definition at line 850 of file SymGroup.cc.
SymGroup & CASM::SymGroup::operator+= | ( | const Eigen::Ref< const SymOp::vector_type > & | shift | ) |
Cartesian translation of SymGroup origin by vector 'shift'.
Translation operators for origin shift need to be defined.
Definition at line 2132 of file SymGroup.cc.
SymGroup & CASM::SymGroup::operator-= | ( | const Eigen::Ref< const SymOp::vector_type > & | shift | ) |
Definition at line 2140 of file SymGroup.cc.
|
inline |
Definition at line 191 of file SymGroup.hh.
|
inline |
Definition at line 193 of file SymGroup.hh.
void CASM::SymGroup::print | ( | std::ostream & | out, |
COORD_TYPE | mode | ||
) | const |
Print the SymGroup to a stream.
Definition at line 1874 of file SymGroup.cc.
void CASM::SymGroup::print_locations | ( | std::ostream & | stream | ) | const |
print locations of the symmetry-generating element of each SymOp
Definition at line 1958 of file SymGroup.cc.
|
virtual |
Reimplemented in CASM::MasterSymGroup.
Definition at line 818 of file SymGroup.cc.
void CASM::SymGroup::set_irrep_ID | ( | Index | i, |
SymGroupRepID | ID | ||
) | const |
set symrep ID of a particular irrep
Definition at line 1572 of file SymGroup.cc.
void CASM::SymGroup::set_lattice | ( | const Lattice & | new_lat | ) |
Lattice used for periodic comparisons (for instance, to generate multiplcation table)
Definition at line 814 of file SymGroup.cc.
Definition at line 206 of file SymGroup.hh.
|
virtual |
SymOp are sorted by lexicographical comparison of: (-det, -trace, angle, axis, tau)
Reimplemented in CASM::MasterSymGroup.
Definition at line 2016 of file SymGroup.cc.
Definition at line 1695 of file SymGroup.cc.
std::vector< SymGroup > CASM::SymGroup::unique_subgroups | ( | ) | const |
Definition at line 1403 of file SymGroup.cc.
void CASM::SymGroup::write | ( | std::string | filename, |
COORD_TYPE | mode | ||
) | const |
Write the SymGroup to a file.
|
mutableprotected |
alt_multi_table[i][j] gives index of operation that is result of at(i).inverse()*at(j)
Definition at line 236 of file SymGroup.hh.
|
mutableprotected |
Definition at line 251 of file SymGroup.hh.
|
mutableprotected |
Definition at line 241 of file SymGroup.hh.
|
mutableprotected |
Definition at line 256 of file SymGroup.hh.
|
mutableprotected |
Definition at line 240 of file SymGroup.hh.
|
mutableprotected |
Definition at line 252 of file SymGroup.hh.
|
mutableprotected |
Definition at line 242 of file SymGroup.hh.
|
mutableprotected |
Definition at line 245 of file SymGroup.hh.
|
mutableprotected |
Definition at line 255 of file SymGroup.hh.
|
protected |
Specifies whether to use lattice periodicity when testing for equivalence.
Definition at line 229 of file SymGroup.hh.
|
protected |
Pointer to a lattice for doing periodic comparisons.
Definition at line 226 of file SymGroup.hh.
|
mutableprotected |
Definition at line 258 of file SymGroup.hh.
Definition at line 249 of file SymGroup.hh.
|
mutableprotected |
multi_table[i][j] gives index of operation that is result of at(i)*at(j)
Definition at line 232 of file SymGroup.hh.
|
mutableprotected |
Definition at line 254 of file SymGroup.hh.