SpeedyWeather: Play atmospheric modelling like it's LEGO
SpeedyWeather.jl is a global atmospheric model with simple physics developed as a research playground with an everything-flexible attitude as long as it is speedy. It is easy to use and easy to extend, making atmospheric modelling an interactive experience -- in the terminal, in a notebook or conventionally through scripts. With minimal code redundancies it supports
Dynamics and physics
- Different physical equations (barotropic vorticity, shallow water, primitive equations, with and without humidity)
- Particle advection in 2D for all equations
- Tracer advection in 2D/3D that can be added, deleted, (de)activated anytime
- Physics parameterizations for convection, precipitation, boundary layer, etc.
Numerics and computing
- Different spatial grids (full and octahedral grids, Gaussian and Clenshaw-Curtis, HEALPix, OctaHEALPix)
- Different resolutions (T31 to T1023 and higher, i.e. 400km to 10km using linear, quadratic or cubic truncation)
- Different arithmetics: Float32 (default), Float64, and (experimental) BFloat16, stochastic rounding a very fast and flexible spherical harmonics transform library SpeedyTransforms
User interface
- Data visualisation: 2D, 3D, interactive (you can zoom and rotate!) powered by Makie
- Extensibility: New model components (incl. parameterizations) can be externally defined
- Modularity: Models are constructed from its components, non-defaults are passed on as argument
- Interactivity: SpeedyWeather.jl runs in a notebook or in the REPL as well as from scripts
- Callbacks can be used to inject any piece of code after every time step, e.g. custom output, event handling, changing the model while it's running and Julia will compile to these choices just-in-time.
RSE Support has been provided in the form of development time in implementing GPU acceleration, in the first case the spectral transform – a major bottleneck – and then different specific kernels of the simpler computational model. The overall aim is to accelerate the whole computational model, including the physics parameterisations and the model core, and provide major speedups for users running on platforms with any available GPU!
Documentation
RSE: Jack Leland
Public repos: https://github.com/SpeedyWeather/SpeedyWeather.jl
Collaborators: Milan Klöwer, Atmospheric Physics
Publications
https://joss.theoj.org/papers/10.21105/joss.06323