diff options
Diffstat (limited to '')
-rw-r--r-- | Source/Particles/PhysicalParticleContainer.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/Source/Particles/PhysicalParticleContainer.cpp b/Source/Particles/PhysicalParticleContainer.cpp index 5b0ea8ae5..981dce211 100644 --- a/Source/Particles/PhysicalParticleContainer.cpp +++ b/Source/Particles/PhysicalParticleContainer.cpp @@ -963,8 +963,10 @@ PhysicalParticleContainer::AddPlasma (int lev, RealBox part_realbox) Gpu::DeviceVector<int> offset(overlap_box.numPts()); auto pcounts = counts.data(); int lrrfac = rrfac; - int lrefine_injection = refine_injection; - Box lfine_box = fine_injection_box; + Box fine_overlap_box; // default Box is NOT ok(). + if (refine_injection) { + fine_overlap_box = overlap_box & amrex::shift(fine_injection_box, -shifted); + } amrex::ParallelFor(overlap_box, [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept { IntVect iv(AMREX_D_DECL(i, j, k)); @@ -977,16 +979,13 @@ PhysicalParticleContainer::AddPlasma (int lev, RealBox part_realbox) if (inj_pos->overlapsWith(lo, hi)) { auto index = overlap_box.index(iv); - if (lrefine_injection) { - Box fine_overlap_box = overlap_box & amrex::shift(lfine_box, -shifted); - if (fine_overlap_box.ok()) { - int r = (fine_overlap_box.contains(iv)) ? - AMREX_D_TERM(lrrfac,*lrrfac,*lrrfac) : 1; - pcounts[index] = num_ppc*r; - } + int r; + if (fine_overlap_box.ok() && fine_overlap_box.contains(iv)) { + r = AMREX_D_TERM(lrrfac,*lrrfac,*lrrfac); } else { - pcounts[index] = num_ppc; + r = 1; } + pcounts[index] = num_ppc*r; } #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ) amrex::ignore_unused(k); @@ -1497,8 +1496,10 @@ PhysicalParticleContainer::AddPlasmaFlux (amrex::Real dt) Gpu::DeviceVector<int> offset(overlap_box.numPts()); auto pcounts = counts.data(); int lrrfac = rrfac; - int lrefine_injection = refine_injection; - Box lfine_box = fine_injection_box; + Box fine_overlap_box; // default Box is NOT ok(). + if (refine_injection) { + fine_overlap_box = overlap_box & amrex::shift(fine_injection_box, -shifted); + } amrex::ParallelForRNG(overlap_box, [=] AMREX_GPU_DEVICE (int i, int j, int k, amrex::RandomEngine const& engine) noexcept { IntVect iv(AMREX_D_DECL(i, j, k)); @@ -1510,16 +1511,13 @@ PhysicalParticleContainer::AddPlasmaFlux (amrex::Real dt) if (inj_pos->overlapsWith(lo, hi)) { auto index = overlap_box.index(iv); - if (lrefine_injection) { - Box fine_overlap_box = overlap_box & amrex::shift(lfine_box, -shifted); - if (fine_overlap_box.ok()) { - int r = (fine_overlap_box.contains(iv)) ? - AMREX_D_TERM(lrrfac,*lrrfac,*lrrfac) : 1; - pcounts[index] = num_ppc_int*r; - } + int r; + if (fine_overlap_box.ok() && fine_overlap_box.contains(iv)) { + r = AMREX_D_TERM(lrrfac,*lrrfac,*lrrfac); } else { - pcounts[index] = num_ppc_int; + r = 1; } + pcounts[index] = num_ppc_int*r; } #if defined(WARPX_DIM_XZ) || defined(WARPX_DIM_RZ) amrex::ignore_unused(k); |