CASM
1.1.0
A Clusters Approach to Statistical Mechanics
|
#include <SymGroup.hh>
Definition at line 283 of file SymGroup.hh.
Public Types | |
typedef SymOp::vector_type | vector_type |
typedef SymOp::matrix_type | matrix_type |
Public Member Functions | |
MasterSymGroup (PERIODICITY_TYPE init_type=PERIODIC) | |
MasterSymGroup (const MasterSymGroup &RHS) | |
~MasterSymGroup () | |
Index | group_index () const |
MasterSymGroup & | operator= (const MasterSymGroup &RHS) |
void | is_temporary_of (MasterSymGroup const &RHS) |
void | push_back (const SymOp &op) |
void | clear () |
void | sort () |
Sort SymOp in the SymGroup. More... | |
const SymGroup & | point_group () const |
SymGroupRep const & | representation (SymGroupRepID i) const |
Const access of alternate Representations of a SymGroup. More... | |
SymGroupRep const & | reg_rep () const |
SymGroupRep const & | coord_rep () const |
void | set_rep (SymGroupRepID _rep_ID, SymOpRepresentation const &_op_rep, Index op_index) const |
SymGroupRepID | add_representation (const SymGroupRep &new_rep) const |
SymGroupRepID | allocate_representation () const |
Add a new empty representation. More... | |
SymGroupRepID | reg_rep_ID () const |
SymGroupRepID | coord_rep_ID () const |
SymGroupRepID | identity_rep_ID (Index dim) const |
SymGroupRepID | add_kronecker_rep (SymGroupRepID ID1, SymGroupRepID ID2) const |
SymGroupRepID | add_direct_sum_rep (const std::vector< SymGroupRepID > &rep_IDs) const |
SymGroupRepID | add_transformed_rep (SymGroupRepID orig_ID, const Eigen::MatrixXd &trans_mat) const |
SymGroupRepID | add_rotation_rep () const |
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 |
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... | |
SymGroupRep const & | get_irrep (Index i) const |
Get symrep for a particular irrep. 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 |
Private Member Functions | |
SymGroupRep * | _representation_ptr (SymGroupRepID _id) const |
SymGroupRepID | _add_reg_rep () const |
SymGroupRepID | _add_coord_rep () const |
SymGroupRepID | _add_representation (SymGroupRep *_rep_ptr) const |
Private Attributes | |
Index | m_group_index |
std::vector< SymGroupRep * > | m_rep_array |
SymGroupRepID | m_coord_rep_ID |
ID of Cartesian representation. More... | |
SymGroupRepID | m_reg_rep_ID |
std::vector< SymGroupRepID > | m_identity_rep_IDs |
SymGroup | m_point_group |
Copy of *this with translations removed. More... | |
Static Private Attributes | |
static Index | GROUP_COUNT |
|
inherited |
Definition at line 45 of file SymGroup.hh.
|
inherited |
Definition at line 44 of file SymGroup.hh.
|
inline |
Definition at line 294 of file SymGroup.hh.
CASM::MasterSymGroup::MasterSymGroup | ( | const MasterSymGroup & | RHS | ) |
Definition at line 362 of file SymGroup.cc.
CASM::MasterSymGroup::~MasterSymGroup | ( | ) |
Definition at line 379 of file SymGroup.cc.
|
private |
Definition at line 494 of file SymGroup.cc.
|
private |
Definition at line 504 of file SymGroup.cc.
|
private |
Add a new representation by passing a pointer to SymGroupRep allocated via 'new'. MasterSymGroup will store the pointer, so don't delete it after calling
Definition at line 709 of file SymGroup.cc.
|
protectedinherited |
Definition at line 1746 of file SymGroup.cc.
|
protectedinherited |
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.
|
protectedinherited |
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.
|
protectedinherited |
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.
|
protectedinherited |
Definition at line 1253 of file SymGroup.cc.
|
protectedinherited |
Definition at line 1702 of file SymGroup.cc.
|
protectedinherited |
Definition at line 1337 of file SymGroup.cc.
|
private |
Definition at line 721 of file SymGroup.cc.
|
protectedinherited |
Definition at line 1281 of file SymGroup.cc.
SymGroupRepID CASM::MasterSymGroup::add_direct_sum_rep | ( | const std::vector< SymGroupRepID > & | rep_IDs | ) | const |
Definition at line 553 of file SymGroup.cc.
SymGroupRepID CASM::MasterSymGroup::add_kronecker_rep | ( | SymGroupRepID | ID1, |
SymGroupRepID | ID2 | ||
) | const |
Definition at line 530 of file SymGroup.cc.
SymGroupRepID CASM::MasterSymGroup::add_representation | ( | const SymGroupRep & | new_rep | ) | const |
Add a new representation by passing a reference. SymGroup will store a copy
Definition at line 702 of file SymGroup.cc.
SymGroupRepID CASM::MasterSymGroup::add_rotation_rep | ( | ) | const |
Definition at line 586 of file SymGroup.cc.
SymGroupRepID CASM::MasterSymGroup::add_transformed_rep | ( | SymGroupRepID | orig_ID, |
const Eigen::MatrixXd & | trans_mat | ||
) | const |
Definition at line 685 of file SymGroup.cc.
SymGroupRepID CASM::MasterSymGroup::allocate_representation | ( | ) | const |
Add a new empty representation.
Definition at line 694 of file SymGroup.cc.
Calls 'apply_sym' on all SymOps in the group.
Definition at line 1867 of file SymGroup.cc.
|
inherited |
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.
|
inherited |
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 |
Reset everything and delete all representations virtual in SymGroup, so this overrides
Reimplemented from CASM::SymGroup.
Definition at line 418 of file SymGroup.cc.
|
virtualinherited |
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.
SymGroupRep const & CASM::MasterSymGroup::coord_rep | ( | ) | const |
Definition at line 472 of file SymGroup.cc.
SymGroupRepID CASM::MasterSymGroup::coord_rep_ID | ( | ) | const |
Definition at line 439 of file SymGroup.cc.
|
inherited |
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.
|
inherited |
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.
|
inherited |
Definition at line 1644 of file SymGroup.cc.
|
inherited |
Definition at line 1661 of file SymGroup.cc.
|
inherited |
Get symrep for a particular irrep.
Definition at line 1614 of file SymGroup.cc.
|
inherited |
Get symrep ID of a particular irrep.
Definition at line 1581 of file SymGroup.cc.
|
inherited |
Definition at line 1687 of file SymGroup.cc.
|
inherited |
Definition at line 1633 of file SymGroup.cc.
|
inherited |
Definition at line 1668 of file SymGroup.cc.
Adds SymOps from 'other_group' and enforces the group property.
|
inline |
Definition at line 300 of file SymGroup.hh.
SymGroupRepID CASM::MasterSymGroup::identity_rep_ID | ( | Index | dim | ) | const |
Definition at line 453 of file SymGroup.cc.
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.
|
inherited |
Definition at line 1654 of file SymGroup.cc.
|
inherited |
Check to see if SymGroup satisfies the group property.
Definition at line 1805 of file SymGroup.cc.
|
inherited |
Definition at line 2116 of file SymGroup.cc.
|
inline |
Notify this object that it is a temporary copy of RHS to avoid weird errors This should only be used if absolutely necessary!
Definition at line 306 of file SymGroup.hh.
|
inherited |
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.
|
inherited |
Definition at line 1625 of file SymGroup.cc.
|
inlineinherited |
Definition at line 73 of file SymGroup.hh.
|
inherited |
Return the MasterSymGroup indices of the operations in this SymGroup.
Definition at line 857 of file SymGroup.cc.
|
inherited |
This returns the group's max_error.
Definition at line 946 of file SymGroup.cc.
|
inherited |
Return the MasterSymGroup indices of the operations in this SymGroup (equivalent to master_group_indices)
Definition at line 850 of file SymGroup.cc.
|
inherited |
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.
|
inherited |
Definition at line 2140 of file SymGroup.cc.
MasterSymGroup & CASM::MasterSymGroup::operator= | ( | const MasterSymGroup & | RHS | ) |
Definition at line 385 of file SymGroup.cc.
|
inlineinherited |
Definition at line 191 of file SymGroup.hh.
const SymGroup & CASM::MasterSymGroup::point_group | ( | ) | const |
Definition at line 409 of file SymGroup.cc.
|
inlineinherited |
Definition at line 193 of file SymGroup.hh.
|
inherited |
Print the SymGroup to a stream.
Definition at line 1874 of file SymGroup.cc.
|
inherited |
print locations of the symmetry-generating element of each SymOp
Definition at line 1958 of file SymGroup.cc.
|
virtual |
push_back sets home_group and op_index of added SymOp; virtual in SymGroup, so this overrides
Reimplemented from CASM::SymGroup.
Definition at line 400 of file SymGroup.cc.
SymGroupRep const & CASM::MasterSymGroup::reg_rep | ( | ) | const |
Definition at line 487 of file SymGroup.cc.
SymGroupRepID CASM::MasterSymGroup::reg_rep_ID | ( | ) | const |
Definition at line 446 of file SymGroup.cc.
const SymGroupRep & CASM::MasterSymGroup::representation | ( | SymGroupRepID | i | ) | const |
Const access of alternate Representations of a SymGroup.
Definition at line 717 of file SymGroup.cc.
|
inherited |
set symrep ID of a particular irrep
Definition at line 1572 of file SymGroup.cc.
|
inherited |
Lattice used for periodic comparisons (for instance, to generate multiplcation table)
Definition at line 814 of file SymGroup.cc.
void CASM::MasterSymGroup::set_rep | ( | SymGroupRepID | _rep_ID, |
SymOpRepresentation const & | _op_rep, | ||
Index | op_index | ||
) | const |
Definition at line 479 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 from CASM::SymGroup.
Definition at line 737 of file SymGroup.cc.
Definition at line 1695 of file SymGroup.cc.
|
inherited |
Definition at line 1403 of file SymGroup.cc.
|
inherited |
Write the SymGroup to a file.
|
mutableprotectedinherited |
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.
|
mutableprotectedinherited |
Definition at line 251 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 241 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 256 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 240 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 252 of file SymGroup.hh.
|
staticprivate |
Counts number of instantiated MasterSymGroups, excluding ones created via copy
Definition at line 363 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 242 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 245 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 255 of file SymGroup.hh.
|
mutableprivate |
ID of Cartesian representation.
Definition at line 374 of file SymGroup.hh.
|
private |
Index of this group, initialized from value of GROUP_COUNT upon construction
Definition at line 367 of file SymGroup.hh.
|
protectedinherited |
Specifies whether to use lattice periodicity when testing for equivalence.
Definition at line 229 of file SymGroup.hh.
|
mutableprivate |
identity representations: m_identity_rep_IDs[dim] refers to the Identity representation of dimention 'dim'
Definition at line 382 of file SymGroup.hh.
|
protectedinherited |
Pointer to a lattice for doing periodic comparisons.
Definition at line 226 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 258 of file SymGroup.hh.
|
mutableprivate |
Copy of *this with translations removed.
Definition at line 385 of file SymGroup.hh.
|
mutableprivate |
ID of 'regular representation', which is (size() X size()) representation constructed from alt_multi_table()
Definition at line 378 of file SymGroup.hh.
|
mutableprivate |
Collection of alternate representations of this symmetry group Stored as pointers to avoid weird behavior with resizing
Definition at line 371 of file SymGroup.hh.
Definition at line 249 of file SymGroup.hh.
|
mutableprotectedinherited |
multi_table[i][j] gives index of operation that is result of at(i)*at(j)
Definition at line 232 of file SymGroup.hh.
|
mutableprotectedinherited |
Definition at line 254 of file SymGroup.hh.