EigenSOE.hGo to the documentation of this file.00001 // File: ~/system_of_eqn/eigenSOE/EigenSOE.h 00002 // 00003 // Written: Jun Peng 00004 // Created: Sat Feb. 6, 1999 00005 // Revision: A 00006 // 00007 // Description: This file contains the class definition of EigenSOE. 00008 // EigenSOE is a subclass of SystemOfEqn. 00009 // It has pure virtual functions which must be implemented in it's derived 00010 // subclasses. To solve the genreal eigen value equations means that 00011 // by the given K and M, find the corresponding eigen value and eigen 00012 // vectors. 00013 // 00014 // This class is inheritanted from the base class of SystemOfEqn 00015 // which was created by fmk (Frank). 00016 00017 00018 #ifndef EigenSOE_h 00019 #define EigenSOE_h 00020 00021 #ifndef _bool_h 00022 #include <bool.h> 00023 #endif 00024 00025 #include <SystemOfEqn.h> 00026 00027 class EigenSolver; 00028 class Graph; 00029 class Matrix; 00030 class Vector; 00031 class ID; 00032 00033 class EigenSOE : public SystemOfEqn 00034 { 00035 public: 00036 EigenSOE(EigenSolver &theSolver, int classTag); 00037 virtual ~EigenSOE(); 00038 00039 virtual int solve(int numModes); 00040 virtual int solve(void); 00041 00042 // pure virtual functions 00043 virtual int addA(const Matrix &, const ID &, double fact = 1.0) = 0; 00044 virtual int addM(const Matrix &, const ID &, double fact = 1.0) = 0; 00045 00046 virtual int setSize(Graph &theGraph) = 0; 00047 virtual void zeroA(void) = 0; 00048 virtual void zeroM(void) = 0; 00049 00050 // methods to get the eigenvectors and eigenvalues 00051 virtual const Vector &getEigenvector(int mode); 00052 virtual double getEigenvalue(int mode); 00053 00054 protected: 00055 virtual int setSolver(EigenSolver &newSolver); 00056 EigenSolver *getSolver(void); 00057 EigenSolver *theSolver; 00058 00059 private: 00060 00061 }; 00062 00063 #endif 00064 00065 00066 |