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

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