22 #ifndef __HERMES_COMMON_PRECOND_H_
23 #define __HERMES_COMMON_PRECOND_H_
31 #include <Epetra_Operator.h>
34 using namespace Hermes::Algebra;
39 namespace Preconditioners
44 template <
typename Scalar>
47 :
public Epetra_Operator
52 virtual void destroy() = 0;
53 virtual void compute() = 0;
56 virtual Epetra_Operator *get_obj() = 0;
59 virtual int SetUseTranspose(
bool UseTranspose) {
return 0; }
60 virtual int Apply(
const Epetra_MultiVector &X, Epetra_MultiVector &Y)
const {
return 0; }
61 virtual int ApplyInverse(
const Epetra_MultiVector &r, Epetra_MultiVector &z)
const {
return 0; }
62 virtual double NormInf()
const {
return 0.0; }
63 virtual const char *Label()
const {
return NULL; }
64 virtual bool UseTranspose()
const {
return false; }
65 virtual bool HasNormInf()
const {
return false; }
66 virtual const Epetra_Comm &Comm()
const = 0;
67 virtual const Epetra_Map &OperatorDomainMap()
const = 0;
68 virtual const Epetra_Map &OperatorRangeMap()
const = 0;