Skip to content

alexdominguezg10/Multiphase_Plume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multiphase Plume Solver

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.

Key Features

  • 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)

Structure

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)

Quick Start

Local (CPU, low-res test)

cd solver
julia --project=. -e 'using Pkg; Pkg.instantiate()'
julia --project=. plume_multiphase.jl --cpu --low-res --duration=30 --outdir=test

Ixachi H200 (GPU)

bash 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_run

Analysis

python analysis/analyze_plume.py output_run
python plotting/animate_plume.py output_run --fps 10
python plotting/animate_particles_plume.py output_run

CLI Options

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.

Output

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

Dependencies

Julia (>= 1.10): Oceananigans, CUDA, KernelAbstractions, NCDatasets, NPZ, Zarr, StructArrays

Python (>= 3.9): numpy, xarray, zarr, matplotlib, cartopy (for maps)

Scenario

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.

Documentation

  • Theory — governing equations, particle physics, coupling algorithm
  • Development — code review, corrections, results, known issues

References

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).

About

GPU two-way coupled Euler-Lagrange multiphase plume solver (Oceananigans.jl)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors