From b7e8a262dd9b4b8aa02b0ac5963e0644c33754da Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Fri, 1 Sep 2023 11:01:58 -0700 Subject: [PATCH] Fix InitRandomPerBox for 1D & 2D (#3527) ## Summary Fixing an array bounds violation for `RealBox` in <3D for `InitRandomPerBox`. RealBox: SPACE include added for nD macros used within it. ## Additional background Seen in pyAMReX 1D and 2D builds. ## Checklist The proposed changes: - [x] fix a bug or incorrect behavior in AMReX - [ ] add new capabilities to AMReX - [ ] changes answers in the test suite to more than roundoff level - [ ] are likely to significantly affect the results of downstream AMReX users - [ ] include documentation in the code and/or rst files, if appropriate --- Src/Base/AMReX_RealBox.H | 1 + Src/Particle/AMReX_ParticleInit.H | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Src/Base/AMReX_RealBox.H b/Src/Base/AMReX_RealBox.H index 6f429c8262b..dd3180fe218 100644 --- a/Src/Base/AMReX_RealBox.H +++ b/Src/Base/AMReX_RealBox.H @@ -8,6 +8,7 @@ #include #include #include +#include #include #include diff --git a/Src/Particle/AMReX_ParticleInit.H b/Src/Particle/AMReX_ParticleInit.H index 622a08d9ce0..7a8aa4d4a5d 100644 --- a/Src/Particle/AMReX_ParticleInit.H +++ b/Src/Particle/AMReX_ParticleInit.H @@ -1380,9 +1380,11 @@ ParticleContainer_impl(grid_box.lo(0) + (dist(mt) + double(icnt)) / double(icount_per_box) * grid_box.length(0)); - p.pos(1) = static_cast(grid_box.lo(1) + (dist(mt) + double(jcnt)) / double(icount_per_box) * grid_box.length(1)); - p.pos(2) = static_cast(grid_box.lo(2) + (dist(mt) + double(kcnt)) / double(icount_per_box) * grid_box.length(2)); + AMREX_D_TERM( + p.pos(0) = static_cast(grid_box.lo(0) + (dist(mt) + double(icnt)) / double(icount_per_box) * grid_box.length(0));, + p.pos(1) = static_cast(grid_box.lo(1) + (dist(mt) + double(jcnt)) / double(icount_per_box) * grid_box.length(1));, + p.pos(2) = static_cast(grid_box.lo(2) + (dist(mt) + double(kcnt)) / double(icount_per_box) * grid_box.length(2)); + ); for (int i = 0; i < AMREX_SPACEDIM; i++) { AMREX_ASSERT(p.pos(i) < grid_box.hi(i));