46#ifdef ESPRESSO_SHARED_MEMORY_PARALLELISM
50 std::vector<std::size_t>
cell_offsets(local_cells.size(), std::size_t{0});
51 std::exclusive_scan(local_cells.begin(), local_cells.end(),
53 [](
auto acc,
auto const &cell) {
54 return acc + cell->particles().size();
58 "enumerate_local_particles", local_cells.size(), [&](
auto cell_idx) {
59 auto const base_offset = cell_offsets[cell_idx];
60 auto &cell_particles = local_cells[cell_idx]->particles();
61 auto const n_part = cell_particles.size();
71 std::size_t index = 0;
72 for (
auto &p : cs.local_particles()) {
virtual std::span< Cell *const > local_cells() const =0
Get pointer to local cells.
void enumerate_local_particles(CellStructure const &cs, Kernel &&kernel)
Run a kernel on all local particles with enumeration.