From 93e26a89ffa2d3eb29ce86b2b85e1a6ba6965626 Mon Sep 17 00:00:00 2001 From: AMLattanzi Date: Wed, 3 Jun 2026 12:12:56 -0700 Subject: [PATCH] First start. Issues with SL now. --- Source/ERF.cpp | 3 +++ Source/ERF_MakeNewArrays.cpp | 8 ++++++++ Source/Utils/ERF_TerrainMetrics.cpp | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/ERF.cpp b/Source/ERF.cpp index 4cebc1e594..a0b50541bf 100644 --- a/Source/ERF.cpp +++ b/Source/ERF.cpp @@ -2204,6 +2204,9 @@ ERF::restart () ReadCheckpointFile(); + // Force regrid on level 0 if more procs than boxes are requested + regrid_level_0_on_restart = ( regrid_level_0_on_restart || + grids[0].size() < ParallelDescriptor::NProcs() ); if (regrid_level_0_on_restart) { // // Coarsening before we split the grids ensures that each resulting diff --git a/Source/ERF_MakeNewArrays.cpp b/Source/ERF_MakeNewArrays.cpp index 7242e12f8f..09353221e1 100644 --- a/Source/ERF_MakeNewArrays.cpp +++ b/Source/ERF_MakeNewArrays.cpp @@ -801,6 +801,10 @@ ERF::remake_zphys (int lev, std::unique_ptr& temp_zphys_nd) std::swap(temp_zphys_nd, z_phys_nd[lev]); } // lev > 0 + else { + temp_zphys_nd->ParallelCopy(*z_phys_nd[lev], 0, 0, 1, z_phys_nd[lev]->nGrowVect(), z_phys_nd[lev]->nGrowVect()); + std::swap(temp_zphys_nd, z_phys_nd[lev]); + } } else { if (lev > 0) { @@ -819,6 +823,10 @@ ERF::remake_zphys (int lev, std::unique_ptr& temp_zphys_nd) std::swap(temp_zphys_nd, z_phys_nd[lev]); } // lev > 0 + else { + temp_zphys_nd->ParallelCopy(*z_phys_nd[lev], 0, 0, 1, z_phys_nd[lev]->nGrowVect(), z_phys_nd[lev]->nGrowVect()); + std::swap(temp_zphys_nd, z_phys_nd[lev]); + } } if (solverChoice.terrain_type == TerrainType::ImmersedForcing || diff --git a/Source/Utils/ERF_TerrainMetrics.cpp b/Source/Utils/ERF_TerrainMetrics.cpp index 0796e67d9d..f9e6da6d41 100644 --- a/Source/Utils/ERF_TerrainMetrics.cpp +++ b/Source/Utils/ERF_TerrainMetrics.cpp @@ -639,7 +639,7 @@ make_zcc (const Geometry& geom, Array4 z_cc = z_phys_cc.array(mfi); ParallelFor(gbx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { z_cc(i, j, k) = Real(.125) * ( z_nd(i,j,k ) + z_nd(i+1,j,k ) + z_nd(i,j+1,k ) + z_nd(i+1,j+1,k ) - +z_nd(i,j,k+1) + z_nd(i+1,j,k+1) + z_nd(i,j+1,k+1) + z_nd(i+1,j+1,k+1) ); + + z_nd(i,j,k+1) + z_nd(i+1,j,k+1) + z_nd(i,j+1,k+1) + z_nd(i+1,j+1,k+1) ); }); } z_phys_cc.FillBoundary(geom.periodicity());