Xped
Loading...
Searching...
No Matches
Xped::Sym Namespace Reference

Classes

struct  AltSpinSU2
 
struct  ChargeDn
 
struct  ChargeSU2
 
struct  ChargeU1
 
struct  ChargeUp
 
struct  ChargeZ2
 
struct  Combined
 
struct  Combined< S1 >
 
struct  Combined< S1, S2 >
 
struct  FChargeSU2
 
struct  FChargeU1
 
class  S1xS2
 
struct  SpinSU2
 
struct  SpinU1
 
class  SU2
 
class  SUN
 
struct  SymBase
 
struct  SymTraits
 
struct  SymTraits< S1xS2< S1, S2 > >
 
struct  SymTraits< SU2< Kind_, Scalar__ > >
 
struct  SymTraits< SUN< N, Kind_, Scalar__ > >
 
struct  SymTraits< U0< Scalar__ > >
 
struct  SymTraits< U1< Kind_, Scalar__ > >
 
struct  SymTraits< ZN< Kind_, N_, Scalar__ > >
 
class  U0
 
class  U1
 
class  ZN
 

Enumerations

enum  KIND {
  S , Salt , T , FT ,
  N , FN , M , Nup ,
  Ndn , Z2
}
 

Functions

template<typename Symmetry >
std::string format (qarray< Symmetry::Nq > qnum)
 
template<typename Scalar >
Scalar phase (int q)
 
template<typename Symmetry >
std::vector< std::pair< typename Symmetry::qType, typename Symmetry::qType > > split (const typename Symmetry::qType Q, const std::vector< typename Symmetry::qType > &ql, const std::vector< typename Symmetry::qType > qr)
 
template<typename Symmetry >
std::vector< std::pair< std::size_t, std::size_t > > split (const typename Symmetry::qType Q, const std::vector< typename Symmetry::qType > &ql, const std::vector< typename Symmetry::qType > qr)
 
void initialize (int maxJ=1, std::string f_3j="", std::string f_6j="", std::string f_9j="")
 
void finalize (bool PRINT_STATS=false)
 

Enumeration Type Documentation

◆ KIND

Enumerator
Salt 
FT 
FN 
Nup 
Ndn 
Z2 

Function Documentation

◆ finalize()

void Xped::Sym::finalize ( bool  PRINT_STATS = false)
inline

◆ format()

template<typename Symmetry >
std::string Xped::Sym::format ( qarray< Symmetry::Nq >  qnum)

Returns a formatted string for qnum. \describe_Symmetry

Parameters
qnum: quantum number for formatting.
Note
Uses the kind() function provided from Symmetry for deducing the correct format function.

◆ initialize()

void Xped::Sym::initialize ( int  maxJ = 1,
std::string  f_3j = "",
std::string  f_6j = "",
std::string  f_9j = "" 
)
inline

This routine initializes the relevant objects for the calculation of \(3nj\)-symbols. The specific code varies from library to library:

  1. GSL: Nothing to to do.
  2. WIGXJPF: The tables for the prime factorization need to get build. The parameter maxJ is the maximum angular momentum. It should be chosen high enough. The required memory for the prime factorization table is negligible.
  3. FASTWIGXJ: Same initialization as WIGXJPF for fallback to symbols which are not precomputed (maxJ). Additionaly the filenames to the precalculated symbols are required. f_3j for \(3j\)-symbol, f_6j for \(6j\)-symbol and f_9j for \(9j\)-symbol. For the creation of the precomputed values see manual http://fy.chalmers.se/subatom/fastwigxj/README. The precomputed symbols (especially 9j) can be quite large in memory. Therefore, this library should only be used when performance gains are clearly present.
Warning
The current initialize() method is for a single thread. WIGXJPF and FASTWIGXJ can both be used in multi-tread applications. The initialize function however needs to get adapted accordingly. The details can be found on the websites above.

◆ phase()

template<typename Scalar >
Scalar Xped::Sym::phase ( int  q)

◆ split() [1/2]

template<typename Symmetry >
std::vector< std::pair< typename Symmetry::qType, typename Symmetry::qType > > Xped::Sym::split ( const typename Symmetry::qType  Q,
const std::vector< typename Symmetry::qType > &  ql,
const std::vector< typename Symmetry::qType >  qr 
)

Splits the quantum number Q into pairs q1,q2 with \(Q \in q1 \otimes q2\). q1 and q2 can take all values from the given parameters ql and qr, respectively.

Note
: Without specifying ql and qr, there exist infinity solutions.

◆ split() [2/2]

template<typename Symmetry >
std::vector< std::pair< std::size_t, std::size_t > > Xped::Sym::split ( const typename Symmetry::qType  Q,
const std::vector< typename Symmetry::qType > &  ql,
const std::vector< typename Symmetry::qType >  qr 
)