Appearance
FLUME
FLUME (Fluid Laboratory for Unsteady Multiphysics at Exascale) is the compressible-flow application of ADAM: compressible Euler, Navier–Stokes and ideal MHD with external gravity, self-gravity and sink particles, ideal, isothermal and barotropic gases, radiative cooling, passive scalars and immersed boundaries, solved with high-order WENO finite differences on block-structured adaptive grids (static and runtime AMR, multi-realm forests), on CPUs (MPI + OpenMP) and on GPUs (MPI + OpenACC, or OpenMP offload). It supersedes the deprecated CHASE.

What is implemented
| Area | Capabilities | Details |
|---|---|---|
| Physics | Compressible Euler (optionally with dual energy and up to 4 passive scalars); ideal MHD with mixed GLM or EGLM divergence cleaning (or without control, for diagnostics); ideal, isothermal or barotropic gas; viscosity, heat conduction and Ohmic resistivity; external gravity and self-gravity; optically thin radiative cooling; sink particles | 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, LLF/HLL/HLLD for MHD); cell-based positivity limiter | 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, AMR at initialisation and during the run (box, gradient, Löhner 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 | 25 initial conditions (Riemann problems, vortices, Shu–Osher, Orszag–Tang, rotor, field loop, linear waves, exact viscous states, atmospheres, self-gravitating spheres and clouds, ...), 7 boundary conditions (no-slip and isothermal walls, hydrostatic faces under gravity 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 M13 are complete:
| Milestone | Content |
|---|---|
| M1 #35 | compressible Euler |
| M2 #41 | ideal MHD with GLM |
| M3 #47 | the Riemann-solver scheme (weno-riemann, Euler and MHD), EGLM cleaning, the positivity-preserving limiter |
| M4 #65 | viscosity, heat conduction (no-slip walls) and Ohmic resistivity, conservative across AMR seams and realms |
| M5 #74 | runtime AMR ([amr] frequency, setting it up), restarts across regrids |
| M6 #68 | seam accuracy and divergence at 2:1 faces |
| M7 #73 | external gravity |
| M8 #81 | self-gravity, periodic and isolated, uniform and AMR (#87) |
| M9 #91 | dual energy (euler-de) and the Jeans refinement marker |
| M10 #92 | passive scalars |
| M11 #93 | optically thin radiative cooling |
| M12 #94 | sink particles |
| M13 #100 | isothermal and barotropic equations of state, Euler and MHD |
Every milestone runs on both backends.
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, quadtrees and binary trees, the seam normal to a refined axis, #71); all realms advance with one time step (no subcycling).