Changeset 35051f


Ignore:
Timestamp:
May 24, 2008, 12:46:00 PM (17 years ago)
Author:
Frederik Heber <heber@…>
Children:
cd028d
Parents:
2f6525
Message:

corrected re-orthogonalization.

Re-Ortho would never stop, as the GramSch() call was commented out. This is now corrected and some fprintfs were comme
nted out that were just noisy. Hence, MaxNotOk just outputs maximum difference.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pcp/src/gramsch.c

    r2f6525 r35051f  
    713713}
    714714
    715 #define max_GramSch_iter 3
     715#define max_GramSch_iter 1
    716716
    717717/** Test Gram-Schmidt-Orthogonalization.
     
    731731  int NotOk;      // counts pairs that are not orthogonal
    732732  int iter = 0;
     733  double MaxNotOk = 0.;
    733734  fftw_complex *LPsiDatA, *LPsiDatB;
    734735 
    735736  do {
    736737    NotOk = 0;
     738    MaxNotOk = 0.;
    737739    //fprintf(stderr,"(%i) Testing Orthogonality ... \n", P->Par.me);
    738740    for (i=0; i < Psi->MaxPsiOfType+P->Par.Max_me_comm_ST_PsiT; i++) {  // go through all wave functions (plus the extra one for each process)
     
    781783                  if (i == LOnePsiB->MyGlobalNo && LOnePsiB->PsiGramSchStatus == (int)IsOrthonormal) {
    782784                    if (fabs(PsiSP -1.0) >= MYEPSILON) {
    783                       fprintf(stderr,"(%i)(%i,%i) = %g ?= 1.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP -1.0), MYEPSILON);
     785                      //fprintf(stderr,"(%i)(%i,%i) = %g ?= 1.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP -1.0), MYEPSILON);
     786                      MaxNotOk = (fabs(PsiSP -1.0) > MaxNotOk) ? fabs(PsiSP -1.0) : MaxNotOk;
    784787                      NotOk++;
    785788                    }
    786789                  } else {
    787790                    if (fabs(PsiSP) >= MYEPSILON && (LOnePsiB != OnePsiA && LOnePsiB->PsiType > UnOccupied)) {
    788                       fprintf(stderr,"(%i)(%i,%i) = %g ?= 0.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP), MYEPSILON);
     791                      //fprintf(stderr,"(%i)(%i,%i) = %g ?= 0.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP), MYEPSILON);
     792                      MaxNotOk = (fabs(PsiSP) > MaxNotOk) ? fabs(PsiSP) : MaxNotOk;
    789793                      NotOk++;
    790794                    }
     
    797801                  if (i == LOnePsiB->MyGlobalNo && LOnePsiB->PsiGramSchStatus == (int)IsOrthonormal) {
    798802                    if (fabs(PsiSP -1.0) >= MYEPSILON) {
    799                       fprintf(stderr,"(%i)(%i,%i) = %g != 1.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,i,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP -1.0), MYEPSILON);
     803                      //fprintf(stderr,"(%i)(%i,%i) = %g != 1.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,i,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP -1.0), MYEPSILON);
     804                      MaxNotOk = (fabs(PsiSP -1.0) > MaxNotOk) ? fabs(PsiSP -1.0) : MaxNotOk;
    800805                      NotOk++;
    801806                    } else {
     
    804809                  } else {
    805810                    if (fabs(PsiSP) >= MYEPSILON) {
    806                       fprintf(stderr,"(%i)(%i,%i) = %g != 0.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,i,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP), MYEPSILON);
     811                      //fprintf(stderr,"(%i)(%i,%i) = %g != 0.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,i,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP), MYEPSILON);
     812                      MaxNotOk = (fabs(PsiSP) > MaxNotOk) ? fabs(PsiSP) : MaxNotOk;
    807813                      NotOk++;
    808814                    } else {
     
    823829                  if (i == LOnePsiB->MyGlobalNo && LOnePsiB->PsiGramSchStatus == (int)IsOrthonormal) {
    824830                    if (fabs(PsiSP -1.0) >= MYEPSILON) {
    825                       fprintf(stderr,"(%i)(%i,%i) = %g != 1.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP -1.0), MYEPSILON);
     831                      //fprintf(stderr,"(%i)(%i,%i) = %g != 1.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP -1.0), MYEPSILON);
     832                      MaxNotOk = (fabs(PsiSP -1.0) > MaxNotOk) ? fabs(PsiSP -1.0) : MaxNotOk;
    826833                      NotOk++;
    827834                    }
    828835                  } else {
    829836                    if (fabs(PsiSP) >= MYEPSILON && (LOnePsiB->MyGlobalNo != OnePsiA->MyGlobalNo)) {
    830                       fprintf(stderr,"(%i)(%i,%i) = %g != 0.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP), MYEPSILON);
     837                      //fprintf(stderr,"(%i)(%i,%i) = %g != 0.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP), MYEPSILON);
     838                      MaxNotOk = (fabs(PsiSP) > MaxNotOk) ? fabs(PsiSP) : MaxNotOk;
    831839                      NotOk++;
    832840                    }
     
    838846                  if (i == LOnePsiB->MyGlobalNo && LOnePsiB->PsiGramSchStatus == (int)IsOrthonormal) {
    839847                    if (fabs(PsiSP -1.0) >= MYEPSILON) {
    840                       fprintf(stderr,"(%i)(%i,%i) = %g != 1.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP -1.0), MYEPSILON);
     848                      //fprintf(stderr,"(%i)(%i,%i) = %g != 1.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP -1.0), MYEPSILON);
     849                      MaxNotOk = (fabs(PsiSP -1.0) > MaxNotOk) ? fabs(PsiSP -1.0) : MaxNotOk;
    841850                      NotOk++;
    842851                    }
    843852                  } else {
    844853                    if (fabs(PsiSP) >= MYEPSILON) {
    845                       fprintf(stderr,"(%i)(%i,%i) = %g != 0.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP), MYEPSILON);
     854                      //fprintf(stderr,"(%i)(%i,%i) = %g != 0.0 eps(%g >= %g)\n",P->Par.my_color_comm_ST,OnePsiA->MyGlobalNo,LOnePsiB->MyGlobalNo,PsiSP, fabs(PsiSP), MYEPSILON);
     855                      MaxNotOk = (fabs(PsiSP) > MaxNotOk) ? fabs(PsiSP) : MaxNotOk;
    846856                      NotOk++;
    847857                    }
     
    854864      }
    855865    }
    856 /*    if (NotOk != 0) {
    857       fprintf(stderr,"(%i) NotOk %i ... re-orthogonalizing type %i for the %ith time\n",P->Par.me, NotOk, Type2test, ++iter);
     866    if (NotOk != 0) {
     867      fprintf(stderr,"(%i) NotOk %i with max %lg ... re-orthogonalizing type %i for the %ith time\n",P->Par.me, NotOk, MaxNotOk, Type2test, iter);
    858868      ResetGramSchTagType(P, Psi, Type2test, NotOrthogonal);
    859869      GramSch(P,Lev,Psi,Orthonormalize);
    860     }*/
     870    }
     871    ++iter;
    861872  } while ((NotOk != 0) && (iter < max_GramSch_iter));
    862873  if (P->Call.out[StepLeaderOut]) { // final check if there have been any un-orthogonal pairs
Note: See TracChangeset for help on using the changeset viewer.