The shallow water equations are a set of hyperbolic partial differential equations, consisting of three coupled equations. They describe the time-dependent motion of a free water surface under the influence of gravity, and can be used to simulate events such as dam breaks, tsunamis, floods, and storm surges, by adding source terms for bed slope and bed friction.
Because the equations are hyperbolic, we can use explcit time-stepping methods to evolve the solution in time instead of implicit methods. While implicit methods rely on efficient implementations of linear algebra operations, explicit methods reduce the problem to a set of stencil operations that are embarrassingly parrallel, and thus well suited for the execution method of GPUs. However, there is a trade-off, since explicit methods do not allow as large time-step sizes as implicit methods.
Our shallow water simulator implements the Kurganov-Petrova scheme, which is a second-order accurate well-balanced finite volume scheme with central-upwind fluxes. The scheme furthermore supports dry-states in a way well suited for GPUs. When implemented on the GPU, our simulator achieves faster-than-real-time performance, as illustrated in the video bellow.
A feature of our implementation is that we have performed thorough verification and validation, whithout which it would simply be able to handle toy models. Using efficient single precision floating point operations, our implementation is capable of accurately predicting real-world floods, as illustrated by our simulation of the 1959 Malpasset dam break. The Malpasset dam break occured on december 2nd, when the dam suddenly exploded, giving rise to a 40 meter high wall of water travelling down the valley towards Fréjus at up-to 70 km/h. The event was devastating, causing over 400 casualties, and $68 million in damages. The dam break is also unique, as data from a police survey of maximum water elevation along the valley right after the event, and data from a 1:400 recreation exist.
Published November 17, 2009