GPU-accelerated, two-way coupled Euler-Lagrange solver for simulating subsea oil and gas blowout plumes in shallow water.
Combines Oceananigans.jl (non-hydrostatic Boussinesq LES) with custom KernelAbstractions.jl GPU kernels for Lagrangian particle tracking.
- Two-way momentum coupling via cell-sorted force deposition (collision-free, no atomics)
- 5-fraction composition-dependent oil dissolution (aliphatic + aromatic tracers)
- Gas dissolution with Henry's law pressure dependence
- Bin-based DSD injection from TAMOC with mass conservation
- One-way coupling mode (
--oneway) for comparison experiments - Scalable ambient velocity (
--uscale) for crossflow sensitivity studies - Mass budget tracking (released, active, surfaced, dissolved)
- 4 grid presets: low (0.6M) to ultra (37.7M cells)
solver/ Julia solver code (Oceananigans + GPU kernels)
analysis/ Python post-processing and diagnostics
plotting/ Visualization and animation scripts
hpc/ SLURM batch scripts and deployment helpers
docs/ Theory and development documentation (markdown)
cd solver
julia --project=. -e 'using Pkg; Pkg.instantiate()'
julia --project=. plume_multiphase.jl --cpu --low-res --duration=30 --outdir=testbash hpc/sync_to_ixachi.sh
# On Ixachi:
srun --partition=oc_gpu --gres=gpu:H200:1 --time=00:30:00 --pty bash
cd /LUSTRE/adomingu/Multiphase_Plume
julia --project=solver plume_multiphase.jl --duration=600 --outdir=output_runpython analysis/analyze_plume.py output_run
python plotting/animate_plume.py output_run --fps 10
python plotting/animate_particles_plume.py output_run| Flag | Default | Description |
|---|---|---|
--cpu |
GPU | Force CPU execution |
--low-res |
mid | Use 192x48x64 grid |
--oneway |
off | Disable particle-to-fluid feedback |
--grid=PRESET |
mid | low / mid / high / ultra |
--duration=SEC |
300 | Simulation time (seconds) |
--uscale=VAL |
1.0 | Scale ambient velocity U(z) |
--outdir=DIR |
output_multiphase | Output directory |
See julia --project=solver plume_multiphase.jl --help for all options.
| File | Contents |
|---|---|
plume_multiphase.nc |
Eulerian fields (u, v, w, T, S, c, c_ali, c_arom, tke) |
particles.zarr |
Lagrangian trajectories (x, y, z, d, mass, composition, type) |
mass_budget.csv |
Mass budget time series |
analysis_report.txt |
Summary statistics |
Julia (>= 1.10): Oceananigans, CUDA, KernelAbstractions, NCDatasets, NPZ, Zarr, StructArrays
Python (>= 3.9): numpy, xarray, zarr, matplotlib, cartopy (for maps)
Nohoch Alfa platform, Cantarell complex, Bay of Campeche (19.70 N, 92.10 W). 50 m depth, Maya crude oil (API 21.3), methane gas, GLORYS12 winter ambient profiles, TAMOC-derived droplet size distributions.
- Theory — governing equations, particle physics, coupling algorithm
- Development — code review, corrections, results, known issues
Dominguez, A., Sheinbaum, J., Socolofsky, S.A. (2026). GPU-accelerated two-way coupled Euler-Lagrange simulation of subsea oil and gas blowout plumes in shallow water. Ocean Modelling (in preparation).