29#include "ParticleList.hpp"
34#include <boost/mpi/collectives/reduce.hpp>
35#include <boost/mpi/communicator.hpp>
74 m_collect_ghost_force_comm =
96 std::vector<ParticleChange> &
diff) {
101 for (
auto it =
cell_rd->particles().begin();
104 if (
not is_n_square_type(
it->type())) {
110 auto p = std::move(*
it);
123 for (
auto it =
cell_ns->particles().begin();
126 if (is_n_square_type(
it->type())) {
132 auto p = std::move(*
it);
163std::size_t HybridDecomposition::count_particles(
164 std::vector<Cell *>
const &local_cells)
const {
unsigned map_data_parts(unsigned data_parts)
Map the data parts flags from cells to those used internally by the ghost communication.
Vector implementation and trait types for boost qvm interoperability.
Atom decomposition cell system.
GhostCommunicator const & collect_ghost_force_comm() const override
GhostCommunicator const & exchange_ghosts_comm() const override
auto const & get_local_cells() const
auto const & get_ghost_cells() const
void resort(bool global_flag, std::vector< ParticleChange > &diff) override
std::span< Cell *const > local_cells() const override
std::span< Cell *const > local_cells() const override
GhostCommunicator const & exchange_ghosts_comm() const override
Cell * particle_to_cell(Particle const &p) override
void resort(bool global, std::vector< ParticleChange > &diff) override
HybridDecomposition(boost::mpi::communicator comm, double cutoff_regular, double skin, std::function< bool()> get_ghost_flags, BoxGeometry const &box_geo, LocalBox const &local_box, std::set< int > n_square_types)
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
void ghost_communicator(GhostCommunicator const &gcr, BoxGeometry const &box_geo, unsigned int data_parts)
Do a ghost communication with the specified data parts.
@ GHOSTTRANS_PARTNUM
resize the receiver particle arrays to the size of the senders
std::vector< GhostCommunication > communications
List of ghost communications.
Regular decomposition cell system.
void resort(bool global, std::vector< ParticleChange > &diff) override
GhostCommunicator const & collect_ghost_force_comm() const override
std::span< Cell *const > local_cells() const override
auto const & get_local_cells() const
GhostCommunicator const & exchange_ghosts_comm() const override
auto const & get_ghost_cells() const