1 #ifndef MUELU_CREATE_TPETRA_PRECONDITIONER_HPP
2 #define MUELU_CREATE_TPETRA_PRECONDITIONER_HPP
8 #include <Tpetra_Operator.hpp>
9 #include <Tpetra_RowMatrix.hpp>
11 #include <Tpetra_Experimental_BlockCrsMatrix.hpp>
19 #include <MueLu_Hierarchy.hpp>
21 #include <MueLu_MLParameterListInterpreter.hpp>
22 #include <MueLu_ParameterListInterpreter.hpp>
23 #include <MueLu_TpetraOperator.hpp>
25 #include <MueLu_Utilities.hpp>
26 #include <MueLu_HierarchyUtils.hpp>
29 #if defined(HAVE_MUELU_AMGX)
32 #include "cuda_runtime.h"
46 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
53 typedef LocalOrdinal
LO;
54 typedef GlobalOrdinal
GO;
65 #if defined(HAVE_MUELU_AMGX)
66 std::string externalMG =
"use external multigrid package";
67 if (inParamList.
isParameter(externalMG) && inParamList.
get<std::string>(externalMG) ==
"amgx"){
78 if (crsA != Teuchos::null)
79 A = TpetraCrs_To_XpetraMatrix<SC,LO,GO,NO>(crsA);
80 else if (bcrsA != Teuchos::null) {
110 RCP<Hierarchy> H = MueLu::CreateXpetraPreconditioner<SC,LO,GO,NO>(A,inParamList,inParamList);
124 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
132 typedef LocalOrdinal
LO;
133 typedef GlobalOrdinal
GO;
143 if (inCoords != Teuchos::null) {
146 if (inNullspace != Teuchos::null) {
150 return CreateTpetraPreconditioner<SC,LO,GO,NO>(inA,inParamList,inParamList);
166 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
175 return CreateTpetraPreconditioner<Scalar, LocalOrdinal, GlobalOrdinal, Node>(opMat, inParamList, inCoords, inNullspace);
190 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
199 return CreateTpetraPreconditioner<Scalar, LocalOrdinal, GlobalOrdinal, Node>(opMat, paramList, inCoords, inNullspace);
215 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
219 const std::string& xmlFileName,
227 return CreateTpetraPreconditioner<Scalar, LocalOrdinal, GlobalOrdinal, Node>(opMat, paramList, inCoords, inNullspace);
241 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
248 return CreateTpetraPreconditioner<Scalar, LocalOrdinal, GlobalOrdinal, Node>(inA, paramList, inCoords, inNullspace);
263 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
266 const std::string& xmlFileName,
272 return CreateTpetraPreconditioner<Scalar, LocalOrdinal, GlobalOrdinal, Node>(inA, paramList, inCoords, inNullspace);
283 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
287 typedef LocalOrdinal
LO;
288 typedef GlobalOrdinal
GO;
292 typedef MueLu ::Hierarchy<SC,LO,GO,NO>
Hierarchy;
295 RCP<Matrix> A = TpetraCrs_To_XpetraMatrix<SC,LO,GO,NO>(inA);
297 MueLu::ReuseXpetraPreconditioner<SC,LO,GO,NO>(A, H);
302 #endif //ifndef MUELU_CREATE_TPETRA_PRECONDITIONER_HPP