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 1465 by chuckv, Fri Jul 9 23:08:25 2010 UTC vs.
Revision 1744 by gezelter, Tue Jun 5 18:07:08 2012 UTC

# Line 36 | Line 36
36   * [1]  Meineke, et al., J. Comp. Chem. 26, 252-271 (2005).            
37   * [2]  Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006).          
38   * [3]  Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008).          
39 < * [4]  Vardeman & Gezelter, in progress (2009).                        
39 > * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40 > * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41   */
42  
43   #ifndef MINIMIZERS_MINIMIZER_HPP
# Line 52 | 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  
56  /** @todo need refactorying */
57  const int MIN_LSERROR = -1;
58  const int MIN_MAXITER = 0;
59  const int MIN_CONVERGE = 1;
60
61  const int CONVG_UNCONVG = 0;
62  const int CONVG_FTOL = 1;
63  const int CONVG_GTOL = 2;
64  const int CONVG_ABSGTOL = 3;
65  const int CONVG_STEPTOL = 4;
66
67  const int LS_SUCCEED =1;
68  const int LS_ERROR  = -1;
69
70  /** @todo move to math module */
71  RealType dotProduct(const std::vector<RealType>& v1, const std::vector<RealType>& v2);
72
69    /**
70     * @class Minimizer
71     * base minimizer class
72     */
73    class Minimizer {
74    public:
79
75      Minimizer(SimInfo *rhs);
81
76      virtual ~Minimizer();
83
84    //
77      virtual void init() {}
86
78      //driver function of minimization method
79      virtual void minimize();
89
90    //
80      virtual int step() = 0;
92
93    //
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  
99    virtual int checkConvg() = 0;
100
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 110 | 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 131 | 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
135 <    void calcEnergyGradient(std::vector<RealType>& x,  std::vector<RealType>& grad, RealType&
136 <                            energy, int& status);
121 >    void setGradientFunction(FnPtr efunc) { calcEnergyGradient = efunc; }
122  
123      //calculate the value of object function
124      virtual void calcF();
# Line 151 | 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  
160
161
148      //constraint the bonds;
149      int shakeR() { return 0;}
150  
151      //remove the force component along the bond direction
152      int shakeF() { return 0;}
167
153      RealType calcPotential();
154          
155      SimInfo* info;
156 <
172 <    ForceManager* forceMan;
173 <        
156 >    ForceManager* forceMan;        
157      //parameter set of minimization method
158      MinimizerParameterSet* paramSet;
159  
# Line 210 | Line 193 | namespace OpenMD {
193      //SymMatrix curH;
194  
195    private:
196 <
214 <    //calculate the dimension od the model for minimization
196 >    //calculate the dimension of the model for minimization
197      void calcDim();
216
198    };
199  
200   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines