GPU-resident 3D airblast solver for JWL-described explosives in air, built on AMReX block-structured AMR with embedded-boundary geometry imported directly from STL/OBJ.
Status: v0 scaffold. Nothing here produces a blast wave yet. The repository structure,
build system, day-0 design decisions, and the two-material Mie–Grüneisen mixture EOS
(with unit tests) are in place; the hydro core is stubbed and will be populated by forking
PeleC's MOL/EB machinery (see docs/DECISIONS.md, D2).
Five-equation diffuse-interface Euler (α, α₁ρ₁, α₂ρ₂, ρu, ρE) with both materials written in Mie–Grüneisen form so the isobaric mixture pressure closure is algebraic. MUSCL + HLLC, SSP-RK2 method of lines, block-structured AMR with subcycling. Geometry enters as an AMReX embedded boundary built from a watertight STL; loads are integrated on EB faces and mapped back to the source triangles. The detonation phase is run in 1D spherical / 2D axisymmetric at high resolution and remapped onto the 3D base grid before the shock reaches geometry. CPU build is the correctness target; CUDA/HIP/SYCL via AMReX's single-source backend is the performance target.
src/
eos/ IdealGas, JWL, MGMixture (header-only, device-callable) <- implemented
hydro/ MUSCL, HLLC, MOL RK2 <- stub
eb/ STL -> EB, redistribution, wall BC, face-load integration <- stub
remap/ 1D/2D detonation driver + 3D initialiser <- stub
io/ gauges, per-triangle loads (HDF5), plotfiles <- stub
pyblast/ preprocess (geometry repair, charge spec, gauges), orchestration, postprocess
inputs/ AMReX ParmParse example inputs
tests/ CPU unit tests (no AMReX dependency for EOS tests)
docs/ DECISIONS.md (day-0 decision memo), ROADMAP.md
git submodule update --init --recursive # pulls AMReX
cmake -B build -DBLASTGPU_GPU_BACKEND=NONE # CPU / correctness
cmake -B build -DBLASTGPU_GPU_BACKEND=CUDA # NVIDIA
cmake --build build -j
ctest --test-dir buildWindows: use WSL2 with CUDA passthrough. Native Windows and macOS are not v0 targets.
See docs/ROADMAP.md (M0–M4).
Not yet chosen. Decide before first external contribution — see docs/DECISIONS.md, D0.