From edfe3ac1194c31bc29f79c7e14f3a81a5771bb05 Mon Sep 17 00:00:00 2001 From: Roelof Groenewald <40245517+roelof-groenewald@users.noreply.github.com> Date: Fri, 30 Jun 2023 14:19:14 -0700 Subject: Allow `FieldProbe` in RZ geometry (#4057) * allow `FieldProbe` in RZ geometry * hard code the FieldProbe number of outputs to 11 * add note in the docs about `raw_fields` only outputting the n=0 azimuthal mode --- .../ReducedDiags/FieldProbeParticleContainer.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'Source/Diagnostics/ReducedDiags/FieldProbeParticleContainer.cpp') diff --git a/Source/Diagnostics/ReducedDiags/FieldProbeParticleContainer.cpp b/Source/Diagnostics/ReducedDiags/FieldProbeParticleContainer.cpp index 501bfc815..d928bd33f 100644 --- a/Source/Diagnostics/ReducedDiags/FieldProbeParticleContainer.cpp +++ b/Source/Diagnostics/ReducedDiags/FieldProbeParticleContainer.cpp @@ -114,6 +114,7 @@ FieldProbeParticleContainer::AddNParticles (int lev, amrex::ignore_unused(x, y); p.pos(0) = z[i]; #endif + // write position, cpu id, and particle id to particle pinned_tile.push_back(p); } @@ -121,6 +122,11 @@ FieldProbeParticleContainer::AddNParticles (int lev, // write Real attributes (SoA) to particle initialized zero DefineAndReturnParticleTile(0, 0, 0); + // for RZ write theta value +#ifdef WARPX_DIM_RZ + pinned_tile.push_back_real(FieldProbePIdx::theta, np, 0.0); +#endif + pinned_tile.push_back_real(FieldProbePIdx::Ex, np, 0.0); pinned_tile.push_back_real(FieldProbePIdx::Ey, np, 0.0); pinned_tile.push_back_real(FieldProbePIdx::Ez, np, 0.0); @@ -129,16 +135,16 @@ FieldProbeParticleContainer::AddNParticles (int lev, pinned_tile.push_back_real(FieldProbePIdx::Bz, np, 0.0); pinned_tile.push_back_real(FieldProbePIdx::S, np, 0.0); + auto old_np = particle_tile.numParticles(); + auto new_np = old_np + pinned_tile.numParticles(); + particle_tile.resize(new_np); + amrex::copyParticles( + particle_tile, pinned_tile, 0, old_np, pinned_tile.numParticles()); + /* * Redistributes particles to their appropriate tiles if the box * structure of the simulation changes to accomodate data more * efficiently. */ - auto old_np = particle_tile.numParticles(); - auto new_np = old_np + pinned_tile.numParticles(); - particle_tile.resize(new_np); - amrex::copyParticles( - particle_tile, pinned_tile, 0, old_np, pinned_tile.numParticles()); Redistribute(); - } -- cgit v1.2.3