Fluid dynamics

Introduction

In order to simulate the motion of fluids (liquids and gasses), one has to solve the Navier Stokes Differential Equation. Solving those equations numerically, in a way that is both performant and accurate, is a difficult problem. While this is possible to do "manually" by using a package like DifferentialEquations.jl, there are higher-level alternatives that are tailored specifically for fluid simulations. It is generally reccomended to use such higher-level alternatives, when high performance and accuracy is the goal (as opposed to e.g. learning/teaching).

Packages

There are two Julia packages for fluid simulations, which at first glance both appear seem very good. However, this page sorely lacks input from someone who has used one (or either!) of the packages. If you know anything about what it is like to use them, please concider submitting a pull request. A guide to help you through the process can be found here

Oceananigans.jl

GitHub Repo stars deps Oceananigans Downloads
Stable Dev GitHub last commit (branch) version Coverage
From the README:

Oceananigans is a fast, friendly, flexible software package for finite volume simulations of the nonhydrostatic and hydrostatic Boussinesq equations on CPUs and GPUs. It runs on GPUs (wow, fast!), though we believe Oceananigans makes the biggest waves with its ultra-flexible user interface that makes simple simulations easy, and complex, creative simulations possible.

Oceananigans.jl is developed by the Climate Modeling Alliance and heroic external collaborators.

WaterLily.jl

GitHub Repo stars deps WaterLily Downloads
Stable Dev GitHub last commit (branch) version Coverage
From the README:

WaterLily.jl is a simple and fast fluid simulator written in pure Julia. This is an experimental project to take advantage of the active scientific community in Julia to accelerate and enhance fluid simulations.

WaterLily.jl solves the unsteady incompressible 2D or 3D Navier-Stokes equations on a Cartesian grid. The pressure Poisson equation is solved with a geometric multigrid method. Solid boundaries are modelled using the Boundary Data Immersion Method. The solver can run on serial CPU, multi-threaded CPU, or GPU backends.

References

Star History

This website is a community effort covering a lot of ever-changing information. It will therefore never be complete or without error. If you see something wrong, or have something to contribute, please see the "Contributing" section in the github repository.

Last modified: May 03, 2024. Built with Franklin.jl