46 #ifndef MUELU_STRATIMIKOSSMOOTHER_DECL_HPP 47 #define MUELU_STRATIMIKOSSMOOTHER_DECL_HPP 49 #include <Teuchos_ParameterList.hpp> 51 #include <Xpetra_CrsMatrixWrap.hpp> 52 #include <Xpetra_Matrix_fwd.hpp> 53 #include <Xpetra_Matrix.hpp> 58 #if defined(HAVE_MUELU_STRATIMIKOS) && defined(HAVE_MUELU_TPETRA) && defined(HAVE_MUELU_THYRA) 60 #include <Tpetra_CrsMatrix.hpp> 65 #include "MueLu_SmootherPrototype.hpp" 68 #include <Thyra_LinearOpWithSolveBase.hpp> 83 template <class Scalar = SmootherPrototype<>::scalar_type,
87 class StratimikosSmoother :
public SmootherPrototype<Scalar,LocalOrdinal,GlobalOrdinal,Node> {
88 #undef MUELU_STRATIMIKOSSMOOTHER_SHORT 107 template<
class Scalar2,
class LocalOrdinal2,
class GlobalOrdinal2,
class Node2>
108 friend class StratimikosSmoother;
111 StratimikosSmoother(
const std::string type,
const Teuchos::ParameterList& paramList = Teuchos::ParameterList()) {
112 TEUCHOS_TEST_FOR_EXCEPTION(
true, Exceptions::RuntimeError,
"Stratimikos only works for Scalar=double.")
116 virtual ~StratimikosSmoother() =
default;
120 void SetParameterList(
const Teuchos::ParameterList& paramList) {};
125 void DeclareInput(Level ¤tLevel)
const {};
137 void Setup(Level ¤tLevel) {};
147 void Apply(MultiVector& X,
const MultiVector& B,
bool InitialGuessIsZero =
false)
const {};
154 RCP<SmootherPrototype>
Copy()
const {
return Teuchos::null; };
162 std::string description()
const {
return std::string(
""); };
167 void print(Teuchos::FancyOStream &out,
const VerbLevel verbLevel =
Default)
const {};
175 size_t getNodeSmootherComplexity()
const {
return Teuchos::OrdinalTraits<size_t>::invalid(); };
180 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
183 #undef MUELU_STRATIMIKOSSMOOTHER_SHORT 186 StratimikosSmoother(
const std::string type,
const Teuchos::ParameterList& paramList = Teuchos::ParameterList());
189 virtual ~StratimikosSmoother() =
default;
193 void SetParameterList(
const Teuchos::ParameterList& paramList);
198 void DeclareInput(Level ¤tLevel)
const;
210 void Setup(Level ¤tLevel);
220 void Apply(MultiVector& X,
const MultiVector& B,
bool InitialGuessIsZero =
false)
const;
227 RCP<SmootherPrototype>
Copy()
const;
235 std::string description()
const;
240 void print(Teuchos::FancyOStream &out,
const VerbLevel verbLevel =
Default)
const;
248 size_t getNodeSmootherComplexity()
const;
251 void SetupStratimikos (Level& currentLevel);
255 Teuchos::RCP<Thyra::LinearOpWithSolveBase<Scalar> > solver_;
264 #define MUELU_STRATIMIKOSSMOOTHER_SHORT 265 #endif // HAVE_MUELU_STRATIMIKOS 266 #endif // MUELU_STRATIMIKOSSMOOTHER_DECL_HPP
MueLu::DefaultLocalOrdinal LocalOrdinal
Namespace for MueLu classes and methods.
LocalOrdinal local_ordinal_type
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
GlobalOrdinal global_ordinal_type