Appearance
EGLM reflux leaves B alone
| ID | Group | Milestone | Backends | Figure | Regression |
|---|---|---|---|---|---|
| G3b | Seam studies | M6 (#68), #78 | CPU, FNL | yes | blast-amr-limiter |
Case and scope
G3a showed that #78, EGLM's
Models and numerics
| Item | Choice | Code |
|---|---|---|
| Equations | ideal MHD with EGLM (Derigs sources), | EGLM; add_eglm_sources, adam_flume_cpu_mhd_eglm_kernels.F90 |
| Reflux under EGLM (the fix) | the flux mismatch of | apply_reflux_to_stage_forest, reflux_stage, adam_flume_cpu_object.F90 and adam_flume_fnl_object.F90 |
| First attempt (not kept) | the Derigs source's | — |
| Space, time | WENO5 flux splitting on characteristic variables; SSP Runge–Kutta 5 stages, CFL 0.4 (field loop) | as in AD |
| Seam operators | default (mean + tricubic), reflux on | numerics |
Initial and boundary conditions
| Run | Setup |
|---|---|
| Field loop | the A2 field loop of AD: refined |
| MV-5 | the linear-wave orders of order of accuracy under EGLM |
| Regressions | the FLUME regression suite on CPU and FNL; the one case with EGLM across 2:1 seams is blast-amr-limiter |
| Multirealm | the multi-realm suite |
Input files
| File | Role |
|---|---|
src/tests/flume/verification/amr-divb/check.sh --legs loop | the field loop, GLM and EGLM, refined against uniform |
src/tests/flume/regression/blast-amr-limiter/input.ini | the regression case with EGLM across 2:1 seams (golden digest, rtol |
src/tests/flume/regression/run.sh | the regression suite |
src/tests/flume/verification/make_doc_runs.sh <runs> divb (FNL), make_doc_figures.py --only field-loop-seams | re-runs the six field loops with a checkpoint every 20 steps |
bash
cd src/tests/flume/verification/amr-divb && ./check.sh --legs loop
FLUME_EXE=$PWD/../../../../../exe/adam_flume_fnl ./check.sh --legs loopResults

FNL, today's code (after G3b): the A2 field loop under GLM and EGLM, refined
The first attempt, the source divergence from the face fluxes, keeps the MV-5 orders (4.96 to 4.97 on every wave) but raises EGLM's uniform
The fix. The field loop (refined
| EGLM, reflux | × uniform | |
|---|---|---|
| all components (before) | 70 | |
| all but B (G3b) | 3.3 | |
| all but B and | 3.4 | |
| none | 3.4 |
The field loop on FNL confirms the table: EGLM
Gate. The FLUME regressions pass unchanged on CPU and FNL (35 of 35 each at the time). blast-amr-limiter moves but stays inside its digest tolerance (rtol
- step 0 is identical, and
(zero in 2D) does not move; - at step 100 seven of 26 digest rows differ (
r,ru,rv,rE,bx,by,psi), the largest byrelative on CPU and on FNL; - the integrals drift exactly as in the golden:
to round-off ( ), the rest at the golden's levels ( , , B , , all set by the blast's boundaries and EGLM's non-conservative sources, not by the reflux).
Related cases: G3a located the cause; AD is the A2 case; the uniform-grid EGLM is EGLM cleaning.
Findings
- EGLM's cancellation needs the centred derivative. EGLM's cancellation of the
the flux splitting generates needs the centred derivative of the cell values, not the face divergence: the source divergence from the face fluxes makes the uniform 47 times worse. - Refluxing B is the whole of #78. Under EGLM the induction equation carries the Derigs source
, so is not a conserved integral: refluxing buys a conservation the model does not have and breaks the source/flux cancellation it is built on. - Since G3b (owner decision, no key) the EGLM reflux corrects
, , and and leaves alone, on CPU and FNL; GLM is unchanged (it refluxes , and its does not depend on it, G3a). #78 drops from 70 to 3.3 times the uniform level.