138 #include "mltplyCommon.h" 139 #include "mltplyHubbard.h" 140 #include "mltplyMPIHubbard.h" 141 #include "CalcTime.h" 142 #include "mltplyHubbardCore.h" 143 #include "mltplyMPIHubbardCore.h" 152 double complex *tmp_v0,
153 double complex *tmp_v1
156 long unsigned int isite1, isite2, sigma1, sigma2;
157 long unsigned int isite3, isite4, sigma3, sigma4;
158 long unsigned int ibitsite1, ibitsite2, ibitsite3, ibitsite4;
160 double complex dam_pr;
161 double complex tmp_trans;
163 double complex tmp_V;
174 for (i = 0; i <
X->Def.EDNTransfer; i+=2) {
175 if (
X->Def.EDGeneralTransfer[i][0] + 1 >
X->Def.Nsite &&
176 X->Def.EDGeneralTransfer[i][2] + 1 >
X->Def.Nsite) {
181 else if (
X->Def.EDGeneralTransfer[i][2] + 1 >
X->Def.Nsite) {
186 else if (
X->Def.EDGeneralTransfer[i][0] + 1 >
X->Def.Nsite) {
193 for (ihermite = 0; ihermite<2; ihermite++) {
195 isite1 =
X->Def.EDGeneralTransfer[idx][0] + 1;
196 isite2 =
X->Def.EDGeneralTransfer[idx][2] + 1;
197 sigma1 =
X->Def.EDGeneralTransfer[idx][1];
198 sigma2 =
X->Def.EDGeneralTransfer[idx][3];
202 tmp_trans = -
X->Def.EDParaGeneralTransfer[idx];
203 X->Large.tmp_trans = tmp_trans;
205 X->Large.prdct += dam_pr;
215 for (i = 0; i <
X->Def.NInterAll_OffDiagonal; i+=2) {
217 isite1 =
X->Def.InterAll_OffDiagonal[i][0] + 1;
218 isite2 =
X->Def.InterAll_OffDiagonal[i][2] + 1;
219 isite3 =
X->Def.InterAll_OffDiagonal[i][4] + 1;
220 isite4 =
X->Def.InterAll_OffDiagonal[i][6] + 1;
221 sigma1 =
X->Def.InterAll_OffDiagonal[i][1];
222 sigma2 =
X->Def.InterAll_OffDiagonal[i][3];
223 sigma3 =
X->Def.InterAll_OffDiagonal[i][5];
224 sigma4 =
X->Def.InterAll_OffDiagonal[i][7];
225 tmp_V =
X->Def.ParaInterAll_OffDiagonal[i];
231 ibitsite1 =
X->Def.OrgTpow[2*isite1-2+sigma1] ;
232 ibitsite2 =
X->Def.OrgTpow[2 * isite2 - 2 + sigma2];
233 ibitsite3 =
X->Def.OrgTpow[2 * isite3 - 2 + sigma3];
234 ibitsite4 =
X->Def.OrgTpow[2 * isite4 - 2 + sigma4];
235 if (ibitsite1 == ibitsite2 && ibitsite3 == ibitsite4) {
238 tmp_V,
X, tmp_v0, tmp_v1);
240 else if (ibitsite1 == ibitsite2 && ibitsite3 != ibitsite4) {
242 isite3 - 1, sigma3, isite4 - 1, sigma4,
243 tmp_V,
X, tmp_v0, tmp_v1);
245 else if (ibitsite1 != ibitsite2 && ibitsite3 == ibitsite4) {
247 isite3 - 1, sigma3, tmp_V,
X, tmp_v0, tmp_v1);
249 else if (ibitsite1 != ibitsite2 && ibitsite3 != ibitsite4) {
251 isite3 - 1, sigma3, isite4 - 1, sigma4, tmp_V,
X, tmp_v0, tmp_v1);
257 for (ihermite = 0; ihermite < 2; ihermite++) {
259 isite1 =
X->Def.InterAll_OffDiagonal[idx][0] + 1;
260 isite2 =
X->Def.InterAll_OffDiagonal[idx][2] + 1;
261 isite3 =
X->Def.InterAll_OffDiagonal[idx][4] + 1;
262 isite4 =
X->Def.InterAll_OffDiagonal[idx][6] + 1;
263 sigma1 =
X->Def.InterAll_OffDiagonal[idx][1];
264 sigma2 =
X->Def.InterAll_OffDiagonal[idx][3];
265 sigma3 =
X->Def.InterAll_OffDiagonal[idx][5];
266 sigma4 =
X->Def.InterAll_OffDiagonal[idx][7];
267 tmp_V =
X->Def.ParaInterAll_OffDiagonal[idx];
270 sigma1, sigma2, sigma3, sigma4, tmp_V);
276 X->Large.prdct += dam_pr;
283 for (i = 0; i <
X->Def.NPairHopping; i +=2) {
288 if (
X->Def.PairHopping[i][0] + 1 >
X->Def.Nsite
289 ||
X->Def.PairHopping[i][1] + 1 >
X->Def.Nsite)
293 X->Def.PairHopping[i][0], sigma1,
X->Def.PairHopping[i][1], sigma1,
294 X->Def.PairHopping[i][0], sigma2,
X->Def.PairHopping[i][1], sigma2,
295 X->Def.ParaPairHopping[i],
X, tmp_v0, tmp_v1);
300 for (ihermite = 0; ihermite<2; ihermite++) {
307 X->Large.prdct += dam_pr;
314 for (i = 0; i <
X->Def.NExchangeCoupling; i ++) {
318 if (
X->Def.ExchangeCoupling[i][0] + 1 >
X->Def.Nsite ||
319 X->Def.ExchangeCoupling[i][1] + 1 >
X->Def.Nsite)
323 X->Def.ExchangeCoupling[i][0], sigma1,
X->Def.ExchangeCoupling[i][1], sigma1,
324 X->Def.ExchangeCoupling[i][1], sigma2,
X->Def.ExchangeCoupling[i][0], sigma2,
325 X->Def.ParaExchangeCoupling[i],
X, tmp_v0, tmp_v1);
334 X->Large.prdct += dam_pr;
349 double complex *tmp_v0,
350 double complex *tmp_v1
353 long unsigned int isite1, isite2, sigma1, sigma2;
354 long unsigned int isite3, isite4, sigma3, sigma4;
355 long unsigned int ibitsite1, ibitsite2, ibitsite3, ibitsite4;
357 double complex dam_pr;
358 double complex tmp_trans;
360 double complex tmp_V;
371 for (i = 0; i <
X->Def.EDNTransfer; i += 2) {
372 if (
X->Def.EDGeneralTransfer[i][0] + 1 >
X->Def.Nsite &&
373 X->Def.EDGeneralTransfer[i][2] + 1 >
X->Def.Nsite) {
378 else if (
X->Def.EDGeneralTransfer[i][2] + 1 >
X->Def.Nsite){
383 else if (
X->Def.EDGeneralTransfer[i][0] + 1 >
X->Def.Nsite) {
390 for (ihermite = 0; ihermite<2; ihermite++) {
392 isite1 =
X->Def.EDGeneralTransfer[idx][0] + 1;
393 isite2 =
X->Def.EDGeneralTransfer[idx][2] + 1;
394 sigma1 =
X->Def.EDGeneralTransfer[idx][1];
395 sigma2 =
X->Def.EDGeneralTransfer[idx][3];
399 tmp_trans = -
X->Def.EDParaGeneralTransfer[idx];
401 X->Large.prdct += dam_pr;
411 for (i = 0; i <
X->Def.NInterAll_OffDiagonal; i+=2) {
412 isite1 =
X->Def.InterAll_OffDiagonal[i][0] + 1;
413 isite2 =
X->Def.InterAll_OffDiagonal[i][2] + 1;
414 isite3 =
X->Def.InterAll_OffDiagonal[i][4] + 1;
415 isite4 =
X->Def.InterAll_OffDiagonal[i][6] + 1;
416 sigma1 =
X->Def.InterAll_OffDiagonal[i][1];
417 sigma2 =
X->Def.InterAll_OffDiagonal[i][3];
418 sigma3 =
X->Def.InterAll_OffDiagonal[i][5];
419 sigma4 =
X->Def.InterAll_OffDiagonal[i][7];
420 tmp_V =
X->Def.ParaInterAll_OffDiagonal[i];
426 ibitsite1 =
X->Def.OrgTpow[2 * isite1 - 2 + sigma1];
427 ibitsite2 =
X->Def.OrgTpow[2 * isite2 - 2 + sigma2];
428 ibitsite3 =
X->Def.OrgTpow[2 * isite3 - 2 + sigma3];
429 ibitsite4 =
X->Def.OrgTpow[2 * isite4 - 2 + sigma4];
430 if (ibitsite1 == ibitsite2 && ibitsite3 == ibitsite4)
432 isite1 - 1, sigma1, isite3 - 1, sigma3, tmp_V,
X, tmp_v0, tmp_v1);
433 else if (ibitsite1 == ibitsite2 && ibitsite3 != ibitsite4)
435 isite1 - 1, sigma1, isite3 - 1, sigma3, isite4 - 1, sigma4, tmp_V,
X, tmp_v0, tmp_v1);
436 else if (ibitsite1 != ibitsite2 && ibitsite3 == ibitsite4)
438 isite1 - 1, sigma1, isite2 - 1, sigma2, isite3 - 1, sigma3, tmp_V,
X, tmp_v0, tmp_v1);
439 else if (ibitsite1 != ibitsite2 && ibitsite3 != ibitsite4)
441 isite1 - 1, sigma1, isite2 - 1, sigma2, isite3 - 1, sigma3, isite4 - 1, sigma4, tmp_V,
X, tmp_v0, tmp_v1);
447 for(ihermite=0; ihermite<2; ihermite++){
449 isite1 =
X->Def.InterAll_OffDiagonal[idx][0] + 1;
450 isite2 =
X->Def.InterAll_OffDiagonal[idx][2] + 1;
451 isite3 =
X->Def.InterAll_OffDiagonal[idx][4] + 1;
452 isite4 =
X->Def.InterAll_OffDiagonal[idx][6] + 1;
453 sigma1 =
X->Def.InterAll_OffDiagonal[idx][1];
454 sigma2 =
X->Def.InterAll_OffDiagonal[idx][3];
455 sigma3 =
X->Def.InterAll_OffDiagonal[idx][5];
456 sigma4 =
X->Def.InterAll_OffDiagonal[idx][7];
457 tmp_V =
X->Def.ParaInterAll_OffDiagonal[idx];
460 sigma1, sigma2, sigma3, sigma4, tmp_V);
465 X->Large.prdct += dam_pr;
472 for (i = 0; i <
X->Def.NPairHopping; i +=2) {
476 if (
X->Def.PairHopping[i][0] + 1 >
X->Def.Nsite
477 ||
X->Def.PairHopping[i][1] + 1 >
X->Def.Nsite)
481 X->Def.PairHopping[i][0], sigma1,
X->Def.PairHopping[i][1], sigma1,
482 X->Def.PairHopping[i][0], sigma2,
X->Def.PairHopping[i][1], sigma2,
483 X->Def.ParaPairHopping[i],
X, tmp_v0, tmp_v1);
488 for (ihermite = 0; ihermite<2; ihermite++) {
495 X->Large.prdct += dam_pr;
502 for (i = 0; i <
X->Def.NExchangeCoupling; i++) {
506 if (
X->Def.ExchangeCoupling[i][0] + 1 >
X->Def.Nsite
507 ||
X->Def.ExchangeCoupling[i][1] + 1 >
X->Def.Nsite)
511 X->Def.ExchangeCoupling[i][0], sigma1,
X->Def.ExchangeCoupling[i][1], sigma1,
512 X->Def.ExchangeCoupling[i][1], sigma2,
X->Def.ExchangeCoupling[i][0], sigma2,
513 X->Def.ParaExchangeCoupling[i],
X, tmp_v0, tmp_v1);
522 X->Large.prdct += dam_pr;
541 double complex *tmp_v0,
542 double complex *tmp_v1,
546 long unsigned int i_max =
X->Large.i_max;
547 long unsigned int off = 0;
548 double complex dam_pr = 0.0;
550 #pragma omp parallel for default(none) reduction(+:dam_pr) firstprivate(i_max, X,off) private(j) shared(tmp_v0, tmp_v1) 551 for (j = 1; j <= i_max; j++)
562 double complex *tmp_v0,
563 double complex *tmp_v1,
567 long unsigned int i_max =
X->Large.i_max;
568 long unsigned int off = 0;
569 double complex dam_pr = 0;
571 #pragma omp parallel for default(none) reduction(+:dam_pr) firstprivate(i_max, X,off) private(j) shared(tmp_v0, tmp_v1) 572 for (j = 1; j <= i_max; j++)
583 double complex *tmp_v0,
584 double complex *tmp_v1,
588 long unsigned int j, isite1, isite2, Asum, Adiff;
589 long unsigned int i_max =
X->Large.i_max;
590 double complex dam_pr = 0;
592 isite1 =
X->Large.is1_spin;
593 isite2 =
X->Large.is2_spin;
594 Asum =
X->Large.isA_spin;
595 Adiff =
X->Large.A_spin;
597 #pragma omp parallel for default(none) reduction(+:dam_pr) \ 598 firstprivate(i_max,X,Asum,Adiff,isite1,isite2,trans) private(j) shared(tmp_v0, tmp_v1) 599 for (j = 1; j <= i_max; j++)
600 dam_pr +=
CisAjt(j, tmp_v0, tmp_v1,
X, isite1, isite2, Asum, Adiff, trans) * trans;
610 double complex *tmp_v0,
611 double complex *tmp_v1,
615 long unsigned int j, isite1, isite2, Asum, Adiff;
616 long unsigned int tmp_off;
617 long unsigned int i_max =
X->Large.i_max;
618 double complex dam_pr = 0;
620 isite1 =
X->Large.is1_spin;
621 isite2 =
X->Large.is2_spin;
622 Asum =
X->Large.isA_spin;
623 Adiff =
X->Large.A_spin;
625 if (isite1 == isite2) {
626 #pragma omp parallel for default(none) reduction(+:dam_pr) \ 627 private(j) firstprivate(i_max,X,isite1, trans) shared(tmp_v0, tmp_v1) 628 for (j = 1; j <= i_max; j++)
629 dam_pr +=
GC_CisAis(j, tmp_v0, tmp_v1,
X, isite1, trans) * trans;
632 #pragma omp parallel for default(none) reduction(+:dam_pr) \ 633 firstprivate(i_max,X,Asum,Adiff,isite1,isite2,trans) private(j,tmp_off) shared(tmp_v0, tmp_v1) 634 for (j = 1; j <= i_max; j++)
635 dam_pr +=
GC_CisAjt(j, tmp_v0, tmp_v1,
X, isite1, isite2, Asum, Adiff, trans, &tmp_off) * trans;
646 double complex *tmp_v0,
647 double complex *tmp_v1,
650 double complex dam_pr, tmp_V;
651 long unsigned int j, i_max;
652 long unsigned int isite1, isite2, isite3, isite4;
653 long unsigned int Asum, Bsum, Adiff, Bdiff;
654 long unsigned int tmp_off = 0;
655 long unsigned int tmp_off_2 = 0;
658 i_max =
X->Large.i_max;
659 isite1 =
X->Large.is1_spin;
660 isite2 =
X->Large.is2_spin;
661 Asum =
X->Large.isA_spin;
662 Adiff =
X->Large.A_spin;
664 isite3 =
X->Large.is3_spin;
665 isite4 =
X->Large.is4_spin;
666 Bsum =
X->Large.isB_spin;
667 Bdiff =
X->Large.B_spin;
669 tmp_V =
X->Large.tmp_V;
672 #pragma omp parallel default(none) reduction(+:dam_pr) \ 673 private(j, tmp_off, tmp_off_2) \ 674 firstprivate(i_max, X, isite1, isite2, isite3, isite4, Asum, Bsum, Adiff, Bdiff, tmp_V) \ 675 shared(tmp_v0, tmp_v1) 677 if (isite1 == isite2 && isite3 == isite4) {
679 for (j = 1; j <= i_max; j++)
682 else if (isite1 == isite2 && isite3 != isite4) {
684 for (j = 1; j <= i_max; j++)
686 j, isite1, isite3, isite4, Bsum, Bdiff, tmp_V, tmp_v0, tmp_v1,
X, &tmp_off);
688 else if (isite1 != isite2 && isite3 == isite4) {
690 for (j = 1; j <= i_max; j++)
691 dam_pr +=
child_CisAjtCkuAku_element(j, isite1, isite2, isite3, Asum, Adiff, tmp_V, tmp_v0, tmp_v1,
X, &tmp_off);
693 else if (isite1 != isite2 && isite3 != isite4) {
695 for (j = 1; j <= i_max; j++)
697 j, isite1, isite2, isite3, isite4, Asum, Adiff, Bsum, Bdiff, tmp_V, tmp_v0, tmp_v1,
X, &tmp_off_2);
709 double complex *tmp_v0,
710 double complex *tmp_v1,
713 double complex dam_pr, tmp_V;
714 long unsigned int j, i_max;
715 long unsigned int isite1, isite2, isite3, isite4;
716 long unsigned int Asum, Bsum, Adiff, Bdiff;
717 long unsigned int tmp_off = 0;
718 long unsigned int tmp_off_2 = 0;
720 i_max =
X->Large.i_max;
721 isite1 =
X->Large.is1_spin;
722 isite2 =
X->Large.is2_spin;
723 Asum =
X->Large.isA_spin;
724 Adiff =
X->Large.A_spin;
726 isite3 =
X->Large.is3_spin;
727 isite4 =
X->Large.is4_spin;
728 Bsum =
X->Large.isB_spin;
729 Bdiff =
X->Large.B_spin;
731 tmp_V =
X->Large.tmp_V;
734 #pragma omp parallel default(none) reduction(+:dam_pr) private(j) \ 735 firstprivate(i_max, X, isite1, isite2, isite4, isite3, Asum, Bsum, Adiff, Bdiff, tmp_off, tmp_off_2, tmp_V) \ 736 shared(tmp_v0, tmp_v1) 738 if (isite1 == isite2 && isite3 == isite4) {
740 for (j = 1; j <= i_max; j++)
743 else if (isite1 == isite2 && isite3 != isite4) {
745 for (j = 1; j <= i_max; j++)
746 dam_pr +=
GC_child_CisAisCjtAku_element(j, isite1, isite3, isite4, Bsum, Bdiff, tmp_V, tmp_v0, tmp_v1,
X, &tmp_off);
748 else if (isite1 != isite2 && isite3 == isite4) {
750 for (j = 1; j <= i_max; j++)
752 j, isite1, isite2, isite3, Asum, Adiff, tmp_V, tmp_v0, tmp_v1,
X, &tmp_off);
754 else if (isite1 != isite2 && isite3 != isite4) {
756 for (j = 1; j <= i_max; j++)
758 j, isite1, isite2, isite3, isite4, Asum, Adiff, Bsum, Bdiff, tmp_V, tmp_v0, tmp_v1,
X, &tmp_off_2);
770 double complex *tmp_v0,
771 double complex *tmp_v1,
775 long unsigned int i_max =
X->Large.i_max;
776 long unsigned int off = 0;
777 double complex dam_pr = 0.0;
779 #pragma omp parallel for default(none) reduction(+:dam_pr) firstprivate(i_max,X,off) private(j) shared(tmp_v0, tmp_v1) 780 for (j = 1; j <= i_max; j++)
792 double complex *tmp_v0,
793 double complex *tmp_v1,
797 long unsigned int i_max =
X->Large.i_max;
798 long unsigned int off = 0;
799 double complex dam_pr = 0.0;
801 #pragma omp parallel for default(none) \ 802 reduction(+:dam_pr) firstprivate(i_max, X,off) private(j) shared(tmp_v0, tmp_v1) 803 for (j = 1; j <= i_max; j++)
double complex GC_child_exchange(double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X)
Compute Exchange term (grandcanonical) in single process.
void StartTimer(int n)
function for initializing elapse time [start]
int CheckPE(int org_isite, struct BindStruct *X)
Check whether this site is in the inter process region or not.
void StopTimer(int n)
function for calculating elapse time [elapse time=StartTimer-StopTimer]
int child_general_int_GetInfo(int iInterAll, struct BindStruct *X, long unsigned int isite1, long unsigned int isite2, long unsigned int isite3, long unsigned int isite4, long unsigned int sigma1, long unsigned int sigma2, long unsigned int sigma3, long unsigned int sigma4, double complex tmp_V)
Compute mask for bit operation of general interaction term.
double complex X_GC_child_CisAisCjtAku_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_isite4, int org_ispin4, double complex tmp_V, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term of grandcanonical Hubbard system.
double complex child_CisAjtCkuAku_element(long unsigned int j, long unsigned int isite1, long unsigned int isite2, long unsigned int isite3, long unsigned int Asum, long unsigned int Adiff, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute term of canonical Hubbard system.
double complex child_pairhopp_element(long unsigned int j, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute pairhopp term of canonical Hubbard system.
double complex X_child_CisAisCjtAku_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_isite4, int org_ispin4, double complex tmp_V, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term of canonical Hubbard system.
double complex CisAjt(long unsigned int j, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int is1_spin, long unsigned int is2_spin, long unsigned int sum_spin, long unsigned int diff_spin, double complex tmp_V)
term for canonical Hubbard
double complex X_child_CisAisCjtAjt_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, double complex tmp_V, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term of canonical Hubbard system.
double complex GC_child_pairhopp_element(long unsigned int j, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute pairhopp term of grandcanonical Hubbard system.
double complex GC_CisAjt(long unsigned int j, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int is1_spin, long unsigned int is2_spin, long unsigned int sum_spin, long unsigned int diff_spin, double complex tmp_V, long unsigned int *tmp_off)
term for grandcanonical Hubbard
double complex child_exchange_element(long unsigned int j, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute exchange term of canonical-Hubbard.
void GC_child_general_hopp_MPIdouble(unsigned long int itrans, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Hopping term in Hubbard + GC When both site1 and site2 are in the inter process region.
double complex X_GC_child_CisAisCjtAjt_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, double complex tmp_V, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term of grandcanonical Hubbard system.
double complex GC_child_exchange_element(long unsigned int j, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute exchange term of grandcanonical Hubbard system.
double complex child_general_hopp(double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, double complex trans)
Compute hopping (canonical)
void child_general_hopp_MPIdouble(unsigned long int itrans, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Hopping term in Hubbard (Kondo) + Canonical ensemble When both site1 and site2 are in the inter proce...
int child_pairhopp_GetInfo(int iPairHopp, struct BindStruct *X)
Compute mask for bit operation of pairhop term.
double complex 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, double complex tmp_V, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term of canonical Hubbard system.
double complex GC_child_general_int(double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X)
Compute inter-all term (canonical)
double complex X_child_CisAjtCkuAku_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite2, int org_ispin2, int org_isite3, int org_ispin3, double complex tmp_V, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term of canonical Hubbard system.
double complex GC_child_pairhopp(double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X)
Compute pairhopp term (grandcanonical)
double complex GC_child_CisAisCisAis_element(long unsigned int j, long unsigned int isite1, long unsigned int isite3, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute term of grandcanonical Hubbard system.
void GC_child_general_hopp_MPIsingle(unsigned long int itrans, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Hopping term in Hubbard + GC When only site2 is in the inter process region.
double complex child_general_int(double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X)
Compute inter-all term (canonical)
double complex X_GC_child_CisAjtCkuAku_Hubbard_MPI(int org_isite1, int org_ispin1, int org_isite2, int org_ispin2, int org_isite3, int org_ispin3, double complex tmp_V, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term of grandcanonical Hubbard system.
double complex child_pairhopp(double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X)
Compute pairhopp term (canonical)
int child_general_hopp_GetInfo(struct BindStruct *X, unsigned long int isite1, unsigned long int isite2, unsigned long int sigma1, unsigned long int sigma2)
Compute mask for bit operation of hopping term.
double complex child_CisAisCisAis_element(long unsigned int j, long unsigned int isite1, long unsigned int isite3, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute term of canonical Hubbard system.
int mltplyHubbardGC(struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
perform Hamiltonian vector product for (extended) Hubbard type model (Grandcanonical).
double complex 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, double complex tmp_V, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term of grandcanonical Hubbard system.
double complex GC_child_general_hopp(double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, double complex trans)
Commpute hopping term (grandcanonical)
double complex child_exchange(double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X)
Compute Exchange term (canonical) in single process.
void child_general_hopp_MPIsingle(unsigned long int itrans, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Hopping term in Hubbard (Kondo) + Canonical ensemble When only site2 is in the inter process region...
int child_exchange_GetInfo(int iExchange, struct BindStruct *X)
Compute mask for bit operation of exchange term.
double complex GC_child_CisAisCjtAku_element(long unsigned int j, long unsigned int isite1, long unsigned int isite3, long unsigned int isite4, long unsigned int Bsum, long unsigned int Bdiff, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute term of grandcanonical Hubbard system.
double complex GC_child_CisAjtCkuAku_element(long unsigned int j, long unsigned int isite1, long unsigned int isite2, long unsigned int isite3, long unsigned int Asum, long unsigned int Adiff, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute term of grandcanonical Hubbard system.
double complex child_CisAjtCkuAlv_element(long unsigned int j, long unsigned int isite1, long unsigned int isite2, long unsigned int isite3, long unsigned int isite4, long unsigned int Asum, long unsigned int Adiff, long unsigned int Bsum, long unsigned int Bdiff, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off_2)
Compute term of canonical Hubbard system.
double complex GC_CisAis(long unsigned int j, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int is1_spin, double complex tmp_trans)
Operation of (Grandcanonical)
double complex GC_child_CisAjtCkuAlv_element(long unsigned int j, long unsigned int isite1, long unsigned int isite2, long unsigned int isite3, long unsigned int isite4, long unsigned int Asum, long unsigned int Adiff, long unsigned int Bsum, long unsigned int Bdiff, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off_2)
Compute term of grandcanonical Hubbard system.
int mltplyHubbard(struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
perform Hamiltonian vector product for (extended) Hubbard type model.
double complex child_CisAisCjtAku_element(long unsigned int j, long unsigned int isite1, long unsigned int isite3, long unsigned int isite4, long unsigned int Bsum, long unsigned int Bdiff, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute term of canonical Hubbard system.