1#ifndef FERMIONSITESU2xU0_H_
2#define FERMIONSITESU2xU0_H_
24 FermionSite (
bool REMOVE_DOUBLE,
bool REMOVE_EMPTY,
bool REMOVE_UP,
bool REMOVE_DN,
int mfactor_input=1,
int k_input=0);
59FermionSite (
bool REMOVE_DOUBLE,
bool REMOVE_EMPTY,
bool REMOVE_UP,
bool REMOVE_DN,
int mfactor_input,
int k_input)
61 bool REMOVE_SINGLE = (REMOVE_UP or REMOVE_DN)?
true:
false;
65 Eigen::Index inner_dim;
66 std::vector<std::string> ident;
68 if (!REMOVE_DOUBLE and !REMOVE_EMPTY)
72 ident.push_back(
"empty");
73 ident.push_back(
"double");
74 basis_1s_.push_back(Q,inner_dim,ident);
77 else if (REMOVE_DOUBLE and !REMOVE_EMPTY)
81 ident.push_back(
"empty");
82 basis_1s_.push_back(Q,inner_dim,ident);
85 else if (!REMOVE_DOUBLE and REMOVE_EMPTY)
89 ident.push_back(
"double");
90 basis_1s_.push_back(Q,inner_dim,ident);
98 ident.push_back(
"single");
99 basis_1s_.push_back(Q,inner_dim,ident);
110 if (!REMOVE_EMPTY) Id_1s_(
"empty",
"empty") = 1.;
111 if (!REMOVE_DOUBLE) Id_1s_(
"double",
"double") = 1.;
112 if (!REMOVE_SINGLE) Id_1s_(
"single",
"single") = 1.;
114 if (!REMOVE_EMPTY) F_1s_(
"empty",
"empty") = 1.;
115 if (!REMOVE_DOUBLE) F_1s_(
"double",
"double") = 1.;
116 if (!REMOVE_SINGLE) F_1s_(
"single",
"single") = -1.;
118 if (!REMOVE_EMPTY and !REMOVE_SINGLE) c_1s_(
"empty",
"single") = std::sqrt(2.);
119 if (!REMOVE_DOUBLE and !REMOVE_SINGLE) c_1s_(
"single",
"double") = 1.;
122 n_1s_ = std::sqrt(2.) * OperatorType::prod(cdag_1s_,c_1s_,{1});
123 if (!REMOVE_DOUBLE) d_1s_(
"double",
"double" ) = 1.;
124 if (!REMOVE_SINGLE) S_1s_(
"single",
"single") = std::sqrt(0.75);
125 p_1s_ = -std::sqrt(0.5) * OperatorType::prod(c_1s_,c_1s_,{1});
126 pdag_1s_ = p_1s_.adjoint();
OperatorType d_1s() const
OperatorType Tz_1s() const
OperatorType ns_1s() const
OperatorType cc_1s() const
Qbasis< Symmetry > basis_1s_
OperatorType cdagcdag_1s() const
OperatorType nh_1s() const
OperatorType cdag_1s() const
OperatorType F_1s() const
Qbasis< Symmetry > basis_1s() const
SiteOperatorQ< Symmetry, Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > > OperatorType
OperatorType n_1s() const
OperatorType S_1s() const
OperatorType c_1s() const
Sym::SU2< Sym::SpinSU2 > Symmetry
OperatorType Id_1s() const
OperatorType n_1s() const
Qbasis< Symmetry > basis_1s_
OperatorType d_1s() const
OperatorType Id_1s() const
SiteOperatorQ< Symmetry, MatrixType_ > adjoint() const