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 #include <LinearSOE.h>
00040 #include <Vector.h>
00041
00042 class BandGenLinSolver;
00043
00044 class BandGenLinSOE : public LinearSOE
00045 {
00046 public:
00047 BandGenLinSOE(BandGenLinSolver &theSolver);
00048 BandGenLinSOE(BandGenLinSolver &theSolver, int classTag);
00049
00050 BandGenLinSOE(int N, int numSuperDiagonals, int numSubDiagonal,
00051 BandGenLinSolver &theSolver);
00052
00053 virtual ~BandGenLinSOE();
00054
00055 virtual int getNumEqn(void) const;
00056 virtual int setSize(Graph &theGraph);
00057
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
00072 virtual int setBandGenSolver(BandGenLinSolver &newSolver);
00073
00074 virtual int sendSelf(int commitTag, Channel &theChannel);
00075 virtual int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00076 friend class BandGenLinLapackSolver;
00077
00078 protected:
00079 int size, numSuperD, numSubD;
00080 double *A, *B, *X;
00081 Vector *vectX;
00082 Vector *vectB;
00083 int Asize, Bsize;
00084 bool factored;
00085
00086 private:
00087 };
00088
00089
00090 #endif
00091