MercuryDPM
0.9
|
MercuryDPM is a code for performing discrete particle simulations. It is currently available by downloading it from this website, or by requesting an svn guest account (a.r.thornton@utwente.nl or t.weinhart@utwente.nl). See also section How to obtain MercuryDPM. The code is available as an open-source code under the GPL3 license.
Update May 19th: Version 0.9 beta of the code has been released. This does not, yet, include the full feature list, but extra features will be added to the public version in the coming months.
Update September 19th: Our website has moved, and this site should only be used to access the MercuryDPM documentation. For any other information about MercuryDPM, visit MercuryDPM.org
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 is currently actively developed by Thomas Weinhart, Anthony Thornton and Dinant Krijgsman with input from Stefan Luding and Onno Bokhove.
MercuryDPM is a very versatile, object-orientated C++ code which is easily understandable. It has been tested for several Linux distributions and Mac OS (no Windows version yet, sorry). 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.
Among other developments, it contains the hGrid neighbourhood search algorithm to effectively compute interaction forces, even for polydispersed particles. It has an in-built statistics package to extract fields such as density, velocity, and stresses, during computation or for post-processing. Many contact force models are implemented, including elastic or dissipative normal forces and tangential friction; flat or polyhedral walls are modelled, as well as fixed-particle walls; particles can be grouped into species with different parameters; inflow through a hopper is implemented; codes can be restarted from the output files, if the simulation has been aborted.
tar -zxf MercuryDPM.tar.gz
) in a directory of your choice.svn
' and 'doxygen
' into your terminal to see if these programs are installed. Install svn
and Doxygen
if needed.svn list https://www2.msm.ctw.utwente.nl/svn/repos/THORNTON/Code
Finite_volume_code/ MD/ SPH/ scripts/
--username=<yourusername>
to the end of the command.MD/
and the scripts/
directories. You should have been given a branchname like 'BRANCHES/yourname
'. First create a directory for the code with mkdir <yourcodedir>
svn checkout https://www2.msm.ctw.utwente.nl/svn/repos/THORNTON/Code/scripts <yourcodedir>/scripts svn checkout https://www2.msm.ctw.utwente.nl/svn/repos/THORNTON/Code/MD/<branchname>/ <yourcodedir>/MD/
cd
into the MD/DRIVERS/
directory and type make doc
MD/Documentation/html/
and load index.html
into your web browser, by typing firefox index.html
MD/DRIVERS/
and type make selftest
MD/DRIVERS/Simple_MD/run/
then type sc/quick_run free_fall
free_fall
../free_fall/free_fall.disp
sc/quick_run free_cooling ./free_cooling/free_cooling_hgrid.disp
You should notice this code runs twice, once using the HGRID and once not. The use of the HGRID should be a lot faster, this is the third party code I said that is used to make the code go faster. I would base any code you write on the HGRID version of this code. Have a look at free_cooling.cpp. Gravity defaults to 9.8 in the z-direction can this can changed my setting the gravity vector see documentation.
There is a mailing list for the users of MercuryDPM; if you would like to join please send an email to:
listserv[AT]lists[dot]utwente[dot]nl
,
with
Subject: subscribe
Body: subscribe MERCURY-USER <your full name>
As a member of the list you will receive information about updates to the code, new features and bug fixes. Please note, if you require technical support or just have general questions about the code join the mailing list and send your e-mail to the list [Note, this will not be distributed to all list members, just the developers].
The code is currently not publically available, but a public release is anticipated in the coming weeks.
When released you will be free to use the code under the GNU public license.
This code uses the hierarchical grid (fast multilevel algorithm), of Ogarko and Luding (2012), for neighbourhood search. Currently there is no paper describing this code; however, the authors have several publications using the same code. Therefore, we kindly request if you use this code, you refer to the following publications.
These represent the applications for which the code was originally developed and details of the used contact detection algorithm.
Publications using the code: