46 #ifndef MUELU_INDEXMANAGER_KOKKOS_DECL_HPP 47 #define MUELU_INDEXMANAGER_KOKKOS_DECL_HPP 52 #include <KokkosCompat_ClassicNodeAPI_Wrapper.hpp> 54 #include "Teuchos_OrdinalTraits.hpp" 56 #include <Xpetra_Map_fwd.hpp> 57 #include <Xpetra_Vector_fwd.hpp> 58 #include <Xpetra_VectorFactory_fwd.hpp> 80 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
82 #undef MUELU_INDEXMANAGER_KOKKOS_SHORT 88 using device_type = Kokkos::Device<execution_space, memory_space>;
90 using LOTupleView =
typename Kokkos::View<LO[3], device_type>;
116 const int interpolationOrder,
118 const ArrayView<const LO> LFineNodesPerDir,
119 const ArrayView<const int> CoarseRate);
124 void setupIM(
const int NumDimensions,
125 const int interpolationOrder,
127 const ArrayView<const LO> LFineNodesPerDir);
141 KOKKOS_INLINE_FUNCTION
144 KOKKOS_INLINE_FUNCTION
147 KOKKOS_INLINE_FUNCTION
150 KOKKOS_INLINE_FUNCTION
155 KOKKOS_INLINE_FUNCTION
164 KOKKOS_INLINE_FUNCTION
169 KOKKOS_INLINE_FUNCTION
178 KOKKOS_INLINE_FUNCTION
187 #define MUELU_INDEXMANAGER_KOKKOS_SHORT 188 #endif // MUELU_INDEXMANAGER_KOKKOS_DECL_HPP LO lNumFineNodes10
local number of nodes per 0-1 slice.
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()
int getInterpolationOrder() const
LOTupleView lFineNodesPerDir
local number of nodes per direction.
KOKKOS_INLINE_FUNCTION LOTupleView getCoarseNodesPerDir() const
typename Node::memory_space memory_space
typename Node::execution_space execution_space
Namespace for MueLu classes and methods.
Array< LO > getCoarseNodesPerDirArray() const
KOKKOS_INLINE_FUNCTION void getCoarseLID2CoarseTuple(const LO myLID, LO(&tuple)[3]) const
KOKKOS_INLINE_FUNCTION intTupleView getCoarseningRates() const
LO getNumCoarseNodes() const
Kokkos::Device< execution_space, memory_space > device_type
KOKKOS_INLINE_FUNCTION void getFineLID2FineTuple(const LO myLID, LO(&tuple)[3]) const
void computeMeshParameters()
LO numCoarseNodes10
local number of nodes per 0-1 slice remaining after coarsening.
LO numCoarseNodes
local number of nodes remaining after coarsening.
LO getNumLocalFineNodes() const
LO lNumFineNodes
local number of nodes.
Base class for MueLu classes.
KOKKOS_INLINE_FUNCTION intTupleView getCoarseningEndRates() const
int numDimensions
Number of spacial dimensions in the problem.
intTupleView coarseRate
coarsening rate in each direction
KOKKOS_INLINE_FUNCTION void getFineTuple2FineLID(const LO tuple[3], LO &myLID) const
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 void getCoarseTuple2CoarseLID(const LO i, const LO j, const LO k, LO &myLID) const
KOKKOS_INLINE_FUNCTION LOTupleView getLocalFineNodesPerDir() const
int getNumDimensions() const
IndexManager_kokkos()=default
Default constructor, return empty object.
intTupleView endRate
adapted coarsening rate at the edge of the mesh in each direction.