// selected-work

Projects & Case Studies

Selected work across scientific software, industrial CFD/DEM/SPH simulation, and GPU-accelerated code development. Projects involving proprietary work are described at a high level.

[ add simulation figure ]
Scientific Software CPC, 2024

SHDEM: Non-Spherical Particle DEM in LAMMPS

Developed a spherical harmonic-based DEM package inside LAMMPS for non-convex, arbitrarily shaped particles relevant to industrial powders. Implemented contact detection for non-spherical geometries; parallelised with MPI and OpenMP for large-scale HPC. Collaborated with EPCC and Sandia National Laboratory. Published in Computer Physics Communications (2024).

LAMMPSC++MPI/OpenMPDEMSpherical Harmonics
doi:10.1016/j.cpc.2024.109290 →
[ add simulation figure ]
Energy · Industrial Client STFC, 2024–

GPU-Accelerated SPH–DEM for Hydropower Turbine Design

Led SPH simulation of a novel turbine concept for an industrial client using DualSPHysics on GPU. The model captured air–water multiphase free-surface flow and coupled fluid–solid interaction for the rotating geometry via Project Chrono. Also contributed to a gearbox lubrication SPH project modelling oil dynamics around rotating gears.

DualSPHysicsProject ChronoSPH–DEMGPUMultiphase
[ add simulation figure ]
Energy & CCUS · Industrial STFC, 2024–

OpenFOAM Solver for CO₂ Direct Air Capture & Industrial Absorption

Implemented a dynamic Langmuir adsorption boundary condition in OpenFOAM with scalar transport and mass transfer coupling for CO₂ direct air capture (DAC). Also developed reactive multiphase CFD for industrial CO₂ absorption into NaOH — gas–liquid flow with reactive species transport. Results used directly by UK industrial partners for scale-up decisions.

OpenFOAMReactive CFDMass TransferGas–LiquidCCUS
[ add map / output figure ]
Geospatial · GPU Computing STFC

R → JAX/GPU: Geospatial Epidemiological Model on Wirral Data

Ported a legacy R-based epidemiological simulation to Python with JAX/XLA, operating on real geographical boundary and demographic data for the Wirral peninsula. Extended the original model with new physical features beyond the R implementation. GPU acceleration via JAX dramatically reduced parameter sweep runtimes — enabling comprehensive sensitivity analyses on spatially resolved data that were previously impractical in the R version.

JAX/XLAPythonRGPUGeospatialEpidemiology
[ add simulation figure ]
Pharmaceuticals · Industrial Pfizer, 2023–24

DEM Calibration & Blending Optimisation for OSD Manufacturing

Developed and validated DEM workflows for pharmaceutical powder blending (EDEM) and tablet compaction (Rocky) at realistic scale — up to 10M+ particles. Calibrated cohesive contact models against experimental data. Designed HyperStudy DoE campaigns to map mixing performance; built Python pipelines (Pandas, Scikit-learn) for data-driven model calibration. Trained 3–5 engineers from scratch on EDEM.

EDEMRockyHyperStudy DoEPythonDEM Calibration
[ add benchmark figure ]
HPC · Met Office Collaboration STFC, 2024–

GPU Porting: NEMO Ocean Model & Scientific Codebases

Ported performance-critical sections of the NEMO ocean circulation model to GPU using OpenACC — a large-scale production-grade Fortran codebase — in collaboration with the Met Office. Separately, ported a vector-borne disease epidemiological model to JAX/XLA. Both projects involved profiling, bottleneck identification, and introducing GPU-parallel data structures.

OpenACCJAX/XLAFortranGPU TransformationSLURM
[ add simulation figure ]
Research Computing Soft Matter, 2021

Self-Propelled Particle Dynamics in LAMMPS (PhD)

Extended LAMMPS in C++ with custom fixes for self-propelled (active matter) particle dynamics. Developed stochastic simulation frameworks to study collective behaviour of active rod systems in soft substrates — including morphodynamics, dense suspension rheology, and substrate interaction.

LAMMPSC++Stochastic ModellingActive Matter
doi:10.1039/d1sm00860a →

// adding figures to project cards

Each card above has an image slot. To add a figure, place an <img src="images/your-figure.png" class="w-full h-full object-cover"> inside the .img-slot div for that card.