The smoke simulation is a fluid simulation based on the notes “Fluid Simulation – SIGGRAPH 2007 Course Notes” by Bridson and Muller . The simulation is a semi-Lagrangian method using the Marker-and-cell (MAC) grid method, first introduced by Harlow and Welch . The animation is governed by the Navier-Stokes equation for incompressible fluid simulation. The viscosity component is not considered in this simulation. The pressure projection solve is done using the preconditioned conjugate gradient. To make the projection computation faster, I implemented the modified incomplete cholesky algorithm. The speed up for a 30x30x10 grid was 2x (speed up increases with grid size).
The grid size for the simulation shown is 160 x 90 x 60. The time step for this simulation is 0.05 seconds. Rendering is done using OpenGL 3.2 and frames are captures using stbi 1.33 (external code). Simulation, render and frame capture took about 10 minutes per frame.