Documentation

A helper class for symmetric tensor algebra.

PetiteList implements auxiliary representation theory algebra needed to evaluate efficiently expressions involving tensors with symmetries (permutation and otherwise). The concept was introduced by Michel Dupuis and Harry King (DOI 10.1002/qua.560110408).

Note
only permutation groups are supported right now

Public Types

enum  Symmetry {
  Symmetry::e, Symmetry::aa, Symmetry::a_bb, Symmetry::aa_bb,
  Symmetry::ab_ab, Symmetry::aa_aa
}
 permutation groups implemented by SymmPetiteList More...
 

Public Member Functions

 PetiteList ()=default
 
virtual ~PetiteList ()
 
virtual bool is_canonical (long idx0) const =0
 
virtual bool is_canonical (long idx0, long idx1) const =0
 
virtual bool is_canonical (long idx0, long idx1, long idx2) const =0
 
virtual bool is_canonical (long idx0, long idx1, long idx2, long idx3) const =0
 
virtual int64_t multiplicity (long idx0) const =0
 
virtual int64_t multiplicity (long idx0, long idx1) const =0
 
virtual int64_t multiplicity (long idx0, long idx1, long idx2) const =0
 
virtual int64_t multiplicity (long idx0, long idx1, long idx2, long idx3) const =0
 

Static Public Member Functions

static std::shared_ptr< const PetiteListmake_trivial ()
 
static std::shared_ptr< const PetiteListmake (Symmetry symmetry)
 

Static Public Attributes

static std::map< Symmetry, std::string > symmetry_to_string
 

Member Enumeration Documentation

◆ Symmetry

permutation groups implemented by SymmPetiteList

Enumerator

identity (E)

aa 

generated by {0<->1}

a_bb 

generated by {1<->2}

aa_bb 

generated by {0<->1}, {2<->3}

ab_ab 

generated by {0<->2,1<->3}

aa_aa 

generated by {0<->1}, {2<->3}, {0<->2,1<->3}

Constructor & Destructor Documentation

◆ PetiteList()

mpqc::math::PetiteList::PetiteList ( )
default

◆ ~PetiteList()

virtual mpqc::math::PetiteList::~PetiteList ( )
inlinevirtual

Member Function Documentation

◆ is_canonical() [1/4]

virtual bool mpqc::math::PetiteList::is_canonical ( long  idx0) const
pure virtual

◆ is_canonical() [2/4]

virtual bool mpqc::math::PetiteList::is_canonical ( long  idx0,
long  idx1 
) const
pure virtual

◆ is_canonical() [3/4]

virtual bool mpqc::math::PetiteList::is_canonical ( long  idx0,
long  idx1,
long  idx2 
) const
pure virtual

◆ is_canonical() [4/4]

virtual bool mpqc::math::PetiteList::is_canonical ( long  idx0,
long  idx1,
long  idx2,
long  idx3 
) const
pure virtual

◆ make()

std::shared_ptr< const PetiteList > mpqc::math::PetiteList::make ( Symmetry  symmetry)
static

◆ make_trivial()

std::shared_ptr< const PetiteList > mpqc::math::PetiteList::make_trivial ( )
static

◆ multiplicity() [1/4]

virtual int64_t mpqc::math::PetiteList::multiplicity ( long  idx0) const
pure virtual

◆ multiplicity() [2/4]

virtual int64_t mpqc::math::PetiteList::multiplicity ( long  idx0,
long  idx1 
) const
pure virtual

◆ multiplicity() [3/4]

virtual int64_t mpqc::math::PetiteList::multiplicity ( long  idx0,
long  idx1,
long  idx2 
) const
pure virtual

◆ multiplicity() [4/4]

virtual int64_t mpqc::math::PetiteList::multiplicity ( long  idx0,
long  idx1,
long  idx2,
long  idx3 
) const
pure virtual

Member Data Documentation

◆ symmetry_to_string

std::map< PetiteList::Symmetry, std::string > mpqc::math::PetiteList::symmetry_to_string
static

The documentation for this class was generated from the following files:
@ aa
generated by {0<->1}
@ a_bb
generated by {1<->2}
@ aa_aa
generated by {0<->1}, {2<->3}, {0<->2,1<->3}
@ ab_ab
generated by {0<->2,1<->3}
@ aa_bb
generated by {0<->1}, {2<->3}