28 class SymGroup :
public Array<SymOp> {
57 assert(
size() &&
at(0).has_valid_master());
157 const std::string &
get_name()
const;
SymGroupRepID add_rotation_rep() const
PERIODICITY_TYPE m_group_periodicity
Specifies whether to use lattice periodicity when testing for equivalence.
virtual void sort()
Sort SymOp in the SymGroup.
jsonParser & to_json(jsonParser &json) const
Array< Array< Index > > multi_table
multi_table[i][j] gives index of operation that is result of at(i)*at(j)
void calc_space_group_in_cell(SymGroup &space_group, const Lattice &_cell) const
SymInfo info(Index i) const
void _generate_centralizers() const
ReturnArray< Array< Index > > left_cosets(const Array< SymOp > &subgroup, double tol=TOL) const
void from_json(ClexDescription &desc, const jsonParser &json)
Array< Array< Index > > alt_multi_table
alt_multi_table[i][j] gives index of operation that is result of at(i).inverse()*at(j) ...
const MasterSymGroup & master_group() const
Type-safe ID object for communicating and accessing Symmetry representation info. ...
SymGroup & apply_sym(const SymOp &op)
Calls 'apply_sym' on all SymOps in the group.
void get_rotation_groups() const
Space group (added by Donghee );.
void write(std::string filename, COORD_TYPE mode) const
Write the SymGroup to a file.
SymGroupRepID add_direct_sum_rep(const Array< SymGroupRepID > &rep_IDs) const
SymGroupRepID add_transformed_rep(SymGroupRepID orig_ID, const Eigen::MatrixXd &trans_mat) const
const SymGroup & point_group() const
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
SymGroupRepID add_empty_representation() const
Add a new empty representation.
Array< SymGroupRep * > m_rep_array
SymGroupRepID m_coord_rep_ID
ID of Cartesian representation.
SymGroup molecular_point_group(std::map< int, std::vector< Eigen::Vector3d > > coord_map)
SymGroup get_union(const SymGroup &other_group) const
Adds SymOps from 'other_group' and enforces the group property.
SymGroupRepID add_kronecker_rep(SymGroupRepID ID1, SymGroupRepID ID2) const
Array< std::string > irrep_names
Array< Array< Index > > elem_order_table
Array< std::string > group_name
SymGroupRepID coord_rep_ID() const
Get symrep ID of the representation that stores the Cartesian symop matrices.
Lattice const * m_lat_ptr
Pointer to a lattice for doing periodic comparisons.
void push_back(const SymOp &op)
Index ind_inverse(Index i) const
Get index of operation that is inverse of operation at(i)
void print(std::ostream &out, COORD_TYPE mode) const
Print the SymGroup to a stream.
const Array< Index >::X2 & get_multi_table() const
Array< Index >::X3 _small_subgroups() const
void print_locations(std::ostream &stream) const
print locations of the symmetry-generating element of each SymOp
Index group_index() const
jsonParser & to_json(jsonParser &json) const
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
MasterSymGroup & operator=(const MasterSymGroup &RHS)
bool is_irreducible() const
Eigen::Vector3d vector_type
SymGroupRep const & coord_rep() const
void _generate_subgroups() const
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
SymGroupRep const & get_irrep(Index i) const
Get symrep for a particular irrep.
Array< Array< Index > > centralizer_table
Simple struct to be used as return type for SymOp::info().
void _generate_character_table() const
SymOp within_cell(const SymOp &a, const Lattice &lat, PERIODICITY_TYPE periodicity)
double max_error()
This returns the group's max_error.
EigenIndex Index
For long integer indexing:
SymGroupRepID _add_coord_rep() const
void set_irrep_ID(Index i, SymGroupRepID ID) const
set symrep ID of a particular irrep
const Array< std::complex< double > >::X2 & character_table() const
const Array< Index >::X3 & subgroups() const
Array< Array< Index > > conjugacy_classes
const MasterSymGroup & master_group() const
const access of head group
ReturnArray< Index > get_irrep_decomposition() const
const Array< Index >::X2 & get_alt_multi_table() const
Array< int > group_number
void invalidate_multi_tables() const
void enforce_group(double tol=TOL, Index max_size=200)
Enforce group property by adding products of operations to the group.
bool contains_periodic(const SymOp &test_op, double tol=TOL) const
Check to see if a SymOp is contained in in SymGroup.
Index m_group_index
Index of this group, initialized from value of GROUP_COUNT upon construction.
void _generate_conjugacy_classes() const
void _generate_elem_order_table() const
const Array< Index >::X2 & get_conjugacy_classes() const
SymGroupRepID _add_representation(SymGroupRep *_rep_ptr) const
Array< Array< std::complex< double > > > m_character_table
SymGroupRepID reg_rep_ID() const
Index find_no_trans(const SymOp &test_op) const
Check to see if a SymOp is contained in in SymGroup and return its index.
void _generate_alt_multi_table() const
bool is_group(double tol=TOL) const
Check to see if SymGroup satisfies the group property.
void from_json(const jsonParser &json)
MasterSymGroup(PERIODICITY_TYPE init_type=PERIODIC)
std::vector< SymGroup > unique_subgroups() const
SymGroupRepID get_irrep_ID(Index i) const
Get symrep ID of a particular irrep.
const Lattice & lattice() const
Index find_periodic(const SymOp &test_op, double tol=TOL) const
SymOp::vector_type vector_type
SymOp::matrix_type matrix_type
SymGroup m_point_group
Copy of *this with translations removed.
PERIODICITY_TYPE periodicity() const
SymGroupRep const & reg_rep() const
Eigen::Matrix3d matrix_type
Array< SymGroupRepID > irrep_IDs
std::string possible_space_groups() const
virtual void push_back(const SymOp &new_op)
Array< std::string > class_names
SymGroupRepID m_reg_rep_ID
ID of 'regular representation', which is (size() X size()) representation constructed from alt_multi_...
void copy_no_trans(SymGroup &shiftless, bool keep_repeated=false) const
Fill up a SymGroup with *this minus the shifts.
SymGroup(PERIODICITY_TYPE init_type=PERIODIC)
Initialize by setting periodicity mode (default mode is PERIODIC)
SymGroupRep * _representation_ptr(SymGroupRepID _id) const
void set_lattice(const Lattice &new_lat)
SymGroupRepID _add_reg_rep() const
SymGroupRep is an alternative representation of a SymGroup for something other than real space...
const std::string & get_latex_name() const
void print_space_group_info(std::ostream &out) const
SymGroupRepID coord_rep_ID() const
Array< Array< SymOp > > rotation_groups
Space group (added by Donghee );.
Index class_of_op(Index i) const
Get conjugacy class index of operation at(i)
void from_json(const jsonParser &json)
void _generate_class_names() const
void _generate_irrep_names() const
const std::string & get_name() const
const Array< bool > & get_complex_irrep_list() const
Array< Index > index2conjugacy_class
SymGroupRepID identity_rep_ID(Index dim) const
Array< SymGroupRepID > m_identity_rep_IDs
identity representations: m_identity_rep_IDs[dim] refers to the Identity representation of dimention ...
bool _generate_multi_table() const
SymGroupRepID add_representation(const SymGroupRep &new_rep) const
Add a new representation by passing a reference. SymGroup will store a copy.
void print_character_table(std::ostream &stream)
Index ind_prod(Index i, Index j) const
Get index of operation that is result of multiplication of at(i)*at(j)
SymGroupRepID add_empty_representation() const
Add a new empty representation.
ReturnArray< Index > find_all_periodic(const Array< SymOp > &subgroup, double tol=TOL) const
std::string crystal_system
void calc_space_group_in_range(SymGroup &space_group, const Lattice &_cell, Eigen::Vector3i min_trans, Eigen::Vector3i max_trans) const
void get_point_group_type() const
SymGroup & operator+=(const Eigen::Ref< const SymOp::vector_type > &shift)
Cartesian translation of SymGroup origin by vector 'shift'.
Array< bool > complex_irrep
Array< Array< Array< Index > > > m_subgroups
static Index GROUP_COUNT
Counts number of instantiated MasterSymGroups, excluding ones created via copy.
bool compare_periodic(const SymOp &a, const SymOp &b, const Lattice &lat, PERIODICITY_TYPE periodicity, double _tol)
SymGroup & operator-=(const Eigen::Ref< const SymOp::vector_type > &shift)
ReturnArray< Index > op_indices() const
SymGroupRep const & representation(SymGroupRepID i) const
Const access of alternate Representations of a SymGroup.
void sort()
Sort SymOp in the SymGroup.
virtual void clear_tables()