Xped
Loading...
Searching...
No Matches
Xped::SpinBase< Symmetry_, order > Class Template Reference

#include <SpinBase.hpp>

Inheritance diagram for Xped::SpinBase< Symmetry_, order >:
Collaboration diagram for Xped::SpinBase< Symmetry_, order >:

Public Types

using Symmetry = Symmetry_
 
using OperatorType = SiteOperator< Scalar, Symmetry >
 
using OperatorTypeC = SiteOperator< std::complex< Scalar >, Symmetry >
 
using qType = typename Symmetry::qType
 

Public Member Functions

 SpinBase ()=default
 
 SpinBase (std::size_t L_input, std::size_t D_input)
 
std::size_t dim () const
 
std::size_t orbitals () const
 
std::size_t get_D () const
 
OperatorType sign (std::size_t orb1=0, std::size_t orb2=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type n (std::size_t orbital=0) const
 
OperatorType Id (std::size_t orbital=0) const
 
OperatorType Zero (std::size_t orbital=0) const
 
Qbasis< Symmetry, 1 > get_basis () const
 
template<class Dummy = Symmetry>
std::enable_if< Dummy::IS_SPIN_SU2(), OperatorType >::type S (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if< Dummy::IS_SPIN_SU2(), OperatorType >::type Sdag (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if< Dummy::IS_SPIN_SU2(), OperatorType >::type Q (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if< Dummy::IS_SPIN_SU2(), OperatorType >::type Qdag (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Qz (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Qp (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Qm (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Qpz (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Qmz (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Sz (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Sp (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Sm (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if< Dummy::NO_SPIN_SYM(), OperatorType >::type Sx (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if< Dummy::NO_SPIN_SYM(), OperatorTypeC >::type Sy (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if< Dummy::NO_SPIN_SYM(), OperatorType >::type iSy (std::size_t orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Scomp (SPINOP_LABEL Sa, int orbital=0) const
 
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Qcomp (SPINOP_LABEL Sa, int orbital=0) const
 
- Public Member Functions inherited from Xped::Spin< Symmetry_, spin_index >
 Spin ()
 
 Spin (std::size_t D_input)
 
OperatorType Id_1s () const
 
OperatorType Zero_1s () const
 
OperatorType F_1s () const
 
OperatorType Sz_1s () const
 
OperatorType Sp_1s () const
 
OperatorType Sm_1s () const
 
OperatorType Qz_1s () const
 
OperatorType Qp_1s () const
 
OperatorType Qm_1s () const
 
OperatorType Qpz_1s () const
 
OperatorType Qmz_1s () const
 
OperatorType exp_i_pi_Sx () const
 
OperatorType exp_i_pi_Sy () const
 
OperatorType exp_i_pi_Sz () const
 
Qbasis< Symmetry, 1 > basis_1s () const
 

Additional Inherited Members

- Protected Member Functions inherited from Xped::Spin< Symmetry_, spin_index >
void fill_basis ()
 
void fill_SiteOps ()
 
qType getQ (SPINOP_LABEL Sa) const
 
- Protected Attributes inherited from Xped::Spin< Symmetry_, spin_index >
std::size_t D
 
Qbasis< Symmetry, 1 > basis_1s_
 
std::unordered_map< std::string, std::pair< qType, std::size_t > > labels
 
OperatorType Id_1s_
 
OperatorType Zero_1s_
 
OperatorType F_1s_
 
OperatorType n_1s_
 
OperatorType Sz_1s_
 
OperatorType Sp_1s_
 
OperatorType Sm_1s_
 
OperatorType Qz_1s_
 
OperatorType Qp_1s_
 
OperatorType Qm_1s_
 
OperatorType Qpz_1s_
 
OperatorType Qmz_1s_
 
OperatorType exp_i_pi_Sx_1s_
 
OperatorType exp_i_pi_Sy_1s_
 
OperatorType exp_i_pi_Sz_1s_
 

Detailed Description

template<typename Symmetry_, std::size_t order = 0>
class Xped::SpinBase< Symmetry_, order >

This class provides the local operators for general spins with quantum number S.

Member Typedef Documentation

◆ OperatorType

template<typename Symmetry_ , std::size_t order = 0>
using Xped::SpinBase< Symmetry_, order >::OperatorType = SiteOperator<Scalar, Symmetry>

◆ OperatorTypeC

template<typename Symmetry_ , std::size_t order = 0>
using Xped::SpinBase< Symmetry_, order >::OperatorTypeC = SiteOperator<std::complex<Scalar>, Symmetry>

◆ qType

template<typename Symmetry_ , std::size_t order = 0>
using Xped::SpinBase< Symmetry_, order >::qType = typename Symmetry::qType

◆ Symmetry

template<typename Symmetry_ , std::size_t order = 0>
using Xped::SpinBase< Symmetry_, order >::Symmetry = Symmetry_

Constructor & Destructor Documentation

◆ SpinBase() [1/2]

template<typename Symmetry_ , std::size_t order = 0>
Xped::SpinBase< Symmetry_, order >::SpinBase ( )
default

◆ SpinBase() [2/2]

template<typename Symmetry_ , std::size_t order>
Xped::SpinBase< Symmetry_, order >::SpinBase ( std::size_t  L_input,
std::size_t  D_input 
)
Parameters
L_input: the amount of orbitals
D_input: \(D = 2S+1\)
Here is the call graph for this function:

Member Function Documentation

◆ dim()

template<typename Symmetry_ , std::size_t order = 0>
std::size_t Xped::SpinBase< Symmetry_, order >::dim ( ) const
inline

amount of states

◆ get_basis()

template<typename Symmetry_ , std::size_t order = 0>
Qbasis< Symmetry, 1 > Xped::SpinBase< Symmetry_, order >::get_basis ( ) const
inline

Creates the full Hubbard Hamiltonian on the supersite with orbital-dependent U.

Parameters
U: \(U\) for each orbital
Uph: particle-hole symmetric \(U\) for each orbital (times \((n_{\uparrow}-1/2)(n_{\downarrow}-1/2)+1/4\))
Eorb: \(\varepsilon\) onsite energy for each orbital
t: \(t\)
V: \(V\)
Vz: \(V_z\)
Vxy: \(V_{xy}\)
J: \(J\) Creates the full Heisenberg (XXZ) Hamiltonian on the supersite.
Jxy: \(J^{xy}\)
Jz: \(J^{z}\)
Bz: \(B^{z}_i\)
Bx: \(B^{x}_i\)
mu: \(\mu\) (for spinless fermions, couples to n=1/2-Sz)
Kz: \(K^{z}_i\)
Kx: \(K^{x}_i\)
Dy: \(D^{y}\) Creates the full Heisenberg (XYZ) Hamiltonian on the supersite.
J: \(J^{\alpha}\), \(\alpha \in \{x,y,z\} \)
B: \(B^{\alpha}_i\), \(\alpha \in \{x,y,z\} \)
K: \(K^{\alpha}_i\), \(\alpha \in \{x,y,z\} \)
D: \(D^{\alpha}\), \(\alpha \in \{x,y,z\} \) Returns the basis.

◆ get_D()

template<typename Symmetry_ , std::size_t order = 0>
std::size_t Xped::SpinBase< Symmetry_, order >::get_D ( ) const
inline

\(D=2S+1\)

◆ Id()

template<typename Symmetry_ , std::size_t order>
SiteOperator< double, Symmetry_ > Xped::SpinBase< Symmetry_, order >::Id ( std::size_t  orbital = 0) const

Identity

Here is the caller graph for this function:

◆ iSy()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if< Dummy::NO_SPIN_SYM(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::iSy ( std::size_t  orbital = 0) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ n()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::n ( std::size_t  orbital = 0) const

Occupation number operator

Parameters
orbital: orbital index
Here is the call graph for this function:

◆ orbitals()

template<typename Symmetry_ , std::size_t order = 0>
std::size_t Xped::SpinBase< Symmetry_, order >::orbitals ( ) const
inline

amount of orbitals

◆ Q()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if< Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Q ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ Qcomp()

template<typename Symmetry_ , std::size_t order = 0>
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Xped::SpinBase< Symmetry_, order >::Qcomp ( SPINOP_LABEL  Sa,
int  orbital = 0 
) const
inline
Here is the call graph for this function:

◆ Qdag()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if< Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Qdag ( std::size_t  orbital = 0) const

◆ Qm()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Qm ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ Qmz()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Qmz ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ Qp()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Qp ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ Qpz()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Qpz ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ Qz()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Qz ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ S()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if< Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::S ( std::size_t  orbital = 0) const

Orbital spin

Parameters
orbital: orbital index
Here is the caller graph for this function:

◆ Scomp()

template<typename Symmetry_ , std::size_t order = 0>
template<class Dummy = Symmetry>
std::enable_if<!Dummy::IS_SPIN_SU2(), OperatorType >::type Xped::SpinBase< Symmetry_, order >::Scomp ( SPINOP_LABEL  Sa,
int  orbital = 0 
) const
inline
Here is the call graph for this function:

◆ Sdag()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if< Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Sdag ( std::size_t  orbital = 0) const

Orbital spin†

Parameters
orbital: orbital index
Here is the caller graph for this function:

◆ sign()

template<typename Symmetry_ , std::size_t order>
SiteOperator< double, Symmetry_ > Xped::SpinBase< Symmetry_, order >::sign ( std::size_t  orb1 = 0,
std::size_t  orb2 = 0 
) const

Fermionic sign for the hopping between two orbitals of nearest-neighbour supersites of a ladder.

Parameters
orb1: orbital on supersite i
orb2: orbital on supersite i+1
Here is the call graph for this function:

◆ Sm()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Sm ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ Sp()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Sp ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ Sx()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if< Dummy::NO_SPIN_SYM(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Sx ( std::size_t  orbital = 0) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Sy()

template<typename Symmetry , std::size_t order>
template<typename Dummy >
std::enable_if< Dummy::NO_SPIN_SYM(), SiteOperator< std::complex< double >, Symmetry > >::type Xped::SpinBase< Symmetry, order >::Sy ( std::size_t  orbital = 0) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Sz()

template<typename Symmetry_ , std::size_t order>
template<typename Dummy >
std::enable_if<!Dummy::IS_SPIN_SU2(), SiteOperator< double, Symmetry_ > >::type Xped::SpinBase< Symmetry_, order >::Sz ( std::size_t  orbital = 0) const
Here is the caller graph for this function:

◆ Zero()

template<typename Symmetry_ , std::size_t order>
SiteOperator< double, Symmetry_ > Xped::SpinBase< Symmetry_, order >::Zero ( std::size_t  orbital = 0) const

Identity

Here is the caller graph for this function:

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