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