Source code of DROPS

The code is still under development. The second release is published under the terms of the LGPL .

If you want to work with DROPS please send an email to


A user's manual can be found in the DROPS publication list. It explains the main mathematical concepts and numerical methods as well as software-related concepts. The last chapters contain some examples how to run numerical simulations with DROPS, which are slightly outdated but still may be helpful for the user. An HTML documentation of the source code can be generated by typing make doc in the drops top-level directory, requiring the "doxygen" tool.

Tools to build DROPS

To build DROPS in an Unix environment, please make sure that a recent C++ compiler is installed on your system. Additionally, the GNU tool "makedepend" helps to generate the dependencies for the compile process. To visualize your results, DROPS supports many different output formats. Commonly, the results are written out by DROPS in the VTK format or a format which can be read in by Ensight or Paraview. Detailed information of classes and functions can be generated by the tool doxygen. To generate a tetrahedral meshfile, which defines the computational domain, the tool Gambit (part of Fluent) or Netgen ( netgen at sourceforge ) can be used. Simple geometries, such as bricks and L-shaped domains, can be generated without the use of this tool.

Building DROPS executables

To build the executables, first, you have to specify your C++ compiler. If using Visual Studio we refer to the separate documentation on this compiler. Otherwise, the following steps are mandatory. (In the remainder, the variable DROPS_HOME is used to refer to the directory where the DROPS package is located.)
  • Specify your architecture in the file DROPS_HOME/drops.conf. The default setting is LINUX, i.e., "ARCH = LINUX." The compiler settings have to be specified in the file DROPS_HOME/arch/<ARCH>/mk.conf. For instance, these settings include the calling of the compiler and the optimization flags.
  • Afterwards, the following makefile rules are available:
    • dep: To ease the building process, dependencies for building object files and executables can be built automatically.
    • all: Generate all /serial executables
    • doc: Uses doxygen to generate a html documentation of DROPS. The documentation can then be found at DROPS_HOME/doc/dox/html/index.html.
    • clean: Removes all object files and executables.
    • distclean:Removes besides the object files and executables all files with suffix .off, .dat, the dependency file and the documentation.
Before compiling an executable, the dependencies have to be generated once by calling make dep.

DROPS Executables

After generating the executables, you can solve your problem by running an executable. In most cases the executables demand for a parameter file. An (incomplete) list of executables and corresponding parameter-files can be found below. In order to generate post-processing files for the executable, please create subdirectories /ensight or /vtk in the corresponding directories where the executable file resides.

List of Executables

You may want to look at the following executables to solve your problem:
Name of the executable Parallel/seriel Parameter file Purpose
possion/poissonP1 s poissonex1.json / poissonex2.json / poissonex3.json Solve a (non-)stationary Convection-Diffusion problem by P1 finite element functions
possion/poissonP2 s poissonex1.json / poissonex2.json / poissonex3.json Solve a (non-)stationary Convection-Diffusion problem by P2 finite element functions
levelset/twophasedrops p/s risingdroplet.json Solve the two-phase flow problem
stokes/sdropsP2 s drivcav(_instat).json / stokes.json Solve a non-stationary Stokes problem by P2-P1 finite element functions
transport/ns_transp p/s risingbutanoldroplet.json Solve the two-phase mass transport problem coupled or decoupled from the flow problem with P1+XFEM finite element functions
To start for example the P1-Poisson-Problem type in the poisson directory: "./poissonP1 poissonex1.json".

Parameter files

A documentation of the parameter files for the instationary two-phase flow problems can be found here.

Parallel Version of DROPS

To build a parallel DROPS executable you are in need of the two libraries DDD (dynamic distributed data) and ParMetis. DROPS assumes that these libraries are located in the directory DROPS_HOME/.. (i.e., the parent directory of DROPS_HOME). Call make DDD and make ParMetis in the DROPS_HOME directory to compile the respective libraries. To build a parallel version of DROPS, specify as architecture exemplarily ARCH = LINUX_MPI in the file DROPS_HOME/drops.conf and modify the corresponding configuration file DROPS_HOME/<ARCH>/mk.conf. Make sure to call make dep once to generate the dependencies prior to compilation of any executable.

Patrick Esser ✉, last update: May 17th, 2010