I used the following sources to write this simulation:

Real-time ink simulation using a grid-particle method - a method for real-time simulation of ink in water using a coarse-grained fluid simulation with a particle simulation on top.

Fast Fluid Dynamics Simulation on the GPU - a very well written tutorial about programming the Navier-Stokes equations on a GPU.

Stable Fluids - a paper about stable numerical methods for evaluating Navier-Stokes on a discrete grid.

By Amanda Ghassaei, code on Github.