Block-Structured AMR Software Framework
amrex::ParticleCopyPlan Struct Reference

#include <AMReX_ParticleCommunication.H>

Public Member Functions

Long superParticleSize () const
 
template<class PC , std::enable_if_t< IsParticleContainer< PC >::value, int > foo = 0>
void build (const PC &pc, const ParticleCopyOp &op, const Vector< int > &int_comp_mask, const Vector< int > &real_comp_mask, bool local)
 
void clear ()
 
void buildMPIFinish (const ParticleBufferMap &map)
 

Public Attributes

Vector< std::map< int, Gpu::DeviceVector< int > > > m_dst_indices
 
Gpu::DeviceVector< unsigned intm_box_counts_d
 
Gpu::HostVector< unsigned intm_box_counts_h
 
Gpu::DeviceVector< unsigned intm_box_offsets
 
Vector< intm_rcv_box_counts
 
Vector< intm_rcv_box_offsets
 
Vector< intm_rcv_box_ids
 
Vector< intm_rcv_box_pids
 
Vector< intm_rcv_box_levs
 
Long m_NumSnds = 0
 
int m_nrcvs = 0
 
Vector< MPI_Statusm_build_stats
 
Vector< MPI_Requestm_build_rreqs
 
Vector< MPI_Statusm_particle_stats
 
Vector< MPI_Requestm_particle_rreqs
 
Vector< Long > m_snd_num_particles
 
Vector< Long > m_rcv_num_particles
 
Vector< intm_neighbor_procs
 
Vector< Long > m_Snds
 
Vector< Long > m_Rcvs
 
Vector< intm_RcvProc
 
Vector< std::size_t > m_rOffset
 
Gpu::HostVector< intm_rcv_data
 
Vector< std::size_t > m_snd_offsets
 
Vector< std::size_t > m_snd_counts
 
Vector< std::size_t > m_snd_pad_correction_h
 
Gpu::DeviceVector< std::size_t > m_snd_pad_correction_d
 
Vector< std::size_t > m_rcv_pad_correction_h
 
Gpu::DeviceVector< std::size_t > m_rcv_pad_correction_d
 
Gpu::DeviceVector< intd_int_comp_mask
 
Gpu::DeviceVector< intd_real_comp_mask
 
Long m_superparticle_size
 

Private Member Functions

void buildMPIStart (const ParticleBufferMap &map, Long psize)
 
void doHandShake (const Vector< Long > &Snds, Vector< Long > &Rcvs) const
 
void doHandShakeLocal (const Vector< Long > &Snds, Vector< Long > &Rcvs) const
 

Static Private Member Functions

static void doHandShakeGlobal (const Vector< Long > &Snds, Vector< Long > &Rcvs)
 
static void doHandShakeAllToAll (const Vector< Long > &Snds, Vector< Long > &Rcvs)
 

Private Attributes

bool m_local
 

Member Function Documentation

◆ build()

template<class PC , std::enable_if_t< IsParticleContainer< PC >::value, int > foo = 0>
void amrex::ParticleCopyPlan::build ( const PC &  pc,
const ParticleCopyOp op,
const Vector< int > &  int_comp_mask,
const Vector< int > &  real_comp_mask,
bool  local 
)
inline

◆ buildMPIFinish()

void ParticleCopyPlan::buildMPIFinish ( const ParticleBufferMap map)

◆ buildMPIStart()

void ParticleCopyPlan::buildMPIStart ( const ParticleBufferMap map,
Long  psize 
)
private

◆ clear()

void ParticleCopyPlan::clear ( )

◆ doHandShake()

void ParticleCopyPlan::doHandShake ( const Vector< Long > &  Snds,
Vector< Long > &  Rcvs 
) const
private

◆ doHandShakeAllToAll()

void ParticleCopyPlan::doHandShakeAllToAll ( const Vector< Long > &  Snds,
Vector< Long > &  Rcvs 
)
staticprivate

◆ doHandShakeGlobal()

void ParticleCopyPlan::doHandShakeGlobal ( const Vector< Long > &  Snds,
Vector< Long > &  Rcvs 
)
staticprivate

◆ doHandShakeLocal()

void ParticleCopyPlan::doHandShakeLocal ( const Vector< Long > &  Snds,
Vector< Long > &  Rcvs 
) const
private

◆ superParticleSize()

Long amrex::ParticleCopyPlan::superParticleSize ( ) const
inline

Member Data Documentation

◆ d_int_comp_mask

Gpu::DeviceVector<int> amrex::ParticleCopyPlan::d_int_comp_mask

◆ d_real_comp_mask

Gpu::DeviceVector<int> amrex::ParticleCopyPlan::d_real_comp_mask

◆ m_box_counts_d

Gpu::DeviceVector<unsigned int> amrex::ParticleCopyPlan::m_box_counts_d

◆ m_box_counts_h

Gpu::HostVector<unsigned int> amrex::ParticleCopyPlan::m_box_counts_h

◆ m_box_offsets

Gpu::DeviceVector<unsigned int> amrex::ParticleCopyPlan::m_box_offsets

◆ m_build_rreqs

Vector<MPI_Request> amrex::ParticleCopyPlan::m_build_rreqs
mutable

◆ m_build_stats

Vector<MPI_Status> amrex::ParticleCopyPlan::m_build_stats
mutable

◆ m_dst_indices

Vector<std::map<int, Gpu::DeviceVector<int> > > amrex::ParticleCopyPlan::m_dst_indices

◆ m_local

bool amrex::ParticleCopyPlan::m_local
private

◆ m_neighbor_procs

Vector<int> amrex::ParticleCopyPlan::m_neighbor_procs

◆ m_nrcvs

int amrex::ParticleCopyPlan::m_nrcvs = 0

◆ m_NumSnds

Long amrex::ParticleCopyPlan::m_NumSnds = 0

◆ m_particle_rreqs

Vector<MPI_Request> amrex::ParticleCopyPlan::m_particle_rreqs
mutable

◆ m_particle_stats

Vector<MPI_Status> amrex::ParticleCopyPlan::m_particle_stats
mutable

◆ m_rcv_box_counts

Vector<int> amrex::ParticleCopyPlan::m_rcv_box_counts

◆ m_rcv_box_ids

Vector<int> amrex::ParticleCopyPlan::m_rcv_box_ids

◆ m_rcv_box_levs

Vector<int> amrex::ParticleCopyPlan::m_rcv_box_levs

◆ m_rcv_box_offsets

Vector<int> amrex::ParticleCopyPlan::m_rcv_box_offsets

◆ m_rcv_box_pids

Vector<int> amrex::ParticleCopyPlan::m_rcv_box_pids

◆ m_rcv_data

Gpu::HostVector<int> amrex::ParticleCopyPlan::m_rcv_data

◆ m_rcv_num_particles

Vector<Long> amrex::ParticleCopyPlan::m_rcv_num_particles

◆ m_rcv_pad_correction_d

Gpu::DeviceVector<std::size_t> amrex::ParticleCopyPlan::m_rcv_pad_correction_d

◆ m_rcv_pad_correction_h

Vector<std::size_t> amrex::ParticleCopyPlan::m_rcv_pad_correction_h

◆ m_RcvProc

Vector<int> amrex::ParticleCopyPlan::m_RcvProc

◆ m_Rcvs

Vector<Long> amrex::ParticleCopyPlan::m_Rcvs

◆ m_rOffset

Vector<std::size_t> amrex::ParticleCopyPlan::m_rOffset

◆ m_snd_counts

Vector<std::size_t> amrex::ParticleCopyPlan::m_snd_counts

◆ m_snd_num_particles

Vector<Long> amrex::ParticleCopyPlan::m_snd_num_particles

◆ m_snd_offsets

Vector<std::size_t> amrex::ParticleCopyPlan::m_snd_offsets

◆ m_snd_pad_correction_d

Gpu::DeviceVector<std::size_t> amrex::ParticleCopyPlan::m_snd_pad_correction_d

◆ m_snd_pad_correction_h

Vector<std::size_t> amrex::ParticleCopyPlan::m_snd_pad_correction_h

◆ m_Snds

Vector<Long> amrex::ParticleCopyPlan::m_Snds

◆ m_superparticle_size

Long amrex::ParticleCopyPlan::m_superparticle_size

The documentation for this struct was generated from the following files: