Van Gogh meets Munch: An airfoil in a channel
Channel: Nils Berglund
Date: 2022-12-07

Edit: I added the reference to painters in the title following a comment. 
In this variant of the simulation https://youtu.be/-r8EwV5xAvo , which showed an incompressible Euler flow around an airfoil-shaped obstacle, the boundary conditions have been changed. The top and bottom boundaries of the simulated region are now reflecting, which prevents the formation of upward and downward flows of the fluid. Note that some numerical instabilities appear in regions where the speed of the fluid is particularly large. 
The video has four parts, showing the same simulation with two different color schemes and two different speeds:
Vorticity: 0:00
Vorticity (log scale): 1:32
Timelapse of vorticity: 3:04
Timelapse of vorticity (log scale): 3:35
In the all parts, colors depend on the vorticity of the velocity field, which measures how much it rotates. In the second and fourth part, a logarithmic scale is used. The velocity field of the fluid is materialized by 1000 tracer particles, whose initial position is distributed randomly over the simulation region. In the last two parts, the playback speed has been multiplied by 3. 
The incompressible Euler equations describe the velocity field of a non-viscous, incompressible fluid. They are strongly non-linear, because of the presence of a so-called advection term in what is known as the material derivative. Another difficulty in solving these equations numerically is the incompressibility condition, which requires the velocity to remain divergence-free. Since most numerical schemes will not conserve the divergence, a common approach is to "project" the solution on the space of divergence-free flows after each integration step. 
I used here a different approach, based on the so-called stream function. By writing the velocity as the curl (rotational) of a stream function, directed along the z-axis perpendicular to the plane of the two-dimensional fluid, one ensures that the velocity is always divergence-free. The incompressible Euler equations are then equivalent to a partial differential equation for the stream function, and a Poisson equation linking stream function and vorticity. Since I had no solver for the Poisson equation at hand, I used a forced heat equation for the evolution of the vorticity, which admits the solution of the Poisson equation as a stationary solution. This induces additional errors, which are hopefully not too important. There is also a weak dissipation term, proportional to the Laplacian of the stream function, to prevent numerical blow-up. 
This simulation is strongly inspired by the description on the page http://ammar-hakim.org/sj/je/je13/je13-incomp-euler-2d.html . The initial state for the stream function has the form delta*cos(ax) + g(y). The function g is given by g(y) = 1/(rho*cosh((y+b)/rho)^2) for y between 0 and 1/2, and g(y) = -1/(rho*cosh((y-b)/rho)^2) for y between -1/2 and 0, and is then repeated periodically. There are periodic boundary conditions on the shown rectangular simulation region. 

Render time: 1 hour 23 minutes
Color scheme: Part 1 -  Plasma by Nathaniel J. Smith and Stefan van der Walt
Part 2 - Inferno  by Nathaniel J. Smith and Stefan van der Walt
https://github.com/BIDS/colormap

Music: "Late Nights" by Causmic@Causmic

See also https://images.math.cnrs.fr/Des-ondes-dans-mon-billard-partie-I.html for more explanations (in French) on  a few previous simulations of wave equations. 

The simulation solves the 2D incompressible Euler equation for the stream function and vorticity. The solution of the Poisson equation for the vorticity is approximated by the solution of a forced heat equation, having the solution of the Poisson equation as stationary solution.
C code: https://github.com/nilsberglund-orleans/YouTube-simulations
https://www.idpoisson.fr/berglund/software.html
Many thanks to Marco Mancini and Julian Kauth for helping me to accelerate my code!