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:
- Documentation (check out the 8 animated examples!)
- 8 minute video intro
- Oceananigans.jl Journal of Open Source Software (JOSS) paper
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