Developer's version (Trunk)

Below you find instructions to download the developer's version of MercuryDPM, also called the "Trunk". Note, the developer's version contains the newest features of the code, which might still be unstable. If you want the most recent stable version of Mercury, please download the release instead.



  • C++ and Fortran compilers

    • Mercury uses C++11 features and thus requires an up-to-date compiler.
      We suggest you use gcc 4.8-6 or higher.

    • To compile our Fortran files, we recommend gfortran.

  • cmake version 2.8.14 or higher (

  • python version 2.7

  • subversion (svn) version 1.7 or higher



Step 1: Install external dependencies

  • Make sure the above mentioned packages are installed. On Ubuntu 16.04, you can install the dependencies with the following command:

sudo apt install build-essential g++ gfortran subversion python2.7 cmake-curses-gui cmake-qt-gui doxygen graphviz libx11-dev libxt-dev libxres-dev libxtst-dev paraview openmpi-bin mpi-default-dev

Step 2: Install MercuryDPM

  • To install Mercury, open the terminal or shell. Create a directory called "MercuryDPM" at a location of your choice by typing

mkdir MercuryDPM

  • Enter the new directory by typing

cd MercuryDPM/

  • Check out the developer's version ('Trunk') of MercuryDPM by typing

svn checkout --username guest --password '' MercurySource

  • Create another directory called "MercuryBuild"

mkdir MercuryBuild

  • Enter the folder "MercuryBuild" by typing

cd MercuryBuild

  • Create Makefiles for compiling MercuryDPM with cmake-gui. To do so, type

cmake-gui ../MercurySource

  • The CMake-GUI pops up on your screen as in the picture shown below:

  1. Click on "Browse Source" and locate the "MercurySource" directory.

  2. Click on "Browse Build" and locate the "MercuryBuild" directory.

  3. Make sure option "Grouped" is selected and "Advanced" is deselected.

  4. Click "Configure"

  • After clicking "Configure", the following window appears on your screen

  1. Select "Unix makefiles" under "Specify the generator for this code"

  2. Choose "Use default native compilers"

  3. Click on "Done"

  • If all required dependencies have been installed, then the log file displayed in the bottom panel ends with "Configuring done", as seen in the screenshot below. If not, please respond to the error messages and click "Configure" again.

  • Any red line in the bottom panel, indicates that some package is missing or needs to be installed to have a successful "configure". In that case, click on the "Advanced" option to see exactly where the issue is or contact any of the MercuryDPM team of developers.

  • Once "Configuring done" is displayed, you can select configuration options in the top panel:

    • Select 'Release' as the CMAKE_BUILD_TYPE, see the picture above.

    • Optional: tick Mercury_BUILD_DOCUMENTATION if you plan to build a local version of the documentation (requires doxygen and graphviz).

    • Optional: tick Mercury_BUILD_USER_DIR if you want to compile codes in the USER directory.

    • Optional: tick Mercury_Include_XBalls_Support if you plan to use XBalls for visualisation (requires X11).

    • Optional: tick Mercury_USE_MPI if you plan to use parallel computations (requires the MPI libraries).

  • Once you entered all options, click "Configure" again. Then click on "Generate". This generates Makefiles in your build directory ('TrunkBuild') that you can use to compile MercuryDPM.

  • To check if the installation was successful, go to your build directory "MercuryBuild" using the terminal and type

make fullTest

This will compile all MercuryDPM components, and run the selftest suite.

  • If all the tests have passed, MercuryDPM is successfully installed on your machine.

Without cmake-gui

Note, you can also install MercuryDPM from the terminal, without using cmake-gui. cmake does include an alternative curses-based interface called ccmake. To do so, type ccmake instead of cmake-gui in the above instructions.

MercuryDPM mailing list

Please sign up for the mailing list to receive updates about the code.