46 #ifndef MUELU_LWGRAPH_KOKKOS_DECL_HPP
47 #define MUELU_LWGRAPH_KOKKOS_DECL_HPP
50 #ifdef HAVE_MUELU_KOKKOS_REFACTOR
52 #include <Kokkos_StaticCrsGraph.hpp>
53 #include <KokkosCompat_ClassicNodeAPI_Wrapper.hpp>
56 #include <Xpetra_Map.hpp>
71 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
75 template<
class LocalOrdinal,
class GlobalOrdinal,
class DeviceType>
80 using execution_space =
typename DeviceType::execution_space;
81 using memory_space =
typename DeviceType::memory_space;
83 using node_type = Kokkos::Compat::KokkosDeviceWrapperNode<DeviceType>;
84 using size_type = size_t;
95 typedef node_type
Node;
96 #undef MUELU_LWGRAPH_KOKKOS_SHORT
110 LWGraph_kokkos(
const local_graph_type& graph,
111 const RCP<const map_type>& domainMap,
112 const RCP<const map_type>& importMap,
113 const std::string& objectLabel =
"");
115 ~LWGraph_kokkos() { }
118 const RCP<const Teuchos::Comm<int> > GetComm()
const {
119 return domainMap_->getComm();
121 const RCP<const Map> GetDomainMap()
const {
125 const RCP<const Map> GetImportMap()
const {
130 KOKKOS_INLINE_FUNCTION size_type GetNodeNumVertices()
const {
131 return graph_.numRows();
134 KOKKOS_INLINE_FUNCTION size_type GetNodeNumEdges()
const {
135 return graph_.row_map(GetNodeNumVertices());
139 KOKKOS_INLINE_FUNCTION size_type getNodeMaxNumRowEntries ()
const {
140 return maxNumRowEntries_;
144 KOKKOS_INLINE_FUNCTION
typename local_graph_type::row_map_type getRowPtrs()
const {
145 return graph_.row_map;
149 KOKKOS_INLINE_FUNCTION
typename local_graph_type::entries_type getEntries()
const {
150 return graph_.entries;
157 KOKKOS_INLINE_FUNCTION
159 auto rowView = graph_.rowConst(i);
165 KOKKOS_INLINE_FUNCTION
bool isLocalNeighborVertex(
LO i)
const {
166 return i >= minLocalIndex_ && i <= maxLocalIndex_;
170 KOKKOS_INLINE_FUNCTION
void SetBoundaryNodeMap(
const boundary_nodes_type bndry) {
171 dirichletBoundaries_ = bndry;
175 KOKKOS_INLINE_FUNCTION
const boundary_nodes_type GetBoundaryNodeMap()
const {
176 return dirichletBoundaries_;
180 std::string description()
const {
181 return "LWGraph (" + objectLabel_ +
")";
190 const local_graph_type graph_;
193 const RCP<const map_type> domainMap_;
194 const RCP<const map_type> importMap_;
197 boundary_nodes_type dirichletBoundaries_;
200 LO minLocalIndex_, maxLocalIndex_;
201 size_type maxNumRowEntries_;
204 const std::string& objectLabel_;
209 #define MUELU_LWGRAPH_KOKKOS_SHORT
210 #endif // HAVE_MUELU_KOKKOS_REFACTOR
211 #endif // MUELU_LWGRAPH_KOKKOS_DECL_HPP
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultGlobalOrdinal GlobalOrdinal