00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef MumpsSOE_h
00026 #define MumpsSOE_h
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include <LinearSOE.h>
00043 #include <Vector.h>
00044
00045 class MumpsSolver;
00046 class LinearSOESolver;
00047
00048 class MumpsSOE : public LinearSOE
00049 {
00050 public:
00051 MumpsSOE(MumpsSolver &theSolver, int matType=2);
00052 MumpsSOE(LinearSOESolver &theSolver, int classTag, int matType = 2);
00053
00054 virtual ~MumpsSOE();
00055
00056 virtual int getNumEqn(void) const;
00057 virtual int setSize(Graph &theGraph);
00058 virtual int addA(const Matrix &, const ID &, double fact = 1.0);
00059 virtual int addB(const Vector &, const ID &, double fact = 1.0);
00060 virtual int setB(const Vector &, double fact = 1.0);
00061
00062 virtual void zeroA(void);
00063 virtual void zeroB(void);
00064
00065 virtual const Vector &getX(void);
00066 virtual const Vector &getB(void);
00067 virtual double normRHS(void);
00068
00069 virtual void setX(int loc, double value);
00070 virtual void setX(const Vector &x);
00071 virtual int setMumpsSolver(MumpsSolver &newSolver);
00072
00073 virtual int sendSelf(int commitTag, Channel &theChannel);
00074 virtual int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00075
00076 friend class MumpsSolver;
00077
00078
00079 protected:
00080 int size;
00081 int nnz;
00082 double *A, *B, *X;
00083 int *colA, *rowA, *rowB, *colStartA;
00084 Vector *vectX;
00085 Vector *vectB;
00086 int Asize, Bsize;
00087 bool factored;
00088 int matType;
00089
00090 private:
00091
00092 };
00093
00094
00095 #endif
00096