00001 #ifndef AMPLSPARSEFUNCTIONAL
00002 #define AMPLSPARSEFUNCTIONAL
00003
00016 #include "AmplFunctional.hh"
00017
00018 #include<string>
00019
00020 struct ASL;
00021 struct Option_Info;
00022 struct keyword;
00023
00024 class IotrMask;
00025
00029 class AmplSparseFunctional : public AmplFunctional {
00030 protected:
00031 int nhnz;
00032 public:
00033 AmplSparseFunctional( AmplAdaptor * adaptor );
00034
00035 virtual void concreteGrads( IotrVector & g, GenMatrix & J,
00036 IotrVector & x );
00037
00038 virtual void concreteHess( SymMatrix & H,
00039 IotrVector & x, IotrVector & Lm);
00040
00041 virtual GenMatrix * newJacobianMatrix() const;
00042 virtual SymMatrix * newHessianMatrix() const;
00043
00044 virtual PrimalDualSystem *
00045 newPrimalDualSystem( ElementGather * iclow, ElementGather * icupp,
00046 ElementGather * ieq,
00047 ElementGather * ixlow, ElementGather * ixupp,
00048 IotrMask * aXmask );
00049 virtual void writeConfiguration( std::ostream & out, char indent[] );
00050 };
00051
00052 typedef Handle<AmplSparseFunctional> AmplSparseFunctionalHandle;
00053
00058 #endif