VMPS++
Loading...
Searching...
No Matches
FermionSiteU0.h
Go to the documentation of this file.
1
#ifndef FERMIONSITEU0_H_
2
#define FERMIONSITEU0_H_
3
4
#include "
DmrgTypedefs.h
"
5
6
#include "
symmetry/S1xS2.h
"
7
#include "
symmetry/SU2.h
"
8
#include "
symmetry/U1.h
"
9
10
#include "
tensors/SiteOperatorQ.h
"
11
12
template
<
typename
Symmetry>
class
FermionSite
;
13
14
// template <>
15
// class FermionSite<Sym::U0>
16
// {
17
// typedef double Scalar;
18
// typedef Sym::U0 Symmetry;
19
// typedef SiteOperatorQ<Symmetry,Eigen::Matrix<Scalar,Eigen::Dynamic,Eigen::Dynamic> > OperatorType;
20
// public:
21
// FermionSite() {};
22
// FermionSite(bool U_IS_INFINITE, bool UPH_IS_INFINITE);
23
24
// OperatorType Id_1s() const {return Id_1s_;}
25
// OperatorType F_1s() const {return F_1s_;}
26
27
// OperatorType c_1s(SPIN_INDEX sigma) const { if (sigma == UP) {return cup_1s_;} return cdn_1s_;}
28
// OperatorType cdag_1s(SPIN_INDEX sigma) const { if (sigma == UP) {return cup_1s_.adjoint();} return cdn_1s_.adjoint();}
29
30
// OperatorType n_1s() const {return n_1s(UP) + n_1s(DN);}
31
// OperatorType n_1s(SPIN_INDEX sigma) const { if (sigma == UP) {return nup_1s_;} return ndn_1s_;}
32
// OperatorType ns_1s() const {return n_1s() - 2.*d_1s();}
33
// OperatorType nh_1s() const {return 2.*d_1s() - n_1s() + Id_1s();}
34
// OperatorType d_1s() const {return d_1s_;}
35
36
// OperatorType Sz_1s() const {return Sz_1s_;}
37
// OperatorType Sp_1s() const {return Sp_1s_;}
38
// OperatorType Sm_1s() const {return Sm_1s_;}
39
40
// OperatorType Tz_1s() const {return 0.5*(n_1s() - Id_1s());}
41
// OperatorType cc_1s() const {return cc_1s_;}
42
// OperatorType cdagcdag_1s() const {return cdagcdag_1s_;}
43
44
// Qbasis<Symmetry> basis_1s() const {return basis_1s_;}
45
// protected:
46
47
// Qbasis<Symmetry> basis_1s_;
48
49
// OperatorType Id_1s_; //identity
50
// OperatorType F_1s_; //Fermionic sign
51
// OperatorType cup_1s_; //annihilation
52
// OperatorType cdn_1s_; //annihilation
53
54
// OperatorType n_1s_; //particle number
55
// OperatorType nup_1s_; //particle number
56
// OperatorType ndn_1s_; //particle number
57
// OperatorType d_1s_; //double occupancy
58
59
// OperatorType Sz_1s_; //orbital spin
60
// OperatorType Sp_1s_; //orbital spin
61
// OperatorType Sm_1s_; //orbital spin
62
63
// OperatorType Tz_1s_; //orbital pseude spin
64
// OperatorType cc_1s_; //pairing
65
// OperatorType cdagcdag_1s_; //pairing adjoint
66
// };
67
68
// FermionSite<Sym::U0>::
69
// FermionSite(bool U_IS_INFINITE, bool UPH_IS_INFINITE)
70
// {
71
72
// //create basis for one Fermionic Site
73
// typename Symmetry::qType Q = {}; //empty and doubly occupied state
74
// Eigen::Index inner_dim;
75
// std::vector<std::string> ident;
76
77
// if (!UPH_IS_INFINITE and U_IS_INFINITE)
78
// {
79
// ident.push_back("empty");
80
// ident.push_back("up");
81
// ident.push_back("dn");
82
// inner_dim = 3;
83
// basis_1s_.push_back(Q,inner_dim,ident);
84
// ident.clear();
85
// }
86
// else if (!U_IS_INFINITE and !UPH_IS_INFINITE)
87
// {
88
// ident.push_back("empty");
89
// ident.push_back("up");
90
// ident.push_back("dn");
91
// ident.push_back("double");
92
// inner_dim = 4;
93
// basis_1s_.push_back(Q,inner_dim,ident);
94
// ident.clear();
95
// }
96
// else
97
// {
98
// ident.push_back("up");
99
// ident.push_back("dn");
100
// inner_dim = 2;
101
// basis_1s_.push_back(Q,inner_dim,ident);
102
// ident.clear();
103
// }
104
105
// Id_1s_ = OperatorType({},basis_1s_);
106
// F_1s_ = OperatorType({},basis_1s_);
107
// cup_1s_ = OperatorType({},basis_1s_);
108
// cdn_1s_ = OperatorType({},basis_1s_);
109
// d_1s_ = OperatorType({},basis_1s_);
110
// Sz_1s_ = OperatorType({},basis_1s_);
111
// Sp_1s_ = OperatorType({},basis_1s_);
112
// Sm_1s_ = OperatorType({},basis_1s_);
113
114
// // create operators one orbitals
115
// if (!UPH_IS_INFINITE) Id_1s_("empty", "empty") = 1.;
116
117
// if (!U_IS_INFINITE and !UPH_IS_INFINITE) Id_1s_("double", "double") = 1.;
118
// Id_1s_("up", "up") = 1.;
119
// Id_1s_("dn", "dn") = 1.;
120
121
// if (!UPH_IS_INFINITE) F_1s_("empty", "empty") = 1.;
122
// if (!U_IS_INFINITE and !UPH_IS_INFINITE) F_1s_("double", "double") = 1.;
123
// F_1s_("up", "up") = -1.;
124
// F_1s_("dn", "dn") = -1.;
125
126
// if (!UPH_IS_INFINITE) cup_1s_("empty", "up") = 1.;
127
// if (!U_IS_INFINITE and !UPH_IS_INFINITE) cup_1s_("dn", "double") = 1.;
128
129
// if (!UPH_IS_INFINITE) cdn_1s_("empty", "dn") = 1.;
130
// if (!U_IS_INFINITE and !UPH_IS_INFINITE) cdn_1s_("up", "double") = -1.;
131
132
// nup_1s_ = cup_1s_.adjoint() * cup_1s_;
133
// ndn_1s_ = cdn_1s_.adjoint() * cdn_1s_;
134
// if (!U_IS_INFINITE and !UPH_IS_INFINITE) d_1s_( "double", "double" ) = 1.;
135
136
// Sz_1s_ = 0.5*(nup_1s_ - ndn_1s_);
137
// Sp_1s_ = cup_1s_.adjoint() * cdn_1s_;
138
// Sm_1s_ = Sp_1s_.adjoint();
139
// cc_1s_ = cdn_1s_ * cup_1s_; //The sign convention corresponds to c_DN c_UP
140
// cdagcdag_1s_ = cc_1s_.adjoint(); //The sign convention corresponds to (c_DN c_UP)†=c_UP†c_DNâ€
141
142
// }
143
144
#endif
//FERMIONSITEU0_H_
DmrgTypedefs.h
S1xS2.h
SU2.h
SiteOperatorQ.h
U1.h
FermionSite
Definition:
FermionSite.h:16
sites
deprecated
FermionSiteU0.h
Generated by
1.9.6