1. Jason Sewall
  2. Nico Galoppo
  3. Georgi Tsankov
  4. Ming Lin
House/shock interaction Rigid body/shock interaction Cylinder with cap exploding Schlieren plot of bullet

We present an efficient method for visual simulations of shock phenomena in compressible, inviscid fluids. Our algorithm is derived from one class of the finite volume method especially designed for capturing shock propagation, but offers improved efficiency through physically-based simplification and adaptation for graphical rendering. Our technique is well suited for parallel implementation on multicore architectures and is also capable of handling complex, bidirectional object-shock interactions stably and robustly. We describe its applications to various visual effects, including explosion, sonic booms and turbulent flows.

Paper (in SCA 2008)

PDF (793K)



AVI (43MB, encoded with DivX)



Scaling of our method on a 16-core Intel machine for various problem sizes
Scaling of 25 cubed grid on multi-core Scaling of 50 cubed grid on multi-core
Scaling of 50 cubed grid on multi-core Scaling of bullet example on multi-core

We have constructed a number of scenarios that demonstrate the ability of our method to simulate visually interesting phenomena; details of these scene is given in the table below. These timings were collected on a single core of a laptop with a 2 Ghz Intel Core 2 Duo processor; each simulation used less than 500 MB of RAM.

For the purpose of demonstrating that our algorithm is amenable to parallelization on shared-memory architectures, we have used OpenMP to execute two essential computational kernels in separate work threads; the results are shown at right. Due to dimensional splitting, our Riemann solves are completely independent for each row in a computational sweeping plane along the simulation grid, as illustrated in; the update pass can be similarly parallelized. We have performed benchmarks of our parallel implementation of simulations with increasing grid size on an Intel Xeon machine with sixteen cores, each running at 3GHz. The performance of our algorithm, here measured in simulation frames per second, scales well with the number of threads.

Example scenarios

Information about example scenes simulated with our method on a single core
Scene Resolution Sim. fps Avg. timestep Total sim. time
Thumbnail of chambered explosion Blast chamber

An explosion in a confined space

120 x 80 x 120 1.56 1.4e-4 s 16.25 min
Thumbnail of rigid body-shock interaction Rigid bodies

A shock knocks over objects and reflects back

60 x 60 x 100 0.779 2.5e-4 s 29.93 min
Thumbnail of capped cylinder explosion Tower (with cap)

A capped tower of 600 bricks is blown apart from within

60 x 80 x 60 1.14 7.2e-4 s 30.21 min
Thumbnail of uncapped cylinder explosion Tower (without cap)

An uncapped tower of 600 bricks is blown apart from within

60 x 100 x 60 0.939 6.8e-4 s 51.74 min
Thumbnail of trinity explosion Trinity

The initial moments of the first atomic test

200 x 75 x 200 0.102 2.9e-5 s 32.88 min
Thumbnail of mushroom cloud Mushroom cloud

A distinctive clouds resulting from a large explosion

120 x 100 x 120 0.243 2.4e-2 s 57.74 min
Thumbnail of house-shock interaction House

A structure of 408 bricks is blown apart by a shock

100 x 100 x 100 0.310 4.6e-5 s 58.35 min
Thumbnail of bullet crossing sound barrier Projectile

A bullet-like object crosses the sound barrier, leaving a turbulent wake

250 x 100 x 100 0.191 1.0e-5 s 191.5 min