1 #ifndef VERTEXCFD_LINEARSOLVERS_PRECONDITIONERFACTORY_HPP
2 #define VERTEXCFD_LINEARSOLVERS_PRECONDITIONERFACTORY_HPP
4 #include <Ifpack2_AdditiveSchwarz.hpp>
5 #include <Thyra_LinearOpWithSolveFactoryBase.hpp>
6 #include <Thyra_PreconditionerFactoryBase.hpp>
12 namespace LinearSolvers
24 const Thyra::LinearOpSourceBase<double>& fwdOpSrc)
const override;
27 Teuchos::RCP<Thyra::PreconditionerBase<double>> createPrec()
const override;
31 const Teuchos::RCP<
const Thyra::LinearOpSourceBase<double>>& fwdOpSrc,
32 Thyra::PreconditionerBase<double>* precOp,
33 const Thyra::ESupportSolveUse supportSolveUse
34 = Thyra::SUPPORT_SOLVE_UNSPECIFIED)
const override;
36 void uninitializePrec(
37 Thyra::PreconditionerBase<double>* prec,
38 Teuchos::RCP<
const Thyra::LinearOpSourceBase<double>>* fwdOpSrc = NULL,
39 Thyra::ESupportSolveUse* supportSolveUse = NULL)
const override;
44 void setParameterList(
45 const Teuchos::RCP<Teuchos::ParameterList>& params)
override;
46 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList()
override;
47 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList()
override;
49 Teuchos::RCP<const Teuchos::ParameterList>
50 getValidParameters()
const override;
53 Teuchos::RCP<Teuchos::ParameterList> _params;
55 mutable Teuchos::RCP<Ifpack2::AdditiveSchwarz<Tpetra::RowMatrix<>>> _schwarz;
63 #endif // VERTEXCFD_LINEARSOLVERS_PRECONDITIONERFACTORY_HPP