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

**URL:** <https://discourse.julialang.org/t/ann-oceananigans-jl-fast-and-friendly-fluid-dynamics-on-cpus-and-gpus/51459>\
**Category:** Package Announcements\
**Created:** [December 8, 2020, 1:44pm UTC](https://discourse.julialang.org/t/ann-oceananigans-jl-fast-and-friendly-fluid-dynamics-on-cpus-and-gpus/51459 "2020-12-08T13:44:39Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![PolarizedPoutine](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/polarizedpoutine/32/6067_2.png) [@PolarizedPoutine](https://discourse.julialang.org/u/PolarizedPoutine)\
**Post date:** [December 8, 2020, 1:44pm UTC](https://discourse.julialang.org/t/ann-oceananigans-jl-fast-and-friendly-fluid-dynamics-on-cpus-and-gpus/51459/1 "2020-12-08T13:44:40Z")

</div>

[Oceananigans.jl](https://github.com/CliMA/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](https://discourse.julialang.org/u/vchuravy) for [KernelAbstractions.jl](https://github.com/JuliaGPU/KernelAbstractions.jl) and[@maleadt](https://discourse.julialang.org/u/maleadt) for [CUDA.jl](https://github.com/JuliaGPU/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](https://github.com/CliMA) project.

Some resources:

- [Documentation (check out the 8 animated examples!)](https://clima.github.io/OceananigansDocumentation/stable/)
- [8 minute video intro](https://www.youtube.com/watch?v=kSbCYaB2KhQ)
- [Oceananigans.jl Journal of Open Source Software (JOSS) paper](https://joss.theoj.org/papers/10.21105/joss.02018)

Let us know if you encounter any issues or need help setting up a simulation by opening a GitHub issue or joining the [#oceananigans](https://julialang.slack.com/archives/C01D24C0CAH) 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](https://github.com/JuliaPlots/Makie.jl)! And to [@sandreza](https://github.com/sandreza) for this movie!

[![](https://global.discourse-cdn.com/julialang/original/3X/4/b/4b85b1d188661a6e807028b96a08beb02c8b9c3b.jpeg "Oceananigans.jl: eddying channel") ](https://www.youtube.com/watch?v=52GM3aO1HnE)

Figure from the [JOSS paper](https://joss.theoj.org/papers/10.21105/joss.02018)

 ![free_convection_and_baroclinic_instability](https://global.discourse-cdn.com/julialang/original/3X/d/4/d4087f3c3b405b035b35ae7991aa41dd752bf92e.jpeg)

Figure from a [recent preprint](https://www.essoar.org/doi/10.1002/essoar.10503838.1)

 ![figure_1_cropped](https://global.discourse-cdn.com/julialang/original/3X/2/f/2f44cbe78cbeabae9b4a6084bfb46e7fd76c9b2d.png)
