1. A method comprising: calculating position force vectors that describe forces applied to a plurality of bodies; forming a force vector for pairs of contacting bodies; forming a collision matrix by forming a sparse constrained block matrix whose blocks comprise N×K elements, wherein N is the number of body properties, and K is the number of body properties rounded up to the nearest multiple of a processor Single Instruction Multiple Data register size; solving a system of linear equations defined by the collision matrix and the force vector part using a bi-conjugate gradient method; updating positions of the plurality of bodies in accordance with a solution to said system of linear equations; including determining post-collision movement using a bi-conjugate gradient method while adding dissipative forces to a spring simulation to dissipate energy using single precision arithmetic; and displaying the results of a collision between said bodies.