Setup a Hamiltonian for the Pyrochlore structure. 
(3) Set local spin flag (StdIntList::locspinflag) and the number of sites (StdIntList::nsite)
(4) Compute the upper limit of the number of Transfer & Interaction and malloc them.
   37   int isite, jsite, isiteUC, ntransMax, nintrMax;
    38   int iL, iW, iH, kCell;
    40   std::complex<double> Cphase;
    46   fp = fopen(
"lattice.xsf", 
"w");
    50   fprintf(stdout, 
"  @ Lattice Size & Shape\n\n");
    71   StdI->tau[0][0] = 0.0; StdI->tau[0][1] = 0.0; ; StdI->tau[0][2] = 0.0;
    72   StdI->tau[1][0] = 0.5; StdI->tau[1][1] = 0.0; ; StdI->tau[1][2] = 0.0;
    73   StdI->tau[2][0] = 0.0; StdI->tau[2][1] = 0.5; ; StdI->tau[2][2] = 0.0;
    74   StdI->tau[3][0] = 0.0; StdI->tau[3][1] = 0.0; ; StdI->tau[3][2] = 0.5;
    78   fprintf(stdout, 
"\n  @ Hamiltonian \n\n");
    83   if (strcmp(StdI->model, 
"spin") == 0 ) {
   134     if (strcmp(StdI->model, 
"hubbard") == 0 ) {
   144   fprintf(stdout, 
"\n  @ Numerical conditions\n\n");
   149   StdI->nsite = StdI->NsiteUC * StdI->NCell;
   150   if (strcmp(StdI->model, 
"kondo") == 0 ) StdI->nsite *= 2;
   151   StdI->locspinflag = (
int *)malloc(
sizeof(
int) * StdI->nsite);
   153   if(strcmp(StdI->model, 
"spin") == 0 )
   154     for (isite = 0; isite < StdI->nsite; isite++) StdI->locspinflag[isite] = StdI->S2;
   155   else if(strcmp(StdI->model, 
"hubbard") == 0 )
   156     for (isite = 0; isite < StdI->nsite; isite++) StdI->locspinflag[isite] = 0;
   158     for (iL = 0; iL < StdI->nsite / 2; iL++) {
   159       StdI->locspinflag[iL] = StdI->S2;
   160       StdI->locspinflag[iL + StdI->nsite / 2] = 0;
   165   if (strcmp(StdI->model, 
"spin") == 0 ) {
   166     ntransMax = StdI->nsite * (StdI->S2 + 1 + 2 * StdI->S2);
   167     nintrMax = StdI->NCell * (StdI->NsiteUC + 12 + 0 + 0)
   168       * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1);
   171     ntransMax = StdI->NCell * 2 * (2 * StdI->NsiteUC + 24 + 0 + 0);
   172     nintrMax = StdI->NCell * (StdI->NsiteUC + 4 * (12 + 0 + 0));
   174     if (strcmp(StdI->model, 
"kondo") == 0) {
   175       ntransMax += StdI->nsite / 2 * (StdI->S2 + 1 + 2 * StdI->S2);
   176       nintrMax += StdI->nsite / 2 * (3 * StdI->S2 + 1) * (3 * StdI->S2 + 1);
   184   for (kCell = 0; kCell < StdI->NCell; kCell++){
   186     iW = StdI->Cell[kCell][0];
   187     iL = StdI->Cell[kCell][1];
   188     iH = StdI->Cell[kCell][2];
   192     isite = StdI->NsiteUC * kCell;
   193     if (strcmp(StdI->model, 
"kondo") == 0) isite += StdI->nsite / 2;
   195     if (strcmp(StdI->model, 
"spin") == 0) {
   196       for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) {
   198         StdFace_GeneralJ(StdI, StdI->D, StdI->S2, StdI->S2, isite + isiteUC, isite + isiteUC);
   202       for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) {
   206       if (strcmp(StdI->model, 
"kondo") == 0) {
   207         jsite = StdI->NsiteUC * kCell;
   208         for (isiteUC = 0; isiteUC < StdI->NsiteUC; isiteUC++) {
   217     StdFace_FindSite(StdI, iW, iL, iH, 0, 0, 0, 0, 1, &isite, &jsite, &Cphase, dR);
   219     if (strcmp(StdI->model, 
"spin") == 0 ) {
   229     StdFace_FindSite(StdI, iW, iL, iH, 0, 0, 0, 0, 2, &isite, &jsite, &Cphase, dR);
   231     if (strcmp(StdI->model, 
"spin") == 0) {
   241     StdFace_FindSite(StdI, iW, iL, iH, 0, 0, 0, 0, 3, &isite, &jsite, &Cphase, dR);
   243     if (strcmp(StdI->model, 
"spin") == 0) {
   253     StdFace_FindSite(StdI, iW, iL, iH, 0, 0, 0, 2, 3, &isite, &jsite, &Cphase, dR);
   255     if (strcmp(StdI->model, 
"spin") == 0) {
   265     StdFace_FindSite(StdI, iW, iL, iH, 0, 0, 0, 3, 1, &isite, &jsite, &Cphase, dR);
   267     if (strcmp(StdI->model, 
"spin") == 0) {
   277     StdFace_FindSite(StdI, iW, iL, iH, 0, 0, 0, 1, 2, &isite, &jsite, &Cphase, dR);
   279     if (strcmp(StdI->model, 
"spin") == 0) {
   289     StdFace_FindSite(StdI, iW, iL, iH, 1, 0, 0, 1, 0, &isite, &jsite, &Cphase, dR);
   291     if (strcmp(StdI->model, 
"spin") == 0) {
   301     StdFace_FindSite(StdI, iW, iL, iH, 0, 1, 0, 2, 0, &isite, &jsite, &Cphase, dR);
   303     if (strcmp(StdI->model, 
"spin") == 0) {
   313     StdFace_FindSite(StdI, iW, iL, iH, 0, 0, 1, 3, 0, &isite, &jsite, &Cphase, dR);
   315     if (strcmp(StdI->model, 
"spin") == 0) {
   325     StdFace_FindSite(StdI, iW, iL, iH, 0, -1, 1, 3, 2, &isite, &jsite, &Cphase, dR);
   327     if (strcmp(StdI->model, 
"spin") == 0) {
   337     StdFace_FindSite(StdI, iW, iL, iH, 1, 0, -1, 1, 3, &isite, &jsite, &Cphase, dR);
   339     if (strcmp(StdI->model, 
"spin") == 0) {
   349     StdFace_FindSite(StdI, iW, iL, iH, -1, 1, 0, 2, 1, &isite, &jsite, &Cphase, dR);
   351     if (strcmp(StdI->model, 
"spin") == 0) {
 void StdFace_InputHopp(std::complex< double > t, std::complex< double > *t0, const char *t0name)
Input hopping integral from the input file, if it is not specified, use the default value(0 or the is...
 
void StdFace_Coulomb(struct StdIntList *StdI, double V, int isite, int jsite)
Add onsite/offsite Coulomb term to the list StdIntList::Cinter and StdIntList::CinterIndx, and increase the number of them (StdIntList::NCinter). 
 
void StdFace_GeneralJ(struct StdIntList *StdI, double J[3][3], int Si2, int Sj2, int isite, int jsite)
Treat J as a 3*3 matrix [(6S + 1)*(6S' + 1) interactions]. 
 
void StdFace_InputSpin(double Jp[3][3], double JpAll, const char *Jpname)
Input spin-spin interaction other than nearest-neighbor. 
 
void StdFace_PrintVal_d(const 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)...
 
void StdFace_FindSite(struct StdIntList *StdI, int iW, int iL, int iH, int diW, int diL, int diH, int isiteUC, int jsiteUC, int *isite, int *jsite, std::complex< double > *Cphase, double *dR)
Find the index of transfer and interaction. 
 
void StdFace_Hopping(struct StdIntList *StdI, std::complex< double > trans0, int isite, int jsite, double *dR)
Add Hopping for the both spin. 
 
void StdFace_NotUsed_c(const char *valname, std::complex< double > val)
Stop HPhi if a variable (complex) not used is specified in the input file (!=NaN). 
 
void StdFace_HubbardLocal(struct StdIntList *StdI, double mu0, double h0, double Gamma0, double U0, int isite)
Add intra-Coulomb, magnetic field, chemical potential for the itenerant electron. ...
 
void StdFace_NotUsed_J(const char *valname, double JAll, double J[3][3])
Stop HPhi if variables (real) not used is specified in the input file (!=NaN). 
 
void StdFace_MagField(struct StdIntList *StdI, int S2, double h, double Gamma, int isite)
Add longitudinal and transvars magnetic field to the list. 
 
void StdFace_PrintGeometry(struct StdIntList *StdI)
Print geometry of sites for the pos-process of correlation function. 
 
void StdFace_PrintXSF(struct StdIntList *StdI)
Print lattice.xsf (XCrysDen format) 
 
void StdFace_InputCoulombV(double V, double *V0, const char *V0name)
Input off-site Coulomb interaction from the input file, if it is not specified, use the default value...
 
void StdFace_MallocInteractions(struct StdIntList *StdI, int ntransMax, int nintrMax)
Malloc Arrays for interactions. 
 
void StdFace_NotUsed_i(const char *valname, int val)
Stop HPhi if a variable (integer) not used is specified in the input file (!=2147483647, the upper limt of Int). 
 
void StdFace_PrintVal_i(const 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...
 
void StdFace_InitSite(struct StdIntList *StdI, FILE *fp, int dim)
Initialize the super-cell where simulation is performed. 
 
void StdFace_InputSpinNN(double J[3][3], double JAll, double J0[3][3], double J0All, const char *J0name)
Input nearest-neighbor spin-spin interaction. 
 
void StdFace_NotUsed_d(const char *valname, double val)
Stop HPhi if a variable (real) not used is specified in the input file (!=NaN).