31#include "ParticleList.hpp"
36#include <boost/mpi/communicator.hpp>
92 std::optional<std::pair<int, int>> fully_connected);
109 return position_to_cell(p.
pos());
113 return position_to_cell(p.
pos());
116 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(
static_cast<std::size_t
>(index)));
160 auto const index = position_to_cell_index(pos);
161 return (index < 0) ? nullptr : &(
cells.at(
static_cast<std::size_t
>(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.
A distributed particle decomposition.
Ghost particles and particle exchange.
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.
std::optional< std::pair< int, int > > m_fully_connected_boundary
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
auto fully_connected_boundary() const
void resort(bool global, std::vector< ParticleChange > &diff) override
std::vector< Cell > cells
Utils::Vector3d cell_size
Cell size.
GhostCommunicator const & collect_ghost_force_comm() const override
std::span< Cell *const > local_cells() 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
std::span< Cell *const > ghost_cells() 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::Vector3i cell_offset
Offset in global grid.
std::optional< BoxGeometry > minimum_image_distance() const override
boost::mpi::communicator m_comm