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