Basic functionalities for a fluid solver were implemented such as external forces, Dirichlet boundary condition and the projection step for volume preservation. For self-advection, semi-Lagrangian interpolation was used. Improvements to the fluid solver were made by adding vorticity confinement and improved volume conservation.
Full course information: