18 #include "mltplyCommon.hpp" 20 #include "bitcalc.hpp" 21 #include "expec_cisajscktaltdc.hpp" 22 #include "mltplySpinCore.hpp" 23 #include "mltplyHubbardCore.hpp" 24 #include "wrapperMPI.hpp" 25 #include "mltplyMPISpin.hpp" 26 #include "mltplyMPISpinCore.hpp" 27 #include "mltplyMPIHubbardCore.hpp" 28 #include "common/setmemory.hpp" 67 std::complex<double> *tmp_V,
71 long int tmp_org_isite1,tmp_org_isite2,tmp_org_isite3,tmp_org_isite4;
72 long int tmp_org_sigma1,tmp_org_sigma2,tmp_org_sigma3,tmp_org_sigma4;
83 if(tmp_org_isite1==tmp_org_isite2 && tmp_org_isite3==tmp_org_isite4){
84 if(tmp_org_isite1 > tmp_org_isite3){
85 *org_isite1 = tmp_org_isite3;
86 *org_sigma1 = tmp_org_sigma3;
87 *org_isite2 = tmp_org_isite4;
88 *org_sigma2 = tmp_org_sigma4;
89 *org_isite3 = tmp_org_isite1;
90 *org_sigma3 = tmp_org_sigma1;
91 *org_isite4 = tmp_org_isite2;
92 *org_sigma4 = tmp_org_sigma2;
95 *org_isite1 = tmp_org_isite1;
96 *org_sigma1 = tmp_org_sigma1;
97 *org_isite2 = tmp_org_isite2;
98 *org_sigma2 = tmp_org_sigma2;
99 *org_isite3 = tmp_org_isite3;
100 *org_sigma3 = tmp_org_sigma3;
101 *org_isite4 = tmp_org_isite4;
102 *org_sigma4 = tmp_org_sigma4;
107 else if(tmp_org_isite1==tmp_org_isite4 && tmp_org_isite3==tmp_org_isite2){
108 if(tmp_org_isite1 > tmp_org_isite3){
109 *org_isite1 = tmp_org_isite3;
110 *org_sigma1 = tmp_org_sigma3;
111 *org_isite2 = tmp_org_isite2;
112 *org_sigma2 = tmp_org_sigma2;
113 *org_isite3 = tmp_org_isite1;
114 *org_sigma3 = tmp_org_sigma1;
115 *org_isite4 = tmp_org_isite4;
116 *org_sigma4 = tmp_org_sigma4;
119 *org_isite1 = tmp_org_isite1;
120 *org_sigma1 = tmp_org_sigma1;
121 *org_isite2 = tmp_org_isite4;
122 *org_sigma2 = tmp_org_sigma4;
123 *org_isite3 = tmp_org_isite3;
124 *org_sigma3 = tmp_org_sigma3;
125 *org_isite4 = tmp_org_isite2;
126 *org_sigma4 = tmp_org_sigma2;
148 std::complex<double> **Xvec,
149 std::complex<double> **vec,
150 std::complex<double> **prod
153 long int isite1, isite2, isite3, isite4;
154 long int org_isite1, org_isite2, org_isite3, org_isite4;
155 long int org_sigma1, org_sigma2, org_sigma3, org_sigma4;
156 long int Asum, Bsum, Adiff, Bdiff;
157 long int tmp_off = 0;
158 long int tmp_off_2 = 0;
159 std::complex<double> tmp_V = 1.0 + 0.0*
I;
173 if (
CheckPE(org_isite1 - 1, X) == TRUE ||
CheckPE(org_isite2 - 1, X) == TRUE ||
174 CheckPE(org_isite3 - 1, X) == TRUE ||
CheckPE(org_isite4 - 1, X) == TRUE) {
175 isite1 = X->
Def.
OrgTpow[2 * org_isite1 - 2 + org_sigma1];
176 isite2 = X->
Def.
OrgTpow[2 * org_isite2 - 2 + org_sigma2];
177 isite3 = X->
Def.
OrgTpow[2 * org_isite3 - 2 + org_sigma3];
178 isite4 = X->
Def.
OrgTpow[2 * org_isite4 - 2 + org_sigma4];
179 if (isite1 == isite2 && isite3 == isite4) {
181 1.0, X, nstate, Xvec, vec);
183 else if (isite1 == isite2 && isite3 != isite4) {
185 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3, org_isite4 - 1, org_sigma4,
186 1.0, X, nstate, Xvec, vec);
188 else if (isite1 != isite2 && isite3 == isite4) {
190 org_isite3 - 1, org_sigma3, 1.0, X, nstate, Xvec, vec);
192 else if (isite1 != isite2 && isite3 != isite4) {
194 org_isite3 - 1, org_sigma3, org_isite4 - 1, org_sigma4, 1.0, X, nstate, Xvec, vec);
199 org_sigma1, org_sigma2, org_sigma3, org_sigma4, tmp_V);
212 if (isite1 == isite2 && isite3 == isite4) {
213 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 214 firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2,tmp_V) 215 for (j = 1; j <= i_max; j++) {
219 else if (isite1 == isite2 && isite3 != isite4) {
220 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 221 firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2,tmp_V) 222 for (j = 1; j <= i_max; j++) {
224 tmp_V, nstate, Xvec, vec, &tmp_off);
227 else if (isite1 != isite2 && isite3 == isite4) {
228 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 229 firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2,tmp_V) 230 for (j = 1; j <= i_max; j++) {
232 tmp_V, nstate, Xvec, vec, &tmp_off);
235 else if (isite1 != isite2 && isite3 != isite4) {
236 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 237 firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2,tmp_V) 238 for (j = 1; j <= i_max; j++) {
240 tmp_V, nstate, Xvec, vec, &tmp_off_2);
261 std::complex<double> **Xvec,
262 std::complex<double> **vec,
263 std::complex<double> **prod
266 long int isite1, isite2, isite3, isite4;
267 long int org_isite1, org_isite2, org_isite3, org_isite4;
268 long int org_sigma1, org_sigma2, org_sigma3, org_sigma4;
269 long int Asum, Bsum, Adiff, Bdiff;
270 long int tmp_off = 0;
271 long int tmp_off_2 = 0;
272 std::complex<double> tmp_V;
288 if (org_sigma1 + org_sigma3 != org_sigma2 + org_sigma4) {
294 if (
CheckPE(org_isite1 - 1, X) == TRUE ||
CheckPE(org_isite2 - 1, X) == TRUE ||
295 CheckPE(org_isite3 - 1, X) == TRUE ||
CheckPE(org_isite4 - 1, X) == TRUE) {
296 isite1 = X->
Def.
OrgTpow[2 * org_isite1 - 2 + org_sigma1];
297 isite2 = X->
Def.
OrgTpow[2 * org_isite2 - 2 + org_sigma2];
298 isite3 = X->
Def.
OrgTpow[2 * org_isite3 - 2 + org_sigma3];
299 isite4 = X->
Def.
OrgTpow[2 * org_isite4 - 2 + org_sigma4];
300 if (isite1 == isite2 && isite3 == isite4) {
302 org_isite3 - 1, org_sigma3, 1.0, X, nstate, Xvec, vec);
304 else if (isite1 == isite2 && isite3 != isite4) {
307 org_isite3 - 1, org_sigma3, org_isite4 - 1, org_sigma4, 1.0, X, nstate, Xvec, vec);
309 else if (isite1 != isite2 && isite3 == isite4) {
311 org_isite3 - 1, org_sigma3, 1.0, X, nstate, Xvec, vec);
314 else if (isite1 != isite2 && isite3 != isite4) {
316 org_isite3 - 1, org_sigma3, org_isite4 - 1, org_sigma4, 1.0, X, nstate, Xvec, vec);
321 X, org_isite1, org_isite2, org_isite3, org_isite4,
322 org_sigma1, org_sigma2, org_sigma3, org_sigma4, tmp_V
337 if (isite1 == isite2 && isite3 == isite4) {
338 #pragma omp parallel for default(none) private(j) shared(vec,tmp_V,Xvec,nstate) \ 339 firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2) 340 for (j = 1; j <= i_max; j++) {
344 else if (isite1 == isite2 && isite3 != isite4) {
345 #pragma omp parallel for default(none) private(j) shared(vec,tmp_V,Xvec,nstate) \ 346 firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2) 347 for (j = 1; j <= i_max; j++) {
349 tmp_V, nstate, Xvec, vec, X, &tmp_off);
352 else if (isite1 != isite2 && isite3 == isite4) {
353 #pragma omp parallel for default(none) private(j) shared(vec,tmp_V,Xvec,nstate) \ 354 firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2) 355 for (j = 1; j <= i_max; j++) {
357 tmp_V, nstate, Xvec, vec, X, &tmp_off);
360 else if (isite1 != isite2 && isite3 != isite4) {
361 #pragma omp parallel for default(none) private(j) shared(vec,tmp_V,Xvec,nstate) \ 362 firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2) 363 for (j = 1; j <= i_max; j++) {
365 tmp_V, nstate, Xvec, vec, X, &tmp_off_2);
386 std::complex<double> **Xvec,
387 std::complex<double> **vec,
388 std::complex<double> **prod
391 long int org_isite1, org_isite2, org_isite3, org_isite4;
392 long int org_sigma1, org_sigma2, org_sigma3, org_sigma4;
393 long int isA_up, isB_up;
394 long int is1_up, is2_up;
395 long int tmp_off = 0;
396 int tmp_sgn, num1, num2, one = 1;
397 std::complex<double> tmp_V;
399 std::complex<double> dmv;
405 zclear(i_max*nstate, &Xvec[1][0]);
406 if (
Rearray_Interactions(i, &org_isite1, &org_isite2, &org_isite3, &org_isite4, &org_sigma1, &org_sigma2, &org_sigma3, &org_sigma4, &tmp_V, X) != 0) {
413 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
414 is1_up = X->
Def.
Tpow[org_isite1 - 1];
415 is2_up = X->
Def.
Tpow[org_isite3 - 1];
418 zaxpy_long(i_max*nstate, tmp_V * (std::complex<double>)(num1*num2),
419 &vec[1][0], &Xvec[1][0]);
421 else if (org_isite1 == org_isite3 && org_sigma1 == org_sigma4 && org_sigma2 == org_sigma3) {
422 is1_up = X->
Def.
Tpow[org_isite1 - 1];
424 zaxpy_long(i_max*nstate, tmp_V * (std::complex<double>)num1, &vec[1][0], &Xvec[1][0]);
426 else if (org_sigma1 == org_sigma4 && org_sigma2 == org_sigma3) {
428 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3, org_sigma4,
429 tmp_V, X, nstate, Xvec, vec);
436 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
437 is1_up = X->
Def.
Tpow[org_isite1 - 1];
438 is2_up = X->
Def.
Tpow[org_isite3 - 1];
440 #pragma omp parallel for default(none)shared(vec,Xvec,nstate,one) \ 441 firstprivate(i_max, tmp_V, is1_up, org_sigma1, X, num2) private(j, num1,dmv) 442 for (j = 1; j <= i_max; j++) {
444 dmv = tmp_V * (std::complex<double>)(num1*num2);
445 zaxpy_(&nstate, &dmv, &vec[j][0], &one, &Xvec[j][0], &one);
448 else if (org_sigma1 == org_sigma4 && org_sigma2 == org_sigma3) {
450 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3, org_sigma4,
451 tmp_V, X, nstate, Xvec, vec);
458 isA_up = X->
Def.
Tpow[org_isite1 - 1];
459 isB_up = X->
Def.
Tpow[org_isite3 - 1];
460 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
461 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 462 firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off, tmp_V) 463 for (j = 1; j <= i_max; j++) {
465 tmp_V, nstate, Xvec, vec);
468 else if (org_isite1 == org_isite3 && org_sigma1 == org_sigma4 && org_sigma3 == org_sigma2) {
469 #pragma omp parallel for default(none) private(j, dmv) \ 470 firstprivate(i_max,X,isA_up,org_sigma1, tmp_V) shared(vec, list_1,Xvec,nstate,one) 471 for (j = 1; j <= i_max; j++) {
472 dmv = tmp_V * (std::complex<double>)
X_Spin_CisAis(j, isA_up, org_sigma1);
473 zaxpy_(&nstate, &dmv, &vec[j][0], &one, &Xvec[j][0], &one);
476 else if (org_sigma1 == org_sigma4 && org_sigma2 == org_sigma3) {
477 #pragma omp parallel for default(none) private(j, tmp_sgn, dmv) shared(vec,Xvec,nstate,one) \ 478 firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) 479 for (j = 1; j <= i_max; j++) {
482 zaxpy_(&nstate, &dmv, &vec[j][0], &one, &Xvec[tmp_off][0], &one);
506 std::complex<double> **Xvec,
507 std::complex<double> **vec,
508 std::complex<double> **prod
511 long int org_isite1, org_isite2, org_isite3, org_isite4;
512 long int org_sigma1, org_sigma2, org_sigma3, org_sigma4;
513 long int tmp_off = 0;
514 long int tmp_off_2 = 0;
515 long int list1_off = 0;
517 std::complex<double> tmp_V;
520 long int tmp_org = 0;
525 zclear(i_max*nstate, &Xvec[1][0]);
527 if (
Rearray_Interactions(i, &org_isite1, &org_isite2, &org_isite3, &org_isite4, &org_sigma1, &org_sigma2, &org_sigma3, &org_sigma4, &tmp_V, X) != 0) {
533 for (j = 0; j < 2; j++) {
545 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
547 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3,
548 tmp_V, X, nstate, Xvec, vec);
550 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
552 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3, org_sigma4,
553 tmp_V, X, nstate, Xvec, vec);
559 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
561 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3, tmp_V, X, nstate, Xvec, vec);
563 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
565 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3, org_sigma4,
566 tmp_V, X, nstate, Xvec, vec);
572 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
573 #pragma omp parallel for default(none) private(j, num1) shared(vec,list_1,Xvec,nstate,one) \ 574 firstprivate(i_max,X,org_isite1, org_sigma1,org_isite3, org_sigma3, tmp_V) 575 for (j = 1; j <= i_max; j++) {
580 zaxpy_(&nstate, &tmp_V, &vec[j][0], &one, &Xvec[j][0], &one);
585 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
586 #pragma omp parallel for default(none) private(j,num1) \ 587 firstprivate(i_max,X,org_isite1,org_isite3,org_sigma1,org_sigma2,org_sigma3,org_sigma4,tmp_off,tmp_off_2,list1_off,myrank,tmp_V) \ 588 shared(vec,list_1,Xvec,nstate,one) 589 for (j = 1; j <= i_max; j++) {
596 zaxpy_(&nstate, &tmp_V, &vec[j][0], &one, &Xvec[list1_off][0], &one);
619 std::complex<double> **Xvec,
620 std::complex<double> **vec,
621 std::complex<double> **prod
624 long int org_isite1, org_isite2, org_isite3, org_isite4;
625 long int org_sigma1, org_sigma2, org_sigma3, org_sigma4;
626 long int isA_up, isB_up;
627 long int tmp_off = 0;
628 std::complex<double> tmp_V;
633 zclear(i_max*nstate, &Xvec[1][0]);
635 if (
Rearray_Interactions(i, &org_isite1, &org_isite2, &org_isite3, &org_isite4, &org_sigma1, &org_sigma2, &org_sigma3, &org_sigma4, &tmp_V, X) != 0) {
643 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
645 org_isite1 - 1, org_sigma1, (org_isite3 - 1), org_sigma3, tmp_V, X, nstate, Xvec, vec);
648 else if (org_isite1 == org_isite3 && org_sigma1 == org_sigma4 && org_sigma2 == org_sigma3) {
650 org_isite1 - 1, org_sigma1, tmp_V, X, nstate, Xvec, vec);
652 else if (org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4) {
654 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3, org_sigma4,
655 tmp_V, X, nstate, Xvec, vec);
657 else if (org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4) {
659 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3,
660 tmp_V, X, nstate, Xvec, vec);
662 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
664 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3, org_sigma4,
665 tmp_V, X, nstate, Xvec, vec);
669 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
671 org_isite1 - 1, org_sigma1, (org_isite3 - 1), org_sigma3, tmp_V, X, nstate, Xvec, vec);
674 else if (org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4) {
676 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3, org_sigma4,
677 tmp_V, X, nstate, Xvec, vec);
679 else if (org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4) {
681 org_isite1 - 1, org_sigma2, org_isite3 - 1, org_sigma3,
682 tmp_V, X, nstate, Xvec, vec);
684 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
686 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3, org_sigma4,
687 tmp_V, X, nstate, Xvec, vec);
691 if (org_isite1 == org_isite2 && org_isite3 == org_isite4) {
692 isA_up = X->
Def.
Tpow[org_isite2 - 1];
693 isB_up = X->
Def.
Tpow[org_isite4 - 1];
694 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
695 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 696 firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) 697 for (j = 1; j <= i_max; j++) {
699 tmp_V, nstate, Xvec, vec);
702 else if (org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4) {
703 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 704 firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) 705 for (j = 1; j <= i_max; j++) {
707 tmp_V, nstate, Xvec, vec, &tmp_off);
710 else if (org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4) {
711 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 712 firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) 713 for (j = 1; j <= i_max; j++) {
715 tmp_V, nstate, Xvec, vec, &tmp_off);
718 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
719 #pragma omp parallel for default(none) private(j) shared(vec,Xvec,nstate) \ 720 firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) 721 for (j = 1; j <= i_max; j++) {
723 tmp_V, nstate, Xvec, vec, &tmp_off);
745 std::complex<double> **Xvec,
746 std::complex<double> **vec,
747 std::complex<double> **prod
750 long int org_isite1, org_isite2, org_isite3, org_isite4;
751 long int org_sigma1, org_sigma2, org_sigma3, org_sigma4;
752 long int tmp_off = 0;
753 long int tmp_off_2 = 0;
755 std::complex<double> tmp_V;
761 zclear(i_max*nstate, &Xvec[1][0]);
763 if (
Rearray_Interactions(i, &org_isite1, &org_isite2, &org_isite3, &org_isite4, &org_sigma1, &org_sigma2, &org_sigma3, &org_sigma4, &tmp_V, X) != 0) {
770 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
772 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3, tmp_V, X, nstate, Xvec, vec);
774 else if (org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4) {
776 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3, org_sigma4,
777 tmp_V, X, nstate, Xvec, vec);
779 else if (org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4) {
781 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3,
782 tmp_V, X, nstate, Xvec, vec);
784 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
786 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3, org_sigma4,
787 tmp_V, X, nstate, Xvec, vec);
791 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
793 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3, tmp_V, X, nstate, Xvec, vec);
795 else if (org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4) {
797 org_isite1 - 1, org_sigma1, org_isite3 - 1, org_sigma3, org_sigma4,
798 tmp_V, X, nstate, Xvec, vec);
800 else if (org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4) {
802 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3,
803 tmp_V, X, nstate, Xvec, vec);
805 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
807 org_isite1 - 1, org_sigma1, org_sigma2, org_isite3 - 1, org_sigma3, org_sigma4,
808 tmp_V, X, nstate, Xvec, vec);
812 if (org_sigma1 == org_sigma2 && org_sigma3 == org_sigma4) {
813 #pragma omp parallel for default(none) private(j, num1) shared(vec,Xvec,nstate,one) \ 814 firstprivate(i_max,X,org_isite1, org_sigma1,org_isite3, org_sigma3, tmp_V) 815 for (j = 1; j <= i_max; j++) {
820 zaxpy_(&nstate, &tmp_V, &vec[j][0], &one, &Xvec[j][0], &one);
825 else if (org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4) {
826 #pragma omp parallel for default(none) private(j, num1) shared(vec,Xvec,nstate,one) \ 827 firstprivate(i_max,X, org_isite1, org_isite3, org_sigma1,org_sigma3,org_sigma4, tmp_off, tmp_V) 828 for (j = 1; j <= i_max; j++) {
834 zaxpy_(&nstate, &tmp_V, &vec[j][0], &one, &Xvec[tmp_off + 1][0], &one);
839 else if (org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4) {
840 #pragma omp parallel for default(none) private(j, num1) shared(vec,Xvec,nstate,one) \ 841 firstprivate(i_max,X, org_isite1, org_isite3, org_sigma1,org_sigma2, org_sigma3, tmp_off, tmp_V) 842 for (j = 1; j <= i_max; j++) {
848 zaxpy_(&nstate, &tmp_V, &vec[j][0], &one, &Xvec[tmp_off + 1][0], &one);
853 else if (org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4) {
854 #pragma omp parallel for default(none) private(j, num1) \ 855 firstprivate(i_max,X,org_isite1,org_isite3,org_sigma1,org_sigma2,org_sigma3,org_sigma4,tmp_off,tmp_off_2,tmp_V) \ 856 shared(vec,Xvec,nstate,one) 857 for (j = 1; j <= i_max; j++) {
864 zaxpy_(&nstate, &tmp_V, &vec[j][0], &one, &Xvec[tmp_off_2 + 1][0], &one);
887 std::complex<double> **Xvec,
888 std::complex<double> **vec,
889 std::complex<double> **prod
913 std::complex<double> **Xvec,
914 std::complex<double> **vec,
915 std::complex<double> **prod
947 std::complex<double> **Xvec,
948 std::complex<double> **vec
951 char sdt[D_FileNameMax];
952 long int irght, ilft, ihfbit, icaca;
953 std::complex<double> **prod;
955 int step = 0, rand_i = 0, istate;
973 TimeKeeperWithStep(X,
"%s_TimeKeeper.dat",
"step %d:expec_cisajscktaltdc finishes: %s",
"a", step);
1011 for (istate = 0; istate < nstate; istate++) {
1015 sprintf(sdt,
"%s_cisajscktalt_set%dstep%d.dat", X->
Def.
CDataFileHead, istate, step);
1028 fprintf(fp,
" %4d %4d %4d %4d %4d %4d %4d %4d %.10lf %.10lf\n",
1033 real(prod[icaca][istate]), imag(prod[icaca][istate]));
1041 TimeKeeperWithRandAndStep(X,
"%s_TimeKeeper.dat",
"set %d step %d:expec_cisajscktaltdc finishes: %s",
"a", rand_i, step);
1044 TimeKeeperWithStep(X,
"%s_TimeKeeper.dat",
"step %d:expec_cisajscktaltdc finishes: %s",
"a", step);
1060 free_cd_2d_allocate(prod);
int expec_cisajscktalt_Hubbard(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec, std::complex< double > **prod)
Child function to calculate two-body green's functions for Hubbard model.
struct DefineList Def
Definision of system (Hamiltonian) etc.
int expec_cisajscktalt_SpinGC(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec, std::complex< double > **prod)
Parent function to calculate two-body green's functions for Spin GC model.
void child_CisAjtCkuAku_element(long int j, long int isite1, long int isite2, long int isite3, long int Asum, long int Adiff, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, struct BindStruct *X, long int *tmp_off)
Compute term of canonical Hubbard system.
int GetSplitBitByModel(const int Nsite, const int iCalcModel, long int *irght, long int *ilft, long int *ihfbit)
function of splitting original bit into right and left spaces.
int BitCheckGeneral(const long int org_bit, const int org_isite, const int target_ispin, const long int *SiteToBit, const long int *Tpow)
bit check function for general spin
void GC_child_CisAisCisAis_spin_element(long int j, long int isA_up, long int isB_up, long int org_sigma2, long int org_sigma4, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of grandcanonical spsin system.
long int is2_spin
Mask used in the bit oeration.
int expec_cisajscktaltdc(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec)
Parent function to calculate two-body green's functions.
int X_Spin_CisAis(long int j, long int is1_spin, long int sigma1)
Compute the spin state with bit mask is1_spin.
void GC_child_CisAisCitAiu_spin_element(long int j, long int org_sigma2, long int org_sigma4, long int isA_up, long int isB_up, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, long int *tmp_off)
Compute term of grandcanonical spsin system.
long int * OrgTpow
[2 * DefineList::NsiteMPI] malloc in setmem_def().
int iFlgSzConserved
Flag whether Sz is conserved.
void X_child_CisAisCjtAku_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_isite4, int org_ispin4, std::complex< double > tmp_V, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of canonical Hubbard system.
void X_GC_child_CisAisCjuAjv_spin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
CisAisCjuAjv term in Spin model + GC When only site2 is in the inter process region.
int X_child_exchange_spin_element(long int j, struct BindStruct *X, long int isA_up, long int isB_up, long int sigmaA, long int sigmaB, long int *tmp_off)
Compute index of final wavefunction associated to spin-exchange term.
int expec_cisajscktalt_SpinGCGeneral(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec, std::complex< double > **prod)
Child function to calculate two-body green's functions for General Spin GC model. ...
int Nsite
Number of sites in the INTRA process region.
void zaxpy_long(long int n, std::complex< double > a, std::complex< double > *x, std::complex< double > *y)
Wrapper of zaxpy.
int expec_cisajscktalt_SpinGeneral(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec, std::complex< double > **prod)
Child function to calculate two-body green's functions for General Spin model.
void X_GC_child_CisAisCjuAju_spin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the inter process region...
std::complex< double > I(0.0, 1.0)
int TimeKeeperWithStep(struct BindStruct *X, const char *cFileName, const char *cTimeKeeper_Message, const char *cWriteType, const int istep)
Functions for writing a time log.
int X_SpinGC_CisAis(long int j, long int is1_spin, long int sigma1)
Compute the grandcanonical spin state with bit mask is1_spin.
struct LargeList Large
Variables for Matrix-Vector product.
void X_GC_child_CisAitCjuAju_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the grandcanonical general spin system when one of these site is in the inter proces...
int ** CisAjtCkuAlvDC
[DefineList::NCisAjtCkuAlvDC][4] Indices of two-body correlation function. malloc in setmem_def()...
void X_GC_child_CisAitCiuAiv_spin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Exchange and Pairlifting term in Spin model + GC When only site2 is in the inter process region...
void X_GC_child_CisAitCjuAju_spin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the inter process region...
int ConvertToList1GeneralSpin(const long int org_ibit, const long int ihlfbit, long int *_ilist1Comp)
function of converting component to list_1
void X_GC_child_CisAisCjuAju_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the grandcanonical general spin system when one of these site is in the inter proces...
void X_child_CisAjtCkuAlv_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite2, int org_ispin2, int org_isite3, int org_ispin3, int org_isite4, int org_ispin4, std::complex< double > tmp_V, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of canonical Hubbard system.
int mode
multiply or expectation value.
void GC_child_CisAisCjtAku_element(long int j, long int isite1, long int isite3, long int isite4, long int Bsum, long int Bdiff, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, long int *tmp_off)
Compute term of grandcanonical Hubbard system.
long int is4_spin
Mask used in the bit oeration.
void X_GC_child_CisAjtCkuAlv_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite2, int org_ispin2, int org_isite3, int org_ispin3, int org_isite4, int org_ispin4, std::complex< double > tmp_V, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of grandcanonical Hubbard system.
void X_child_general_int_spin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
int expec_cisajscktalt_SpinGCHalf(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec, std::complex< double > **prod)
Child function to calculate two-body green's functions for 1/2 Spin GC model.
void X_child_CisAjtCkuAku_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite2, int org_ispin2, int org_isite3, int org_ispin3, std::complex< double > tmp_V, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of canonical Hubbard system.
long int A_spin
Mask used in the bit oeration.
long int B_spin
Mask used in the bit oeration.
int TimeKeeperWithRandAndStep(struct BindStruct *X, const char *cFileName, const char *cTimeKeeper_Message, const char *cWriteType, const int irand, const int istep)
Functions for writing a time log.
int GetOffCompGeneralSpin(const long int org_ibit, const int org_isite, const int org_ispin, const int off_ispin, long int *_ioffComp, const long int *SiteToBit, const long int *Tpow)
function of getting off-diagonal component for general spin
void X_GC_child_CisAjtCkuAku_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite2, int org_ispin2, int org_isite3, int org_ispin3, std::complex< double > tmp_V, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of grandcanonical Hubbard system.
void child_CisAisCjtAku_element(long int j, long int isite1, long int isite3, long int isite4, long int Bsum, long int Bdiff, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, struct BindStruct *X, long int *tmp_off)
Compute term of canonical Hubbard system.
void zclear(long int n, std::complex< double > *x)
clear std::complex<double> array.
void X_GC_child_CisAitCiuAiv_spin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
term in Spin model + GC. When both site1 and site2 are in the inter process region.
int expec_cisajscktalt_SpinHalf(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec, std::complex< double > **prod)
Child function to calculate two-body green's functions for 1/2 Spin model.
void X_GC_child_CisAisCjuAjv_spin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the inter process region...
void X_GC_child_CisAitCjuAju_spin_MPIsingle(int org_isite1, int org_ispin2, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
CisAisCjuAjv term in Spin model + GC When only site2 is in the inter process region.
int expec_cisajscktalt_HubbardGC(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec, std::complex< double > **prod)
Child function to calculate two-body green's functions for Hubbard GC model.
void X_GC_child_CisAis_spin_MPIdouble(int org_isite1, int org_ispin1, std::complex< double > tmp_trans, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Hopping term in Spin + GC When both site1 and site2 are in the inter process region.
long int i_max
Length of eigenvector.
int expec_cisajscktalt_Spin(struct BindStruct *X, int nstate, std::complex< double > **Xvec, std::complex< double > **vec, std::complex< double > **prod)
Parent function to calculate two-body green's functions for Spin model.
void X_GC_child_CisAitCjuAju_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
term in Spin model. When both site1 and site3 are in the inter process region.
int myrank
Process ID, defined in InitializeMPI()
void GC_child_CisAjtCkuAlv_element(long int j, long int isite1, long int isite2, long int isite3, long int isite4, long int Asum, long int Adiff, long int Bsum, long int Bdiff, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, long int *tmp_off_2)
Compute term of grandcanonical Hubbard system.
void X_child_CisAisCjuAju_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the canonical general spin system when both sites are in the inter process region...
void X_GC_child_CisAisCjuAju_spin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the inter process region...
void X_GC_child_CisAitCjuAjv_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the grandcanonical general spin system when both site is in the inter process region...
void X_child_CisAisCjuAju_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the canonical general spin system when one of these sites is in the inter process re...
int GetLocal2Sz(const int isite, const long int org_bit, const long int *SiteToBit, const long int *Tpow)
get 2sz at a site for general spin
int iFlgGeneralSpin
Flag for the general (Sz/=1/2) spin.
void MultiVecProdMPI(long int ndim, int nstate, std::complex< double > **v1, std::complex< double > **v2, std::complex< double > *prod)
Compute conjugate scaler product of process-distributed vector .
void child_CisAjtCkuAlv_element(long int j, long int isite1, long int isite2, long int isite3, long int isite4, long int Asum, long int Adiff, long int Bsum, long int Bdiff, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, struct BindStruct *X, long int *tmp_off_2)
Compute term of canonical Hubbard system.
long int * SiteToBit
[DefineList::NsiteMPI] Similar to DefineList::Tpow. For general spin.
int istep
Index of TPQ step ???
void X_GC_child_CisAitCjuAjv_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the grandcanonical general spin system when one of these site is in the inter proces...
long int * Tpow
[2 * DefineList::NsiteMPI] malloc in setmem_def().
void X_GC_child_CisAisCjuAjv_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the grandcanonical general spin system when one of these site is in the inter proces...
void child_CisAisCisAis_element(long int j, long int isite1, long int isite3, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of canonical Hubbard system.
int Rearray_Interactions(int i, long int *org_isite1, long int *org_isite2, long int *org_isite3, long int *org_isite4, long int *org_sigma1, long int *org_sigma2, long int *org_sigma3, long int *org_sigma4, std::complex< double > *tmp_V, struct BindStruct *X)
Rearray interactions.
int child_general_int_GetInfo(struct BindStruct *X, long int isite1, long int isite2, long int isite3, long int isite4, long int sigma1, long int sigma2, long int sigma3, long int sigma4, std::complex< double > tmp_V)
Compute mask for bit operation of general interaction term.
void X_GC_child_CisAisCjtAku_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_isite4, int org_ispin4, std::complex< double > tmp_V, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of grandcanonical Hubbard system.
void child_CisAisCisAis_spin_element(long int j, long int isA_up, long int isB_up, long int org_sigma2, long int org_sigma4, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of canonical spsin system.
void X_child_CisAitCjuAjv_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the canonical general spin system when both sites are in the inter process region...
long int is3_spin
Mask used in the bit oeration.
int iCalcModel
Switch for model. 0:Hubbard, 1:Spin, 2:Kondo, 3:HubbardGC, 4:SpinGC, 5:KondoGC, 6:HubbardNConserved.
long int is1_spin
Mask used in the bit oeration.
void X_child_CisAisCjtAjt_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, std::complex< double > tmp_V, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of canonical Hubbard system.
int CheckPE(int org_isite, struct BindStruct *X)
Check whether this site is in the inter process region or not.
void X_child_CisAitCjuAjv_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the canonical general spin system when one of these sites is in the inter process re...
long int isA_spin
Mask used in the bit oeration.
void GC_child_CisAjtCkuAku_element(long int j, long int isite1, long int isite2, long int isite3, long int Asum, long int Adiff, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, long int *tmp_off)
Compute term of grandcanonical Hubbard system.
void X_child_general_int_spin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Exchange term in Spin model When both site1 and site2 are in the inter process region.
long int isB_spin
Mask used in the bit oeration.
void GC_child_CisAitCiuAiu_spin_element(long int j, long int org_sigma2, long int org_sigma4, long int isA_up, long int isB_up, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, long int *tmp_off)
Compute term of grandcanonical spsin system.
void X_GC_child_CisAisCjuAjv_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_ispin4, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
term in Spin model. When both site1 and site3 are in the inter process region.
struct CheckList Check
Size of the Hilbert space.
char * CDataFileHead
Read from Calcmod in readdef.h. Header of output file such as Green's function.
long int sdim
Dimension for Ogata-Lin ???
int NCisAjtCkuAlvDC
Number of indices of two-body correlation function.
void GC_child_CisAisCisAis_element(long int j, long int isite1, long int isite3, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of grandcanonical Hubbard system.
long int idim_max
The dimension of the Hilbert space of this process.
void GC_child_CisAitCiuAiv_spin_element(long int j, long int org_sigma2, long int org_sigma4, long int isA_up, long int isB_up, std::complex< double > tmp_V, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, long int *tmp_off_2)
Compute term of grandcanonical spsin system.
void X_GC_child_CisAisCjuAju_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, std::complex< double > tmp_J, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term in the grandcanonical general spin system when both site is in the inter process region...
int iCalcType
Switch for calculation type. 0:Lanczos, 1:TPQCalc, 2:FullDiag.
void X_GC_child_CisAisCjtAjt_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, std::complex< double > tmp_V, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Compute term of grandcanonical Hubbard system.
int childfopenMPI(const char *_cPathChild, const char *_cmode, FILE **_fp)
Only the root process open file in output/ directory.