SymArpackSolver.h

Go 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 

Generated on Mon Oct 23 15:05:27 2006 for OpenSees by doxygen 1.5.0