19 class SymGroupRepHandle;
31 class SymGroupRep :
public std::vector<SymOpRepresentation *> {
49 std::cerr <<
"WARNING: SymGroupRep initialized without valid "
50 "master_group! Bad things may happen!\n";
162 using std::vector<SymOpRepresentation *>::push_back;
163 using std::vector<SymOpRepresentation *>::resize;
198 if (head_group.size() == 0 || !head_group[0].has_valid_master()) {
199 std::cerr <<
"CRITICAL ERROR: Requested representation of an improperly "
200 "initialized SymGroup.\n"
241 head_group[0].has_valid_master());
SymGroupRep const & representation(SymGroupRepID i) const
Const access of alternate Representations of a SymGroup.
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
std::vector< Index > op_indices() const
const MasterSymGroup & master_group() const
SymGroupRepID symrep_ID() const
Index dim() const
Matrix dimension of representation.
SymGroupRep const * m_group_rep
Pointer to the SymGroupRep this is providing an interface to.
void set_rep(const SymGroup &head_group, SymGroupRepID symrep_ID)
SymGroupRepHandle(const SymGroup &head_group, SymGroupRepID symrep_ID)
Index size() const
Size of the associated SymGroupRep.
SymGroupRep const * operator->() const
bool operator==(const SymGroupRepHandle &RHS) const
std::vector< Index > m_subgroup_op_inds
MasterSymGroup indices of the operations in this SymGroupRep.
SymOpRepresentation const * operator[](Index i) const
SymGroupRep const * rep_ptr() const
SymGroupRep is an alternative representation of a SymGroup for something other than real space....
SymGroupRepID symrep_ID() const
Returns SymGroupRepID of this SymGroupRep in its master_group. If this is not contained in a master_g...
SymGroupRep & operator=(const SymGroupRep &RHS)
explicit assignment operator Necessary because SymGroupRep directly manages heap-allocated SymOpRepre...
const MasterSymGroup & master_group() const
Reference to MasterSymGroup for which this SymGroupRep is a group representation If a MasterSymGroup ...
SymGroupRep * copy() const
Returns pointer to unmanaged copy of this SymGroupRep.
~SymGroupRep()
explicit destructor Necessary because SymGroupRep directly manages heap-allocated SymOpRepresentation...
SymGroupRep(const MasterSymGroup *_home)
SymGroupRep(const SymGroup &_head, SymGroupRepID _rep_ID=SymGroupRepID())
void set_rep(Index op_index, const SymOpRepresentation &new_rep)
Sets the representation of operation at entry 'op_index' of this group representation Throws if this ...
SymGroupRepHandle RemoteHandle
SymGroupRepID m_rep_ID
rep_ID is unique identifier of a specific SymGroupRep instantiation
bool has_valid_master() const
Returns true if this SymGroupRep has valid pointer to a MasterSymGroup.
Eigen::MatrixXd const * MatrixXd(Index i) const
pointer to MatrixXd corresponding to SymOpRepresentation at entry 'i' of this SymGroupRep Returns nul...
Permutation const * permutation(Index i) const
pointer to Permutation corresponding to SymOpRepresentation at entry 'i' of this SymGroupRep Returns ...
SymGroupRep(SymGroupRep::NullInitializer init, Index _size)
Standalone constructor Use this constructor when MasterSymGroup is unknown or doesn't exist Ex: SymGr...
void set_master_group(const MasterSymGroup &master, const SymGroupRepID &_rep_ID)
Assign ma.
MasterSymGroup const * m_master_group
Pointer to the home_group that generated this SymGroupRep.
Index dim() const
Matrix dimension of representation.
Type-safe ID object for communicating and accessing Symmetry representation info.
bool empty() const
Returns true if SymGroupRepID has not been initialized with valid group_index or rep_index.
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
SymOpRepresentation is the base class for anything describes a symmetry operation.
SymGroupRep coord_transformed_copy(SymGroupRep const &_rep, const Eigen::MatrixXd &trans_mat)
Make a copy of representation on vector space 'V' that is transformed into a representation on vector...
INDEX_TYPE Index
For long integer indexing: