00001 #ifndef DENSEPRIMALDUALSYSTEM 00002 #define DENSEPRIMALDUALSYSTEM 00003 00012 #include "PrimalDualSystem.hh" 00013 00014 class DenseSymSolver; 00015 class DenseSymMatrix; 00016 class IotrMaskSeq; 00017 00018 typedef Handle<DenseSymMatrix> DenseSymMatrixHandle; 00019 typedef Handle<DenseSymSolver> DenseSymSolverHandle; 00020 typedef Handle<IotrMaskSeq> IotrMaskSeqHandle; 00021 00026 class DensePrimalDualSystem : public PrimalDualSystem { 00027 protected: 00028 DenseSymMatrixHandle mMatrix; 00029 DenseSymSolverHandle mSolver; 00030 IotrMaskSeqHandle mXmask; 00031 public: 00032 DensePrimalDualSystem( ElementGather * iclow, ElementGather * icupp, 00033 ElementGather * ieq, 00034 ElementGather * ixlow, ElementGather * ixupp, 00035 DenseSymMatrix * matrix, DenseSymSolver * solver, 00036 IotrMaskSeq * aXmask ); 00037 00038 virtual void assemble( GenMatrix & J, SymMatrix & H, 00039 IotrVector & Dx, IotrVector & omega ); 00040 00041 virtual void matrixChanged(); 00042 virtual void basicSolve( IotrVector & xsol, 00043 IotrVector & rc ); 00044 00045 virtual int isConvex(); 00046 DenseSymMatrix & matrix() { return *mMatrix; } 00047 DenseSymSolver & solver() { return *mSolver; } 00048 }; 00049 00050 typedef Handle<DensePrimalDualSystem> DensePrimalDualSystemHandle; 00051 00052 #endif