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 #include <EigenSolver.h>
00028 #include <Graph.h>
00029 #include <Matrix.h>
00030 #include <Vector.h>
00031 #include <ID.h>
00032
00034 class EigenSOE : public SystemOfEqn
00035 {
00036 public:
00038 EigenSOE(EigenSolver &theSolver, int classTag);
00040 virtual ~EigenSOE();
00041
00043 virtual int solve(int numModes);
00045 virtual int solve(void);
00046
00048 virtual int addA(const Matrix &, const ID &, double fact = 1.0) = 0;
00050 virtual int addM(const Matrix &, const ID &, double fact = 1.0) = 0;
00051
00053 virtual int setSize(Graph &theGraph) = 0;
00055 virtual void zeroA(void) = 0;
00057 virtual void zeroM(void) = 0;
00058
00060 virtual const Vector &getEigenvector(int mode);
00062 virtual double getEigenvalue(int mode);
00063
00064 protected:
00066 virtual int setSolver(EigenSolver &newSolver);
00068 EigenSolver *getSolver(void);
00070EigenSolver *theSolver;
00071
00072 private:
00073
00074 };
00075
00076 #endif
00077
00078
00079
00080 ÿ