46 #ifndef MUELU_STRATIMIKOSSMOOTHER_DECL_HPP
47 #define MUELU_STRATIMIKOSSMOOTHER_DECL_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,
84 class LocalOrdinal =
typename SmootherPrototype<Scalar>::local_ordinal_type,
85 class GlobalOrdinal =
typename SmootherPrototype<Scalar, LocalOrdinal>::global_ordinal_type,
86 class Node =
typename SmootherPrototype<Scalar, LocalOrdinal, GlobalOrdinal>::node_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;
116 virtual ~StratimikosSmoother() =
default;
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(
""); };
180 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
183 #undef MUELU_STRATIMIKOSSMOOTHER_SHORT
189 virtual ~StratimikosSmoother() =
default;
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;
248 size_t getNodeSmootherComplexity()
const;
251 void SetupStratimikos (Level& currentLevel);
264 #define MUELU_STRATIMIKOSSMOOTHER_SHORT
265 #endif // HAVE_MUELU_STRATIMIKOS
266 #endif // MUELU_STRATIMIKOSSMOOTHER_DECL_HPP
MueLu::DefaultLocalOrdinal LocalOrdinal
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal