Skip to content

FLUME Common ​

The common/ directory contains the backend-independent modules shared by the CPU and FNL backends of FLUME. Following the PRISM design, every type defined here is aggregated into flume_common_object, the base type both backends extend. The pointwise libraries (*_library.F90) are pure, take explicit-size arguments and are tagged !$acc routine seq + !$omp declare target, so the CPU loops and the GPU kernels call the same source.

Status: development (milestones M1 Euler, M2 ideal MHD, M3 Riemann scheme / EGLM / limiter, M4 dissipative terms and M5 runtime AMR, issue #74, complete).

Modules ​

FileContent
adam_flume_parameters.F90Variable indexes (conservative IQ_*, auxiliary IA_*), model ids, accepted option values, strip_control
adam_flume_physics_object.F90[physics]: physical model (euler, mhd-ideal), cp, cv, variable counts; primitive-to-conservative dispatch
adam_flume_dissipation_object.F90[physics] dissipative coefficients (issue #65): viscosity, conductivity, resistivity, each as a coefficient or its number, and the power-law viscosity
adam_flume_dissipation_library.F90Pointwise dissipative physics shared by both backends: the viscous and heat-conduction flux of a direction, the Ohmic flux (MHD), the diffusivity of the time-step limit
adam_flume_mhd_object.F90[mhd]: divergence control (glm, none), GLM speed, damping and check, div(B) monitor, positivity floors
adam_flume_numerics_object.F90[numerics]: scheme_space (weno, weno-riemann), reconstruction_variables, Riemann solver, flux correction and sensor, reflux, positivity_limiter, dissipative_order
adam_flume_euler_library.F90Pointwise Euler physics: conversions, fluxes, Roe average and eigenvectors, flux splitting, face states, LLF/HLL/HLLC Riemann solvers
adam_flume_mhd_library.F90Pointwise ideal MHD physics: conversions, fluxes, fast speed, Roe–Balsara eigensystem (with and without GLM), flux splitting
adam_flume_mhd_riemann_library.F90MHD face states and Riemann solvers (LLF, HLL, HLLD; exact GLM subsystem) of weno-riemann
adam_flume_bc_object.F90[bc_*]: boundary condition types (extrapolation, inflow, inviscid wall, no-slip and isothermal walls, periodic), inflow states, wall velocities and temperatures; wall_noslip_ghost (the no-slip ghost state); realm_edge_face, realm_edge_donor (the face condition and the donor of a ghost at a realm edge or corner, shared by the CPU and FNL backends)
adam_flume_ic_object.F90[initial_conditions]: 17 initial conditions (uniform, isentropic vortex, Riemann regions, Shu–Osher, rotated Riemann, GLM pulse, div(B) peak, MHD linear wave, CPAW, magnetised vortex, Orszag–Tang, rotor, field loop, linear, sine wave, Couette, Becker shock); init-time AMR passes
adam_flume_time_object.F90[time]: CFL, iteration and time limits
adam_flume_diagnostics_object.F90[diagnostics]: conservation (and div(B)) history cadence
adam_flume_common_object.F90flume_common_object: initialization and cross-section checks, AMR markers (box, gradient, solid), seam flux accumulation for reflux, immersed-boundary spacing, restart, slices, auxiliary and MHD derived fields
adam_flume_common_library.F90Barrel re-export of all common modules

The user documentation (models, numerics, input reference, verification gallery) is in docs/applications/flume/.

License ​

FLUME is part of the ADAM framework, released under the GNU Lesser General Public License v3.0 (LGPLv3).

Copyright (C) Andrea Di Mascio, Federico Negro, Giacomo Rossi, Francesco Salvadore, Stefano Zaghi.