38 #ifndef _IFPACKPRECONDITIONER_HPP_ 39 #define _IFPACKPRECONDITIONER_HPP_ 43 #include <Ifpack_ConfigDefs.h> 44 #ifdef HAVE_IFPACK_DYNAMIC_FACTORY 45 #include <Ifpack_DynamicFactory.h> 49 #include <Ifpack_Preconditioner.h> 50 #include <Ifpack_AdditiveSchwarz.h> 51 #include <Ifpack_Amesos.h> 52 #include <Ifpack_ILU.h> 55 #include <lifev/core/LifeV.hpp> 57 #include <lifev/core/filter/GetPot.hpp> 58 #include <lifev/core/array/MatrixEpetra.hpp> 59 #include <lifev/core/algorithm/Preconditioner.hpp> 94 PreconditionerIfpack ( std::shared_ptr<Epetra_Comm> comm = std::shared_ptr<Epetra_Comm> (
new Epetra_SerialComm ) );
124 const std::string& section,
125 const std::string& subSection );
136 const std::string& section,
137 const std::string& subSection =
"ifpack",
138 const bool& verbose =
true );
145 virtual Int ApplyInverse (
const Epetra_MultiVector& vector1, Epetra_MultiVector& vector2 )
const;
152 virtual Int Apply (
const Epetra_MultiVector& vector1, Epetra_MultiVector& vector2 )
const;
155 virtual void showMe ( std::ostream& output = std::cout )
const;
169 const std::string& section );
224 return new PreconditionerIfpack();
operator_raw_type::matrix_ptrtype M_operator
std::shared_ptr< prec_raw_type > prec_type
int32_type Int
Generic integer data.
virtual void showMe(std::ostream &output=std::cout) const
Show informations about the preconditioner.
void updateInverseJacobian(const UInt &iQuadPt)
static const LifeV::UInt elm_nodes_num[]
Int buildPreconditioner(operator_type &matrix)
Build a preconditioner based on the given matrix.
static void createIfpackList(list_Type &list, const GetPot &dataFile, const std::string §ion, const std::string &subSection="ifpack", const bool &verbose=true)
Create the list of parameters of the preconditioner.
prec_type M_preconditioner
PreconditionerIfpack(std::shared_ptr< Epetra_Comm > comm=std::shared_ptr< Epetra_Comm >(new Epetra_MpiComm(MPI_COMM_WORLD)))
Empty constructor.
Epetra_Operator prec_raw_type
Real condest()
Return An estimation of the condition number of the preconditioner.
Preconditioner * createIfpack()
virtual void createParametersList(list_Type &list, const GetPot &dataFile, const std::string §ion, const std::string &subSection)
Create the list of parameters of the preconditioner.
const Epetra_Map & OperatorRangeMap() const
Return the Range map of the operator.
Ifpack_Preconditioner prec_raw_type
std::shared_ptr< Epetra_Comm > M_comm
const Int & getOverlapLevel() const
Return the overlap level.
bool UseTranspose()
Return true if the preconditioner is transposed.
MatrixEpetra< Real > operator_raw_type
super::prec_type preconditionerPtr()
Return a shared pointer on the preconditioner.
virtual ~PreconditionerIfpack()
Destructor.
double Real
Generic real data.
Int SetUseTranspose(bool useTranspose=false)
Set the matrix to be used transposed (or not)
Teuchos::ParameterList list_Type
Preconditioner - Abstract preconditioner class.
const Epetra_Map & OperatorDomainMap() const
Return the Domain map of the operator.
std::shared_ptr< prec_raw_type > prec_type
void resetPreconditioner()
Reset the preconditioner.
virtual Int ApplyInverse(const Epetra_MultiVector &vector1, Epetra_MultiVector &vector2) const
Apply the inverse of the preconditioner on vector1 and store the result in vector2.
virtual Int Apply(const Epetra_MultiVector &vector1, Epetra_MultiVector &vector2) const
Apply the inverse of the preconditioner on vector1 and store the result in vector2.
void setDataFromGetPot(const GetPot &dataFile, const std::string §ion)
Set the data of the preconditioner using a GetPot object.
super::prec_raw_type * preconditioner()
Return a raw pointer on the preconditioner.
std::shared_ptr< operator_raw_type > operator_type
std::string preconditionerType()
Return the type of preconditioner.