ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
particle_packing.cpp File Reference

Reusable particle packing/unpacking for ghost communications. More...

#include "particle_packing.hpp"
#include "BoxGeometry.hpp"
#include "Particle.hpp"
#include "ghosts.hpp"
#include <utils/serialization/memcpy_archive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/iostreams/device/array.hpp>
#include <boost/iostreams/device/back_inserter.hpp>
#include <boost/iostreams/stream.hpp>
#include <boost/serialization/vector.hpp>
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <iterator>
#include <limits>
#include <numeric>
#include <span>
#include <vector>
+ Include dependency graph for particle_packing.cpp:

Go to the source code of this file.

Classes

class  GhostComm::SerializationSizeCalculator
 Pseudo-archive to calculate the size of the serialization buffer. More...
 

Namespaces

namespace  GhostComm
 

Enumerations

enum class  GhostComm::ReductionPolicy { GhostComm::MOVE , GhostComm::UPDATE }
 Type of reduction to carry out during serialization. More...
 
enum class  GhostComm::SerializationDirection { GhostComm::SAVE , GhostComm::LOAD }
 Whether to save the state to or load the state from the archive. More...
 

Functions

template<class Archive >
static void GhostComm::serialize_and_reduce (Archive &ar, Particle &p, unsigned int data_parts, ReductionPolicy policy, SerializationDirection direction, BoxGeometry const &box_geo, Utils::Vector3d const *ghost_shift)
 Serialize particle data, possibly with reduction.
 
static void GhostComm::prepare_ghost_cell (ParticleList *cell, std::size_t size)
 
std::size_t GhostComm::calc_transmit_size (BoxGeometry const &box_geo, unsigned data_parts)
 Calculate the per-particle transmit size for the given data parts.
 
std::size_t GhostComm::calc_transmit_size (std::span< ParticleList *const > cells, BoxGeometry const &box_geo, unsigned data_parts)
 Calculate the total transmit size for a list of cells and data parts.
 
void GhostComm::pack_cells (CommBuf &buf, std::span< ParticleList *const > cells, Utils::Vector3d const &shift, BoxGeometry const &box_geo, unsigned data_parts)
 Pack particle data from cells into a communication buffer.
 
void GhostComm::unpack_cells (CommBuf &buf, std::span< ParticleList *const > cells, BoxGeometry const &box_geo, unsigned data_parts)
 Unpack particle data from a communication buffer into cells.
 
void GhostComm::add_forces (CommBuf &buf, std::span< ParticleList *const > cells, unsigned data_parts)
 Add forces (and optionally torques) from a communication buffer to particles in cells.
 
void GhostComm::add_rattle (CommBuf &buf, std::span< ParticleList *const > cells)
 Add rattle corrections from a communication buffer to particles.
 
void GhostComm::add_dip_fld (CommBuf &buf, std::span< ParticleList *const > cells)
 Add dipole fields from a communication buffer to particles.
 
void GhostComm::local_cell_copy (ParticleList &src, ParticleList &dst, Utils::Vector3d const &shift, BoxGeometry const &box_geo, unsigned data_parts)
 Copy particle data from src to dst applying a ghost shift.
 

Detailed Description

Reusable particle packing/unpacking for ghost communications.

Definition in file particle_packing.cpp.