24 #include "mltplyCommon.h"    26 #include "wrapperMPI.h"    27 #include "mltplyMPISpin.h"    28 #include "mltplyMPISpinCore.h"    36   unsigned long int i_int,
    38   double complex *tmp_v0,
    39   double complex *tmp_v1
    42   double complex dam_pr = 0;
    44     (
int)
X->Def.InterAll_OffDiagonal[i_int][0], (
int)
X->Def.InterAll_OffDiagonal[i_int][1],
    45     (
int)
X->Def.InterAll_OffDiagonal[i_int][3], (
int)
X->Def.InterAll_OffDiagonal[i_int][4],
    46     (
int)
X->Def.InterAll_OffDiagonal[i_int][5], (
int)
X->Def.InterAll_OffDiagonal[i_int][7],
    47     X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
    52   X->Large.prdct += dam_pr;
    70   double complex *tmp_v0,
    71   double complex *tmp_v1
    74   int mask1, mask2, state1, state2, ierr, origin;
    75   unsigned long int idim_max_buf, j, ioff;
    77   double complex Jint, dmv, dam_pr;
    79   mask1 = (int)
X->Def.Tpow[org_isite1];
    80   mask2 = (
int)
X->Def.Tpow[org_isite3];
    81   origin = 
myrank ^ (mask1 + mask2);
    83   state1 = (origin & mask1) / mask1;
    84   state2 = (origin & mask2) / mask2;
    86   if (state1 == org_ispin2 && state2 == org_ispin4) {
    89   else if (state1 == org_ispin1 && state2 == org_ispin3) {
    91     if (
X->Large.mode == M_CORR || 
X->Large.mode == M_CALCSPEC) {
    97   ierr = MPI_Sendrecv(&
X->Check.idim_max, 1, MPI_UNSIGNED_LONG, origin, 0,
    98                       &idim_max_buf,      1, MPI_UNSIGNED_LONG, origin, 0, MPI_COMM_WORLD, &statusMPI);
   100   ierr = MPI_Sendrecv(
list_1, 
X->Check.idim_max + 1, MPI_UNSIGNED_LONG, origin, 0,
   101                       list_1buf,   idim_max_buf + 1, MPI_UNSIGNED_LONG, origin, 0, MPI_COMM_WORLD, &statusMPI);
   103   ierr = MPI_Sendrecv(tmp_v1, 
X->Check.idim_max + 1, MPI_DOUBLE_COMPLEX, origin, 0,
   104                        v1buf,      idim_max_buf + 1, MPI_DOUBLE_COMPLEX, origin, 0, MPI_COMM_WORLD, &statusMPI);
   108   if (
X->Large.mode == M_MLTPLY || 
X->Large.mode == M_CALCSPEC) {
   109 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, dmv, ioff) \   110   firstprivate(idim_max_buf, Jint, X) shared(list_2_1, list_2_2, list_1buf, v1buf, tmp_v1, tmp_v0)   111     for (j = 1; j <= idim_max_buf; j++) {
   113         X->Large.irght, 
X->Large.ilft, 
X->Large.ihfbit, &ioff);
   114       dmv = Jint * 
v1buf[j];
   116       dam_pr += conj(tmp_v1[ioff]) * dmv;
   120 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, dmv, ioff) \   121   firstprivate(idim_max_buf, Jint, X) shared(list_2_1, list_2_2, list_1buf, v1buf, tmp_v1, tmp_v0)   122     for (j = 1; j <= idim_max_buf; j++) {
   124         X->Large.irght, 
X->Large.ilft, 
X->Large.ihfbit, &ioff);
   125       dmv = Jint * 
v1buf[j];
   126       dam_pr += conj(tmp_v1[ioff]) * dmv;
   144   double complex *tmp_v0,
   145   double complex *tmp_v1
   148   int mask1, mask2, num1_up, num2_up, ierr, origin;
   149   unsigned long int idim_max_buf, j, ioff, ibit_tmp;
   150   MPI_Status statusMPI;
   151   double complex dmv, dam_pr;
   153   mask1 = (int)
X->Def.Tpow[org_isite1];
   154   mask2 = (
int)
X->Def.Tpow[org_isite3];
   155   if (mask1 == mask2) origin = 
myrank ^ mask1;
   156   else origin = 
myrank ^ (mask1 + mask2);
   157   num1_up = (origin & mask1) / mask1;
   158   num2_up = (origin & mask2) / mask2;
   160   ibit_tmp = (num1_up) ^ (num2_up);
   161   if (ibit_tmp == 0) 
return 0;
   163   ierr = MPI_Sendrecv(&
X->Check.idim_max, 1, MPI_UNSIGNED_LONG, origin, 0,
   164                       &idim_max_buf,      1, MPI_UNSIGNED_LONG, origin, 0,
   165                       MPI_COMM_WORLD, &statusMPI);
   167   ierr = MPI_Sendrecv(
list_1, 
X->Check.idim_max + 1, MPI_UNSIGNED_LONG, origin, 0,
   168                       list_1buf,   idim_max_buf + 1, MPI_UNSIGNED_LONG, origin, 0,
   169                       MPI_COMM_WORLD, &statusMPI);
   171   ierr = MPI_Sendrecv(tmp_v1, 
X->Check.idim_max + 1, MPI_DOUBLE_COMPLEX, origin, 0,
   172                       v1buf,       idim_max_buf + 1, MPI_DOUBLE_COMPLEX, origin, 0,
   173                       MPI_COMM_WORLD, &statusMPI);
   177 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, dmv, ioff) \   178     firstprivate(idim_max_buf,  X) shared(list_2_1, list_2_2, list_1buf, v1buf, tmp_v1, tmp_v0)   179   for (j = 1; j <= idim_max_buf; j++) {
   181       X->Large.irght, 
X->Large.ilft, 
X->Large.ihfbit, &ioff);
   182     dmv = 0.5 * 
v1buf[j];
   183     dam_pr += conj(tmp_v1[ioff]) * dmv;
   197   unsigned long int i_int,
   199   double complex *tmp_v0,
   200   double complex *tmp_v1
   203   double complex dam_pr = 0;
   206     (
int)
X->Def.InterAll_OffDiagonal[i_int][0], (
int)
X->Def.InterAll_OffDiagonal[i_int][1], 
   207     (
int)
X->Def.InterAll_OffDiagonal[i_int][3], (
int)
X->Def.InterAll_OffDiagonal[i_int][4],
   208     (
int)
X->Def.InterAll_OffDiagonal[i_int][5], (
int)
X->Def.InterAll_OffDiagonal[i_int][7],
   209     X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   214   X->Large.prdct += dam_pr;
   229   double complex tmp_J,
   231   double complex *tmp_v0,
   232   double complex *tmp_v1
   235   int mask2, state2, ierr, origin;
   236   unsigned long int mask1, idim_max_buf, j, ioff, state1, jreal, state1check;
   237   MPI_Status statusMPI;
   238   double complex Jint, dmv, dam_pr;
   242   mask2 = (int)
X->Def.Tpow[org_isite3];
   244   state2 = (origin & mask2) / mask2;
   246   if (state2 == org_ispin4) {
   247     state1check = (
unsigned long int) org_ispin2;
   250   else if (state2 == org_ispin3) {
   251     state1check = (
unsigned long int) org_ispin1;
   253     if (
X->Large.mode == M_CORR || 
X->Large.mode == M_CALCSPEC) {
   259   ierr = MPI_Sendrecv(&
X->Check.idim_max, 1, MPI_UNSIGNED_LONG, origin, 0,
   260                       &idim_max_buf,      1, MPI_UNSIGNED_LONG, origin, 0,
   261                       MPI_COMM_WORLD, &statusMPI);
   263   ierr = MPI_Sendrecv(
list_1, 
X->Check.idim_max + 1, MPI_UNSIGNED_LONG, origin, 0,
   264                       list_1buf,   idim_max_buf + 1, MPI_UNSIGNED_LONG, origin, 0,
   265                       MPI_COMM_WORLD, &statusMPI);
   267   ierr = MPI_Sendrecv(tmp_v1, 
X->Check.idim_max + 1, MPI_DOUBLE_COMPLEX, origin, 0,
   268                       v1buf,       idim_max_buf + 1, MPI_DOUBLE_COMPLEX, origin, 0,
   269                       MPI_COMM_WORLD, &statusMPI);
   274   mask1 = 
X->Def.Tpow[org_isite1];
   277   if (
X->Large.mode == M_MLTPLY || 
X->Large.mode == M_CALCSPEC) {
   278 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, dmv, ioff, jreal, state1) \   279 firstprivate(idim_max_buf, Jint, X, mask1, state1check, org_isite1) \   280 shared(list_2_1, list_2_2, list_1buf, v1buf, tmp_v1, tmp_v0)   281     for (j = 1; j <= idim_max_buf; j++) {
   285       state1 = (jreal & mask1) / mask1;
   286       if (state1 == state1check) {
   288           X->Large.irght, 
X->Large.ilft, 
X->Large.ihfbit, &ioff);
   290         dmv = Jint * 
v1buf[j];
   292         dam_pr += conj(tmp_v1[ioff]) * dmv;
   296   else if (
X->Large.mode == M_TOTALS) {
   297 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, dmv, ioff, jreal, state1) \   298 firstprivate(idim_max_buf, Jint, X, mask1, state1check, org_isite1) \   299 shared(list_2_1, list_2_2, list_1buf, v1buf, tmp_v1, tmp_v0)   300     for (j = 1; j <= idim_max_buf; j++) {
   304       state1 = (jreal & mask1) / mask1;
   305       if (state1 == state1check) {
   307           X->Large.irght, 
X->Large.ilft, 
X->Large.ihfbit, &ioff);
   309         dmv = Jint * 
v1buf[j];
   310         dmv = 0.5 * 
v1buf[j];
   311         dam_pr += conj(tmp_v1[ioff]) * dmv;
   316 #pragma omp parallel for default(none) reduction(+:dam_pr) private(j, dmv, ioff, jreal, state1) \   317 firstprivate(idim_max_buf, Jint, X, mask1, state1check, org_isite1) \   318 shared(list_2_1, list_2_2, list_1buf, v1buf, tmp_v1, tmp_v0)   319     for (j = 1; j <= idim_max_buf; j++) {
   323       state1 = (jreal & mask1) / mask1;
   324       if (state1 == state1check) {
   326           X->Large.irght, 
X->Large.ilft, 
X->Large.ihfbit, &ioff);
   327         dmv = Jint * 
v1buf[j];
   328         dam_pr += conj(tmp_v1[ioff]) * dmv;
   343   unsigned long int i_int,
   345   double complex *tmp_v0,
   346   double complex *tmp_v1
   348   if (
X->Def.InterAll_OffDiagonal[i_int][1] == 
X->Def.InterAll_OffDiagonal[i_int][3] &&
   349       X->Def.InterAll_OffDiagonal[i_int][5] != 
X->Def.InterAll_OffDiagonal[i_int][7]) {
   352   else if (
X->Def.InterAll_OffDiagonal[i_int][1] != 
X->Def.InterAll_OffDiagonal[i_int][3] &&
   353            X->Def.InterAll_OffDiagonal[i_int][5] == 
X->Def.InterAll_OffDiagonal[i_int][7]) {
   366   unsigned long int i_int,
   368   double complex *tmp_v0,
   369   double complex *tmp_v1
   371   if (
X->Def.InterAll_OffDiagonal[i_int][1] == 
X->Def.InterAll_OffDiagonal[i_int][3] &&
   372       X->Def.InterAll_OffDiagonal[i_int][5] != 
X->Def.InterAll_OffDiagonal[i_int][7]) {
   375   else if (
X->Def.InterAll_OffDiagonal[i_int][1] != 
X->Def.InterAll_OffDiagonal[i_int][3] &&
   376            X->Def.InterAll_OffDiagonal[i_int][5] == 
X->Def.InterAll_OffDiagonal[i_int][7]) {
   389   unsigned long int i_int,
   391   double complex *tmp_v0,
   392   double complex *tmp_v1
   395   double complex dam_pr;
   398   if (
X->Def.InterAll_OffDiagonal[i_int][1] == 
X->Def.InterAll_OffDiagonal[i_int][3] &&
   399       X->Def.InterAll_OffDiagonal[i_int][5] != 
X->Def.InterAll_OffDiagonal[i_int][7]) {
   401       X->Def.InterAll_OffDiagonal[i_int][0], 
X->Def.InterAll_OffDiagonal[i_int][1],
   402       X->Def.InterAll_OffDiagonal[i_int][4], 
X->Def.InterAll_OffDiagonal[i_int][5],
   403       X->Def.InterAll_OffDiagonal[i_int][7], 
X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   405   else if (
X->Def.InterAll_OffDiagonal[i_int][1] != 
X->Def.InterAll_OffDiagonal[i_int][3] &&
   406            X->Def.InterAll_OffDiagonal[i_int][5] == 
X->Def.InterAll_OffDiagonal[i_int][7]) {
   408       X->Def.InterAll_OffDiagonal[i_int][0], 
X->Def.InterAll_OffDiagonal[i_int][1],
   409       X->Def.InterAll_OffDiagonal[i_int][3], 
X->Def.InterAll_OffDiagonal[i_int][4],
   410       X->Def.InterAll_OffDiagonal[i_int][5], 
X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   414       X->Def.InterAll_OffDiagonal[i_int][0], 
X->Def.InterAll_OffDiagonal[i_int][1], 
   415       X->Def.InterAll_OffDiagonal[i_int][3], 
X->Def.InterAll_OffDiagonal[i_int][4],
   416       X->Def.InterAll_OffDiagonal[i_int][5], 
X->Def.InterAll_OffDiagonal[i_int][7],
   417       X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   419   X->Large.prdct += dam_pr;
   428   unsigned long int i_int,
   430   double complex *tmp_v0,
   431   double complex *tmp_v1
   434   double complex dam_pr;
   436   if (
X->Def.InterAll_OffDiagonal[i_int][1] == 
X->Def.InterAll_OffDiagonal[i_int][3] &&
   437       X->Def.InterAll_OffDiagonal[i_int][5] != 
X->Def.InterAll_OffDiagonal[i_int][7]) {
   439       X->Def.InterAll_OffDiagonal[i_int][0], 
X->Def.InterAll_OffDiagonal[i_int][1],
   440       X->Def.InterAll_OffDiagonal[i_int][4], 
X->Def.InterAll_OffDiagonal[i_int][5],
   441       X->Def.InterAll_OffDiagonal[i_int][7], 
X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   443   else if (
X->Def.InterAll_OffDiagonal[i_int][1] != 
X->Def.InterAll_OffDiagonal[i_int][3] &&
   444            X->Def.InterAll_OffDiagonal[i_int][5] == 
X->Def.InterAll_OffDiagonal[i_int][7]) {
   446       X->Def.InterAll_OffDiagonal[i_int][0], 
X->Def.InterAll_OffDiagonal[i_int][1], 
   447       X->Def.InterAll_OffDiagonal[i_int][3], 
X->Def.InterAll_OffDiagonal[i_int][4],
   448       X->Def.InterAll_OffDiagonal[i_int][5], 
X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   452       X->Def.InterAll_OffDiagonal[i_int][0], 
X->Def.InterAll_OffDiagonal[i_int][1], 
   453       X->Def.InterAll_OffDiagonal[i_int][3], 
X->Def.InterAll_OffDiagonal[i_int][4],
   454       X->Def.InterAll_OffDiagonal[i_int][5], 
X->Def.InterAll_OffDiagonal[i_int][7],
   455       X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   458   X->Large.prdct += dam_pr;
   467   unsigned long int i_int,
   469   double complex *tmp_v0,
   470   double complex *tmp_v1
   472     double complex dam_pr;
   474       X->Def.InterAll_OffDiagonal[i_int][0], 
X->Def.InterAll_OffDiagonal[i_int][1], 
   475       X->Def.InterAll_OffDiagonal[i_int][3], 
X->Def.InterAll_OffDiagonal[i_int][4],
   476       X->Def.InterAll_OffDiagonal[i_int][5], 
X->Def.InterAll_OffDiagonal[i_int][7],
   477       X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   478     X->Large.prdct += dam_pr;
   487   unsigned long int i_int,
   489   double complex *tmp_v0,
   490   double complex *tmp_v1
   492   double complex dam_pr;
   495     X->Def.InterAll_OffDiagonal[i_int][0], 
X->Def.InterAll_OffDiagonal[i_int][1],
   496     X->Def.InterAll_OffDiagonal[i_int][3], 
X->Def.InterAll_OffDiagonal[i_int][4],
   497     X->Def.InterAll_OffDiagonal[i_int][5], 
X->Def.InterAll_OffDiagonal[i_int][7],
   498     X->Def.ParaInterAll_OffDiagonal[i_int], 
X, tmp_v0, tmp_v1);
   500   X->Large.prdct += dam_pr;
 void GC_child_CisAitCiuAiv_spin_MPIdouble(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Exchange and Pairlifting term in Spin model + GC When both site1 and site2 are in the inter process r...
void exitMPI(int errorcode)
MPI Abortation wrapper. 
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...
void GC_child_general_int_spin_MPIsingle(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
General interaction term in the Spin model + GC When both site1 and site2 are in the inter process re...
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. 
void GC_child_CisAitCiuAiv_spin_MPIsingle(unsigned long int i_int, 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...
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...
long unsigned int * list_1buf
void GC_child_CisAisCjuAjv_spin_MPIsingle(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Wrapper for CisAisCjuAjv term in Spin model + GC When only site2 is in the inter process region...
void GC_child_CisAisCjuAjv_spin_MPIdouble(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Wrapper for calculating CisAisCjuAjv term in Spin model + GC When both site1 and site2 are in the int...
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...
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...
void child_general_int_GeneralSpin_MPIdouble(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
General interaction term in the Spin model + GC When both site1 and site2 are in the inter process re...
void GC_child_CisAitCjuAju_spin_MPIsingle(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Wrapper for CisAisCjuAjv term in Spin model + GC When only site2 is in the inter process region...
long unsigned int * list_2_1
int GetOffComp(long unsigned int *_list_2_1, long unsigned int *_list_2_2, long unsigned int _ibit, const long unsigned int _irght, const long unsigned int _ilft, const long unsigned int _ihfbit, long unsigned int *_ioffComp)
function of getting off-diagonal component 
void GC_child_general_int_spin_MPIdouble(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
General interaction term in the Spin model + GC When both site1 and site2 are in the inter process re...
void child_general_int_spin_MPIdouble(unsigned long int i_int, 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_child_general_int_spin_TotalS_MPIdouble(int org_isite1, int org_isite3, 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. 
long unsigned int * list_1
void GC_child_CisAitCjuAju_spin_MPIdouble(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Wrapper for calculating CisAitCjuAju term in Spin model + GC When both site1 and site2 are in the int...
void GC_child_general_int_GeneralSpin_MPIsingle(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
General interaction term in the Spin model + GC When both site1 and site2 are in the inter process re...
long unsigned int * list_2_2
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_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...
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)
void child_general_int_spin_MPIsingle(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
Exchange term in Spin model When only site2 is in the inter process region. 
int myrank
Process ID, defined in InitializeMPI() 
void child_general_int_GeneralSpin_MPIsingle(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
General interaction term in the Spin model + GC When both site1 and site2 are in the inter process re...
void GC_child_general_int_GeneralSpin_MPIdouble(unsigned long int i_int, struct BindStruct *X, double complex *tmp_v0, double complex *tmp_v1)
General interaction term in the Spin model + GC When both site1 and site2 are in the inter process re...