66 #include "mltplyCommon.hpp" 67 #include "mltplySpinCore.hpp" 68 #include "mltplyMPISpinCore.hpp" 69 #include "bitcalc.hpp" 70 #include "wrapperMPI.hpp" 79 int nstate, std::complex<double> **tmp_v0 ,
80 std::complex<double> **tmp_v1 )
102 std::complex<double> tmp_J,
104 int nstate, std::complex<double> **tmp_v0,
105 std::complex<double> **tmp_v1
107 int mask1, mask2, state1, state2, origin;
108 long int idim_max_buf;
109 std::complex<double> Jint;
111 mask1 = (int)X->
Def.
Tpow[org_isite1];
112 mask2 = (
int)X->
Def.
Tpow[org_isite3];
113 if (org_isite1 != org_isite3) {
114 origin =
myrank ^ (mask1 + mask2);
117 if (org_ispin1 == org_ispin4 && org_ispin2 == org_ispin3) {
126 state1 = (origin & mask1) / mask1;
127 state2 = (origin & mask2) / mask2;
129 if (state1 == org_ispin2 && state2 == org_ispin4) {
132 else if (state1 == org_ispin1 && state2 == org_ispin3) {
155 int nstate, std::complex<double> **tmp_v0 ,
156 std::complex<double> **tmp_v1
174 std::complex<double> tmp_J,
176 int nstate, std::complex<double> **tmp_v0,
177 std::complex<double> **tmp_v1
179 int mask1, mask2, state2;
180 long int origin, num1;
181 long int idim_max_buf;
182 std::complex<double> Jint;
184 if (org_isite1 == org_isite3 && org_ispin1 == org_ispin4) {
188 mask1 = (int)X->
Def.
Tpow[org_isite1];
189 mask2 = (
int)X->
Def.
Tpow[org_isite3];
191 state2 = (origin & mask2) / mask2;
193 if (num1 != 0 && state2 == org_ispin4) {
196 else if (
X_SpinGC_CisAis(origin + 1, mask1, org_ispin1) == TRUE && state2 == org_ispin3) {
217 int nstate, std::complex<double> **tmp_v0,
218 std::complex<double> **tmp_v1
237 std::complex<double> tmp_J,
239 int nstate, std::complex<double> **tmp_v0,
240 std::complex<double> **tmp_v1
242 int mask1, mask2, state1, num1;
244 long int idim_max_buf;
245 std::complex<double> Jint;
247 if (org_isite1 == org_isite3 && org_ispin1 == org_ispin3) {
251 mask1 = (int)X->
Def.
Tpow[org_isite1];
253 state1 = (origin & mask1) / mask1;
254 mask2 = (int)X->
Def.
Tpow[org_isite3];
256 if (state1 == org_ispin2) {
292 std::complex<double> tmp_J,
294 int nstate, std::complex<double> **tmp_v0,
295 std::complex<double> **tmp_v1
297 long int mask1, mask2, num1,num2;
299 std::complex<double> dmv;
301 mask1 = (int)X->
Def.
Tpow[org_isite1];
302 mask2 = (
int)X->
Def.
Tpow[org_isite3];
306 #pragma omp parallel default(none) private(j, dmv) \ 307 firstprivate(tmp_J, X, num1, num2) shared(tmp_v1, tmp_v0,nstate,one) 311 dmv = (std::complex<double>)(num1 * num2) * tmp_J;
312 zaxpy_(&nstate, &dmv, &tmp_v1[j][0], &one, &tmp_v0[j][0], &one);
326 std::complex<double> tmp_J,
328 int nstate, std::complex<double> **tmp_v0,
329 std::complex<double> **tmp_v1
331 long int mask1, mask2, num1, num2;
333 std::complex<double> Jint, dmv;
336 mask1 = (int)X->
Def.
Tpow[org_isite1];
337 mask2 = (
int)X->
Def.
Tpow[org_isite3];
340 #pragma omp parallel default(none) private(j, dmv, num1) \ 341 firstprivate(Jint, X, num2, mask1, org_ispin1) shared(tmp_v1, tmp_v0,nstate,one) 346 dmv = Jint * (std::complex<double>)(num1 * num2);
347 zaxpy_(&nstate, &dmv, &tmp_v1[j][0], &one, &tmp_v0[j][0], &one);
359 int nstate, std::complex<double> **tmp_v0,
360 std::complex<double> **tmp_v1
380 std::complex<double> tmp_J,
382 int nstate, std::complex<double> **tmp_v0,
383 std::complex<double> **tmp_v1
385 int mask2, state2, origin;
386 long int mask1, idim_max_buf, j, ioff, state1, state1check;
387 std::complex<double> Jint;
392 mask2 = (int)X->
Def.
Tpow[org_isite3];
394 state2 = (origin & mask2) / mask2;
396 if (state2 == org_ispin4) {
397 state1check = (
long int) org_ispin2;
400 else if (state2 == org_ispin3) {
401 state1check = (
long int) org_ispin1;
414 mask1 = X->
Def.
Tpow[org_isite1];
416 #pragma omp parallel default(none) private(j, state1, ioff) \ 417 firstprivate(idim_max_buf, Jint, X, state1check, mask1) \ 418 shared(v1buf, tmp_v1, tmp_v0,nstate,one) 421 for (j = 0; j < idim_max_buf; j++) {
424 zaxpy_(&nstate, &Jint, &
v1buf[j + 1][0], &one, &tmp_v0[ioff + 1][0], &one);
437 int nstate, std::complex<double> **tmp_v0,
438 std::complex<double> **tmp_v1
456 std::complex<double> tmp_J,
458 int nstate, std::complex<double> **tmp_v0,
459 std::complex<double> **tmp_v1
461 int mask2, state2, origin;
462 long int mask1, idim_max_buf, j, state1, state1check;
463 std::complex<double> Jint;
468 mask2 = (int)X->
Def.
Tpow[org_isite3];
470 state2 = (origin & mask2) / mask2;
471 if (state2 == org_ispin4) {
472 state1check = (
long int) org_ispin1;
475 else if (state2 == org_ispin3) {
476 state1check = (
long int) org_ispin1;
489 mask1 = X->
Def.
Tpow[org_isite1];
491 #pragma omp parallel default(none) private(j, state1) \ 492 firstprivate(idim_max_buf, Jint, X, state1check, mask1) \ 493 shared(v1buf, tmp_v1, tmp_v0,nstate,one) 496 for (j = 0; j < idim_max_buf; j++) {
497 state1 = (j & mask1) / mask1;
498 if (state1 == state1check) {
499 zaxpy_(&nstate, &Jint, &
v1buf[j + 1][0], &one, &tmp_v0[j + 1][0], &one);
512 int nstate, std::complex<double> **tmp_v0,
513 std::complex<double> **tmp_v1
530 std::complex<double> tmp_J,
532 int nstate, std::complex<double> **tmp_v0,
533 std::complex<double> **tmp_v1
536 long int mask1, j, ioff, state1, state1check;
537 std::complex<double> Jint, dmv;
542 mask2 = (int)X->
Def.
Tpow[org_isite3];
543 state2 = (
myrank & mask2) / mask2;
545 if (state2 == org_ispin3) {
546 state1check = org_ispin2;
553 mask1 = (int)X->
Def.
Tpow[org_isite1];
555 #pragma omp parallel
default(none)
private(j, dmv, state1, ioff) \
556 firstprivate(Jint, X, state1check, mask1) shared(tmp_v1, tmp_v0,nstate,one)
561 state1 = (j & mask1) / mask1;
563 if (state1 == state1check) {
569 zaxpy_(&nstate, &dmv, &tmp_v1[j + 1][0], &one, &tmp_v0[ioff + 1][0], &one);
583 std::complex<double> tmp_J,
585 int nstate, std::complex<double> **tmp_v0,
586 std::complex<double> **tmp_v1
590 std::complex<double> tmp_V;
591 if (org_isite1 == org_isite3 && org_ispin1 == org_ispin4) {
628 std::complex<double> tmp_J,
630 int nstate, std::complex<double> **tmp_v0,
631 std::complex<double> **tmp_v1
635 std::complex<double> tmp_V;
637 if (org_isite1 == org_isite3 && org_ispin1 == org_ispin3) {
676 std::complex<double> tmp_J,
678 int nstate, std::complex<double> **tmp_v0,
679 std::complex<double> **tmp_v1
681 long int tmp_off, off;
682 int origin, ihermite;
683 std::complex<double> tmp_V;
687 if (org_isite1 == org_isite3 && org_ispin1 == org_ispin4 &&
688 org_ispin2 == org_ispin3) {
701 else ihermite = FALSE;
707 if (ihermite == FALSE) {
736 std::complex<double> tmp_J,
738 int nstate, std::complex<double> **tmp_v0,
739 std::complex<double> **tmp_v1
742 std::complex<double> tmp_V;
765 std::complex<double> tmp_trans,
767 int nstate, std::complex<double> **tmp_v0,
768 std::complex<double> **tmp_v1
772 std::complex<double> tmp_V;
779 org_isite1 + 1, org_ispin2, org_ispin1, &off,
781 tmp_V = conj(tmp_trans);
799 std::complex<double> tmp_trans,
801 int nstate, std::complex<double> **tmp_v0,
802 std::complex<double> **tmp_v1
805 std::complex<double> tmp_V;
823 std::complex<double> tmp_trans,
825 int nstate, std::complex<double> **tmp_v0,
826 std::complex<double> **tmp_v1
829 std::complex<double> tmp_V;
848 std::complex<double> tmp_trans,
851 std::complex<double> **tmp_v0,
852 std::complex<double> **tmp_v1,
856 long int off, j, tmp_off,idim_max_buf;
858 std::complex<double> tmp_V;
865 org_isite1 + 1, org_ispin2, org_ispin1, &off,
867 tmp_V = conj(tmp_trans);
876 SendRecv_cv(origin, idim_max*nstate, idim_max_buf*nstate, &tmp_v1[1][0], &
v1buf[1][0]);
878 #pragma omp parallel for default(none)\ 879 firstprivate(X, tmp_V, idim_max_buf, list_1buf_org) private(j, tmp_off) \ 880 shared (tmp_v0, tmp_v1, v1buf,nstate,one) 881 for (j = 1; j <= idim_max_buf; j++) {
883 zaxpy_(&nstate, &tmp_V, &
v1buf[j][0], &one, &tmp_v0[tmp_off][0], &one);
896 std::complex<double> tmp_J,
898 int nstate, std::complex<double> **tmp_v0,
899 std::complex<double> **tmp_v1
901 long int off, j, num1;
902 int origin, isite, IniSpin, one = 1;
903 std::complex<double> tmp_V;
906 org_isite3 + 1, org_ispin3, org_ispin4, &off,
910 isite = org_isite1 + 1;
911 IniSpin = org_ispin1;
914 org_isite3 + 1, org_ispin4, org_ispin3, &off,
919 isite = org_isite1 + 1;
920 IniSpin = org_ispin1;
928 #pragma omp parallel default(none) firstprivate(X, tmp_V, isite, IniSpin) \ 929 private(j, num1) shared (tmp_v0, tmp_v1, v1buf,nstate,one) 934 if (num1 != 0) zaxpy_(&nstate, &tmp_V, &
v1buf[j][0], &one, &tmp_v0[j][0], &one);
948 std::complex<double> tmp_J,
950 int nstate, std::complex<double> **tmp_v0,
951 std::complex<double> **tmp_v1
953 long int num1, j, off;
954 int isite, IniSpin, FinSpin, one = 1;
955 std::complex<double> tmp_V, dmv;
961 isite = org_isite1 + 1;
962 IniSpin = org_ispin2;
963 FinSpin = org_ispin1;
967 #pragma omp parallel default(none) \ 968 firstprivate(X, tmp_V, isite, IniSpin, FinSpin) private(j, dmv, num1, off) \ 969 shared (tmp_v0, tmp_v1, v1buf,nstate,one) 977 zaxpy_(&nstate, &dmv, &tmp_v1[j][0], &one, &tmp_v0[off + 1][0], &one);
983 zaxpy_(&nstate, &dmv, &tmp_v1[j][0], &one, &tmp_v0[off + 1][0], &one);
999 std::complex<double> tmp_J,
1001 int nstate, std::complex<double> **tmp_v0,
1002 std::complex<double> **tmp_v1
1005 int origin, isite, IniSpin, FinSpin, one = 1;
1006 std::complex<double> tmp_V;
1009 org_isite3 + 1, org_ispin3, org_ispin4, &off,
1013 isite = org_isite1 + 1;
1014 IniSpin = org_ispin2;
1015 FinSpin = org_ispin1;
1018 org_isite3 + 1, org_ispin4, org_ispin3, &off,
1021 tmp_V = conj(tmp_J);
1023 isite = org_isite1 + 1;
1024 IniSpin = org_ispin1;
1025 FinSpin = org_ispin2;
1033 #pragma omp parallel default(none) \ 1034 firstprivate(X, tmp_V, isite, IniSpin, FinSpin) private(j, off) \ 1035 shared (tmp_v0, tmp_v1, v1buf,nstate,one) 1042 zaxpy_(&nstate, &tmp_V, &
v1buf[j][0], &one, &tmp_v0[off + 1][0], &one);
1056 std::complex<double> tmp_J,
1058 int nstate, std::complex<double> **tmp_v0,
1059 std::complex<double> **tmp_v1
1062 std::complex<double> tmp_V, dmv;
1066 if (num1 != FALSE) {
1071 #pragma omp parallel default(none) \ 1072 firstprivate(X, tmp_V, org_isite1, org_ispin1) private(j, dmv, num1) \ 1073 shared (tmp_v0, tmp_v1,nstate,one) 1079 dmv = tmp_V * (std::complex<double>)num1;
1080 zaxpy_(&nstate, &dmv, &tmp_v1[j][0], &one, &tmp_v0[j][0], &one);
1095 std::complex<double> tmp_J,
1097 int nstate, std::complex<double> **tmp_v0,
1098 std::complex<double> **tmp_v1
1100 long int tmp_off, off, j, idim_max_buf;
1101 int origin, one = 1;
1102 std::complex<double> tmp_V;
1119 if (ihermite == FALSE) {
1124 tmp_V = conj(tmp_J);
1140 #pragma omp parallel default(none) firstprivate(X, tmp_V, idim_max_buf) \ 1141 private(j, off) shared (tmp_v0, tmp_v1, list_1buf, v1buf,nstate,one) 1144 for (j = 1; j <= idim_max_buf; j++) {
1146 zaxpy_(&nstate, &tmp_V, &
v1buf[j][0], &one, &tmp_v0[off][0], &one);
1159 std::complex<double> tmp_J,
1161 int nstate, std::complex<double> **tmp_v0,
1162 std::complex<double> **tmp_v1
1165 std::complex<double> tmp_V;
1167 if (org_isite1 == org_isite3 && org_ispin1 == org_ispin3) {
1169 if (num1 != FALSE) {
1178 if (num1 != FALSE) {
1181 if (num1 != FALSE) {
1204 std::complex<double> tmp_J,
1206 int nstate, std::complex<double> **tmp_v0,
1207 std::complex<double> **tmp_v1
1211 std::complex<double> tmp_V, dmv;
1215 if (num1 != FALSE) {
1220 #pragma omp parallel default(none) \ 1221 firstprivate(X, tmp_V, org_isite1, org_ispin1) private(j, dmv, num1) \ 1222 shared (tmp_v0, tmp_v1, list_1,nstate,one) 1228 dmv = tmp_V * (std::complex<double>)num1;
1229 zaxpy_(&nstate, &dmv, &tmp_v1[j][0], &one, &tmp_v0[j][0], &one);
1244 std::complex<double> tmp_J,
1246 int nstate, std::complex<double> **tmp_v0,
1247 std::complex<double> **tmp_v1
1249 long int tmp_off, off, j, idim_max_buf;
1250 int origin, isite, IniSpin, FinSpin, one = 1;
1251 std::complex<double> tmp_V;
1254 org_isite3 + 1, org_ispin3, org_ispin4, &off,
1258 isite = org_isite1 + 1;
1259 IniSpin = org_ispin2;
1260 FinSpin = org_ispin1;
1265 tmp_V = conj(tmp_J);
1267 isite = org_isite1 + 1;
1268 IniSpin = org_ispin1;
1269 FinSpin = org_ispin2;
1279 #pragma omp parallel default(none) \ 1280 firstprivate(X, tmp_V, idim_max_buf, IniSpin, FinSpin, isite) \ 1281 private(j, off, tmp_off) shared (tmp_v0, tmp_v1, list_1buf, v1buf,nstate,one) 1284 for (j = 1; j <= idim_max_buf; j++) {
1290 zaxpy_(&nstate, &tmp_V, &
v1buf[j][0], &one, &tmp_v0[off][0], &one);
1304 std::complex<double> tmp_trans,
1306 int nstate, std::complex<double> **tmp_v0 ,
1307 std::complex<double> **tmp_v1 )
1309 int mask1, state1, origin;
1310 long int idim_max_buf;
1311 std::complex<double> trans;
1313 mask1 = (int)X->
Def.
Tpow[org_isite1];
1315 state1 = (origin & mask1)/mask1;
1317 if(state1 == org_ispin2){
1320 else if(state1 == org_ispin1) {
1321 trans = conj(tmp_trans);
1343 std::complex<double> tmp_trans,
1346 std::complex<double> **tmp_v0 ,
1347 std::complex<double> **tmp_v1,
1350 int mask1, state1, origin, one = 1;
1351 long int idim_max_buf, j;
1353 std::complex<double> trans;
1355 mask1 = (int)X->
Def.
Tpow[org_isite1];
1357 state1 = (origin & mask1)/mask1;
1359 if(state1 == org_ispin2){
1370 SendRecv_cv(origin, idim_max*nstate, idim_max_buf*nstate, &tmp_v1[1][0], &
v1buf[1][0]);
1372 #pragma omp parallel for default(none) private(j, tmp_off) \ 1373 firstprivate(idim_max_buf, trans, X, list_1buf_org, list_2_1, list_2_2) \ 1374 shared(v1buf, tmp_v0,nstate,one) 1375 for (j = 1; j <= idim_max_buf; j++) {
1377 zaxpy_(&nstate, &trans, &
v1buf[j][0], &one, &tmp_v0[tmp_off][0], &one);
1388 std::complex<double> tmp_trans,
1390 int nstate, std::complex<double> **tmp_v0 ,
1391 std::complex<double> **tmp_v1
1394 mask1 = (int)X->
Def.
Tpow[org_isite1];
1395 ibit1 = (((
long int)
myrank& mask1)/mask1)^(1-org_ispin1);
1407 std::complex<double> tmp_trans,
1409 int nstate, std::complex<double> **tmp_v0 ,
1410 std::complex<double> **tmp_v1
1414 mask1 = (int)X->
Def.
Tpow[org_isite1];
1415 ibit1 = (((
long int)
myrank& mask1) / mask1) ^ (1 - org_ispin1);
struct DefineList Def
Definision of system (Hamiltonian) etc.
void X_GC_child_AisCis_GeneralSpin_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)
Compute term in the grandcanonical general spin system when both site is in the inter process region...
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 X_child_CisAit_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, std::complex< double > tmp_trans, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, long int idim_max)
Compute term in the canonical general spin system when both site is in the inter process region...
std::complex< double > ** v1buf
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.
void zaxpy_long(long int n, std::complex< double > a, std::complex< double > *x, std::complex< double > *y)
Wrapper of zaxpy.
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...
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...
void X_GC_child_CisAis_GeneralSpin_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)
Compute term in the grandcanonical general spin system when both site is in the inter process region...
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...
int mode
multiply or expectation value.
void X_GC_child_CisAit_GeneralSpin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, std::complex< double > tmp_trans, 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...
long int irght
Used for Ogata-Lin ???
void X_child_CisAit_spin_MPIdouble(int org_isite1, int org_ispin2, std::complex< double > tmp_trans, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1, long int idim_max)
Hopping term in Spin + Canonical for CalcSpectrum When both site1 and site2 are in the inter process ...
int ** InterAll_OffDiagonal
[DefineList::NinterAll_OffDiagonal][8] Interacted quartet
long int SendRecv_i(int origin, long int isend)
Wrapper of MPI_Sendrecv for long integer number.
void GC_child_CisAitCjuAju_spin_MPIdouble(long int i_int, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Wrapper for calculating CisAitCjuAju term in Spin model + GC When both site1 and site2 are in the int...
void GC_child_CisAitCiuAiv_spin_MPIsingle(long int i_int, 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...
long int ilft
Used for Ogata-Lin ???
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 GC_child_CisAisCjuAjv_spin_MPIsingle(long int i_int, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Wrapper for CisAisCjuAjv term in Spin model + GC When only site2 is in the inter process region...
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 GetOffComp(long int *_list_2_1, long int *_list_2_2, long int _ibit, const long int _irght, const long int _ilft, const long int _ihfbit, long int *_ioffComp)
function of getting off-diagonal component
long int ihfbit
Used for Ogata-Lin ???
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.
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.
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 SendRecv_cv(int origin, long int nMsgS, long int nMsgR, std::complex< double > *vecs, std::complex< double > *vecr)
Wrapper of MPI_Sendrecv for std::complex<double> number. When we pass a message longer than 2^31-1 (m...
void GC_child_CisAitCiuAiv_spin_MPIdouble(long int i_int, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Exchange and Pairlifting term in Spin model + GC When both site1 and site2 are in the inter process r...
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...
void GC_child_CisAitCjuAju_spin_MPIsingle(long int i_int, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Wrapper for CisAisCjuAjv term in Spin model + GC When only site2 is in the inter process region...
std::complex< double > * ParaInterAll_OffDiagonal
[DefineList::NInterAll_OffDiagonal] Coupling constant of off-diagonal inter-all term. malloc in setmem_def().
void X_GC_child_CisAit_spin_MPIdouble(int org_isite1, int org_ispin1, int org_ispin2, 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 * SiteToBit
[DefineList::NsiteMPI] Similar to DefineList::Tpow. For general spin.
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...
int X_SpinGC_CisAit(long int j, long int is1_spin, long int sigma2, long int *tmp_off)
Compute index of final wavefunction by term (grandcanonical).
void SendRecv_iv(int origin, long int nMsgS, long int nMsgR, long int *vecs, long int *vecr)
Wrapper of MPI_Sendrecv for long integer number. When we pass a message longer than 2^31-1 (max of in...
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...
void X_GC_child_AisCis_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.
void GC_child_CisAisCjuAjv_spin_MPIdouble(long int i_int, struct BindStruct *X, int nstate, std::complex< double > **tmp_v0, std::complex< double > **tmp_v1)
Wrapper for calculating CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the int...
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...
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.
long int sdim
Dimension for Ogata-Lin ???
long int idim_max
The dimension of the Hilbert space of this process.
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...