1 #ifndef VERTEXCFD_LINEARSOLVERS_HYPREPRECONDITIONERFACTORY_HPP
2 #define VERTEXCFD_LINEARSOLVERS_HYPREPRECONDITIONERFACTORY_HPP
4 #include <Ifpack2_Preconditioner.hpp>
6 #include <Thyra_LinearOpWithSolveFactoryBase.hpp>
7 #include <Thyra_PreconditionerFactoryBase.hpp>
13 namespace LinearSolvers
21 :
public Thyra::PreconditionerFactoryBase<double>
26 const Thyra::LinearOpSourceBase<double>& fwdOpSrc)
const override;
29 Teuchos::RCP<Thyra::PreconditionerBase<double>> createPrec()
const override;
33 const Teuchos::RCP<
const Thyra::LinearOpSourceBase<double>>& fwdOpSrc,
34 Thyra::PreconditionerBase<double>* precOp,
35 const Thyra::ESupportSolveUse supportSolveUse
36 = Thyra::SUPPORT_SOLVE_UNSPECIFIED)
const override;
38 void uninitializePrec(
39 Thyra::PreconditionerBase<double>* prec,
40 Teuchos::RCP<
const Thyra::LinearOpSourceBase<double>>* fwdOpSrc = NULL,
41 Thyra::ESupportSolveUse* supportSolveUse = NULL)
const override;
46 void setParameterList(
47 const Teuchos::RCP<Teuchos::ParameterList>& params)
override;
48 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList()
override;
49 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList()
override;
51 Teuchos::RCP<const Teuchos::ParameterList>
52 getValidParameters()
const override;
55 Teuchos::RCP<Teuchos::ParameterList> _params;
57 mutable Teuchos::RCP<Ifpack2::Preconditioner<>> _hypre;
65 #endif // VERTEXCFD_LINEARSOLVERS_HYPREPRECONDITIONERFACTORY_HPP