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
00026 #ifndef FullGenLinSOE_h
00027 #define FullGenLinSOE_h
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #include <LinearSOE.h>
00042 #include <Vector.h>
00043
00044 class FullGenLinSolver;
00045
00046 class FullGenLinSOE : public LinearSOE
00047 {
00048 public:
00049 FullGenLinSOE(FullGenLinSolver &theSolver);
00050 FullGenLinSOE(int N, FullGenLinSolver &theSolver);
00051
00052 ~FullGenLinSOE();
00053
00054 int getNumEqn(void) const;
00055 int setSize(Graph &theGraph);
00056 int addA(const Matrix &, const ID &, double fact = 1.0);
00057 int addB(const Vector &, const ID &, double fact = 1.0);
00058 int setB(const Vector &, double fact = 1.0);
00059
00060 void zeroA(void);
00061 void zeroB(void);
00062
00063 const Vector &getX(void);
00064 const Vector &getB(void);
00065 double normRHS(void);
00066
00067 void setX(int loc, double value);
00068 void setX(const Vector &x);
00069
00070 int setFullGenSolver(FullGenLinSolver &newSolver);
00071
00072 friend class FullGenLinLapackSolver;
00073
00074 int sendSelf(int commitTag, Channel &theChannel);
00075 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00076
00077 protected:
00078
00079 private:
00080 int size;
00081 double *A, *B, *X;
00082 Vector *vectX;
00083 Vector *vectB;
00084 int Asize, Bsize;
00085 bool factored;
00086 };
00087
00088
00089 #endif
00090