37#undef MUELU_MAXWELL_UTILS_SHORT
41 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType
magnitudeType;
47 RCP<Matrix>& D0_Matrix,
50 Kokkos::View<bool*, typename Node::device_type::memory_space>& BCrowsKokkos,
51 Kokkos::View<bool*, typename Node::device_type::memory_space>& BCcolsKokkos,
52 Kokkos::View<bool*, typename Node::device_type::memory_space>& BCdomainKokkos,
55 Teuchos::ArrayRCP<bool>& BCrows,
56 Teuchos::ArrayRCP<bool>& BCcols,
57 Teuchos::ArrayRCP<bool>& BCdomain,
58 bool& allEdgesBoundary,
59 bool& allNodesBoundary);
63 RCP<Matrix>& D0_Matrix,
65 Kokkos::View<bool*, typename Node::device_type::memory_space>& BCrowsKokkos,
66 Kokkos::View<bool*, typename Node::device_type::memory_space>& BCcolsKokkos,
67 Kokkos::View<bool*, typename Node::device_type::memory_space>& BCdomainKokkos,
70 bool& allEdgesBoundary,
71 bool& allNodesBoundary);
76 const bool keepDiagonal =
true,
77 const size_t expectedNNZperRow = 0);
80 RCP<Matrix>& D0_Matrix,
81 RCP<Matrix>& SM_Matrix,
82 RCP<Matrix>& M1_Matrix,
83 RCP<Matrix>& Ms_Matrix);
86 RCP<Matrix>& D0_Matrix,
87 RCP<Matrix>& SM_Matrix) {
96 static void setMatvecParams(Matrix& A, RCP<ParameterList> matvecParams);
99 static RCP<Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
100 PtAPWrapper(
const RCP<Matrix>& A,
const RCP<Matrix>& P, Teuchos::ParameterList& params,
const std::string& label);
static void detectBoundaryConditionsSM(RCP< Matrix > &SM_Matrix, RCP< Matrix > &D0_Matrix, magnitudeType rowSumTol, bool useKokkos_, Kokkos::View< bool *, typename Node::device_type::memory_space > &BCrowsKokkos, Kokkos::View< bool *, typename Node::device_type::memory_space > &BCcolsKokkos, Kokkos::View< bool *, typename Node::device_type::memory_space > &BCdomainKokkos, int &BCedges, int &BCnodes, Teuchos::ArrayRCP< bool > &BCrows, Teuchos::ArrayRCP< bool > &BCcols, Teuchos::ArrayRCP< bool > &BCdomain, bool &allEdgesBoundary, bool &allNodesBoundary)
Detect Dirichlet boundary conditions.
static RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > PtAPWrapper(const RCP< Matrix > &A, const RCP< Matrix > &P, Teuchos::ParameterList ¶ms, const std::string &label)
Performs an P^T AP.