SymArpackSOE.h

Go to the documentation of this file.
00001 // File: ~/system_of_eqn/linearSOE/LawSolver/SymArpackSOE.h
00002 //
00003 // Written: Jun Peng
00004 // Created: 12/98
00005 // Revision: A
00006 //
00007 // Description: This file contains the class definition for 
00008 // SymArpackSOE.h. It stores the sparse matrix A in a fashion
00009 // that only store the none zero.
00010 //
00011 // What: "@(#) SymArpackSOE.h, revA"
00012 //
00013 // Almost all the information (Matrix A and Vector B) is stored as 
00014 // global variables in the file "symbolic.h".
00015 
00016 
00017 #ifndef SymArpackSOE_h
00018 #define SymArpackSOE_h
00019 
00020 #include <EigenSOE.h>
00021 #include <Vector.h>
00022 
00023 extern "C" {
00024    #include <FeStructs.h>
00025 }
00026 
00027 
00028 
00029 class SymArpackSolver;
00030 
00031 class SymArpackSOE : public EigenSOE
00032 {
00033   public:
00034     SymArpackSOE(SymArpackSolver &theSolver, AnalysisModel &theModel,
00035                 double shift = 0.0);        
00036 
00037     virtual ~SymArpackSOE();
00038 
00039     virtual int getNumEqn(void) const;
00040     virtual int setSize(Graph &theGraph);
00041     
00042     virtual int addA(const Matrix &, const ID &, double fact = 1.0);
00043     virtual int addM(const Matrix &, const ID &, double fact = 1.0);    
00044       
00045     virtual void zeroA(void);
00046     virtual void zeroM(void);
00047     
00048     virtual double getShift(void);
00049     
00050     int sendSelf(int commitTag, Channel &theChannel);
00051     int recvSelf(int commitTag, Channel &theChannel, 
00052                  FEM_ObjectBroker &theBroker);
00053 
00054     friend class SymArpackSolver;
00055 
00056 
00057   protected:
00058     
00059   private:
00060     int size;               // order of A
00061     int nnz;                // number of non-zeros in A
00062     int *colA, *rowStartA;  //These are (ADJNCY, XADJ) pair.
00063 
00064     bool factored;
00065     double shift;
00066     AnalysisModel *theModel;
00067 
00068     int      nblks;
00069     int      *xblk,  *invp;
00070     double   *diag, **penv;
00071     int      *rowblks;
00072     OFFDBLK  **begblk;
00073     OFFDBLK  *first;
00074 };
00075 
00076 #endif
00077 

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