Numerical Codes

I use a variety of numerical tools in my work. This pages contains links to various software packages written by myself and others.

QGDipoles.jl

I have recently written a Julia package to calculate dipolar vortex solutions to various quasi-geostrophic models, including the equivalent barotropic model, multi-layer QG and surface QG. The original MATLAB version of this code is available here.

Spectral Methods for Coastal Trapped Waves

This MATLAB code uses spectral methods to determine coastal-trapped wave solutions in the presence of complicated bottom topography, stratification and background flow. The method and applications are outlined here in joint work with Ted Johnson. I am looking to implement this method in an open source language, contact me if this is something you’d find useful.

GeophysicalFlows.jl

I have contributed to GeophysicalFlows, a spectral solver for quasi-geostrophic models which utilises GPUs for fast computation. GeophysicalFlows is written in Julia and built on FourierFlows.jl.

Machine Learning for Submesoscale Modelling

During the NFFDy Summer School in Cambridge in 2023, I worked with Lois Baker and Carolanne Vouriot using machine learning techniques to estimate up/downwelling in submesoscale simulations. This directory contains Julia setup files for submesoscale simulations in Oceananigans, MATLAB data analysis files, and Python files for implementing a convolutional neural network using PyTorch. Why use one language when you can use three? A writeup of the project is available here.

Dedalus

I am a frequent user of the Python package Dedalus, a general spectral PDE solver. Some of my example Dedalus scripts can be found here. Dedalus scripts relating to my published work are available upon request though are likely written in Dedalus v2, which has now been mostly superseded by v3.

VisualPDE

I have worked with Ben Walker and Andrew Krause to create VisualPDE examples of ocean spills and the rotating shallow water equations for mathematics outreach.