BandArpackSOE.h

Go to the documentation of this file.
00001 // File: ~/system_of_eqn/eigenSOE/BandArpackSOE.h
00002 //
00003 // Written: Jun Peng 
00004 // Created: Febuary 1999
00005 // Revision: A
00006 //
00007 // Description: This file contains the class definition for BandArpackSOE
00008 // BandArpackSOE is a subclass of EigenSOE. It uses the LAPACK storage
00009 // scheme to store the components of the K, M matrix, which is a full matrix.
00010 // It uses the ARPACK to do eigenvalue analysis.
00011 // ARPACK is an eigen analysis package which was developed by 
00012 // R.B.Lehoucq, D.C.Sorensen and C.Yang at Rice University. ARPACK is a
00013 // collection of FORTRAN77 subroutines designed to solve large scale eigen
00014 // problems. ARPACK is capable of solving large scale non-Hermitian standard 
00015 // and generalized eigen problems. When the matrix <B>K</B> is symmetric, 
00016 // the method is a variant of the Lanczos process called Implicitly Restarted
00017 // Lanczos Method (IRLM).
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 

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