00001 #ifndef AMPLDENSEFUNCTIONAL
00002 #define AMPLDENSEFUNCTIONAL
00003
00016 #include "Functional.hh"
00017 #include "AmplFunctional.hh"
00018 #include "IotrConfiguration.hh"
00019
00020 #include<string>
00021
00022 struct ASL;
00023 struct Option_Info;
00024 struct keyword;
00025
00026 class IotrVector;
00027 class ElementGatherSeq;
00028 class IotrMask;
00029
00033 class AmplDenseFunctional : public AmplFunctional {
00034 protected:
00035 int mLeadingDimensionJac;
00036 public:
00037 AmplDenseFunctional( AmplAdaptor *a );
00038
00039 virtual void concreteGrads( IotrVector & g, GenMatrix & J,
00040 IotrVector & x );
00041
00042 virtual void concreteHess( SymMatrix & H,
00043 IotrVector & x, IotrVector & Lm);
00044
00045 virtual GenMatrix * newJacobianMatrix() const;
00046 virtual SymMatrix * newHessianMatrix() const;
00047
00048 virtual PrimalDualSystem *
00049 newPrimalDualSystem( ElementGather * iclow, ElementGather * icupp,
00050 ElementGather * ieq,
00051 ElementGather * ixlow, ElementGather * ixupp,
00052 IotrMask * aXmask );
00053 virtual void writeConfiguration( std::ostream & out, char indent[] );
00054 void dense_row_major_jac( int ldj );
00055 };
00056
00057 typedef Handle<AmplDenseFunctional> AmplDenseFunctionalHandle;
00058
00063 #endif