16#ifndef CABANA_GRID_INDEXCONVERSION_HPP
17#define CABANA_GRID_INDEXCONVERSION_HPP
22#include <Kokkos_Core.hpp>
30namespace IndexConversion
34template <
class MeshType,
class EntityType>
71 auto local_own_space =
83 auto global_own_space =
91 const auto& global_grid = local_grid.
globalGrid();
96 global_grid.globalNumEntity( EntityType(), d );
100 periodic[d] = global_grid.isPeriodic( d );
111 KOKKOS_INLINE_FUNCTION
139 template <std::
size_t NSD = num_space_dim>
140 KOKKOS_INLINE_FUNCTION std::enable_if_t<3 == NSD, void>
141 operator()(
const int li,
const int lj,
const int lk,
int& gi,
int& gj,
153 template <std::
size_t NSD = num_space_dim>
154 KOKKOS_INLINE_FUNCTION std::enable_if_t<2 == NSD, void>
155 operator()(
const int li,
const int lj,
int& gi,
int& gj )
const
168template <
class MeshType,
class EntityType>
L2G< MeshType, EntityType > createL2G(const LocalGrid< MeshType > &local_grid, EntityType)
Definition Cabana_Grid_IndexConversion.hpp:169
Local logical grid.
Definition Cabana_Grid_LocalGrid.hpp:39
IndexSpace< num_space_dim > indexSpace(DecompositionTag t1, EntityType t2, IndexType t3) const
Given a decomposition type, entity type, and index type, get the contiguous set of indices that span ...
const GlobalGrid< MeshType > & globalGrid() const
Get the global grid that owns the local grid.
Definition Cabana_Grid_LocalGrid_impl.hpp:33
Core: particle data structures and algorithms.
Definition Cabana_AoSoA.hpp:36
Global index tag.
Definition Cabana_Grid_Types.hpp:215
Local-to-global indexer.
Definition Cabana_Grid_IndexConversion.hpp:36
Kokkos::Array< bool, num_space_dim > boundary_lo
True if block is on low boundary.
Definition Cabana_Grid_IndexConversion.hpp:62
Kokkos::Array< int, num_space_dim > local_own_min
Owned local indices minimum.
Definition Cabana_Grid_IndexConversion.hpp:47
static constexpr std::size_t num_space_dim
Spatial dimension.
Definition Cabana_Grid_IndexConversion.hpp:41
L2G(const LocalGrid< MeshType > &local_grid)
Constructor.
Definition Cabana_Grid_IndexConversion.hpp:68
KOKKOS_INLINE_FUNCTION std::enable_if_t< 2==NSD, void > operator()(const int li, const int lj, int &gi, int &gj) const
Convert local indices to global indices - 3D.
Definition Cabana_Grid_IndexConversion.hpp:155
KOKKOS_INLINE_FUNCTION void operator()(const int lijk[num_space_dim], int gijk[num_space_dim]) const
Convert local indices to global indices - general form.
Definition Cabana_Grid_IndexConversion.hpp:112
EntityType entity_type
Entity type.
Definition Cabana_Grid_IndexConversion.hpp:44
Kokkos::Array< bool, num_space_dim > boundary_hi
True if block is on high boundary.
Definition Cabana_Grid_IndexConversion.hpp:65
MeshType mesh_type
Mesh type.
Definition Cabana_Grid_IndexConversion.hpp:38
Kokkos::Array< bool, num_space_dim > periodic
Periodicity.
Definition Cabana_Grid_IndexConversion.hpp:59
Kokkos::Array< int, num_space_dim > local_own_max
Owned local indices maximum.
Definition Cabana_Grid_IndexConversion.hpp:50
Kokkos::Array< int, num_space_dim > global_own_min
Owned global indices minimum.
Definition Cabana_Grid_IndexConversion.hpp:53
KOKKOS_INLINE_FUNCTION std::enable_if_t< 3==NSD, void > operator()(const int li, const int lj, const int lk, int &gi, int &gj, int &gk) const
Convert local indices to global indices - 3D.
Definition Cabana_Grid_IndexConversion.hpp:141
Kokkos::Array< int, num_space_dim > global_num_entity
Global number of entities.
Definition Cabana_Grid_IndexConversion.hpp:56
Local index tag.
Definition Cabana_Grid_Types.hpp:208
Owned decomposition tag.
Definition Cabana_Grid_Types.hpp:190