It β delay fps
Fluid dynamics. Cold and heavy fluid is blue and hot fluid is red. This script makes 2 It iterations every time step to calculate pressure.

2D fluid dynamics

The Navier-Stokes equations for the fluid velocity u and the equation for temperature T of the fluid are:
    t u = -(u·∇) u - (1/ρ)∇p + ν∇2u + f ,
    ∇·u = 0 ,
    ∂t T = -(u·∇)T + D∇2T + S .

where ν is the kinematic viscosity of the fluid, ρ ≡ 1 is its density, p is pressure, S is the thermal source, f = (0, -βT) is the force term, β is buoyancy.
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.
This application is simple and funny (not sure if it is accurate and efficient). But I think that 3D ink droplet dynamics simulation is more suitable for WebCL :)

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).

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

Simulations on GPU
updated 12 Aug 2011