00001 #ifndef CUTERSPARSEFUNCTIONAL
00002 #define CUTERSPARSEFUNCTIONAL
00003
00016 #include "CuterFunctional.hh"
00017
00018 #include "IotrHandle.hh"
00019
00020 class IotrVector;
00021
00025 class CuterSparseFunctional : public CuterFunctional {
00026 protected:
00027 int mHmz, mJmz;
00028
00029 virtual void concreteGrads( IotrVector & g, GenMatrix & J,
00030 IotrVector & x);
00031
00032 virtual void concreteHess( SymMatrix & H, IotrVector & x, IotrVector & Lm);
00033 public:
00034
00038 CuterSparseFunctional( CuterAdaptor & a );
00039 virtual PrimalDualSystem *
00040 newPrimalDualSystem( ElementGather * iclow, ElementGather * icupp,
00041 ElementGather * ieq,
00042 ElementGather * ixlow, ElementGather * ixupp,
00043 IotrMask * aXmask );
00044 virtual GenMatrix * newJacobianMatrix() const;
00045 virtual SymMatrix * newHessianMatrix() const;
00046
00047 virtual int hmz() { return mHmz; }
00048 virtual int jmz() { return mJmz; }
00049 virtual void writeConfiguration( std::ostream & out, char indent[] );
00050 };
00051
00052
00053 typedef Handle<CuterSparseFunctional> CuterSparseFunctionalHandle;
00054
00059 #endif