Computational studies and engineering systems, with methods, results, evaluation settings, and limitations in each case study.
Project portfolio
16 projects
Research figure · open case study for contextScientific ML · Model reduction
Reduced models & neural operators
Research implementation
Comparing fast approximations of nonlinear transport.
ROM error: 0.152% in-distribution; 1.7% on the tested unseen initial-condition family.
Read case study →
Research figure · open case study for contextDynamical systems · Uncertainty
Data assimilation for chaotic Lorenz-96
Research implementation
Estimating chaotic system states from noisy observations.
Localisation reduces RMSE from 4.63 (a diverged unlocalised filter) to 0.41, below the observation noise (10 seeds).
Read case study →
Research figure · open case study for contextM.Sc. thesis · Applied mathematics
Optimal mixing of passive scalars
2021 thesis · resolution study extended in 2026
Reproducible pseudo-spectral study of optimal passive-scalar mixing.
Extended to N=512: the apparent resolution dependence of the fitted mixing exponent is primarily a moving-fit-window effect; on fixed time windows it converges at about second order.
Read case study →Applied ML · Generative AI
LLM systems & model compression
Applied ML collection
Building and evaluating practical language-model systems.
FinBERT compression: distillation recovers accuracy to within 0.7 points of the baseline after layer dropping; absolute scores are optimistic because the test split likely overlaps the baseline's fine-tuning data.
Read case study →
Research figure · open case study for contextInverse problems · Imaging
Sparse-view photoacoustic reconstruction
Research implementation
Reconstructing images from sparse acoustic measurements.
U-Net: +4.9 dB (16 sensors) and +3.2 dB (64) PSNR over calibrated time-reversal on 400 test images; Tikhonov with a noise-matched weight scores higher when the forward model is exact, and its lead shrinks under model error.
Read case study →
Research figure · open case study for contextInverse rendering
Differentiable material optimisation
Research implementation
Testing which surface-material properties multi-view renderings can identify.
Fits synthetic training renders (normalised error 0.15) but not held-out views (0.76, where 1.0 is a black image); material maps are not reliably identified.
Read case study →
Research figure · open case study for contextCFD · Finite elements
Finite-element cylinder-flow benchmarks
Research implementation · validation limitations documented
Measuring solver accuracy on standard cylinder-flow problems.
Verified O(h³)/O(h²) velocity convergence; complete unsteady benchmark reproduction is not claimed.
Read case study →Industry · Aviation analytics
Flight data monitoring dashboard
Industry work · retrospective evaluation
Helping analysts explore recorded flights and flight phases.
0.999 weighted F1 in row-level cross-validation, measured against PositionAssigner-derived labels, not verified flight phases; no flight-, aircraft- or time-held-out evaluation.
Read case study →
Research figure · open case study for contextFinite elements · Optimisation
Topology optimisation with verified FEM
Research implementation · validation limitations documented
Finding material layouts that resist loading with less material.
Cantilever compliance: 617.9 → 101.4 after 150 iterations; the mesh study is not yet quantitatively converged.
Read case study →
Research figure · open case study for contextCFD · Reduced-order modelling
Navier–Stokes & reduced-order modelling
Research implementation
Accelerating repeated simulations of incompressible flow.
38.5× online speed-up at <0.1% mean state error on the training trajectory (rank 16).
Read case study →
Novel-view rendering comparisonNeural rendering
NeRF & TensoRF from scratch
Research implementation
Synthesising new views of a scene from posed images.
On a synthetic sphere scene: TensoRF 16.7 dB test PSNR versus 13.7 dB for NeRF (one seed, unmatched budgets).
Read case study →
Historical value-only formulation · seed 42Scientific ML · Numerical PDEs
Physics-informed advection–diffusion
Research implementation
Solving transport equations using physics-based training losses.
Derivative mismatch fell 7–38×; global solution accuracy did not improve reliably.
Read case study →
Research figure · open case study for contextInverse problems · Uncertainty
Bayesian Darcy permeability inversion
Research implementation · validation limitations documented
Recovering underground permeability from pressure observations.
0.59% sampler verification error on a linear-Gaussian reference; full PDE posterior mixing remains limited.
Read case study →
Research figure · open case study for contextCFD · Phase change
Phase-field multiphase flow
Research implementation · validation limitations documented
Simulating coupled flow, heat transfer, and phase change.
0.079% interface-position error in the dedicated 1D Stefan test; physical 3D validation is pending.
Read case study →
Training and model-selection curvesMedical imaging
3D liver segmentation
Research implementation · validation limitations documented
Segmenting liver anatomy in volumetric CT images.
Dice 0.9886 on centre-cropped model-selection volumes; independent full-volume evaluation is pending.
Read case study →Personal prototype · Signal processing
Aircraft engine audio monitoring
Personal prototype
Estimating engine behaviour from audio recordings.
Prototype tested on Tecnam P92 recordings; no tachometer ground truth, and 3 of 14 chunks (21%) of one recording pick the wrong engine order.
Read case study →Additional Technical Work
- Image Denoising (ResNet): Residual Channel Attention Blocks for greyscale denoising, trained on random noise levels; 33.71 dB PSNR / 0.918 SSIM at σ = 0.09 on 1,000 LFW images that also informed early stopping, so not a strictly held-out test.
- Vending Machine Failure Prediction: predictive ML on telemetry and transaction logs across roughly 150 machines.
- Prediction API: FastAPI + PostgreSQL model-serving deployment with Docker Compose, Terraform (AWS), and a CI/CD pipeline.
- Whole-Body Diffusion Generator: IP-Adapter FaceID and SDXL face-guided portrait generation on serverless GPU, a 2026 modernisation of the InsetGAN pipeline built during the Fellowship.AI internship.
- Image Inpainting (TV Regularisation): Douglas-Rachford optimisation for variational image restoration.
- Dipole Subsurface Scattering: differentiable dipole BSSRDF parameterised for all six Fitzpatrick skin types.
- nano-gpt: a GPT-style transformer language model built from scratch in PyTorch, trained character-level on Tiny Shakespeare.
- Roof Segmentation (U-Net): aerial image segmentation for rooftop detection from satellite imagery.
- Multi-Label Image Classification: EfficientNet-B3 on Pascal VOC 2012 with mixed-precision training and OneCycleLR scheduling.