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 #include <FullGenLinSolver.h>
00045
00084 class FullGenLinSOE : public LinearSOE
00085 {
00086 public:
00089 FullGenLinSOE(FullGenLinSolver &theSolver);
00090
00098 FullGenLinSOE(int N, FullGenLinSolver &theSolver);
00099
00100
00114 ~FullGenLinSOE();
00115
00116
00120 int getNumEqn(void) const;
00121
00134 int setSize(Graph &theGraph);
00135
00147 int addA(const Matrix &, const ID &, double fact = 1.0);
00148
00159 int addB(const Vector &, const ID &, double fact = 1.0);
00160
00168 int setB(const Vector &, double fact = 1.0);
00169
00170
00175 void zeroA(void);
00176
00180 void zeroB(void);
00181
00182
00186 const Vector &getX(void);
00187
00191 const Vector &getB(void);
00192
00196 double normRHS(void);
00197
00198
00202 void setX(int loc, double value);
00203
00204
00206 int setFullGenSolver(FullGenLinSolver &newSolver);
00207
00208
00210 friend #include <FullGenLinLapackSolver.h>
00211
00212 int sendSelf(int commitTag, Channel &theChannel);
00214 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00215
00216 protected:
00217
00218 private:
00220 int size;
00222 double *A, *B, *X;
00224 Vector *vectX;
00226 Vector *vectB;
00228 int Asize, Bsize;
00230 bool factored;
00231 };
00232
00233
00234 #endif
00235