41 #include "StdFace_ModelUtil.h" 54 for (ktrans = 0; ktrans < StdI->
ntrans; ktrans++) {
55 LargeValue0 += cabs(StdI->
trans[ktrans]);
57 for (kintr = 0; kintr < StdI->
nintr; kintr++) {
58 LargeValue0 += cabs(StdI->
intr[kintr]);
60 for (kintr = 0; kintr < StdI->
NCintra; kintr++) {
61 LargeValue0 += fabs(StdI->
Cintra[kintr]);
63 for (kintr = 0; kintr < StdI->
NCinter; kintr++) {
64 LargeValue0 += fabs(StdI->
Cinter[kintr]);
66 for (kintr = 0; kintr < StdI->
NEx; kintr++) {
67 LargeValue0 += 2.0 * fabs(StdI->
Ex[kintr]);
69 for (kintr = 0; kintr < StdI->
NPairLift; kintr++) {
70 LargeValue0 += 2.0 * fabs(StdI->
PairLift[kintr]);
72 for (kintr = 0; kintr < StdI->
NHund; kintr++) {
73 LargeValue0 += 2.0 * fabs(StdI->
Hund[kintr]);
75 LargeValue0 /= (double)StdI->
nsite;
85 int iCalcType, iCalcModel, iRestart, iCalcSpec,
86 iCalcEigenvec, iInitialVecTpye, InputEigenVec, OutputEigenVec;
90 fprintf(stdout,
"\n @ CalcMod\n\n");
95 if (strcmp(StdI->
method,
"****") == 0){
96 fprintf(stdout,
"ERROR ! Method is NOT specified !\n");
99 else if (strcmp(StdI->
method,
"lanczos") == 0) iCalcType = 0;
100 else if (strcmp(StdI->
method,
"lanczosenergy") == 0) {
104 else if (strcmp(StdI->
method,
"tpq") == 0) iCalcType = 1;
105 else if (strcmp(StdI->
method,
"fulldiag") == 0 ) iCalcType = 2;
106 else if (strcmp(StdI->
method,
"cg") == 0) iCalcType = 3;
107 else if (strcmp(StdI->
method,
"timeevolution") == 0) iCalcType = 4;
109 fprintf(stdout,
"\n ERROR ! Unsupported Solver : %s\n", StdI->
method);
112 if (iCalcType != 4) StdI->
PumpBody = 0;
116 if (strcmp(StdI->
model,
"hubbard") == 0) {
117 if (StdI->
lGC == 0)iCalcModel = 0;
120 else if (strcmp(StdI->
model,
"spin") == 0) {
121 if (StdI->
lGC == 0)iCalcModel = 1;
124 else if (strcmp(StdI->
model,
"kondo") == 0) {
125 if (StdI->
lGC == 0)iCalcModel = 2;
131 if (strcmp(StdI->
Restart,
"****") == 0) {
132 strcpy(StdI->
Restart,
"none\0");
133 fprintf(stdout,
" Restart = none ###### DEFAULT VALUE IS USED ######\n");
137 fprintf(stdout,
" Restart = %s\n", StdI->
Restart);
138 if (strcmp(StdI->
Restart,
"none") == 0) iRestart = 0;
139 else if (strcmp(StdI->
Restart,
"restart_out") == 0 ||
140 strcmp(StdI->
Restart,
"save") == 0) iRestart = 1;
141 else if (strcmp(StdI->
Restart,
"restartsave") == 0 ||
142 strcmp(StdI->
Restart,
"restart") == 0) iRestart = 2;
143 else if (strcmp(StdI->
Restart,
"restart_in") == 0) iRestart = 3;
145 fprintf(stdout,
"\n ERROR ! Restart Mode : %s\n", StdI->
Restart);
154 fprintf(stdout,
" InitialVecType = c ###### DEFAULT VALUE IS USED ######\n");
160 else if (strcmp(StdI->
InitialVecType,
"r") == 0) iInitialVecTpye = 1;
162 fprintf(stdout,
"\n ERROR ! Restart Mode : %s\n", StdI->
Restart);
173 fprintf(stdout,
" EigenVecIO = none ###### DEFAULT VALUE IS USED ######\n");
176 fprintf(stdout,
" EigenVecIO = %s\n", StdI->
EigenVecIO);
177 if (strcmp(StdI->
EigenVecIO,
"none") == 0) InputEigenVec = 0;
178 else if (strcmp(StdI->
EigenVecIO,
"in") == 0) InputEigenVec = 1;
179 else if (strcmp(StdI->
EigenVecIO,
"out") == 0) OutputEigenVec = 1;
180 else if (strcmp(StdI->
EigenVecIO,
"inout") == 0) {
185 fprintf(stdout,
"\n ERROR ! EigenVecIO Mode : %s\n", StdI->
Restart);
189 if (strcmp(StdI->
method,
"timeevolution") == 0) InputEigenVec = 1;
193 if (strcmp(StdI->
CalcSpec,
"****") == 0) {
195 fprintf(stdout,
" CalcSpec = none ###### DEFAULT VALUE IS USED ######\n");
199 fprintf(stdout,
" CalcSpec = %s\n", StdI->
CalcSpec);
200 if (strcmp(StdI->
CalcSpec,
"none") == 0) iCalcSpec = 0;
201 else if (strcmp(StdI->
CalcSpec,
"normal") == 0) iCalcSpec = 1;
202 else if (strcmp(StdI->
CalcSpec,
"noiteration") == 0) iCalcSpec = 2;
203 else if (strcmp(StdI->
CalcSpec,
"restart_out") == 0) iCalcSpec = 3;
204 else if (strcmp(StdI->
CalcSpec,
"restart_in") == 0) iCalcSpec = 4;
205 else if (strcmp(StdI->
CalcSpec,
"restartsave") == 0 ||
206 strcmp(StdI->
CalcSpec,
"restart") == 0) iCalcSpec = 5;
208 fprintf(stdout,
"\n ERROR ! CalcSpec : %s\n", StdI->
CalcSpec);
213 fp = fopen(
"calcmod.def",
"w");
214 fprintf(fp,
"#CalcType = 0:Lanczos, 1:TPQCalc, 2:FullDiag, 3:CG, 4:Time-evolution\n");
215 fprintf(fp,
"#CalcModel = 0:Hubbard, 1:Spin, 2:Kondo, 3:HubbardGC, 4:SpinGC, 5:KondoGC\n");
216 fprintf(fp,
"#Restart = 0:None, 1:Save, 2:Restart&Save, 3:Restart\n");
217 fprintf(fp,
"#CalcSpec = 0:None, 1:Normal, 2:No H*Phi, 3:Save, 4:Restart, 5:Restart&Save\n");
218 fprintf(fp,
"CalcType %3d\n", iCalcType);
219 fprintf(fp,
"CalcModel %3d\n", iCalcModel);
220 fprintf(fp,
"ReStart %3d\n", iRestart);
221 fprintf(fp,
"CalcSpec %3d\n", iCalcSpec);
222 fprintf(fp,
"CalcEigenVec %3d\n", iCalcEigenvec);
223 fprintf(fp,
"InitialVecType %3d\n", iInitialVecTpye);
224 fprintf(fp,
"InputEigenVec %3d\n", InputEigenVec);
225 fprintf(fp,
"OutputEigenVec %3d\n", OutputEigenVec);
228 fprintf(stdout,
" calcmod.def is written.\n\n");
236 int NumOp, **spin, isite, ispin, icell, itau;
237 double *coef, pi, Cphase, S, Sz;
238 double *fourier_r, *fourier_i;
240 if (strcmp(StdI->
model,
"spin") == 0 && StdI->
S2 > 1) {
241 coef = (
double *)malloc(
sizeof(
double) * (StdI->
S2 + 1));
242 spin = (
int **)malloc(
sizeof(
int*) * (StdI->
S2 + 1));
243 for (ispin = 0; ispin < StdI->
S2 + 1; ispin++) spin[ispin] = (
int *)malloc(
sizeof(
int) * 2);
246 coef = (
double *)malloc(
sizeof(
double) * 2);
247 spin = (
int **)malloc(
sizeof(
int*) * 2);
248 for (ispin = 0; ispin < 2; ispin++) spin[ispin] = (
int *)malloc(
sizeof(
int) * 2);
251 fourier_r = (
double *)malloc(
sizeof(
double) * StdI->
nsite);
252 fourier_i = (
double *)malloc(
sizeof(
double) * StdI->
nsite);
254 fprintf(stdout,
"\n @ Spectrum\n\n");
262 fprintf(stdout,
" SpectrumType = szsz ###### DEFAULT VALUE IS USED ######\n");
263 if (strcmp(StdI->
model,
"spin") == 0) {
264 NumOp = StdI->
S2 + 1;
265 for (ispin = 0; ispin <= StdI->
S2; ispin++) {
266 Sz = (double)ispin - (
double)StdI->
S2 * 0.5;
268 spin[ispin][0] = ispin;
269 spin[ispin][1] = ispin;
284 fprintf(stdout,
" SpectrumType = %s\n", StdI->
SpectrumType);
286 if (strcmp(StdI->
model,
"spin") == 0) {
287 NumOp = StdI->
S2 + 1;
288 for (ispin = 0; ispin <= StdI->
S2; ispin++) {
289 Sz = (double)ispin - (
double)StdI->
S2 * 0.5;
291 spin[ispin][0] = ispin;
292 spin[ispin][1] = ispin;
307 if (strcmp(StdI->
model,
"spin") == 0 && StdI->
S2 > 1) {
309 S = (double)StdI->
S2 * 0.5;
310 for (ispin = 0; ispin < StdI->
S2; ispin++) {
311 Sz = (double)ispin - (
double)StdI->
S2 * 0.5;
312 coef[ispin] = sqrt(S*(S + 1.0) - Sz*(Sz + 1.0));
313 spin[ispin][0] = ispin;
314 spin[ispin][1] = ispin + 1;
348 fprintf(stdout,
"\n ERROR ! SpectrumType : %s\n", StdI->
SpectrumType);
354 for (icell = 0; icell < StdI->
NCell; icell++) {
355 for (itau = 0; itau < StdI->
NsiteUC; itau++) {
359 fourier_r[isite] = cos(2.0*StdI->
pi*Cphase);
360 fourier_i[isite] = sin(2.0*StdI->
pi*Cphase);
364 if (strcmp(StdI->
model,
"kondo") == 0) {
365 for (isite = 0; isite < StdI->
nsite / 2; isite++) {
366 fourier_r[isite + StdI->
nsite / 2] = fourier_r[isite];
367 fourier_i[isite + StdI->
nsite / 2] = fourier_i[isite];
372 fp = fopen(
"single.def",
"w");
373 fprintf(fp,
"=============================================\n");
374 if (strcmp(StdI->
model,
"kondo") == 0) {
375 fprintf(fp,
"NSingle %d\n", StdI->
nsite / 2 * NumOp);
378 fprintf(fp,
"NSingle %d\n", StdI->
nsite * NumOp);
380 fprintf(fp,
"=============================================\n");
381 fprintf(fp,
"============== Single Excitation ============\n");
382 fprintf(fp,
"=============================================\n");
383 if (strcmp(StdI->
model,
"kondo") == 0) {
384 for (isite = StdI->
nsite / 2; isite < StdI->nsite; isite++) {
385 fprintf(fp,
"%d %d 0 %25.15f %25.15f\n", isite, spin[0][0],
386 fourier_r[isite] * coef[0], fourier_i[isite] * coef[0]);
390 for (isite = 0; isite < StdI->
nsite; isite++) {
391 fprintf(fp,
"%d %d 0 %25.15f %25.15f\n", isite, spin[0][0],
392 fourier_r[isite] * coef[0], fourier_i[isite] * coef[0]);
395 fprintf(stdout,
" single.def is written.\n\n");
398 fp = fopen(
"pair.def",
"w");
399 fprintf(fp,
"=============================================\n");
400 fprintf(fp,
"NPair %d\n", StdI->
nsite * NumOp);
401 fprintf(fp,
"=============================================\n");
402 fprintf(fp,
"=============== Pair Excitation =============\n");
403 fprintf(fp,
"=============================================\n");
404 for (isite = 0; isite < StdI->
nsite; isite++) {
405 for (ispin = 0; ispin < NumOp; ispin++) {
406 fprintf(fp,
"%d %d %d %d 0 %25.15f %25.15f\n",
407 isite, spin[ispin][0], isite, spin[ispin][1],
408 fourier_r[isite] * coef[ispin], fourier_i[isite] * coef[ispin]);
411 fprintf(stdout,
" pair.def is written.\n\n");
418 if (strcmp(StdI->
model,
"spin") == 0)
419 for (ispin = 0; ispin < StdI->
S2 + 1; ispin++) free(spin[ispin]);
421 for (ispin = 0; ispin < 2; ispin++) free(spin[ispin]);
431 int it, ii, isite, icell, itau, itrans, jsite, jcell, jtau, ntrans0;
432 double Cphase, time, dR[3];
436 fprintf(stdout,
"\n @ Time-evolution\n\n");
448 StdI->
At = (
double **)malloc(
sizeof(
double*) * StdI->
Lanczos_max);
449 Et = (
double **)malloc(
sizeof(
double*) * StdI->
Lanczos_max);
451 StdI->
At[it] = (
double *)malloc(
sizeof(
double) * 3);
452 Et[it] = (
double *)malloc(
sizeof(
double) * 3);
455 if (strcmp(StdI->
PumpType,
"****") == 0) {
457 fprintf(stdout,
" PumpType = quench ###### DEFAULT VALUE IS USED ######\n");
461 fprintf(stdout,
" PumpType = %s\n", StdI->
PumpType);
462 if (strcmp(StdI->
PumpType,
"quench") == 0) {
465 else if (strcmp(StdI->
PumpType,
"pulselaser") == 0) {
467 time = StdI->
dt*(double)it;
468 for (ii = 0; ii < 3; ii++) {
471 Et[it][ii] = -StdI->
VecPot[ii]
481 else if (strcmp(StdI->
PumpType,
"aclaser") == 0) {
483 time = StdI->
dt*(double)it;
484 for (ii = 0; ii < 3; ii++) {
491 else if (strcmp(StdI->
PumpType,
"dclaser") == 0) {
493 time = StdI->
dt*(double)it;
494 for (ii = 0; ii < 3; ii++) {
495 StdI->
At[it][ii] = StdI->
VecPot[ii] * time;
496 Et[it][ii] = -StdI->
VecPot[ii];
502 fprintf(stdout,
"\n ERROR ! PumpType : %s\n", StdI->
PumpType);
508 fp = fopen(
"potential.dat",
"w");
509 fprintf(fp,
"# Time A_W A_L A_H E_W E_L E_H\n");
511 time = StdI->
dt*(double)it;
512 fprintf(fp,
"%f %f %f %f %f %f %f\n",
513 time, StdI->
At[it][0], StdI->
At[it][1], StdI->
At[it][2], Et[it][0], Et[it][1], Et[it][2]);
519 for (it = 0; it < StdI->
Lanczos_max; it++) free(Et[it]);
528 int it, ii, isite, ipump, jpump, npump0;
532 fp = fopen(
"teone.def",
"w");
533 fprintf(fp,
"=============================================\n");
534 fprintf(fp,
"AllTimeStep %d\n", StdI->
Lanczos_max);
535 fprintf(fp,
"=============================================\n");
536 fprintf(fp,
"========= OneBody Time Evolution ==========\n");
537 fprintf(fp,
"=============================================\n");
542 for (ipump = 0; ipump < StdI->
npump[it]; ipump++) {
543 for (jpump = ipump + 1; jpump < StdI->
npump[it]; jpump++) {
548 StdI->
pump[it][ipump] = StdI->
pump[it][ipump] + StdI->
pump[it][jpump];
549 StdI->
pump[it][jpump] = 0.0;
557 for (ipump = 0; ipump < StdI->
npump[it]; ipump++)
558 if (cabs(StdI->
pump[it][ipump]) > 0.000001) npump0 += 1;
560 fprintf(fp,
"%f %d\n", StdI->
dt*(
double)it, npump0);
561 for (ipump = 0; ipump < StdI->
npump[it]; ipump++) {
563 if (cabs(StdI->
pump[it][ipump]) <= 0.000001)
continue;
565 fprintf(fp,
"%5d %5d %5d %5d %25.15f %25.15f\n",
568 creal(StdI->
pump[it][ipump]), cimag(StdI->
pump[it][ipump]));
571 fprintf(stdout,
" teone.def is written.\n\n");
574 fp = fopen(
"tetwo.def",
"w");
575 fprintf(fp,
"=============================================\n");
576 fprintf(fp,
"AllTimeStep %d\n", StdI->
Lanczos_max);
577 fprintf(fp,
"=============================================\n");
578 fprintf(fp,
"========== TwoBody Time Evolution ===========\n");
579 fprintf(fp,
"=============================================\n");
581 fprintf(fp,
"%f %d\n", StdI->
dt*(
double)it, StdI->
nsite);
582 for (isite = 0; isite < StdI->
nsite; isite++) {
583 fprintf(fp,
"%5d %5d %5d %5d %5d %5d %5d %5d %25.15f %25.15f\n",
584 isite, 0, isite, 0, isite, 1, isite, 1, StdI->
Uquench, 0.0);
587 fprintf(stdout,
" tetwo.def is written.\n\n");
597 static void PrintOrb(
struct StdIntList *StdI) {
599 int isite, jsite, iOrb;
601 fp = fopen(
"orbitalidx.def",
"w");
602 fprintf(fp,
"=============================================\n");
603 fprintf(fp,
"NOrbitalIdx %10d\n", StdI->NOrb);
604 fprintf(fp,
"ComplexType %10d\n", StdI->ComplexType);
605 fprintf(fp,
"=============================================\n");
606 fprintf(fp,
"=============================================\n");
608 for (isite = 0; isite < StdI->
nsite; isite++) {
609 for (jsite = 0; jsite < StdI->
nsite; jsite++) {
611 fprintf(fp,
"%5d %5d %5d %5d\n", isite, jsite, StdI->Orb[isite][jsite], StdI->AntiOrb[isite][jsite]);
614 fprintf(fp,
"%5d %5d %5d\n", isite, jsite, StdI->Orb[isite][jsite]);
619 for (iOrb = 0; iOrb < StdI->NOrb; iOrb++)
620 fprintf(fp,
"%5d %5d\n", iOrb, 1);
624 fprintf(stdout,
" orbitalidx.def is written.\n");
626 for (isite = 0; isite < StdI->
nsite; isite++) free(StdI->Orb[isite]);
633 static void PrintOrbPara(
struct StdIntList *StdI) {
635 int isite, jsite, NOrbGC, iOrbGC, isite1, jsite1, iorb;
636 int **OrbGC, **AntiOrbGC;
640 OrbGC = (
int **)malloc(
sizeof(
int*) * StdI->
nsite);
641 AntiOrbGC = (
int **)malloc(
sizeof(
int*) * StdI->
nsite);
642 for (isite = 0; isite < StdI->
nsite; isite++) {
643 OrbGC[isite] = (
int *)malloc(
sizeof(
int) * StdI->
nsite);
644 AntiOrbGC[isite] = (
int *)malloc(
sizeof(
int) * StdI->
nsite);
645 for (jsite = 0; jsite < StdI->
nsite; jsite++) {
646 OrbGC[isite][jsite] = StdI->Orb[isite][jsite];
647 AntiOrbGC[isite][jsite] = StdI->AntiOrb[isite][jsite];
653 for (iorb = 0; iorb < StdI->NOrb; iorb++) {
654 for (isite = 0; isite < StdI->
nsite; isite++) {
655 for (jsite = 0; jsite < StdI->
nsite; jsite++) {
656 if (OrbGC[isite][jsite] == iorb) {
657 OrbGC[jsite][isite] = OrbGC[isite][jsite];
664 for (isite = 0; isite < StdI->
nsite; isite++) {
665 for (jsite = 0; jsite < isite; jsite++) {
666 if (OrbGC[isite][jsite] >= 0) {
667 iOrbGC = OrbGC[isite][jsite];
669 for (isite1 = 0; isite1 < StdI->
nsite; isite1++) {
670 for (jsite1 = 0; jsite1 < StdI->
nsite; jsite1++) {
671 if (OrbGC[isite1][jsite1] == iOrbGC)
672 OrbGC[isite1][jsite1] = NOrbGC;
680 for (isite = 0; isite < StdI->
nsite; isite++) {
681 for (jsite = 0; jsite < StdI->
nsite; jsite++) {
682 OrbGC[isite][jsite] = -1 - OrbGC[isite][jsite];
686 fp = fopen(
"orbitalidxpara.def",
"w");
687 fprintf(fp,
"=============================================\n");
688 fprintf(fp,
"NOrbitalIdx %10d\n", NOrbGC);
689 fprintf(fp,
"ComplexType %10d\n", StdI->ComplexType);
690 fprintf(fp,
"=============================================\n");
691 fprintf(fp,
"=============================================\n");
693 for (isite = 0; isite < StdI->
nsite; isite++) {
694 for (jsite = 0; jsite < StdI->
nsite; jsite++) {
695 if (isite >= jsite)
continue;
697 fprintf(fp,
"%5d %5d %5d %5d\n", isite, jsite, OrbGC[isite][jsite], AntiOrbGC[isite][jsite]);
699 fprintf(fp,
"%5d %5d %5d\n", isite, jsite, OrbGC[isite][jsite]);
703 for (iOrbGC = 0; iOrbGC < NOrbGC; iOrbGC++)
704 fprintf(fp,
"%5d %5d\n", iOrbGC, 1);
708 fprintf(stdout,
" orbitalidxpara.def is written.\n");
710 for (isite = 0; isite < StdI->
nsite; isite++) {
712 free(AntiOrbGC[isite]);
720 static void PrintGutzwiller(
struct StdIntList *StdI)
723 int iCell, isite, jsite, NGutzwiller, iGutz;
726 Gutz = (
int *)malloc(
sizeof(
int) * StdI->
nsite);
728 if (abs(StdI->NMPTrans) == 1 || StdI->NMPTrans == StdI->
NaN_i) {
729 if (strcmp(StdI->
model,
"hubbard") == 0) NGutzwiller = 0;
730 else NGutzwiller = -1;
732 for (isite = 0; isite < StdI->
nsite; isite++) Gutz[isite] = StdI->Orb[isite][isite];
734 for (isite = 0; isite < StdI->
nsite; isite++) {
743 if (Gutz[isite] >= 0) {
746 for (jsite = 0; jsite < StdI->
nsite; jsite++) {
747 if (Gutz[jsite] == iGutz)
748 Gutz[jsite] = NGutzwiller;
753 NGutzwiller = -NGutzwiller;
754 for (isite = 0; isite < StdI->
nsite; isite++) {
755 Gutz[isite] = -1 - Gutz[isite];
759 if (strcmp(StdI->
model,
"hubbard") == 0) NGutzwiller = StdI->
NsiteUC;
760 else if (strcmp(StdI->
model,
"spin") == 0) NGutzwiller = 1;
761 else NGutzwiller = StdI->
NsiteUC + 1;
763 for (iCell = 0; iCell < StdI->
NCell; iCell++) {
764 for (isite = 0; isite < StdI->
NsiteUC; isite++) {
765 if (strcmp(StdI->
model,
"hubbard") == 0)
766 Gutz[isite + StdI->
NsiteUC*iCell] = isite;
767 else if (strcmp(StdI->
model,
"spin") == 0)
768 Gutz[isite + StdI->
NsiteUC*iCell] = 0;
770 Gutz[isite + StdI->
NsiteUC*iCell] = 0;
771 Gutz[isite + StdI->
NsiteUC*(iCell + StdI->
NCell)] = isite + 1;
777 fp = fopen(
"gutzwilleridx.def",
"w");
778 fprintf(fp,
"=============================================\n");
779 fprintf(fp,
"NGutzwillerIdx %10d\n", NGutzwiller);
780 fprintf(fp,
"ComplexType %10d\n", 0);
781 fprintf(fp,
"=============================================\n");
782 fprintf(fp,
"=============================================\n");
784 for (isite = 0; isite < StdI->
nsite; isite++)
785 fprintf(fp,
"%5d %5d\n", isite, Gutz[isite]);
787 for (iGutz = 0; iGutz < NGutzwiller; iGutz++) {
788 if (strcmp(StdI->
model,
"hubbard") == 0 || iGutz > 0)
789 fprintf(fp,
"%5d %5d\n", iGutz, 1);
791 fprintf(fp,
"%5d %5d\n", iGutz, 0);
795 fprintf(stdout,
" gutzwilleridx.def is written.\n");
812 StdI->
NaN_i = 2147483647;
813 StdI->
pi = acos(-1.0);
816 for (i = 0; i < 3; i++) StdI->
length[i] = NaN_d;
817 for (i = 0; i < 3; i++)
818 for (j = 0; j < 3; j++)
832 for (i = 0; i < 3; i++) {
833 for (j = 0; j < 3; j++) {
834 StdI->
J[i][j] = NaN_d;
835 StdI->
Jp[i][j] = NaN_d;
836 StdI->
Jpp[i][j] = NaN_d;
837 StdI->
J0[i][j] = NaN_d;
838 StdI->
J0p[i][j] = NaN_d;
839 StdI->
J1[i][j] = NaN_d;
840 StdI->
J1p[i][j] = NaN_d;
841 StdI->
J2[i][j] = NaN_d;
842 StdI->
J2p[i][j] = NaN_d;
846 StdI->
D[2][2] = NaN_d;
849 for (i = 0; i < 3; i++)
850 for (j = 0; j < 3; j++)
851 StdI->
direct[i][j] = NaN_d;
874 for (i = 0; i < 3; i++)StdI->
phase[i] = NaN_d;
875 StdI->
pi180 = StdI->
pi / 180.0;
879 strcpy(StdI->
model,
"****\0");
880 strcpy(StdI->
lattice,
"****\0");
892 for (i = 0; i < 3; i++)StdI->
SpectrumQ[i] = NaN_d;
893 strcpy(StdI->
method,
"****\0");
894 strcpy(StdI->
Restart,
"****\0");
913 for (i = 0; i < 3; i++)StdI->
VecPot[i] = NaN_d;;
917 strcpy(StdI->CParaFileHead,
"****\0");
918 StdI->NVMCCalMode = StdI->
NaN_i;
919 StdI->NLanczosMode = StdI->
NaN_i;
920 StdI->NDataIdxStart = StdI->
NaN_i;
921 StdI->NDataQtySmp = StdI->
NaN_i;
922 StdI->NSPGaussLeg = StdI->
NaN_i;
923 StdI->NSPStot = StdI->
NaN_i;
924 StdI->NMPTrans = StdI->
NaN_i;
925 StdI->NSROptItrStep = StdI->
NaN_i;
926 StdI->NSROptItrSmp = StdI->
NaN_i;
927 StdI->DSROptRedCut = NaN_d;
928 StdI->DSROptStaDel = NaN_d;
929 StdI->DSROptStepDt = NaN_d;
930 StdI->NVMCWarmUp = StdI->
NaN_i;
931 StdI->NVMCInterval = StdI->
NaN_i;
932 StdI->NVMCSample = StdI->
NaN_i;
933 StdI->NExUpdatePath = StdI->
NaN_i;
934 StdI->RndSeed = StdI->
NaN_i;
935 StdI->NSplitSize = StdI->
NaN_i;
936 StdI->NStore = StdI->
NaN_i;
937 StdI->NSRCG = StdI->
NaN_i;
938 StdI->ComplexType = StdI->
NaN_i;
939 for (i = 0; i < 3; i++)
940 for (j = 0; j < 3; j++)
941 StdI->boxsub[i][j] = StdI->
NaN_i;
942 StdI->Hsub = StdI->
NaN_i;
943 StdI->Lsub = StdI->
NaN_i;
944 StdI->Wsub = StdI->
NaN_i;
956 valuelen = strlen(value);
957 for (ii = 0; ii < valuelen; ii++) {
958 value2 = tolower(value[ii]);
969 int valuelen, valuelen2, ii;
971 valuelen = strlen(value);
973 for (ii = 0; ii < valuelen; ii++){
974 if (value[ii] !=
' ' &&
983 value2[valuelen2] = value[ii];
988 strncpy(value, value2, valuelen2);
989 value[valuelen2] =
'\0';
1003 if (strcmp(value,
"****") != 0){
1004 fprintf(stdout,
"ERROR ! Keyword %s is duplicated ! \n", keyword);
1008 strcpy(value, valuestring);
1022 if (strcmp(value,
"****") != 0) {
1023 fprintf(stdout,
"ERROR ! Keyword %s is duplicated ! \n", keyword);
1027 strcpy(value, valuestring);
1042 int NaN_i = 2147483647;
1044 if (*value != NaN_i){
1045 fprintf(stdout,
"ERROR ! Keyword %s is duplicated ! \n", keyword);
1049 sscanf(valuestring,
"%d", value);
1063 if (isnan(*value) == 0){
1064 fprintf(stdout,
"ERROR ! Keyword %s is duplicated ! \n", keyword);
1068 sscanf(valuestring,
"%lf", value);
1079 double complex *value
1083 char *valuestring_r, *valuestring_i;
1084 double value_r, value_i;
1086 if (isnan(creal(*value)) == 0) {
1087 fprintf(stdout,
"ERROR ! Keyword %s is duplicated ! \n", keyword);
1092 if (valuestring[0] ==
',') {
1093 valuestring_r = NULL;
1094 valuestring_i = strtok(valuestring,
",");
1097 valuestring_r = strtok(valuestring,
",");
1098 valuestring_i = strtok(NULL,
",");
1101 if (valuestring_r == NULL) {
1105 num = sscanf(valuestring_r,
"%lf", &value_r);
1106 if (num == 1) *value = value_r;
1110 if (valuestring_i == NULL) {
1114 num = sscanf(valuestring_i,
"%lf", &value_i);
1115 if (num == 1) *value += I * value_i;
1116 else *value += I * 0.0;
1126 int isite, nlocspin;
1129 for (isite = 0; isite < StdI->
nsite; isite++)
1130 if (StdI->
locspinflag[isite] != 0) nlocspin = nlocspin + 1;
1132 fp = fopen(
"locspn.def",
"w");
1133 fprintf(fp,
"================================ \n");
1134 fprintf(fp,
"NlocalSpin %5d \n", nlocspin);
1135 fprintf(fp,
"================================ \n");
1136 fprintf(fp,
"========i_0LocSpn_1IteElc ====== \n");
1137 fprintf(fp,
"================================ \n");
1139 for (isite = 0; isite < StdI->
nsite; isite++)
1140 fprintf(fp,
"%5d %5d\n", isite, StdI->
locspinflag[isite]);
1144 fprintf(stdout,
" locspn.def is written.\n");
1152 int jtrans, ktrans, ntrans0;
1154 for (jtrans = 0; jtrans < StdI->
ntrans; jtrans++){
1155 for (ktrans = jtrans + 1; ktrans < StdI->
ntrans; ktrans++){
1161 StdI->
trans[ktrans] = 0.0;
1167 for (ktrans = 0; ktrans < StdI->
ntrans; ktrans++){
1168 if (cabs(StdI->
trans[ktrans]) > 0.000001) ntrans0 = ntrans0 + 1;
1171 fp = fopen(
"trans.def",
"w");
1172 fprintf(fp,
"======================== \n");
1173 fprintf(fp,
"NTransfer %7d \n", ntrans0);
1174 fprintf(fp,
"======================== \n");
1175 fprintf(fp,
"========i_j_s_tijs====== \n");
1176 fprintf(fp,
"======================== \n");
1179 for (ktrans = 0; ktrans < StdI->
ntrans; ktrans++) {
1180 if (cabs(StdI->
trans[ktrans]) > 0.000001)
1181 fprintf(fp,
"%5d %5d %5d %5d %25.15f %25.15f\n",
1184 creal(StdI->
trans[ktrans]), cimag(StdI->
trans[ktrans]));
1189 fprintf(stdout,
" trans.def is written.\n");
1198 fp = fopen(
"namelist.def",
"w");
1199 fprintf( fp,
" ModPara modpara.def\n");
1200 fprintf( fp,
" LocSpin locspn.def\n");
1201 fprintf( fp,
" Trans trans.def\n");
1202 if (StdI->
LCintra == 1) fprintf( fp,
" CoulombIntra coulombintra.def\n");
1203 if (StdI->
LCinter == 1) fprintf( fp,
" CoulombInter coulombinter.def\n");
1204 if (StdI->
LHund == 1)fprintf( fp,
" Hund hund.def\n");
1205 if (StdI->
LEx == 1)fprintf( fp,
" Exchange exchange.def\n");
1206 if (StdI->
LPairLift == 1)fprintf(fp,
" PairLift pairlift.def\n");
1207 if (StdI->
LPairHopp == 1)fprintf(fp,
" PairHop pairhopp.def\n");
1208 if (StdI->
Lintr == 1)fprintf( fp,
" InterAll interall.def\n");
1210 fprintf( fp,
" OneBodyG greenone.def\n");
1211 fprintf( fp,
" TwoBodyG greentwo.def\n");
1214 fprintf( fp,
" CalcMod calcmod.def\n");
1216 fprintf( fp,
"SingleExcitation single.def\n");
1217 else fprintf( fp,
" PairExcitation pair.def\n");
1218 if (strcmp(StdI->
method,
"timeevolution") == 0) {
1220 fprintf(fp,
" TEOneBody teone.def\n");
1222 fprintf(fp,
" TETwoBody tetwo.def\n");
1224 fprintf( fp,
" SpectrumVec %s_eigenvec_0\n",
1226 if (StdI->
lBoost == 1) fprintf( fp,
" Boost boost.def\n");
1227 #elif defined(_mVMC) 1228 fprintf( fp,
" Gutzwiller gutzwilleridx.def\n");
1229 fprintf( fp,
" Jastrow jastrowidx.def\n");
1230 fprintf( fp,
" Orbital orbitalidx.def\n");
1231 if (StdI->
lGC == 1 || (StdI->
Sz2 != 0 && StdI->
Sz2 != StdI->
NaN_i))
1232 fprintf(fp,
" OrbitalParallel orbitalidxpara.def\n");
1233 fprintf( fp,
" TransSym qptransidx.def\n");
1238 fprintf(stdout,
" namelist.def is written.\n");
1248 fp = fopen(
"modpara.def",
"w");
1249 fprintf(fp,
"--------------------\n");
1250 fprintf(fp,
"Model_Parameters 0\n");
1251 fprintf(fp,
"--------------------\n");
1253 fprintf(fp,
"HPhi_Cal_Parameters\n");
1254 fprintf(fp,
"--------------------\n");
1256 fprintf(fp,
"CParaFileHead zqp\n");
1257 fprintf(fp,
"--------------------\n");
1258 fprintf(fp,
"Nsite %-5d\n", StdI->
nsite);
1259 if (StdI->
Sz2 != StdI->
NaN_i) fprintf(fp,
"2Sz %-5d\n", StdI->
Sz2);
1260 if (StdI->
nelec != StdI->
NaN_i) fprintf(fp,
"Ncond %-5d\n", StdI->
nelec);
1261 fprintf(fp,
"Lanczos_max %-5d\n", StdI->
Lanczos_max);
1262 fprintf(fp,
"initial_iv %-5d\n", StdI->
initial_iv);
1263 if(StdI->
nvec != StdI->
NaN_i) fprintf(fp,
"nvec %-5d\n", StdI->
nvec);
1264 fprintf(fp,
"exct %-5d\n", StdI->
exct);
1265 fprintf(fp,
"LanczosEps %-5d\n", StdI->
LanczosEps);
1267 fprintf(fp,
"LargeValue %-25.15e\n", StdI->
LargeValue);
1268 fprintf(fp,
"NumAve %-5d\n", StdI->
NumAve);
1270 fprintf(fp,
"NOmega %-5d\n", StdI->
Nomega);
1271 fprintf(fp,
"OmegaMax %-25.15e %-25.15e\n", StdI->
OmegaMax, StdI->
OmegaIm);
1272 fprintf(fp,
"OmegaMin %-25.15e %-25.15e\n", StdI->
OmegaMin, StdI->
OmegaIm);
1273 fprintf(fp,
"OmegaOrg 0.0 0.0\n");
1274 if (strcmp(StdI->
method,
"timeevolution") == 0)
1275 fprintf(fp,
"ExpandCoef %-5d\n", StdI->
ExpandCoef);
1276 #elif defined(_mVMC) 1277 fprintf(fp,
"VMC_Cal_Parameters\n");
1278 fprintf(fp,
"--------------------\n");
1280 fprintf(fp,
"CParaFileHead %s\n", StdI->CParaFileHead);
1281 fprintf(fp,
"--------------------\n");
1282 fprintf(fp,
"NVMCCalMode %d\n", StdI->NVMCCalMode);
1284 fprintf(fp,
"--------------------\n");
1285 fprintf(fp,
"NDataIdxStart %d\n", StdI->NDataIdxStart);
1286 fprintf(fp,
"NDataQtySmp %d\n", StdI->NDataQtySmp);
1287 fprintf(fp,
"--------------------\n");
1288 fprintf(fp,
"Nsite %d\n", StdI->
nsite);
1289 fprintf(fp,
"Ncond %-5d\n", StdI->
nelec);
1291 fprintf(fp,
"2Sz %d\n", StdI->
Sz2);
1292 if (StdI->NSPGaussLeg != StdI->
NaN_i)
1293 fprintf(fp,
"NSPGaussLeg %d\n", StdI->NSPGaussLeg);
1294 if (StdI->NSPStot != StdI->
NaN_i)
1295 fprintf(fp,
"NSPStot %d\n", StdI->NSPStot);
1296 fprintf(fp,
"NMPTrans %d\n", StdI->NMPTrans);
1297 fprintf(fp,
"NSROptItrStep %d\n", StdI->NSROptItrStep);
1298 fprintf(fp,
"NSROptItrSmp %d\n", StdI->NSROptItrSmp);
1299 fprintf(fp,
"DSROptRedCut %.10f\n", StdI->DSROptRedCut);
1300 fprintf(fp,
"DSROptStaDel %.10f\n", StdI->DSROptStaDel);
1301 fprintf(fp,
"DSROptStepDt %.10f\n", StdI->DSROptStepDt);
1302 fprintf(fp,
"NVMCWarmUp %d\n", StdI->NVMCWarmUp);
1303 fprintf(fp,
"NVMCInterval %d\n", StdI->NVMCInterval);
1304 fprintf(fp,
"NVMCSample %d\n", StdI->NVMCSample);
1305 fprintf(fp,
"NExUpdatePath %d\n", StdI->NExUpdatePath);
1306 fprintf(fp,
"RndSeed %d\n", StdI->RndSeed);
1307 fprintf(fp,
"NSplitSize %d\n", StdI->NSplitSize);
1308 fprintf(fp,
"NStore %d\n", StdI->NStore);
1309 fprintf(fp,
"NSRCG %d\n", StdI->NSRCG);
1314 fprintf(stdout,
" modpara.def is written.\n");
1323 int ngreen, igreen, store, xkondo;
1324 int isite, jsite, ispin, jspin, SiMax, SjMax;
1331 for (store = 0; store < 2; store++) {
1334 greenindx = (
int **)malloc(
sizeof(
int*) * (ngreen + 1));
1335 for (igreen = 0; igreen < ngreen; igreen++) {
1336 greenindx[igreen] = (
int *)malloc(
sizeof(
int) * 4);
1341 if (strcmp(StdI->
model,
"kondo") == 0) xkondo = 2;
1345 for (isite = 0; isite < StdI->
NsiteUC*xkondo; isite++) {
1352 for (ispin = 0; ispin <= SiMax; ispin++) {
1353 for (jsite = 0; jsite < StdI->
nsite; jsite++) {
1358 for (jspin = 0; jspin <= SjMax; jspin++) {
1360 if (isite != jsite &&
1363 if (ispin == jspin){
1365 greenindx[ngreen][0] = isite;
1366 greenindx[ngreen][1] = ispin;
1367 greenindx[ngreen][2] = jsite;
1368 greenindx[ngreen][3] = jspin;
1379 for (isite = 0; isite < StdI->
nsite; isite++) {
1384 for (ispin = 0; ispin <= SiMax; ispin++) {
1385 for (jsite = 0; jsite < StdI->
nsite; jsite++) {
1390 for (jspin = 0; jspin <= SjMax; jspin++) {
1392 if (isite != jsite &&
1396 greenindx[ngreen][0] = isite;
1397 greenindx[ngreen][1] = ispin;
1398 greenindx[ngreen][2] = jsite;
1399 greenindx[ngreen][3] = jspin;
1410 fp = fopen(
"greenone.def",
"w");
1411 fprintf(fp,
"===============================\n");
1412 fprintf(fp,
"NCisAjs %10d\n", ngreen);
1413 fprintf(fp,
"===============================\n");
1414 fprintf(fp,
"======== Green functions ======\n");
1415 fprintf(fp,
"===============================\n");
1416 for (igreen = 0; igreen < ngreen; igreen++) {
1417 fprintf(fp,
"%5d %5d %5d %5d\n",
1418 greenindx[igreen][0], greenindx[igreen][1], greenindx[igreen][2], greenindx[igreen][3]);
1423 fprintf(stdout,
" greenone.def is written.\n");
1425 for (igreen = 0; igreen < ngreen; igreen++) {
1426 free(greenindx[igreen]);
1438 int ngreen, store, igreen, xkondo;
1439 int site1, site2, site3, site4;
1440 int spin1, spin2, spin3, spin4;
1441 int S1Max, S2Max, S3Max, S4Max;
1448 for (store = 0; store < 2; store++) {
1451 greenindx = (
int **)malloc(
sizeof(
int*) * (ngreen + 1));
1452 for (igreen = 0; igreen < ngreen; igreen++)
1453 greenindx[igreen] = (
int *)malloc(
sizeof(
int) * 8);
1457 if (strcmp(StdI->
model,
"kondo") == 0) xkondo = 2;
1460 for (site1 = 0; site1 < StdI->
NsiteUC*xkondo; site1++) {
1466 for (spin1 = 0; spin1 <= S1Max; spin1++) {
1467 for (spin2 = 0; spin2 <= S1Max; spin2++) {
1469 for (site3 = 0; site3 < StdI->
nsite; site3++) {
1473 for (spin3 = 0; spin3 <= S3Max; spin3++) {
1474 for (spin4 = 0; spin4 <= S3Max; spin4++) {
1476 if (spin1 - spin2 + spin3 - spin4 == 0) {
1479 if (spin1 != spin2 || spin3 != spin4)
1481 greenindx[ngreen][0] = site1;
1482 greenindx[ngreen][1] = spin1;
1483 greenindx[ngreen][2] = site3;
1484 greenindx[ngreen][3] = spin4;
1485 greenindx[ngreen][4] = site3;
1486 greenindx[ngreen][5] = spin3;
1487 greenindx[ngreen][6] = site1;
1488 greenindx[ngreen][7] = spin2;
1493 greenindx[ngreen][0] = site1;
1494 greenindx[ngreen][1] = spin1;
1495 greenindx[ngreen][2] = site1;
1496 greenindx[ngreen][3] = spin2;
1497 greenindx[ngreen][4] = site3;
1498 greenindx[ngreen][5] = spin3;
1499 greenindx[ngreen][6] = site3;
1500 greenindx[ngreen][7] = spin4;
1516 for (store = 0; store < 2; store++) {
1519 greenindx = (
int **)malloc(
sizeof(
int*) * (ngreen + 1));
1520 for (igreen = 0; igreen < ngreen; igreen++)
1521 greenindx[igreen] = (
int *)malloc(
sizeof(
int) * 8);
1525 for (site1 = 0; site1 < StdI->
nsite; site1++) {
1529 for (spin1 = 0; spin1 <= S1Max; spin1++) {
1531 for (site2 = 0; site2 < StdI->
nsite; site2++) {
1534 && site1 != site2)
continue;
1538 for (spin2 = 0; spin2 <= S2Max; spin2++) {
1540 for (site3 = 0; site3 < StdI->
nsite; site3++) {
1544 for (spin3 = 0; spin3 <= S3Max; spin3++) {
1546 for (site4 = 0; site4 < StdI->
nsite; site4++) {
1549 && site3 != site4)
continue;
1553 for (spin4 = 0; spin4 <= S4Max; spin4++) {
1556 greenindx[ngreen][0] = site1;
1557 greenindx[ngreen][1] = spin1;
1558 greenindx[ngreen][2] = site2;
1559 greenindx[ngreen][3] = spin2;
1560 greenindx[ngreen][4] = site3;
1561 greenindx[ngreen][5] = spin3;
1562 greenindx[ngreen][6] = site4;
1563 greenindx[ngreen][7] = spin4;
1579 fp = fopen(
"greentwo.def",
"w");
1580 fprintf(fp,
"=============================================\n");
1581 fprintf(fp,
"NCisAjsCktAltDC %10d\n", ngreen);
1582 fprintf(fp,
"=============================================\n");
1583 fprintf(fp,
"======== Green functions for Sq AND Nq ======\n");
1584 fprintf(fp,
"=============================================\n");
1585 for (igreen = 0; igreen < ngreen; igreen++) {
1586 fprintf(fp,
"%5d %5d %5d %5d %5d %5d %5d %5d\n",
1587 greenindx[igreen][0], greenindx[igreen][1], greenindx[igreen][2], greenindx[igreen][3],
1588 greenindx[igreen][4], greenindx[igreen][5], greenindx[igreen][6], greenindx[igreen][7]);
1593 fprintf(stdout,
" greentwo.def is written.\n");
1595 for (igreen = 0; igreen < ngreen; igreen++) {
1596 free(greenindx[igreen]);
1610 fprintf(stdout,
"\nSorry, specified combination, \n");
1611 fprintf(stdout,
" MODEL : %s \n", model);
1612 fprintf(stdout,
" LATTICE : %s, \n", lattice);
1613 fprintf(stdout,
"is unsupported in the STANDARD MODE...\n");
1614 fprintf(stdout,
"Please use the EXPART MODE, or write a NEW FUNCTION and post us.\n");
1630 fprintf(stdout,
" ioutputmode = %-10d\n", StdI->
ioutputmode);
1632 else if (strcmp(StdI->
outputmode,
"cor") == 0
1634 || strcmp(StdI->
outputmode,
"correlation") == 0) {
1636 fprintf(stdout,
" ioutputmode = %-10d\n", StdI->
ioutputmode);
1638 else if (strcmp(StdI->
outputmode,
"****") == 0) {
1640 fprintf(stdout,
" ioutputmode = %-10d ###### DEFAULT VALUE IS USED ######\n", StdI->
ioutputmode);
1642 else if (strcmp(StdI->
outputmode,
"raw") == 0
1646 fprintf(stdout,
" ioutputmode = %-10d\n", StdI->
ioutputmode);
1649 fprintf(stdout,
"\n ERROR ! Unsupported OutPutMode : %s\n", StdI->
outputmode);
1676 #elif defined(_mVMC) 1677 if (strcmp(StdI->CParaFileHead,
"****") == 0) {
1678 strcpy(StdI->CParaFileHead,
"zqp\0");
1679 fprintf(stdout,
" CParaFileHead = %-12s###### DEFAULT VALUE IS USED ######\n", StdI->CParaFileHead);
1681 else fprintf(stdout,
" CParaFileHead = %-s\n", StdI->CParaFileHead);
1687 if (StdI->NVMCCalMode == 0)
StdFace_NotUsed_i(
"NDataQtySmp", StdI->NDataQtySmp);
1690 if (StdI->
lGC == 0 && (StdI->
Sz2 == 0 || StdI->
Sz2 == StdI->
NaN_i)) {
1705 if (StdI->NVMCCalMode == 1)
StdFace_NotUsed_i(
"NSROptItrSmp", StdI->NSROptItrSmp);
1712 if (strcmp(StdI->
model,
"hubbard") == 0) StdI->NExUpdatePath = 0;
1713 else if (strcmp(StdI->
model,
"spin") == 0) StdI->NExUpdatePath = 2;
1714 else if (strcmp(StdI->
model,
"kondo") == 0) {
1715 if(StdI->
lGC==0) StdI->NExUpdatePath = 1;
1716 else StdI->NExUpdatePath = 3;
1718 fprintf(stdout,
" %15s = %-10d\n",
"NExUpdatePath", StdI->NExUpdatePath);
1732 if (strcmp(StdI->
model,
"hubbard") == 0){
1745 else if (strcmp(StdI->
model,
"spin") == 0) {
1753 else if (strcmp(StdI->
model,
"kondo") == 0) {
1774 int nintr0, kintr, jintr;
1778 for (kintr = 0; kintr < StdI->
NCintra; kintr++) {
1779 for (jintr = kintr + 1; jintr < StdI->
NCintra; jintr++)
1783 StdI->
Cintra[jintr] = 0.0;
1787 for (kintr = 0; kintr < StdI->
NCintra; kintr++) {
1788 if (fabs(StdI->
Cintra[kintr]) > 0.000001) nintr0 = nintr0 + 1;
1794 fp = fopen(
"coulombintra.def",
"w");
1795 fprintf(fp,
"=============================================\n");
1796 fprintf(fp,
"NCoulombIntra %10d\n", nintr0);
1797 fprintf(fp,
"=============================================\n");
1798 fprintf(fp,
"================== CoulombIntra ================\n");
1799 fprintf(fp,
"=============================================\n");
1800 for (kintr = 0; kintr < StdI->
NCintra; kintr++) {
1801 if (fabs(StdI->
Cintra[kintr]) > 0.000001)
1802 fprintf(fp,
"%5d %25.15f\n",
1807 fprintf(stdout,
" coulombintra.def is written.\n");
1812 for (kintr = 0; kintr < StdI->
NCinter; kintr++) {
1813 for (jintr = kintr + 1; jintr < StdI->
NCinter; jintr++)
1823 StdI->
Cinter[jintr] = 0.0;
1827 for (kintr = 0; kintr < StdI->
NCinter; kintr++) {
1828 if (fabs(StdI->
Cinter[kintr]) > 0.000001) nintr0 = nintr0 + 1;
1834 fp = fopen(
"coulombinter.def",
"w");
1835 fprintf(fp,
"=============================================\n");
1836 fprintf(fp,
"NCoulombInter %10d\n", nintr0);
1837 fprintf(fp,
"=============================================\n");
1838 fprintf(fp,
"================== CoulombInter ================\n");
1839 fprintf(fp,
"=============================================\n");
1840 for (kintr = 0; kintr < StdI->
NCinter; kintr++) {
1841 if (fabs(StdI->
Cinter[kintr]) > 0.000001)
1842 fprintf(fp,
"%5d %5d %25.15f\n",
1847 fprintf(stdout,
" coulombinter.def is written.\n");
1852 for (kintr = 0; kintr < StdI->
NHund; kintr++) {
1853 for (jintr = kintr + 1; jintr < StdI->
NHund; jintr++)
1862 StdI->
Hund[kintr] += StdI->
Hund[jintr];
1863 StdI->
Hund[jintr] = 0.0;
1867 for (kintr = 0; kintr < StdI->
NHund; kintr++) {
1868 if (fabs(StdI->
Hund[kintr]) > 0.000001) nintr0 = nintr0 + 1;
1870 if (nintr0 == 0 || StdI->
lBoost == 1) StdI->
LHund = 0;
1871 else StdI->
LHund = 1;
1873 if (StdI->
LHund == 1) {
1874 fp = fopen(
"hund.def",
"w");
1875 fprintf(fp,
"=============================================\n");
1876 fprintf(fp,
"NHund %10d\n", nintr0);
1877 fprintf(fp,
"=============================================\n");
1878 fprintf(fp,
"=============== Hund coupling ===============\n");
1879 fprintf(fp,
"=============================================\n");
1880 for (kintr = 0; kintr < StdI->
NHund; kintr++) {
1881 if (fabs(StdI->
Hund[kintr]) > 0.000001)
1882 fprintf(fp,
"%5d %5d %25.15f\n",
1887 fprintf(stdout,
" hund.def is written.\n");
1892 for (kintr = 0; kintr < StdI->
NEx; kintr++) {
1893 for (jintr = kintr + 1; jintr < StdI->
NEx; jintr++)
1902 StdI->
Ex[kintr] += StdI->
Ex[jintr];
1903 StdI->
Ex[jintr] = 0.0;
1907 for (kintr = 0; kintr < StdI->
NEx; kintr++) {
1908 if (fabs(StdI->
Ex[kintr]) > 0.000001) nintr0 = nintr0 + 1;
1910 if (nintr0 == 0 || StdI->
lBoost == 1) StdI->
LEx = 0;
1913 if (StdI->
LEx == 1) {
1914 fp = fopen(
"exchange.def",
"w");
1915 fprintf(fp,
"=============================================\n");
1916 fprintf(fp,
"NExchange %10d\n", nintr0);
1917 fprintf(fp,
"=============================================\n");
1918 fprintf(fp,
"====== ExchangeCoupling coupling ============\n");
1919 fprintf(fp,
"=============================================\n");
1920 for (kintr = 0; kintr < StdI->
NEx; kintr++) {
1921 if (fabs(StdI->
Ex[kintr]) > 0.000001)
1922 fprintf(fp,
"%5d %5d %25.15f\n",
1923 StdI->
ExIndx[kintr][0], StdI->
ExIndx[kintr][1], StdI->
Ex[kintr]);
1927 fprintf(stdout,
" exchange.def is written.\n");
1932 for (kintr = 0; kintr < StdI->
NPairLift; kintr++) {
1933 for (jintr = kintr + 1; jintr < StdI->
NPairLift; jintr++)
1947 for (kintr = 0; kintr < StdI->
NPairLift; kintr++) {
1948 if (fabs(StdI->
PairLift[kintr]) > 0.000001) nintr0 = nintr0 + 1;
1954 fp = fopen(
"pairlift.def",
"w");
1955 fprintf(fp,
"=============================================\n");
1956 fprintf(fp,
"NPairLift %10d\n", nintr0);
1957 fprintf(fp,
"=============================================\n");
1958 fprintf(fp,
"====== Pair-Lift term ============\n");
1959 fprintf(fp,
"=============================================\n");
1960 for (kintr = 0; kintr < StdI->
NPairLift; kintr++) {
1961 if (fabs(StdI->
PairLift[kintr]) > 0.000001)
1962 fprintf(fp,
"%5d %5d %25.15f\n",
1967 fprintf(stdout,
" pairlift.def is written.\n");
1972 for (kintr = 0; kintr < StdI->
NPairHopp; kintr++) {
1973 for (jintr = kintr + 1; jintr < StdI->
NPairHopp; jintr++)
1987 for (kintr = 0; kintr < StdI->
NPairHopp; kintr++) {
1988 if (fabs(StdI->
PairHopp[kintr]) > 0.000001) nintr0 = nintr0 + 1;
1994 fp = fopen(
"pairhopp.def",
"w");
1995 fprintf(fp,
"=============================================\n");
1996 fprintf(fp,
"NPairHopp %10d\n", nintr0);
1997 fprintf(fp,
"=============================================\n");
1998 fprintf(fp,
"====== Pair-Hopping term ============\n");
1999 fprintf(fp,
"=============================================\n");
2000 for (kintr = 0; kintr < StdI->
NPairHopp; kintr++) {
2001 if (fabs(StdI->
PairHopp[kintr]) > 0.000001)
2002 fprintf(fp,
"%5d %5d %25.15f\n",
2007 fprintf(stdout,
" pairhopp.def is written.\n");
2012 for (jintr = 0; jintr < StdI->
nintr; jintr++) {
2013 for (kintr = jintr + 1; kintr < StdI->
nintr; kintr++) {
2033 StdI->
intr[jintr] = StdI->
intr[jintr] + StdI->
intr[kintr];
2034 StdI->
intr[kintr] = 0.0;
2055 StdI->
intr[jintr] = StdI->
intr[jintr] - StdI->
intr[kintr];
2056 StdI->
intr[kintr] = 0.0;
2061 for (jintr = 0; jintr < StdI->
nintr; jintr++) {
2062 for (kintr = jintr + 1; kintr < StdI->
nintr; kintr++) {
2109 StdI->
intr[kintr] = -StdI->
intr[kintr];
2114 for (jintr = 0; jintr < StdI->
nintr; jintr++) {
2136 StdI->
intr[jintr] = 0.0;
2141 for (kintr = 0; kintr < StdI->
nintr; kintr++) {
2142 if (cabs(StdI->
intr[kintr]) > 0.000001) nintr0 = nintr0 + 1;
2144 if (nintr0 == 0 || StdI->
lBoost == 1) StdI->
Lintr = 0;
2145 else StdI->
Lintr = 1;
2147 if (StdI->
Lintr == 1) {
2148 fp = fopen(
"interall.def",
"w");
2149 fprintf(fp,
"====================== \n");
2150 fprintf(fp,
"NInterAll %7d \n", nintr0);
2151 fprintf(fp,
"====================== \n");
2152 fprintf(fp,
"========zInterAll===== \n");
2153 fprintf(fp,
"====================== \n");
2157 for (kintr = 0; kintr < StdI->
nintr; kintr++) {
2158 if (cabs(StdI->
intr[kintr]) > 0.000001)
2159 fprintf(fp,
"%5d %5d %5d %5d %5d %5d %5d %5d %25.15f %25.15f\n",
2164 creal(StdI->
intr[kintr]), cimag(StdI->
intr[kintr]));
2170 fprintf(stdout,
" interall.def is written.\n");
2185 char *keyword, *value;
2189 fprintf(stdout,
"\n###### Input Parameter of Standard Intarface ######\n");
2190 if ((fp = fopen(fname,
"r")) == NULL) {
2191 fprintf(stdout,
"\n ERROR ! Cannot open input file %s !\n\n", fname);
2195 fprintf(stdout,
"\n Open Standard-Mode Inputfile %s \n\n", fname);
2200 while (fgets(ctmpline, 256, fp) != NULL) {
2203 if (strncmp(ctmpline,
"//", 2) == 0) {
2204 fprintf(stdout,
" Skipping a line.\n");
2207 else if (ctmpline[0] ==
'\0') {
2208 fprintf(stdout,
" Skipping a line.\n");
2211 keyword = strtok(ctmpline,
"=");
2212 value = strtok(NULL,
"=");
2213 if (value == NULL) {
2214 fprintf(stdout,
"\n ERROR ! \"=\" is NOT found !\n\n");
2218 fprintf(stdout,
" KEYWORD : %-20s | VALUE : %s \n", keyword, value);
2407 #elif defined(_mVMC) 2408 else if (strcmp(keyword,
"a0hsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[0][2]);
2409 else if (strcmp(keyword,
"a0lsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[0][1]);
2410 else if (strcmp(keyword,
"a0wsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[0][0]);
2411 else if (strcmp(keyword,
"a1hsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[1][2]);
2412 else if (strcmp(keyword,
"a1lsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[1][1]);
2413 else if (strcmp(keyword,
"a1wsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[1][0]);
2414 else if (strcmp(keyword,
"a2hsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[2][2]);
2415 else if (strcmp(keyword,
"a2lsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[2][1]);
2416 else if (strcmp(keyword,
"a2wsub") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->boxsub[2][0]);
2417 else if (strcmp(keyword,
"complextype") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->ComplexType);
2418 else if (strcmp(keyword,
"cparafilehead") == 0)
StoreWithCheckDup_s(keyword, value, StdI->CParaFileHead);
2419 else if (strcmp(keyword,
"dsroptredcut") == 0)
StoreWithCheckDup_d(keyword, value, &StdI->DSROptRedCut);
2420 else if (strcmp(keyword,
"dsroptstadel") == 0)
StoreWithCheckDup_d(keyword, value, &StdI->DSROptStaDel);
2421 else if (strcmp(keyword,
"dsroptstepdt") == 0)
StoreWithCheckDup_d(keyword, value, &StdI->DSROptStepDt);
2424 else if (strcmp(keyword,
"nvmccalmode") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NVMCCalMode);
2425 else if (strcmp(keyword,
"ndataidxstart") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NDataIdxStart);
2426 else if (strcmp(keyword,
"ndataqtysmp") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NDataQtySmp);
2427 else if (strcmp(keyword,
"nlanczosmode") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NLanczosMode);
2428 else if (strcmp(keyword,
"nmptrans") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NMPTrans);
2429 else if (strcmp(keyword,
"nspgaussleg") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NSPGaussLeg);
2430 else if (strcmp(keyword,
"nsplitsize") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NSplitSize);
2431 else if (strcmp(keyword,
"nspstot") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NSPStot);
2432 else if (strcmp(keyword,
"nsroptitrsmp") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NSROptItrSmp);
2433 else if (strcmp(keyword,
"nsroptitrstep") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NSROptItrStep);
2434 else if (strcmp(keyword,
"nstore") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NStore);
2435 else if (strcmp(keyword,
"nsrcg") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NSRCG);
2436 else if (strcmp(keyword,
"nvmcinterval") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NVMCInterval);
2437 else if (strcmp(keyword,
"nvmcsample") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NVMCSample);
2438 else if (strcmp(keyword,
"nvmcwarmup") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->NVMCWarmUp);
2439 else if (strcmp(keyword,
"rndseed") == 0)
StoreWithCheckDup_i(keyword, value, &StdI->RndSeed);
2443 fprintf(stdout,
"ERROR ! Unsupported Keyword !\n");
2449 fprintf(stdout,
"\n");
2450 fprintf(stdout,
"####### Construct Model #######\n");
2451 fprintf(stdout,
"\n");
2457 fprintf(stdout,
" CDataFileHead = %-12s###### DEFAULT VALUE IS USED ######\n", StdI->
CDataFileHead);
2459 else fprintf(stdout,
" CDataFileHead = %-s\n", StdI->
CDataFileHead);
2463 if (strcmp(StdI->
model,
"fermionhubbard") == 0
2464 || strcmp(StdI->
model,
"hubbard") == 0)
2465 strcpy(StdI->
model,
"hubbard\0");
2466 else if(strcmp(StdI->
model,
"fermionhubbardgc") == 0
2467 || strcmp(StdI->
model,
"hubbardgc") == 0) {
2468 strcpy(StdI->
model,
"hubbard\0");
2471 else if (strcmp(StdI->
model,
"spin") == 0)
2472 strcpy(StdI->
model,
"spin\0");
2473 else if (strcmp(StdI->
model,
"spingc") == 0) {
2474 strcpy(StdI->
model,
"spin\0");
2478 else if(strcmp(StdI->
model,
"spingcboost") == 0 ||
2479 strcmp(StdI->
model,
"spingccma") == 0) {
2480 strcpy(StdI->
model,
"spin\0");
2485 else if (strcmp(StdI->
model,
"kondolattice") == 0
2486 || strcmp(StdI->
model,
"kondo") == 0) {
2487 strcpy(StdI->
model,
"kondo\0");
2489 else if(strcmp(StdI->
model,
"kondolatticegc") == 0
2490 || strcmp(StdI->
model,
"kondogc") == 0) {
2491 strcpy(StdI->
model,
"kondo\0");
2499 if (strcmp(StdI->
method,
"direct") == 0
2500 || strcmp(StdI->
method,
"alldiag") == 0)
2501 strcpy(StdI->
method,
"fulldiag\0");
2502 else if (strcmp(StdI->
method,
"te") == 0
2503 || strcmp(StdI->
method,
"time-evolution") == 0) {
2504 strcpy(StdI->
method,
"timeevolution\0");
2514 if (strcmp(StdI->
lattice,
"chain") == 0
2516 else if (strcmp(StdI->
lattice,
"face-centeredorthorhombic") == 0
2517 || strcmp(StdI->
lattice,
"fcorthorhombic") == 0
2519 else if (strcmp(StdI->
lattice,
"honeycomb") == 0
2521 else if (strcmp(StdI->
lattice,
"kagome") == 0
2523 else if (strcmp(StdI->
lattice,
"ladder") == 0
2525 else if (strcmp(StdI->
lattice,
"orthorhombic") == 0
2528 else if (strcmp(StdI->
lattice,
"tetragonal") == 0
2529 || strcmp(StdI->
lattice,
"tetragonallattice") == 0
2530 || strcmp(StdI->
lattice,
"square") == 0
2532 else if (strcmp(StdI->
lattice,
"triangular") == 0
2543 if (strcmp(StdI->
lattice,
"chain") == 0
2545 else if (strcmp(StdI->
lattice,
"honeycomb") == 0
2547 else if (strcmp(StdI->
lattice,
"kagome") == 0
2549 else if (strcmp(StdI->
lattice,
"ladder") == 0
2555 fprintf(stdout,
"\n");
2556 fprintf(stdout,
"###### Print Expert input files ######\n");
2557 fprintf(stdout,
"\n");
2567 #elif defined(_mVMC) 2569 if(StdI->
lGC == 0 && (StdI->
Sz2 == 0 || StdI->
Sz2 == StdI->
NaN_i))
2573 StdFace_generate_orb(StdI);
2576 if(StdI->
lGC == 1 || (StdI->
Sz2 != 0 && StdI->
Sz2 != StdI->
NaN_i) )
2578 PrintGutzwiller(StdI);
2589 for (ktrans = 0; ktrans < StdI->
ntrans; ktrans++) {
2594 for (kintr = 0; kintr < StdI->
nintr; kintr++) {
2600 fprintf(stdout,
"\n###### Input files are generated. ######\n\n");
static void StdFace_ResetVals(struct StdIntList *StdI)
Clear grobal variables in the standard mode All variables refered in this function is modified...
void StdFace_Triangular(struct StdIntList *StdI)
Setup a Hamiltonian for the Triangular lattice.
double OmegaIm
Imaginary part of frequency.
static void PrintCalcMod(struct StdIntList *StdI)
Print calcmod.def.
void StdFace_PrintVal_i(char *valname, int *val, int val0)
Print a valiable (integer) read from the input file if it is not specified in the input file (=214748...
int NPairHopp
Number of pair-hopping term, counted in each lattice file.
char Restart[256]
The name of restart mode, input from file.
static void PrintInteractions(struct StdIntList *StdI)
Output .def file for Specific interaction.
static void Print2Green(struct StdIntList *StdI)
Print greentwo.def.
static void PrintNamelist(struct StdIntList *StdI)
Print namelist.def
double V2
Anisotropic Coulomb potential (1st), input parameter.
int LEx
Print exchange.def or not, set in PrintInteractions().
int NHund
Number of Hund term, counted in each lattice file.
static void StoreWithCheckDup_sl(char *keyword, char *valuestring, char *value)
Store an input value into the valiable (string) Force string lower. If duplicated, HPhi will stop.
double tshift
Shift of time-step of laser.
double Jp[3][3]
Isotropic, diagonal/off-diagonal spin coupling (2nd Near.), input parameter J'x, J'y, J'z, J'xy, etc.
int box[3][3]
The shape of the super-cell. Input parameter a0W, a0L, a0H, etc. or defined from StdIntList::W, etc. in StdFace_InitSite().
double complex t2p
Anisotropic hopping (2nd), input parameter.
double cutoff_t
Cutoof for the hopping in wannier90, input from file.
double J[3][3]
Isotropic, diagonal/off-diagonal spin coupling (1st Near.), input parameter Jx, Jy, Jz, Jxy, etc.
int L
Number of sites along the 2nd axis, input parameter.
static void CheckOutputMode(struct StdIntList *StdI)
Verify outputmode.
int ExpandCoef
The number of Hamiltonian-vector operation for the time-evolution.
double complex * intr
[StdIntList::nintr] Coefficient of general two-body term, malloc in StdFace_MallocInteractions() and ...
double D[3][3]
Coefficient for input parameter D. Only D[2][2] is used.
double J1p[3][3]
Isotropic, diagonal/off-diagonal spin coupling (2nd Near.), input parameter J1'x, J1'y...
void StdFace_Ladder_Boost(struct StdIntList *StdI)
double pi180
, set in StdFace_ResetVals().
int initial_iv
the number for generating random number, input from file.
double ** At
[StdIntList::nt][3] Vector potential.
int LCinter
Print coulombinter.def or not, set in PrintInteractions().
int NumAve
Number of trials for TPQ calculation.
double * Ex
[StdIntList::NEx] Coefficient of exchange term, malloc in StdFace_MallocInteractions() and set in Std...
double JpAll
Isotropic, diagonal spin coupling (2nd Near), input parameter Jp.
void StdFace_Chain(struct StdIntList *StdI)
Setup a Hamiltonian for the Hubbard model on a Chain lattice.
int LCintra
Print coulombintra.def or not, set in PrintInteractions().
double J1[3][3]
Isotropic, diagonal/off-diagonal spin coupling (1st Near.), input parameter J1x, J1y, J1z, J1xy, etc. or set in StdFace_InputSpinNN().
int ioutputmode
Switch associated to StdIntList::outputmode.
int ** PLIndx
[StdIntList::NPairLift][2] Site indices of pair-lift term, malloc in StdFace_MallocInteractions() and...
double J2p[3][3]
Isotropic, diagonal/off-diagonal spin coupling (2nd Near.), input parameter J2'x, J2'y...
double complex * trans
[StdIntList::ntrans] Coefficient of one-body term, malloc in StdFace_MallocInteractions() and set in ...
char SpectrumType[256]
The type of mode for spectrum, input from file.
static void Text2Lower(char *value)
double complex t
Nearest-neighbor hopping, input parameter.
double JAll
Isotropic, diagonal spin coupling (1st Near.), input parameter J.
static void PrintPump(struct StdIntList *StdI)
Print single.def or pair.def.
int S2
Total spin |S| of a local spin, input from file.
int Nomega
Number of frequencies, input from file.
int ** ExIndx
[StdIntList::NEx][2] Site indices of exchange term, malloc in StdFace_MallocInteractions() and set in...
char CalcSpec[256]
The name of mode for spectrum, input from file.
double cutoff_j
Cutoof for the Hund in wannier90, input from file.
int NsiteUC
Number of sites in the unit cell. Defined in the beginning of each lattice function.
static void UnsupportedSystem(char *model, char *lattice)
Stop HPhi if unsupported model is read.
double J1All
Anisotropic, diagonal spin coupling (1nd Near), input parameter J1.
void StdFace_Chain_Boost(struct StdIntList *StdI)
Setup a Hamiltonian for the generalized Heisenberg model on a Chain lattice.
double V0p
Anisotropic Coulomb potential (2nd), input parameter.
double OmegaMax
Maximum of frequency for spectrum, input from file.
int W
Number of sites along the 1st axis, input parameter.
double VecPot[3]
Vector potential.
double V2p
Anisotropic Coulomb potential (2nd), input parameter.
double complex tpp
3rd-nearest hopping, input parameter
int ntrans
Number of transfer, counted in each lattice file.
char model[256]
Name of model, input parameter.
static void PrintExcitation(struct StdIntList *StdI)
Print single.def or pair.def.
int AntiPeriod[3]
If corresponding StdIntList::phase = 180, it becomes 1.
int ** CintraIndx
[StdIntList::NCintra][1] Site indices of intra-site Coulomb term, malloc in StdFace_MallocInteraction...
int NCinter
Number of inter-site Coulomb interaction, counted in each lattice file.
double Gamma
Transvars magnetic field, input parameter.
int NCintra
Number of intra-site Coulomb interaction, counted in each lattice file.
int LPairLift
Print pairlift.def or not, set in PrintInteractions().
int Lintr
Print interall.def or not, set in PrintInteractions().
static void PrintModPara(struct StdIntList *StdI)
Print modpara.def.
double JppAll
Isotropic, diagonal spin coupling (3rd Near), input parameter J''.
double V1
Anisotropic Coulomb potential (1st), input parameter.
double J0All
Anisotropic, diagonal spin coupling (1nd Near), input parameter J0.
double J0[3][3]
Isotropic, diagonal/off-diagonal spin coupling (1st Near.), input parameter J0x, J0y, J0z, J0xy, etc. or set in StdFace_InputSpinNN().
double U
On-site Coulomb potential, input parameter.
double complex t0p
Anisotropic hopping (2nd), input parameter.
double * Hund
[StdIntList::NHund] Coefficient of Hund term, malloc in StdFace_MallocInteractions() and set in StdFa...
int ** Cell
[StdIntList][3] The cell position in the fractional coordinate. Malloc and Set in StdFace_InitSite()...
double * PairLift
[StdIntList::NPairLift] Coefficient of pair-lift term, malloc in StdFace_MallocInteractions() and set...
char InitialVecType[256]
The name of initialguess-type, input from file.
static void StoreWithCheckDup_s(char *keyword, char *valuestring, char *value)
Store an input value into the valiable (string) If duplicated, HPhi will stop.
double SpectrumQ[3]
wavenumver (q-vector) in fractional coordinate
double phase[3]
Boundary phase, input parameter phase0, etc.
int exct
The number of eigenvectors to be computed. input from file.
int *** pumpindx
[StdIntList::nt][StdIntList::npump][4] Site/spin indices of one-body term, malloc in StdFace_MallocIn...
int NPairLift
Number of pair-lift term, counted in each lattice file.
double tdump
Time scale of dumping.
double J0pAll
Anisotropic, diagonal spin coupling (2nd Near), input parameter J0'.
int PumpBody
one- or two-body pumping, defined from StdIntList::PumpType
int * npump
[StdIntList::nt] Number of transfer, counted in each lattice file.
double length[3]
Anisotropic lattice constant, input parameter wlength, llength, hlength.
int * locspinflag
[StdIntList::nsite] LocSpin in Expert mode, malloc and set in each lattice file.
double OmegaMin
Minimum of frequency for spectrum, input from file.
int LanczosTarget
Which eigenvector is used for the convergence check.
int LanczosEps
Convergence threshold for the Lanczos method.
int ** HundIndx
[StdIntList::NHund][2] Site indices of Hund term, malloc in StdFace_MallocInteractions() and set in S...
double complex tp
2nd-nearest hopping, input parameter
void StdFace_Honeycomb(struct StdIntList *StdI)
Setup a Hamiltonian for the Hubbard model on a Honeycomb lattice.
char EigenVecIO[256]
The name of I/O mode for eigenvector, input from file.
double Jpp[3][3]
Isotropic, diagonal/off-diagonal spin coupling (3rd Near.), input parameter J''x, J''y...
int LHund
Print hund.def or not, set in PrintInteractions().
int Lanczos_max
The maxixmum number of iterations, input from file.
double complex t1
Anisotropic hopping (1st), input parameter.
double V
Off-site Coulomb potential (1st), input parameter.
double complex t0
Anisotropic hopping (1st), input parameter.
double direct[3][3]
The unit direct lattice vector. Set in StdFace_InitSite().
static void PrintTrans(struct StdIntList *StdI)
Print the transfer file.
double V0
Anisotropic Coulomb potential (1st), input parameter.
double complex ** pump
[StdIntList::nt][StdIntList::npump] Coefficient of one-body term, malloc in StdFace_MallocInteraction...
void StdFace_Kagome_Boost(struct StdIntList *StdI)
int NEx
Number of exchange term, counted in each lattice file.
double Vpp
Off-site Coulomb potential (3rd), input parameter.
double complex t1p
Anisotropic hopping (2nd), input parameter.
void StdFace_Kagome(struct StdIntList *StdI)
Setup a Hamiltonian for the Kagome lattice.
char method[256]
The name of method, input from file.
double complex t2
Anisotropic hopping (1st), input parameter.
int lGC
Switch for computing Grandcanonical ensemble(== 1). Setted in StdFace_main() after all keywords are r...
double LargeValue
The shift parameter for the TPQ calculation.
char PumpType[256]
The type of pump.
void StdFace_Honeycomb_Boost(struct StdIntList *StdI)
void StdFace_Orthorhombic(struct StdIntList *StdI)
Setup a Hamiltonian for the Simple Orthorhombic lattice.
static void TrimSpaceQuote(char *value)
Remove : space etc. from keyword and value in an iput file.
int ** intrindx
[StdIntList::nintr][8] Site/spin indices of two-body term, malloc in StdFace_MallocInteractions() and...
double mu
Chemical potential, input parameter.
void StdFace_PrintVal_d(char *valname, double *val, double val0)
Print a valiable (real) read from the input file if it is not specified in the input file (=NaN)...
int Sz2
Total Sz, input from file.
int NCell
The number of the unit cell in the super-cell (determinant of StdIntList::box). Set in StdFace_InitSi...
double Vp
Off-site Coulomb potential (2nd), input parameter.
static void StoreWithCheckDup_d(char *keyword, char *valuestring, double *value)
Store an input value into the valiable (double) If duplicated, HPhi will stop.
double J1pAll
Anisotropic, diagonal spin coupling (2nd Near), input parameter J1'.
static void Print1Green(struct StdIntList *StdI)
Print greenone.def.
void StdFace_RequiredVal_i(char *valname, int val)
Stop HPhi if a variable (integer) which must be specified is absent in the input file (=2147483647...
void StdFace_Tetragonal(struct StdIntList *StdI)
Setup a Hamiltonian for the square lattice.
double * PairHopp
[StdIntList::NPairLift] Coefficient of pair-hopping term, malloc in StdFace_MallocInteractions() and ...
int nsite
Number of sites, set in the each lattice file.
int ** transindx
[StdIntList::ntrans][4] Site/spin indices of one-body term, malloc in StdFace_MallocInteractions() an...
double J2All
Anisotropic, diagonal spin coupling (1nd Near), input parameter J2.
int Height
Number of sites along the 3rd axis, input parameter.
static void CheckModPara(struct StdIntList *StdI)
Summary numerical parameter check the combination of the number of sites, total spin, the number of electrons.
Variables used in the Standard mode. These variables are passed as a pointer of the structure(StdIntL...
double * Cintra
[StdIntList::NCintra] Coefficient of intra-site Coulomb term, malloc in StdFace_MallocInteractions() ...
static void StdFace_LargeValue(struct StdIntList *StdI)
Set Largevalue (StdIntList::LargeValue) for TPQ. Sum absolute-value of all one- and two- body terms...
void StdFace_NotUsed_i(char *valname, int val)
Stop HPhi if a variable (integer) not used is specified in the input file (!=2147483647, the upper limt of Int).
static void PrintLocSpin(struct StdIntList *StdI)
Print the locspin file.
char lattice[256]
Name of lattice. Input parameter.
int nintr
Number of InterAll, counted in each lattice file.
char outputmode[256]
Select amount of correlation function, input from file.
double Uquench
Quenched on-site potential.
double h
Longitudinal magnetic field, input parameter.
double a
The lattice constant. Input parameter.
void StdFace_Pyrochlore(struct StdIntList *StdI)
Setup a Hamiltonian for the Pyrochlore structure.
int SpectrumBody
one- or two-body excitation, defined from StdIntList::SpectrumType
int ** PHIndx
[StdIntList::NPairLift][2] Site indices of pair-hopping term, malloc in StdFace_MallocInteractions() ...
static void StoreWithCheckDup_i(char *keyword, char *valuestring, int *value)
Store an input value into the valiable (integer) If duplicated, HPhi will stop.
double J2[3][3]
Isotropic, diagonal/off-diagonal spin coupling (1st Near.), input parameter J2x, J2y, J2z, J2xy, etc. or set in StdFace_InputSpinNN().
void StdFace_FCOrtho(struct StdIntList *StdI)
Setup a Hamiltonian for the Face-Centered Orthorhombic lattice.
void StdFace_Ladder(struct StdIntList *StdI)
Setup a Hamiltonian for the generalized Heisenberg model on a square lattice.
int nelec
Number of electrons, input from file.
double freq
Frequency of laser.
int NaN_i
It is used for initializing input parameter. This means that a parameter wich is not specified in inp...
double * Cinter
[StdIntList::NCinter] Coefficient of inter-site Coulomb term, malloc in StdFace_MallocInteractions() ...
static void StoreWithCheckDup_c(char *keyword, char *valuestring, double complex *value)
Store an input value into the valiable (Double complex) If duplicated, HPhi will stop.
void StdFace_Wannier90(struct StdIntList *StdI)
Setup a Hamiltonian for the Wannier90 *_hr.dat.
int ExpecInterval
Interval for the iteration when the expectation value is computed.
double J2pAll
Anisotropic, diagonal spin coupling (2nd Near), input parameter J2'.
void StdFace_main(char *fname)
Main routine for the standard mode.
double ** tau
Cell-internal site position in the fractional coordinate. Defined in the beginning of each lattice fu...
double J0p[3][3]
Isotropic, diagonal/off-diagonal spin coupling (2nd Near.), input parameter J0'x, J0'y...
void StdFace_exit(int errorcode)
MPI Abortation wrapper.
char CDataFileHead[256]
Header of the output files. Input from file.
int LPairHopp
Print pairhopp.def or not, set in PrintInteractions().
double cutoff_u
Cutoof for the Coulomb in wannier90, input from file.
static void VectorPotential(struct StdIntList *StdI)
double V1p
Anisotropic Coulomb potential (2nd), input parameter.
double K
4-spin term. Not used.
int ** CinterIndx
[StdIntList::NCinter][2] Site indices of inter-site Coulomb term, malloc in StdFace_MallocInteraction...