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 507 by gezelter, Fri Apr 15 22:04:00 2005 UTC vs.
branches/development/src/minimizers/Minimizer.hpp (file contents), Revision 1665 by gezelter, Tue Nov 22 20:38:56 2011 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    /** @todo need refactorying */
58    const int MIN_LSERROR = -1;
# Line 68 | Line 69 | namespace oopse {
69    const int LS_ERROR  = -1;
70  
71    /** @todo move to math module */
72 <  double dotProduct(const std::vector<double>& v1, const std::vector<double>& v2);
72 >  RealType dotProduct(const std::vector<RealType>& v1, const std::vector<RealType>& v2);
73  
74    /**
75     * @class Minimizer
# Line 94 | Line 95 | namespace oopse {
95      virtual void prepareStep() {};
96  
97      //line search algorithm, for the time being, we use back track algorithm
98 <    virtual int doLineSearch(std::vector<double>& direction, double stepSize);
98 >    virtual int doLineSearch(std::vector<RealType>& direction, RealType stepSize);
99  
100      virtual int checkConvg() = 0;
101  
# Line 117 | Line 118 | namespace oopse {
118      void setVerbose(bool verbose) {  bVerbose = verbose;}
119  
120      //get and set the coordinate
121 <    std::vector<double> getX() {  return curX;  }
122 <    void setX(std::vector<double>& x);
121 >    std::vector<RealType> getX() {  return curX;  }
122 >    void setX(std::vector<RealType>& x);
123  
124      //get and set the value of object function
125 <    double getF() {  return curF;  }
126 <    void setF(double f)  { curF = f;  }
125 >    RealType getF() {  return curF;  }
126 >    void setF(RealType f)  { curF = f;  }
127  
128 <    std::vector<double> getG() {  return curG;  }
129 <    void setG(std::vector<double>& g);
128 >    std::vector<RealType> getG() {  return curG;  }
129 >    void setG(std::vector<RealType>& g);
130  
131      //get and set the gradient
132 <    std::vector<double> getGrad() {  return curG;  }
133 <    void setGrad(std::vector<double>& g) {  curG = g;  }
132 >    std::vector<RealType> getGrad() {  return curG;  }
133 >    void setGrad(std::vector<RealType>& g) {  curG = g;  }
134  
135 <    //interal function to evaluate the energy and gradient in OOPSE
136 <    void calcEnergyGradient(std::vector<double>& x,  std::vector<double>& grad, double&
135 >    //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);
138  
139      //calculate the value of object function
140      virtual void calcF();
141 <    virtual void calcF(std::vector<double>& x, double&f, int& status);
141 >    virtual void calcF(std::vector<RealType>& x, RealType&f, int& status);
142  
143      //calculate the gradient
144      virtual void calcG();
145 <    virtual void calcG(std::vector<double>& x,  std::vector<double>& g, double& f, int& status);
145 >    virtual void calcG(std::vector<RealType>& x,  std::vector<RealType>& g, RealType& f, int& status);
146  
147      //calculate the hessian
148      //virtual void calcH(int& status);
149 <    //virtual void calcH(vector<double>& x,  std::vector<dobule>& g, SymMatrix& h, int& status);
149 >    //virtual void calcH(vector<RealType>& x,  std::vector<dobule>& g, SymMatrix& h, int& status);
150  
151      friend std::ostream& operator<<(std::ostream& os, const Minimizer& minimizer);
152  
153    protected:
154  
155      // transfrom cartesian and rotational coordinates into minimization coordinates
156 <    std::vector<double> getCoor();
156 >    std::vector<RealType> getCoor();
157  
158      // transfrom minimization coordinates into cartesian and rotational coordinates  
159 <    void setCoor(std::vector<double>& x);
159 >    void setCoor(std::vector<RealType>& x);
160  
161  
162  
# Line 165 | Line 166 | namespace oopse {
166      //remove the force component along the bond direction
167      int shakeF() { return 0;}
168  
169 <    double calcPotential();
169 >    RealType calcPotential();
170          
171      SimInfo* info;
172  
# Line 195 | Line 196 | namespace oopse {
196      int egEvalStatus;
197  
198      //initial coordinates
199 <    //vector<double> initX;
199 >    //vector<RealType> initX;
200  
201      //current value  of the function
202 <    double curF;
202 >    RealType curF;
203          
204      // current coordinates
205 <    std::vector<double> curX;
205 >    std::vector<RealType> curX;
206  
207      //gradient at curent coordinates
208 <    std::vector<double> curG;
208 >    std::vector<RealType> curG;
209  
210      //hessian at current coordinates
211      //SymMatrix curH;

Comparing:
trunk/src/minimizers/Minimizer.hpp (property svn:keywords), Revision 507 by gezelter, Fri Apr 15 22:04:00 2005 UTC vs.
branches/development/src/minimizers/Minimizer.hpp (property svn:keywords), Revision 1665 by gezelter, Tue Nov 22 20:38:56 2011 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines