46 #ifndef MUELU_SMOOTHERBASECLONER_HPP 47 #define MUELU_SMOOTHERBASECLONER_HPP 49 #include <Xpetra_MultiVector_fwd.hpp> 55 #if defined(HAVE_MUELU_IFPACK2) 56 #include "MueLu_Ifpack2Smoother.hpp" 58 #include "MueLu_TrilinosSmoother.hpp" 62 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node1,
class Node2>
65 const Teuchos::RCP<
const Xpetra::Matrix<Scalar,LocalOrdinal,GlobalOrdinal,Node2> >& cloneA,
68 #if defined(HAVE_MUELU_IFPACK2) 72 if (trilSmoother != Teuchos::null){
73 cloneSB = trilSmoother->clone (node2, cloneA);
79 if (ifSmoother != Teuchos::null){
80 cloneSB = ifSmoother->clone(node2, cloneA);
86 true, std::invalid_argument,
"MueLu::SmootherClone: " 87 "Invalid smoother type to clone (not TrilinosSmoother or Ifpack2 ) \"");
91 true, std::invalid_argument,
"MueLu::SmootherClone: " 92 "clone() only available with IFPACK2 enabled.");
98 #define MUELU_SMOOTHERBASECLONER_SHORT 99 #endif //ifndef MUELU_SMOOTHERBASECLONER_HPP
Class that encapsulates external library smoothers.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Namespace for MueLu classes and methods.
Base class for smoothers.
Teuchos::RCP< SmootherBase< Scalar, LocalOrdinal, GlobalOrdinal, Node2 > > clone(const Teuchos::RCP< SmootherBase< Scalar, LocalOrdinal, GlobalOrdinal, Node1 > > &SB, const Teuchos::RCP< const Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node2 > > &cloneA, const RCP< Node2 > &node2)
Class that encapsulates Ifpack2 smoothers.