31#include "ParticleList.hpp"
36#include <boost/mpi/communicator.hpp>
99 std::optional<std::pair<int, int>> fully_connected);
111 return position_to_cell(p.
pos());
115 return position_to_cell(p.
pos());
118 void resort(
bool global, std::vector<ParticleChange> &diff)
override;
136 int calc_processor_min_num_cells()
const;
145 auto const index = position_to_cell_index(pos);
146 return (index < 0) ? nullptr : &(
cells.at(
static_cast<std::size_t
>(index)));
149 auto const index = position_to_cell_index(pos);
150 return (index < 0) ? nullptr : &(
cells.at(
static_cast<std::size_t
>(index)));
165 std::vector<ParticleChange> &modified_cells);
190 std::vector<ParticleChange> &modified_cells);
207 void create_cell_grid(
double range);
214 void init_cell_interactions();
229 static constexpr int max_num_cells = 32768;
Vector implementation and trait types for boost qvm interoperability.
A distributed particle decomposition.
Struct holding all information for one particle.
constexpr auto const & pos() const
Regular decomposition cell system.
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.
std::span< Cell *const > local_cells() const override
GhostComm::HaloPlan m_halo_plan
Topology-agnostic direct-neighbor halo plan (see make_halo_plan).
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
GhostComm::HaloPlan const * halo_plan() const override
std::span< Cell *const > ghost_cells() const override
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