22 #ifndef __HERMES_COMMON_PRECOND_H_
23 #define __HERMES_COMMON_PRECOND_H_
31 #include <Epetra_Operator.h>
39 namespace Preconditioners
56 template <
typename Scalar>
65 template <
typename Scalar>
68 ,
public Epetra_Operator
73 virtual void destroy() = 0;
74 virtual void compute() = 0;
75 virtual void recompute() = 0;
78 virtual Epetra_Operator *get_obj() = 0;
81 virtual int SetUseTranspose(
bool UseTranspose) {
return 0; }
82 virtual int Apply(
const Epetra_MultiVector &X, Epetra_MultiVector &Y)
const {
return 0; }
83 virtual int ApplyInverse(
const Epetra_MultiVector &r, Epetra_MultiVector &z)
const {
return 0; }
84 virtual double NormInf()
const {
return 0.0; }
85 virtual const char *Label()
const {
return nullptr; }
86 virtual bool UseTranspose()
const {
return false; }
87 virtual bool HasNormInf()
const {
return false; }
88 virtual const Epetra_Comm &Comm()
const = 0;
89 virtual const Epetra_Map &OperatorDomainMap()
const = 0;
90 virtual const Epetra_Map &OperatorRangeMap()
const = 0;
General (abstract) matrix representation in Hermes.
General namespace for the Hermes library.
Abstract class to define interface for preconditioners.
Namespace containing classes for vector / matrix operations.
PreconditionerType
The preconditioner type.
Abstract class for Epetra preconditioners.
Basic matrix classes and operations.
File containing common definitions, and basic global enums etc. for HermesCommon. ...