ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/ConjugateMinimizer.hpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/ConjugateMinimizer.hpp (file contents):
Revision 969 by tim, Tue Jan 20 20:32:57 2004 UTC vs.
Revision 1031 by tim, Fri Feb 6 18:58:06 2004 UTC

# Line 1 | Line 1
1   #ifndef _CONJUGATEMINIMIZER_H_
2   #define _CONJUGATEMINIMIZER_H_
3  
4 < #include "MinimizerBase.hpp"
4 > #include "Minimizer.hpp"
5  
6 < class ConjugateMinimizerBase : public MinimizeBase{
6 > //abstract class of conjugate gradient minimizer
7 > class ConjugateMinimizerBase : public MinimizerUsingLineSearch{
8 >
9    public:
10 <    bool isSolvable();
11 <    void calcDirection(vector<double>& direction)  = 0;
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 <    NLOPFirstDerive * model;
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 < class FRConjugateMinimizer : public ConjugateMinimizerBase{
32 <  public:    
18 <    void calcDirection(vector<double>& direction);
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 < class PRConjugateMinimizer : public ConjugateMinimizerBase{
43 > //Polak-Reeves Conjugate Gradient Method
44 > class PRCGMinimizer : public ConjugateMinimizerBase{
45 >
46    public:
47 <    void calcDirection(vector<double>& direction)  = 0;
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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines