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. Information about developers can be found at Team.

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

Carousel imageCarousel imageCarousel image


  • MercuryDPM webinar: Invited talk given by Sebastian Eibl on 28-04-2020 at 14:00
    April 28th, 2020
    Read More …

  • Mercury Month 2020
    April 17th, 2020
    Read More …

  • 1st oomph-lib MercuryDPM meeting
    April 15th, 2020
    Read More …