CASM
AClustersApproachtoStatisticalMechanics
|
#include <SymGroupRep.hh>
SymGroupRep is an alternative representation of a SymGroup for something other than real space. There is a one-to-one correspondence of SymOps in some SymGroup with the SymOpRepresentations in SymGroupRep SymGroupRep does not know or care about the specifics of what the SymOpRepresentations describe or how they are implemented.
Definition at line 30 of file SymGroupRep.hh.
Public Types | |
enum | NullInitializer { NO_HOME } |
typedef SymGroupRepHandle | RemoteHandle |
typedef Array < SymOpRepresentation * > | X1 |
typedef Array< X1 > | X2 |
typedef Array< X2 > | X3 |
typedef Array< X3 > | X4 |
typedef Array< X4 > | X5 |
typedef Array< X5 > | X6 |
typedef Array< X6 > | X7 |
typedef Array< X7 > | X8 |
typedef Array< X8 > | X9 |
typedef SymOpRepresentation * | value_type |
typedef Index | size_type |
typedef SymOpRepresentation ** | iterator |
typedef const SymOpRepresentation ** | const_iterator |
Public Member Functions | |
SymGroupRep (SymGroupRep::NullInitializer init, Index _size) | |
SymGroupRep (const SymGroup &_head, SymGroupRepID _rep_ID=SymGroupRepID()) | |
SymGroupRep (const SymGroupRep &RHS) | |
~SymGroupRep () | |
void | set_rep (const SymOpRepresentation &base_rep, const SymOpRepresentation &new_rep) const |
void | set_rep (const SymOp &base_rep, const SymOpRepresentation &new_rep) const |
void | set_rep (Index op_index, const SymOpRepresentation &new_rep) const |
const MasterSymGroup & | master_group () const |
bool | has_valid_master () const |
void | set_master_group (const MasterSymGroup &master, const SymGroupRepID &_rep_ID) |
SymGroupRepID | add_copy_to_master () const |
Adds copy of this representation its home_group. More... | |
SymGroupRep & | operator= (const SymGroupRep &RHS) |
void | clear () |
SymGroupRep * | copy () const |
void | print_permutation (std::ostream &stream) const |
void | print_MatrixXd (std::ostream &stream) const |
void | print_MatrixXd (std::ostream &stream, const SymGroup &subgroup) const |
Eigen::MatrixXd | block_shape_matrix () const |
Eigen::MatrixXd | block_shape_matrix (const SymGroup &subgroup) const |
Index | num_blocks () const |
Index | num_blocks (const SymGroup &subgroup) const |
Eigen::MatrixXd const * | get_MatrixXd (Index i) const |
Eigen::MatrixXd const * | get_MatrixXd (const SymOpRepresentation &) const |
Permutation const * | get_permutation (Index i) const |
Permutation const * | get_permutation (const SymOpRepresentation &) const |
void | push_back_copy (const SymOpRepresentation &_pushed) |
SymGroupRepID | get_ID () const |
std::vector< Eigen::MatrixXd > | irreducible_wedges (const SymGroup &head_group, std::vector< Index > &multiplicities) const |
multivector< Eigen::VectorXd > ::X< 3 > | calc_special_total_directions (const SymGroup &subgroup) const |
ReturnArray< Array < Eigen::MatrixXd > > | calc_special_subspaces (const SymGroup &subgroup) const |
ReturnArray< Index > | num_each_irrep () const |
ReturnArray< Index > | num_each_irrep (const SymGroup &sub_group, bool verbose=false) const |
ReturnArray< Index > | num_each_real_irrep (const SymGroup &subgroup, bool verbose=false) const |
ReturnArray< SymGroupRepID > | get_irrep_IDs (const SymGroup &subgroup) const |
bool | is_irrep () const |
bool | is_irrep (const SymGroup &head_group) const |
SymGroupRep | coord_transformed_copy (const Eigen::MatrixXd &trans_mat) const |
SymGroupRep | symmetry_adapted_copy (const SymGroup &head_group) const |
Eigen::MatrixXd | get_irrep_trans_mat (const SymGroup &head_group) const |
Eigen::MatrixXd | get_irrep_trans_mat (const SymGroup &head_group, std::vector< std::vector< Index > > &subspaces) const |
Eigen::MatrixXd | get_irrep_trans_mat_blind (const SymGroup &head_group) const |
ReturnArray< Eigen::MatrixXd > | get_projection_operators () const |
jsonParser & | to_json (jsonParser &json) const |
void | from_json (const jsonParser &json) |
Index | size () const |
void | swap (Array< SymOpRepresentation * > &RHS) |
SymOpRepresentation *& | at (Index ind) |
const SymOpRepresentation *& | at (Index ind) const |
const SymOpRepresentation *& | operator[] (Index ind) const |
SymOpRepresentation *& | operator[] (Index ind) |
SymOpRepresentation *& | back () |
const SymOpRepresentation *& | back () const |
SymOpRepresentation *const * | begin () const |
SymOpRepresentation ** | begin () |
SymOpRepresentation *const * | cbegin () const |
SymOpRepresentation *const * | end () const |
SymOpRepresentation ** | end () |
SymOpRepresentation *const * | cend () const |
void | push_back (const SymOpRepresentation *&toPush) |
void | pop_back () |
void | remove (Index ind) |
void | resize (Index new_N) |
void | resize (Index new_N, const SymOpRepresentation *&fill_val) |
void | reserve (Index new_max) |
void | sort (const CompareType &comp) |
void | sort (Array< Index > &ind_order) |
void | sort () |
Array & | append (const Array &new_tail) |
Array & | append_unique (const Array &new_tail) |
void | swap_elem (Index i, Index j) |
Array & | permute (const Array< Index > &perm_array) |
Array & | ipermute (const Array< Index > &perm_array) |
bool | next_permute () |
ReturnArray< Index > | as_perm_inverse () const |
ReturnArray< Index > | as_perm_transform_by (const Array< Index > &trans_perm) const |
const SymOpRepresentation *& | max () const |
const SymOpRepresentation *& | min () const |
ReturnArray < SymOpRepresentation * > | sub_array (Index ind_begin, Index ind_end) const |
SymOpRepresentation * | sum () const |
bool | is_ascending () const |
bool | is_descending () const |
bool | is_constant () const |
bool | is_permute () const |
bool | has_fixed_points () const |
Checks whether any values are equal to their index – only valid for Array<Index> More... | |
bool | operator== (const Array< SymOpRepresentation * > &RHS) const |
bool | operator!= (const Array< SymOpRepresentation * > &RHS) const |
bool | operator< (const Array< SymOpRepresentation * > &RHS) const |
bool | operator> (const Array< SymOpRepresentation * > &RHS) const |
bool | operator<= (const Array< SymOpRepresentation * > &RHS) const |
bool | operator>= (const Array< SymOpRepresentation * > &RHS) const |
bool | all_in (const Array &superset) const |
Index | coincidence (const Array &superset) const |
Index | incidences (const SymOpRepresentation *&test_elem) const |
Index | find (const SymOpRepresentation *&test_elem) const |
Index | reverse_find (const SymOpRepresentation *&test_elem) const |
Same as find, but starts from the last element of the Array. More... | |
Index | almost_find (const SymOpRepresentation *&test_elem, double tol_val=TOL) const |
Index | almost_reverse_find (const SymOpRepresentation *&test_elem, double tol_val=TOL) const |
Same as almost_find, but start from the last element of the Array. More... | |
bool | contains (const SymOpRepresentation *&test_elem) const |
bool | almost_contains (const SymOpRepresentation *&test_elem, double tol_val=TOL) const |
void | print_column (std::ostream &stream, const std::string &indent="") const |
Static Public Member Functions | |
static ReturnArray < SymOpRepresentation * > | sequence (const SymOpRepresentation *&initial, const SymOpRepresentation *&final) |
Returns an array with the sequence (initial, ++initial, ..., final), inclusive. More... | |
static ReturnArray < SymOpRepresentation * > | sequence (const SymOpRepresentation *&initial, const SymOpRepresentation *&increment, const SymOpRepresentation *&final) |
Private Member Functions | |
SymGroupRep () | |
SymGroupRep (const MasterSymGroup *_home) | |
Pointer version of constructor is private for internal construction of master-less representations. More... | |
void | calc_new_irreps (int max_iter=1000) const |
void | calc_new_irreps (const SymGroup &sub_group, int max_iter=1000) const |
ReturnArray< Array < Eigen::VectorXd > > | _calc_special_irrep_directions (const SymGroup &subgroup) const |
Eigen::MatrixXd | _symmetrized_irrep_trans_mat (const SymGroup &subgroup) const |
Private Attributes | |
SymGroupRepID | m_rep_ID |
rep_ID is unique identifier of a specific SymGroupRep instantiation More... | |
MasterSymGroup const * | m_master_group |
Pointer to the home_group that generated this SymGroupRep. More... | |
|
inherited |
|
inherited |
Definition at line 32 of file SymGroupRep.hh.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inline |
Use this constructor when MasterSymGroup is unknown or doesn't exist You must promise that you know what you're doing
Definition at line 38 of file SymGroupRep.hh.
|
inline |
Definition at line 42 of file SymGroupRep.hh.
CASM::SymGroupRep::SymGroupRep | ( | const SymGroupRep & | RHS | ) |
Definition at line 14 of file SymGroupRep.cc.
CASM::SymGroupRep::~SymGroupRep | ( | ) |
Definition at line 21 of file SymGroupRep.cc.
|
inlineprivate |
Definition at line 166 of file SymGroupRep.hh.
|
inlineprivate |
Pointer version of constructor is private for internal construction of master-less representations.
Definition at line 175 of file SymGroupRep.hh.
|
private |
Definition at line 471 of file SymGroupRep.cc.
|
private |
Find a new coordinate system oriented along high-symmetry directions in vector space 'V' as determined by the subset of SymOpRepresentations specified by 'subgroup'. The ROWS of trans_mat are the new basis vectors in terms of the old such that new_symrep_matrix = trans_mat * old_symrep_matrix * trans_mat.transpose();
Definition at line 304 of file SymGroupRep.cc.
SymGroupRepID CASM::SymGroupRep::add_copy_to_master | ( | ) | const |
Adds copy of this representation its home_group.
Definition at line 123 of file SymGroupRep.cc.
|
inherited |
|
inlineinherited |
|
inherited |
|
inherited |
Same as almost_find, but start from the last element of the Array.
|
inherited |
|
inherited |
|
inherited |
Construct permutation that undoes the permutation performed by 'this' Inverse operation is calculated the same, regardless of permutation convention
|
inherited |
Given N distinct objects labeled from 0 to N-1, a permutation 'P_permute' that physically permutes the objects (with labels) in terms of their labels, and a permutation 'L_permute' that permutes their labels only, rewrite 'P_permute' in terms of the relabeling induced by 'L_permute' Rearrange 'this' permutation to form an equivalent permutation for any list that has already been permuted by trans_perm. Does not (nearly certain of this) depend on permutation convention
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Eigen::MatrixXd CASM::SymGroupRep::block_shape_matrix | ( | ) | const |
Definition at line 180 of file SymGroupRep.cc.
Eigen::MatrixXd CASM::SymGroupRep::block_shape_matrix | ( | const SymGroup & | subgroup | ) | const |
Definition at line 193 of file SymGroupRep.cc.
|
private |
Definition at line 772 of file SymGroupRep.cc.
|
private |
Definition at line 787 of file SymGroupRep.cc.
ReturnArray< Array< Eigen::MatrixXd > > CASM::SymGroupRep::calc_special_subspaces | ( | const SymGroup & | subgroup | ) | const |
Definition at line 568 of file SymGroupRep.cc.
multivector< Eigen::VectorXd >::X< 3 > CASM::SymGroupRep::calc_special_total_directions | ( | const SymGroup & | head_group | ) | const |
Returns array of orbits of high-symmetry directions in the vector space on which this representation is defined. defining: result = calc_special_directions(my_group) result[i][j] is a direction that is invariant to a subgroup of 'my_group' result[i][k] is a direction that is equivalent to result[i][j] For any result[i][j], -result[i][j] must also be a special direction, but the properties of the group determine whether it is in result[i] or in some other orbit result[l]. If, for a result[i][j], -result[i][j] is not among the special directions, it means that result[i][j] is a 1d irrep that is invariant to 'my_group' (the irreducible 'wedge' spans that entire axis). For a 2d irrep, the irreducible wedge must span <= one quadrant. For a 3d irrep, it must span <= one octant
Definition at line 415 of file SymGroupRep.cc.
|
inlineinherited |
|
inlineinherited |
void CASM::SymGroupRep::clear | ( | ) |
Definition at line 128 of file SymGroupRep.cc.
|
inherited |
|
inlineinherited |
SymGroupRep CASM::SymGroupRep::coord_transformed_copy | ( | const Eigen::MatrixXd & | trans_mat | ) | const |
Make a copy of representation on vector space 'V' that is transformed into a representation on vector space 'W' 'trans_mat' is the unitary matrix that isomorphically maps 'V'->'W' (i.e., [w = trans_mat * v] and [v = trans_mat.transpose() * w] ) If the original representation to be transformed is just a temporary standalone SymGroupRep, be sure to delete it before falling out of scope
Definition at line 280 of file SymGroupRep.cc.
|
inline |
Definition at line 83 of file SymGroupRep.hh.
|
inlineinherited |
|
inlineinherited |
|
inherited |
void CASM::SymGroupRep::from_json | ( | const jsonParser & | json | ) |
This allocates a new object to 'at(i)'.
Definition at line 1490 of file SymGroupRep.cc.
|
inline |
Definition at line 113 of file SymGroupRep.hh.
ReturnArray< SymGroupRepID > CASM::SymGroupRep::get_irrep_IDs | ( | const SymGroup & | subgroup | ) | const |
Definition at line 747 of file SymGroupRep.cc.
Eigen::MatrixXd CASM::SymGroupRep::get_irrep_trans_mat | ( | const SymGroup & | head_group | ) | const |
Finds the transformation matrix that block-diagonalizes this representation into irrep blocks The ROWS of trans_mat are the new basis vectors in terms of the old such that new_symrep_matrix = trans_mat * old_symrep_matrix * trans_mat.transpose();
Definition at line 1018 of file SymGroupRep.cc.
Eigen::MatrixXd CASM::SymGroupRep::get_irrep_trans_mat | ( | const SymGroup & | head_group, |
std::vector< std::vector< Index > > & | subspaces | ||
) | const |
Finds the transformation matrix that block-diagonalizes this representation into irrep blocks The ROWS of trans_mat are the new basis vectors in terms of the old such that new_symrep_matrix = trans_mat * old_symrep_matrix * trans_mat.transpose(); Also populate 'subspaces' with lists of columns that form irreps
Definition at line 1029 of file SymGroupRep.cc.
Eigen::MatrixXd CASM::SymGroupRep::get_irrep_trans_mat_blind | ( | const SymGroup & | head_group | ) | const |
Definition at line 1157 of file SymGroupRep.cc.
Eigen::MatrixXd const * CASM::SymGroupRep::get_MatrixXd | ( | Index | i | ) | const |
Definition at line 253 of file SymGroupRep.cc.
Eigen::MatrixXd const * CASM::SymGroupRep::get_MatrixXd | ( | const SymOpRepresentation & | op | ) | const |
Definition at line 259 of file SymGroupRep.cc.
Permutation const * CASM::SymGroupRep::get_permutation | ( | Index | i | ) | const |
Definition at line 265 of file SymGroupRep.cc.
Permutation const * CASM::SymGroupRep::get_permutation | ( | const SymOpRepresentation & | op | ) | const |
Definition at line 271 of file SymGroupRep.cc.
ReturnArray< Eigen::MatrixXd > CASM::SymGroupRep::get_projection_operators | ( | ) | const |
Definition at line 1323 of file SymGroupRep.cc.
|
inherited |
Checks whether any values are equal to their index – only valid for Array<Index>
|
inline |
Definition at line 71 of file SymGroupRep.hh.
|
inherited |
|
inherited |
std::vector< Eigen::MatrixXd > CASM::SymGroupRep::irreducible_wedges | ( | const SymGroup & | head_group, |
std::vector< Index > & | multiplicities | ||
) | const |
Definition at line 442 of file SymGroupRep.cc.
|
inherited |
|
inherited |
|
inherited |
bool CASM::SymGroupRep::is_irrep | ( | ) | const |
Definition at line 981 of file SymGroupRep.cc.
bool CASM::SymGroupRep::is_irrep | ( | const SymGroup & | head_group | ) | const |
Definition at line 998 of file SymGroupRep.cc.
|
inherited |
Checks that Array contains values from 0 to perm_array.size()-1 and that no value is repeated does not depend on definition of permutation convention
|
inline |
Definition at line 66 of file SymGroupRep.hh.
|
inherited |
|
inherited |
|
inherited |
Index CASM::SymGroupRep::num_blocks | ( | ) | const |
Definition at line 207 of file SymGroupRep.cc.
Definition at line 226 of file SymGroupRep.cc.
ReturnArray< Index > CASM::SymGroupRep::num_each_irrep | ( | ) | const |
Definition at line 695 of file SymGroupRep.cc.
ReturnArray< Index > CASM::SymGroupRep::num_each_irrep | ( | const SymGroup & | sub_group, |
bool | verbose = false |
||
) | const |
Definition at line 706 of file SymGroupRep.cc.
ReturnArray< Index > CASM::SymGroupRep::num_each_real_irrep | ( | const SymGroup & | subgroup, |
bool | verbose = false |
||
) | const |
Definition at line 668 of file SymGroupRep.cc.
|
inlineinherited |
|
inherited |
|
inlineinherited |
SymGroupRep & CASM::SymGroupRep::operator= | ( | const SymGroupRep & | RHS | ) |
Definition at line 27 of file SymGroupRep.cc.
|
inherited |
|
inherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inherited |
|
inlineinherited |
|
inherited |
void CASM::SymGroupRep::print_MatrixXd | ( | std::ostream & | stream | ) | const |
Definition at line 152 of file SymGroupRep.cc.
void CASM::SymGroupRep::print_MatrixXd | ( | std::ostream & | stream, |
const SymGroup & | subgroup | ||
) | const |
Definition at line 167 of file SymGroupRep.cc.
void CASM::SymGroupRep::print_permutation | ( | std::ostream & | stream | ) | const |
Definition at line 138 of file SymGroupRep.cc.
|
inherited |
void CASM::SymGroupRep::push_back_copy | ( | const SymOpRepresentation & | _pushed | ) |
Definition at line 244 of file SymGroupRep.cc.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
Same as find, but starts from the last element of the Array.
|
staticinherited |
Returns an array with the sequence (initial, ++initial, ..., final), inclusive.
Returns an array with the sequence (initial, ++initial, ..., final), inclusive requires that operator<() and operator++() are defined on type T
|
staticinherited |
Returns an array with the sequence (initial, initial+increment, ..., final?), inclusive if final is in the sequence requires that operator<() and operator+=() are defined on type T
Returns an array with the sequence (initial, initial+increment, ..., final?), inclusive if final is in the sequence
void CASM::SymGroupRep::set_master_group | ( | const MasterSymGroup & | master, |
const SymGroupRepID & | _rep_ID | ||
) |
Definition at line 43 of file SymGroupRep.cc.
void CASM::SymGroupRep::set_rep | ( | const SymOpRepresentation & | base_rep, |
const SymOpRepresentation & | new_rep | ||
) | const |
SPECIAL METHOD: const, but it modifies symop representation 'i', after performing appropriate checks. Do not refer to this as an example of how to write mutators. Critical Failure if symop representation 'i' is already initialized
Definition at line 82 of file SymGroupRep.cc.
void CASM::SymGroupRep::set_rep | ( | const SymOp & | base_rep, |
const SymOpRepresentation & | new_rep | ||
) | const |
Definition at line 65 of file SymGroupRep.cc.
void CASM::SymGroupRep::set_rep | ( | Index | op_index, |
const SymOpRepresentation & | new_rep | ||
) | const |
Definition at line 102 of file SymGroupRep.cc.
|
inlineinherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inlineinherited |
|
inline |
Make copy of (*this) that is transformed so that axes are oriented along high-symmetry direction and confined to subspaces that transform as irreps.
Definition at line 137 of file SymGroupRep.hh.
jsonParser & CASM::SymGroupRep::to_json | ( | jsonParser & | json | ) | const |
Definition at line 1347 of file SymGroupRep.cc.
|
private |
Pointer to the home_group that generated this SymGroupRep.
Definition at line 164 of file SymGroupRep.hh.
|
mutableprivate |
rep_ID is unique identifier of a specific SymGroupRep instantiation
Definition at line 161 of file SymGroupRep.hh.