ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/minimizers/Minimizer.hpp
(Generate patch)

Comparing branches/development/src/minimizers/Minimizer.hpp (file contents):
Revision 1665 by gezelter, Tue Nov 22 20:38:56 2011 UTC vs.
Revision 1744 by gezelter, Tue Jun 5 18:07:08 2012 UTC

# Line 53 | Line 53 | namespace OpenMD {
53   // base class of minimizer
54  
55   namespace OpenMD {
56 +  
57 +  /** minimizer stop codes */
58 +  enum{MIN_MAXITER,
59 +       MIN_MAXEVAL,
60 +       MIN_ETOL,
61 +       MIN_FTOL,
62 +       MIN_DOWNHILL,
63 +       MIN_ZEROALPHA,
64 +       MIN_ZEROFORCE,
65 +       MIN_ZEROQUAD};
66 +  
67 +  typedef int (*FnPtr)(std::vector<RealType> &, std::vector<RealType> &, RealType &);    
68  
57  /** @todo need refactorying */
58  const int MIN_LSERROR = -1;
59  const int MIN_MAXITER = 0;
60  const int MIN_CONVERGE = 1;
61
62  const int CONVG_UNCONVG = 0;
63  const int CONVG_FTOL = 1;
64  const int CONVG_GTOL = 2;
65  const int CONVG_ABSGTOL = 3;
66  const int CONVG_STEPTOL = 4;
67
68  const int LS_SUCCEED =1;
69  const int LS_ERROR  = -1;
70
71  /** @todo move to math module */
72  RealType dotProduct(const std::vector<RealType>& v1, const std::vector<RealType>& v2);
73
69    /**
70     * @class Minimizer
71     * base minimizer class
72     */
73    class Minimizer {
74    public:
80
75      Minimizer(SimInfo *rhs);
82
76      virtual ~Minimizer();
84
85    //
77      virtual void init() {}
87
78      //driver function of minimization method
79      virtual void minimize();
90
91    //
80      virtual int step() = 0;
93
94    //
81      virtual void prepareStep() {};
82  
83 <    //line search algorithm, for the time being, we use back track algorithm
83 >    //line search algorithm, for the time being, we use a back track
84 >    //algorithm
85      virtual int doLineSearch(std::vector<RealType>& direction, RealType stepSize);
86 +    virtual int checkConvergence() = 0;
87  
100    virtual int checkConvg() = 0;
101
88      //save the result when minimization method is done
89      virtual void saveResult(){}
90 <
90 >    
91      //get the status of minimization
92 <    int getMinStatus() {return minStatus;}
92 >    int getMinimizerStatus() {return minStatus;}
93  
94      // get the dimension of the model
95      int getDim() {  return ndim;  }
# Line 111 | Line 97 | namespace OpenMD {
97      //get the name of minimizer method
98      std::string getMinimizerName() {  return minimizerName;  }
99  
100 <    //return number of  current Iteration  
101 <    int getCurIter() {  return curIter;  }
100 >    //return number of the current Iteration  
101 >    int getCurrentIteration() {  return curIter;  }
102  
103      // set the verbose mode of minimizer
104      void setVerbose(bool verbose) {  bVerbose = verbose;}
105  
106 <    //get and set the coordinate
106 >    //get and set the coordinates
107      std::vector<RealType> getX() {  return curX;  }
108      void setX(std::vector<RealType>& x);
109  
# Line 132 | Line 118 | namespace OpenMD {
118      std::vector<RealType> getGrad() {  return curG;  }
119      void setGrad(std::vector<RealType>& g) {  curG = g;  }
120  
121 <    //interal function to evaluate the energy and gradient in OpenMD
136 <    void calcEnergyGradient(std::vector<RealType>& x,  std::vector<RealType>& grad, RealType&
137 <                            energy, int& status);
121 >    void setGradientFunction(FnPtr efunc) { calcEnergyGradient = efunc; }
122  
123      //calculate the value of object function
124      virtual void calcF();
# Line 152 | Line 136 | namespace OpenMD {
136  
137    protected:
138  
139 +    typedef int (*FnPtr)(std::vector<RealType> &, std::vector<RealType> &, RealType &);    
140 +    FnPtr calcEnergyGradient;
141 +
142      // transfrom cartesian and rotational coordinates into minimization coordinates
143      std::vector<RealType> getCoor();
144  
145      // transfrom minimization coordinates into cartesian and rotational coordinates  
146      void setCoor(std::vector<RealType>& x);
147  
161
162
148      //constraint the bonds;
149      int shakeR() { return 0;}
150  
151      //remove the force component along the bond direction
152      int shakeF() { return 0;}
168
153      RealType calcPotential();
154          
155      SimInfo* info;
156 <
173 <    ForceManager* forceMan;
174 <        
156 >    ForceManager* forceMan;        
157      //parameter set of minimization method
158      MinimizerParameterSet* paramSet;
159  
# Line 211 | Line 193 | namespace OpenMD {
193      //SymMatrix curH;
194  
195    private:
196 <
215 <    //calculate the dimension od the model for minimization
196 >    //calculate the dimension of the model for minimization
197      void calcDim();
217
198    };
199  
200   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines