ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/ConjugateMinimizer.hpp
Revision: 1031
Committed: Fri Feb 6 18:58:06 2004 UTC (20 years, 5 months ago) by tim
File size: 1426 byte(s)
Log Message:
Add some lines into global.cpp to make it work with energy minimization

File Contents

# User Rev Content
1 tim 969 #ifndef _CONJUGATEMINIMIZER_H_
2     #define _CONJUGATEMINIMIZER_H_
3    
4 tim 1015 #include "Minimizer.hpp"
5 tim 969
6 tim 1000 //abstract class of conjugate gradient minimizer
7 tim 1010 class ConjugateMinimizerBase : public MinimizerUsingLineSearch{
8 tim 1000
9 tim 969 public:
10 tim 1000
11 tim 1023 ConjugateMinimizerBase(NLModel1* nlmodel, MinimizerParameterSet* param);
12     ~ConjugateMinimizerBase() {}
13 tim 1000
14 tim 1023 bool isSolvable();
15     virtual void minimize();
16 tim 1010 virtual int checkConvergence();
17 tim 987 virtual void reset();
18 tim 1000 virtual void printMinizerInfo();
19 tim 969
20     protected:
21 tim 1000
22 tim 1015 virtual double calcGamma(vector<double>& newGrad, vector<double>& oldGrad) = 0;
23 tim 1023 NLModel1 * model;
24 tim 1000
25     vector<double> prevGrad;
26     vector<double> gradient;
27     vector<double> prevDirection;
28     vector<double> direction;
29 tim 969 };
30    
31 tim 1000 //Fletcher-Reeves Conjugate Gradient Method
32     class FRCGMinimizer : public ConjugateMinimizerBase{
33 tim 969
34 tim 1023 public:
35     FRCGMinimizer(NLModel1* nlmodel, MinimizerParameterSet* param) :ConjugateMinimizerBase(nlmodel, param){}
36    
37 tim 1000 protected:
38    
39     double calcGamma(vector<double>& newGrad, vector<double>& oldGrad);
40    
41 tim 969 };
42    
43 tim 1000 //Polak-Reeves Conjugate Gradient Method
44     class PRCGMinimizer : public ConjugateMinimizerBase{
45    
46 tim 1023 public:
47     PRCGMinimizer(NLModel1* nlmodel, MinimizerParameterSet* param) :ConjugateMinimizerBase(nlmodel, param){}
48    
49 tim 1000 protected:
50    
51     double calcGamma(vector<double>& newGrad, vector<double>& oldGrad);
52 tim 969 };
53    
54     #endif