1#ifndef FERMIONSITEU1xSU2_H_
2#define FERMIONSITEU1xSU2_H_
17class FermionSite<
Sym::S1xS2<Sym::U1<Sym::SpinU1>, Sym::SU2<Sym::ChargeSU2> > >
26 FermionSite (
bool REMOVE_DOUBLE,
bool REMOVE_EMPTY,
bool REMOVE_UP,
bool REMOVE_DN,
int mfactor_input=1.,
int k_input=0);
33 if (sigma ==
UP and G ==
A) {
return cupA_1s_;}
34 else if (sigma ==
UP and G ==
B) {
return cupB_1s_;}
35 else if (sigma ==
DN and G ==
A) {
return cdnA_1s_;}
77FermionSite (
bool REMOVE_DOUBLE,
bool REMOVE_EMPTY,
bool REMOVE_UP,
bool REMOVE_DN,
int mfactor_input,
int k_input)
79 bool REMOVE_HOLON = (REMOVE_DOUBLE or REMOVE_EMPTY)?
true:
false;
83 Eigen::Index inner_dim;
84 std::vector<std::string> ident;
91 ident.push_back(
"holon");
92 basis_1s_.push_back(Q,inner_dim,ident);
99 ident.push_back(
"up");
100 basis_1s_.push_back(Q,inner_dim,ident);
107 ident.push_back(
"dn");
108 basis_1s_.push_back(Q,inner_dim,ident);
123 if (!REMOVE_HOLON) Id_1s_(
"holon",
"holon") = 1.;
124 if (!REMOVE_UP) Id_1s_(
"up",
"up") = 1.;
125 if (!REMOVE_DN) Id_1s_(
"dn",
"dn") = 1.;
127 if (!REMOVE_HOLON) F_1s_(
"holon",
"holon") = 1.;
128 if (!REMOVE_UP) F_1s_(
"up",
"up") = -1.;
129 if (!REMOVE_DN) F_1s_(
"dn",
"dn") = -1.;
131 if (!REMOVE_HOLON) nh_1s_(
"holon",
"holon") = 1.;
133 if (!REMOVE_HOLON) T_1s_(
"holon",
"holon") = std::sqrt(0.75);
135 if (!REMOVE_HOLON and !REMOVE_DN) cupA_1s_(
"dn",
"holon" ) = sqrt(2.);
136 if (!REMOVE_HOLON and !REMOVE_UP) cupA_1s_(
"holon",
"up" ) = -1.;
138 if (!REMOVE_HOLON and !REMOVE_UP) cdnA_1s_(
"up",
"holon" ) = sqrt(2.);
139 if (!REMOVE_HOLON and !REMOVE_DN) cdnA_1s_(
"holon",
"dn" ) = 1.;
141 if (!REMOVE_HOLON and !REMOVE_DN) cupB_1s_(
"dn",
"holon" ) = -1.*sqrt(2.);
142 if (!REMOVE_HOLON and !REMOVE_UP) cupB_1s_(
"holon",
"up" ) = -1.;
144 if (!REMOVE_HOLON and !REMOVE_UP) cdnB_1s_(
"up",
"holon" ) = -1.*sqrt(2.);
145 if (!REMOVE_HOLON and !REMOVE_DN) cdnB_1s_(
"holon",
"dn" ) = 1.;
147 nup_1s_ = std::sqrt(0.5) * OperatorType::prod(cupA_1s_.
adjoint(),cupA_1s_,{0,1});
148 ndn_1s_ = std::sqrt(0.5) * OperatorType::prod(cdnA_1s_.
adjoint(),cdnA_1s_,{0,1});
150 Sz_1s_ = 0.5 * (std::sqrt(0.5) * OperatorType::prod(cupA_1s_.
adjoint(),cupA_1s_,{0,1}) - std::sqrt(0.5) * OperatorType::prod(cdnA_1s_.
adjoint(),cdnA_1s_,{0,1}));
151 Sp_1s_ = -std::sqrt(0.5) * OperatorType::prod(cupA_1s_.
adjoint(),cdnA_1s_,{+2,1});
152 Sm_1s_ = -std::sqrt(0.5) * OperatorType::prod(cdnA_1s_.
adjoint(),cupA_1s_,{-2,1});
155 if (!REMOVE_UP) exp_ipiSz_1s_(
"up",
"up") = +1.i;
156 if (!REMOVE_DN) exp_ipiSz_1s_(
"dn",
"dn") = -1.i;
157 if (!REMOVE_HOLON) exp_ipiSz_1s_(
"holon",
"holon") = 1.;
Qbasis< Symmetry > basis_1s() const
Qbasis< Symmetry > basis_1s_
Sym::S1xS2< Sym::U1< Sym::SpinU1 >, Sym::SU2< Sym::ChargeSU2 > > Symmetry
OperatorType F_1s() const
ComplexOperatorType exp_ipiSz_1s() const
OperatorType Sz_1s() const
SiteOperatorQ< Symmetry, Eigen::Matrix< complex< Scalar >, Eigen::Dynamic, Eigen::Dynamic > > ComplexOperatorType
OperatorType n_1s(SPIN_INDEX sigma) const
OperatorType n_1s() const
OperatorType cdag_1s(SPIN_INDEX sigma, SUB_LATTICE G) const
OperatorType nh_1s() const
OperatorType c_1s(SPIN_INDEX sigma, SUB_LATTICE G) const
OperatorType Id_1s() const
OperatorType T_1s() const
ComplexOperatorType exp_ipiSz_1s_
OperatorType Sm_1s() const
OperatorType Sp_1s() const
OperatorType ns_1s() const
SiteOperatorQ< Symmetry, Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > > OperatorType
OperatorType nh_1s() const
ComplexOperatorType exp_ipiSz_1s_
Qbasis< Symmetry > basis_1s_
OperatorType c_1s(SPIN_INDEX sigma) const
OperatorType Id_1s() const
SiteOperatorQ< Symmetry, MatrixType_ > adjoint() const