Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

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 #include <AnalysisModel.h>
00027 #include <BandArpackSolver.h>
00028 
00030 class BandArpackSOE : public EigenSOE
00031 {
00032   public:
00034     BandArpackSOE(BandArpackSolver &theSolver, AnalysisModel &theModel, 
00035     double shift = 0.0);    
00036 
00038     virtual ~BandArpackSOE();
00039 
00041     virtual int getNumEqn(void) const;
00043     virtual int setSize(Graph &theGraph);
00044     
00046     virtual int addA(const Matrix &, const ID &, double fact = 1.0);
00048     virtual int addM(const Matrix &, const ID &, double fact = 1.0);    
00049    
00051     virtual void zeroA(void);
00053     virtual void zeroM(void);
00054     
00056     virtual double getShift(void);
00057     
00059     int sendSelf(int commitTag, Channel &theChannel);
00061     int recvSelf(int commitTag, Channel &theChannel, 
00062    FEM_ObjectBroker &theBroker);
00063     
00065     friend #include <BandArpackSolver.h>
00066 
00067   protected:
00068     
00069   private:
00070     int size, numSuperD, numSubD;    
00072     double *A;
00074     int Asize;
00076     bool factored;
00078     double shift;
00080     AnalysisModel *theModel;
00081     
00082 };
00083 
00084 
00085 #endif
00086 
00087 
00088 
00089 ÿ
Copyright Contact Us