As a basic OpenGL simulation, we represent fluids as particles and model their interactions. To do so, we store these particles in a uniform grid while imposing incompressibility, adding artificial pressure, and forcing particles apart when they collide. With the intention of getting things moving, we initialize the particles at a certain height and allow gravity to act upon them.
This project was completed in a lamentably brief amount of time with Arissa Wongpanich.
Update (March 2020): here are some GIFs from my new and improved particle-based fluid simulation project.