00001
00002
00003 #ifndef ClpPdcoBase_H
00004 #define ClpPdcoBase_H
00005
00006 #include "CoinPragma.hpp"
00007
00008 #include "CoinPackedMatrix.hpp"
00009 #include "CoinDenseVector.hpp"
00010 class ClpInterior;
00011
00022 class ClpPdcoBase {
00023
00024 public:
00027 virtual void matVecMult(ClpInterior * model, int mode, double * x, double * y) const=0;
00028
00029 virtual void getGrad(ClpInterior * model, CoinDenseVector<double> &x, CoinDenseVector<double> &grad) const=0;
00030
00031 virtual void getHessian(ClpInterior * model, CoinDenseVector<double> &x, CoinDenseVector<double> &H) const=0;
00032
00033 virtual double getObj(ClpInterior * model, CoinDenseVector<double> &x) const=0;
00034
00035 virtual void matPrecon(ClpInterior * model, double delta, double * x, double * y) const = 0;
00036
00038
00039
00040
00041 virtual ClpPdcoBase * clone() const = 0;
00043 inline int type() const
00044 { return type_;};
00046 inline void setType(int type) {type_=type;};
00048 inline int sizeD1() const
00049 { return 1;};
00051 inline double getD1() const
00052 { return d1_;};
00054 inline int sizeD2() const
00055 { return 1;};
00057 inline double getD2() const
00058 { return d2_;};
00060
00061
00062 protected:
00063
00069 ClpPdcoBase();
00071 public:
00072 virtual ~ClpPdcoBase();
00073 protected:
00074
00075 ClpPdcoBase(const ClpPdcoBase&);
00076
00077 ClpPdcoBase& operator=(const ClpPdcoBase&);
00079
00080
00081 protected:
00085
00086 double d1_;
00087 double d2_;
00089 int type_;
00091 };
00092
00093 #endif