- Timestamp:
- Apr 21, 2008, 2:19:23 PM (17 years ago)
- Children:
- 5a538b
- Parents:
- 02ba60
- git-author:
- Frederik Heber <heber@…> (04/18/08 13:43:33)
- git-committer:
- Frederik Heber <heber@…> (04/21/08 14:19:23)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified pcp/src/run.c ¶
r02ba60 r487182 711 711 * \param *Stop flag to determine if epsilon stop conditions have met 712 712 * \param *SuperStop flag to determinte whether external signal's required end of calculations 713 * \bug ResetGramSch() not allowed after reading orthonormal values from file 713 714 */ 714 715 static void MinimiseOccupied(struct Problem *P, int *Stop, int *SuperStop) … … 747 748 InitPsisValue(P, Psi->TypeStartIndex[Occupied], Psi->TypeStartIndex[Occupied+1]); // initialize perturbed array for this run 748 749 ResetGramSchTagType(P, Psi, Occupied, NotOrthogonal); // loaded values are orthonormal 749 SpeedMeasure(P, InitGramSchTime, StartTimeDo);750 GramSch(P, R->LevS, Psi, Orthonormalize);751 SpeedMeasure(P, InitGramSchTime, StopTimeDo);752 750 } else { 753 751 SpeedMeasure(P, InitSimTime, StartTimeDo); 754 if(P->Call.out[MinOut]) fprintf(stderr, "(%i) Reading from file...\n", P->Par.me);752 if(P->Call.out[MinOut]) fprintf(stderr, "(%i) Re-initializing %s psi array from source file of recent calculation\n", P->Par.me, R->MinimisationName[R->CurrentMin]); 755 753 ReadSrcPsiDensity(P, Occupied, 0, R->LevSNo); 756 ResetGramSchTagType(P, Psi, Occupied, IsOrthonormal); // loaded values are orthonormal 754 //ResetGramSchTagType(P, Psi, Occupied, IsOrthonormal); // loaded values are orthonormal 755 // note: this did not work and is currently not clear why not (as TestGramSch says: OK, but minimisation goes awry without the following GramSch) 757 756 } 757 SpeedMeasure(P, InitGramSchTime, StartTimeDo); 758 GramSch(P, R->LevS, Psi, Orthonormalize); 759 SpeedMeasure(P, InitGramSchTime, StopTimeDo); 758 760 SpeedMeasure(P, InitDensityTime, StartTimeDo); 759 761 InitDensityCalculation(P); … … 770 772 R->LevS->Step++; 771 773 EnergyOutput(P,0); 772 } 774 } 773 775 if (P->Call.ReadSrcFiles != 1) { // otherwise minimise oneself 774 776 if(P->Call.out[LeaderOut]) fprintf(stderr,"(%i)Beginning minimisation of type %s ...\n", P->Par.me, R->MinimisationName[Occupied]); … … 783 785 if (Lat->Psi.LocalPsiStatus[R->ActualLocalPsiNo].DoBrent != 1) { 784 786 //SetArrayToDouble0((double *)LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo],LevS->MaxG*2); 785 memcpy(LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo], LevS->LPsi->LocalPsi[R->ActualLocalPsiNo], ElementSize*LevS->MaxG*sizeof(double)); // restore old Psi from OldPsi 786 //fprintf(stderr,"(%i) Psi %i at %p stored in OldPsi at %p: Old[0] %lg+i%lg\n", P->Par.me, R->ActualLocalPsiNo, LevS->LPsi->LocalPsi[R->ActualLocalPsiNo], LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo], LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo][0].re, LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo][0].im); 787 f_m = P->Lat.E->TotalEnergy[0]; // grab first value 788 m = 0.; 787 if (R->DoBrent == 1) { 788 memcpy(LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo], LevS->LPsi->LocalPsi[R->ActualLocalPsiNo], ElementSize*LevS->MaxG*sizeof(double)); // restore old Psi from OldPsi 789 //fprintf(stderr,"(%i) Psi %i at %p stored in OldPsi at %p: Old[0] %lg+i%lg\n", P->Par.me, R->ActualLocalPsiNo, LevS->LPsi->LocalPsi[R->ActualLocalPsiNo], LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo], LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo][0].re, LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo][0].im); 790 f_m = P->Lat.E->TotalEnergy[0]; // grab first value 791 m = 0.; 792 } 789 793 CalculateNewWave(P,NULL); 790 794 if ((R->DoBrent == 1) && (fabs(Lat->E->delta[0]) < M_PI/4.)) … … 798 802 // if we stepped on to a new Psi, which is already down at DoBrent=1 unlike the last one, 799 803 // then an up-to-date gradient is missing for the following Brent line search 800 if(P->Call.out[ LeaderOut]) fprintf(stderr,"(%i) We stepped on to a new Psi, which is already in the Brent regime ...re-calc delta\n", P->Par.me);804 if(P->Call.out[MinOut]) fprintf(stderr,"(%i) We stepped on to a new Psi, which is already in the Brent regime ...re-calc delta\n", P->Par.me); 801 805 memcpy(LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo], LevS->LPsi->LocalPsi[R->ActualLocalPsiNo], ElementSize*LevS->MaxG*sizeof(double)); // restore old Psi from OldPsi 802 806 //fprintf(stderr,"(%i) Psi %i at %p stored in OldPsi at %p: Old[0] %lg+i%lg\n", P->Par.me, R->ActualLocalPsiNo, LevS->LPsi->LocalPsi[R->ActualLocalPsiNo], LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo], LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo][0].re, LevS->LPsi->OldLocalPsi[R->ActualLocalPsiNo][0].im);
Note:
See TracChangeset
for help on using the changeset viewer.