CASM  1.1.0
A Clusters Approach to Statistical Mechanics
SymRepTools.hh File Reference
#include <set>
#include "casm/container/multivector.hh"
#include "casm/external/Eigen/Core"
#include "casm/global/definitions.hh"

Go to the source code of this file.

Classes

struct  CASM::SymRepTools::IrrepInfo
 
struct  CASM::SymRepTools::IrrepWedge
 An irreducible wedge in an irreducible vector space. More...
 
class  CASM::SymRepTools::SubWedge
 SubWedge is a vector of IrrepWedge, one from each irreducible subspace Together, the IrrepWedges that comprise the Subwedge span the entire space However, it is likely that the orbit of equivalent SubWedges does not fill the entire space. More...
 
struct  CASM::VectorSpaceSymReport
 Summary of data associated with the action of a symmetry group on a vector space. More...
 

Namespaces

 CASM
 Main CASM namespace.
 
 CASM::SymRepTools
 

Typedefs

using CASM::SymRepTools::Symmetrizer = std::pair< Eigen::MatrixXcd, multivector< Eigen::VectorXcd >::X< 2 > >
 
using CASM::SymRepTools::SymmetrizerFunction = std::function< Symmetrizer(Eigen::Ref< const Eigen::MatrixXcd > const &f_subspace)>
 

Functions

std::vector< IrrepWedge > CASM::SymRepTools::irrep_wedges (SymGroup const &head_group, SymGroupRepID id, Eigen::Ref< const Eigen::MatrixXd > const &_subspace)
 
std::vector< IrrepWedge > CASM::SymRepTools::irrep_wedges (SymGroupRep const &_rep, SymGroup const &head_group, Eigen::Ref< const Eigen::MatrixXd > const &_subspace)
 
std::vector< SubWedge > CASM::SymRepTools::symrep_subwedges (SymGroup const &_group, SymGroupRepID id)
 
std::vector< SubWedge > CASM::SymRepTools::symrep_subwedges (SymGroup const &_group, SymGroupRepID id, Eigen::Ref< const Eigen::MatrixXd > const &_subspace)
 
std::vector< SubWedge > CASM::SymRepTools::symrep_subwedges (SymGroupRep const &_rep, SymGroup const &head_group)
 
std::vector< SubWedge > CASM::SymRepTools::symrep_subwedges (SymGroupRep const &_rep, SymGroup const &head_group, Eigen::Ref< const Eigen::MatrixXd > const &_subspace)
 
VectorSpaceSymReport CASM::vector_space_sym_report (SymGroupRep const &_rep, SymGroup const &head_group, Eigen::Ref< const Eigen::MatrixXd > const &_subspace, bool calc_wedges=false)
 Construct the VectorSpaceSymReport for. More...
 
multivector< Eigen::VectorXcd >::X< 2 > CASM::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 irrep. More...
 
multivector< Eigen::VectorXcd >::X< 2 > CASM::special_irrep_directions (SymGroupRep const &_rep, SymGroup const &head_group, Eigen::Ref< const Eigen::MatrixXcd > const &_subspace, double vec_compare_tol, bool all_subgroups=false)
 Assuming that _rep is an irrep of head_group, find high-symmetry directions throws if _rep is not an irrep. More...
 
SymRepTools::Symmetrizer CASM::irrep_symmetrizer (SymGroupRep const &_rep, const SymGroup &head_group, double vec_compare_tol)
 
SymRepTools::Symmetrizer CASM::irrep_symmetrizer (SymGroupRep const &_rep, const SymGroup &head_group, Eigen::Ref< const Eigen::MatrixXcd > const &_subspace, double vec_compare_tol)
 
Index CASM::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 number of invariant subspaces (with respect to head_group) that comprise the vector space supporting _rep More...
 
Eigen::MatrixXd CASM::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. More...
 
multivector< Eigen::VectorXd >::X< 3 > CASM::special_total_directions (SymGroupRep const &_rep, const SymGroup &head_group)
 finds high-symmetry directions within vector space supporting _rep, wrt symmetry of head_group More...
 
std::vector< std::vector< Eigen::MatrixXd > > CASM::special_subspaces (SymGroupRep const &_rep, const SymGroup &head_group)
 finds high-symmetry subspaces within vector space supporting _rep, wrt symmetry of head_group High-symmetry subspaces are closed under the action of a nontrivial subgroup of head_group, without spanning the entire vector space supporting _rep More...
 
std::vector< SymGroupRepID > CASM::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 corresponding to representtions of master_group. More...
 
bool CASM::is_irrep (SymGroupRep const &_rep, const SymGroup &head_group)
 Returns true if _rep is irreducible wrt head_group (does not use character table information) More...
 
Eigen::MatrixXd CASM::irrep_trans_mat (SymGroupRep const &_rep, const SymGroup &head_group)
 Finds the transformation matrix that block-diagonalizes this representation of head_group into irrep blocks It does not rely on the character table, but instead utilizes a brute-force method This routine additionally orients the resulting basis vectors along high-symmetry directions of the vector space on which they are defined. More...
 
std::pair< Eigen::MatrixXd, std::vector< Eigen::VectorXcd > > CASM::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 blocks It does not rely on the character table, but instead utilizes a brute-force method. More...
 
std::vector< SymRepTools::IrrepInfo > CASM::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 table, but instead utilizes a brute-force method. More...
 
std::vector< SymRepTools::IrrepInfo > CASM::irrep_decomposition (SymGroupRep const &_rep, SymGroup const &head_group, Eigen::Ref< const Eigen::MatrixXd > const &_subspace, bool allow_complex)
 Finds irreducible subspaces that comprise an underlying subspace It does not rely on the character table, but instead utilizes a brute-force method. More...
 
std::vector< SymRepTools::IrrepInfo > CASM::irrep_decomposition (SymGroupRep const &_rep, SymGroup const &head_group, SymRepTools::SymmetrizerFunction const &symmetrizer_func, bool allow_complex)
 Finds irreducible subspaces that comprise an underlying subspace It does not rely on the character table, but instead utilizes a brute-force method. More...
 
std::vector< SymRepTools::IrrepInfo > CASM::irrep_decomposition (SymGroupRep const &_rep, SymGroup const &head_group, SymRepTools::SymmetrizerFunction const &symmetrizer_func, Eigen::MatrixXd subspace, bool allow_complex)
 Finds irreducible subspaces that comprise an underlying subspace It does not rely on the character table, but instead utilizes a brute-force method. More...
 
SymGroupRep CASM::subset_permutation_rep (const SymGroupRep &permute_rep, const std::vector< std::set< Index >> &subsets)
 
SymGroupRep CASM::permuted_direct_sum_rep (const SymGroupRep &permute_rep, const std::vector< SymGroupRep const * > &sum_reps)
 
SymGroupRep CASM::kron_rep (const SymGroupRep &LHS, const SymGroupRep &RHS)