CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
CASM::MasterSymGroup Class Reference

#include <SymGroup.hh>

+ Inheritance diagram for CASM::MasterSymGroup:

Detailed Description

Definition at line 270 of file SymGroup.hh.

Public Types

typedef SymOp::vector_type vector_type
 
typedef SymOp::matrix_type matrix_type
 
typedef Array< SymOpX1
 
typedef Array< X1X2
 
typedef Array< X2X3
 
typedef Array< X3X4
 
typedef Array< X4X5
 
typedef Array< X5X6
 
typedef Array< X6X7
 
typedef Array< X7X8
 
typedef Array< X8X9
 
typedef SymOp value_type
 
typedef Index size_type
 
typedef SymOpiterator
 
typedef const SymOpconst_iterator
 

Public Member Functions

 MasterSymGroup (PERIODICITY_TYPE init_type=PERIODIC)
 
 MasterSymGroup (const MasterSymGroup &RHS)
 
 ~MasterSymGroup ()
 
Index group_index () const
 
MasterSymGroupoperator= (const MasterSymGroup &RHS)
 
void push_back (const SymOp &op)
 
void clear ()
 
void sort ()
 Sort SymOp in the SymGroup. More...
 
const SymGrouppoint_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
 
SymGroupRepID add_representation (const SymGroupRep &new_rep) const
 Add a new representation by passing a reference. SymGroup will store a copy. More...
 
SymGroupRepID add_empty_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 Array< SymGroupRepID > &rep_IDs) const
 
SymGroupRepID add_transformed_rep (SymGroupRepID orig_ID, const Eigen::MatrixXd &trans_mat) const
 
SymGroupRepID add_rotation_rep () const
 
jsonParserto_json (jsonParser &json) const
 
void from_json (const jsonParser &json)
 
virtual void clear_tables ()
 
void set_lattice (const Lattice &new_lat)
 
const Latticelattice () const
 
const MasterSymGroupmaster_group () const
 
ReturnArray< Indexop_indices () const
 
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
 
ReturnArray< Indexfind_all_periodic (const Array< SymOp > &subgroup, double tol=TOL) const
 
void sort (const CompareType &comp)
 
void sort (Array< Index > &ind_order)
 
SymGroup get_union (const SymGroup &other_group) const
 Adds SymOps from 'other_group' and enforces the group property. More...
 
SymGroupapply_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...
 
SymGroupoperator+= (const Eigen::Ref< const SymOp::vector_type > &shift)
 Cartesian translation of SymGroup origin by vector 'shift'. More...
 
SymGroupoperator-= (const Eigen::Ref< const SymOp::vector_type > &shift)
 
double max_error ()
 This returns the group's max_error. More...
 
ReturnArray< Array< Index > > left_cosets (const Array< SymOp > &subgroup, double tol=TOL) const
 
ReturnArray< Array< Index > > left_cosets (const Array< Index > &subgroup_inds) const
 
const Array< Index >::X2get_multi_table () const
 
const Array< Index >::X2get_alt_multi_table () const
 
void invalidate_multi_tables () const
 
const Array< Index >::X2get_conjugacy_classes () const
 
const Array< std::complex
< double > >::X2
character_table () const
 
const Array< bool > & get_complex_irrep_list () 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 Array< Index >::X3subgroups () const
 
void print_character_table (std::ostream &stream)
 
ReturnArray< Indexget_irrep_decomposition () const
 
bool is_irreducible () const
 
std::vector< SymGroupunique_subgroups () const
 
void get_rotation_groups () const
 Space group (added by Donghee );. More...
 
void get_point_group_type () const
 
void print_space_group_info (std::ostream &out) const
 
void copy_no_trans (SymGroup &shiftless, bool keep_repeated=false) const
 Fill up a SymGroup with *this minus the shifts. More...
 
SymInfo info (Index i) const
 
Index size () const
 
void swap (Array< SymOp > &RHS)
 
SymOpat (Index ind)
 
const SymOpat (Index ind) const
 
const SymOpoperator[] (Index ind) const
 
SymOpoperator[] (Index ind)
 
SymOpback ()
 
const SymOpback () const
 
SymOpconst * begin () const
 
SymOpbegin ()
 
SymOpconst * cbegin () const
 
SymOpconst * end () const
 
SymOpend ()
 
SymOpconst * cend () const
 
void pop_back ()
 
void remove (Index ind)
 
void resize (Index new_N)
 
void resize (Index new_N, const SymOp &fill_val)
 
void reserve (Index new_max)
 
Arrayappend (const Array &new_tail)
 
Arrayappend_unique (const Array &new_tail)
 
void swap_elem (Index i, Index j)
 
Arraypermute (const Array< Index > &perm_array)
 
Arrayipermute (const Array< Index > &perm_array)
 
bool next_permute ()
 
ReturnArray< Indexas_perm_inverse () const
 
ReturnArray< Indexas_perm_transform_by (const Array< Index > &trans_perm) const
 
const SymOpmax () const
 
const SymOpmin () const
 
ReturnArray< SymOpsub_array (Index ind_begin, Index ind_end) const
 
SymOp 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< SymOp > &RHS) const
 
bool operator!= (const Array< SymOp > &RHS) const
 
bool operator< (const Array< SymOp > &RHS) const
 
bool operator> (const Array< SymOp > &RHS) const
 
bool operator<= (const Array< SymOp > &RHS) const
 
bool operator>= (const Array< SymOp > &RHS) const
 
bool all_in (const Array &superset) const
 
Index coincidence (const Array &superset) const
 
Index incidences (const SymOp &test_elem) const
 
Index find (const SymOp &test_elem) const
 
Index reverse_find (const SymOp &test_elem) const
 Same as find, but starts from the last element of the Array. More...
 
Index almost_find (const SymOp &test_elem, double tol_val=TOL) const
 
Index almost_reverse_find (const SymOp &test_elem, double tol_val=TOL) const
 Same as almost_find, but start from the last element of the Array. More...
 
bool contains (const SymOp &test_elem) const
 
bool almost_contains (const SymOp &test_elem, double tol_val=TOL) const
 
void print_column (std::ostream &stream, const std::string &indent="") const
 

Static Public Member Functions

static ReturnArray< SymOpsequence (const SymOp &initial, const SymOp &final)
 Returns an array with the sequence (initial, ++initial, ..., final), inclusive. More...
 
static ReturnArray< SymOpsequence (const SymOp &initial, const SymOp &increment, const SymOp &final)
 

Protected Member Functions

void _generate_conjugacy_classes () const
 
void _generate_character_table () const
 
void _generate_centralizers () const
 
void _generate_elem_order_table () const
 
void _generate_class_names () const
 
void _generate_irrep_names () const
 
bool _generate_multi_table () const
 
void _generate_alt_multi_table () const
 
void _generate_subgroups () const
 
Array< Index >::X3 _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...
 
Array< Array< Index > > multi_table
 multi_table[i][j] gives index of operation that is result of at(i)*at(j) More...
 
Array< Array< Index > > alt_multi_table
 alt_multi_table[i][j] gives index of operation that is result of at(i).inverse()*at(j) More...
 
Array< Array< Index > > conjugacy_classes
 
Array< std::string > class_names
 
Array< Indexindex2conjugacy_class
 
Array< Array< std::complex
< double > > > 
m_character_table
 
Array< SymGroupRepIDirrep_IDs
 
Array< bool > complex_irrep
 
Array< std::string > irrep_names
 
Array< Array< Array< Index > > > m_subgroups
 
Array< Array< Index > > centralizer_table
 
Array< Array< Index > > elem_order_table
 
std::string name
 
std::string latex_name
 
std::string comment
 
double m_max_error
 
Array< Array< SymOp > > rotation_groups
 Space group (added by Donghee );. More...
 
std::string crystal_system
 
bool centric
 
Array< int > group_number
 
Array< std::string > group_name
 

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
 Index of this group, initialized from value of GROUP_COUNT upon construction. More...
 
Array< SymGroupRep * > m_rep_array
 
SymGroupRepID m_coord_rep_ID
 ID of Cartesian representation. More...
 
SymGroupRepID m_reg_rep_ID
 ID of 'regular representation', which is (size() X size()) representation constructed from alt_multi_table() More...
 
Array< SymGroupRepIDm_identity_rep_IDs
 identity representations: m_identity_rep_IDs[dim] refers to the Identity representation of dimention 'dim' More...
 
SymGroup m_point_group
 Copy of *this with translations removed. More...
 

Static Private Attributes

static Index GROUP_COUNT
 Counts number of instantiated MasterSymGroups, excluding ones created via copy. More...
 

Member Typedef Documentation

typedef const SymOp * CASM::Array< SymOp >::const_iterator
inherited

Definition at line 76 of file Array.hh.

typedef SymOp * CASM::Array< SymOp >::iterator
inherited

Definition at line 75 of file Array.hh.

Definition at line 36 of file SymGroup.hh.

typedef Index CASM::Array< SymOp >::size_type
inherited

Definition at line 74 of file Array.hh.

typedef SymOp CASM::Array< SymOp >::value_type
inherited

Definition at line 73 of file Array.hh.

Definition at line 35 of file SymGroup.hh.

typedef Array<SymOp > CASM::Array< SymOp >::X1
inherited

Definition at line 63 of file Array.hh.

typedef Array<X1> CASM::Array< SymOp >::X2
inherited

Definition at line 64 of file Array.hh.

typedef Array<X2> CASM::Array< SymOp >::X3
inherited

Definition at line 65 of file Array.hh.

typedef Array<X3> CASM::Array< SymOp >::X4
inherited

Definition at line 66 of file Array.hh.

typedef Array<X4> CASM::Array< SymOp >::X5
inherited

Definition at line 67 of file Array.hh.

typedef Array<X5> CASM::Array< SymOp >::X6
inherited

Definition at line 68 of file Array.hh.

typedef Array<X6> CASM::Array< SymOp >::X7
inherited

Definition at line 69 of file Array.hh.

typedef Array<X7> CASM::Array< SymOp >::X8
inherited

Definition at line 70 of file Array.hh.

typedef Array<X8> CASM::Array< SymOp >::X9
inherited

Definition at line 71 of file Array.hh.

Constructor & Destructor Documentation

CASM::MasterSymGroup::MasterSymGroup ( PERIODICITY_TYPE  init_type = PERIODIC)
inline

Definition at line 279 of file SymGroup.hh.

CASM::MasterSymGroup::MasterSymGroup ( const MasterSymGroup RHS)

Definition at line 24 of file SymGroup.cc.

CASM::MasterSymGroup::~MasterSymGroup ( )

Definition at line 43 of file SymGroup.cc.

Member Function Documentation

SymGroupRepID CASM::MasterSymGroup::_add_coord_rep ( ) const
private

Definition at line 148 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::_add_reg_rep ( ) const
private

Definition at line 158 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::_add_representation ( SymGroupRep _rep_ptr) const
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 367 of file SymGroup.cc.

void CASM::SymGroup::_generate_alt_multi_table ( ) const
protectedinherited

Definition at line 3286 of file SymGroup.cc.

void CASM::SymGroup::_generate_centralizers ( ) const
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 1861 of file SymGroup.cc.

void CASM::SymGroup::_generate_character_table ( ) const
protectedinherited

We need to figure out the dimensionality of each irreducible representation. We know that the total number of irreducible representations is the same as the total number of conjugacy classes, which we are calling nc. Also, we know that the sum of the squares of the dimensionalities of all of theirreducible representations must be equal to the size of the group, h.

If you're in this block, you have finished your character table using only real +/- 1 characters because all of your representations are dimension 1. Life is good. Also, your group is Abelian.

The group you are dealing with is one of the following: C1, C2, C2v, C1h (S1), C2h, S2 (Ci), D2, D2h.

This group is one of the following... If nc = 1: C1 If nc = 2: C2, C1h, S2. If nc = 4: C2v, C2h, D2 If nc = 8: D2h

If you're in this loop, then you're not done yet because you either have complex dimension 1 characters or higher dimension real characters still to look for. In this case, we need to check our group for inversion and mirror symmetries to determine if it can be broken up into subgroups in a convenient way that will help us construct the rest of the character table.

This part will handle groups that do not have special symmetries (sigma_h mirror planes or inversion). We then need to know if the group is Abelian. We can check this by looking at the number of conjugacy classes and comparing to the number of dimension 1 representations we are supposed to find. So if d1 = nc, the group must be Abelian. If this is not the case, the group must have higher dimension representations, which will be dealt with separately.

Then the group is cyclic & Abelian. This means that we can proceed by determining the smallest rotation angle in the group, which will give us omega because omega is just 2*pi*i/3 for 120 degree rotations, 2*pi*i/4 for 90 degree rotations, or 2*pi*i/6 for 60 degree rotations. We then "guess" powers of omega for our one of the complex characters if our representation and determine the rest of the characters in that representation by enforcing the cycle (which is equivalent to enforcing the multiplication table).

The possibilities here are: If nc = 3: C3 If nc = 4: C4 If nc = 6: C6

We need to keep in mind that the angle returned by get_rotation_angle() is real and is given in degrees. We need to convert it to complex radian form, which we will do using Euler's formula: e^(ix) = cos(x) + i*sin(x).

For every complex representation in the character table, there is also a complex conjugate representation, so once we have found a full set of complex characters, we can conjugate them to get another row in the table.

If we are in this loop, then our group has mirror or inversion symmetry, which means that we can determine its character table by breaking it up into subgroups and computing their character tables first. It turns out that all groups containing i or sigma_h symmetry can be broken up into the product of some other group and C1h or S2 group, for which the character table is really simple.

We can find this subgroup by looking at the sign representation, or equivalently, the determinants of our SymOp matrices. If we collect all SymOps that have positive determinant matrices, we will have found the large subgroup we are looking for.

Yes, this part is going to be recursive and therefore scary. But don't worry, we thought this through. Any subgroup that is created by only including group elements with positive determinant matrices cannot have either inversion or sigma_h symmetry. Thus, we can never end up in this loop more than once...

This next part is a little tricky. We're effectively going to paste our sub-character-table into our big character table four times. We have to be careful because we need to make sure that the columns or conjugacy classes that we are copying correspond correctly to the columns we are copying them into. Luckily, we know which SymOps the columns correspond do, we know a little bit about the order that they appear in, and we can check the weird ones by just hiting the normal ones with inversion or sigma_h. We're going to use the inversion symmetry whenever it is possible. There is at least one case where we are forced to use mirror symmetry, but this will become obvious.

At this point, we gave up on elegance entirely and decided to tabulate the three remaining character tables that would be stupidly impractical to attempt to calculate. So here they are. Point groups: Td, T, O

Definition at line 1888 of file SymGroup.cc.

void CASM::SymGroup::_generate_class_names ( ) const
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 1308 of file SymGroup.cc.

void CASM::SymGroup::_generate_conjugacy_classes ( ) const
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 2995 of file SymGroup.cc.

void CASM::SymGroup::_generate_elem_order_table ( ) const
protectedinherited

Definition at line 2744 of file SymGroup.cc.

void CASM::SymGroup::_generate_irrep_names ( ) const
protectedinherited

Definition at line 947 of file SymGroup.cc.

bool CASM::SymGroup::_generate_multi_table ( ) const
protectedinherited

Definition at line 3251 of file SymGroup.cc.

void CASM::SymGroup::_generate_subgroups ( ) const
protectedinherited

Definition at line 2836 of file SymGroup.cc.

SymGroupRep * CASM::MasterSymGroup::_representation_ptr ( SymGroupRepID  _id) const
private

Definition at line 379 of file SymGroup.cc.

Array< Index >::X3 CASM::SymGroup::_small_subgroups ( ) const
protectedinherited

Definition at line 2776 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::add_direct_sum_rep ( const Array< SymGroupRepID > &  rep_IDs) const

Definition at line 209 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::add_empty_representation ( ) const

Add a new empty representation.

Definition at line 353 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::add_kronecker_rep ( SymGroupRepID  ID1,
SymGroupRepID  ID2 
) const

Definition at line 187 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 361 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::add_rotation_rep ( ) const

Definition at line 243 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::add_transformed_rep ( SymGroupRepID  orig_ID,
const Eigen::MatrixXd &  trans_mat 
) const

Definition at line 344 of file SymGroup.cc.

bool CASM::Array< SymOp >::all_in ( const Array< SymOp > &  superset) const
inherited
bool CASM::Array< SymOp >::almost_contains ( const SymOp test_elem,
double  tol_val = TOL 
) const
inlineinherited

Definition at line 284 of file Array.hh.

Index CASM::Array< SymOp >::almost_find ( const SymOp test_elem,
double  tol_val = TOL 
) const
inherited
Index CASM::Array< SymOp >::almost_reverse_find ( const SymOp test_elem,
double  tol_val = TOL 
) const
inherited

Same as almost_find, but start from the last element of the Array.

Array& CASM::Array< SymOp >::append ( const Array< SymOp > &  new_tail)
inherited
Array& CASM::Array< SymOp >::append_unique ( const Array< SymOp > &  new_tail)
inherited
SymGroup & CASM::SymGroup::apply_sym ( const SymOp op)
inherited

Calls 'apply_sym' on all SymOps in the group.

Definition at line 3413 of file SymGroup.cc.

ReturnArray<Index> CASM::Array< SymOp >::as_perm_inverse ( ) const
inherited

Construct permutation that undoes the permutation performed by 'this' Inverse operation is calculated the same, regardless of permutation convention

ReturnArray<Index> CASM::Array< SymOp >::as_perm_transform_by ( const Array< Index > &  trans_perm) const
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

SymOp & CASM::Array< SymOp >::at ( Index  ind)
inlineinherited

Definition at line 157 of file Array.hh.

const SymOp & CASM::Array< SymOp >::at ( Index  ind) const
inlineinherited

Definition at line 162 of file Array.hh.

SymOp & CASM::Array< SymOp >::back ( )
inlineinherited

Definition at line 177 of file Array.hh.

const SymOp & CASM::Array< SymOp >::back ( ) const
inlineinherited

Definition at line 180 of file Array.hh.

SymOp const* CASM::Array< SymOp >::begin ( ) const
inlineinherited

Definition at line 185 of file Array.hh.

SymOp * CASM::Array< SymOp >::begin ( )
inlineinherited

Definition at line 192 of file Array.hh.

void CASM::SymGroup::calc_space_group_in_cell ( SymGroup space_group,
const Lattice _cell 
) const
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 3447 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
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 3489 of file SymGroup.cc.

SymOp const* CASM::Array< SymOp >::cbegin ( ) const
inlineinherited

Definition at line 189 of file Array.hh.

SymOp const* CASM::Array< SymOp >::cend ( ) const
inlineinherited

Definition at line 201 of file Array.hh.

const Array< std::complex< double > >::X2 & CASM::SymGroup::character_table ( ) const
inherited

Definition at line 3212 of file SymGroup.cc.

Index CASM::SymGroup::class_of_op ( Index  i) const
inherited

Get conjugacy class index of operation at(i)

Definition at line 3071 of file SymGroup.cc.

void CASM::MasterSymGroup::clear ( )
virtual

Reset everything and delete all representations virtual in SymGroup, so this overrides

Reimplemented from CASM::SymGroup.

Definition at line 83 of file SymGroup.cc.

void CASM::SymGroup::clear_tables ( )
virtualinherited

Definition at line 450 of file SymGroup.cc.

Index CASM::Array< SymOp >::coincidence ( const Array< SymOp > &  superset) const
inherited
bool CASM::Array< SymOp >::contains ( const SymOp test_elem) const
inlineinherited

Definition at line 281 of file Array.hh.

bool CASM::SymGroup::contains_periodic ( const SymOp test_op,
double  tol = TOL 
) const
inherited

Check to see if a SymOp is contained in in SymGroup.

Definition at line 3407 of file SymGroup.cc.

SymGroupRep const & CASM::MasterSymGroup::coord_rep ( ) const

Definition at line 132 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::coord_rep_ID ( ) const

Definition at line 100 of file SymGroup.cc.

void CASM::SymGroup::copy_no_trans ( SymGroup shiftless,
bool  keep_repeated = false 
) const
inherited

Fill up a SymGroup with *this minus the shifts.

Definition at line 907 of file SymGroup.cc.

SymOp const* CASM::Array< SymOp >::end ( ) const
inlineinherited

Definition at line 197 of file Array.hh.

SymOp * CASM::Array< SymOp >::end ( )
inlineinherited

Definition at line 204 of file Array.hh.

void CASM::SymGroup::enforce_group ( double  tol = TOL,
Index  max_size = 200 
)
inherited

Enforce group property by adding products of operations to the group.

Definition at line 3365 of file SymGroup.cc.

Index CASM::Array< SymOp >::find ( const SymOp test_elem) const
inherited
ReturnArray< Index > CASM::SymGroup::find_all_periodic ( const Array< SymOp > &  subgroup,
double  tol = TOL 
) const
inherited

Definition at line 3332 of file SymGroup.cc.

Index CASM::SymGroup::find_no_trans ( const SymOp test_op) const
inherited

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 3309 of file SymGroup.cc.

Index CASM::SymGroup::find_periodic ( const SymOp test_op,
double  tol = TOL 
) const
inherited

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 3321 of file SymGroup.cc.

void CASM::MasterSymGroup::from_json ( const jsonParser json)

re-throw exceptions

Definition at line 4596 of file SymGroup.cc.

const Array< Index >::X2 & CASM::SymGroup::get_alt_multi_table ( ) const
inherited

Definition at line 3180 of file SymGroup.cc.

const Array< bool > & CASM::SymGroup::get_complex_irrep_list ( ) const
inherited

Definition at line 3204 of file SymGroup.cc.

const Array< Index >::X2 & CASM::SymGroup::get_conjugacy_classes ( ) const
inherited

Definition at line 3197 of file SymGroup.cc.

SymGroupRep const & CASM::SymGroup::get_irrep ( Index  i) const
inherited

Get symrep for a particular irrep.

Definition at line 3121 of file SymGroup.cc.

ReturnArray< Index > CASM::SymGroup::get_irrep_decomposition ( ) const
inherited

Definition at line 3707 of file SymGroup.cc.

SymGroupRepID CASM::SymGroup::get_irrep_ID ( Index  i) const
inherited

Get symrep ID of a particular irrep.

Definition at line 3088 of file SymGroup.cc.

const std::string & CASM::SymGroup::get_latex_name ( ) const
inherited

Definition at line 3236 of file SymGroup.cc.

const Array< Index >::X2 & CASM::SymGroup::get_multi_table ( ) const
inherited

Definition at line 3170 of file SymGroup.cc.

const std::string & CASM::SymGroup::get_name ( ) const
inherited

Definition at line 3220 of file SymGroup.cc.

void CASM::SymGroup::get_point_group_type ( ) const
inherited

Definition at line 565 of file SymGroup.cc.

void CASM::SymGroup::get_rotation_groups ( ) const
inherited

Space group (added by Donghee );.

Definition at line 509 of file SymGroup.cc.

SymGroup CASM::SymGroup::get_union ( const SymGroup other_group) const
inherited

Adds SymOps from 'other_group' and enforces the group property.

Index CASM::MasterSymGroup::group_index ( ) const
inline

Definition at line 287 of file SymGroup.hh.

bool CASM::Array< SymOp >::has_fixed_points ( ) const
inherited

Checks whether any values are equal to their index – only valid for Array<Index>

SymGroupRepID CASM::MasterSymGroup::identity_rep_ID ( Index  dim) const

Definition at line 116 of file SymGroup.cc.

Index CASM::Array< SymOp >::incidences ( const SymOp test_elem) const
inherited
Index CASM::SymGroup::ind_inverse ( Index  i) const
inherited

Get index of operation that is inverse of operation at(i)

Definition at line 3046 of file SymGroup.cc.

Index CASM::SymGroup::ind_prod ( Index  i,
Index  j 
) const
inherited

Get index of operation that is result of multiplication of at(i)*at(j)

Definition at line 3055 of file SymGroup.cc.

SymInfo CASM::SymGroup::info ( Index  i) const
inherited

Definition at line 927 of file SymGroup.cc.

void CASM::SymGroup::invalidate_multi_tables ( ) const
inherited

Definition at line 3189 of file SymGroup.cc.

Array& CASM::Array< SymOp >::ipermute ( const Array< Index > &  perm_array)
inherited
bool CASM::Array< SymOp >::is_ascending ( ) const
inherited
bool CASM::Array< SymOp >::is_constant ( ) const
inherited
bool CASM::Array< SymOp >::is_descending ( ) const
inherited
bool CASM::SymGroup::is_group ( double  tol = TOL) const
inherited

Check to see if SymGroup satisfies the group property.

Definition at line 3346 of file SymGroup.cc.

bool CASM::SymGroup::is_irreducible ( ) const
inherited

Definition at line 3674 of file SymGroup.cc.

bool CASM::Array< SymOp >::is_permute ( ) const
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

const Lattice & CASM::SymGroup::lattice ( ) const
inherited

Definition at line 940 of file SymGroup.cc.

ReturnArray< Array< Index > > CASM::SymGroup::left_cosets ( const Array< SymOp > &  subgroup,
double  tol = TOL 
) const
inherited

Definition at line 3131 of file SymGroup.cc.

ReturnArray< Array< Index > > CASM::SymGroup::left_cosets ( const Array< Index > &  subgroup_inds) const
inherited

Definition at line 3139 of file SymGroup.cc.

const MasterSymGroup& CASM::SymGroup::master_group ( ) const
inlineinherited

Definition at line 56 of file SymGroup.hh.

const SymOp & CASM::Array< SymOp >::max ( ) const
inherited
double CASM::SymGroup::max_error ( )
inherited

This returns the group's max_error.

Definition at line 933 of file SymGroup.cc.

const SymOp & CASM::Array< SymOp >::min ( ) const
inherited
bool CASM::Array< SymOp >::next_permute ( )
inherited
ReturnArray< Index > CASM::SymGroup::op_indices ( ) const
inherited

Definition at line 474 of file SymGroup.cc.

bool CASM::Array< SymOp >::operator!= ( const Array< SymOp > &  RHS) const
inlineinherited

Definition at line 260 of file Array.hh.

SymGroup & CASM::SymGroup::operator+= ( const Eigen::Ref< const SymOp::vector_type > &  shift)
inherited

Cartesian translation of SymGroup origin by vector 'shift'.

Translation operators for origin shift need to be defined.

Definition at line 3691 of file SymGroup.cc.

SymGroup & CASM::SymGroup::operator-= ( const Eigen::Ref< const SymOp::vector_type > &  shift)
inherited

Definition at line 3699 of file SymGroup.cc.

bool CASM::Array< SymOp >::operator< ( const Array< SymOp > &  RHS) const
inherited
bool CASM::Array< SymOp >::operator<= ( const Array< SymOp > &  RHS) const
inlineinherited

Definition at line 265 of file Array.hh.

MasterSymGroup & CASM::MasterSymGroup::operator= ( const MasterSymGroup RHS)

Definition at line 49 of file SymGroup.cc.

bool CASM::Array< SymOp >::operator== ( const Array< SymOp > &  RHS) const
inherited
bool CASM::Array< SymOp >::operator> ( const Array< SymOp > &  RHS) const
inherited
bool CASM::Array< SymOp >::operator>= ( const Array< SymOp > &  RHS) const
inlineinherited

Definition at line 268 of file Array.hh.

const SymOp & CASM::Array< SymOp >::operator[] ( Index  ind) const
inlineinherited

Definition at line 167 of file Array.hh.

SymOp & CASM::Array< SymOp >::operator[] ( Index  ind)
inlineinherited

Definition at line 172 of file Array.hh.

PERIODICITY_TYPE CASM::SymGroup::periodicity ( ) const
inlineinherited

Definition at line 160 of file SymGroup.hh.

Array& CASM::Array< SymOp >::permute ( const Array< Index > &  perm_array)
inherited
const SymGroup & CASM::MasterSymGroup::point_group ( ) const

Definition at line 74 of file SymGroup.cc.

void CASM::Array< SymOp >::pop_back ( )
inlineinherited

Definition at line 212 of file Array.hh.

std::string CASM::SymGroup::possible_space_groups ( ) const
inlineinherited

Definition at line 164 of file SymGroup.hh.

void CASM::SymGroup::print ( std::ostream &  out,
COORD_TYPE  mode 
) const
inherited

Print the SymGroup to a stream.

Definition at line 3431 of file SymGroup.cc.

void CASM::SymGroup::print_character_table ( std::ostream &  stream)
inherited

Definition at line 1545 of file SymGroup.cc.

void CASM::Array< SymOp >::print_column ( std::ostream &  stream,
const std::string &  indent = "" 
) const
inherited
void CASM::SymGroup::print_locations ( std::ostream &  stream) const
inherited

print locations of the symmetry-generating element of each SymOp

Definition at line 3518 of file SymGroup.cc.

void CASM::SymGroup::print_space_group_info ( std::ostream &  out) const
inherited

Definition at line 883 of file SymGroup.cc.

void CASM::MasterSymGroup::push_back ( const SymOp op)
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 65 of file SymGroup.cc.

SymGroupRep const & CASM::MasterSymGroup::reg_rep ( ) const

Definition at line 140 of file SymGroup.cc.

SymGroupRepID CASM::MasterSymGroup::reg_rep_ID ( ) const

Definition at line 108 of file SymGroup.cc.

void CASM::Array< SymOp >::remove ( Index  ind)
inherited
const SymGroupRep & CASM::MasterSymGroup::representation ( SymGroupRepID  i) const

Const access of alternate Representations of a SymGroup.

Definition at line 375 of file SymGroup.cc.

void CASM::Array< SymOp >::reserve ( Index  new_max)
inherited
void CASM::Array< SymOp >::resize ( Index  new_N)
inherited
void CASM::Array< SymOp >::resize ( Index  new_N,
const SymOp fill_val 
)
inherited
Index CASM::Array< SymOp >::reverse_find ( const SymOp test_elem) const
inherited

Same as find, but starts from the last element of the Array.

static ReturnArray<SymOp > CASM::Array< SymOp >::sequence ( const SymOp initial,
const SymOp final 
)
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

static ReturnArray<SymOp > CASM::Array< SymOp >::sequence ( const SymOp initial,
const SymOp increment,
const SymOp final 
)
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::SymGroup::set_irrep_ID ( Index  i,
SymGroupRepID  ID 
) const
inherited

set symrep ID of a particular irrep

Definition at line 3079 of file SymGroup.cc.

void CASM::SymGroup::set_lattice ( const Lattice new_lat)
inherited

Definition at line 435 of file SymGroup.cc.

Index CASM::Array< SymOp >::size ( ) const
inlineinherited

Definition at line 145 of file Array.hh.

void CASM::Array< SymOp >::sort ( const CompareType &  comp)
inherited
void CASM::Array< SymOp >::sort ( Array< Index > &  ind_order)
inherited
void CASM::MasterSymGroup::sort ( )
virtual

Sort SymOp in the SymGroup.

  • If multiplication table can be generated:
    • Generate conjugacy classes
    • Sort SymOp in each conjugacy class
    • Sort each conjugacy class by the first SymOp in the class
  • Else:

SymOp are sorted by lexicographical comparison of: (-det, -trace, angle, axis, tau)

  • angle is positive
  • axis[0] is positive

Reimplemented from CASM::SymGroup.

Definition at line 394 of file SymGroup.cc.

ReturnArray<SymOp > CASM::Array< SymOp >::sub_array ( Index  ind_begin,
Index  ind_end 
) const
inherited
const Array< Index >::X3 & CASM::SymGroup::subgroups ( ) const
inherited

Definition at line 3243 of file SymGroup.cc.

SymOp CASM::Array< SymOp >::sum ( ) const
inherited
void CASM::Array< SymOp >::swap ( Array< SymOp > &  RHS)
inherited
void CASM::Array< SymOp >::swap_elem ( Index  i,
Index  j 
)
inlineinherited

Definition at line 231 of file Array.hh.

jsonParser & CASM::MasterSymGroup::to_json ( jsonParser json) const

Definition at line 4571 of file SymGroup.cc.

std::vector< SymGroup > CASM::SymGroup::unique_subgroups ( ) const
inherited

Definition at line 2913 of file SymGroup.cc.

void CASM::SymGroup::write ( std::string  filename,
COORD_TYPE  mode 
) const
inherited

Write the SymGroup to a file.

Definition at line 3421 of file SymGroup.cc.

Member Data Documentation

Array<Array<Index> > CASM::SymGroup::alt_multi_table
mutableprotectedinherited

alt_multi_table[i][j] gives index of operation that is result of at(i).inverse()*at(j)

Definition at line 218 of file SymGroup.hh.

Array<Array<Index> > CASM::SymGroup::centralizer_table
mutableprotectedinherited

Definition at line 238 of file SymGroup.hh.

bool CASM::SymGroup::centric
mutableprotectedinherited

Definition at line 250 of file SymGroup.hh.

Array<std::string> CASM::SymGroup::class_names
mutableprotectedinherited

Definition at line 223 of file SymGroup.hh.

std::string CASM::SymGroup::comment
mutableprotectedinherited

Definition at line 243 of file SymGroup.hh.

Array<bool> CASM::SymGroup::complex_irrep
mutableprotectedinherited

Definition at line 230 of file SymGroup.hh.

Array<Array<Index> > CASM::SymGroup::conjugacy_classes
mutableprotectedinherited

Definition at line 222 of file SymGroup.hh.

std::string CASM::SymGroup::crystal_system
mutableprotectedinherited

Definition at line 249 of file SymGroup.hh.

Array<Array<Index> > CASM::SymGroup::elem_order_table
mutableprotectedinherited

Definition at line 239 of file SymGroup.hh.

Index CASM::MasterSymGroup::GROUP_COUNT
staticprivate

Counts number of instantiated MasterSymGroups, excluding ones created via copy.

Definition at line 343 of file SymGroup.hh.

Array<std::string> CASM::SymGroup::group_name
mutableprotectedinherited

Definition at line 252 of file SymGroup.hh.

Array<int> CASM::SymGroup::group_number
mutableprotectedinherited

Definition at line 251 of file SymGroup.hh.

Array<Index> CASM::SymGroup::index2conjugacy_class
mutableprotectedinherited

Definition at line 224 of file SymGroup.hh.

Array<SymGroupRepID> CASM::SymGroup::irrep_IDs
mutableprotectedinherited

Definition at line 229 of file SymGroup.hh.

Array<std::string> CASM::SymGroup::irrep_names
mutableprotectedinherited

Definition at line 231 of file SymGroup.hh.

std::string CASM::SymGroup::latex_name
mutableprotectedinherited

Definition at line 242 of file SymGroup.hh.

Array<Array<std::complex<double> > > CASM::SymGroup::m_character_table
mutableprotectedinherited

Definition at line 228 of file SymGroup.hh.

SymGroupRepID CASM::MasterSymGroup::m_coord_rep_ID
mutableprivate

ID of Cartesian representation.

Definition at line 353 of file SymGroup.hh.

Index CASM::MasterSymGroup::m_group_index
private

Index of this group, initialized from value of GROUP_COUNT upon construction.

Definition at line 346 of file SymGroup.hh.

PERIODICITY_TYPE CASM::SymGroup::m_group_periodicity
protectedinherited

Specifies whether to use lattice periodicity when testing for equivalence.

Definition at line 212 of file SymGroup.hh.

Array<SymGroupRepID> CASM::MasterSymGroup::m_identity_rep_IDs
mutableprivate

identity representations: m_identity_rep_IDs[dim] refers to the Identity representation of dimention 'dim'

Definition at line 359 of file SymGroup.hh.

Lattice const* CASM::SymGroup::m_lat_ptr
protectedinherited

Pointer to a lattice for doing periodic comparisons.

Definition at line 209 of file SymGroup.hh.

double CASM::SymGroup::m_max_error
mutableprotectedinherited

Definition at line 245 of file SymGroup.hh.

SymGroup CASM::MasterSymGroup::m_point_group
mutableprivate

Copy of *this with translations removed.

Definition at line 362 of file SymGroup.hh.

SymGroupRepID CASM::MasterSymGroup::m_reg_rep_ID
mutableprivate

ID of 'regular representation', which is (size() X size()) representation constructed from alt_multi_table()

Definition at line 356 of file SymGroup.hh.

Array<SymGroupRep *> CASM::MasterSymGroup::m_rep_array
mutableprivate

Collection of alternate representations of this symmetry group Stored as pointers to avoid weird behavior with resizing

Definition at line 350 of file SymGroup.hh.

Array<Array<Array<Index> > > CASM::SymGroup::m_subgroups
mutableprotectedinherited

Definition at line 235 of file SymGroup.hh.

Array<Array<Index> > CASM::SymGroup::multi_table
mutableprotectedinherited

multi_table[i][j] gives index of operation that is result of at(i)*at(j)

Definition at line 215 of file SymGroup.hh.

std::string CASM::SymGroup::name
mutableprotectedinherited

Definition at line 241 of file SymGroup.hh.

Array<Array<SymOp> > CASM::SymGroup::rotation_groups
mutableprotectedinherited

Space group (added by Donghee );.

Definition at line 248 of file SymGroup.hh.


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