46 #ifndef MUELU_STRATIMIKOSSMOOTHER_DECL_HPP
47 #define MUELU_STRATIMIKOSSMOOTHER_DECL_HPP
57 #if defined(HAVE_MUELU_STRATIMIKOS) && defined(HAVE_MUELU_THYRA)
59 #include <Tpetra_CrsMatrix.hpp>
63 #include "MueLu_SmootherPrototype.hpp"
66 #include <Thyra_LinearOpWithSolveBase.hpp>
80 template <class Scalar = SmootherPrototype<>::scalar_type,
81 class LocalOrdinal =
typename SmootherPrototype<Scalar>::local_ordinal_type,
82 class GlobalOrdinal =
typename SmootherPrototype<Scalar, LocalOrdinal>::global_ordinal_type,
83 class Node =
typename SmootherPrototype<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
84 class StratimikosSmoother :
public SmootherPrototype<Scalar, LocalOrdinal, GlobalOrdinal, Node> {
85 #undef MUELU_STRATIMIKOSSMOOTHER_SHORT
103 template <
class Scalar2,
class LocalOrdinal2,
class GlobalOrdinal2,
class Node2>
104 friend class StratimikosSmoother;
111 virtual ~StratimikosSmoother() =
default;
120 void DeclareInput(Level& currentLevel)
const {};
132 void Setup(Level& currentLevel){};
142 void Apply(MultiVector& X,
const MultiVector& B,
bool InitialGuessIsZero =
false)
const {};
149 RCP<SmootherPrototype>
Copy()
const {
return Teuchos::null; };
157 std::string description()
const {
return std::string(
""); };
174 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
175 struct StratimikosSmoother<double,
LocalOrdinal,
GlobalOrdinal,
Node> :
public SmootherPrototype<double, LocalOrdinal, GlobalOrdinal, Node> {
177 #undef MUELU_STRATIMIKOSSMOOTHER_SHORT
183 virtual ~StratimikosSmoother() =
default;
192 void DeclareInput(Level& currentLevel)
const;
204 void Setup(Level& currentLevel);
214 void Apply(MultiVector& X,
const MultiVector& B,
bool InitialGuessIsZero =
false)
const;
221 RCP<SmootherPrototype>
Copy()
const;
229 std::string description()
const;
242 size_t getNodeSmootherComplexity()
const;
245 void SetupStratimikos(Level& currentLevel);
252 void ExperimentalDropVertConnections(RCP<Matrix>& filteredA, Level& currentLevel);
263 bool recurMgOnFilteredA_ =
false;
268 #define MUELU_STRATIMIKOSSMOOTHER_SHORT
269 #endif // HAVE_MUELU_STRATIMIKOS
270 #endif // MUELU_STRATIMIKOSSMOOTHER_DECL_HPP
MueLu::DefaultLocalOrdinal LocalOrdinal
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal