8 #ifndef INVERTIBLEOPERATOR_HPP_ 9 #define INVERTIBLEOPERATOR_HPP_ 11 #include <Teuchos_ParameterList.hpp> 12 #include <Teuchos_RCPDecl.hpp> 14 #include <lifev/core/linear_algebra/LinearOperatorAlgebra.hpp> 15 #include <lifev/core/util/FactorySingleton.hpp> 16 #include <lifev/core/util/Factory.hpp> 17 #include <lifev/core/array/VectorEpetra.hpp> 61 double NormInf()
const {
return M_oper->NormInf();}
69 virtual const char *
Label()
const {
return M_name.c_str();}
75 virtual bool HasNormInf()
const {
return M_oper->HasNormInf();}
virtual const map_Type & OperatorDomainMap() const
Returns the Epetra_Map object associated with the domain of this operator.
virtual void doSetOperator()=0
Teuchos::RCP< Epetra_Operator > M_oper
The operator to be solved (the boost copy makes sure that the operator is still alive; see ...
double NormInf() const
Returns the infinity norm of the global matrix.
virtual const char * Label() const
Returns a character string describing the operator.
Abstract class which defines the interface of a Linear Operator.
bool M_useTranspose
Whenever to use the transpose.
void updateInverseJacobian(const UInt &iQuadPt)
virtual const comm_Type & Comm() const
Returns a pointer to the Epetra_Comm communicator associated with this operator.
double TimeSolver() const
virtual int doApplyInverse(const vector_Type &X, vector_Type &Y) const =0
Teuchos::RCP< Epetra_Operator > M_prec
The preconditioner operator (the boost copy makes sure that the preconditioner is still alive; see ...
virtual int Apply(const vector_Type &X, vector_Type &Y) const
Returns the result of a Epetra_Operator applied to a vector_Type X in Y.
int M_numIterations
Number of iterations performed by the solver.
virtual bool UseTranspose() const
Returns the current UseTranspose setting.
Abstract class which defines the interface of an Invertible Linear Operator Algebra.
std::shared_ptr< Epetra_Operator > M_operBoost
double M_solutionTime
Time spent to solve the linear system.
virtual bool HasNormInf() const
Returns true if the this object can provide an approximate Inf-norm, false otherwise.
virtual void doSetParameterList()=0
std::string M_name
The name of the Operator.
virtual int ApplyInverse(const vector_Type &X, vector_Type &Y) const
Returns the result of a Epetra_Operator inverse applied to an vector_Type X in Y. ...
FactorySingleton< Factory< InvertibleOperator, std::string > > InvertibleOperatorFactory
void setPreconditioner(const operatorPtr_Type &_prec)
Epetra_MultiVector vector_Type
virtual void doSetPreconditioner()=0
void setOperator(const operatorPtr_Type &_oper)
std::shared_ptr< Epetra_Operator > M_precBoost
virtual const map_Type & OperatorRangeMap() const
Returns the Epetra_Map object associated with the range of this operator.
virtual int SetUseTranspose(bool useTranspose)
If set true, transpose of this operator will be applied.
std::shared_ptr< operator_Type > operatorPtr_Type
Teuchos::RCP< Teuchos::ParameterList > M_pList
The list of Parameter to feed the linear solver.
void setParameterList(const Teuchos::ParameterList &_pList)