From c214cab3984c6aa1bf53c469a998d9a89f73be98 Mon Sep 17 00:00:00 2001 From: Weiqun Zhang Date: Mon, 10 Aug 2026 09:20:11 -0700 Subject: [PATCH] Enforce nodal in/out solvability on the vel argument, not the state. The aliases were built from m_leveldata velocity, so a caller passing a different vector had its state rescaled while the projected field kept its influx/outflux imbalance. InitialPressureProjection passes a local gravity field. Fixes #184. --- src/projection/incflo_apply_nodal_projection.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/projection/incflo_apply_nodal_projection.cpp b/src/projection/incflo_apply_nodal_projection.cpp index fafd193f..59246232 100644 --- a/src/projection/incflo_apply_nodal_projection.cpp +++ b/src/projection/incflo_apply_nodal_projection.cpp @@ -167,10 +167,9 @@ void incflo::ApplyNodalProjection (Vector const& density, Vector> vel_vec(finest_level+1); for (int lev = 0; lev <= finest_level; lev++) { - auto& ld = *m_leveldata[lev]; - AMREX_D_TERM(vel_vec[lev][0] = MultiFab(ld.velocity, amrex::make_alias, 0, 1);, - vel_vec[lev][1] = MultiFab(ld.velocity, amrex::make_alias, 1, 1);, - vel_vec[lev][2] = MultiFab(ld.velocity, amrex::make_alias, 2, 1);); + AMREX_D_TERM(vel_vec[lev][0] = MultiFab(*vel[lev], amrex::make_alias, 0, 1);, + vel_vec[lev][1] = MultiFab(*vel[lev], amrex::make_alias, 1, 1);, + vel_vec[lev][2] = MultiFab(*vel[lev], amrex::make_alias, 2, 1);); } HydroUtils::enforceInOutSolvability(GetVecOfArrOfPtrs(vel_vec), get_velocity_bcrec().data(), geom, true);