ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/OOPSEMinimizer.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/OOPSEMinimizer.cpp (file contents):
Revision 1108 by tim, Wed Apr 14 15:37:41 2004 UTC vs.
Revision 1250 by gezelter, Fri Jun 4 21:00:20 2004 UTC

# Line 1 | Line 1
1   #include <math.h>
2   #include "OOPSEMinimizer.hpp"
3 + #include "ShakeMin.hpp"
4  
5   OOPSEMinimizer::OOPSEMinimizer( SimInfo *theInfo, ForceFields* the_ff ,
6                                                MinimizerParameterSet * param)
7                       :RealIntegrator(theInfo, the_ff), bVerbose(false), bShake(true){
8 +  dumpOut = NULL;
9 +  statOut = NULL;
10  
11    tStats = new Thermo(info);
12 <  dumpOut = new DumpWriter(info);
10 <  statOut = new StatWriter(info);
12 >
13    
14    paramSet = param;
15  
# Line 16 | Line 18 | OOPSEMinimizer::OOPSEMinimizer( SimInfo *theInfo, Forc
18    curX = getCoor();
19    curG.resize(ndim);
20  
21 <  preMove();
21 >  shakeAlgo = new ShakeMinFramework(theInfo);
22 >  shakeAlgo->doPreConstraint();
23   }
24  
25   OOPSEMinimizer::~OOPSEMinimizer(){
26    delete tStats;
27 <  delete dumpOut;
28 <  delete statOut;
27 >  if(dumpOut)
28 >    delete dumpOut;
29 >  if(statOut)
30 >    delete statOut;
31    delete paramSet;
32   }
33  
# Line 34 | Line 39 | void OOPSEMinimizer::calcEnergyGradient(vector<double>
39    double force[3];
40    double dAtomGrad[6];
41    int shakeStatus;
42 +
43 +  status = 1;
44    
45    setCoor(x);
46  
47 <  if (nConstrained && bShake){
48 <    shakeStatus = shakeR();
47 >  if (bShake){
48 >    shakeStatus = shakeAlgo->doShakeR();
49 >    if(shakeStatus < 0)
50 >      status = -1;
51    }
52 <      
53 <  calcForce(1, 1);
54 <  
55 <  if (nConstrained && bShake){
56 <    shakeStatus |= shakeF();
52 >
53 >  calcForce(1, 1);
54 >
55 >  if (bShake){
56 >    shakeStatus = shakeAlgo->doShakeF();
57 >    if(shakeStatus < 0)
58 >      status = -1;
59    }
60 <  
60 >
61    x = getCoor();
62    
63  
# Line 80 | Line 91 | void OOPSEMinimizer::calcEnergyGradient(vector<double>
91  
92    energy = tStats->getPotential();
93  
83  status = shakeStatus;
94   }
95  
96   /**
# Line 159 | Line 169 | vector<double> OOPSEMinimizer::getCoor(){
169  
170   }
171  
172 + /*
173   int OOPSEMinimizer::shakeR(){
174    int i, j;
175    int done;
# Line 398 | Line 409 | int OOPSEMinimizer::shakeF(){
409      return 1;
410   }
411  
412 <    //calculate the value of object function
412 > */
413 >
414 > //calculate the value of object function
415   void OOPSEMinimizer::calcF(){
416    calcEnergyGradient(curX, curG, curF, egEvalStatus);
417   }
# Line 536 | Line 549 | int OOPSEMinimizer::doLineSearch(vector<double>& direc
549    lsTol = paramSet->getLineSearchTol();
550          
551    //calculate the derivative at a = 0
552 +  slopeA = 0;
553    for (size_t i = 0; i < ndim; i++)
554      slopeA += curG[i]*direction[i];
555  
# Line 692 | Line 706 | void OOPSEMinimizer::minimize(){
706    
707    if (bVerbose)
708      printMinimizerInfo();
709 +
710 +  dumpOut = new DumpWriter(info);
711 +  statOut = new StatWriter(info);
712    
713    init();
714  
# Line 707 | Line 724 | void OOPSEMinimizer::minimize(){
724  
725      stepStatus = step();
726  
727 +    if (bShake)
728 +      shakeAlgo->doPreConstraint();
729 +    
730      if (stepStatus < 0){
731        saveResult();
732        minStatus = MIN_LSERROR;
# Line 719 | Line 739 | void OOPSEMinimizer::minimize(){
739        writeOut(curX, curIter);
740      }
741  
722    //if (curIter == nextResetIter){
723    //  reset();
724    //  nextResetIter += resetFrq;      
725    //}
726
742      convgStatus = checkConvg();
743  
744      if (convgStatus > 0){

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines