00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef BandArpackSOE_h
00021 #define BandArpackSOE_h
00022
00023 #include <EigenSOE.h>
00024 #include <Vector.h>
00025
00026 class AnalysisModel;
00027 class BandArpackSolver;
00028
00029 class BandArpackSOE : public EigenSOE
00030 {
00031 public:
00032 BandArpackSOE(BandArpackSolver &theSolver, AnalysisModel &theModel,
00033 double shift = 0.0);
00034
00035 virtual ~BandArpackSOE();
00036
00037 virtual int getNumEqn(void) const;
00038 virtual int setSize(Graph &theGraph);
00039
00040 virtual int addA(const Matrix &, const ID &, double fact = 1.0);
00041 virtual int addM(const Matrix &, const ID &, double fact = 1.0);
00042
00043 virtual void zeroA(void);
00044 virtual void zeroM(void);
00045
00046 virtual double getShift(void);
00047
00048 int sendSelf(int commitTag, Channel &theChannel);
00049 int recvSelf(int commitTag, Channel &theChannel,
00050 FEM_ObjectBroker &theBroker);
00051
00052 friend class BandArpackSolver;
00053
00054 protected:
00055
00056 private:
00057 int size, numSuperD, numSubD;
00058 double *A;
00059 int Asize;
00060 bool factored;
00061 double shift;
00062 AnalysisModel *theModel;
00063 };
00064
00065
00066 #endif
00067
00068
00069