Xped
Loading...
Searching...
No Matches
Xped::Sym::S1xS2< S1_, S2_ > Class Template Reference

#include <S1xS2.hpp>

Inheritance diagram for Xped::Sym::S1xS2< S1_, S2_ >:
Collaboration diagram for Xped::Sym::S1xS2< S1_, S2_ >:

Public Types

typedef S1_::Scalar Scalar
 
typedef S1_ S1
 
typedef S2_ S2
 
typedef qarray< NqqType
 
- Public Types inherited from Xped::Sym::SymBase< S1xS2< S1_, S2_ > >
typedef SymTraits< S1xS2< S1_, S2_ > >::qType qType
 
typedef SymTraits< S1xS2< S1_, S2_ > >::Scalar Scalar
 

Public Member Functions

 S1xS2 ()
 

Static Public Member Functions

static std::string name ()
 
static constexpr bool IS_CHARGE_SU2 ()
 
static constexpr bool IS_SPIN_SU2 ()
 
static constexpr bool IS_SPIN_U1 ()
 
static constexpr bool NO_SPIN_SYM ()
 
static constexpr bool NO_CHARGE_SYM ()
 
static constexpr std::array< KIND, Nqkind ()
 
static constexpr qType qvacuum ()
 
static constexpr std::array< qType, S1::lowest_qs().size() *S2::lowest_qs().size()> lowest_qs ()
 
static qType conj (const qType &q)
 
static int degeneracy (const qType &q)
 
static qType random_q ()
 
static std::size_t multiplicity (const qType &q1, const qType &q2, const qType &q3)
 
static bool triangle (const qType &q1, const qType &q2, const qType &q3)
 
static std::vector< qTypebasis_combine (const qType &ql, const qType &qr)
 
- Static Public Member Functions inherited from Xped::Sym::SymBase< S1xS2< S1_, S2_ > >
static std::vector< qTypereduceSilent (const qType &ql, const qType &qr)
 
static std::vector< qTypereduceSilent (const std::vector< qType > &ql, const qType &qr)
 
static std::set< qTypereduceSilent (const std::vector< qType > &ql, const std::vector< qType > &qr)
 
static std::vector< qTypereduceSilent (const qType &ql, const qType &qm, const qType &qr)
 
static std::set< qTypereduceSilent (const std::set< qType > &ql, const std::vector< qType > &qr)
 
static std::set< qTypereduceSilent (const std::unordered_set< qType > &ql, const std::vector< qType > &qr)
 
static Scalar coeff_FS (const qType &q)
 
static Scalar coeff_turn (const qType &ql, const qType &qr, const qType &qf)
 
static bool compare (const std::array< qType, M > &q1, const std::array< qType, M > &q2)
 
static bool compare (const qType &q1, const qType &q2)
 
static bool triangle (const qType &q1, const qType &q2, const qType &q3)
 

Static Public Attributes

static constexpr std::size_t Nq = S1_::Nq + S2_::Nq
 
static constexpr std::array< bool, NqHAS_MULTIPLICITIES = util::join(S1::HAS_MULTIPLICITIES, S2::HAS_MULTIPLICITIES)
 
static constexpr std::array< bool, NqNON_ABELIAN = util::join(S1::NON_ABELIAN, S2::NON_ABELIAN)
 
static constexpr std::array< bool, NqABELIAN = util::join(S1::ABELIAN, S2::ABELIAN)
 
static constexpr std::array< bool, NqIS_TRIVIAL = util::join(S1::IS_TRIVIAL, S2::IS_TRIVIAL)
 
static constexpr std::array< bool, NqIS_MODULAR = util::join(S1::IS_MODULAR, S2::IS_MODULAR)
 
static constexpr std::array< bool, NqIS_FERMIONIC = util::join(S1::IS_FERMIONIC, S2::IS_FERMIONIC)
 
static constexpr std::array< bool, NqIS_BOSONIC = util::join(S1::IS_BOSONIC, S2::IS_BOSONIC)
 
static constexpr std::array< bool, NqIS_SPIN = util::join(S1::IS_SPIN, S2::IS_SPIN)
 
static constexpr std::array< int, NqMOD_N = util::join(S1::MOD_N, S2::MOD_N)
 
static constexpr bool ANY_HAS_MULTIPLICITIES = S1::ANY_HAS_MULTIPLICITIES or S2::ANY_HAS_MULTIPLICITIES
 
static constexpr bool ANY_NON_ABELIAN = S1::ANY_NON_ABELIAN or S2::ANY_NON_ABELIAN
 
static constexpr bool ANY_ABELIAN = S1::ANY_ABELIAN or S2::ANY_ABELIAN
 
static constexpr bool ANY_IS_TRIVIAL = S1::ANY_IS_TRIVIAL or S2::ANY_IS_TRIVIAL
 
static constexpr bool ANY_IS_MODULAR = S1::ANY_IS_MODULAR or S2::ANY_IS_MODULAR
 
static constexpr bool ANY_IS_FERMIONIC = S1::ANY_IS_FERMIONIC or S2::ANY_IS_FERMIONIC
 
static constexpr bool ANY_IS_BOSONIC = S1::ANY_IS_BOSONIC or S2::ANY_IS_BOSONIC
 
static constexpr bool ANY_IS_SPIN = S1::ANY_IS_SPIN or S2::ANY_IS_SPIN
 
static constexpr bool ALL_HAS_MULTIPLICITIES = S1::ALL_HAS_MULTIPLICITIES and S2::ALL_HAS_MULTIPLICITIES
 
static constexpr bool ALL_NON_ABELIAN = S1::ALL_NON_ABELIAN and S2::ALL_NON_ABELIAN
 
static constexpr bool ALL_ABELIAN = S1::ALL_ABELIAN and S2::ALL_ABELIAN
 
static constexpr bool ALL_IS_TRIVIAL = S1::ALL_IS_TRIVIAL and S2::ALL_IS_TRIVIAL
 
static constexpr bool ALL_IS_MODULAR = S1::ALL_IS_MODULAR and S2::ALL_IS_MODULAR
 
static constexpr bool ALL_IS_FERMIONIC = S1::ALL_IS_FERMIONIC and S2::ALL_IS_FERMIONIC
 
static constexpr bool ALL_IS_BOSONIC = S1::ALL_IS_BOSONIC and S2::ALL_IS_BOSONIC
 
static constexpr bool ALL_IS_SPIN = S1::ALL_IS_SPIN and S2::ALL_IS_SPIN
 
template<typename PlainLib >
static PlainLib::template TType< Scalar, 3 >
 
 auto [q2l, q2r] = disjoin<S1_::Nq, S2_::Nq>(q2)
 
auto Tl = S1::template CGC<PlainLib>(q1l, q2l, q3l, alpha, world)
 
auto Tr = S2::template CGC<PlainLib>(q1r, q2r, q3r, alpha, world)
 
return PlainLib::tensorProd (Tl, Tr)
 
static Scalar coeff_dot (const qType &q1)
 
static Scalar coeff_twist (const qType &q)
 
static Scalar coeff_FS (const qType &q)
 
template<typename PlainLib >
static PlainLib::template TType< Scalar, 2 > one_j_tensor (const qType &q, mpi::XpedWorld &world=mpi::getUniverse())
 
static Scalar coeff_rightOrtho (const qType &, const qType &)
 
static Scalar coeff_3j (const qType &q1, const qType &q2, const qType &q3, int q1_z, int q2_z, int q3_z)
 
static Scalar coeff_turn (const qType &ql, const qType &qr, const qType &qf)
 
static Scalar coeff_6j (const qType &q1, const qType &q2, const qType &q3, const qType &q4, const qType &q5, const qType &q6)
 
static Scalar coeff_recouple (const qType &q1, const qType &q2, const qType &q3, const qType &Q, const qType &Q12, const qType &Q23)
 
static Scalar coeff_swap (const qType &ql, const qType &qr, const qType &qf)
 
static Scalar coeff_9j (const qType &q1, const qType &q2, const qType &q3, const qType &q4, const qType &q5, const qType &q6, const qType &q7, const qType &q8, const qType &q9)
 

Detailed Description

template<typename S1_, typename S2_>
class Xped::Sym::S1xS2< S1_, S2_ >

This class combines two symmetries.

Member Typedef Documentation

◆ qType

template<typename S1_ , typename S2_ >
typedef qarray<Nq> Xped::Sym::S1xS2< S1_, S2_ >::qType

◆ S1

template<typename S1_ , typename S2_ >
typedef S1_ Xped::Sym::S1xS2< S1_, S2_ >::S1

◆ S2

template<typename S1_ , typename S2_ >
typedef S2_ Xped::Sym::S1xS2< S1_, S2_ >::S2

◆ Scalar

template<typename S1_ , typename S2_ >
typedef S1_::Scalar Xped::Sym::S1xS2< S1_, S2_ >::Scalar

Constructor & Destructor Documentation

◆ S1xS2()

template<typename S1_ , typename S2_ >
Xped::Sym::S1xS2< S1_, S2_ >::S1xS2 ( )
inline

Member Function Documentation

◆ basis_combine()

template<typename S1_ , typename S2_ >
std::vector< typename S1xS2< S1_, S2_ >::qType > Xped::Sym::S1xS2< S1_, S2_ >::basis_combine ( const qType ql,
const qType qr 
)
static

Calculate the irreps of the tensor product of ql and qr.

Here is the call graph for this function:

◆ coeff_3j()

template<typename S1_ , typename S2_ >
static Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_3j ( const qType q1,
const qType q2,
const qType q3,
int  q1_z,
int  q2_z,
int  q3_z 
)
inlinestatic

◆ coeff_6j()

template<typename S1_ , typename S2_ >
S1_::Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_6j ( const qType q1,
const qType q2,
const qType q3,
const qType q4,
const qType q5,
const qType q6 
)
inlinestatic

◆ coeff_9j()

template<typename S1_ , typename S2_ >
S1_::Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_9j ( const qType q1,
const qType q2,
const qType q3,
const qType q4,
const qType q5,
const qType q6,
const qType q7,
const qType q8,
const qType q9 
)
inlinestatic

◆ coeff_dot()

template<typename S1_ , typename S2_ >
S1_::Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_dot ( const qType q1)
inlinestatic

Various coefficients, all resulting from contractions or traces of the Clebsch-Gordon coefficients.

◆ coeff_FS()

template<typename S1_ , typename S2_ >
static Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_FS ( const qType q)
inlinestatic

◆ coeff_recouple()

template<typename S1_ , typename S2_ >
static Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_recouple ( const qType q1,
const qType q2,
const qType q3,
const qType Q,
const qType Q12,
const qType Q23 
)
inlinestatic

◆ coeff_rightOrtho()

template<typename S1_ , typename S2_ >
S1_::Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_rightOrtho ( const qType q1,
const qType q2 
)
static

◆ coeff_swap()

template<typename S1_ , typename S2_ >
static Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_swap ( const qType ql,
const qType qr,
const qType qf 
)
inlinestatic

◆ coeff_turn()

template<typename S1_ , typename S2_ >
static Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_turn ( const qType ql,
const qType qr,
const qType qf 
)
inlinestatic

◆ coeff_twist()

template<typename S1_ , typename S2_ >
static Scalar Xped::Sym::S1xS2< S1_, S2_ >::coeff_twist ( const qType q)
inlinestatic

◆ conj()

template<typename S1_ , typename S2_ >
static qType Xped::Sym::S1xS2< S1_, S2_ >::conj ( const qType q)
inlinestatic
Here is the call graph for this function:

◆ degeneracy()

template<typename S1_ , typename S2_ >
static int Xped::Sym::S1xS2< S1_, S2_ >::degeneracy ( const qType q)
inlinestatic

◆ IS_CHARGE_SU2()

template<typename S1_ , typename S2_ >
static constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::IS_CHARGE_SU2 ( )
inlinestaticconstexpr

◆ IS_SPIN_SU2()

template<typename S1_ , typename S2_ >
static constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::IS_SPIN_SU2 ( )
inlinestaticconstexpr

◆ IS_SPIN_U1()

template<typename S1_ , typename S2_ >
static constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::IS_SPIN_U1 ( )
inlinestaticconstexpr

◆ kind()

template<typename S1_ , typename S2_ >
static constexpr std::array< KIND, Nq > Xped::Sym::S1xS2< S1_, S2_ >::kind ( )
inlinestaticconstexpr
Here is the call graph for this function:

◆ lowest_qs()

template<typename S1_ , typename S2_ >
static constexpr std::array< qType, S1::lowest_qs().size() *S2::lowest_qs().size()> Xped::Sym::S1xS2< S1_, S2_ >::lowest_qs ( )
inlinestaticconstexpr
Here is the call graph for this function:

◆ multiplicity()

template<typename S1_ , typename S2_ >
static std::size_t Xped::Sym::S1xS2< S1_, S2_ >::multiplicity ( const qType q1,
const qType q2,
const qType q3 
)
inlinestatic

◆ name()

template<typename S1_ , typename S2_ >
static std::string Xped::Sym::S1xS2< S1_, S2_ >::name ( )
inlinestatic

◆ NO_CHARGE_SYM()

template<typename S1_ , typename S2_ >
static constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::NO_CHARGE_SYM ( )
inlinestaticconstexpr

◆ NO_SPIN_SYM()

template<typename S1_ , typename S2_ >
static constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::NO_SPIN_SYM ( )
inlinestaticconstexpr

◆ one_j_tensor()

template<typename S1_ , typename S2_ >
template<typename PlainLib >
static PlainLib::template TType< Scalar, 2 > Xped::Sym::S1xS2< S1_, S2_ >::one_j_tensor ( const qType q,
mpi::XpedWorld world = mpi::getUniverse() 
)
inlinestatic
Here is the call graph for this function:

◆ PlainLib::tensorProd()

template<typename S1_ , typename S2_ >
return Xped::Sym::S1xS2< S1_, S2_ >::PlainLib::tensorProd ( Tl  ,
Tr   
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ qvacuum()

template<typename S1_ , typename S2_ >
static constexpr qType Xped::Sym::S1xS2< S1_, S2_ >::qvacuum ( )
inlinestaticconstexpr
Here is the call graph for this function:

◆ random_q()

template<typename S1_ , typename S2_ >
static qType Xped::Sym::S1xS2< S1_, S2_ >::random_q ( )
inlinestatic
Here is the call graph for this function:

◆ triangle()

template<typename S1_ , typename S2_ >
bool Xped::Sym::S1xS2< S1_, S2_ >::triangle ( const qType q1,
const qType q2,
const qType q3 
)
static

Member Data Documentation

◆ ABELIAN

template<typename S1_ , typename S2_ >
constexpr std::array<bool, Nq> Xped::Sym::S1xS2< S1_, S2_ >::ABELIAN = util::join(S1::ABELIAN, S2::ABELIAN)
staticconstexpr

◆ ALL_ABELIAN

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ALL_ABELIAN = S1::ALL_ABELIAN and S2::ALL_ABELIAN
staticconstexpr

◆ ALL_HAS_MULTIPLICITIES

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ALL_HAS_MULTIPLICITIES = S1::ALL_HAS_MULTIPLICITIES and S2::ALL_HAS_MULTIPLICITIES
staticconstexpr

◆ ALL_IS_BOSONIC

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ALL_IS_BOSONIC = S1::ALL_IS_BOSONIC and S2::ALL_IS_BOSONIC
staticconstexpr

◆ ALL_IS_FERMIONIC

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ALL_IS_FERMIONIC = S1::ALL_IS_FERMIONIC and S2::ALL_IS_FERMIONIC
staticconstexpr

◆ ALL_IS_MODULAR

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ALL_IS_MODULAR = S1::ALL_IS_MODULAR and S2::ALL_IS_MODULAR
staticconstexpr

◆ ALL_IS_SPIN

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ALL_IS_SPIN = S1::ALL_IS_SPIN and S2::ALL_IS_SPIN
staticconstexpr

◆ ALL_IS_TRIVIAL

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ALL_IS_TRIVIAL = S1::ALL_IS_TRIVIAL and S2::ALL_IS_TRIVIAL
staticconstexpr

◆ ALL_NON_ABELIAN

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ALL_NON_ABELIAN = S1::ALL_NON_ABELIAN and S2::ALL_NON_ABELIAN
staticconstexpr

◆ ANY_ABELIAN

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ANY_ABELIAN = S1::ANY_ABELIAN or S2::ANY_ABELIAN
staticconstexpr

◆ ANY_HAS_MULTIPLICITIES

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ANY_HAS_MULTIPLICITIES = S1::ANY_HAS_MULTIPLICITIES or S2::ANY_HAS_MULTIPLICITIES
staticconstexpr

◆ ANY_IS_BOSONIC

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ANY_IS_BOSONIC = S1::ANY_IS_BOSONIC or S2::ANY_IS_BOSONIC
staticconstexpr

◆ ANY_IS_FERMIONIC

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ANY_IS_FERMIONIC = S1::ANY_IS_FERMIONIC or S2::ANY_IS_FERMIONIC
staticconstexpr

◆ ANY_IS_MODULAR

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ANY_IS_MODULAR = S1::ANY_IS_MODULAR or S2::ANY_IS_MODULAR
staticconstexpr

◆ ANY_IS_SPIN

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ANY_IS_SPIN = S1::ANY_IS_SPIN or S2::ANY_IS_SPIN
staticconstexpr

◆ ANY_IS_TRIVIAL

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ANY_IS_TRIVIAL = S1::ANY_IS_TRIVIAL or S2::ANY_IS_TRIVIAL
staticconstexpr

◆ ANY_NON_ABELIAN

template<typename S1_ , typename S2_ >
constexpr bool Xped::Sym::S1xS2< S1_, S2_ >::ANY_NON_ABELIAN = S1::ANY_NON_ABELIAN or S2::ANY_NON_ABELIAN
staticconstexpr

◆ auto

template<typename S1_ , typename S2_ >
Xped::Sym::S1xS2< S1_, S2_ >::auto[q3l, q3r] = disjoin<S1_::Nq, S2_::Nq>(q2)

◆ HAS_MULTIPLICITIES

template<typename S1_ , typename S2_ >
constexpr std::array<bool, Nq> Xped::Sym::S1xS2< S1_, S2_ >::HAS_MULTIPLICITIES = util::join(S1::HAS_MULTIPLICITIES, S2::HAS_MULTIPLICITIES)
staticconstexpr

◆ IS_BOSONIC

template<typename S1_ , typename S2_ >
constexpr std::array<bool, Nq> Xped::Sym::S1xS2< S1_, S2_ >::IS_BOSONIC = util::join(S1::IS_BOSONIC, S2::IS_BOSONIC)
staticconstexpr

◆ IS_FERMIONIC

template<typename S1_ , typename S2_ >
constexpr std::array<bool, Nq> Xped::Sym::S1xS2< S1_, S2_ >::IS_FERMIONIC = util::join(S1::IS_FERMIONIC, S2::IS_FERMIONIC)
staticconstexpr

◆ IS_MODULAR

template<typename S1_ , typename S2_ >
constexpr std::array<bool, Nq> Xped::Sym::S1xS2< S1_, S2_ >::IS_MODULAR = util::join(S1::IS_MODULAR, S2::IS_MODULAR)
staticconstexpr

◆ IS_SPIN

template<typename S1_ , typename S2_ >
constexpr std::array<bool, Nq> Xped::Sym::S1xS2< S1_, S2_ >::IS_SPIN = util::join(S1::IS_SPIN, S2::IS_SPIN)
staticconstexpr

◆ IS_TRIVIAL

template<typename S1_ , typename S2_ >
constexpr std::array<bool, Nq> Xped::Sym::S1xS2< S1_, S2_ >::IS_TRIVIAL = util::join(S1::IS_TRIVIAL, S2::IS_TRIVIAL)
staticconstexpr

◆ MOD_N

template<typename S1_ , typename S2_ >
constexpr std::array<int, Nq> Xped::Sym::S1xS2< S1_, S2_ >::MOD_N = util::join(S1::MOD_N, S2::MOD_N)
staticconstexpr

◆ NON_ABELIAN

template<typename S1_ , typename S2_ >
constexpr std::array<bool, Nq> Xped::Sym::S1xS2< S1_, S2_ >::NON_ABELIAN = util::join(S1::NON_ABELIAN, S2::NON_ABELIAN)
staticconstexpr

◆ Nq

template<typename S1_ , typename S2_ >
constexpr std::size_t Xped::Sym::S1xS2< S1_, S2_ >::Nq = S1_::Nq + S2_::Nq
staticconstexpr

◆ Tl

template<typename S1_ , typename S2_ >
auto Xped::Sym::S1xS2< S1_, S2_ >::Tl = S1::template CGC<PlainLib>(q1l, q2l, q3l, alpha, world)

◆ Tr

template<typename S1_ , typename S2_ >
auto Xped::Sym::S1xS2< S1_, S2_ >::Tr = S2::template CGC<PlainLib>(q1r, q2r, q3r, alpha, world)

◆ TType< Scalar, 3 >

template<typename S1_ , typename S2_ >
template<typename PlainLib >
PlainLib::template Xped::Sym::S1xS2< S1_, S2_ >::TType< Scalar, 3 >
static
Initial value:
{
auto [q1l, q1r] = disjoin<S1_::Nq, S2_::Nq>(q1)

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