1 #ifndef AMREX_STRUCTOFARRAYS_H_
2 #define AMREX_STRUCTOFARRAYS_H_
3 #include <AMReX_Config.H>
13 template <
int NReal,
int NInt,
15 bool use64BitIdCpu=
false>
22 void define (
int a_num_runtime_real,
int a_num_runtime_int)
50 if constexpr (NReal == 0) {
69 if constexpr (NReal == 0) {
88 if constexpr (NInt == 0) {
108 if constexpr (NInt == 0) {
125 [[nodiscard]] std::size_t
size ()
const
127 if constexpr (use64BitIdCpu ==
true) {
129 }
else if constexpr (NReal > 0) {
131 }
else if constexpr (NInt > 0) {
148 [[nodiscard]]
bool empty ()
const {
return this->
size() == 0; }
178 resize(nrp + num_neighbors);
185 if constexpr (use64BitIdCpu ==
true) {
188 if constexpr (NReal > 0) {
189 for (
int i = 0; i < NReal; ++i) {
m_rdata[i].resize(count); }
191 if constexpr (NInt > 0) {
192 for (
int i = 0; i < NInt; ++i) {
m_idata[i].resize(count); }
199 if constexpr (use64BitIdCpu ==
true) {
209 for (
int i = 0; i < NReal; ++i)
219 for (
int i = 0; i < NInt; ++i)
#define AMREX_ASSERT(EX)
Definition: AMReX_BLassert.H:38
Definition: AMReX_PODVector.H:246
size_type size() const noexcept
Definition: AMReX_PODVector.H:575
void resize(size_type a_new_size)
Definition: AMReX_PODVector.H:625
T * dataPtr() noexcept
Definition: AMReX_PODVector.H:597
Definition: AMReX_Amr.cpp:49
amrex::ArenaAllocator< T > DefaultAllocator
Definition: AMReX_GpuAllocators.H:194
const int[]
Definition: AMReX_BLProfiler.cpp:1664
Definition: AMReX_Array.H:33
Definition: AMReX_StructOfArrays.H:16
std::array< IntVector, NInt > m_idata
Definition: AMReX_StructOfArrays.H:231
void setNumNeighbors(int num_neighbors)
Definition: AMReX_StructOfArrays.H:174
int getNumNeighbors() const
Definition: AMReX_StructOfArrays.H:181
IdCPU & GetIdCPUData()
Definition: AMReX_StructOfArrays.H:33
std::vector< IntVector > m_runtime_idata
Definition: AMReX_StructOfArrays.H:234
int numTotalParticles() const
Returns the total number of particles (real and neighbor)
Definition: AMReX_StructOfArrays.H:172
const IntVector & GetIntData(const int index) const
Definition: AMReX_StructOfArrays.H:106
std::vector< RealVector > m_runtime_rdata
Definition: AMReX_StructOfArrays.H:233
bool empty() const
Returns whether the SoA is empty (i.e. has size() == 0)
Definition: AMReX_StructOfArrays.H:148
std::array< IntVector, NInt > & GetIntData()
Definition: AMReX_StructOfArrays.H:35
bool m_defined
Definition: AMReX_StructOfArrays.H:236
const std::array< IntVector, NInt > & GetIntData() const
Definition: AMReX_StructOfArrays.H:42
std::array< RealVector, NReal > & GetRealData()
Definition: AMReX_StructOfArrays.H:34
void resize(size_t count)
Definition: AMReX_StructOfArrays.H:183
uint64_t * idcpuarray()
Definition: AMReX_StructOfArrays.H:198
GpuArray< ParticleReal *, NReal > realarray()
Definition: AMReX_StructOfArrays.H:206
IdCPU m_idcpu
Definition: AMReX_StructOfArrays.H:229
int NumRealComps() const noexcept
Definition: AMReX_StructOfArrays.H:29
int numParticles() const
Returns the number of real particles (excluding neighbors)
Definition: AMReX_StructOfArrays.H:154
const std::array< RealVector, NReal > & GetRealData() const
Definition: AMReX_StructOfArrays.H:40
int m_num_neighbor_particles
Definition: AMReX_StructOfArrays.H:226
GpuArray< int *, NInt > intarray()
Definition: AMReX_StructOfArrays.H:216
void define(int a_num_runtime_real, int a_num_runtime_int)
Definition: AMReX_StructOfArrays.H:22
const IdCPU & GetIdCPUData() const
Definition: AMReX_StructOfArrays.H:38
std::array< RealVector, NReal > m_rdata
Definition: AMReX_StructOfArrays.H:230
IntVector & GetIntData(const int index)
Definition: AMReX_StructOfArrays.H:86
RealVector & GetRealData(const int index)
Definition: AMReX_StructOfArrays.H:48
const RealVector & GetRealData(const int index) const
Definition: AMReX_StructOfArrays.H:67
int numRealParticles() const
Returns the number of real particles (excluding neighbors)
Definition: AMReX_StructOfArrays.H:160
std::size_t size() const
Returns the total number of particles (real and neighbor)
Definition: AMReX_StructOfArrays.H:125
int NumIntComps() const noexcept
Definition: AMReX_StructOfArrays.H:31
int numNeighborParticles() const
Returns the number of neighbor particles (excluding reals)
Definition: AMReX_StructOfArrays.H:166