SyTen
syten::Rep Class Reference

Single irrep of a (physical) symmetry group. More...

#include <rep.h>

+ Collaboration diagram for syten::Rep:

Public Member Functions

Rep adjoint () const
 Returns the adjoint of this irrep. More...
 
Index degree () const
 Returns the degree of the group to which this irrep belongs. More...
 
Index dim () const
 Returns the dimension of the irrep. More...
 
bool isFermionic () const
 Returns true if this individual rep is fermionic, i.e. More...
 
bool isVacuum () const
 Returns true if this irrep is the vacuum irrep, i.e. all labels are 0. More...
 
template<class Archive >
void load (Archive &ar, const unsigned int in_version)
 Load and reconstruct the irrep. More...
 
bool operator!= (Rep const &b) const
 Returns true iff operator==() returns false. More...
 
bool operator< (Rep const &b) const
 Returns true if the first label that is not equal in both reps is smaller in *this More...
 
Repoperator= (Rep const &o)=default
 Copy assignment. More...
 
bool operator== (Rep const &b) const
 Returns true iff both irreps belong to the same (mathematical) symmetry and are the same irrep. More...
 
 Rep (std::vector< DenseTensor< 2, MDef > > rOp_, std::vector< DenseTensor< 2, MDef > > lOp_, std::vector< DenseTensor< 2, MDef > > zOp_, RepLabel label_, Group group_, char phys_, Fermionic ferm_=Fermionic::Never)
 Standard constructor for a new irrep if that irrep is not yet contained in the registry. More...
 
 Rep (RepLabel label_, Group group_, char phys_, Fermionic ferm_=Fermionic::Never)
 Ctor if the group is already known in the registry, not defining matrices are necessary then. More...
 
 Rep ()=default
 Default ctor initialises an undefined irrep. More...
 
 Rep (Rep const &old)=default
 Copy ctor. More...
 
template<class Archive >
void save (Archive &ar, const unsigned int) const
 Save the irrep; we annoyingly have to store the defining matrices every time in order to be certainly able to reconstruct the irrep. More...
 

Public Attributes

Fermionic ferm {Fermionic::Never}
 specifies when this rep is fermionic More...
 
Group group {Group::Nil}
 Underlying mathematical group. More...
 
RepLabel label {{0}}
 Set of labels to denote the specific irrep. More...
 
char phys {'0'}
 Physical description of the symmetry, e.g. 'C' or 'z', by convention use lowercase for \(U(1)\) and uppercase for \(SU(N>1)\). More...
 

Static Public Attributes

static constexpr unsigned int version = 2
 Boost serialisation version. More...
 

Detailed Description

Single irrep of a (physical) symmetry group.

Constructor & Destructor Documentation

◆ Rep() [1/4]

syten::Rep::Rep ( std::vector< DenseTensor< 2, MDef > >  rOp_,
std::vector< DenseTensor< 2, MDef > >  lOp_,
std::vector< DenseTensor< 2, MDef > >  zOp_,
RepLabel  label_,
Group  group_,
char  phys_,
Fermionic  ferm_ = Fermionic::Never 
)

Standard constructor for a new irrep if that irrep is not yet contained in the registry.

Parameters
rOp_vector of raising operators
lOp_vector of lowering operators
zOp_vector of z-Operators
label_vector of labels
group_underlying mathematical group
phys_physical description
ferm_fermionic rule for the IREP

References syten::degree(), group, syten::RepRegister::reg(), and SYTEN_ASSERT_DEBUG.

◆ Rep() [2/4]

syten::Rep::Rep ( RepLabel  label_,
Group  group_,
char  phys_,
Fermionic  ferm_ = Fermionic::Never 
)

Ctor if the group is already known in the registry, not defining matrices are necessary then.

Parameters
label_vector of labels of the irrep
group_underlying mathematical group
phys_physical description of the symmetry
ferm_fermionic rule for the IREP

◆ Rep() [3/4]

syten::Rep::Rep ( )
default

Default ctor initialises an undefined irrep.

◆ Rep() [4/4]

syten::Rep::Rep ( Rep const &  old)
default

Copy ctor.

Member Function Documentation

◆ adjoint()

Rep syten::Rep::adjoint ( ) const

Returns the adjoint of this irrep.

In our use, the adjoint of an irrep A is the irrep B where the vacuum irrep is contained in the product decomposition of A and B.

  • For U(1), the adjoint is the group with the negative label (e.g. charge 1 → charge -1, (1) × (-1) → (0))
  • For SU(2), irreps are self-adjoint (e.g. spin S=1 → spin S=1, (1) × (1) → [(2), (0)])
  • For SU(3), I have no idea.
  • For Z/n, the adjoint of an element m is n-m, s.t. the sum of both gives n, i.e. 0.

References group.

◆ degree()

Index syten::Rep::degree ( ) const

Returns the degree of the group to which this irrep belongs.

References syten::degree(), and group.

Referenced by syten::dist(), load(), syten::make_vacuum(), operator<(), syten::operator<<(), and save().

+ Here is the caller graph for this function:

◆ dim()

Index syten::Rep::dim ( ) const

Returns the dimension of the irrep.

References syten::RepRegister::dim(), group, and label.

Referenced by syten::genTrivialCGC(), and syten::operator<<().

+ Here is the caller graph for this function:

◆ isFermionic()

bool syten::Rep::isFermionic ( ) const

Returns true if this individual rep is fermionic, i.e.

induces a factor of -1 when exchanged with another fermionic rep.

References group.

Referenced by syten::operator<<().

+ Here is the caller graph for this function:

◆ isVacuum()

bool syten::Rep::isVacuum ( ) const

Returns true if this irrep is the vacuum irrep, i.e. all labels are 0.

References group.

◆ load()

template<class Archive >
void syten::Rep::load ( Archive &  ar,
const unsigned int  in_version 
)
inline

◆ operator!=()

bool syten::Rep::operator!= ( Rep const &  b) const

Returns true iff operator==() returns false.

◆ operator<()

bool syten::Rep::operator< ( Rep const &  b) const

Returns true if the first label that is not equal in both reps is smaller in *this

References degree(), group, label, and SYTEN_ASSERT_DEBUG.

◆ operator=()

Rep& syten::Rep::operator= ( Rep const &  o)
default

Copy assignment.

◆ operator==()

bool syten::Rep::operator== ( Rep const &  b) const

Returns true iff both irreps belong to the same (mathematical) symmetry and are the same irrep.

References ferm, group, and label.

◆ save()

template<class Archive >
void syten::Rep::save ( Archive &  ar,
const unsigned  int 
) const
inline

Save the irrep; we annoyingly have to store the defining matrices every time in order to be certainly able to reconstruct the irrep.

References degree(), ferm, syten::RepRegister::getId(), group, syten::RepRegister::id(), label, syten::RepRegister::lOp(), phys, syten::RepRegister::rOp(), and syten::RepRegister::zOp().

Member Data Documentation

◆ ferm

Fermionic syten::Rep::ferm {Fermionic::Never}

specifies when this rep is fermionic

Referenced by load(), operator==(), syten::RepRegister::Decomp::productDecomp(), and save().

◆ group

◆ label

RepLabel syten::Rep::label {{0}}

Set of labels to denote the specific irrep.

Referenced by dim(), syten::dist(), load(), operator<(), syten::operator<<(), operator==(), and save().

◆ phys

char syten::Rep::phys {'0'}

Physical description of the symmetry, e.g. 'C' or 'z', by convention use lowercase for \(U(1)\) and uppercase for \(SU(N>1)\).

Referenced by load(), syten::operator<<(), syten::RepRegister::Decomp::product(), syten::RepRegister::Decomp::productDecomp(), and save().

◆ version

constexpr unsigned int syten::Rep::version = 2
static

Boost serialisation version.


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