"Impulse-based simulation is a new paradigm for the simulation of
physical systems, especially those which are hard to simulate
efficiently with traditional constraint-based methods. The key idea is
that all contact interactions between objects are affected through
collisions; even a block apparently at rest on a table actually
experiences many tiny, rapid collisions with the surface."
The serial version of Impulse consists of over 27,000 lines of C code written by Brian Mirtich. For its parallel implementation the code was converted to Split-C by Eric Paulos. There were various modifications and additions made to Impulse in Split-C for parallel execution. Many of these changes are discussed in the parallel section of this writeup. The parallel version of Impulse has been compiled and executed on both the CM5 and the SP1 architectures.
A classically difficult simulation example is that of a pool break. Brian Mirtich describes how Impulse handles this system correctly.
The impulse-based method avoids these problems by treating the mutual effects of the balls on each another as a series of closely spaced collisions. For this simulation, the racked balls (which were the size of standard pool balls) were initially placed 0.1 millimeters apart, already within each other's collision envelopes. Thus, when the cue ball strikes the rack, many collisions occur before the balls even begin to move. A movie of the simulation results by Brian Mirtich is here."