Skip to content

Ideal MHD ​

The ideal-MHD verification of FLUME: the conservative MHD system with cell-centred B and mixed GLM cleaning of M2 (#41), and the Riemann face fluxes (HLL, HLLD), the EGLM cleaning and the positivity limiter of M3 (#47). Each case has a check.sh under src/tests/flume/verification/mhd/<case>/ that runs it (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 run, a symmetry or a conservation property. All runs use 2 MPI ranks and WENO5 unless a page says otherwise; the models are described in models and the schemes in numerics.

Seven scripts (rj2a, riemann, linear-wave, cpaw, orszag-tang, rotor, field-loop) also run on the weno-riemann scheme through the shared --numerics option (MHD on weno-riemann).

CaseIDWhat it verifies
Ryu–Jones 2a: all seven wavesMV-4the whole MHD path against an exact 7-state solution; x/y/z bitwise; GLM inert in 1-D
Brio–Wu and Ryu–Jones 4d— (mhd/riemann)clean runs near the eigensystem degeneracies; the positivity floors engage and stop as they should
MHD plumbing— (M2-P1)the MHD model end to end: the fast-speed and ch time step, the auxiliary fields, a bitwise restart, the refused inputs
MHD with a zero fieldMV-2MHD with B=0 reduces to Euler (Sod along x/y/z, bitwise across axes); a uniform MHD state is steady, bitwise on one level and to round-off across a 2:1 patch
GLM divergence cleaningMV-3, MV-10the GLM telegraph system against its exact solution; div(B) decay of the Dedner peak, uniform and across seams; the divb_tol monitor
Order of accuracyMV-5, MV-6, MV-7fifth order on linear waves, the circularly polarised Alfvén wave and the magnetised vortex
MHD conservation across AMR seamsMV-11every MHD integral, B and ψ included, constant to round-off across 2:1 faces with reflux; the no-reflux negative control drifts
Orszag–Tang vortexMV-12180° symmetry, conservation and positivity, uniform and across 2:1 seams
MHD rotorMV-13symmetry under rotation with B→−B, positivity
Field loop advectionMV-9the divergence error GLM leaves, the loop dissipation, CPU–FNL agreement on B
Rotated shock tubeMV-8B∥ preservation and agreement with the 1-D problem at 63.4° and 45°
MHD on weno-riemannRV-5, RV-6, RV-7the HLLD scheme on the M2 verifications
EGLM cleaningEV-2, EV-3, EV-4the energy-consistent cleaning: telegraph solution, EGLM = GLM at ψ=0, drifts bounded by the sources
Positivity limiterPV-1 to PV-5positivity on magnetised blasts and near vacuum, inactivity on smooth flow, 2:1 seams
Quadtree AMRMV-152:1 seams on quadtrees against the octree reference

The Ryu–Jones 2a split in two realms (MV-14, mhd/multirealm) has no page of its own: it is on the multi-realm page.

Regenerating the figures ​

The check.sh scripts delete their checkpoints after the oracles, so the figures are drawn from re-runs:

bash
cd src/tests/flume/verification
./make_doc_runs.sh <runs-dir> blast vacuum rj2a order mhd rotated quadtree   # every MHD figure run
./make_doc_figures.py --out ../../../../docs/public/flume --runs <runs-dir> \
   --only blast near-vacuum mhd-riemann order glm-pulse orszag-tang rotor field-loop eglm-energy \
          weno-riemann rotated-shock-tube quadtree

eglm-energy reads the conservation histories kept in the mhd/orszag-tang work directories. The group mhd (issue #85, R2a) writes the runs of the gallery figures: Brio–Wu, RJ4d, the GLM pulse, Orszag–Tang and its AMR run, the rotor, the field loop, and RJ2a on HLLD with primitive interpolation.