23#ifndef IPPL_PARTICLE_SPATIAL_LAYOUT_H
24#define IPPL_PARTICLE_SPATIAL_LAYOUT_H
44 template <
typename T,
unsigned Dim,
class Mesh = UniformCartesian<T, Dim>,
45 typename... PositionProperties>
73 template <
class ParticleContainer>
99 template <
size_t... Idx>
122 template <
typename ParticleContainer>
typename detail::ViewType< int, 1, MemorySpace >::view_type hash_type
std::array< rank_list, detail::countHypercubes(Dim) - 1 > neighbor_list
Vector< T, Dim > vector_type
typename particle_position_type::memory_space position_memory_space
typename particle_position_type::execution_space position_execution_space
mpi::rma::Window< mpi::rma::Active > window_m
size_t numberOfSends(int rank, const locate_type &ranks)
std::vector< size_type > nRecvs_m
void update(ParticleContainer &pc)
typename detail::ViewType< bool, 1, position_memory_space >::view_type bool_type
typename detail::RegionLayout< T, Dim, Mesh, position_memory_space >::uniform_type RegionLayout_t
KOKKOS_INLINE_FUNCTION static constexpr bool positionInRegion(const std::index_sequence< Idx... > &, const vector_type &pos, const region_type ®ion)
size_type getNeighborSize(const neighbor_list &neighbors) const
ParticleSpatialLayout(FieldLayout< Dim > &, Mesh &)
detail::size_type size_type
typename ippl::FieldLayout< Dim > FieldLayout_t
typename region_view_type::value_type region_type
Type of a single Region object.
void fillHash(int rank, const locate_type &ranks, hash_type &hash)
typename detail::ViewType< int, 1, position_memory_space >::view_type locate_type
detail::hash_type< position_memory_space > hash_type
typename RegionLayout_t::view_type region_view_type
Type of the Kokkos view containing the local regions.
void updateLayout(FieldLayout< Dim > &, Mesh &)
std::pair< size_type, size_type > locateParticles(const ParticleContainer &pc, locate_type &ranks, bool_type &invalid, locate_type &nSends_dview, locate_type &sends_dview) const
~ParticleSpatialLayout()=default
typename FieldLayout_t::neighbor_list neighbor_list
Array of N rank lists, where N = number of hypercubes for the dimension Dim.
detail::ParticleLayout< T, Dim, PositionProperties... > Base
const RegionLayout_t & getRegionLayout() const
typename Base::vector_type vector_type
FieldLayout_t & flayout_m
typename CreateUniformType< base_type, view_type >::type uniform_type
Kokkos::View< typename NPtr< T, Dim >::type, Properties... > view_type