10#ifndef MUELU_INDEXMANAGER_KOKKOS_DECL_HPP
11#define MUELU_INDEXMANAGER_KOKKOS_DECL_HPP
16#include <Tpetra_KokkosCompat_ClassicNodeAPI_Wrapper.hpp>
18#include "Teuchos_OrdinalTraits.hpp"
40template <
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,
76 const ArrayView<const LO> LFineNodesPerDir,
77 const ArrayView<const int> CoarseRate);
82 void setupIM(
const int NumDimensions,
83 const int interpolationOrder,
85 const ArrayView<const LO> LFineNodesPerDir);
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
Base class for MueLu classes.
Container class for mesh layout and indices calculation.
LO numCoarseNodes10
local number of nodes per 0-1 slice remaining after coarsening.
void computeMeshParameters()
virtual ~IndexManager_kokkos()
LO getNumCoarseNodes() const
LOTupleView coarseNodesPerDir
local number of nodes per direction remaing after coarsening.
LO getNumLocalFineNodes() const
KOKKOS_INLINE_FUNCTION LOTupleView getCoarseNodesPerDir() const
intTupleView endRate
adapted coarsening rate at the edge of the mesh in each direction.
LO lNumFineNodes
local number of nodes.
LO lNumFineNodes10
local number of nodes per 0-1 slice.
typename Kokkos::View< LO[3], device_type > LOTupleView
Kokkos::Device< execution_space, memory_space > device_type
KOKKOS_INLINE_FUNCTION void getCoarseLID2CoarseTuple(const LO myLID, LO(&tuple)[3]) const
KOKKOS_INLINE_FUNCTION void getCoarseTuple2CoarseLID(const LO i, const LO j, const LO k, LO &myLID) const
KOKKOS_INLINE_FUNCTION LOTupleView getLocalFineNodesPerDir() const
typename Node::execution_space execution_space
KOKKOS_INLINE_FUNCTION void getFineLID2FineTuple(const LO myLID, LO(&tuple)[3]) const
LOTupleView lFineNodesPerDir
local number of nodes per direction.
typename Node::memory_space memory_space
int getNumDimensions() const
LO numCoarseNodes
local number of nodes remaining after coarsening.
KOKKOS_INLINE_FUNCTION intTupleView getCoarseningRates() const
Array< LO > getCoarseNodesPerDirArray() const
int getInterpolationOrder() const
IndexManager_kokkos()=default
Default constructor, return empty object.
intTupleView coarseRate
coarsening rate in each direction
KOKKOS_INLINE_FUNCTION intTupleView getCoarseningEndRates() const
int numDimensions
Number of spacial dimensions in the problem.
KOKKOS_INLINE_FUNCTION void getFineTuple2FineLID(const LO tuple[3], LO &myLID) 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< int[3], device_type > intTupleView
Namespace for MueLu classes and methods.