SymArpackSolver.hGo to the documentation of this file.00001 // File: ~/system_of_eqn/linearSOE/LawSolver/SymArpackSolver.h 00002 // 00003 // Written: Jun Peng 00004 // Created: 2/1999 00005 // Revision: A 00006 // 00007 // Description: This file contains the class definition for 00008 // SymArpackSolver. It solves the SymArpackSOE object by calling 00009 // some "C" functions. The solver used here is generalized sparse 00010 // solver. The user can choose three different ordering schema. 00011 // 00012 // What: "@(#) SymArpackSolver.h, revA" 00013 00014 #ifndef SymArpackSolver_h 00015 #define SymArpackSolver_h 00016 00017 #include <EigenSolver.h> 00018 #include <SymArpackSOE.h> 00019 00020 class SymArpackSOE; 00021 00022 class SymArpackSolver : public EigenSolver 00023 { 00024 public: 00025 SymArpackSolver(int numE = 0); 00026 virtual ~SymArpackSolver(); 00027 00028 virtual int solve(void); 00029 virtual int solve(int numModes) {return this->solve();}; 00030 virtual int setSize(void); 00031 00032 virtual int setEigenSOE(SymArpackSOE &theSOE); 00033 00034 virtual const Vector &getEigenvector(int mode); 00035 virtual double getEigenvalue(int mode); 00036 00037 int sendSelf(int cTag, Channel &theChannel); 00038 int recvSelf(int cTag, Channel &theChannel, 00039 FEM_ObjectBroker &theBroker); 00040 00041 protected: 00042 00043 private: 00044 SymArpackSOE *theSOE; 00045 bool factored; 00046 00047 int theNev; 00048 double *value; 00049 double *vector; 00050 Vector *eigenV; 00051 00052 void myMv(int n, double *v, double *result); 00053 void myCopy(int n, double *v, double *result); 00054 int getNCV(int n, int nev); 00055 00056 }; 00057 00058 #endif 00059 |