VMPS++
Loading...
Searching...
No Matches
Sym Namespace Reference

Classes

struct  AltSpinSU2
 
struct  ChargeDn
 
struct  ChargeSU2
 
struct  ChargeU1
 
struct  ChargeUp
 
struct  ChargeZ2
 
struct  Momentum
 
class  S1xS2
 
struct  SpinSU2
 
struct  SpinU1
 
class  SU2
 
class  SUN
 
class  U0
 
class  U1
 
class  ZN
 

Enumerations

enum  KIND {
  S , Salt , T , N ,
  M , Nup , Ndn , Nparity ,
  K , S , Salt , T ,
  N , M , Nup , Ndn ,
  Nparity , K
}
 
enum  KIND {
  S , Salt , T , N ,
  M , Nup , Ndn , Nparity ,
  K , S , Salt , T ,
  N , M , Nup , Ndn ,
  Nparity , K
}
 

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, bool INDEX)
 
void initialize (int maxJ=1, std::string f_3j="", std::string f_6j="", std::string f_9j="")
 
void finalize (bool PRINT_STATS=false)
 
template<std::size_t N, typename Scalar >
bool operator== (const typename SUN< N, Scalar >::qType &lhs, const typename SUN< N, Scalar >::qType &rhs)
 

Enumeration Type Documentation

◆ KIND [1/2]

enum Sym::KIND
Enumerator
Salt 
Nup 
Ndn 
Nparity 
Salt 
Nup 
Ndn 
Nparity 

Definition at line 110 of file DmrgTypedefs.h.

◆ KIND [2/2]

enum Sym::KIND
Enumerator
Salt 
Nup 
Ndn 
Nparity 
Salt 
Nup 
Ndn 
Nparity 

Definition at line 13 of file functions.h.

Function Documentation

◆ finalize()

void Sym::finalize ( bool  PRINT_STATS = false)

Definition at line 127 of file functions.h.

◆ format()

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

Returns a formatted string for qnum.

Template Parameters
Symmetry: A class providing all relevant functions and infos that are determined by the Symmetry. Click here for more information.
Parameters
qnum: quantum number for formatting.
Note
Uses the kind() function provided from Symmetry for deducing the correct format function.

Definition at line 23 of file functions.h.

◆ initialize()

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

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.

Definition at line 110 of file functions.h.

◆ operator==()

template<std::size_t N, typename Scalar >
bool Sym::operator== ( const typename SUN< N, Scalar >::qType &  lhs,
const typename SUN< N, Scalar >::qType &  rhs 
)

Definition at line 75 of file SUN.h.

◆ phase()

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

Definition at line 51 of file functions.h.

◆ split() [1/2]

template<typename Symmetry >
std::vector< std::pair< typename Symmetry::qType, typename Symmetry::qType > > 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.

Definition at line 64 of file functions.h.

◆ split() [2/2]

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

Definition at line 80 of file functions.h.