Repository navigation
Fix issues #208-#211, #213, #214, #216, #218-#220, #249, #251, #253-#255; remove the HIT capability (#243-#246) - #256
Merged
asalmgren merged 3 commits intoOct 7, 2026
Conversation
…-Fluids#214, AMReX-Fluids#216, AMReX-Fluids#218-AMReX-Fluids#220, AMReX-Fluids#249, AMReX-Fluids#251, AMReX-Fluids#253-AMReX-Fluids#255; remove the HIT capability (AMReX-Fluids#243-AMReX-Fluids#246) Correctness and EB fixes: * AMReX-Fluids#208 post_timestep: build the ns.dump_plane slab with the default factory instead of this level's EB factory on a foreign BoxArray. * AMReX-Fluids#209 ParticleDerive: zero the result and FillBoundary when ngrow > 0, so gradient tagging on particle_count does not read uninitialised ghosts. * AMReX-Fluids#210 ComputeAofs: offset the EBFluxRegister coarse buffer by state_indx so the scalar call's flux redistribution lands in the scalar components. * AMReX-Fluids#211 reflux: zero fine-covered coarse cells before the EB advective reflux, so re-redistributed shares survive for SyncInterp. * AMReX-Fluids#213 press_fill: replace the unconditional Abort with the no-op nodal functor; press_bc never contains ext_dir. * AMReX-Fluids#214 scaleVar/rescaleVar: scale vel on its own one-cell ghost box rather than sig's, which may have none. * AMReX-Fluids#216 Diffusion::computeExtensiveFluxes: write 0 instead of COVERED_VAL on covered fluxes, which reach the EB-unaware viscous FluxRegister. * AMReX-Fluids#218 ConvertCheckpointGrids: copy the TimeAverage file verbatim, preserving dt_avg and every level. * AMReX-Fluids#219 computeNewDt: with fixed_dt > 0, do not let the CFL estimate undercut it; ramp only by change_max. Docs corrected for ns.cfl and dt_cutoff. * AMReX-Fluids#220 create_umac_grown: compare the mask against level_mask_interior, not RegType::interior. Build configuration and documentation: * AMReX-Fluids#249 Delete the unreferenced Exec/run3d and Exec/square_grid_turbulence Make.package fragments. * AMReX-Fluids#251 Drop input keys that nothing reads from three shipped decks, and set the constant the selected LES model actually uses. * AMReX-Fluids#253 Remove the unused Doxygen/breathe toolchain and make_api.py; fix the docs workflow concurrency key so pushes stop cancelling development deploys. * AMReX-Fluids#254 Correct eleven documented input keys, prefixes and defaults, and document the keys that had none: num_steps, strt_time, stop_interval, the ns.LES_* set, ns.avg_interval, ns.redistribution_type, ns.refine_cutcells, the outflow gridding keys, the restart-compatibility keys, prob.probtype values and the registered derive names. * AMReX-Fluids#255 Remove stale content: the removed MOL scheme, the non-existent Euler tutorial, IAMR-Codes URLs, a broken cross-reference and figure name. Remove the HIT (homogeneous isotropic turbulence) capability: Tutorials/HIT and its turbulent-forcing engine are deleted, along with the AMREX_USE_TURBULENT_FORCING hook in NavierStokesBase::post_restart and the USE_TURBULENT_FORCING/USE_FAST_FORCE block in Exec/Make.IAMR. No CI job built it and no regression test ran it. This closes AMReX-Fluids#243, AMReX-Fluids#244, AMReX-Fluids#245 and AMReX-Fluids#246, all of which were confined to Tutorials/HIT. The out-of-date Util/run_scripts SLURM templates are removed as well. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The make system creates a tmp_build_dir in every build directory. Its o/ and s/ subdirectories were already ignored, but the parent was not, so eight of them showed up as untracked in a clean tree. tmp_install_dir is its sibling; the CI whitespace check already prunes both. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- computeNewDt: with fixed_dt, ramp from at least init_shrink*fixed_dt, so a restart after a step shortened by stop_time returns to fixed_dt. - ParticleDerive: extrapolate ghost cells at physical and coarse/fine boundaries so gradient tagging does not refine along walls.
WeiqunZhang
approved these changes
Oct 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses nineteen open issues: ten correctness/EB fixes, five build-configuration
and documentation fixes, and the removal of the HIT capability (which closes four
more). Nothing here has been built or run yet — that is the point of opening it now,
so it can be tested on a second machine in parallel.
Issues closed by this PR
Merging this into
development(the default branch) will close all nineteenautomatically:
Closes #208
Closes #209
Closes #210
Closes #211
Closes #213
Closes #214
Closes #216
Closes #218
Closes #219
Closes #220
Closes #243
Closes #244
Closes #245
Closes #246
Closes #249
Closes #251
Closes #253
Closes #254
Closes #255
It does not close #252; see "Not closed, but affected" below.
Each is described in context in the sections that follow.
Correctness and EB
Closes #208 —
post_timestep: thens.dump_planeslab was built with this level's EBfactory on a one-box
BoxArrayof its own, soEBFArrayBoxFactory::createindexed thelevel's cell-flag FabArray with a foreign box index. Now built with the default factory.
Closes #209 —
ParticleDerive: theMultiFaboverload only writes the valid region, buterrorEstreads the ghost cells forGRAD/RELGRADtags. The result is now zeroed andFillBoundary'd whenngrow > 0.Closes #210 —
ComputeAofs: theEBFluxRegistercoarse re-redistribution buffer washanded over at component 0 for both the velocity and the scalar call, so scalar mass
accumulated into the velocity slots. Now offset by
state_indx, matching the adjacentCrseAdd/FineAddcalls.Closes #211 —
reflux: with EB, the shares thatEBFluxRegisterre-redistributes intofine-covered coarse cells were deleted by the zeroing loop that ran after it. The zeroing
now runs before the advective reflux, so
SyncInterpcarries them. Non-EB order isunchanged (
YAFluxRegister::Refluxnever touches covered cells).Closes #213 —
press_fill: aborted unconditionally on every physical-boundary fill ofPress_Type, which anyavg_pressuregradient tag would hit. Replaced with the no-opnodal functor already sketched in the file;
press_bcnever containsext_dirandGpuBndryFuncFabextrapolates nodal ghosts itself.Closes #214 —
scaleVar/rescaleVar: the RZ velocity scaling looped oversig's growntile box, which has no ghost cells in
initialVelocityProject, so the axial inflow ghostrow was never scaled. Now uses
vel's own one-cell ghost box.Closes #216 —
Diffusion::computeExtensiveFluxes: covered fluxes were overwritten withCOVERED_VAL(1e40) and then passed to the EB-unaware viscousFluxRegister. Now zero,which is what
MLEBABecLap::FFluxalready returns.Closes #218 —
ConvertCheckpointGrids: theTimeAveragefile was rewritten as a single(time_avg, time_avg_fluct)pair, droppingdt_avgand every level above 0. Now copiedverbatim, which also keeps old single-pair files readable.
Closes #219 —
computeNewDt:ns.fixed_dtwas silently undercut by the CFL estimate,contrary to the docs. With
fixed_dt > 0the estimate is now ignored and only thechange_maxramp applies, soinit_shrinkstill gives the documented reduced start. Thens.cflanddt_cutoffdocumentation is corrected to match the code rather than thereverse.
Closes #220 —
create_umac_grown: the mask test compared against the unqualifiedinterior, which resolves toRegType::interior, notlevel_mask_interior. Correct onlyby coincidence (both are 0).
Build configuration and documentation
Closes #249 — deleted
Exec/run3d/Make.packageandExec/square_grid_turbulence/Make.package. Nothing includes aMake.packagefrom a builddirectory, and both listed Fortran and pre-
AMReX_sources that no longer exist.Closes #251 — removed
amr.probin_file, the two extrans.gravityvalues and theunregistered
velocity_averagederive frominputs.3d.square_grid; removedmg.vfrominputs_ml; changedns.smago_Cs_csttons.sigma_Cs_cstininputs.3d.LES_hotspot,which selects the Sigma model.
Closes #253 — removed the breathe/Doxygen configuration from
conf.py, thebreathepipinstall, the Doxygen and LaTeX apt packages, and the uninvoked
make_api.py. The docs jobonly runs
make html. The workflow concurrency group is now${{ github.ref }}-${{ github.head_ref }}-docs, matching the other six workflows, so apush to any branch no longer cancels an in-flight
developmentdeploy.Closes #254 — corrected eleven documented keys, prefixes and defaults, and documented
every key the issue listed as undocumented:
num_steps,strt_time,stop_interval, thens.LES_*set,ns.avg_interval/ns.compute_fluctuations,ns.redistribution_type,ns.refine_cutcells, the outflow gridding keys, the restart-compatibility keys(
ns.gradp_in_checkpoint,ns.avg_in_checkpoint), the validprob.probtypevalues withtheir
prob.*parameters, and the registered derive names.Closes #255 — removed the MOL time-step section and its mentions, the non-existent Euler
tutorial entry, the
Average? LES?placeholder, theIAMR-Codesremote URLs, and fixedthe
ViscBench2d.cppname, themagveelfigure filename, theChap:InputsLoadBalancingreference and theytemplatespath.Removal of the HIT capability
Tutorials/HITand its turbulent-forcing engine (TurbulentForcing_*,depRand, thelocal
NS_getForce.cppandprob_init.cppoverrides) are deleted, together with theAMREX_USE_TURBULENT_FORCINGhook inNavierStokesBase::post_restartand theUSE_TURBULENT_FORCING/USE_FAST_FORCEblock inExec/Make.IAMR. No CI job built it andTest/IAMR-tests.inihad no entry for it, so nothing in the test matrix changes.This closes four issues that were confined entirely to that directory:
Closes #243 —
getForceverbose min/max loops dereferencing device memory on the host.Closes #244 —
USE_FAST_FORCEcoarse lattice anchored at the box corner.Closes #245 —
depRand.cppusingomp_get_thread_num()without<omp.h>.Closes #246 —
turb.force_fileread by nothing.The out-of-date
Util/run_scriptsSLURM templates are removed as well;run.perlmutterreferenced
inputs.3d.HITandhit_ic_4_32.dat, neither of which existed.The build-system fact that HIT used to illustrate — a build directory's local files
override
IAMR/Source— is preserved as prose inProblemSetup.rst, since the behavioursurvives the removal. The three HIT mentions in
RELEASE_NOTESare left alone: thosereleases did ship it.
Not closed, but affected
#252 lists
USE_TURBULENT_FORCINGamong the configurations CI never builds. That bullet isnow moot, but the issue's other gaps (
USE_PARTICLES,Util/ConvertCheckpoint,TaylorGreen/benchmarks,USE_OMPbreadth, RZ/BDS/restart decks, no GPU job running anexecutable) are untouched.
Housekeeping
A second commit adds
tmp_build_dir/andtmp_install_dir/to the top-level.gitignore. The make system creates atmp_build_dirin every build directory; itso/ands/subdirectories were already ignored but the parent was not, so eight ofthem appeared as untracked in a clean tree.
tmp_install_diris its sibling, which theCI whitespace check already prunes. No tracked file is affected.
Testing notes
Not yet built or run. Worth exercising:
post_timestep:ns.dump_planeslab MultiFab is built with this level's EB factory on a foreign BoxArray #208/ParticleDerive:particle_countderives withngrow > 0leave ghost cells uninitialised, so gradient tagging on them reads garbage #209/press_fill: aborts on every physical-boundary fill ofPress_Type, so tagging onavg_pressurewithadjacent_difference_greaterkills the run #213/computeNewDt:ns.fixed_dtis silently undercut by the CFL estimate;ns.cflis mandatory anddt_cutoffstops instead of aborting, contrary to the docs #219/create_umac_grown: mask test compares againstRegType::interiorinstead oflevel_mask_interior#220;ComputeAofs: EB flux-redistributiondrho_as_crsefor the scalar call is written into the register's velocity components #210/reflux: with EB, the part of the advective reflux thatEBFluxRegisterre-redistributes into fine-covered coarse cells is zeroed and never reaches the fine level #211/Diffusion::computeExtensiveFluxes: covered FABs/tiles get flux 1e40, which the EB-unaware viscous FluxRegister refluxes into the neighbouring coarse cell #216;Util/ConvertCheckpointforConvertCheckpointGrids: TimeAverage file is rewritten as a single (time_avg, time_avg_fluct) pair, droppingdt_avgand every level above 0 #218;make htmlinDocs/sphinx_documentationfordocs.yml/conf.py/make_api.py: documentation build carries an unused Doxygen+breathe toolchain, and the workflow's concurrency group cancels development deploys from unrelated pushes #253/RunningProblems.rst,AlgorithmOptions.rst,ProblemSetup.rst: eleven documented input keys, prefixes or defaults do not match what the code reads #254/Docs/sphinx_documentation: stale content — removed MOL scheme, non-existentEulertutorial, oldIAMR-CodesURLs, broken cross-reference and figure name #255.#211 is the one change here that should move an existing baseline, so
Exec/eb_run2d/regtest.2d.bubbleandExec/eb_run3d/regtest.3d.double_shear_layerare thedecks to watch. #214 changes answers only for 2D RZ with an axial inflow, which no shipped
deck has.
🤖 Generated with Claude Code