How to Simulate Billiards and Similar Systems
Abstract
An Ncomponent continuoustime dynamic system is considered whose components evolve independently all the time except for discrete asynchronous instances of pairwise interactions. Examples include colliding billiard balls and combat models. A new efficient serial eventdriven algorithm is described for simulating such systems. Rather than maintaining and updating the global state of the system, the algorithm tries to examine only essential events, i.e., component interactions. The events are processed in a nondecreasing order of time; new interactions are scheduled on the basis of the examined interactions using preintegrated equations of evolutions of the components. If the components are distributed uniformly enough in the evolution space, so that this space can be subdivided into small sectors such that only O(1) sectors and O(1) components are in the neighborhood of a sector, then the algorithm spends time O(log N) for processing an event which is the asymptotic minimum. The algorithm uses a simple strategy for handling data: only two states are maintained for each simulated component. Fast data access in this strategy assures the practical efficiency of the algorithm. It works noticeably faster than other algorithms proposed for this model.
 Publication:

Journal of Computational Physics
 Pub Date:
 June 1991
 DOI:
 10.1016/00219991(91)902227
 arXiv:
 arXiv:condmat/0503627
 Bibcode:
 1991JCoPh..94..255L
 Keywords:

 Condensed Matter  Materials Science;
 Computer Science  Data Structures and Algorithms;
 Mathematics  Dynamical Systems
 EPrint:
 29 pages. 10 figures