In this project I recreate Fedkiw, Stam, and Jensen's paper Visual Simulation of Smoke from scratch. This includes handling the traditional algorithms requisite in graphics fluid simulations, namely, semi-Langrangian advection, force updates, and pressure projection to model the inviscid, incompressible Euler equations. My particular implementation includes an incomplete Cholesky-preconditioned conjugate gradient solver, vorticity confinement, and a tri-linear interpolation scheme for sampling quantities on a MAC grid.
In the video below, smoke is confined inside a cube. In the final clip, a bottleneck chimney restricts flow from the lower half of the cube to the upper half. You can read more about my implementation here.