Billiard Ball Machine

Built a parallel implementation of a block cellular automaton. Implemented the movement of billiard balls in a toroidal world.
Inserted the collisions between balls and the bouncing with rigid structures. Inserted buttons in the
UI to allow the pause, run forward or backward of the computation. The parallelization is done with MPI and OpenMP.
The MPI version uses non-blocking, persistent communication between processes and a virtual topology.

Partition layout of the matrix

Example of Evolution


View Github