10 #ifndef MUELU_INDEXMANAGER_KOKKOS_DECL_HPP
11 #define MUELU_INDEXMANAGER_KOKKOS_DECL_HPP
16 #include <Tpetra_KokkosCompat_ClassicNodeAPI_Wrapper.hpp>
40 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
42 #undef MUELU_INDEXMANAGER_KOKKOS_SHORT
48 using device_type = Kokkos::Device<execution_space, memory_space>;
50 using LOTupleView =
typename Kokkos::View<LO[3], device_type>;
74 const int interpolationOrder,
82 void setupIM(
const int NumDimensions,
83 const int interpolationOrder,
99 KOKKOS_INLINE_FUNCTION
102 KOKKOS_INLINE_FUNCTION
105 KOKKOS_INLINE_FUNCTION
108 KOKKOS_INLINE_FUNCTION
113 KOKKOS_INLINE_FUNCTION
122 KOKKOS_INLINE_FUNCTION
127 KOKKOS_INLINE_FUNCTION
136 KOKKOS_INLINE_FUNCTION
144 #define MUELU_INDEXMANAGER_KOKKOS_SHORT
145 #endif // MUELU_INDEXMANAGER_KOKKOS_DECL_HPP
LO lNumFineNodes10
local number of nodes per 0-1 slice.
KOKKOS_INLINE_FUNCTION void getFineLID2FineTuple(const LO myLID, LO(&tuple)[3]) const
int interpolationOrder_
Interpolation order used by grid transfer operators using these aggregates.
void setupIM(const int NumDimensions, const int interpolationOrder, const ArrayView< const int > coarseRate, const ArrayView< const LO > LFineNodesPerDir)
Common setup pattern used for all the different types of undelying mesh.
typename Kokkos::View< LO[3], device_type > LOTupleView
virtual ~IndexManager_kokkos()
LOTupleView lFineNodesPerDir
local number of nodes per direction.
int getInterpolationOrder() const
typename Node::memory_space memory_space
KOKKOS_INLINE_FUNCTION intTupleView getCoarseningEndRates() const
typename Node::execution_space execution_space
KOKKOS_INLINE_FUNCTION intTupleView getCoarseningRates() const
LO getNumCoarseNodes() const
KOKKOS_INLINE_FUNCTION void getCoarseTuple2CoarseLID(const LO i, const LO j, const LO k, LO &myLID) const
KOKKOS_INLINE_FUNCTION void getCoarseLID2CoarseTuple(const LO myLID, LO(&tuple)[3]) const
int getNumDimensions() const
LO getNumLocalFineNodes() const
Kokkos::Device< execution_space, memory_space > device_type
void computeMeshParameters()
LO numCoarseNodes10
local number of nodes per 0-1 slice remaining after coarsening.
Array< LO > getCoarseNodesPerDirArray() const
LO numCoarseNodes
local number of nodes remaining after coarsening.
LO lNumFineNodes
local number of nodes.
Base class for MueLu classes.
KOKKOS_INLINE_FUNCTION void getFineTuple2FineLID(const LO tuple[3], LO &myLID) const
int numDimensions
Number of spacial dimensions in the problem.
intTupleView coarseRate
coarsening rate in each direction
LOTupleView coarseNodesPerDir
local number of nodes per direction remaing after coarsening.
Container class for mesh layout and indices calculation.
typename Kokkos::View< int[3], device_type > intTupleView
KOKKOS_INLINE_FUNCTION LOTupleView getCoarseNodesPerDir() const
KOKKOS_INLINE_FUNCTION LOTupleView getLocalFineNodesPerDir() const
IndexManager_kokkos()=default
Default constructor, return empty object.
intTupleView endRate
adapted coarsening rate at the edge of the mesh in each direction.