Skip to content

Commit

Permalink
Merge pull request #65 from issp-center-dev/revert-10-lanczos-fix-rebase
Browse files Browse the repository at this point in the history
Revert "Rebased "Separating Direct and Indirect Measurement of Two Body Green Function""
tmisawa authored Oct 1, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
2 parents e7fc6d5 + 5474dd4 commit 452dbb2
Showing 10 changed files with 171 additions and 270 deletions.
2 changes: 1 addition & 1 deletion src/mVMC/average.c
Original file line number Diff line number Diff line change
@@ -230,7 +230,7 @@ void WeightAverageGreenFunc(MPI_Comm comm) {
}
if(NLanczosMode>1){
/* QCisAjsQ and QCisAjsCktAltQ */
n = NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*(NCisAjsCktAltDC+NCisAjsCktAlt);
n = NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*NCisAjsCktAltDC;
if(AllComplexFlag==0){
vec_real=QCisAjsQ_real;
weightAverageReduce_real(n,vec_real,comm);
7 changes: 1 addition & 6 deletions src/mVMC/calgrn.c
Original file line number Diff line number Diff line change
@@ -81,7 +81,7 @@ void CalculateGreenFunc(const double w, const double complex ip, int *eleIdx, in

tmp = GreenFunc2(ri,rj,rk,rl,s,t,ip,myEleIdx,eleCfg,myEleNum,eleProjCnt,
myProjCntNew,myBuffer);
LocalCisAjsCktAltDC[idx] = tmp;
PhysCisAjsCktAltDC[idx] += w*tmp;
}

#pragma omp master
@@ -92,11 +92,6 @@ void CalculateGreenFunc(const double w, const double complex ip, int *eleIdx, in
PhysCisAjs[idx] += w*LocalCisAjs[idx];
}

#pragma omp for private(idx) nowait
for (idx=0;idx<NCisAjsCktAltDC;idx++) {
PhysCisAjsCktAltDC[idx] += w*LocalCisAjsCktAltDC[idx];
}

#pragma omp master
{StopTimer(52);StartTimer(53);}

11 changes: 3 additions & 8 deletions src/mVMC/include/global.h
Original file line number Diff line number Diff line change
@@ -142,9 +142,10 @@ double *ParaQPOptTrans;

/* for Green functions */
int NCisAjs, **CisAjsIdx; /* [NCisAjs][3] */
int NCisAjsCktAlt, **CisAjsCktAltIdx; /* [NCisAjsCktAlt][2] */
int NCisAjsCktAlt, **CisAjsCktAltIdx; /* [NCisAjsCktAlt][8] */
int NCisAjsCktAltDC, **CisAjsCktAltDCIdx; /* [NCisAjsCktAltDC][6] */
int **iOneBodyGIdx; /* For GF2 indirect measurement */
int NCisAjsLz, **CisAjsLzIdx, **iOneBodyGIdx; /* For Lanczos method only for rank 0*/
int NCisAjsCktAltLz, **CisAjsCktAltLzIdx;

/* Optimization flag */
int *OptFlag; /* [NPara] 1: optimized, 0 or 2: fixed */
@@ -268,7 +269,6 @@ double complex *PhysCisAjs; /* [NCisAjs] */
double complex *PhysCisAjsCktAlt; /* [NCisAjsCktAlt] */
double complex *PhysCisAjsCktAltDC; /* [NCisAjsCktAltDC] */
double complex *LocalCisAjs; /* [NCisAjs] */
double complex *LocalCisAjsCktAltDC; /* [NCisAjsCktAltDC] */

double complex Sztot,Sztot2; /* <Sz>,<Sz^2> */

@@ -286,13 +286,10 @@ double *LSLQ_real; /* [NLSHam][NLSHam]*/ //TBC

double complex *QCisAjsQ; /* QCisAjsQ[NLSHam][NLSHam][NCisAjs]*/ //TBC
double complex *QCisAjsCktAltQ; /* QCisAjsCktAltQ[NLSHam][NLSHam][NCisAjsCktAlt]*/ //TBC
double complex *QCisAjsCktAltQDC; /* QCisAjsCktAltQ[NLSHam][NLSHam][NCisAjsCktAlt]
DC Lanczos Calculation */
double complex *LSLCisAjs; /* [NLSHam][NCisAjs]*/ //TBC

double *QCisAjsQ_real; /* QCisAjsQ[NLSHam][NLSHam][NCisAjs]*/ //TBC
double *QCisAjsCktAltQ_real; /* QCisAjsCktAltQ[NLSHam][NLSHam][NCisAjsCktAlt]*/ //TBC
double *QCisAjsCktAltQDC_real; /* QCisAjsCktAltQ[NLSHam][NLSHam][NCisAjsCktAlt]*/
double *LSLCisAjs_real; /* [NLSHam][NCisAjs]*/ //TBC

/***** Output File *****/
@@ -308,10 +305,8 @@ FILE *FileLS;
FILE *FileLSQQQQ;
FILE *FileLSQCisAjsQ;
FILE *FileLSQCisAjsCktAltQ;
FILE *FileLSQCisAjsCktAltQ;
FILE *FileLSCisAjs;
FILE *FileLSCisAjsCktAlt;
FILE *FileLSCisAjsCktAltDC;


/* FILE *FileTimerList; */
14 changes: 4 additions & 10 deletions src/mVMC/include/physcal_lanczos.h
Original file line number Diff line number Diff line change
@@ -7,48 +7,42 @@ int PhysCalLanczos_real(
double *_QQQQ_real,
double *_QCisAjsQ_real,
double *_QCisAjsCktAltQ_real,
double *_QCisAjsCktAltQDC_real,
const int _nLSHam,
const int _Ns,
const int _nCisAjs,
const int _nCisAjsLz,
int **_iOneBodyGIdx,
int **_CisAjsLzIdx,
const int _nCisAjsCktAlt,
const int _nCisAjsCktAltDC,
int **_CisAjsCktAltDC,
int **_CisAjsCktAlt,
const int _NLanczosmode,
FILE *_FileLS,
FILE *_FileLSQQQQ,
FILE *_FileLSQCisAjsQ,
FILE *_FileLSQCisAjsCktAltQ,
FILE *_FileLSCisAjs,
FILE *_FileLSCisAjsCktAlt,
FILE *_FileLSCisAjsCktAltDC
FILE *_FileLSCisAjsCktAlt
);

int PhysCalLanczos_fcmp(
double complex* _QQQQ,
double complex* _QCisAjsQ,
double complex* _QCisAjsCktAltQ,
double complex* _QCisAjsCktAltQDC,
const int _nLSHam,
const int _Ns,
const int _nCisAjs,
const int _nCisAjsLz,
int **_iOneBodyGIdx,
int **_CisAjsLzIdx,
const int _nCisAjsCktAlt,
const int _nCisAjsCktAltDC,
int **_CisAjsCktAltDC,
int **_CisAjsCktAlt,
const int _NLanczosmode,
FILE *_FileLS,
FILE *_FileLSQQQQ,
FILE *_FileLSQCisAjsQ,
FILE *_FileLSQCisAjsCktAltQ,
FILE *_FileLSCisAjs,
FILE *_FileLSCisAjsCktAlt,
FILE *_FileLSCisAjsCktAltDC
FILE *_FileLSCisAjsCktAlt
);
#endif

9 changes: 1 addition & 8 deletions src/mVMC/initfile.c
Original file line number Diff line number Diff line change
@@ -126,15 +126,9 @@ void InitFilePhysCal(int i, int rank) {
CDataFileHead, idx);
FileLSCisAjs = fopen(fileName, "w");

// CACA
sprintf(fileName, "%s_ls_cisajscktaltex_%03d.dat",
CDataFileHead, idx);
FileLSCisAjsCktAlt = fopen(fileName, "w");

// CACADC
sprintf(fileName, "%s_ls_cisajscktalt_%03d.dat",
CDataFileHead, idx);
FileLSCisAjsCktAltDC = fopen(fileName, "w");
FileLSCisAjsCktAlt = fopen(fileName, "w");
}
}

@@ -182,7 +176,6 @@ void CloseFilePhysCal(int rank) {
#endif
fclose(FileLSCisAjs);
fclose(FileLSCisAjsCktAlt);
fclose(FileLSCisAjsCktAltDC);
}
}

59 changes: 15 additions & 44 deletions src/mVMC/physcal_lanczos.c
Original file line number Diff line number Diff line change
@@ -29,24 +29,21 @@ int PhysCalLanczos_real
double *_QQQQ_real,
double *_QCisAjsQ_real,
double *_QCisAjsCktAltQ_real,
double *_QCisAjsCktAltQDC_real,
const int _nLSHam,
const int _Ns,
const int _nCisAjs,
const int _nCisAjsLz,
int **_iOneBodyGIdx,
int **_CisAjsLzIdx,
const int _nCisAjsCktAlt,
const int _nCisAjsCktAltDC,
int **_CisAjsCktAltDC,
int **_CisAjsCktAlt,
const int _NLanczosmode,
FILE *_FileLS,
FILE *_FileLSQQQQ,
FILE *_FileLSQCisAjsQ,
FILE *_FileLSQCisAjsCktAltQ,
FILE *_FileLSCisAjs,
FILE *_FileLSCisAjsCktAlt,
FILE *_FileLSCisAjsCktAltDC
FILE *_FileLSCisAjsCktAlt
)
{
int i=0;
@@ -56,10 +53,8 @@ int PhysCalLanczos_real
double alpha_m, ene_m, ene_vm;
double *LS_CisAjs_real;
double *LS_CisAjsCktAlt_real;
double *LS_CisAjsCktAltDC_real;
LS_CisAjs_real = (double*)malloc(sizeof(double)*_nCisAjs);
LS_CisAjsCktAlt_real = (double*)malloc(sizeof(double)*_nCisAjsCktAlt);
LS_CisAjsCktAltDC_real = (double*)malloc(sizeof(double)*_nCisAjsCktAltDC);

CalculateEne(_QQQQ_real[2], _QQQQ_real[3], _QQQQ_real[10], _QQQQ_real[11], _QQQQ_real[15],
&alpha_p, &ene_p, &ene_vp, &alpha_m, &ene_m, &ene_vm);
@@ -119,55 +114,43 @@ int PhysCalLanczos_real
fprintf(_FileLSQCisAjsCktAltQ, "\n");
#endif

CalculatePhysVal_real(_QQQQ_real[2], _QQQQ_real[3],
alpha, _QCisAjsCktAltQDC_real, _nCisAjsCktAltDC,
_nLSHam, LS_CisAjsCktAltDC_real);
/* zvo_ls_cisajscktalt.dat */
for (i = 0; i < _nCisAjsCktAltDC; i++) {
fprintf(_FileLSCisAjsCktAltDC, "%d %d %d %d %d %d %d %d % .18e 0.0\n",
_CisAjsCktAltDC[i][0], _CisAjsCktAltDC[i][1], _CisAjsCktAltDC[i][2], _CisAjsCktAltDC[i][3],
_CisAjsCktAltDC[i][4], _CisAjsCktAltDC[i][5], _CisAjsCktAltDC[i][6], _CisAjsCktAltDC[i][7],
LS_CisAjsCktAltDC_real[i]);
}
fprintf(_FileLSCisAjsCktAltDC, "\n");

CalculatePhysVal_real(_QQQQ_real[2], _QQQQ_real[3],
alpha, _QCisAjsCktAltQ_real, _nCisAjsCktAlt,
_nLSHam, LS_CisAjsCktAlt_real);
/* zvo_ls_cisajscktaltex.dat */
/* zvo_ls_cisajscktalt.dat */
for (i = 0; i < _nCisAjsCktAlt; i++) {
fprintf(_FileLSCisAjsCktAlt, "% .18e 0.0 ", LS_CisAjsCktAlt_real[i]); // LS_CisAjsCktAlt_real
fprintf(_FileLSCisAjsCktAlt, "%d %d %d %d %d %d %d %d % .18e 0.0\n",
_CisAjsCktAlt[i][0], _CisAjsCktAlt[i][1], _CisAjsCktAlt[i][2], _CisAjsCktAlt[i][3],
_CisAjsCktAlt[i][4], _CisAjsCktAlt[i][5], _CisAjsCktAlt[i][6], _CisAjsCktAlt[i][7],
LS_CisAjsCktAlt_real[i]);

}
fprintf(_FileLSCisAjsCktAlt, "\n");
}
free(LS_CisAjs_real);
free(LS_CisAjsCktAlt_real);
free(LS_CisAjsCktAltDC_real);
return 0;
}

int PhysCalLanczos_fcmp(
double complex* _QQQQ,
double complex* _QCisAjsQ,
double complex* _QCisAjsCktAltQ,
double complex* _QCisAjsCktAltQDC,
const int _nLSHam,
const int _Ns,
const int _nCisAjs,
const int _nCisAjsLz,
int **_iOneBodyGIdx,
int **_CisAjsLzIdx,
const int _nCisAjsCktAlt,
const int _nCisAjsCktAltDC,
int **_CisAjsCktAltDC,
int **_CisAjsCktAlt,
const int _NLanczosmode,
FILE *_FileLS,
FILE *_FileLSQQQQ,
FILE *_FileLSQCisAjsQ,
FILE *_FileLSQCisAjsCktAltQ,
FILE *_FileLSCisAjs,
FILE *_FileLSCisAjsCktAlt,
FILE *_FileLSCisAjsCktAltDC
FILE *_FileLSCisAjsCktAlt
)
{
int i=0;
@@ -177,10 +160,8 @@ int PhysCalLanczos_fcmp(
double alpha_m, ene_m, ene_vm;
double complex*LS_CisAjs;
double complex*LS_CisAjsCktAlt;
double complex*LS_CisAjsCktAltDC;
LS_CisAjs = (double complex*)malloc(sizeof(double complex)*_nCisAjs);
LS_CisAjsCktAlt = (double complex*)malloc(sizeof(double complex)*_nCisAjsCktAlt);
LS_CisAjsCktAltDC = (double complex*)malloc(sizeof(double complex)*_nCisAjsCktAltDC);

/* zvo_ls.dat */
if(!CalculateEne(creal(_QQQQ[2]),creal(_QQQQ[3]),
@@ -240,30 +221,20 @@ int PhysCalLanczos_fcmp(
}
fprintf(_FileLSQCisAjsCktAltQ, "\n");
#endif
CalculatePhysVal_fcmp(_QQQQ[2], _QQQQ[3],
alpha, _QCisAjsCktAltQDC, _nCisAjsCktAltDC,
_nLSHam, LS_CisAjsCktAltDC);
/* zvo_ls_cisajscktalt.dat */
for (i = 0; i < _nCisAjsCktAltDC; i++) {
fprintf(_FileLSCisAjsCktAltDC, "%d %d %d %d %d %d %d %d % .18e % .18e\n",
_CisAjsCktAltDC[i][0], _CisAjsCktAltDC[i][1], _CisAjsCktAltDC[i][2], _CisAjsCktAltDC[i][3],
_CisAjsCktAltDC[i][4], _CisAjsCktAltDC[i][5], _CisAjsCktAltDC[i][6], _CisAjsCktAltDC[i][7],
creal(LS_CisAjsCktAltDC[i]), cimag(LS_CisAjsCktAltDC[i]));
}
fprintf(_FileLSCisAjsCktAltDC, "\n");

CalculatePhysVal_fcmp(_QQQQ[2], _QQQQ[3],
alpha, _QCisAjsCktAltQ, _nCisAjsCktAlt,
_nLSHam, LS_CisAjsCktAlt);
/* zvo_ls_cisajscktaltex.dat */
/* zvo_ls_cisajs.dat */
for (i = 0; i < _nCisAjsCktAlt; i++) {
fprintf(_FileLSCisAjsCktAlt, "% .18e % .18e ", creal(LS_CisAjsCktAlt[i]), cimag(LS_CisAjsCktAlt[i])); // LS_CisAjsCktAlt_real
fprintf(_FileLSCisAjsCktAlt, "%d %d %d %d %d %d %d %d % .18e % .18e\n",
_CisAjsCktAlt[i][0], _CisAjsCktAlt[i][1], _CisAjsCktAlt[i][2], _CisAjsCktAlt[i][3],
_CisAjsCktAlt[i][4], _CisAjsCktAlt[i][5], _CisAjsCktAlt[i][6], _CisAjsCktAlt[i][7],
creal(LS_CisAjsCktAlt[i]), cimag(LS_CisAjsCktAlt[i]));
}
fprintf(_FileLSCisAjsCktAlt, "\n");
}
free(LS_CisAjs);
free(LS_CisAjsCktAlt);
free(LS_CisAjsCktAltDC);
return 0;
}

182 changes: 99 additions & 83 deletions src/mVMC/readdef.c
Original file line number Diff line number Diff line change
@@ -89,10 +89,10 @@ int GetInfoInterAll(FILE *fp, int **ArrayIdx, double complex *ArrayValue,
int GetInfoOptTrans(FILE *fp, int **Array, double *ArrayPara, int *ArrayOpt, int **ArraySgn,
int _iFlagOptTrans, int *iOptCount, int _fidx, int _APFlag, int Nsite, int NArray, char *defname);

int GetInfoTwoBodyG(FILE *fp, int **ArrayIdx, int Nsite, int NArray, char *defname);
int GetInfoTwoBodyG(FILE *fp, int **ArrayIdx, int **ArrayIdxTwoBodyGLz, int **ArrayToIdx, int **ArrayIdxOneBodyG,
int _NLanczosMode, int Nsite, int NArray, char *defname);

int GetInfoTwoBodyGEx(FILE *fp, int **ArrayIdx, int **ArrayToIdx, int **ArrayIdxOneBodyG,
int Nsite, int NArray, char *defname);
int GetInfoTwoBodyGEx(FILE *fp, int **ArrayIdx, int Nsite, int NArray, char *defname);

int GetInfoOrbitalGeneral(FILE *fp, int **Array, int *ArrayOpt, int **ArraySgn, int *iOptCount,
int _fidx, int _iComplexFlag, int _iFlagOrbitalGeneral, int _APFlag, int Nsite, int NArray,
@@ -181,7 +181,7 @@ int JudgeOrbitalMode(int *_iFlgOrbitalGeneral, const int _iFlgOrbitalAP, const i
return iret;
}

int ReadGreen(char *xNameListFile, int Nca, int **caIdx, int Ncacadc, int **cacaIdx, int Ns) {
int ReadGreen(char *xNameListFile, int Nca, int **caIdx, int Ncacadc, int **cacaDCIdx, int Ns) {
FILE *fp;
char defname[D_FileNameMax];
char ctmp[D_FileNameMax];
@@ -217,10 +217,9 @@ int ReadGreen(char *xNameListFile, int Nca, int **caIdx, int Ncacadc, int **caca
/*cisajs.def----------------------------------------*/
if (GetInfoOneBodyG(fp, caIdx, iOneBodyGIdx, 0, Ns, Nca, defname) != 0) return (-1);
break;
case KWTwoBodyGEx:
/*cisajscktalt.def----------------------------------*/
/*load as if it's DC for index rearranging----------*/
if (GetInfoTwoBodyG(fp, cacaIdx, Ns, Ncacadc, defname) != 0) return (-1);
case KWTwoBodyG:
/*cisajscktaltdc.def--------------------------------*/
if (GetInfoTwoBodyG(fp, cacaDCIdx, cacaDCIdx, iOneBodyGIdx, caIdx, 0, Ns, Ncacadc, defname) != 0) return (-1);
break;
default:
break;
@@ -236,34 +235,27 @@ int ReadGreen(char *xNameListFile, int Nca, int **caIdx, int Ncacadc, int **caca
/// \param Ncacadc Number of CisAjsCktAltDC
/// \param Ns Number of sites
/// \return Number of calculation target
int CountOneBodyGForLanczos(char *xNameListFile, int Nca, int Ncacadc, int Ns, int **iFlgOneBodyG) {
int CountOneBodyGForLanczos(char *xNameListFile, int Nca, int Ncacadc, int Ns, int **caIdx, int **iFlgOneBodyG) {

int info = 0;
int i, j, isite1, isite2;
int icount = 0;
int **cacaIdx;
int **caIdx;
int **cacaDCIdx;

cacaIdx = malloc(sizeof(int *) * Ncacadc);
for (i = 0; i < Ncacadc; i++)
cacaIdx[i] = malloc(sizeof(int) * 8);
caIdx = malloc(sizeof(int *) * Nca);
for (i = 0; i < Nca; i++)
caIdx[i] = malloc(sizeof(int) * 4);
cacaDCIdx = malloc(sizeof(int *) * Ncacadc);
//pInt=cacaDCIdx[0];
for (i = 0; i < Ncacadc; i++) {
cacaDCIdx[i] = malloc(sizeof(int) * 8);
}

for (i = 0; i < 2 * Ns; i++) {
for (j = 0; j < 2 * Ns; j++) {
iFlgOneBodyG[i][j] = -1;
}
}
info = ReadGreen(xNameListFile, Nca, caIdx, Ncacadc, cacaIdx, Ns);
info = ReadGreen(xNameListFile, Nca, caIdx, Ncacadc, cacaDCIdx, Ns);
if (info != 0) {
for (i = 0; i < Ncacadc; i++)
free(cacaIdx[i]);
free(cacaIdx);
for (i = 0; i < Nca; i++)
free(caIdx[i]);
free(caIdx);
free(cacaDCIdx);
return (info);
}

@@ -277,8 +269,8 @@ int CountOneBodyGForLanczos(char *xNameListFile, int Nca, int Ncacadc, int Ns, i
}
//cisajscktalt -> cisajs, cltakt (Note: indecies of the latter Green's function are modified)
for (i = 0; i < Ncacadc; i++) {
isite1 = cacaIdx[i][0] + cacaIdx[i][1] * Ns;
isite2 = cacaIdx[i][2] + cacaIdx[i][3] * Ns;
isite1 = cacaDCIdx[i][0] + cacaDCIdx[i][1] * Ns;
isite2 = cacaDCIdx[i][2] + cacaDCIdx[i][3] * Ns;
if (iFlgOneBodyG[isite1][isite2] == -1) {
iFlgOneBodyG[isite1][isite2] = icount;
icount++;
@@ -288,20 +280,15 @@ int CountOneBodyGForLanczos(char *xNameListFile, int Nca, int Ncacadc, int Ns, i
isite1 = cacaDCIdx[i][4] + cacaDCIdx[i][5] * Ns;
isite2 = cacaDCIdx[i][6] + cacaDCIdx[i][7] * Ns;
*/
isite1 = cacaIdx[i][6] + cacaIdx[i][7] * Ns;
isite2 = cacaIdx[i][4] + cacaIdx[i][5] * Ns;
isite1 = cacaDCIdx[i][6] + cacaDCIdx[i][7] * Ns;
isite2 = cacaDCIdx[i][4] + cacaDCIdx[i][5] * Ns;
if (iFlgOneBodyG[isite1][isite2] == -1) {
iFlgOneBodyG[isite1][isite2] = icount;
icount++;
}

}
for (i = 0; i < Ncacadc; i++)
free(cacaIdx[i]);
free(cacaIdx);
for (i = 0; i < Nca; i++)
free(caIdx[i]);
free(caIdx);
free(cacaDCIdx);
return icount;
}

@@ -509,17 +496,23 @@ int ReadDefFileNInt(char *xNameListFile, MPI_Comm comm) {

//TODO: LanczosMode is not supported for Sz not conserved mode.

//For indirect calculation of Green's function
if (bufInt[IdxNTwoBodyGEx] > 0 || bufInt[IdxLanczosMode] > 1) {
//Get info of CisAjs and CisAjsCktAlt(GreenTwoEx as if it's DC)
//For Lanczos mode: Calculation of Green's function
if (bufInt[IdxLanczosMode] > 1) {
//Get info of CisAjs and CisAjsCktAltDC
int i;
NCisAjsLz = bufInt[IdxNOneBodyG];
//bufInt[IdxNTwoBodyGEx] = bufInt[IdxNTwoBodyG];
CisAjsLzIdx = malloc(sizeof(int *) * NCisAjsLz);
for (i = 0; i < NCisAjsLz; i++) {
CisAjsLzIdx[i] = malloc(sizeof(int) * 4);
}
iOneBodyGIdx = malloc(sizeof(int *) * (2 * bufInt[IdxNsite])); //For spin
//pInt=iFlgOneBodyG[0];
for (i = 0; i < 2 * bufInt[IdxNsite]; i++) {
iOneBodyGIdx[i] = malloc(sizeof(int) * (2 * bufInt[IdxNsite]));
}
bufInt[IdxNOneBodyG] = CountOneBodyGForLanczos(xNameListFile,
bufInt[IdxNOneBodyG], bufInt[IdxNTwoBodyGEx],
bufInt[IdxNsite], iOneBodyGIdx);
bufInt[IdxNOneBodyG] = CountOneBodyGForLanczos(xNameListFile, NCisAjsLz, bufInt[IdxNTwoBodyG],
bufInt[IdxNsite], CisAjsLzIdx, iOneBodyGIdx);
}

//CalcNCond
@@ -710,7 +703,7 @@ int ReadDefFileNInt(char *xNameListFile, MPI_Comm comm) {
+ Nsite * NQPTrans /* QPTransInv */
+ Nsite * NQPTrans /* QPTransSgn */
+ 4 * NCisAjs /* CisAjs */
+ 2 * NCisAjsCktAlt /* CisAjsCktAlt */
+ 8 * NCisAjsCktAlt /* CisAjsCktAlt */
+ 8 * NCisAjsCktAltDC /* CisAjsCktAltDC */
+ 8 * NInterAll /* InterAll */
+ Nsite * NQPOptTrans /* QPOptTrans */
@@ -755,6 +748,8 @@ int ReadDefFileIdxPara(char *xNameListFile, MPI_Comm comm) {
int x0, x1;
int rank;

int iNOneBodyG;

MPI_Comm_rank(comm, &rank);

if (rank == 0) {
@@ -867,17 +862,19 @@ int ReadDefFileIdxPara(char *xNameListFile, MPI_Comm comm) {

case KWOneBodyG:
/*cisajs.def----------------------------------------*/
if (GetInfoOneBodyG(fp, CisAjsIdx, iOneBodyGIdx, NCisAjsCktAlt>0, Nsite, NCisAjs, defname) != 0) info = 1;
iNOneBodyG = (NLanczosMode < 2) ? NCisAjs : NCisAjsLz;
if (GetInfoOneBodyG(fp, CisAjsIdx, iOneBodyGIdx, NLanczosMode, Nsite, iNOneBodyG, defname) != 0) info = 1;
break;

case KWTwoBodyGEx:
/*cisajscktalt.def----------------------------------*/
if (GetInfoTwoBodyGEx(fp, CisAjsCktAltIdx, iOneBodyGIdx, CisAjsIdx, Nsite, NCisAjsCktAlt, defname) != 0) info = 1;
if (GetInfoTwoBodyGEx(fp, CisAjsCktAltIdx, Nsite, NCisAjsCktAlt, defname) != 0) info = 1;
break;

case KWTwoBodyG:
/*cisajscktaltdc.def--------------------------------*/
if (GetInfoTwoBodyG(fp, CisAjsCktAltDCIdx, Nsite, NCisAjsCktAltDC, defname) != 0)
if (GetInfoTwoBodyG(fp, CisAjsCktAltDCIdx, CisAjsCktAltLzIdx, iOneBodyGIdx, CisAjsIdx, NLanczosMode, Nsite,
NCisAjsCktAltDC, defname) != 0)
info = 1;
break;

@@ -984,6 +981,9 @@ int ReadDefFileIdxPara(char *xNameListFile, MPI_Comm comm) {
*/
#ifdef _mpi_use
SafeMpiBcastInt(LocSpn, NTotalDefInt, comm);
if (NLanczosMode > 1) {
SafeMpiBcastInt(CisAjsCktAltLzIdx[0], NCisAjsCktAltDC * 2, comm);
}
SafeMpiBcast_fcmp(ParaTransfer, NTransfer + NInterAll, comm);
SafeMpiBcast(ParaCoulombIntra, NTotalDefDouble, comm);
SafeMpiBcast_fcmp(ParaQPTrans, NQPTrans, comm);
@@ -1928,7 +1928,7 @@ int GetInfoTransSym(FILE *fp, int **Array, int **ArraySgn, int **ArrayInv, doubl
}

int
GetInfoOneBodyG(FILE *fp, int **ArrayIdx, int **ArrayToIdx, int IndirectGFOn, int Nsite, int NArray, char *defname) {
GetInfoOneBodyG(FILE *fp, int **ArrayIdx, int **ArrayToIdx, int _NLanczosMode, int Nsite, int NArray, char *defname) {
char ctmp2[256];
int idx = 0, info = 0;
int x0 = 0, x1 = 0, x2 = 0, x3 = 0;
@@ -1937,12 +1937,12 @@ GetInfoOneBodyG(FILE *fp, int **ArrayIdx, int **ArrayToIdx, int IndirectGFOn, in
if (NArray == 0) return 0;
while (fgets(ctmp2, sizeof(ctmp2) / sizeof(char), fp) != NULL) {
sscanf(ctmp2, "%d %d %d %d\n", &x0, &x1, &x2, &x3);
if (!IndirectGFOn) { // Normal
if (_NLanczosMode < 2) { // Normal
ArrayIdx[idx][0] = x0;
ArrayIdx[idx][1] = x1;
ArrayIdx[idx][2] = x2;
ArrayIdx[idx][3] = x3;
} else { //For Calc Green func indirectly
} else { //For Calc Green func by Lanczos mode
isite1 = x0 + x1 * Nsite;
isite2 = x2 + x3 * Nsite;
idxLanczos = ArrayToIdx[isite1][isite2];
@@ -1959,50 +1959,28 @@ GetInfoOneBodyG(FILE *fp, int **ArrayIdx, int **ArrayToIdx, int IndirectGFOn, in
idx++;
}

if (!IndirectGFOn && idx != NArray)
info = ReadDefFileError(defname);
if (idx != NArray) info = ReadDefFileError(defname);
return info;
}

// Formerly CisAjsCktAlt
int GetInfoTwoBodyGEx(FILE *fp, int **ArrayIdx, int **ArrayToIdx, int **ArrayIdxOneBodyG,
int Nsite, int NArray, char *defname) {
int GetInfoTwoBodyGEx(FILE *fp, int **ArrayIdx, int Nsite, int NArray, char *defname) {
char ctmp2[256];
int idx = 0, info = 0;
int x0 = 0, x1 = 0, x2 = 0, x3 = 0;
int x4 = 0, x5 = 0, x6 = 0, x7 = 0;
int isite1 = 0, isite2 = 0;
int idxLanczos = 0;

//Debug
if (NArray == 0) return 0;
while (fgets(ctmp2, sizeof(ctmp2) / sizeof(char), fp) != NULL) {
sscanf(ctmp2, "%d %d %d %d %d %d %d %d\n", &x0, &x1, &x2, &x3, &x4, &x5, &x6, &x7);

isite1 = x0 + x1 * Nsite;
isite2 = x2 + x3 * Nsite;
idxLanczos = ArrayToIdx[isite1][isite2];
ArrayIdxOneBodyG[idxLanczos][0] = x0;
ArrayIdxOneBodyG[idxLanczos][1] = x1;
ArrayIdxOneBodyG[idxLanczos][2] = x2;
ArrayIdxOneBodyG[idxLanczos][3] = x3;
ArrayIdx[idx][0] = idxLanczos;

isite1 = x6 + x7 * Nsite;
isite2 = x4 + x5 * Nsite;
idxLanczos = ArrayToIdx[isite1][isite2];
/*
ArrayIdxOneBodyG[idxLanczos][0] = x4;
ArrayIdxOneBodyG[idxLanczos][1] = x5;
ArrayIdxOneBodyG[idxLanczos][2] = x6;
ArrayIdxOneBodyG[idxLanczos][3] = x7;
*/
ArrayIdxOneBodyG[idxLanczos][0] = x6;
ArrayIdxOneBodyG[idxLanczos][1] = x7;
ArrayIdxOneBodyG[idxLanczos][2] = x4;
ArrayIdxOneBodyG[idxLanczos][3] = x5;
ArrayIdx[idx][1] = idxLanczos;

if (CheckQuadSite(x0, x2, x4, x6, Nsite) != 0) {
ArrayIdx[idx][0] = x0; // Index to OneBodyG1
ArrayIdx[idx][1] = x1; // Index to OneBodyG2
ArrayIdx[idx][2] = x2; // G1:site i
ArrayIdx[idx][3] = x3; // G1:site j
ArrayIdx[idx][4] = x4; // G1:sigma1
ArrayIdx[idx][5] = x5; // G2:site l
ArrayIdx[idx][6] = x6; // G2:site k
ArrayIdx[idx][7] = x7; // G2:sigma2
if (CheckQuadSite(x2, x3, x5, x6, Nsite) != 0) {
fprintf(stderr, "Error: Site index is incorrect. \n");
info = 1;
break;
@@ -2013,8 +1991,8 @@ int GetInfoTwoBodyGEx(FILE *fp, int **ArrayIdx, int **ArrayToIdx, int **ArrayIdx
return info;
}

// Formerly CisAjsCktAltDC
int GetInfoTwoBodyG(FILE *fp, int **ArrayIdx, int Nsite, int NArray, char *defname) {
int GetInfoTwoBodyG(FILE *fp, int **ArrayIdx, int **ArrayIdxTwoBodyGLz, int **ArrayToIdx, int **ArrayIdxOneBodyG,
int _NLanczosMode, int Nsite, int NArray, char *defname) {
char ctmp2[256];
int idx = 0, info = 0;
int x0 = 0, x1 = 0, x2 = 0, x3 = 0;
@@ -2039,6 +2017,44 @@ int GetInfoTwoBodyG(FILE *fp, int **ArrayIdx, int Nsite, int NArray, char *defna
break;
}

if (_NLanczosMode > 1) { //Calc TwoBodyG by Lanczos method

isite1 = x0 + x1 * Nsite;
isite2 = x2 + x3 * Nsite;
idxLanczos = ArrayToIdx[isite1][isite2];

ArrayIdxOneBodyG[idxLanczos][0] = x0;
ArrayIdxOneBodyG[idxLanczos][1] = x1;
ArrayIdxOneBodyG[idxLanczos][2] = x2;
ArrayIdxOneBodyG[idxLanczos][3] = x3;
/*
ArrayIdxOneBodyG[idxLanczos][0] = x2;
ArrayIdxOneBodyG[idxLanczos][1] = x3;
ArrayIdxOneBodyG[idxLanczos][2] = x0;
ArrayIdxOneBodyG[idxLanczos][3] = x1;
*/
ArrayIdxTwoBodyGLz[idx][0] = idxLanczos;

/*
isite1 = x4 + x5 * Nsite;
isite2 = x6 + x7 * Nsite;
*/
isite1 = x6 + x7 * Nsite;
isite2 = x4 + x5 * Nsite;
idxLanczos = ArrayToIdx[isite1][isite2];
ArrayIdxOneBodyG[idxLanczos][0] = x6;
ArrayIdxOneBodyG[idxLanczos][1] = x7;
ArrayIdxOneBodyG[idxLanczos][2] = x4;
ArrayIdxOneBodyG[idxLanczos][3] = x5;

/*
ArrayIdxOneBodyG[idxLanczos][0] = x4;
ArrayIdxOneBodyG[idxLanczos][1] = x5;
ArrayIdxOneBodyG[idxLanczos][2] = x6;
ArrayIdxOneBodyG[idxLanczos][3] = x7;
*/
ArrayIdxTwoBodyGLz[idx][1] = idxLanczos;
}
idx++;
}
if (idx != NArray) info = ReadDefFileError(defname);
32 changes: 15 additions & 17 deletions src/mVMC/setmemory.c
Original file line number Diff line number Diff line change
@@ -163,7 +163,7 @@ void SetMemoryDef() {
CisAjsCktAltIdx = (int**)malloc(sizeof(int*)*NCisAjsCktAlt);
for(i=0;i<NCisAjsCktAlt;i++) {
CisAjsCktAltIdx[i] = pInt;
pInt += 2;
pInt += 8;
}

CisAjsCktAltDCIdx = (int**)malloc(sizeof(int*)*NCisAjsCktAltDC);
@@ -217,17 +217,19 @@ void SetMemoryDef() {
ParaQPOptTrans = pDouble;
ParaQPTrans = (double complex*)malloc(sizeof(double complex)*(NQPTrans));

// LanczosGreen
if(NLanczosMode>1){
CisAjsCktAltLzIdx = malloc(sizeof(int*)*NCisAjsCktAltDC);
for(i=0;i<NCisAjsCktAltDC;i++) {
CisAjsCktAltLzIdx[i] = malloc(sizeof(int) * 2);
}
}

return;
}

void FreeMemoryDef() {
int i, rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank==0 && NCisAjsCktAlt>0) {
for(i=0;i<2*Nsite;i++)
free(iOneBodyGIdx[i]);
free(iOneBodyGIdx);
}
free(ParaTransfer);

free(QPOptTransSgn);
free(QPOptTrans);
@@ -241,7 +243,6 @@ void FreeMemoryDef() {
free(DoublonHolon4siteIdx);
free(DoublonHolon2siteIdx);
free(JastrowIdx);
free(ParaTransfer);
free(ExchangeCoupling);
free(PairHopping);
free(HundCoupling);
@@ -368,11 +369,10 @@ void SetMemory() {
/***** Physical Quantity *****/
if(NVMCCalMode==1){
PhysCisAjs = (double complex*)malloc(sizeof(double complex)
*(NCisAjs+NCisAjsCktAlt+NCisAjsCktAltDC+NCisAjs+NCisAjsCktAltDC));
*(NCisAjs+NCisAjsCktAlt+NCisAjsCktAltDC+NCisAjs));
PhysCisAjsCktAlt = PhysCisAjs + NCisAjs;
PhysCisAjsCktAltDC = PhysCisAjsCktAlt + NCisAjsCktAlt;
LocalCisAjs = PhysCisAjsCktAltDC + NCisAjsCktAltDC;
LocalCisAjsCktAltDC = LocalCisAjs + NCisAjs;

if(NLanczosMode>0){
QQQQ = (double complex*)malloc(sizeof(double complex)
@@ -385,16 +385,14 @@ void SetMemory() {

if(NLanczosMode>1){
QCisAjsQ = (double complex*)malloc(sizeof(double complex)
*(NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*(NCisAjsCktAltDC+NCisAjsCktAlt) + NLSHam*NCisAjs) );
*(NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*NCisAjsCktAltDC + NLSHam*NCisAjs) );
QCisAjsCktAltQ = QCisAjsQ + NLSHam*NLSHam*NCisAjs;
QCisAjsCktAltQDC = QCisAjsCktAltQ + NLSHam*NLSHam*NCisAjsCktAlt;
LSLCisAjs = QCisAjsCktAltQDC + NLSHam*NLSHam*NCisAjsCktAltDC;
LSLCisAjs = QCisAjsCktAltQ + NLSHam*NLSHam*NCisAjsCktAltDC;
//for real
QCisAjsQ_real = (double *)malloc(sizeof(double )
*(NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*(NCisAjsCktAltDC+NCisAjsCktAlt) + NLSHam*NCisAjs) );
*(NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*NCisAjsCktAltDC + NLSHam*NCisAjs) );
QCisAjsCktAltQ_real = QCisAjsQ_real + NLSHam*NLSHam*NCisAjs;
QCisAjsCktAltQDC_real = QCisAjsCktAltQ_real + NLSHam*NLSHam*NCisAjsCktAlt;
LSLCisAjs_real = QCisAjsCktAltQDC_real + NLSHam*NLSHam*NCisAjsCktAltDC;
LSLCisAjs_real = QCisAjsCktAltQ_real + NLSHam*NLSHam*NCisAjsCktAltDC;

}
}
86 changes: 6 additions & 80 deletions src/mVMC/vmccal.c
Original file line number Diff line number Diff line change
@@ -68,16 +68,6 @@ void calculateQCACAQ_real(double *qcacaq, const double *lslca, const double w,
const int nLSHam, const int nCA, const int nCACA,
int **cacaIdx);

void calculateQCACAQDC_real(double *qcacaq, const double *lslq, const double w,
const int nLSHam, const int nCA, const int nCACA,
int *eleIdx, int *eleCfg, int *eleNum, int *eleProjCnt,
const double h1, const double ip);

void calculateQCACAQDC(double complex *qcacaq, const double complex *lslq, const double w,
const int nLSHam, const int nCA, const int nCACA,
int *eleIdx, int *eleCfg, int *eleNum, int *eleProjCnt,
const double complex h1, const double complex ip);

void VMCMainCal(MPI_Comm comm) {
int *eleIdx,*eleCfg,*eleNum,*eleProjCnt;
double complex e,ip;
@@ -277,18 +267,14 @@ void VMCMainCal(MPI_Comm comm) {
LSLocalCisAjs_real(creal(e),creal(ip),eleIdx,eleCfg,eleNum,eleProjCnt);
calculateQCAQ_real(QCisAjsQ_real,LSLCisAjs_real,LSLQ_real,w,NLSHam,NCisAjs);
calculateQCACAQ_real(QCisAjsCktAltQ_real,LSLCisAjs_real,w,NLSHam,NCisAjs,
NCisAjsCktAlt, CisAjsCktAltIdx);
calculateQCACAQDC_real(QCisAjsCktAltQDC_real,LSLQ_real,w,NLSHam,NCisAjs,
NCisAjsCktAltDC,eleIdx,eleCfg,eleNum,eleProjCnt,creal(e),creal(ip));
NCisAjsCktAltDC, CisAjsCktAltLzIdx);

}
else{
LSLocalCisAjs(e,ip,eleIdx,eleCfg,eleNum,eleProjCnt);
calculateQCAQ(QCisAjsQ,LSLCisAjs,LSLQ,w,NLSHam,NCisAjs);
calculateQCACAQ(QCisAjsCktAltQ,LSLCisAjs,w,NLSHam,NCisAjs,
NCisAjsCktAlt,CisAjsCktAltIdx);
calculateQCACAQDC(QCisAjsCktAltQDC,LSLQ,w,NLSHam,NCisAjs,
NCisAjsCktAltDC,eleIdx,eleCfg,eleNum,eleProjCnt,e,ip);
NCisAjsCktAltDC,CisAjsCktAltLzIdx);
}
StopTimer(44);
}
@@ -521,12 +507,12 @@ for(i=0;i<nProj;i++) srOptO[i+1] = (double)(eleProjCnt[i]);
LSLocalCisAjs_real(creal(e), creal(ip), eleIdx, eleCfg, eleNum, eleProjCnt);
calculateQCAQ_real(QCisAjsQ_real, LSLCisAjs_real, LSLQ_real, w, NLSHam, NCisAjs);
calculateQCACAQ_real(QCisAjsCktAltQ_real, LSLCisAjs_real, w, NLSHam, NCisAjs,
NCisAjsCktAltDC, CisAjsCktAltIdx);
NCisAjsCktAltDC, CisAjsCktAltLzIdx);
} else {
LSLocalCisAjs(e, ip, eleIdx, eleCfg, eleNum, eleProjCnt);
calculateQCAQ(QCisAjsQ, LSLCisAjs, LSLQ, w, NLSHam, NCisAjs);
calculateQCACAQ(QCisAjsCktAltQ, LSLCisAjs, w, NLSHam, NCisAjs,
NCisAjsCktAltDC, CisAjsCktAltIdx);
NCisAjsCktAltDC, CisAjsCktAltLzIdx);
return;
}
StopTimer(44);
@@ -609,13 +595,13 @@ void clearPhysQuantity(){
if(NLanczosMode>1) {
/* QCisAjsQ, QCisAjsCktAltQ, LSLCisAjs */
//[TODO]: Check the value n
n = NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*(NCisAjsCktAltDC+NCisAjsCktAlt)
n = NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*NCisAjsCktAltDC
+ NLSHam*NCisAjs;
vec = QCisAjsQ;
#pragma omp parallel for default(shared) private(i)
for(i=0;i<n;i++) vec[i] = 0.0+0.0*I;

n = NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*(NCisAjsCktAltDC+NCisAjsCktAlt)
n = NLSHam*NLSHam*NCisAjs + NLSHam*NLSHam*NCisAjsCktAltDC
+ NLSHam*NCisAjs;
vec_real = QCisAjsQ_real;
#pragma omp parallel for default(shared) private(i)
@@ -933,64 +919,4 @@ void calculateQCACAQ_real(double *qcacaq, const double *lslca, const double w,
return;

}

void calculateQCACAQDC_real(double *qcacaq, const double *lslq, const double w,
const int nLSHam, const int nCA, const int nCACA,
int *eleIdx, int *eleCfg, int *eleNum, int *eleProjCnt,
const double h1, const double ip) {
const int n=nLSHam*nLSHam*nCACA;
int rq,rp,ri,rj,rk,rl,s,t,idx;
int i,tmp;

for(i=0;i<n;++i) {
idx = i%nCACA; tmp = i/nCACA;
rp = tmp%nLSHam; tmp = tmp/nLSHam;
rq = tmp%nLSHam;

if (rq) {
// Calls 2-body routines to evaluate HCACA.
ri = CisAjsCktAltDCIdx[idx][0];
rj = CisAjsCktAltDCIdx[idx][2];
s = CisAjsCktAltDCIdx[idx][1];
rk = CisAjsCktAltDCIdx[idx][4];
rl = CisAjsCktAltDCIdx[idx][6];
t = CisAjsCktAltDCIdx[idx][5];
qcacaq[i] += w * lslq[rp*nLSHam] * calHCACA_real(ri,rj,rk,rl,s,t,h1,ip,
eleIdx,eleCfg,eleNum,eleProjCnt);
} else
qcacaq[i] += w * lslq[rp*nLSHam] * LocalCisAjsCktAltDC[idx];
}

return;
}

void calculateQCACAQDC(double complex *qcacaq, const double complex *lslq, const double w,
const int nLSHam, const int nCA, const int nCACA,
int *eleIdx, int *eleCfg, int *eleNum, int *eleProjCnt,
const double complex h1, const double complex ip) {
const int n=nLSHam*nLSHam*nCACA;
int rq,rp,ri,rj,rk,rl,s,t,idx;
int i,tmp;

for(i=0;i<n;++i) {
idx = i%nCACA; tmp = i/nCACA;
rp = tmp%nLSHam; tmp = tmp/nLSHam;
rq = tmp%nLSHam;

if (rq) {
// Calls 2-body routines to evaluate HCACA.
ri = CisAjsCktAltDCIdx[idx][0];
rj = CisAjsCktAltDCIdx[idx][2];
s = CisAjsCktAltDCIdx[idx][1];
rk = CisAjsCktAltDCIdx[idx][4];
rl = CisAjsCktAltDCIdx[idx][6];
t = CisAjsCktAltDCIdx[idx][5];
qcacaq[i] += w * lslq[rp*nLSHam] * calHCACA(ri,rj,rk,rl,s,t,h1,ip,
eleIdx,eleCfg,eleNum,eleProjCnt);
} else
qcacaq[i] += w * lslq[rp*nLSHam] * LocalCisAjsCktAltDC[idx];
}

return;
}
#endif
39 changes: 26 additions & 13 deletions src/mVMC/vmcmain.c
Original file line number Diff line number Diff line change
@@ -663,19 +663,32 @@ void outputData() {
if (NVMCCalMode == 1) {
/* zvo_cisajs.dat */
if (NCisAjs > 0) {
for (i = 0; i < NCisAjs; i++)
fprintf(FileCisAjs, "%d %d %d %d % .18e % .18e \n", CisAjsIdx[i][0], CisAjsIdx[i][1], CisAjsIdx[i][2],
CisAjsIdx[i][3], creal(PhysCisAjs[i]), cimag(PhysCisAjs[i]));
if(NLanczosMode <2) {
for (i = 0; i < NCisAjs; i++) {
fprintf(FileCisAjs, "%d %d %d %d % .18e % .18e \n", CisAjsIdx[i][0], CisAjsIdx[i][1], CisAjsIdx[i][2],
CisAjsIdx[i][3], creal(PhysCisAjs[i]), cimag(PhysCisAjs[i]));
}
}
else{
int idx=0;
for (i = 0; i < NCisAjsLz; i++) {
idx = iOneBodyGIdx[CisAjsLzIdx[i][0] + CisAjsLzIdx[i][1] * Nsite][CisAjsLzIdx[i][2] +
CisAjsLzIdx[i][3] * Nsite];
//fprintf(stdout, "Debug: idx= %d value= % .18e % .18e\n", idx, creal(PhysCisAjs[idx]), cimag(PhysCisAjs[idx]));
fprintf(FileCisAjs, "%d %d %d %d % .18e % .18e \n", CisAjsLzIdx[idx][0], CisAjsLzIdx[idx][1],
CisAjsLzIdx[idx][2], CisAjsLzIdx[idx][3], creal(PhysCisAjs[idx]), cimag(PhysCisAjs[idx]));
}
}
fprintf(FileCisAjs, "\n");
}
/* zvo_cisajscktaltex.dat */
/* zvo_cisajscktalt.dat */
if (NCisAjsCktAlt > 0) {
for (i = 0; i < NCisAjsCktAlt; i++)
fprintf(FileCisAjsCktAlt, "% .18e % .18e ", creal(PhysCisAjsCktAlt[i]), cimag(PhysCisAjsCktAlt[i]));
fprintf(FileCisAjsCktAlt, "\n");
}

/* zvo_cisajscktalt.dat */
/* zvo_cisajscktaltdc.dat */
if (NCisAjsCktAltDC > 0) {
for (i = 0; i < NCisAjsCktAltDC; i++) {
fprintf(FileCisAjsCktAltDC, "%d %d %d %d %d %d %d %d % .18e % .18e\n",
@@ -689,16 +702,16 @@ void outputData() {
if (NLanczosMode > 0) {
if (AllComplexFlag == 0) { //real
PhysCalLanczos_real(
QQQQ_real, QCisAjsQ_real, QCisAjsCktAltQ_real, QCisAjsCktAltQDC_real,
NLSHam, Nsite, NCisAjs, NCisAjs, iOneBodyGIdx, CisAjsIdx, NCisAjsCktAlt, NCisAjsCktAltDC, CisAjsCktAltDCIdx,
NLanczosMode, FileLS, FileLSQQQQ, FileLSQCisAjsQ, FileLSQCisAjsCktAltQ,
FileLSCisAjs, FileLSCisAjsCktAlt, FileLSCisAjsCktAltDC);
QQQQ_real, QCisAjsQ_real, QCisAjsCktAltQ_real,
NLSHam, Nsite, NCisAjs, NCisAjsLz, iOneBodyGIdx, CisAjsLzIdx, NCisAjsCktAltDC, CisAjsCktAltDCIdx, NLanczosMode,
FileLS, FileLSQQQQ, FileLSQCisAjsQ, FileLSQCisAjsCktAltQ,
FileLSCisAjs, FileLSCisAjsCktAlt);
}else { //complex
PhysCalLanczos_fcmp(
QQQQ, QCisAjsQ, QCisAjsCktAltQ, QCisAjsCktAltQDC,
NLSHam, Nsite, NCisAjs, NCisAjs, iOneBodyGIdx, CisAjsIdx, NCisAjsCktAlt, NCisAjsCktAltDC, CisAjsCktAltDCIdx,
NLanczosMode, FileLS, FileLSQQQQ, FileLSQCisAjsQ, FileLSQCisAjsCktAltQ,
FileLSCisAjs, FileLSCisAjsCktAlt, FileLSCisAjsCktAltDC);
QQQQ, QCisAjsQ, QCisAjsCktAltQ,
NLSHam, Nsite, NCisAjs, NCisAjsLz, iOneBodyGIdx, CisAjsLzIdx, NCisAjsCktAltDC, CisAjsCktAltDCIdx, NLanczosMode,
FileLS, FileLSQQQQ, FileLSQCisAjsQ, FileLSQCisAjsCktAltQ,
FileLSCisAjs, FileLSCisAjsCktAlt);
}
}
}

0 comments on commit 452dbb2

Please sign in to comment.