38 #include <lifev/core/algorithm/PreconditionerComposition.hpp> 39 #include <lifev/core/operator
/ConfinedOperator.hpp> 42 #include <Ifpack_config.h> 44 #include <Ifpack_Preconditioner.h> 45 #include <ml_MultiLevelPreconditioner.h> 46 #include <Ifpack_AdditiveSchwarz.h> 47 #include <Ifpack_Amesos.h> 48 #include <Ifpack_ILU.h> 60 M_prec (
new prec_Type ( comm ) )
76 M_precBaseOperators.clear();
86 M_prec.reset (
new prec_Type ( M_comm ) );
87 M_precBaseOperators.clear();
105 return M_prec->SetUseTranspose ( useTranspose );
111 return M_prec->Apply ( X, Y );
117 return M_prec->ApplyInverse ( X, Y );
123 return M_prec->UseTranspose();
129 return M_prec->OperatorRangeMap();
135 return M_prec->OperatorDomainMap();
bool M_preconditionerCreated
~PreconditionerComposition()
Destructor.
Int SetUseTranspose(const bool useTranspose=false)
Set the matrix to be used transposed (or not)
void resetPreconditioner()
Reset the preconditioner.
Int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Apply the inverse of the preconditioner on vector1 and store the result in vector2.
void updateInverseJacobian(const UInt &iQuadPt)
const Epetra_Map & OperatorRangeMap() const
Return the Range map of the operator.
Real condest()
Return an estimation of the conditionement number of the preconditioner.
PreconditionerComposition(std::shared_ptr< Epetra_Comm > comm=std::shared_ptr< Epetra_Comm >(new Epetra_MpiComm(MPI_COMM_WORLD)))
Constructor.
bool UseTranspose()
Return true if the preconditioner is transposed.
double Real
Generic real data.
const Epetra_Map & OperatorDomainMap() const
Return the Domain map of the operator.
PreconditionerComposition(const PreconditionerComposition &precComp)
Copy constructor.
Int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Apply the inverse of the preconditioner on vector1 and store the result in vector2.