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
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.