31#include "ParticleList.hpp"
37#include <boost/mpi/communicator.hpp>
38#include <boost/optional.hpp>
111 return position_to_cell(p.
pos());
115 return position_to_cell(p.
pos());
118 void resort(
bool global, std::vector<ParticleChange> &diff)
override;
147 int calc_processor_min_num_cells()
const;
156 auto const index = position_to_cell_index(
pos);
157 return (index < 0) ? nullptr : &(
cells.at(index));
160 auto const index = position_to_cell_index(
pos);
161 return (index < 0) ? nullptr : &(
cells.at(index));
176 std::vector<ParticleChange> &modified_cells);
201 std::vector<ParticleChange> &modified_cells);
218 void create_cell_grid(
double range);
225 void init_cell_interactions();
238 static constexpr int max_num_cells = 32768;
Vector implementation and trait types for boost qvm interoperability.
__shared__ int pos[MAXDEPTH *THREADS5/WARPSIZE]
A distributed particle decomposition.
A stripped-down version of std::span from C++17.
Ghost particles and particle exchange.
DEVICE_QUALIFIER constexpr Span< T > make_span(T *p, std::size_t N)
Properties for a ghost communication.
Struct holding all information for one particle.
Regular decomposition cell system.
GhostCommunicator m_exchange_ghosts_comm
Utils::Vector3i ghost_cell_grid
linked cell grid with ghost frame.
Utils::Vector3d max_cutoff() const override
Utils::Vector3d inv_cell_size
inverse cell_size.
std::vector< Cell * > m_ghost_cells
BoxGeometry const & m_box
Cell * particle_to_cell(Particle const &p) override
void resort(bool global, std::vector< ParticleChange > &diff) override
Utils::Span< Cell *const > local_cells() const override
std::vector< Cell > cells
boost::optional< BoxGeometry > minimum_image_distance() const override
Utils::Vector3d cell_size
Cell size.
GhostCommunicator const & collect_ghost_force_comm() const override
std::vector< Cell * > m_local_cells
Cell const * particle_to_cell(Particle const &p) const override
BoxGeometry const & box() const override
auto const & get_local_cells() const
Utils::Vector3d max_range() const override
GhostCommunicator const & exchange_ghosts_comm() const override
GhostCommunicator m_collect_ghost_force_comm
Utils::Vector3i cell_grid
Grid dimensions per node.
auto const & get_ghost_cells() const
Utils::Span< Cell *const > ghost_cells() const override
Utils::Vector3i cell_offset
Offset in global grid.
boost::mpi::communicator m_comm