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

Comparing:
trunk/src/minimizers/Minimizer.hpp (file contents), Revision 963 by tim, Wed May 17 21:51:42 2006 UTC vs.
branches/development/src/minimizers/Minimizer.hpp (file contents), Revision 1744 by gezelter, Tue Jun 5 18:07:08 2012 UTC

# Line 6 | Line 6
6   * redistribute this software in source and binary code form, provided
7   * that the following conditions are met:
8   *
9 < * 1. Acknowledgement of the program authors must be made in any
10 < *    publication of scientific results based in part on use of the
11 < *    program.  An acceptable form of acknowledgement is citation of
12 < *    the article in which the program was described (Matthew
13 < *    A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
14 < *    J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
15 < *    Parallel Simulation Engine for Molecular Dynamics,"
16 < *    J. Comput. Chem. 26, pp. 252-271 (2005))
17 < *
18 < * 2. Redistributions of source code must retain the above copyright
9 > * 1. Redistributions of source code must retain the above copyright
10   *    notice, this list of conditions and the following disclaimer.
11   *
12 < * 3. Redistributions in binary form must reproduce the above copyright
12 > * 2. Redistributions in binary form must reproduce the above copyright
13   *    notice, this list of conditions and the following disclaimer in the
14   *    documentation and/or other materials provided with the
15   *    distribution.
# Line 37 | Line 28
28   * arising out of the use of or inability to use software, even if the
29   * University of Notre Dame has been advised of the possibility of
30   * such damages.
31 + *
32 + * SUPPORT OPEN SCIENCE!  If you use OpenMD or its source code in your
33 + * research, please cite the appropriate papers when you publish your
34 + * work.  Good starting points are:
35 + *                                                                      
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]  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_OOPSEMINIMIZER_HPP
44 < #define MINIMIZERS_OOPSEMINIMIZER_HPP
43 > #ifndef MINIMIZERS_MINIMIZER_HPP
44 > #define MINIMIZERS_MINIMIZER_HPP
45  
46   #include <iostream>
47  
# Line 51 | Line 52
52  
53   // base class of minimizer
54  
55 < namespace oopse {
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 oopse {
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 oopse {
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 OOPSE
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 oopse {
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 oopse {
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   }

Comparing:
trunk/src/minimizers/Minimizer.hpp (property svn:keywords), Revision 963 by tim, Wed May 17 21:51:42 2006 UTC vs.
branches/development/src/minimizers/Minimizer.hpp (property svn:keywords), Revision 1744 by gezelter, Tue Jun 5 18:07:08 2012 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines