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
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
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
Discourse
YouTube
arXiv
Star History
Last modified: May 03, 2024. Built with Franklin.jl