10#ifndef THYRA_MUELU_PRECONDITIONER_FACTORY_DECL_HPP
11#define THYRA_MUELU_PRECONDITIONER_FACTORY_DECL_HPP
15#if defined(HAVE_MUELU_STRATIMIKOS) && defined(HAVE_MUELU_THYRA)
18#include "Thyra_DefaultPreconditioner.hpp"
19#include "Thyra_BlockedLinearOpBase.hpp"
20#include "Thyra_DiagonalLinearOpBase.hpp"
22#include "Thyra_TpetraLinearOp.hpp"
23#include "Thyra_TpetraThyraWrappers.hpp"
25#include "Teuchos_Ptr.hpp"
26#include "Teuchos_TestForException.hpp"
27#include "Teuchos_Assert.hpp"
28#include "Teuchos_Time.hpp"
30#include <Xpetra_CrsMatrixWrap.hpp>
31#include <Xpetra_CrsMatrix.hpp>
32#include <Xpetra_Matrix.hpp>
33#include <Xpetra_ThyraUtils.hpp>
35#include <MueLu_Hierarchy.hpp>
36#include <MueLu_HierarchyManager.hpp>
37#include <MueLu_HierarchyUtils.hpp>
38#include <MueLu_Utilities.hpp>
39#include <MueLu_ParameterListInterpreter.hpp>
43#include <MueLu_TpetraOperator.hpp>
44#include <Xpetra_TpetraHalfPrecisionOperator.hpp>
46#include "Thyra_PreconditionerFactoryBase.hpp"
48#include <Tpetra_KokkosCompat_DefaultNode.hpp>
57template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
59 static bool replaceWithXpetra(ParameterList& paramList, std::string parameterName);
67template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
68class MueLuPreconditionerFactory :
public PreconditionerFactoryBase<Scalar> {
74 MueLuPreconditionerFactory();
76 ~MueLuPreconditionerFactory();
83 bool isCompatible(
const LinearOpSourceBase<Scalar>& fwdOp)
const;
85 Teuchos::RCP<PreconditionerBase<Scalar> > createPrec()
const;
87 void initializePrec(
const Teuchos::RCP<
const LinearOpSourceBase<Scalar> >& fwdOp,
88 PreconditionerBase<Scalar>* prec,
89 const ESupportSolveUse supportSolveUse)
const;
91 void uninitializePrec(PreconditionerBase<Scalar>* prec,
92 Teuchos::RCP<
const LinearOpSourceBase<Scalar> >* fwdOp,
93 ESupportSolveUse* supportSolveUse)
const;
101 void setParameterList(
const Teuchos::RCP<Teuchos::ParameterList>& paramList);
103 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
105 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
107 Teuchos::RCP<const Teuchos::ParameterList> getParameterList()
const;
116 std::string description()
const;
125 Teuchos::RCP<Teuchos::ParameterList> paramList_;
Various adapters that will create a MueLu preconditioner that is an Xpetra::Matrix.
void getValidParameters(Teuchos::ParameterList ¶ms)