1 #ifndef CASM_SymRepTools
2 #define CASM_SymRepTools
7 #include "casm/external/Eigen/Core"
15 namespace SymRepTools {
21 std::pair<Eigen::MatrixXcd, multivector<Eigen::VectorXcd>::X<2>>;
26 Eigen::Ref<const Eigen::MatrixXcd>
const &f_subspace)>;
32 template <
typename Derived>
34 Eigen::VectorXcd tchar(1);
35 tchar[0] = std::complex<double>(
double(_trans_mat.rows()), 0.);
36 return IrrepInfo(_trans_mat.template cast<std::complex<double>>(), tchar);
41 IrrepInfo(Eigen::MatrixXcd _trans_mat, Eigen::VectorXcd _characters);
136 std::vector<IrrepWedge>
const &_iwedges);
145 Eigen::Ref<const Eigen::MatrixXd>
const &_subspace);
153 Eigen::Ref<const Eigen::MatrixXd>
const &_subspace);
166 Eigen::Ref<const Eigen::MatrixXd>
const &_subspace);
179 Eigen::Ref<const Eigen::MatrixXd>
const &_subspace);
192 std::vector<SymRepTools::IrrepInfo>
irreps;
217 Eigen::Ref<const Eigen::MatrixXd>
const &_subspace,
218 bool calc_wedges =
false);
233 double vec_compare_tol);
252 Eigen::Ref<const Eigen::MatrixXcd>
const &_subspace,
double vec_compare_tol,
253 bool all_subgroups =
false);
267 double vec_compare_tol);
283 Eigen::Ref<const Eigen::MatrixXcd>
const &_subspace,
284 double vec_compare_tol);
294 std::vector<SymRepTools::IrrepInfo>
const &irreps);
354 std::pair<Eigen::MatrixXd, std::vector<Eigen::VectorXcd>>
386 Eigen::Ref<const Eigen::MatrixXd>
const &_subspace,
bool allow_complex);
429 const std::vector<std::set<Index>> &subsets);
437 const std::vector<SymGroupRep const *> &sum_reps);
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
SymGroupRep is an alternative representation of a SymGroup for something other than real space....
Type-safe ID object for communicating and accessing Symmetry representation info.
SymGroupRep permuted_direct_sum_rep(const SymGroupRep &permute_rep, const std::vector< SymGroupRep const * > &sum_reps)
VectorSpaceSymReport vector_space_sym_report(DoFSpace const &dof_space, SupercellSymInfo const &sym_info, std::vector< PermuteIterator > const &group, bool calc_wedges=false)
Make VectorSpaceSymReport.
bool is_irrep(SymGroupRep const &_rep, const SymGroup &head_group)
Returns true if _rep is irreducible wrt head_group (does not use character table information)
Eigen::MatrixXd full_trans_mat(std::vector< SymRepTools::IrrepInfo > const &irreps)
Assumes that irreps are real, and concatenates their individual trans_mats to form larger trans_mat.
SymRepTools::Symmetrizer irrep_symmetrizer(SymGroupRep const &_rep, const SymGroup &head_group, double vec_compare_tol)
std::vector< SymRepTools::IrrepInfo > irrep_decomposition(SymGroupRep const &_rep, SymGroup const &head_group, bool allow_complex)
Finds irreducible subspaces that comprise an underlying subspace It does not rely on the character ta...
SymGroupRep subset_permutation_rep(const SymGroupRep &permute_rep, const std::vector< std::set< Index >> &subsets)
std::vector< std::vector< Eigen::MatrixXd > > special_subspaces(SymGroupRep const &_rep, const SymGroup &head_group)
finds high-symmetry subspaces within vector space supporting _rep, wrt symmetry of head_group High-sy...
SymGroupRep kron_rep(const SymGroupRep &LHS, const SymGroupRep &RHS)
multivector< Eigen::VectorXd >::X< 3 > special_total_directions(SymGroupRep const &_rep, const SymGroup &head_group)
finds high-symmetry directions within vector space supporting _rep, wrt symmetry of head_group
std::vector< SymGroupRepID > irrep_IDs(SymGroupRep const &_rep, const SymGroup &head_group)
Find irrep decomposition of _rep wrt group head_group and returns it as a list of SymGroupRepIDs corr...
Eigen::MatrixXd irrep_trans_mat(SymGroupRep const &_rep, const SymGroup &head_group)
Finds the transformation matrix that block-diagonalizes this representation of head_group into irrep ...
multivector< Eigen::VectorXcd >::X< 2 > special_irrep_directions(SymGroupRep const &_rep, SymGroup const &head_group, double vec_compare_tol)
Assuming that _rep is an irrep of head_group, find high-symmetry directions throws if _rep is not an ...
std::pair< Eigen::MatrixXd, std::vector< Eigen::VectorXcd > > irrep_trans_mat_and_characters(SymGroupRep const &_rep, const SymGroup &head_group, SymRepTools::SymmetrizerFunction symmetrizer_func)
Finds the transformation matrix that block-diagonalizes this representation of head_group into irrep ...
Index num_blocks(SymGroupRep const &_rep, const SymGroup &head_group)
counts number of nonzero blocks in matrix representation of head_group as specified by _rep Reveals n...
INDEX_TYPE Index
For long integer indexing:
Summary of data associated with the action of a symmetry group on a vector space.
std::vector< Eigen::MatrixXd > symgroup_rep
Matrix representation for each operation in the group – defines action of group on vector space.
std::vector< std::string > axis_glossary
Names given to individual axes in initial (un-adapted) vector space, corresponding to rows of symmetr...
Eigen::MatrixXd symmetry_adapted_dof_subspace
Symmetry-oriented subspace of the vector space (columns are the basis vectors)
std::vector< SymRepTools::SubWedge > irreducible_wedge
Irreducible wedge in the vector space encoded as a vector of symmetrically distinct SubWedges.
std::vector< SymRepTools::IrrepInfo > irreps
A list of all irreducible representation that make up the full representation.
typename multivector_impl::multivector_tmp< T, N >::type X