Appearance
FLUME
FLUME (Fluid Lorentz-coupled Unsteady Magnetohydrodynamic Equations) is the compressible-flow and magnetohydrodynamics application of ADAM. It solves the compressible Euler equations and the ideal MHD equations with high-order WENO finite differences on block-structured adaptive grids, on CPUs (MPI + OpenMP) and on GPUs (MPI + OpenACC), and it supersedes the deprecated CHASE.

What is implemented
| Area | Capabilities | Details |
|---|---|---|
| Physics | Compressible Euler; ideal MHD with mixed GLM divergence cleaning (or without control, for diagnostics); ideal gas | Physical models |
| Space | WENO flux splitting (weno, orders 3–9, characteristic or conservative); WENO interpolation + Riemann flux + high-order correction (weno-riemann, LLF/HLL/HLLC for Euler) | Numerical methods |
| Time | SSP and low-storage Runge–Kutta, CFL time step (with the GLM cleaning speed) | Numerical methods |
| Grid | Octree/quadtree of Cartesian blocks, initialisation-time AMR (box, gradient and solid markers), 2:1 coarse–fine faces with conservative reflux | Numerical methods |
| Geometry | Immersed boundary for static solids (Euler) | Numerical methods |
| Coupling | Multi-realm runs glued by a forest manifest | Numerical methods |
| Setup | 17 initial conditions (Riemann problems, vortices, Shu–Osher, Orszag–Tang, rotor, field loop, linear waves, exact viscous states, ...), 6 boundary conditions (no-slip walls included) | Initial conditions, Boundary conditions |
| Input | One INI file per realm, every value checked | Input reference |
| Output | XDMF + HDF5 checkpoints (ParaView), restart, slices, residual, conservation and div(B) histories | Input reference |
| Verification | Exact solutions, convergence orders, symmetry and conservation oracles on both backends | Verification gallery |
Status. Milestones M1 to M5 are complete: M1 Euler (#35), M2 ideal MHD with GLM (#41), M3 (#47) the Riemann-solver scheme (weno-riemann, Euler and MHD), the energy-consistent EGLM cleaning and a positivity-preserving limiter, and M4 (#65) the dissipative terms: compressible Navier–Stokes (viscosity and heat conduction, 4th-order conservative fluxes, no-slip walls) for every model and Ohmic resistivity for MHD, on both backends, conservative across AMR seams and realms (second order at a 2:1 seam, as the inviscid fluxes). M5 (#74) runtime AMR: both backends regrid during the run ([amr] frequency), with a conservative limited prolongation, combined markers (gradient, Löhner, box, solid) and restarts across regrids (setting it up).
Quick start
Build (FoBiS, from the repository root):
bash
fobis build --mode flume-cpu-gnu # CPU backend
fobis build --mode flume-fnl-nvf --varset local_nvf # GPU backend (OpenACC, NVIDIA HPC SDK)Run the Sod shock tube of the verification suite:
bash
cd src/tests/flume/verification/sod
mpirun -np 2 ../../../../../exe/adam_flume_cpu sod-x.iniThe run writes sod-x-<iteration>.xdmf (open it with ParaView) and the residual and conservation histories. The input reference explains every key of sod-x.ini. To run the same problem with the Riemann-solver scheme, change its [numerics] section to
ini
[numerics]
scheme_space = weno-riemann
reconstruction_variables = characteristic
riemann_solver = hllc
flux_correction = 6th
flux_correction_sensor = weno
reflux = .true../check.sh in the same directory runs the three directions and compares them with the exact solution.
Pages
- Physical models: equations, thermodynamics, eigensystems, GLM cleaning, time-step bound.
- Numerical methods: finite differences, WENO, flux splitting, Riemann solvers and correction, time integration, AMR and reflux, immersed boundary, multi-realm.
- Initial conditions and boundary conditions: formulas, keys, examples.
- Input reference: every section and key, with two complete inputs.
- Verification gallery: the test cases with figures and measured results.
- Source layout: common, CPU backend, FNL backend.
Known limitations
- Seam div(B). A cell-centred
cannot be kept divergence-free across a 2:1 coarse–fine face (Tóth & Roe 2002): the seams inject a truncation-level , which GLM keeps bounded; seam_max_divbin the div(B) history monitors it. - Positivity at very low plasma β. The floors alone do not hold it: without the positivity limiter the flux-splitting scheme stops on the Balsara–Spicer blast (
) at step 3 and on the Wu–Shu blast ( ) at step 1. With [numerics] positivity_limiter = cell(M3, #47) both schemes run both to the end (positivity limiter). On the flux-splitting path atthe point symmetry and the CPU–FNL agreement then hold only to a grid-scale instability (#77, MHD blast symmetry); where they matter, use scheme_space = weno-riemannwithriemann_solver = hlld. - GLM damping and reflux. With damping,
is not conserved across 2:1 faces; the 8 physical integrals are. - The GPU backend copies the coarse–fine seam faces to the host at every stage (the flux register is host-side), in one transfer for all the faces of a rank since #90.
- Inter-realm seams join cells of the same size (
mirror) or across a 2:1 jump (refined, #52; octrees only, quadtrees are refused, #71); all realms advance with one time step (no subcycling).