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 SparseGenColLinSOE_h
00027 #define SparseGenColLinSOE_h
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include <LinearSOE.h>
00043 #include <Vector.h>
00044
00045 #include <SparseGenColLinSolver.h>
00046
00112 class SparseGenColLinSOE : public LinearSOE
00113 {
00114 public:
00117 SparseGenColLinSOE(SparseGenColLinSolver &theSolver);
00118
00126 SparseGenColLinSOE(int N, int NNZ, int *rowStartA, int *colA,
00127
00128 SparseGenColLinSolver &theSolver);
00129
00145 ~SparseGenColLinSOE();
00146
00147
00151 int getNumEqn(void) const;
00152
00175 int setSize(Graph &theGraph);
00176
00188 int addA(const Matrix &, const ID &, double fact = 1.0);
00189
00200 int addB(const Vector &, const ID &, double fact = 1.0);
00201
00209 int setB(const Vector &, double fact = 1.0);
00210
00211
00216 void zeroA(void);
00217
00221 void zeroB(void);
00222
00223
00227 const Vector &getX(void);
00228
00232 const Vector &getB(void);
00233
00237 double normRHS(void);
00238
00239
00243 void setX(int loc, double value);
00244
00246 int setSparseGenColSolver(SparseGenColLinSolver &newSolver);
00247
00248
00250 int sendSelf(int commitTag, Channel &theChannel);
00252 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00254 friend #include <SuperLU.h>
00255 friend #include <ThreadedSuperLU.h>
00256
00257 protected:
00258
00259 private:
00260 int size;
00261 int nnz;
00262 double *A, *B, *X;
00263 int *rowA, *colStartA;
00264 Vector *vectX;
00266 Vector *vectB;
00268 int Asize, Bsize;
00269 bool factored;
00270 };
00271
00272
00273 #endif
00274