00001 #ifndef ABSTRACTEIGSOLVOPERATORS_H 00002 #define ABSTRACTEIGSOLVOPERATORS_H 00003 00004 #include <string> 00005 00006 using namespace std; 00007 00008 class Epetra_CrsMatrix; 00009 class Epetra_Operator; 00010 00011 class AbstractEigsolvOperators { 00012 00013 public: 00014 00015 virtual ~AbstractEigsolvOperators() { } 00016 00017 virtual const Epetra_Operator* getA() const = 0; 00018 virtual const Epetra_Operator* getM() const = 0; 00019 virtual const Epetra_Operator* getAsigmaPrec(double sigma) = 0; 00020 virtual const Epetra_Operator* getHSolver() = 0; 00021 virtual const Epetra_Operator* getHPrec() = 0; 00022 virtual Epetra_Operator* getH() = 0; 00023 virtual Epetra_Operator* getY() const = 0; 00024 virtual Epetra_Operator* getC() const = 0; 00025 00026 protected: 00029 Epetra_CrsMatrix* build_Asigma(const Epetra_CrsMatrix& A, const Epetra_CrsMatrix& M, double sigma); 00030 }; 00031 00032 #endif 00033