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 BandGenLinSOE_h
00027 #define BandGenLinSOE_h
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #include <LinearSOE.h>
00044 #include <Vector.h>
00045
00046 #include <BandGenLinSolver.h>
00047
00242 class BandGenLinSOE : public LinearSOE
00243 {
00244 public:
00246 BandGenLinSOE(BandGenLinSolver &theSolver);
00247
00249 BandGenLinSOE(int N, int numSuperDiagonals, int numSubDiagonal,
00250 BandGenLinSolver &theSolver);
00251
00253 ~BandGenLinSOE();
00254
00256 int getNumEqn(void) const;
00258 int setSize(Graph &theGraph);
00259
00261 int addA(const Matrix &, const ID &, double fact = 1.0);
00263 int addB(const Vector &, const ID &, double fact = 1.0);
00265 int setB(const Vector &, double fact = 1.0);
00266
00268 void zeroA(void);
00270 void zeroB(void);
00271
00273 const Vector &getX(void);
00275 const Vector &getB(void);
00277 double normRHS(void);
00278
00280 void setX(int loc, double value);
00281
00283 int setBandGenSolver(BandGenLinSolver &newSolver);
00284
00286 int sendSelf(int commitTag, Channel &theChannel);
00288 int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00290 friend #include <BandGenLinLapackSolver.h>
00291
00292 protected:
00293
00294 private:
00295 int size, numSuperD, numSubD;
00297 double *A, *B, *X;
00299 Vector *vectX;
00301 Vector *vectB;
00303 int Asize, Bsize;
00305 bool factored;
00306 };
00307
00308
00309 #endif
00310