Fast, flexible particle simulations
MercuryDPM is a code for discrete particle simulations. That is, it simulates the motion of particles, or atoms, by applying forces and torques that stem either from external body forces, (e.g. gravity, magnetic fields, etc...) or from particle interaction laws (e.g. Lennard-Jones). For granular particles, these are typically contact forces (elastic, plastic, viscous, frictional), while for molecular simulations, forces typically stem from interaction potentials (e.g. Lennard-Jones). The code has been developed extensively for granular applications, but could be adapted to include long-range interactions as well.
It was started by Anthony Thornton and Thomas Weinhart, and has been developed by many people since it was started. It is currently actively developed by Thomas Weinhart, Anthony Thornton, Deepak Tunuguntla, Kit Windows-Yule, Marnix Schrojenstein Lantman, Irana Denissen and Bert Scheper with input from Stefan Luding.
MercuryDPM is a very versatile, object-orientated C++ code which is easily understandable. It has been tested for several Linux distributions, Mac OS and Windows 10. The user specifies the particulars of their simulation (initial positions, inflow, outflow, walls, interaction parameters) in a single driver file, which calls the kernel to do the simulations. All kernel functions are documented here, and there are several driver samples available. To avoid breaking already existing code a suite of self-tests have been developed testing pre-existing features of the code.
For those interested in learning how to use existing Mercury codes to their full potential and even to design and create their own codes in order to model their own unique systems, the Mercury team offer short, intensive training courses. Details of these courses may be found on our sister website mercurylab.org.