1#ifndef AMREX_PARTICLEBUFFERMAP_H_
2#define AMREX_PARTICLEBUFFERMAP_H_
3#include <AMReX_Config.H>
31 int operator() (
const int lev,
const int gid,
const int tid)
const noexcept
44 const int* lev_offsets_ptr,
45 const int* gid_offsets_ptr)
52 int operator() (
const int lev,
const int gid,
const int tid)
const noexcept
60 bool m_defined{
false};
76 bool m_do_tiling{
false};
103 return static_cast<int>(m_lev_offsets.
size()-1);
110 return static_cast<int>(m_bucket_to_gid.
size());
117 return m_bucket_to_gid[bid];
124 return m_bucket_to_tid[bid];
131 return m_bucket_to_lev[bid];
138 return m_bucket_to_pid[bid];
152 return m_lev_gid_tid_to_bucket[m_gid_offsets[m_lev_offsets[lev] + gid] + tid];
159 return m_proc_box_offsets[pid];
166 return m_proc_box_counts[pid];
185 return procID(gid, 0, lev);
189 int procID (
int gid,
int tid,
int lev)
const
195 [[nodiscard]]
GetPID getPIDFunctor () const noexcept {
return GetPID(d_bucket_to_pid, d_lev_gid_tid_to_bucket, d_lev_offsets, d_gid_offsets);}
#define AMREX_ASSERT(EX)
Definition AMReX_BLassert.H:38
#define AMREX_FORCE_INLINE
Definition AMReX_Extension.H:119
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
#define AMREX_D_DECL(a, b, c)
Definition AMReX_SPACE.H:171
Dynamically allocated vector for trivially copyable data.
Definition AMReX_PODVector.H:308
T * data() noexcept
Definition AMReX_PODVector.H:666
Definition AMReX_ParGDB.H:13
Definition AMReX_ParticleBufferMap.H:59
bool isValid(const ParGDBBase *a_gdb) const
Definition AMReX_ParticleBufferMap.cpp:154
int bucketToProc(int bid) const
Definition AMReX_ParticleBufferMap.H:135
int procID(int gid, int tid, int lev) const
Definition AMReX_ParticleBufferMap.H:189
GetPID getPIDFunctor() const noexcept
Definition AMReX_ParticleBufferMap.H:195
int firstBucketOnProc(int pid) const
Definition AMReX_ParticleBufferMap.H:156
void define(const ParGDBBase *a_gdb)
Definition AMReX_ParticleBufferMap.cpp:17
int bucketToLevel(int bid) const
Definition AMReX_ParticleBufferMap.H:128
int bucketToGrid(int bid) const
Definition AMReX_ParticleBufferMap.H:114
Vector< int > allBucketsOnProc(int pid) const
Definition AMReX_ParticleBufferMap.H:170
int numBuckets() const
Definition AMReX_ParticleBufferMap.H:107
int bucketToTile(int bid) const
Definition AMReX_ParticleBufferMap.H:121
int numBoxesOnProc(int pid) const
Definition AMReX_ParticleBufferMap.H:163
int procID(int gid, int lev) const
Definition AMReX_ParticleBufferMap.H:182
int numLevels() const
Definition AMReX_ParticleBufferMap.H:100
GetBucket getBucketFunctor() const noexcept
Definition AMReX_ParticleBufferMap.H:196
int gridAndTileAndLevToBucket(int gid, int tid, int lev) const
Definition AMReX_ParticleBufferMap.H:149
ParticleBufferMap()=default
GetBucket getHostBucketFunctor() const noexcept
Definition AMReX_ParticleBufferMap.H:197
int gridAndLevToBucket(int gid, int lev) const
Definition AMReX_ParticleBufferMap.H:142
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
Long size() const noexcept
Definition AMReX_Vector.H:53
Definition AMReX_Amr.cpp:49
Definition AMReX_ParticleBufferMap.H:38
GetBucket(const int *lev_gid_tid_to_bucket_ptr, const int *lev_offsets_ptr, const int *gid_offsets_ptr)
Definition AMReX_ParticleBufferMap.H:43
const int * m_lev_offsets
Definition AMReX_ParticleBufferMap.H:40
__host__ __device__ int operator()(const int lev, const int gid, const int tid) const noexcept
Definition AMReX_ParticleBufferMap.H:52
const int * m_gid_offsets
Definition AMReX_ParticleBufferMap.H:41
const int * m_lev_gid_tid_to_bucket
Definition AMReX_ParticleBufferMap.H:39
Definition AMReX_ParticleBufferMap.H:14
const int * m_bucket_to_pid
Definition AMReX_ParticleBufferMap.H:15
__host__ __device__ int operator()(const int lev, const int gid, const int tid) const noexcept
Definition AMReX_ParticleBufferMap.H:31
const int * m_lev_gid_tid_to_bucket
Definition AMReX_ParticleBufferMap.H:16
const int * m_lev_offsets
Definition AMReX_ParticleBufferMap.H:17
const int * m_gid_offsets
Definition AMReX_ParticleBufferMap.H:18
GetPID(const Gpu::DeviceVector< int > &bucket_to_pid, const Gpu::DeviceVector< int > &lev_gid_tid_to_bucket, const Gpu::DeviceVector< int > &lev_offsets, const Gpu::DeviceVector< int > &gid_offsets)
Definition AMReX_ParticleBufferMap.H:20