Skip to content

Commit 1e7a703

Browse files
committed
WarpX PCs: Polymorphic
1 parent e1a0e54 commit 1e7a703

15 files changed

+45
-38
lines changed

Source/Diagnostics/BTDiagnostics.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1469,7 +1469,8 @@ BTDiagnostics::InitializeParticleBuffer (const MultiParticleContainer& mpc)
14691469
for (int isp = 0; isp < m_particles_buffer[i].size(); ++isp) {
14701470
m_totalParticles_in_buffer[i][isp] = 0;
14711471
const int idx = mpc.getSpeciesID(m_output_species_names[isp]);
1472-
m_particles_buffer[i][isp] = std::make_unique<PinnedMemoryParticleContainer>(mpc.GetParticleContainer(idx).make_alike<amrex::PinnedArenaAllocator>());
1472+
m_particles_buffer[i][isp] = std::make_unique<PinnedMemoryParticleContainer>(mpc.GetParticleContainer(idx).make_alike<amrex::PolymorphicArenaAllocator>());
1473+
m_particles_buffer[i][isp]->SetArena(amrex::The_Pinned_Arena());
14731474

14741475
// SoA component names
14751476
{

Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,9 @@ FlushFormatPlotfile::WriteParticles(const std::string& dir,
361361
WarpXParticleContainer* pc = part_diag.getParticleContainer();
362362
PinnedMemoryParticleContainer* pinned_pc = part_diag.getPinnedParticleContainer();
363363
auto tmp = isBTD ?
364-
pinned_pc->make_alike<amrex::PinnedArenaAllocator>() :
365-
pc->make_alike<amrex::PinnedArenaAllocator>();
364+
pinned_pc->make_alike<amrex::PolymorphicArenaAllocator>() :
365+
pc->make_alike<amrex::PolymorphicArenaAllocator>();
366+
tmp.SetArena(amrex::The_Pinned_Arena());
366367

367368
Vector<std::string> real_names;
368369
Vector<std::string> int_names;

Source/Diagnostics/ReducedDiags/FieldProbeParticleContainer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ FieldProbeParticleContainer::AddNParticles (int lev,
6060
* is then coppied to the permament tile which is stored on the particle
6161
* (particle_tile).
6262
*/
63-
using PinnedTile = typename ContainerLike<amrex::PinnedArenaAllocator>::ParticleTileType;
63+
using PinnedTile = typename ContainerLike<amrex::PolymorphicArenaAllocator>::ParticleTileType;
6464

6565
PinnedTile pinned_tile;
66-
pinned_tile.define(NumRuntimeRealComps(), NumRuntimeIntComps());
66+
pinned_tile.define(NumRuntimeRealComps(), NumRuntimeIntComps(), nullptr, nullptr, amrex::The_Pinned_Arena());
6767

6868
for (int i = 0; i < np; i++)
6969
{

Source/Diagnostics/WarpXOpenPMD.H

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
class WarpXParticleCounter
4141
{
4242
public:
43-
using ParticleContainer = typename WarpXParticleContainer::ContainerLike<amrex::PinnedArenaAllocator>;
44-
using ParticleIter = typename amrex::ParIterSoA<PIdx::nattribs, 0, amrex::PinnedArenaAllocator>;
43+
using ParticleContainer = typename WarpXParticleContainer::ContainerLike<amrex::PolymorphicArenaAllocator>;
44+
using ParticleIter = typename amrex::ParIterSoA<PIdx::nattribs, 0, amrex::PolymorphicArenaAllocator>;
4545

4646
WarpXParticleCounter (ParticleContainer* pc);
4747
[[nodiscard]] unsigned long GetTotalNumParticles () const {return m_Total;}
@@ -76,8 +76,8 @@ private:
7676
class WarpXOpenPMDPlot
7777
{
7878
public:
79-
using ParticleContainer = typename WarpXParticleContainer::ContainerLike<amrex::PinnedArenaAllocator>;
80-
using ParticleIter = typename amrex::ParConstIterSoA<PIdx::nattribs, 0, amrex::PinnedArenaAllocator>;
79+
using ParticleContainer = typename WarpXParticleContainer::ContainerLike<amrex::PolymorphicArenaAllocator>;
80+
using ParticleIter = typename amrex::ParConstIterSoA<PIdx::nattribs, 0, amrex::PolymorphicArenaAllocator>;
8181

8282
/** Initialize openPMD I/O routines
8383
*

Source/Diagnostics/WarpXOpenPMD.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -559,8 +559,9 @@ for (const auto & particle_diag : particle_diags) {
559559
}
560560

561561
PinnedMemoryParticleContainer tmp = (isBTD || use_pinned_pc) ?
562-
pinned_pc->make_alike<amrex::PinnedArenaAllocator>() :
563-
pc->make_alike<amrex::PinnedArenaAllocator>();
562+
pinned_pc->make_alike<amrex::PolymorphicArenaAllocator>() :
563+
pc->make_alike<amrex::PolymorphicArenaAllocator>();
564+
tmp.SetArena(amrex::The_Pinned_Arena());
564565

565566
const auto mass = pc->AmIA<PhysicalSpecies::photon>() ? PhysConst::m_e : pc->getMass();
566567
RandomFilter const random_filter(particle_diag.m_do_random_filter,

Source/Particles/LaserParticleContainer.H

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public:
5656
* \brief Method to initialize runtime attributes. Does nothing for LaserParticleContainer.
5757
*/
5858
void DefaultInitializeRuntimeAttributes (
59-
typename ContainerLike<amrex::PinnedArenaAllocator>::ParticleTileType& /*pinned_tile*/,
59+
typename ContainerLike<amrex::PolymorphicArenaAllocator>::ParticleTileType& /*pinned_tile*/,
6060
int /*n_external_attr_real*/,
6161
int /*n_external_attr_int*/) final {}
6262

Source/Particles/ParticleBoundaryBuffer.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ void ParticleBoundaryBuffer::gatherParticlesFromDomainBoundaries (MultiParticleC
384384
{
385385
WARPX_PROFILE("ParticleBoundaryBuffer::gatherParticles");
386386

387-
using PIter = amrex::ParConstIterSoA<PIdx::nattribs, 0>;
387+
using PIter = amrex::ParConstIterSoA<PIdx::nattribs, 0, amrex::PolymorphicArenaAllocator>;
388388
const auto& warpx_instance = WarpX::GetInstance();
389389
const amrex::Geometry& geom = warpx_instance.Geom(0);
390390
auto plo = geom.ProbLoArray();
@@ -401,7 +401,8 @@ void ParticleBoundaryBuffer::gatherParticlesFromDomainBoundaries (MultiParticleC
401401
const WarpXParticleContainer& pc = mypc.GetParticleContainer(i);
402402
if (!buffer[i].isDefined())
403403
{
404-
buffer[i] = pc.make_alike<amrex::PinnedArenaAllocator>();
404+
buffer[i] = pc.make_alike<amrex::PolymorphicArenaAllocator>();
405+
buffer[i].SetArena(amrex::The_Pinned_Arena());
405406
buffer[i].AddIntComp("stepScraped", true);
406407
buffer[i].AddRealComp("deltaTimeScraped", true);
407408
buffer[i].AddRealComp("nx", true);
@@ -495,7 +496,7 @@ void ParticleBoundaryBuffer::gatherParticlesFromEmbeddedBoundaries (
495496
WARPX_PROFILE("ParticleBoundaryBuffer::gatherParticles::EB");
496497

497498

498-
using PIter = amrex::ParConstIterSoA<PIdx::nattribs, 0>;
499+
using PIter = amrex::ParConstIterSoA<PIdx::nattribs, 0, amrex::PolymorphicArenaAllocator>;
499500
const auto &warpx_instance = WarpX::GetInstance();
500501
const amrex::Geometry &geom = warpx_instance.Geom(0);
501502
auto plo = geom.ProbLoArray();
@@ -507,7 +508,8 @@ void ParticleBoundaryBuffer::gatherParticlesFromEmbeddedBoundaries (
507508
const auto& pc = mypc.GetParticleContainer(i);
508509
if (!buffer[i].isDefined())
509510
{
510-
buffer[i] = pc.make_alike<amrex::PinnedArenaAllocator>();
511+
buffer[i] = pc.make_alike<amrex::PolymorphicArenaAllocator>();
512+
buffer[i].SetArena(amrex::The_Pinned_Arena());
511513
buffer[i].AddIntComp("stepScraped", true);
512514
buffer[i].AddRealComp("deltaTimeScraped", true);
513515
buffer[i].AddRealComp("nx", true);

Source/Particles/PhysicalParticleContainer.H

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ public:
279279
* These are NOT initialized by this function.
280280
*/
281281
void DefaultInitializeRuntimeAttributes (
282-
typename ContainerLike<amrex::PinnedArenaAllocator>::ParticleTileType& pinned_tile,
282+
typename ContainerLike<amrex::PolymorphicArenaAllocator>::ParticleTileType& pinned_tile,
283283
int n_external_attr_real,
284284
int n_external_attr_int) final;
285285

Source/Particles/PhysicalParticleContainer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ void PhysicalParticleContainer::InitData ()
403403

404404
void
405405
PhysicalParticleContainer::DefaultInitializeRuntimeAttributes (
406-
typename ContainerLike<amrex::PinnedArenaAllocator>::ParticleTileType& pinned_tile,
406+
typename ContainerLike<amrex::PolymorphicArenaAllocator>::ParticleTileType& pinned_tile,
407407
int n_external_attr_real,
408408
int n_external_attr_int)
409409
{

Source/Particles/PinnedMemoryParticleContainer.H

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33

44
#include "WarpXParticleContainer.H"
55

6-
using PinnedMemoryParticleContainer = amrex::ParticleContainerPureSoA<PIdx::nattribs, 0, amrex::PinnedArenaAllocator>;
6+
using PinnedMemoryParticleContainer = amrex::ParticleContainerPureSoA<PIdx::nattribs, 0, amrex::PolymorphicArenaAllocator>;
77

88
#endif //WARPX_PinnedMemoryParticleContainer_H_

0 commit comments

Comments
 (0)