Class TableAlgebra

Class Documentation

class TableAlgebra

IRREP algebra defined by an explicit (symbolic) multiplication table. This can be used to describe arbitrary (also non-abelian) groups, with IRREPs being identified by their name.

Public Types

using irrep_type = std::string
using table_type = container::map<std::pair<irrep_type, irrep_type>, IrrepSet<irrep_type>>

Maps pairs of IRREPs to their product. For every pair of IRREPs, only one of the two orderings has to be present. Products involving the totally symmetric IRREP are implicit.

using conjugation_map = container::map<irrep_type, irrep_type>

Maps IRREPs to their complex conjugate. IRREPs not listed are taken to be their own complex conjugate. It suffices to list one direction of a conjugate pair (E1 -> E2 implies E2 -> E1).

Public Functions

TableAlgebra(irrep_type totally_symmetric, table_type table, conjugation_map conjugates = {})
Parameters:
  • totally_symmetric – Name of the totally symmetric IRREP

  • table – The multiplication table

  • conjugates – The complex conjugation map

Throws:

Exception – if the table or the conjugation map is inconsistent

const irrep_type &totally_symmetric() const
IrrepSet<irrep_type> product(const irrep_type &lhs, const irrep_type &rhs) const
Throws:

Exception – if the table doesn’t contain the requested product

irrep_type conjugate(const irrep_type &irrep) const