This page links to contain various codes I have developed and/or used both for teaching and research. Most of the codes used in my book, Atmospheric and Oceanic Fluid Dynamics (see link in the column at left) will eventually be made available, as well as links to various codes on github by myself and others. Many of the codes are in Python.

You are welcome to download, use and modify these codes in any way you wish. Just provide an appropriate acknowledgement to the codes, or the book, if you use them in teaching material or a publication.


This is a framework for the construction of idealized primitive-equation GCMs for Earth or other planets.

Quasi-Biennial Oscillation (QBO)

Solves the Plumb model or the Holton-Lindzen model of the QBO, as in Chapter 17 of AOFD.

Geostrophic Adjustment

Essentially a linear shallow-water code, used in Chapter 3 of AOFD.


Solves a diffusive-advection-condensation equation with a given velocity field, used in Chapter 18 of AOFD.

Barotropic vorticity equation

A pure-python (but still quite fast) code to solve the barotropic vorticity equation, used in Chapters 11 and 12 of AOFD.

The M-equation

A code that solves the nonlinear fourth-order M-equation in one dimension, giving an internal thermocline, as in Chapter 20 of AOFD.

Mountain waves

A code that solves for steady flow over a mountain ridge, as in Chapter 7 of AOFD.

Matsuno-Gill models

Codes that solve steady Matsuno-Gill type problems, giving the tropical response to heating in a shallow water model, as in Chapter 8 of AOFD.

ODE solver

A simple code to step forward a system of ODEs, such as the Lorenz equations as in Chapter 11 of AOFD.

Still to come:

- Miscellaneous other codes used for drawing various figures in the AOFD book.
- Links to github and similar sites where various research codes are housed.
- And more.