| Simulation is based on the "stable fluids" method of Stam [1,2]. For simplicity the application does not perform diffusion, but the used Advection algorithm causes it to diffuse anyway (due to bilinear interpolation of the 4 closest texels). 512×512 staggered grid is used (see Fig.1). (ux , uy , T, p ) are stored in RGBA textures with periodic boundaries. |
Yang Chenglin sent me kindly this remark
"I think when you advect something on staggered grid, different
velocities should be used for different values. The velocity used in
your code is just suitable for the density. To advect ux or uy,
different velocity is needed. This can explain why your droplet
simulation does not perform symmetrically enough (it flows right
slightly)."
It is a good explanation of the droplet asymmetry! Really, advection is not very accurate (e.g. predictor-corrector algorithm could be better). Don't you like to make more accurate fluid dynamics? I can put a link on your work here :)
One more JS based Oliver's simple fluid dynamics simulator. Less then 1 fps on 512x512 grid and 10 iterations.
[1] Jos Stam
Real-Time
Fluid Dynamics for Games and
Stable
Fluids
[2] Mark J. Harris
Fast Fluid Dynamics Simulation on the GPU
GPU Gems:
Chapter 38