delay framerate:fps
Use your fingers or mouse to control the model (hold shift key or use mouse wheel to zoom it). Canvas is matched to your browser window.

# Shallow water

 The shallow-water (or Saint-Venant) equations are     ht + ux + vy = 0,     ut + (u2/h + gh2)x + (uv/h)y = 2ghHx ,     vt + (uv/h)x + (v2/h + gh2)y = 2ghHy ,
here h(x,y, t) denotes the thickness of the water layer at point (x, y) at time t, H(x,y) is the bottom topography, (u, v) is the mass-flow of the water layer, 2g is the gravitational acceleration and t,x,y subscripts denote partial derivatives. The shallow-water equations are derived from the depth-averaged incompressible Navier-Stokes equations for the case where the surface perturbation is much smaller than the typical horizontal length scale.
The simplest possible scheme is the first-order Lax-Friedrichs scheme
Qx,y+1 = (Qx+1,y + Qx-1,y + Qx,y+1 + Qx,y-1)/4 + Δt Sx,y
+ [F(Qx+1,y) - F(Qx-1,y)]Δt/2Δx + [F(Qx,y+1) - F(Qx,y-1)]Δt/2Δy

This is a very robust scheme, which unfortunately gives excessive smearing of nonsmooth parts of the solution.

The main fragment shader is a little lengthy. You can see it in the source of this page.

[1] T.R. Hagen, J.M. Hjelmervik, K.-A. Lie, J.R. Natvig, M. Ofstad Henriksen
Visual simulation of shallow-water waves Simulation Modelling Practice and Theory 13 (2005) 716-726
[2] Miguel Lastra, Jose M. Mantas, Carlos Urena, Manuel J. Castro, Jose A. Garcia-Rodriguez
Simulation of shallow-water systems using graphics processing units
Mathematics and Computers in Simulation 80 (2009) 598-618
[3] Trond Runar Hagen, Martin O. Henriksen, Jon M. Hjelmervik, and Knut-Andreas Lie
How to Solve Systems of Conservation Laws Numerically Using the Graphics Processor as a High-Performance Computational Engine, 2005

Simulations on GPU
updated 4 Jan 2011