Appearance
Verification
Every FLUME capability is backed by a verification case in src/tests/flume/verification/: a check.sh that runs the case (CPU by default; FLUME_EXE=exe/adam_flume_fnl for the GPU backend) and an oracle that asserts the physics (an exact solution, a reference, a symmetry or a conservation property), not a stored golden. The stored goldens are the job of the regression suite; the building blocks below the solver are pinned by the unit tests.
Each case has its own page with the same sections: the case and its scope, the models and numerics with references to the code, the initial and boundary conditions, the input files, the results on CPU and FNL, and the findings. All runs use 2 MPI ranks and WENO5 unless a page says otherwise. The figures are drawn by src/tests/flume/verification/make_doc_figures.py, from the work directories of the check.sh scripts or from the re-runs of make_doc_runs.sh.
Run any case from its directory:
bash
cd src/tests/flume/verification/sod && ./check.sh # CPU backend
FLUME_EXE=$PWD/../../../../../exe/adam_flume_fnl ./check.sh # FNL backend (GPU)The verification cases are complete simulations, and they are run with a focused scope: the legs a change touches, not the whole catalog. The regression suite is the layer that runs on every change. Every script therefore selects its legs the same way, through the shared legs.sh:
bash
./check.sh --legs vv1,vv3 # the listed legs (commas or blanks)
./check.sh --legs all # every leg, including those the default leaves out
./check.sh # the default selection (the script's header lists it)Each script lists its legs and its default in its Usage: header. An unknown leg, or a selection that names no leg, stops the script with exit status 2 before anything runs, so a misspelt leg can never pass by running nothing. Each log opens with the resolved selection (>> legs: ...). The older spellings --leg and --cases still work as aliases of --legs.
In the catalog, Figure "no" marks a contract or bitwise leg (an input refusal, CPU = FNL, a restart, a round trip): a setup table documents it better than a plot of a difference that is zero.
Euler
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
| Sod shock tube | V1, RV-3 | M1 (#35), M3 (#47) | CPU, FNL | yes |
| Lax problem | RV-3 (lax leg) | M3 (#47) | CPU (all schemes), FNL (weno-riemann HLLC) | yes |
| Shu–Osher shock / entropy-wave interaction | RV-3 (shu-osher leg) | M3 (#47) | CPU (all schemes), FNL (weno-riemann HLLC) | yes |
| Isentropic vortex: order of accuracy | V2, RV-2 | M1 (#35), M3 (#47) | CPU (all schemes), FNL (weno, weno-riemann LLF and HLLC) | yes |
| Shock over a cylinder | V6 | M1 (#35), M3 (#47) | CPU, FNL | yes |
| Conservation across AMR seams | V3, RV-4 | M1 (#35), M3 (#47) | CPU, FNL | yes |
| Multi-realm runs | multirealm legs 1–6 | M2 entry (#37); #40, #51, #52, #54; M6 (#68) | CPU, FNL | yes |
| Forward-facing step: a three-realm forest on quadtrees | EV-step | — (#46, quadtree AMR; #66) | CPU, FNL (trees leg); CPU only (full leg) | yes |
Ideal MHD
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
MHD on weno-riemann | RV-5, RV-6, RV-7 | M3 (#47, M3-P3c) | CPU, FNL | yes |
| Ryu–Jones 2a: all seven waves | MV-4 | M2 (#41) | CPU, FNL | yes |
| Brio–Wu and Ryu–Jones 4d | — (mhd/riemann, M2-P3 exit) | M2 (#41) | CPU, FNL | yes |
| MHD plumbing | — (mhd/plumbing, M2-P1) | M2 (#41, P1) | CPU, FNL | no |
| MHD with a zero field | MV-2 | M2 (#41, P3) | CPU, FNL | no |
| GLM divergence cleaning | MV-3, MV-10 | M2 (#41); the MV-10 monitor M6 (#68, G1) | CPU, FNL | yes |
| Order of accuracy: linear waves, CPAW, magnetised vortex | MV-5, MV-6, MV-7 | M2 (#41) | CPU, FNL | yes |
| MHD conservation across AMR seams | MV-11 | M2 (#41, P7a) | CPU, FNL | yes |
| Orszag–Tang vortex | MV-12 | M2 (#41) | CPU, FNL | yes |
| MHD rotor | MV-13 | M2 (#41) | CPU, FNL | yes |
| Field loop advection | MV-9 | M2 (#41); --agree #79 | CPU, FNL | yes |
| Rotated shock tube | MV-8 | M2 (#41) | CPU, FNL | yes |
| EGLM cleaning | EV-2, EV-3, EV-4 | M3 (#47, M3-P4) | CPU, FNL | yes |
| Positivity limiter | PV-1 to PV-5 | M3 (#47, M3-P5); PV-5 #50 | CPU, FNL (PV-1 as a sphere: FNL only) | yes |
| Quadtree AMR | MV-15 | #46 (no milestone, after M3) | CPU, FNL | yes |
Infrastructure
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
| Ghost probe: every face and edge ghost on a linear field | GP | M4 (#65 P0, P1), M6 (#68 C2, D1) | CPU, FNL | yes |
| Scaling covariance and the reference layer | NV-0, NV-4, NV-5, NV-6, NV-8, NV-9 | — (#49, non-dimensional form, N0–N2) | CPU, FNL | no |
| Ranks without blocks | DV-1 | — (#82) | CPU, FNL | yes |
| Non-finite state guard | — (nonfinite) | — (#45) | CPU, FNL | no |
Dissipative terms (M4)
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
| Input contract of the dissipative terms | DC | M4 (#65) | CPU, FNL | no |
| Viscous waves | VV-1, VV-2 | M4 (#65) | CPU, FNL | yes |
| Compressible Couette flow | VV-3 | M4 (#65) | CPU, FNL | yes |
| Becker's viscous shock | VV-4 | M4 (#65) | CPU, FNL | yes |
| Ohmic decay and the visco-resistive Alfvén wave | VV-5 | M4 (#65) | CPU, FNL | yes |
| Ohmic heating and the divergence constraint | VV-6 | M4 (#65) | CPU, FNL | no |
| Conservation across 2:1 seams and forest seams | VV-7 | M4 (#65) | CPU, FNL | yes |
| Accuracy across 2:1 seams | VV-8 | M4 (#65) | CPU, FNL | yes |
| CPU and FNL agree run by run | VV agree | M4 (#65) | CPU, FNL | no |
Runtime AMR (M5)
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
| Regrid round trip and input contract | RG (rg0, rg1, rg2) | M5 (#74) | CPU (rg0, a host program); rg1 and rg2 CPU, FNL | no |
| Runtime regrids in FLUME | RG (rg3 to rg6) | M5 (#74) | CPU, FNL | yes |
| Accuracy of runtime AMR | AV (av2 to av8) | M5 (#74) | CPU, FNL | yes |
| MHD blast symmetry on the flux-splitting path | #77 study, bounded by av3c | M5 (#74), #77 | CPU, FNL | yes |
Seam accuracy and divergence (M6)
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
| Order across static 2:1 seams | AO (A1, C1) | M6 (#68) | CPU, FNL | yes |
| Divergence across seams | AD (A2) | M6 (#68), #78 | FNL (tables); CPU for the loop leg and the D_flux cross-check | yes |
| Shock crossing a static 2:1 face | AS (A3, C3, C3b, C3c) | M6 (#68) | CPU, FNL (Sod); FNL only (RJ2a, C3, C3c) | yes |
| Integral drift and the WENO sensor near seams | AL (A4) | M6 (#68) | CPU, FNL (the two backends log the same values) | yes |
Seam studies (M6)
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
| Quintic coarse-to-fine fill | D1 | M6 (#68) | CPU, FNL (table: FNL) | yes |
| Limited coarse-to-fine fills | D2 | M6 (#68) | FNL (crossings); CPU, FNL (AO legs) | yes |
| Shock-crossing defect is a capturing error | E0 | M6 (#68) | FNL; CPU re-runs agree to the printed digits | yes |
| Reflux policy: troubled against always | E2 (E1) | M6 (#68) | FNL (flags checked equal to the CPU's); AO euler-tq: CPU, FNL | yes |
| #78 is the reflux, not the restricted ghosts | G3a | M6 (#68), #78 | FNL only | yes |
| GLM damping length on a seam | G2 | M6 (#68) | FNL only | yes |
| EGLM reflux leaves B alone | G3b | M6 (#68), #78 | CPU, FNL | yes |
| 2:1 caps in a 2-D prototype | B1 | M6 (#68) | NumPy prototype (no ADAM run) | yes |
| Sensor-gated reflux prototype | B2 | M6 (#68) | NumPy prototype (no ADAM run) | yes |
| Footprint of a high-order restriction | B3 | M6 (#68) | NumPy prototype (no ADAM run) | yes |
External gravity (M7)
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
Stratified atmospheres and the hydrostatic boundary | GV (G0) | M7 (#73) | CPU, FNL | yes |
| The gravity force | GV-1, GV-2, GV-3, GV-6, GV-7 (G1) | M7 (#73) | CPU, FNL | yes |
| The order of the energy source | GV-9 (G2a) | M7 (#73) | CPU, FNL | yes |
| The well-balanced mode | GV-2b, GV-5, GV-8, GV-10, GV-7 (G2b) | M7 (#73) | CPU, FNL | yes |
| Rayleigh–Taylor | GV-4 (G3) | M7 (#73); symmetry study #83 | CPU, FNL | yes |
Self-gravity (M8)
| Case | ID | Milestone | Backends | Figure |
|---|---|---|---|---|
| Gravity from a cell potential | SV-1 | M8 (#81), P1 | CPU, FNL | yes |
| The FFT Poisson solver | SV-2 | M8 (#81), P2 | CPU, FNL | yes |
| Jeans modes under self-gravity | SV-3, SV-4, SV-5 | M8 (#81), P3 | CPU, FNL | yes |
| The isolated Poisson solver | SV-6 | M8 (#81), P4 | CPU, FNL | yes |
| The n = 1 polytrope: equilibrium and collapse | SV-7, SV-8, SV-14 | M8 (#81), P4; #87, P3 | CPU, FNL | yes |
| The multigrid Poisson solver on AMR grids | SV-9, SV-12, SV-13 | M8 (#81), P5a; #87, P1, P2 | CPU only | yes |
| Jeans modes on a static AMR grid | SV-10 | M8 (#81), P5b, P5c | CPU, FNL | yes |
| Self-gravity under runtime AMR | SV-11 | M8 (#81), P5c | CPU, FNL | yes |