From 6ece70d4260718e998bdc1826734549cf910397b Mon Sep 17 00:00:00 2001 From: AlexanderSinn <64009254+AlexanderSinn@users.noreply.github.com> Date: Tue, 27 Jun 2023 13:39:26 +0200 Subject: [PATCH] cut box to plasma radius in init (#988) --- .../plasma/PlasmaParticleContainerInit.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/particles/plasma/PlasmaParticleContainerInit.cpp b/src/particles/plasma/PlasmaParticleContainerInit.cpp index b5cba11554..bc076f690f 100644 --- a/src/particles/plasma/PlasmaParticleContainerInit.cpp +++ b/src/particles/plasma/PlasmaParticleContainerInit.cpp @@ -60,7 +60,21 @@ InitParticles (const amrex::IntVect& a_num_particles_per_cell, for(amrex::MFIter mfi = MakeMFIter(lev, DfltMfi); mfi.isValid(); ++mfi) { - const amrex::Box& tile_box = mfi.tilebox(box_nodal, box_grow); + amrex::Box tile_box = mfi.tilebox(box_nodal, box_grow); + + if (a_radius != std::numeric_limits::infinity()) { + amrex::IntVect lo_limit { + static_cast(std::round((-a_radius - plo[0])/dx[0] - 2)), + static_cast(std::round((-a_radius - plo[1])/dx[1] - 2)), + tile_box.smallEnd(2) + }; + amrex::IntVect hi_limit { + static_cast(std::round(( a_radius - plo[0])/dx[0] + 2)), + static_cast(std::round(( a_radius - plo[1])/dx[1] + 2)), + tile_box.bigEnd(2) + }; + tile_box &= amrex::Box(lo_limit, hi_limit, box_nodal); + } const auto lo = amrex::lbound(tile_box); const auto hi = amrex::ubound(tile_box);