00001 // File: ~/system_of_eqn/eigenSOE/BandArpackSolver.h 00002 // 00003 // Written: Jun Peng 00004 // Created: Feb. 11, 1999 00005 // Revision: A 00006 // 00007 // Description: This file contains the class definition for 00008 // BandArpackSolver. It solves the BandArpackSOE object by calling 00009 // Arpack routines. 00010 00011 00012 #ifndef BandArpackSolver_h 00013 #define BandArpackSolver_h 00014 00015 #include <EigenSolver.h> 00016 #include <BandArpackSOE.h> 00017 00019 class BandArpackSolver : public EigenSolver 00020 { 00021 public: 00023 BandArpackSolver(int numE = 0); 00025 virtual ~BandArpackSolver(); 00026 00028 virtual int solve(void); 00030 virtual int solve(int numModes) {return this->solve();}; 00032 virtual int setSize(void); 00034 virtual int setEigenSOE(BandArpackSOE &theSOE); 00035 00037 virtual const Vector &getEigenvector(int mode); 00039 virtual double getEigenvalue(int mode); 00040 00042 int sendSelf(int commitTag, Channel &theChannel); 00044 int recvSelf(int commitTag, Channel &theChannel, 00045 FEM_ObjectBroker &theBroker); 00046 00047 protected: 00048 00049 00050 private: 00052 BandArpackSOE *theSOE; 00054 int theNev; 00056 double *value; 00058 double *eigenvector; 00060 int *iPiv; 00062 int iPivSize; 00064 Vector *eigenV; 00065 00067 void myMv(int n, double *v, double *result); 00069 void myCopy(int n, double *v, double *result); 00071 int getNCV(int n, int nev); 00072 00073 }; 00074 00075 #endif 00076 00077 00078 ÿ