/build/buildd/clp-1.12.0/Clp/src/ClpPdcoBase.hpp
Go to the documentation of this file.
00001 /* $Id: ClpPdcoBase.hpp 1525 2010-02-26 17:27:59Z mjs $ */
00002 // Copyright (C) 2003, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 #ifndef ClpPdcoBase_H
00005 #define ClpPdcoBase_H
00006 
00007 #include "CoinPragma.hpp"
00008 
00009 #include "CoinPackedMatrix.hpp"
00010 #include "CoinDenseVector.hpp"
00011 class ClpInterior;
00012 
00023 class ClpPdcoBase  {
00024 
00025 public:
00028      virtual void matVecMult(ClpInterior * model, int mode, double * x, double * y) const = 0;
00029 
00030      virtual void getGrad(ClpInterior * model, CoinDenseVector<double> &x, CoinDenseVector<double> &grad) const = 0;
00031 
00032      virtual void getHessian(ClpInterior * model, CoinDenseVector<double> &x, CoinDenseVector<double> &H) const = 0;
00033 
00034      virtual double getObj(ClpInterior * model, CoinDenseVector<double> &x) const = 0;
00035 
00036      virtual void matPrecon(ClpInterior * model,  double delta, double * x, double * y) const = 0;
00037 
00039 
00040 
00041 
00042      virtual ClpPdcoBase * clone() const = 0;
00044      inline int type() const {
00045           return type_;
00046      };
00048      inline void setType(int type) {
00049           type_ = type;
00050      };
00052      inline int sizeD1() const {
00053           return 1;
00054      };
00056      inline double getD1() const {
00057           return d1_;
00058      };
00060      inline int sizeD2() const {
00061           return 1;
00062      };
00064      inline double getD2() const {
00065           return d2_;
00066      };
00068 
00069 
00070 protected:
00071 
00077      ClpPdcoBase();
00079 public:
00080      virtual ~ClpPdcoBase();
00081 protected:
00082      // Copy
00083      ClpPdcoBase(const ClpPdcoBase&);
00084      // Assignment
00085      ClpPdcoBase& operator=(const ClpPdcoBase&);
00087 
00088 
00089 protected:
00093 
00094      double d1_;
00095      double d2_;
00097      int type_;
00099 };
00100 
00101 #endif