[ANN] Oceananigans.jl: Fast and friendly fluid dynamics on CPUs and GPUs

Oceananigans.jl is a fast and friendly package for three-dimensional incompressible fluid dynamics on regular grids that features

  • Fast, pure Julia GPU and multi-threaded execution (thanks to @vchuravy for KernelAbstractions.jl and @maleadt for CUDA.jl!) with an FFT-based pressure solver for periodic and bounded domains.
  • Configurable physics: high-order advection schemes including WENO, arbitrary numbers of tracers, Coriolis forces, buoyancy models, Lagrangian particle tracking, turbulence closures for large eddy simulation and “mesoscale” ocean simulation.
  • Math-like specification system for forcing functions, boundary conditions, and diagnostic calculations / output with JLD2 and NetCDF; fun stuff like ω = ComputedField(∂x(v) - ∂y(u)).

We’re designing Oceananigans.jl to be fast and flexible enough for hardcore research yet simple enough for students and first-time programmers. It’s being developed as part of the Climate Modeling Alliance project.

Some resources:

Let us know if you encounter any issues or need help setting up a simulation by opening a GitHub issue or joining the #oceananigans channel on the Julia Slack (feedback, thoughts, and contributions also very welcome!).

Eye candy

Shout out to @sdanisch for his help on visualizing 3D output with Makie.jl! And to @sandreza for this movie!

Figure from the JOSS paper

Figure from a recent preprint