Navier-Stokes is a method for calculating fluid dynamic in real time. This simulation uses forward Euler integration, but it would probably accumulate error over time. It renders and updates 40,000 particles in real time with the use of four threads. It uses windows event system to handle the synchronization between all threads. It uses the Open GL rendering API, and is coded in C++.
The application also sorts the particles into a quad tree each frame. This information is used for collision detection and resolution. If a multi-threaded approach wasn’t implemented, this would not be possible with the amount of particles that are being rendered.