18 #include "mltplyCommon.h" 21 #include "expec_cisajscktaltdc.h" 22 #include "mltplySpinCore.h" 23 #include "mltplyHubbardCore.h" 24 #include "wrapperMPI.h" 25 #include "mltplyMPISpin.h" 26 #include "mltplyMPISpinCore.h" 27 #include "mltplyMPIHubbardCore.h" 56 long unsigned int *org_isite1,
57 long unsigned int *org_isite2,
58 long unsigned int *org_isite3,
59 long unsigned int *org_isite4,
60 long unsigned int *org_sigma1,
61 long unsigned int *org_sigma2,
62 long unsigned int *org_sigma3,
63 long unsigned int *org_sigma4,
64 double complex *tmp_V,
93 long unsigned int irght,ilft,ihfbit;
99 if(
X->Def.NCisAjtCkuAlvDC <1)
return 0;
100 X->Large.mode=M_CORR;
107 switch (
X->Def.iCalcType){
113 }
else if(
X->Def.St==1){
143 switch(
X->Def.iCalcModel){
176 if(
X->Def.iCalcType==Lanczos){
180 }
else if(
X->Def.St==1){
185 else if(
X->Def.iCalcType==TPQCalc){
188 else if(
X->Def.iCalcType==TimeEvolution){
225 long unsigned int *org_isite1,
226 long unsigned int *org_isite2,
227 long unsigned int *org_isite3,
228 long unsigned int *org_isite4,
229 long unsigned int *org_sigma1,
230 long unsigned int *org_sigma2,
231 long unsigned int *org_sigma3,
232 long unsigned int *org_sigma4,
233 double complex *tmp_V,
237 long unsigned int tmp_org_isite1,tmp_org_isite2,tmp_org_isite3,tmp_org_isite4;
238 long unsigned int tmp_org_sigma1,tmp_org_sigma2,tmp_org_sigma3,tmp_org_sigma4;
240 tmp_org_isite1 =
X->Def.CisAjtCkuAlvDC[i][0]+1;
241 tmp_org_sigma1 =
X->Def.CisAjtCkuAlvDC[i][1];
242 tmp_org_isite2 =
X->Def.CisAjtCkuAlvDC[i][2]+1;
243 tmp_org_sigma2 =
X->Def.CisAjtCkuAlvDC[i][3];
244 tmp_org_isite3 =
X->Def.CisAjtCkuAlvDC[i][4]+1;
245 tmp_org_sigma3 =
X->Def.CisAjtCkuAlvDC[i][5];
246 tmp_org_isite4 =
X->Def.CisAjtCkuAlvDC[i][6]+1;
247 tmp_org_sigma4 =
X->Def.CisAjtCkuAlvDC[i][7];
249 if(tmp_org_isite1==tmp_org_isite2 && tmp_org_isite3==tmp_org_isite4){
250 if(tmp_org_isite1 > tmp_org_isite3){
251 *org_isite1 = tmp_org_isite3;
252 *org_sigma1 = tmp_org_sigma3;
253 *org_isite2 = tmp_org_isite4;
254 *org_sigma2 = tmp_org_sigma4;
255 *org_isite3 = tmp_org_isite1;
256 *org_sigma3 = tmp_org_sigma1;
257 *org_isite4 = tmp_org_isite2;
258 *org_sigma4 = tmp_org_sigma2;
261 *org_isite1 = tmp_org_isite1;
262 *org_sigma1 = tmp_org_sigma1;
263 *org_isite2 = tmp_org_isite2;
264 *org_sigma2 = tmp_org_sigma2;
265 *org_isite3 = tmp_org_isite3;
266 *org_sigma3 = tmp_org_sigma3;
267 *org_isite4 = tmp_org_isite4;
268 *org_sigma4 = tmp_org_sigma4;
273 else if(tmp_org_isite1==tmp_org_isite4 && tmp_org_isite3==tmp_org_isite2){
274 if(tmp_org_isite1 > tmp_org_isite3){
275 *org_isite1 = tmp_org_isite3;
276 *org_sigma1 = tmp_org_sigma3;
277 *org_isite2 = tmp_org_isite2;
278 *org_sigma2 = tmp_org_sigma2;
279 *org_isite3 = tmp_org_isite1;
280 *org_sigma3 = tmp_org_sigma1;
281 *org_isite4 = tmp_org_isite4;
282 *org_sigma4 = tmp_org_sigma4;
285 *org_isite1 = tmp_org_isite1;
286 *org_sigma1 = tmp_org_sigma1;
287 *org_isite2 = tmp_org_isite4;
288 *org_sigma2 = tmp_org_sigma4;
289 *org_isite3 = tmp_org_isite3;
290 *org_sigma3 = tmp_org_sigma3;
291 *org_isite4 = tmp_org_isite2;
292 *org_sigma4 = tmp_org_sigma2;
313 long unsigned int i,j;
314 long unsigned int isite1,isite2,isite3,isite4;
315 long unsigned int org_isite1,org_isite2,org_isite3,org_isite4;
316 long unsigned int org_sigma1,org_sigma2,org_sigma3,org_sigma4;
317 long unsigned int Asum,Bsum,Adiff,Bdiff;
318 long unsigned int tmp_off=0;
319 long unsigned int tmp_off_2=0;
320 double complex tmp_V= 1.0+0.0*I;
322 double complex dam_pr;
325 for(i=0;i<
X->Def.NCisAjtCkuAlvDC;i++){
326 org_isite1 =
X->Def.CisAjtCkuAlvDC[i][0]+1;
327 org_sigma1 =
X->Def.CisAjtCkuAlvDC[i][1];
328 org_isite2 =
X->Def.CisAjtCkuAlvDC[i][2]+1;
329 org_sigma2 =
X->Def.CisAjtCkuAlvDC[i][3];
330 org_isite3 =
X->Def.CisAjtCkuAlvDC[i][4]+1;
331 org_sigma3 =
X->Def.CisAjtCkuAlvDC[i][5];
332 org_isite4 =
X->Def.CisAjtCkuAlvDC[i][6]+1;
333 org_sigma4 =
X->Def.CisAjtCkuAlvDC[i][7];
338 isite1 =
X->Def.OrgTpow[2*org_isite1-2+org_sigma1] ;
339 isite2 =
X->Def.OrgTpow[2*org_isite2-2+org_sigma2] ;
340 isite3 =
X->Def.OrgTpow[2*org_isite3-2+org_sigma3] ;
341 isite4 =
X->Def.OrgTpow[2*org_isite4-2+org_sigma4] ;
342 if(isite1 == isite2 && isite3 == isite4){
345 org_isite3-1, org_sigma3,
348 else if(isite1 == isite2 && isite3 != isite4){
351 org_isite3-1, org_sigma3, org_isite4-1, org_sigma4,
355 else if(isite1 != isite2 && isite3 == isite4){
358 org_isite3-1, org_sigma3,
362 else if(isite1 != isite2 && isite3 != isite4){
364 org_isite3-1, org_sigma3, org_isite4-1, org_sigma4,
371 (i,
X, org_isite1, org_isite2, org_isite3, org_isite4,
372 org_sigma1, org_sigma2, org_sigma3, org_sigma4, tmp_V
375 i_max =
X->Large.i_max;
376 isite1 =
X->Large.is1_spin;
377 isite2 =
X->Large.is2_spin;
378 Asum =
X->Large.isA_spin;
379 Adiff =
X->Large.A_spin;
381 isite3 =
X->Large.is3_spin;
382 isite4 =
X->Large.is4_spin;
383 Bsum =
X->Large.isB_spin;
384 Bdiff =
X->Large.B_spin;
386 if(isite1 == isite2 && isite3 == isite4){
388 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2,tmp_V) shared(vec) 389 for(j=1;j<=i_max;j++){
392 }
else if(isite1 == isite2 && isite3 != isite4){
394 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2,tmp_V) shared(vec) 395 for(j=1;j<=i_max;j++){
396 dam_pr +=
GC_child_CisAisCjtAku_element(j, isite1, isite3, isite4, Bsum, Bdiff, tmp_V,
vec,
vec,
X, &tmp_off);
398 }
else if(isite1 != isite2 && isite3 == isite4){
400 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2,tmp_V) shared(vec) 401 for(j=1;j<=i_max;j++){
402 dam_pr +=
GC_child_CisAjtCkuAku_element(j, isite1, isite2, isite3, Asum, Adiff, tmp_V,
vec,
vec,
X, &tmp_off);
405 }
else if(isite1 != isite2 && isite3 != isite4){
407 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2,tmp_V) shared(vec) 408 for(j=1;j<=i_max;j++){
409 dam_pr +=
GC_child_CisAjtCkuAlv_element(j, isite1, isite2, isite3, isite4, Asum, Adiff, Bsum, Bdiff, tmp_V,
vec,
vec,
X, &tmp_off_2);
414 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf\n",org_isite1-1,org_sigma1, org_isite2-1,org_sigma2, org_isite3-1, org_sigma3, org_isite4-1,org_sigma4, creal(dam_pr), cimag(dam_pr));
431 long unsigned int i,j;
432 long unsigned int isite1,isite2,isite3,isite4;
433 long unsigned int org_isite1,org_isite2,org_isite3,org_isite4;
434 long unsigned int org_sigma1,org_sigma2,org_sigma3,org_sigma4;
435 long unsigned int Asum,Bsum,Adiff,Bdiff;
436 long unsigned int tmp_off=0;
437 long unsigned int tmp_off_2=0;
438 double complex tmp_V;
439 double complex dam_pr;
442 for(i=0;i<
X->Def.NCisAjtCkuAlvDC;i++){
443 org_isite1 =
X->Def.CisAjtCkuAlvDC[i][0]+1;
444 org_sigma1 =
X->Def.CisAjtCkuAlvDC[i][1];
445 org_isite2 =
X->Def.CisAjtCkuAlvDC[i][2]+1;
446 org_sigma2 =
X->Def.CisAjtCkuAlvDC[i][3];
447 org_isite3 =
X->Def.CisAjtCkuAlvDC[i][4]+1;
448 org_sigma3 =
X->Def.CisAjtCkuAlvDC[i][5];
449 org_isite4 =
X->Def.CisAjtCkuAlvDC[i][6]+1;
450 org_sigma4 =
X->Def.CisAjtCkuAlvDC[i][7];
454 if(
X->Def.iFlgSzConserved ==
TRUE){
455 if(org_sigma1+org_sigma3 != org_sigma2+org_sigma4){
457 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",org_isite1-1, org_sigma1, org_isite2-1, org_sigma2, org_isite3-1, org_sigma3, org_isite4-1, org_sigma4, creal(dam_pr), cimag(dam_pr));
464 isite1 =
X->Def.OrgTpow[2*org_isite1-2+org_sigma1] ;
465 isite2 =
X->Def.OrgTpow[2*org_isite2-2+org_sigma2] ;
466 isite3 =
X->Def.OrgTpow[2*org_isite3-2+org_sigma3] ;
467 isite4 =
X->Def.OrgTpow[2*org_isite4-2+org_sigma4] ;
468 if(isite1 == isite2 && isite3 == isite4){
470 org_isite3-1, org_sigma3,
473 else if(isite1 == isite2 && isite3 != isite4){
476 org_isite3-1, org_sigma3, org_isite4-1, org_sigma4,
479 else if(isite1 != isite2 && isite3 == isite4){
481 org_isite3-1, org_sigma3,
485 else if(isite1 != isite2 && isite3 != isite4){
487 org_isite3-1, org_sigma3, org_isite4-1, org_sigma4,
494 i,
X, org_isite1, org_isite2, org_isite3, org_isite4,
495 org_sigma1, org_sigma2, org_sigma3, org_sigma4, tmp_V
498 i_max =
X->Large.i_max;
499 isite1 =
X->Large.is1_spin;
500 isite2 =
X->Large.is2_spin;
501 Asum =
X->Large.isA_spin;
502 Adiff =
X->Large.A_spin;
504 isite3 =
X->Large.is3_spin;
505 isite4 =
X->Large.is4_spin;
506 Bsum =
X->Large.isB_spin;
507 Bdiff =
X->Large.B_spin;
511 if(isite1 == isite2 && isite3 == isite4){
512 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2) shared(vec,tmp_V) 513 for(j=1;j<=i_max;j++){
516 }
else if(isite1 == isite2 && isite3 != isite4){
517 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2) shared(vec,tmp_V) 518 for(j=1;j<=i_max;j++){
519 dam_pr +=
child_CisAisCjtAku_element(j, isite1, isite3, isite4, Bsum, Bdiff, tmp_V,
vec,
vec,
X, &tmp_off);
521 }
else if(isite1 != isite2 && isite3 == isite4){
522 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2) shared(vec,tmp_V) 523 for(j=1;j<=i_max;j++){
524 dam_pr +=
child_CisAjtCkuAku_element(j, isite1, isite2, isite3, Asum, Adiff, tmp_V,
vec,
vec,
X, &tmp_off);
526 }
else if(isite1 != isite2 && isite3 != isite4){
527 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isite1,isite2,isite4,isite3,Asum,Bsum,Adiff,Bdiff,tmp_off,tmp_off_2) shared(vec,tmp_V) 528 for(j=1;j<=i_max;j++){
529 dam_pr +=
child_CisAjtCkuAlv_element(j, isite1, isite2, isite3, isite4, Asum, Adiff, Bsum, Bdiff, tmp_V,
vec,
vec,
X, &tmp_off_2);
535 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf\n",org_isite1-1,org_sigma1, org_isite2-1,org_sigma2, org_isite3-1, org_sigma3, org_isite4-1,org_sigma4, creal(dam_pr), cimag(dam_pr));
553 if (
X->Def.iFlgGeneralSpin ==
FALSE) {
572 long unsigned int i,j;
573 long unsigned int org_isite1,org_isite2,org_isite3,org_isite4;
574 long unsigned int org_sigma1,org_sigma2,org_sigma3,org_sigma4;
575 long unsigned int tmp_org_isite1,tmp_org_isite2,tmp_org_isite3,tmp_org_isite4;
576 long unsigned int tmp_org_sigma1,tmp_org_sigma2,tmp_org_sigma3,tmp_org_sigma4;
577 long unsigned int isA_up, isB_up;
578 long unsigned int is1_up, is2_up;
579 long unsigned int tmp_off=0;
580 int tmp_sgn, num1, num2;
581 double complex tmp_V;
582 double complex dam_pr;
586 i_max=
X->Check.idim_max;
587 X->Large.mode=M_CORR;
590 for(i=0;i<
X->Def.NCisAjtCkuAlvDC;i++){
591 tmp_org_isite1 =
X->Def.CisAjtCkuAlvDC[i][0]+1;
592 tmp_org_sigma1 =
X->Def.CisAjtCkuAlvDC[i][1];
593 tmp_org_isite2 =
X->Def.CisAjtCkuAlvDC[i][2]+1;
594 tmp_org_sigma2 =
X->Def.CisAjtCkuAlvDC[i][3];
595 tmp_org_isite3 =
X->Def.CisAjtCkuAlvDC[i][4]+1;
596 tmp_org_sigma3 =
X->Def.CisAjtCkuAlvDC[i][5];
597 tmp_org_isite4 =
X->Def.CisAjtCkuAlvDC[i][6]+1;
598 tmp_org_sigma4 =
X->Def.CisAjtCkuAlvDC[i][7];
599 if(
Rearray_Interactions(i, &org_isite1, &org_isite2, &org_isite3, &org_isite4, &org_sigma1, &org_sigma2, &org_sigma3, &org_sigma4, &tmp_V,
X)!=0){
601 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1,tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4,0.0,0.0);
606 if(org_isite1 >
X->Def.Nsite && org_isite3>
X->Def.Nsite){
607 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
608 is1_up =
X->Def.Tpow[org_isite1 - 1];
609 is2_up =
X->Def.Tpow[org_isite3 - 1];
612 #pragma omp parallel for default(none) reduction (+:dam_pr) shared(vec) \ 613 firstprivate(i_max, num1, num2, tmp_V) private(j) 614 for (j = 1; j <= i_max; j++) {
615 dam_pr += tmp_V*num1*num2*
vec[j]*conj(
vec[j]);
618 else if(org_isite1==org_isite3 && org_sigma1==org_sigma4 && org_sigma2==org_sigma3){
619 is1_up =
X->Def.Tpow[org_isite1 - 1];
621 #pragma omp parallel for default(none) reduction (+:dam_pr) shared(vec) \ 622 firstprivate(i_max, num1, num2, tmp_V) private(j) 623 for (j = 1; j <= i_max; j++) {
624 dam_pr += tmp_V*num1*
vec[j]*conj(
vec[j]);
627 else if(org_sigma1==org_sigma4 && org_sigma2==org_sigma3){
634 else if(org_isite1 >
X->Def.Nsite || org_isite3>
X->Def.Nsite){
635 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
636 is1_up =
X->Def.Tpow[org_isite1 - 1];
637 is2_up =
X->Def.Tpow[org_isite3 - 1];
640 #pragma omp parallel for default(none) reduction(+:dam_pr)shared(vec) \ 641 firstprivate(i_max, tmp_V, is1_up, org_sigma1, X, num2) private(j, num1) 642 for (j = 1; j <= i_max; j++) {
644 dam_pr += tmp_V*num1*num2*conj(
vec[j])*
vec[j];
647 else if(org_sigma1==org_sigma4 && org_sigma2==org_sigma3){
656 isA_up =
X->Def.Tpow[org_isite1-1];
657 isB_up =
X->Def.Tpow[org_isite3-1];
658 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
660 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off, tmp_V) shared(vec) 661 for(j=1;j<=i_max;j++){
664 }
else if(org_isite1==org_isite3 && org_sigma1==org_sigma4 && org_sigma3==org_sigma2){
666 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, dmv) firstprivate(i_max,X,isA_up,org_sigma1, tmp_V) shared(vec, list_1) 667 for(j=1;j<=i_max;j++){
669 dam_pr +=
vec[j]*tmp_V*dmv*conj(
vec[j]);
672 else if(org_sigma1==org_sigma4 && org_sigma2==org_sigma3){
674 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, tmp_sgn, dmv) firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) shared(vec) 675 for(j=1;j<=i_max;j++){
677 dmv =
vec[j]*tmp_sgn;
678 dam_pr += conj(
vec[tmp_off])*dmv;
686 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1, tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4,creal(dam_pr),cimag(dam_pr));
704 long unsigned int i,j;
705 long unsigned int org_isite1,org_isite2,org_isite3,org_isite4;
706 long unsigned int org_sigma1,org_sigma2,org_sigma3,org_sigma4;
707 long unsigned int tmp_org_isite1,tmp_org_isite2,tmp_org_isite3,tmp_org_isite4;
708 long unsigned int tmp_org_sigma1,tmp_org_sigma2,tmp_org_sigma3,tmp_org_sigma4;
709 long unsigned int tmp_off=0;
710 long unsigned int tmp_off_2=0;
711 long unsigned int list1_off=0;
713 double complex tmp_V;
714 double complex dam_pr;
717 long unsigned int tmp_org=0;
719 i_max=
X->Check.idim_max;
720 X->Large.mode=M_CORR;
722 for(i=0;i<
X->Def.NCisAjtCkuAlvDC;i++){
723 tmp_org_isite1 =
X->Def.CisAjtCkuAlvDC[i][0]+1;
724 tmp_org_sigma1 =
X->Def.CisAjtCkuAlvDC[i][1];
725 tmp_org_isite2 =
X->Def.CisAjtCkuAlvDC[i][2]+1;
726 tmp_org_sigma2 =
X->Def.CisAjtCkuAlvDC[i][3];
727 tmp_org_isite3 =
X->Def.CisAjtCkuAlvDC[i][4]+1;
728 tmp_org_sigma3 =
X->Def.CisAjtCkuAlvDC[i][5];
729 tmp_org_isite4 =
X->Def.CisAjtCkuAlvDC[i][6]+1;
730 tmp_org_sigma4 =
X->Def.CisAjtCkuAlvDC[i][7];
732 if(
Rearray_Interactions(i, &org_isite1, &org_isite2, &org_isite3, &org_isite4, &org_sigma1, &org_sigma2, &org_sigma3, &org_sigma4, &tmp_V,
X)!=0){
733 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1,tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4,0.0,0.0);
739 tmp_org =
X->Def.CisAjtCkuAlvDC[i][4*j+1]*
X->Def.Tpow[
X->Def.CisAjtCkuAlvDC[i][4 * j]];
740 tmp_Sz +=
GetLocal2Sz(
X->Def.CisAjtCkuAlvDC[i][4 * j] + 1, tmp_org,
X->Def.SiteToBit,
X->Def.Tpow);
741 tmp_org =
X->Def.CisAjtCkuAlvDC[i][4*j+3]*
X->Def.Tpow[
X->Def.CisAjtCkuAlvDC[i][4 * j+2]];
742 tmp_Sz -=
GetLocal2Sz(
X->Def.CisAjtCkuAlvDC[i][4 * j+2] + 1, tmp_org,
X->Def.SiteToBit,
X->Def.Tpow);
745 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1,tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4,0.0,0.0);
750 if(org_isite1 >
X->Def.Nsite && org_isite3>
X->Def.Nsite){
751 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
754 else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
761 else if(org_isite3 >
X->Def.Nsite || org_isite1 >
X->Def.Nsite){
762 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
765 else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
773 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
774 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, num1) firstprivate(i_max,X,org_isite1, org_sigma1,org_isite3, org_sigma3, tmp_V) shared(vec,list_1) 775 for(j=1;j<=i_max;j++){
780 dam_pr += tmp_V*conj(
vec[j])*
vec[j];
785 else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
786 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, num1) 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) shared(vec, list_1) 787 for(j=1;j<=i_max;j++){
791 X->Def.SiteToBit,
X->Def.Tpow);
794 dam_pr += tmp_V * conj(
vec[list1_off]) *
vec[j];
805 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1, tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4, creal(dam_pr),cimag(dam_pr));
822 if (
X->Def.iFlgGeneralSpin ==
FALSE) {
841 long unsigned int i,j;
842 long unsigned int org_isite1,org_isite2,org_isite3,org_isite4;
843 long unsigned int org_sigma1,org_sigma2,org_sigma3,org_sigma4;
844 long unsigned int tmp_org_isite1,tmp_org_isite2,tmp_org_isite3,tmp_org_isite4;
845 long unsigned int tmp_org_sigma1,tmp_org_sigma2,tmp_org_sigma3,tmp_org_sigma4;
846 long unsigned int isA_up, isB_up;
847 long unsigned int tmp_off=0;
848 double complex tmp_V;
849 double complex dam_pr;
851 i_max=
X->Check.idim_max;
853 for(i=0;i<
X->Def.NCisAjtCkuAlvDC;i++){
854 tmp_org_isite1 =
X->Def.CisAjtCkuAlvDC[i][0]+1;
855 tmp_org_sigma1 =
X->Def.CisAjtCkuAlvDC[i][1];
856 tmp_org_isite2 =
X->Def.CisAjtCkuAlvDC[i][2]+1;
857 tmp_org_sigma2 =
X->Def.CisAjtCkuAlvDC[i][3];
858 tmp_org_isite3 =
X->Def.CisAjtCkuAlvDC[i][4]+1;
859 tmp_org_sigma3 =
X->Def.CisAjtCkuAlvDC[i][5];
860 tmp_org_isite4 =
X->Def.CisAjtCkuAlvDC[i][6]+1;
861 tmp_org_sigma4 =
X->Def.CisAjtCkuAlvDC[i][7];
863 if(
Rearray_Interactions(i, &org_isite1, &org_isite2, &org_isite3, &org_isite4, &org_sigma1, &org_sigma2, &org_sigma3, &org_sigma4, &tmp_V,
X)!=0){
865 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1,tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4,0.0,0.0);
870 if(org_isite1>
X->Def.Nsite && org_isite3>
X->Def.Nsite){
872 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
876 else if(org_isite1 ==org_isite3 && org_sigma1 ==org_sigma4 && org_sigma2 ==org_sigma3){
879 else if(org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4){
882 else if(org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4){
885 else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
889 else if(org_isite3>
X->Def.Nsite || org_isite1>
X->Def.Nsite){
890 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
894 else if(org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4){
897 else if(org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4){
900 else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
905 if(org_isite1==org_isite2 && org_isite3==org_isite4){
906 isA_up =
X->Def.Tpow[org_isite2-1];
907 isB_up =
X->Def.Tpow[org_isite4-1];
908 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
910 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) shared(vec) 911 for(j=1;j<=i_max;j++){
914 }
else if(org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4){
916 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) shared(vec) 917 for(j=1;j<=i_max;j++){
920 }
else if(org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4){
922 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) shared(vec) 923 for(j=1;j<=i_max;j++){
926 }
else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
928 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j) firstprivate(i_max,X,isA_up,isB_up,org_sigma2,org_sigma4,tmp_off,tmp_V) shared(vec) 929 for(j=1;j<=i_max;j++){
936 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1, tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4,creal(dam_pr),cimag(dam_pr));
952 long unsigned int i,j;
953 long unsigned int org_isite1,org_isite2,org_isite3,org_isite4;
954 long unsigned int org_sigma1,org_sigma2,org_sigma3,org_sigma4;
955 long unsigned int tmp_org_isite1,tmp_org_isite2,tmp_org_isite3,tmp_org_isite4;
956 long unsigned int tmp_org_sigma1,tmp_org_sigma2,tmp_org_sigma3,tmp_org_sigma4;
957 long unsigned int tmp_off=0;
958 long unsigned int tmp_off_2=0;
960 double complex tmp_V;
961 double complex dam_pr;
963 i_max=
X->Check.idim_max;
964 X->Large.mode=M_CORR;
967 for(i=0;i<
X->Def.NCisAjtCkuAlvDC;i++){
968 tmp_org_isite1 =
X->Def.CisAjtCkuAlvDC[i][0]+1;
969 tmp_org_sigma1 =
X->Def.CisAjtCkuAlvDC[i][1];
970 tmp_org_isite2 =
X->Def.CisAjtCkuAlvDC[i][2]+1;
971 tmp_org_sigma2 =
X->Def.CisAjtCkuAlvDC[i][3];
972 tmp_org_isite3 =
X->Def.CisAjtCkuAlvDC[i][4]+1;
973 tmp_org_sigma3 =
X->Def.CisAjtCkuAlvDC[i][5];
974 tmp_org_isite4 =
X->Def.CisAjtCkuAlvDC[i][6]+1;
975 tmp_org_sigma4 =
X->Def.CisAjtCkuAlvDC[i][7];
978 if(
Rearray_Interactions(i, &org_isite1, &org_isite2, &org_isite3, &org_isite4, &org_sigma1, &org_sigma2, &org_sigma3, &org_sigma4, &tmp_V,
X)!=0){
980 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1,tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4,0.0,0.0);
984 if(org_isite1 >
X->Def.Nsite && org_isite3 >
X->Def.Nsite){
985 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
988 else if(org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4){
991 else if(org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4){
994 else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
998 else if(org_isite3 >
X->Def.Nsite || org_isite1 >
X->Def.Nsite){
999 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
1002 else if(org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4){
1005 else if(org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4){
1008 else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
1013 if(org_sigma1==org_sigma2 && org_sigma3==org_sigma4 ){
1014 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, num1) firstprivate(i_max,X,org_isite1, org_sigma1,org_isite3, org_sigma3, tmp_V) shared(vec) 1015 for(j=1;j<=i_max;j++){
1016 num1=
BitCheckGeneral(j-1, org_isite1, org_sigma1,
X->Def.SiteToBit,
X->Def.Tpow);
1018 num1=
BitCheckGeneral(j-1, org_isite3, org_sigma3,
X->Def.SiteToBit,
X->Def.Tpow);
1020 dam_pr += tmp_V*conj(
vec[j])*
vec[j];
1024 }
else if(org_sigma1 == org_sigma2 && org_sigma3 != org_sigma4){
1025 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, num1) firstprivate(i_max,X, org_isite1, org_isite3, org_sigma1,org_sigma3,org_sigma4, tmp_off, tmp_V) shared(vec) 1026 for(j=1;j<=i_max;j++){
1027 num1 =
GetOffCompGeneralSpin(j-1, org_isite3, org_sigma4, org_sigma3, &tmp_off,
X->Def.SiteToBit,
X->Def.Tpow);
1029 num1=
BitCheckGeneral(tmp_off, org_isite1, org_sigma1,
X->Def.SiteToBit,
X->Def.Tpow);
1031 dam_pr += tmp_V*conj(
vec[tmp_off+1])*
vec[j];
1035 }
else if(org_sigma1 != org_sigma2 && org_sigma3 == org_sigma4){
1036 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, num1) firstprivate(i_max,X, org_isite1, org_isite3, org_sigma1,org_sigma2, org_sigma3, tmp_off, tmp_V) shared(vec) 1037 for(j=1;j<=i_max;j++){
1038 num1 =
BitCheckGeneral(j-1, org_isite3, org_sigma3,
X->Def.SiteToBit,
X->Def.Tpow);
1040 num1 =
GetOffCompGeneralSpin(j-1, org_isite1, org_sigma2, org_sigma1, &tmp_off,
X->Def.SiteToBit,
X->Def.Tpow);
1042 dam_pr += tmp_V*conj(
vec[tmp_off+1])*
vec[j];
1046 }
else if(org_sigma1 != org_sigma2 && org_sigma3 != org_sigma4){
1047 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, num1) firstprivate(i_max,X, org_isite1, org_isite3, org_sigma1, org_sigma2, org_sigma3, org_sigma4, tmp_off, tmp_off_2, tmp_V) shared(vec) 1048 for(j=1;j<=i_max;j++){
1049 num1 =
GetOffCompGeneralSpin(j-1, org_isite3, org_sigma4, org_sigma3, &tmp_off,
X->Def.SiteToBit,
X->Def.Tpow);
1051 num1 =
GetOffCompGeneralSpin(tmp_off, org_isite1, org_sigma2, org_sigma1, &tmp_off_2,
X->Def.SiteToBit,
X->Def.Tpow);
1053 dam_pr += tmp_V*conj(
vec[tmp_off_2+1])*
vec[j];
1061 fprintf(*_fp,
" %4ld %4ld %4ld %4ld %4ld %4ld %4ld %4ld %.10lf %.10lf \n",tmp_org_isite1-1, tmp_org_sigma1, tmp_org_isite2-1, tmp_org_sigma2, tmp_org_isite3-1, tmp_org_sigma3, tmp_org_isite4-1, tmp_org_sigma4, creal(dam_pr),cimag(dam_pr));
int expec_cisajscktaltdc(struct BindStruct *X, double complex *vec)
Parent function to calculate two-body green's functions.
double complex X_child_CisAitCjuAjv_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the canonical general spin system when one of these sites is in the inter process re...
double complex X_GC_child_CisAisCjuAju_spin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the inter process region...
const char * cLogLanczosExpecTwoBodyGStart
double complex X_GC_child_CisAitCjuAjv_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the grandcanonical general spin system when one of these site is in the inter proces...
double complex X_GC_child_CisAisCjuAjv_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
term in Spin model. When both site1 and site3 are in the inter process region.
int CheckPE(int org_isite, struct BindStruct *X)
Check whether this site is in the inter process region or not.
double complex SumMPI_dc(double complex norm)
MPI wrapper function to obtain sum of Double complex across processes.
double complex X_GC_child_CisAis_spin_MPIdouble(int org_isite1, int org_ispin1, double complex tmp_trans, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Hopping term in Spin + GC When both site1 and site2 are in the inter process region.
double complex GC_child_CisAitCiuAiu_spin_element(long unsigned int j, long unsigned int org_sigma2, long unsigned int org_sigma4, long unsigned int isA_up, long unsigned int isB_up, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute term of grandcanonical spsin system.
double complex GC_child_CisAisCitAiu_spin_element(long unsigned int j, long unsigned int org_sigma2, long unsigned int org_sigma4, long unsigned int isA_up, long unsigned int isB_up, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X, long unsigned int *tmp_off)
Compute term of grandcanonical spsin system.
const char * cTPQExpecTwoBodyGFinish
const char * cTEExpecTwoBodyGFinish
int X_child_exchange_spin_element(long unsigned int j, struct BindStruct *X, long unsigned int isA_up, long unsigned int isB_up, long unsigned int sigmaA, long unsigned int sigmaB, long unsigned int *tmp_off)
Compute index of final wavefunction associated to spin-exchange term.
double complex X_GC_child_CisAitCjuAju_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the grandcanonical general spin system when one of these site is in the inter proces...
double complex X_GC_child_CisAitCiuAiv_spin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Exchange and Pairlifting term in Spin model + GC When only site2 is in the inter process region...
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_child_CisAisCjuAju_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the canonical general spin system when one of these sites is in the inter process re...
const char * cFileName2BGreen_TPQ
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.
int X_SpinGC_CisAis(long unsigned int j, struct BindStruct *X, long unsigned int is1_spin, long unsigned int sigma1)
Compute the grandcanonical spin state with bit mask is1_spin.
double complex X_child_CisAisCjuAju_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the canonical general spin system when both sites are in the inter process region...
int ConvertToList1GeneralSpin(const long unsigned int org_ibit, const long unsigned int ihlfbit, long unsigned int *_ilist1Comp)
function of converting component to list_1
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.
int childfopenMPI(const char *_cPathChild, const char *_cmode, FILE **_fp)
Only the root process open file in output/ directory.
double complex GC_child_CisAitCiuAiv_spin_element(long unsigned int j, long unsigned int org_sigma2, long unsigned int org_sigma4, long unsigned int isA_up, long unsigned int isB_up, 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 spsin system.
int X_Spin_CisAis(long unsigned int j, struct BindStruct *X, long unsigned int is1_spin, long unsigned int sigma1)
Compute the spin state with bit mask is1_spin.
int expec_cisajscktalt_SpinGeneral(struct BindStruct *X, double complex *vec, FILE **_fp)
Child function to calculate two-body green's functions for General Spin model.
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 X_child_CisAitCjuAjv_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the canonical general spin system when both sites are in the inter process region...
int Rearray_Interactions(int i, long unsigned int *org_isite1, long unsigned int *org_isite2, long unsigned int *org_isite3, long unsigned int *org_isite4, long unsigned int *org_sigma1, long unsigned int *org_sigma2, long unsigned int *org_sigma3, long unsigned int *org_sigma4, double complex *tmp_V, struct BindStruct *X)
Rearray interactions.
double complex X_GC_child_CisAisCjuAju_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the grandcanonical general spin system when both site is in the inter process region...
double complex X_GC_child_CisAisCjuAju_spin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the inter process region...
double complex X_GC_child_CisAitCjuAjv_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the grandcanonical general spin system when both site is in the inter process region...
int expec_cisajscktalt_SpinGC(struct BindStruct *X, double complex *vec, FILE **_fp)
Parent function to calculate two-body green's functions for Spin GC model.
double complex X_GC_child_CisAitCjuAju_spin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
CisAisCjuAjv term in Spin model + GC When only site2 is in the inter process region.
double complex X_GC_child_CisAisCjuAjv_spin_MPIdouble(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the inter process region...
int GetLocal2Sz(const unsigned int isite, const long unsigned int org_bit, const long int *SiteToBit, const long unsigned int *Tpow)
get 2sz at a site for general spin
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_CisAisCisAis_spin_element(long unsigned int j, long unsigned int isA_up, long unsigned int isB_up, long unsigned int org_sigma2, long unsigned int org_sigma4, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X)
Compute term of grandcanonical spsin system.
const char * cLogCGExpecTwoBodyGFinish
const char * cLanczosExpecTwoBodyGFinish
int GetSplitBitByModel(const int Nsite, const int iCalcModel, long unsigned int *irght, long unsigned int *ilft, long unsigned int *ihfbit)
function of splitting original bit into right and left spaces.
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.
const char * cTEExpecTwoBodyGStart
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.
const char * cLogLanczosExpecTwoBodyGFinish
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.
double complex child_CisAisCisAis_spin_element(long unsigned int j, long unsigned int isA_up, long unsigned int isB_up, long unsigned int org_sigma2, long unsigned int org_sigma4, double complex tmp_V, double complex *tmp_v0, double complex *tmp_v1, struct BindStruct *X)
Compute term of canonical spsin system.
int expec_cisajscktalt_HubbardGC(struct BindStruct *X, double complex *vec, FILE **_fp)
Child function to calculate two-body green's functions for Hubbard GC model.
int expec_cisajscktalt_SpinHalf(struct BindStruct *X, double complex *vec, FILE **_fp)
Child function to calculate two-body green's functions for 1/2 Spin model.
const char * cLanczosExpecTwoBodyGStart
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.
const char * cCGExpecTwoBodyGFinish
long unsigned int * list_1
const char * cFileName2BGreen_CG
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.
const char * cFileName2BGreen_Lanczos
const char * cCGExpecTwoBodyGStart
const char * cFileNameTimeKeep
const char * cTPQExpecTwoBodyGStart
int BitCheckGeneral(const long unsigned int org_bit, const unsigned int org_isite, const unsigned int target_ispin, const long int *SiteToBit, const long unsigned int *Tpow)
bit check function for general spin
const char * cFileName2BGreen_TE
int expec_cisajscktalt_SpinGCHalf(struct BindStruct *X, double complex *vec, FILE **_fp)
Child function to calculate two-body green's functions for 1/2 Spin GC model.
double complex X_GC_child_CisAitCjuAju_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
term in Spin model. When both site1 and site3 are in the inter process region.
double complex X_child_general_int_spin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Exchange term in Spin model When both site1 and site2 are in the inter process region.
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.
int expec_cisajscktalt_SpinGCGeneral(struct BindStruct *X, double complex *vec, FILE **_fp)
Child function to calculate two-body green's functions for General Spin GC model. ...
double complex X_GC_child_CisAisCjuAjv_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the grandcanonical general spin system when one of these site is in the inter proces...
int expec_cisajscktalt_Spin(struct BindStruct *X, double complex *vec, FILE **_fp)
Parent function to calculate two-body green's functions for Spin model.
double complex X_GC_child_CisAisCjuAjv_spin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
CisAisCjuAjv term in Spin model + GC When only site2 is in the inter process region.
double complex X_child_general_int_spin_MPIsingle(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
int GetOffCompGeneralSpin(const long unsigned int org_ibit, const int org_isite, const int org_ispin, const int off_ispin, long unsigned int *_ioffComp, const long int *SiteToBit, const long unsigned int *Tpow)
function of getting off-diagonal component for general spin
const char * cFileName2BGreen_FullDiag
int myrank
Process ID, defined in InitializeMPI()
double complex X_GC_child_CisAitCiuAiv_spin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, int org_ispin4, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
term in Spin model + GC. When both site1 and site2 are in the inter process region.
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 X_GC_child_CisAitCjuAju_spin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the inter process region...
int TimeKeeperWithStep(struct BindStruct *X, const char *cFileName, const char *cTimeKeeper_Message, const char *cWriteType, const int istep)
Functions for writing a time log.
double complex X_GC_child_CisAisCjuAju_GeneralSpin_MPIsingle(int org_isite1, int org_ispin1, int org_isite3, int org_ispin3, double complex tmp_J, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Compute term in the grandcanonical general spin system when one of these site is in the inter proces...
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.
int expec_cisajscktalt_Hubbard(struct BindStruct *X, double complex *vec, FILE **_fp)
Child function to calculate two-body green's functions for Hubbard model.
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 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 TimeKeeper(struct BindStruct *X, const char *cFileName, const char *cTimeKeeper_Message, const char *cWriteType)
Functions for writing a time log.
FILE * stdoutMPI
File pointer to the standard output defined in InitializeMPI()
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.