VMPS++
Loading...
Searching...
No Matches
DmrgTypedefs.h
Go to the documentation of this file.
1#ifndef DMRG_TYPEDEFS
2#define DMRG_TYPEDEFS
3
5#include <array>
6#include <vector>
7#include <functional>
8#include <complex>
10
11#include "symmetry/qarray.h"
12
13//include "tensors/SiteOperatorQ.h"
14//include "tensors/SiteOperator.h"
15
16//include "LanczosSolver.h" // from ALGS
17#include "LanczosTypedefs.h"
18
19#ifndef IS_REAL_FUNCTION
20#define IS_REAL_FUNCTION
21inline double isReal (double x) {return x;}
22inline double isReal (std::complex<double> x) {return x.real();}
23#endif
24
25#ifndef CONJ_IF_COMPLEX
26#define CONJ_IF_COMPLEX
27inline double conjIfcomplex (double x) {return x;}
28inline std::complex<double> conjIfcomplex (std::complex<double> x) {return conj(x);}
29#endif
30
31#define EIGEN_INITIALIZE_MATRICES_BY_ZERO
32
33#ifndef SPIN_INDEX_ENUM
34#define SPIN_INDEX_ENUM
36 {
37 UP=false,
38 DN=true,
40 UPDN=3
41 };
42
44 {
45 assert(sigma==UP or sigma==DN);
46 return (sigma==UP) ? DN : UP;
47 }
48 //string spin_index_strings[] = {"UP","DN","NO","UPDN"};
49
50 std::ostream& operator<< (std::ostream& s, SPIN_INDEX sigma)
51 {
52 if (sigma==UP) {s << "ā†‘";}
53 else if (sigma==DN) {s << "ā†“";}
54 else if (sigma==NOSPIN) {s << "ā†Æ";}
55 else if (sigma==UPDN) {s << "ā‡…";}
56 return s;
57 }
58#endif
59
60enum SPINOP_LABEL {SX, SY, iSY, SZ, SP, SM, QZ, QP, QM, QPZ, QMZ};
61
62std::ostream& operator<< (std::ostream& s, SPINOP_LABEL Sa)
63{
64 if (Sa==SX) {s << "Sx";}
65 else if (Sa==SY) {s << "Sy";}
66 else if (Sa==iSY) {s << "iSy";}
67 else if (Sa==SZ) {s << "Sz";}
68 else if (Sa==SP) {s << "S+";}
69 else if (Sa==SM) {s << "S-";}
70 else if (Sa==QZ) {s << "Qz";}
71 else if (Sa==QP) {s << "Q+";}
72 else if (Sa==QM) {s << "Q-";}
73 else if (Sa==QPZ) {s << "Q+z";}
74 else if (Sa==QMZ) {s << "Q-z";}
75 return s;
76}
77
79
80std::ostream& operator<< (std::ostream& s, STRING STR)
81{
82 if (STR==NOSTRING) {s << "NOSTRING";}
83 else if (STR==STRINGX) {s << "STRINGX";}
84 else if (STR==STRINGY) {s << "STRINGY";}
85 else if (STR==STRINGZ) {s << "STRINGZ";}
86 return s;
87}
88
90{
91 if (STR==STRINGX) {return SX;}
92 else if (STR==STRINGY) {return iSY;}
93 return SZ;
94}
95
97
98std::ostream& operator<< (std::ostream& s, MODEL_FAMILY mf)
99{
100 if (mf==HEISENBERG) {s << "HEISENBERG";}
101 else if (mf==HUBBARD) {s << "HUBBARD";}
102 else if (mf==KONDO) {s << "KONDO";}
103 else if (mf==SPINLESS) {s << "SPINLESS";}
104 return s;
105}
106
107#ifndef KIND_ENUM
108#define KIND_ENUM
109namespace Sym{
111}
112#endif
113
114std::ostream& operator<< (std::ostream& s, Sym::KIND l)
115{
116 if (l==Sym::KIND::S) {s << "S";}
117 if (l==Sym::KIND::Salt) {s << "Salt";}
118 else if (l==Sym::KIND::T) {s << "T";}
119 else if (l==Sym::KIND::N) {s << "N";}
120 else if (l==Sym::KIND::M) {s << "M";}
121 else if (l==Sym::KIND::Nup) {s << "Nā†‘";}
122 else if (l==Sym::KIND::Ndn) {s << "Nā†“";}
123 else if (l==Sym::KIND::Nparity) {s << "P";}
124 else if (l==Sym::KIND::K) {s << "K";}
125 return s;
126}
127
128enum PARITY {EVEN=0, ODD=1};
129
130enum SUB_LATTICE {A=1,B=-1};
131
133
134std::ostream& operator<< (std::ostream& s, SUB_LATTICE sublat)
135{
136 if (sublat==A) {s << "A";}
137 else if (sublat==B) {s << "B";}
138 return s;
139}
140
142{
143 return (sublat==A)? B:A;
144}
145
146void sublattice_check (const ArrayXXd &hopping, const vector<SUB_LATTICE> &G)
147{
148 for (size_t i=0; i<hopping.rows(); ++i)
149 for (size_t j=0; j<hopping.cols(); ++j)
150 {
151 if (hopping(i,j)!=0.)
152 {
153 if (G[i]==G[j]) lout << "sublattice error: G[" << i << "]=" << G[i] << ", G[" << j << "]=" << G[j] << endl;
154 assert(G[i]!=G[j] and "Sublattice check");
155 }
156 }
157 lout << "Sublattice check passed!" << endl;
158}
159
160enum BC
161{
162 // PERIODIC=true,
163 OPEN=true,
164 INFINITE=false,
165};
166
167std::ostream& operator<< (std::ostream& s, BC boundary)
168{
169 // if (boundary==BC::PERIODIC) {s << "periodic (finite system)";}
170 if (boundary==BC::OPEN) {s << "open";}
171 else if (boundary==BC::INFINITE) {s << "infinite";}
172 return s;
173}
174
176#include <Eigen/Dense>
177#include <Eigen/SparseCore>
179
180#ifndef EIGEN_DEFAULT_SPARSE_INDEX_TYPE
181#define EIGEN_DEFAULT_SPARSE_INDEX_TYPE int
182#endif
183using namespace Eigen;
184typedef SparseMatrix<double,ColMajor,EIGEN_DEFAULT_SPARSE_INDEX_TYPE> SparseMatrixXd;
185typedef SparseMatrix<std::complex<double>,ColMajor,EIGEN_DEFAULT_SPARSE_INDEX_TYPE> SparseMatrixXcd;
186
187template<typename Operator, typename Scalar>
189{
190 std::vector<std::tuple<std::size_t, std::vector<Operator>, Scalar>> data;
191
192 template<typename OtherOperator>
193 void push_back(const std::tuple<std::size_t, std::vector<OtherOperator>, Scalar> & elem)
194 {
195 if( std::abs(std::get<2>(elem) ) != 0 )
196 {
197 std::vector<Operator> plainOps;
198 for (auto & op: std::get<1>(elem)) {plainOps.push_back(op.template plain<typename OtherOperator::Scalar>());}
199 std::tuple<std::size_t, std::vector<Operator>, Scalar> plainElem;
200 std::get<0>(plainElem) = std::get<0>(elem);
201 std::get<1>(plainElem) = plainOps;
202 std::get<2>(plainElem) = std::get<2>(elem);
203 data.push_back(plainElem);
204 }
205 }
206
207 void push_back(const std::tuple<std::size_t, std::vector<Operator>, Scalar> & elem) {if( std::abs(std::get<2>(elem) ) != 0 ) {data.push_back(elem);}}
208
209 std::tuple<std::size_t, std::vector<Operator>, Scalar> operator[] ( std::size_t i ) const {return data[i];}
210 std::tuple<std::size_t, std::vector<Operator>, Scalar>& operator[] ( std::size_t i ) {return data[i];}
211
212 std::size_t size() const {return data.size();}
213
214 template<typename OtherOperator, typename OtherScalar> PushType<OtherOperator,OtherScalar> cast()
215 {
217 for (size_t i=0; i<size(); i++)
218 {
219 std::vector<OtherOperator> otherOps(std::get<1>(data[i]).size());
220 for (size_t j=0; j<std::get<1>(data[i]).size(); j++) {otherOps[j] = std::get<1>(data[i]).at(j).template cast<typename OtherOperator::Scalar>();}
221 // OtherScalar otherCoupling = static_cast<OtherScalar>(std::get<2>(data[i]));
222 out.push_back(make_tuple(std::get<0>(data[i]), otherOps, std::get<2>(data[i])));
223 }
224 return out;
225 }
226};
227
228namespace VMPS
229{
231 {
233 {
235 RIGHT
236 };
237 };
238
239 std::ostream& operator<< (std::ostream& s, VMPS::DIRECTION::OPTION DIR)
240 {
241 if (DIR==VMPS::DIRECTION::LEFT) {s << "LEFT";}
242 else {s << "RIGHT";}
243 return s;
244 }
245}
247struct DMRG
248{
251 {
253 {
255 RIGHT
256 };
257 };
259 struct BROOM
260 {
262 {
264 SVD,
269 QR_NULL
270 };
271 };
272
275 {
277 {
282 };
283 };
284
287 {
288 enum INIT
289 {
293 RHS_SVD
294 };
295 };
296
298 struct RESIZE
299 {
301 {
303 DECR
304 };
305 };
306
308 struct CONVTEST
309 {
311 {
315 VAR_FULL
316 };
317 };
318
321 {
323 {
326 TWO_SITE=2
327 };
328 };
329
331 struct CONTROL
332 {
333 struct DEFAULT
334 {
335 //GLOB DEFAULTS
336 constexpr static size_t min_halfsweeps = 6;
337 constexpr static size_t max_halfsweeps = 20;
338 constexpr static double tol_eigval = 1e-6;
339 constexpr static double tol_state = 1e-5;
340 constexpr static size_t Minit = 1;
341 constexpr static size_t Mlimit = 1000;
342 constexpr static int Qinit = 1; // Qinit=-1 resizes with all possible blocks
343 constexpr static size_t savePeriod = 0;
344 constexpr static char saveName[] = "MpsBackup";
346 constexpr static bool CALC_S_ON_EXIT = false;
347 constexpr static bool CALC_ERR_ON_EXIT = true;
349 constexpr static double falphamin = 0.1;
350 constexpr static double falphamax = 2.;
351
352 #ifndef DMRG_CONTROL_DEFAULT_MIN_NSV
353 #define DMRG_CONTROL_DEFAULT_MIN_NSV 0
354 #endif
355
356 //DYN DEFAULTS
357 static double max_alpha_rsvd (size_t i) {return (i<11)? 1e2:0;}
358 static double min_alpha_rsvd (size_t i) {return (i<11)? 1e-11:0;}
359 static double eps_svd (size_t i) {return 1e-14;}
360 static double eps_truncWeight (size_t i) {return 0.;}
361 static size_t Mincr_abs (size_t i) {return 20;} // increase M by at least 20
362 static double Mincr_rel (size_t i) {return 1.1;} // increase M by at least 10%
363 static size_t Mincr_per (size_t i) {return 2;} // increase M every 2 half-sweeps
364 static size_t min_Nsv (size_t i) {return DMRG_CONTROL_DEFAULT_MIN_NSV;}
365 static int max_Nrich (size_t i) {return -1;} // -1 = use all
366 static void doSomething (size_t i) {return;}
368
369 //LANCZOS DEFAULTS
370 constexpr static ::LANCZOS::REORTHO::OPTION REORTHO = LANCZOS::REORTHO::FULL;
371 constexpr static double tol_eigval_Lanczos = 1e-8;
372 constexpr static double tol_state_Lanczos = 1e-5;
373 constexpr static size_t dimK = 500ul;
374 };
375
376 struct GLOB
377 {
386 std::string saveName = std::string(CONTROL::DEFAULT::saveName);
393 };
394
395 struct DYN
396 {
399 function<double(size_t)> eps_svd = CONTROL::DEFAULT::eps_svd;
401 function<size_t(size_t)> Mincr_abs = CONTROL::DEFAULT::Mincr_abs;
402 function<double(size_t)> Mincr_rel = CONTROL::DEFAULT::Mincr_rel;
403 function<size_t(size_t)> Mincr_per = CONTROL::DEFAULT::Mincr_per;
404 function<size_t(size_t)> min_Nsv = CONTROL::DEFAULT::min_Nsv;
405 function<int(size_t)> max_Nrich = CONTROL::DEFAULT::max_Nrich;
408 };
409
410 struct LOC
411 {
412 ::LANCZOS::REORTHO::OPTION REORTHO = CONTROL::DEFAULT::REORTHO;
416 };
417 };
418};
419
420std::ostream& operator<< (std::ostream& s, DMRG::VERBOSITY::OPTION VERB)
421{
422 if (VERB==DMRG::VERBOSITY::SILENT) {s << "SILENT";}
423 else if (VERB==DMRG::VERBOSITY::ON_EXIT) {s << "ON_EXIT";}
424 else if (VERB==DMRG::VERBOSITY::HALFSWEEPWISE) {s << "HALFSWEEPWISE";}
425 else if (VERB==DMRG::VERBOSITY::STEPWISE) {s << "STEPWSIE";}
426 return s;
427}
428
429std::ostream& operator<< (std::ostream& s, DMRG::CONVTEST::OPTION TEST)
430{
431 if (TEST==DMRG::CONVTEST::VAR_2SITE) {s << "2-site variance";}
432 else if (TEST==DMRG::CONVTEST::VAR_HSQ) {s << "|<HĀ²>-<H>Ā²|/L";}
433 else if (TEST==DMRG::CONVTEST::NORM_TEST) {s << "norm comparison";}
434 else if (TEST==DMRG::CONVTEST::VAR_FULL) {s << "ā€–H|ĪØ>-E|ĪØ>ā€–/L";}
435 return s;
436}
437
438inline std::istream & operator>>(std::istream & str, DMRG::VERBOSITY::OPTION &VERB)
439{
440 size_t verb = 0;
441 if (str >> verb) { VERB = static_cast<DMRG::VERBOSITY::OPTION>(verb);}
442 return str;
443}
444
445std::ostream& operator<< (std::ostream& s, DMRG::DIRECTION::OPTION DIR)
446{
447 if (DIR==DMRG::DIRECTION::LEFT) {s << "LEFT";}
448 else {s << "RIGHT";}
449 return s;
450}
451
452std::ostream& operator<< (std::ostream& s, DMRG::ITERATION::OPTION ITER)
453{
454 if (ITER==DMRG::ITERATION::ZERO_SITE) {s << "0-site";}
455 else if (ITER==DMRG::ITERATION::ONE_SITE) {s << "1-site";}
456 else if (ITER==DMRG::ITERATION::TWO_SITE) {s << "2-site";}
457 return s;
458}
459
461{
462 double value = std::nan("0");
463 string source = "unknown";
464 string method = "unknown";
465};
466
467std::ostream& operator<< (std::ostream& s, refEnergy r)
468{
469 s << r.value << " (" << r.source << ")" << " [" << r.method << "]";
470 return s;
471}
472
473template<typename Symmetry, typename Scalar>
475{
477
478 TwoSiteData (std::array<size_t,6> s, qarray2<Symmetry::Nq> qm, std::array<size_t,2> k, qarray<Symmetry::Nq> qOp_, Scalar cgc9_)
479 :s1(s[0]), s2(s[1]), s3(s[2]), s4(s[3]), s1s3(s[4]), s2s4(s[5]), qmerge13(qm[0]), qmerge24(qm[1]), k12(k[0]), k34(k[1]), qOp(qOp_), cgc9(cgc9_)
480 {};
481
482 size_t s1, s2, s3, s4;
483 size_t s1s3, s2s4;
485 size_t k12, k34;
487 Scalar cgc9 = 1.;
488};
489
490namespace PROP
491{
492 const bool HERMITIAN = true;
493 const bool NON_HERMITIAN = false;
494 const bool UNITARY = true;
495 const bool NON_UNITARY = false;
496 const bool FERMIONIC = true;
497 const bool NON_FERMIONIC = false;
498 const bool BOSONIC = false;
499 const bool COMPRESS = true;
500 const bool DONT_COMPRESS = false;
501}
502
503#endif
SPIN_INDEX
Definition: DmrgTypedefs.h:36
@ DN
Definition: DmrgTypedefs.h:38
@ NOSPIN
Definition: DmrgTypedefs.h:39
@ UP
Definition: DmrgTypedefs.h:37
@ UPDN
Definition: DmrgTypedefs.h:40
MODEL_FAMILY
Definition: DmrgTypedefs.h:96
@ KONDO
Definition: DmrgTypedefs.h:96
@ HUBBARD
Definition: DmrgTypedefs.h:96
@ SPINLESS
Definition: DmrgTypedefs.h:96
@ HEISENBERG
Definition: DmrgTypedefs.h:96
PARITY
Definition: DmrgTypedefs.h:128
@ EVEN
Definition: DmrgTypedefs.h:128
@ ODD
Definition: DmrgTypedefs.h:128
void sublattice_check(const ArrayXXd &hopping, const vector< SUB_LATTICE > &G)
Definition: DmrgTypedefs.h:146
#define DMRG_CONTROL_DEFAULT_MIN_NSV
Definition: DmrgTypedefs.h:353
double conjIfcomplex(double x)
Definition: DmrgTypedefs.h:27
SPINOP_LABEL
Definition: DmrgTypedefs.h:60
@ QZ
Definition: DmrgTypedefs.h:60
@ iSY
Definition: DmrgTypedefs.h:60
@ QM
Definition: DmrgTypedefs.h:60
@ QP
Definition: DmrgTypedefs.h:60
@ SZ
Definition: DmrgTypedefs.h:60
@ SP
Definition: DmrgTypedefs.h:60
@ SX
Definition: DmrgTypedefs.h:60
@ QPZ
Definition: DmrgTypedefs.h:60
@ SM
Definition: DmrgTypedefs.h:60
@ SY
Definition: DmrgTypedefs.h:60
@ QMZ
Definition: DmrgTypedefs.h:60
std::istream & operator>>(std::istream &str, DMRG::VERBOSITY::OPTION &VERB)
Definition: DmrgTypedefs.h:438
BC
Definition: DmrgTypedefs.h:161
@ OPEN
Definition: DmrgTypedefs.h:163
@ INFINITE
Definition: DmrgTypedefs.h:164
double isReal(double x)
Definition: DmrgTypedefs.h:21
SPIN_INDEX operator!(const SPIN_INDEX sigma)
Definition: DmrgTypedefs.h:43
SparseMatrix< std::complex< double >, ColMajor, EIGEN_DEFAULT_SPARSE_INDEX_TYPE > SparseMatrixXcd
Definition: DmrgTypedefs.h:185
KONDO_SUBSYSTEM
Definition: DmrgTypedefs.h:132
@ SUB
Definition: DmrgTypedefs.h:132
@ IMP
Definition: DmrgTypedefs.h:132
@ IMPSUB
Definition: DmrgTypedefs.h:132
SparseMatrix< double, ColMajor, EIGEN_DEFAULT_SPARSE_INDEX_TYPE > SparseMatrixXd
Definition: DmrgTypedefs.h:184
SUB_LATTICE
Definition: DmrgTypedefs.h:130
@ B
Definition: DmrgTypedefs.h:130
@ A
Definition: DmrgTypedefs.h:130
SUB_LATTICE flip_sublattice(SUB_LATTICE sublat)
Definition: DmrgTypedefs.h:141
SPINOP_LABEL STRING_TO_SPINOP(STRING STR)
Definition: DmrgTypedefs.h:89
STRING
Definition: DmrgTypedefs.h:78
@ STRINGX
Definition: DmrgTypedefs.h:78
@ STRINGY
Definition: DmrgTypedefs.h:78
@ STRINGZ
Definition: DmrgTypedefs.h:78
@ NOSTRING
Definition: DmrgTypedefs.h:78
std::ostream & operator<<(std::ostream &s, SPIN_INDEX sigma)
Definition: DmrgTypedefs.h:50
#define EIGEN_DEFAULT_SPARSE_INDEX_TYPE
Definition: DmrgTypedefs.h:181
const bool COMPRESS
Definition: DmrgTypedefs.h:499
const bool NON_UNITARY
Definition: DmrgTypedefs.h:495
const bool FERMIONIC
Definition: DmrgTypedefs.h:496
const bool NON_FERMIONIC
Definition: DmrgTypedefs.h:497
const bool NON_HERMITIAN
Definition: DmrgTypedefs.h:493
const bool UNITARY
Definition: DmrgTypedefs.h:494
const bool HERMITIAN
Definition: DmrgTypedefs.h:492
const bool BOSONIC
Definition: DmrgTypedefs.h:498
const bool DONT_COMPRESS
Definition: DmrgTypedefs.h:500
@ Nparity
Definition: DmrgTypedefs.h:110
@ Salt
Definition: DmrgTypedefs.h:110
std::ostream & operator<<(std::ostream &s, VMPS::DIRECTION::OPTION DIR)
Definition: DmrgTypedefs.h:239
std::array< qarray< Nq >, 2 > qarray2
Definition: qarray.h:51
static constexpr double tol_eigval_Lanczos
Definition: DmrgTypedefs.h:371
static constexpr bool CALC_S_ON_EXIT
Definition: DmrgTypedefs.h:346
static double Mincr_rel(size_t i)
Definition: DmrgTypedefs.h:362
static size_t Mincr_abs(size_t i)
Definition: DmrgTypedefs.h:361
static double eps_svd(size_t i)
Definition: DmrgTypedefs.h:359
static constexpr double tol_state
Definition: DmrgTypedefs.h:339
static constexpr size_t Minit
Definition: DmrgTypedefs.h:340
static constexpr double tol_state_Lanczos
Definition: DmrgTypedefs.h:372
static constexpr DMRG::CONVTEST::OPTION CONVTEST
Definition: DmrgTypedefs.h:345
static constexpr DMRG::DIRECTION::OPTION INITDIR
Definition: DmrgTypedefs.h:348
static void doSomething(size_t i)
Definition: DmrgTypedefs.h:366
static constexpr char saveName[]
Definition: DmrgTypedefs.h:344
static DMRG::ITERATION::OPTION iteration(size_t i)
Definition: DmrgTypedefs.h:367
static double max_alpha_rsvd(size_t i)
Definition: DmrgTypedefs.h:357
static constexpr double falphamin
Definition: DmrgTypedefs.h:349
static constexpr double tol_eigval
Definition: DmrgTypedefs.h:338
static constexpr int Qinit
Definition: DmrgTypedefs.h:342
static constexpr size_t Mlimit
Definition: DmrgTypedefs.h:341
static constexpr double falphamax
Definition: DmrgTypedefs.h:350
static double min_alpha_rsvd(size_t i)
Definition: DmrgTypedefs.h:358
static size_t Mincr_per(size_t i)
Definition: DmrgTypedefs.h:363
static constexpr size_t savePeriod
Definition: DmrgTypedefs.h:343
static constexpr ::LANCZOS::REORTHO::OPTION REORTHO
Definition: DmrgTypedefs.h:370
static double eps_truncWeight(size_t i)
Definition: DmrgTypedefs.h:360
static constexpr size_t max_halfsweeps
Definition: DmrgTypedefs.h:337
static constexpr size_t min_halfsweeps
Definition: DmrgTypedefs.h:336
static size_t min_Nsv(size_t i)
Definition: DmrgTypedefs.h:364
static constexpr bool CALC_ERR_ON_EXIT
Definition: DmrgTypedefs.h:347
static constexpr size_t dimK
Definition: DmrgTypedefs.h:373
static int max_Nrich(size_t i)
Definition: DmrgTypedefs.h:365
function< double(size_t)> eps_svd
Definition: DmrgTypedefs.h:399
function< double(size_t)> eps_truncWeight
Definition: DmrgTypedefs.h:400
function< int(size_t)> max_Nrich
Definition: DmrgTypedefs.h:405
function< size_t(size_t)> Mincr_per
Definition: DmrgTypedefs.h:403
function< size_t(size_t)> Mincr_abs
Definition: DmrgTypedefs.h:401
function< double(size_t)> max_alpha_rsvd
Definition: DmrgTypedefs.h:397
function< size_t(size_t)> min_Nsv
Definition: DmrgTypedefs.h:404
function< void(size_t)> doSomething
Definition: DmrgTypedefs.h:406
function< DMRG::ITERATION::OPTION(size_t)> iteration
Definition: DmrgTypedefs.h:407
function< double(size_t)> Mincr_rel
Definition: DmrgTypedefs.h:402
function< double(size_t)> min_alpha_rsvd
Definition: DmrgTypedefs.h:398
DMRG::DIRECTION::OPTION INITDIR
Definition: DmrgTypedefs.h:390
std::string saveName
Definition: DmrgTypedefs.h:386
::LANCZOS::REORTHO::OPTION REORTHO
Definition: DmrgTypedefs.h:412
void push_back(const std::tuple< std::size_t, std::vector< Operator >, Scalar > &elem)
Definition: DmrgTypedefs.h:207
PushType< OtherOperator, OtherScalar > cast()
Definition: DmrgTypedefs.h:214
std::size_t size() const
Definition: DmrgTypedefs.h:212
std::vector< std::tuple< std::size_t, std::vector< Operator >, Scalar > > data
Definition: DmrgTypedefs.h:190
void push_back(const std::tuple< std::size_t, std::vector< OtherOperator >, Scalar > &elem)
Definition: DmrgTypedefs.h:193
std::tuple< std::size_t, std::vector< Operator >, Scalar > operator[](std::size_t i) const
Definition: DmrgTypedefs.h:209
qarray< Symmetry::Nq > qmerge13
Definition: DmrgTypedefs.h:484
qarray< Symmetry::Nq > qmerge24
Definition: DmrgTypedefs.h:484
qarray< Symmetry::Nq > qOp
Definition: DmrgTypedefs.h:486
TwoSiteData(std::array< size_t, 6 > s, qarray2< Symmetry::Nq > qm, std::array< size_t, 2 > k, qarray< Symmetry::Nq > qOp_, Scalar cgc9_)
Definition: DmrgTypedefs.h:478
Definition: qarray.h:26
double value
Definition: DmrgTypedefs.h:462
string method
Definition: DmrgTypedefs.h:464
string source
Definition: DmrgTypedefs.h:463