47 #ifndef THYRA_MUELU_REFMAXWELL_PRECONDITIONER_FACTORY_DECL_HPP
48 #define THYRA_MUELU_REFMAXWELL_PRECONDITIONER_FACTORY_DECL_HPP
52 #if defined(HAVE_MUELU_STRATIMIKOS) && defined(HAVE_MUELU_THYRA)
55 #include "Thyra_DefaultPreconditioner.hpp"
56 #include "Thyra_BlockedLinearOpBase.hpp"
57 #include "Thyra_DiagonalLinearOpBase.hpp"
60 #include "Thyra_TpetraLinearOp.hpp"
61 #include "Thyra_TpetraThyraWrappers.hpp"
62 #ifdef HAVE_MUELU_EPETRA
63 #include "Thyra_EpetraLinearOp.hpp"
64 #include "Thyra_EpetraThyraWrappers.hpp"
67 #include "Teuchos_Ptr.hpp"
69 #include "Teuchos_Assert.hpp"
72 #include <Xpetra_CrsMatrixWrap.hpp>
78 #include <MueLu_RefMaxwell.hpp>
79 #include <MueLu_TpetraOperator.hpp>
81 #include <Xpetra_TpetraHalfPrecisionOperator.hpp>
82 #ifdef HAVE_MUELU_EPETRA
87 #include "Thyra_PreconditionerFactoryBase.hpp"
89 #include <Tpetra_KokkosCompat_DefaultNode.hpp>
103 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
104 class MueLuRefMaxwellPreconditionerFactory :
public PreconditionerFactoryBase<Scalar> {
110 MueLuRefMaxwellPreconditionerFactory();
117 bool isCompatible(
const LinearOpSourceBase<Scalar>& fwdOp)
const;
121 void initializePrec(
const Teuchos::RCP<
const LinearOpSourceBase<Scalar> >& fwdOp,
122 PreconditionerBase<Scalar>* prec,
123 const ESupportSolveUse supportSolveUse)
const;
125 void uninitializePrec(PreconditionerBase<Scalar>* prec,
127 ESupportSolveUse* supportSolveUse)
const;
150 std::string description()
const;
162 #endif // #ifdef HAVE_MUELU_STRATIMIKOS
164 #endif // THYRA_MUELU_REFMAXWELL_PRECONDITIONER_FACTORY_DECL_HPP
void getValidParameters(Teuchos::ParameterList ¶ms)