QGDipoles.jl

Documentation and examples for QGDipoles.jl by Matthew N. Crowe.

What is QGDipoles.jl?

QGDipoles.jl is a Julia package which provides a series of functions that allow users to easily generate dipolar vortex solutions to two of the most commonly used QG models; the multi-layer QG (LQG) system and the surface QG (SQG) system. Solutions for the three-dimensional quasi-geostrophic model and magneto-quasi-geostrophic model will be implemented in the future.

QGDipoles.jl is intended for use by those researching vortex dynamics in strongly rotating flows, in particular for researchers in physical oceanography and atmospheric dynamics. It may be used for semi-analytical studies of steady vortex solutions or to initialise a simulation with a steadily propagating, balanced vortex. These vortex solutions may be used as initial conditions in full primitive equation models as well as QG models since they exist in QG balance so will not generate strong initial transients.

QGDipoles.jl is designed to be consistent with the framework of GeophysicalFlows.jl[4], a Julia package that contains modules for running LQG and SQG simulations on CPUs or GPUs. As such, QGDipoles.jl accepts grid inputs generated using the TwoDGrid function from FourierFlows.jl and can generate solution arrays on both CPUs and GPUs using CUDA.jl. However, FourierFlows.jl and GeophysicalFlows.jl are NOT required to use this package as an alternative grid structure is available (created using CreateGrid), which uses the same field names as the eqivalent FourierFlows.jl function.

Full documentation exists with examples covering a range of LQG and SQG solutions and demonstrating how QGDipoles.jl may be integrated with GeophysicalFlows.jl.

How does QGDipoles.jl work?

This package is based on the semi-analytic theory of dipolar vortices derived in Johnson & Crowe 2023[1] and Crowe & Johnson 2023[2] for SQG solutions and Crowe & Johnson 2024[3] for LQG solutions. Details of the numerical method and problem parameters can be found on the Methodology page. This code consists of an updated version of the MATLAB code released as supplementary material with Crowe & Johnson 2024[3] and incorporates (unreleased) functions for the SQG problem. For those interested in the original (LQG only) implementation, it can be found here.