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

#include <SymGroup.hh>

+ Inheritance diagram for CASM::SymGroup:

Detailed Description

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 33 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

 SymGroup (PERIODICITY_TYPE init_type=PERIODIC)
 Initialize by setting periodicity mode (default mode is PERIODIC) More...
 
 SymGroup (const Array< SymOp > &from_array, PERIODICITY_TYPE init_type=PERIODIC)
 
virtual void push_back (const SymOp &new_op)
 
virtual void clear ()
 
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
 
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...
 
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...
 
SymGroupRepID coord_rep_ID () const
 Get symrep ID of the representation that stores the Cartesian symop matrices. More...
 
SymGroupRep const & get_irrep (Index i) const
 Get symrep for a particular irrep. More...
 
SymGroupRepID add_empty_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...
 
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...
 
jsonParserto_json (jsonParser &json) const
 
void from_json (const jsonParser &json)
 
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)
 
void sort (const CompareType &comp)
 
void sort (Array< Index > &ind_order)
 
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
 

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::SymGroup::SymGroup ( PERIODICITY_TYPE  init_type = PERIODIC)
inline

Initialize by setting periodicity mode (default mode is PERIODIC)

Definition at line 38 of file SymGroup.hh.

CASM::SymGroup::SymGroup ( const Array< SymOp > &  from_array,
PERIODICITY_TYPE  init_type = PERIODIC 
)

Definition at line 425 of file SymGroup.cc.

Member Function Documentation

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

Definition at line 3286 of file SymGroup.cc.

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

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

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

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

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

Definition at line 2744 of file SymGroup.cc.

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

Definition at line 947 of file SymGroup.cc.

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

Definition at line 3251 of file SymGroup.cc.

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

Definition at line 2836 of file SymGroup.cc.

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

Definition at line 2776 of file SymGroup.cc.

SymGroupRepID CASM::SymGroup::add_empty_representation ( ) const

Add a new empty representation.

Definition at line 3109 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)

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

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

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

Definition at line 3212 of file SymGroup.cc.

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

Get conjugacy class index of operation at(i)

Definition at line 3071 of file SymGroup.cc.

void CASM::SymGroup::clear ( )
virtual

Reimplemented in CASM::MasterSymGroup.

Definition at line 490 of file SymGroup.cc.

void CASM::SymGroup::clear_tables ( )
virtual

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

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

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

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

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 
)

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

Definition at line 3332 of file SymGroup.cc.

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

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

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::SymGroup::from_json ( const jsonParser json)

re-throw exceptions

Definition at line 3832 of file SymGroup.cc.

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

Definition at line 3180 of file SymGroup.cc.

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

Definition at line 3204 of file SymGroup.cc.

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

Definition at line 3197 of file SymGroup.cc.

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

Get symrep for a particular irrep.

Definition at line 3121 of file SymGroup.cc.

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

Definition at line 3707 of file SymGroup.cc.

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

Get symrep ID of a particular irrep.

Definition at line 3088 of file SymGroup.cc.

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

Definition at line 3236 of file SymGroup.cc.

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

Definition at line 3170 of file SymGroup.cc.

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

Definition at line 3220 of file SymGroup.cc.

void CASM::SymGroup::get_point_group_type ( ) const

Definition at line 565 of file SymGroup.cc.

void CASM::SymGroup::get_rotation_groups ( ) const

Space group (added by Donghee );.

Definition at line 509 of file SymGroup.cc.

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

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

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

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

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

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

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

Definition at line 927 of file SymGroup.cc.

void CASM::SymGroup::invalidate_multi_tables ( ) const

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

Check to see if SymGroup satisfies the group property.

Definition at line 3346 of file SymGroup.cc.

bool CASM::SymGroup::is_irreducible ( ) const

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

Definition at line 940 of file SymGroup.cc.

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

Definition at line 3131 of file SymGroup.cc.

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

Definition at line 3139 of file SymGroup.cc.

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

Definition at line 56 of file SymGroup.hh.

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

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

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)

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)

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.

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
inline

Definition at line 160 of file SymGroup.hh.

Array& CASM::Array< SymOp >::permute ( const Array< Index > &  perm_array)
inherited
void CASM::Array< SymOp >::pop_back ( )
inlineinherited

Definition at line 212 of file Array.hh.

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

Definition at line 164 of file SymGroup.hh.

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

Print the SymGroup to a stream.

Definition at line 3431 of file SymGroup.cc.

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

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

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

Definition at line 883 of file SymGroup.cc.

void CASM::SymGroup::push_back ( const SymOp new_op)
virtual

Reimplemented in CASM::MasterSymGroup.

Definition at line 441 of file SymGroup.cc.

void CASM::Array< SymOp >::remove ( Index  ind)
inherited
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

set symrep ID of a particular irrep

Definition at line 3079 of file SymGroup.cc.

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

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::SymGroup::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 in CASM::MasterSymGroup.

Definition at line 3574 of file SymGroup.cc.

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

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::SymGroup::to_json ( jsonParser json) const

Definition at line 3740 of file SymGroup.cc.

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

Definition at line 2913 of file SymGroup.cc.

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

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
mutableprotected

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
mutableprotected

Definition at line 238 of file SymGroup.hh.

bool CASM::SymGroup::centric
mutableprotected

Definition at line 250 of file SymGroup.hh.

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

Definition at line 223 of file SymGroup.hh.

std::string CASM::SymGroup::comment
mutableprotected

Definition at line 243 of file SymGroup.hh.

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

Definition at line 230 of file SymGroup.hh.

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

Definition at line 222 of file SymGroup.hh.

std::string CASM::SymGroup::crystal_system
mutableprotected

Definition at line 249 of file SymGroup.hh.

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

Definition at line 239 of file SymGroup.hh.

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

Definition at line 252 of file SymGroup.hh.

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

Definition at line 251 of file SymGroup.hh.

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

Definition at line 224 of file SymGroup.hh.

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

Definition at line 229 of file SymGroup.hh.

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

Definition at line 231 of file SymGroup.hh.

std::string CASM::SymGroup::latex_name
mutableprotected

Definition at line 242 of file SymGroup.hh.

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

Definition at line 228 of file SymGroup.hh.

PERIODICITY_TYPE CASM::SymGroup::m_group_periodicity
protected

Specifies whether to use lattice periodicity when testing for equivalence.

Definition at line 212 of file SymGroup.hh.

Lattice const* CASM::SymGroup::m_lat_ptr
protected

Pointer to a lattice for doing periodic comparisons.

Definition at line 209 of file SymGroup.hh.

double CASM::SymGroup::m_max_error
mutableprotected

Definition at line 245 of file SymGroup.hh.

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

Definition at line 235 of file SymGroup.hh.

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

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
mutableprotected

Definition at line 241 of file SymGroup.hh.

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

Space group (added by Donghee );.

Definition at line 248 of file SymGroup.hh.


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