README.md 18.8 KB
Newer Older
1
# DORiE
2
(**D**UNE-**O**perated **Ri**chards equation solving **E**nvironment)
Dion Haefner's avatar
Dion Haefner committed
3

Lukas Riedel's avatar
Lukas Riedel committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
DORiE is a software package for solving the Richards equation coupled with the
passive transport equation. The core feature is a C++ PDE-solver powered by
[DUNE](https://dune-project.org/) and especially the
[DUNE-PDELab](https://dune-project.org/modules/dune-pdelab/) module.

### Contents of this README

* [Overview](#overview)
* [Installation](#installation-instructions)
    * [Docker Image](#download-docker-image)
    * [Manual Installation](#manual-installation)
    * [Recommended Tools](#recommended-third-party-software)
* [Documentation](#documentation)
* [Usage](#usage)
* [Troubleshooting](#troubleshooting)

---

## Overview

DORiE offers a variety of solver and discretization solutions. The passive
transport module is optional. For both modules independently, users may choose
finite volume (FV) or discontinuous Galerkin (DG) discretizations. The latter
may be used on unstructured grids and can take advantage of adaptive local grid
refinement.

The C++ routines are accompanied by various tools for program setup,
program testing, and output analysis, which are mostly written in Python.

DORiE is developed and maintained by the
[DORiE Developers](mailto:dorieteam@iup.uni-heidelberg.de) of the
[TS-CCEES](http://ts.iup.uni-heidelberg.de/) research group at the
[Institute of Environmental Physics (IUP) Heidelberg](http://www.iup.uni-heidelberg.de/),
supervised by
[Kurt Roth](http://ts.iup.uni-heidelberg.de/people/prof-dr-kurt-roth/),
in collaboration with
[Ole Klein](https://conan.iwr.uni-heidelberg.de/people/oklein/) and the
[Scientific Computing Group](https://conan.iwr.uni-heidelberg.de/) of the
[Interdisciplinary Center for Scientific Computing (IWR) Heidelberg](https://typo.iwr.uni-heidelberg.de/home/).

DORiE is free software and licensed under the
[GNU General Public License Version 3](LICENSE).
46
For the copyright notice and the list of copyright holders,
Lukas Riedel's avatar
Lukas Riedel committed
47 48 49 50
see [`COPYING.md`](COPYING.md).

Contributions to the project are always welcome! Please notice our
[Contribution Guidelines](CONTRIBUTING.md).
51

Lukas Riedel's avatar
Lukas Riedel committed
52
## Installation Instructions
53

Lukas Riedel's avatar
Lukas Riedel committed
54 55 56 57 58
DORiE is a [DUNE](https://dune-project.org/) module and requires several other
DUNE modules as well as third party software packages. Installation can be
handled manually on your local machine, but we recommend using a pre-compiled
image for the deployment software [Docker](https://www.docker.com/) to
inexperienced users instead.
59

Lukas Riedel's avatar
Lukas Riedel committed
60
### Download Docker Image
61

Lukas Riedel's avatar
Lukas Riedel committed
62 63
No installation is necessary if you download DORiE as Docker image from
[Docker Hub](https://hub.docker.com/r/dorie/dorie/).
64

Lukas Riedel's avatar
Lukas Riedel committed
65 66 67
If you want to use any stable version of DORiE, or the most recent unstable
version, you can download the appropriate images from Docker Hub. To do so,
execute
68

Lukas Riedel's avatar
Lukas Riedel committed
69
    docker pull dorie/dorie[:<tag>]
70

Lukas Riedel's avatar
Lukas Riedel committed
71 72
Omitting the tag information downloads the image with tag `latest` which
refers to the latest stable version. You can download any tag by specifying
Lukas Riedel's avatar
Lukas Riedel committed
73 74 75 76
`<tag>`. The list of
[available tags](https://hub.docker.com/r/dorie/dorie/tags) can be found on
Docker Hub and matches the release tags list of the Git repository. The latest
unstable version is tagged as `devel`.
77

Lukas Riedel's avatar
Lukas Riedel committed
78 79 80 81
You can then proceed directly to the the instructions on
[how to execute DORiE](#running-dorie). The commands listed there are appended
to the usual commands for running a Docker container. See the description on
Docker Hub for further details.
Dion Haefner's avatar
Dion Haefner committed
82

Lukas Riedel's avatar
Lukas Riedel committed
83
### Manual Installation
84

Lukas Riedel's avatar
Lukas Riedel committed
85 86 87
Installing all packages manually can be quite an effort, but useful for
developers who want to have easy access to the source files or users who prefer
to run DORiE without the Docker overhead.
Dion Häfner's avatar
Dion Häfner committed
88

Lukas Riedel's avatar
Lukas Riedel committed
89 90 91 92
Whenever possible, dependencies should be installed using a package manager
like [APT](https://wiki.ubuntuusers.de/APT/) on Ubuntu or
[Homebrew](http://brew.sh/) on Mac. Manual installation on a Windows
environment is not supported!
93

94 95 96 97
DORiE is configured, built, and installed via the
[DUNE Buildsystem](https://dune-project.org/doc/installation/), using the
`dunecontrol` script to handle DUNE-internal dependencies.

Lukas Riedel's avatar
Lukas Riedel committed
98
#### Step-by-step Instructions
Lukas Riedel's avatar
Lukas Riedel committed
99 100 101 102 103 104
These instructions are suitable for a clean **Ubuntu** or **macOS** setup.
The main difference between the two systems is the package manager.
Debian-based systems have the APT manager already built in. On Mac, we
recommend installing [Homebrew](http://brew.sh/). If you prefer to use
[MacPorts](https://www.macports.org/), notice that packages will need to be
installed differently than indicated here.
105

106 107 108
Manual installations on macOS require installing HDF5 from source. This can
be tricky, but the following instructions should work on a clean system.

Lukas Riedel's avatar
Lukas Riedel committed
109 110 111 112
If you installed [Anaconda](https://conda.io/docs/user-guide/install/download.html)
on your machine, you don't need to install Python or Pip. Simply skip these
packages when using the package managers for installing the software. However,
notice the warnings when compiling DORiE below!
113

Lukas Riedel's avatar
Lukas Riedel committed
114 115
1. **macOS** users need to start by installing the Apple Command Line Tools by
    executing
116 117

        xcode-select --install
118
    
Lukas Riedel's avatar
Lukas Riedel committed
119 120
    Make sure you have no pending software updates for your respective version
    of macOS!
Dion Haefner's avatar
Dion Haefner committed
121

Lukas Riedel's avatar
Lukas Riedel committed
122
2. Install third party packages:
Lukas Riedel's avatar
Lukas Riedel committed
123

124
    **Ubuntu:**
Lukas Riedel's avatar
Lukas Riedel committed
125 126

        apt update
Lukas Riedel's avatar
Lukas Riedel committed
127
        apt install cmake doxygen gcc g++ gfortran \
Dion Haefner's avatar
Dion Haefner committed
128
                    git libatlas-base-dev libfftw3-dev libfftw3-mpi-dev \
129 130
                    libfreetype6-dev libhdf5-mpi-dev libmuparser-dev \
                    libopenmpi-dev libpng-dev libsuperlu-dev libyaml-cpp-dev \
Lukas Riedel's avatar
Lukas Riedel committed
131
                    libxft-dev python3-dev python3-pip python3-vtk7
132

Lukas Riedel's avatar
Lukas Riedel committed
133
    **macOS:**
134 135

        brew update
136
        brew install cmake doxygen fftw gcc libpng open-mpi muparser \
Lukas Riedel's avatar
Lukas Riedel committed
137
                     pkg-config python3 superlu yaml-cpp
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

2. **macOS only:** Install HDF5 with MPI support from source.

    1. Download an archive of the
    [HDF5 source code](https://www.hdfgroup.org/downloads/hdf5/source-code/),
    and extract it.

    2. Enter the extracted folder. In there, create a `build` directory, and
    enter it:

            mkdir build && cd build

    3. Configure your build. If you followed the instructions above, the
    OpenMPI C compiler is reachable via the command `mpicc`. If not, you have
    to specify a full path to it. Use the option `prefix` to specify where
    you want the package to be installed. This should *not* be a
    system-reserved path like `/usr/local`, and *not* be located in a
    sub-directory of the source code. Execute the configuration script:

            ./../configure CC=mpicc --prefix=<hdf5-path> --enable-parallel

    4. Build and install the library:

            make && make install

Lukas Riedel's avatar
Lukas Riedel committed
163 164 165
3. The parallel linear solver of DORiE can make use of the ParMETIS package.
    If you want to run DORiE in parallel on multiple processes, additionally
    install METIS and ParMETIS:
Lukas Riedel's avatar
Lukas Riedel committed
166 167 168

    **Ubuntu:**

169
        apt install libmetis-dev libparmetis-dev
Lukas Riedel's avatar
Lukas Riedel committed
170

Lukas Riedel's avatar
Lukas Riedel committed
171 172
    **macOS:** _Support is dropped because ParMETIS is currently unavailable
    from Homebrew._
Lukas Riedel's avatar
Lukas Riedel committed
173 174 175

    **Parallel runs without these two packages are possible but not supported!**

Lukas Riedel's avatar
Lukas Riedel committed
176 177
4. Clone the [DUNE modules](#dune-Packages) into a suitable folder on your
    machine. Use `git checkout` to switch to the correct branches.
178 179 180 181 182 183 184 185 186

5. Clone DORiE into the same folder.

    DORiE includes
    [Git Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules),
    which requires you to add the `--recurse-submodules` option to the
    `git clone` command. Switch to the desired branch or tag.

6. Enter the parent folder, and call
187 188

        CMAKE_FLAGS="-DDUNE_PYTHON_VIRTUALENV_SETUP=True -DDUNE_PYTHON_ALLOW_GET_PIP=True" ./dune-common/bin/dunecontrol all
189

Lukas Riedel's avatar
Lukas Riedel committed
190 191
    to build all DUNE modules. Additionally, you can add `MAKE_FLAGS="-j X"`
    to the command in order to compile on `X` processes in parallel.
192

Lukas Riedel's avatar
Lukas Riedel committed
193 194 195 196 197
    If you installed software into paths not appended to your `PATH` variable,
    you will have to add `CMAKE_FLAGS` to the call to make sure that CMake
    finds all packages. Alternatively, you can add a custom options file. See
    the [DUNE Installation Instructions](https://dune-project.org/doc/installation/)
    for details. CMake will throw an error if required packages are not found.
198

Lukas Riedel's avatar
Lukas Riedel committed
199
    If you installed HDF5 from source (all **macOS** users) or use Anaconda,
200 201 202 203 204 205
    specify the path to your HDF5 installation by using the `HDF5_ROOT`
    variable. On Ubuntu, add the path to the APT package,

        -DHDF5_ROOT=/usr/

    and on macOS, add
206

207
        -DHDF5_ROOT=<hdf5-path>
208

209 210
    to the `CMAKE_FLAGS` in the above command, replacing `<hdf5-path>` with the
    path chosen as installation prefix when configuring HDF5.
211

Lukas Riedel's avatar
Lukas Riedel committed
212
### Recommended Third-Party Software
213

Lukas Riedel's avatar
Lukas Riedel committed
214 215
The following software packages are cross-platform, so you should be able to
find a release that fits your operating system:
Dion Haefner's avatar
Dion Haefner committed
216

Lukas Riedel's avatar
Lukas Riedel committed
217 218 219 220
* [ParaView](http://www.paraview.org/): A powerful post-processing tool for VTK
    files. Offers both visualization and data analysis tools.
* [Gmsh](http://gmsh.info/): An open-source CAD that can be used to create the
    `.msh` files used by DORiE to define unstructured meshes.
Dion Haefner's avatar
Dion Haefner committed
221

Lukas Riedel's avatar
Lukas Riedel committed
222 223 224 225 226
### Dependencies
Depending on your system configuration, there will be more packages necessary to
install DORiE on your machine. See the step-by-step manual for further details.
The specified versions are the _supported_ ones, where compatibility is ensured
by CI tests.
Dion Haefner's avatar
Dion Haefner committed
227

Lukas Riedel's avatar
Lukas Riedel committed
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254
#### DUNE Packages
| Software | Version/Branch | Comments |
| ---------| -------------- | -------- |
| [dune-common](https://gitlab.dune-project.org/core/dune-common) | releases/2.6
| [dune-geometry](https://gitlab.dune-project.org/core/dune-geometry) | releases/2.6
| [dune-grid](https://gitlab.dune-project.org/core/dune-grid) | releases/2.6
| [dune-uggrid](https://gitlab.dune-project.org/staging/dune-uggrid) | releases/2.6
| [dune-istl](https://gitlab.dune-project.org/core/dune-istl) | releases/2.6
| [dune-localfunctions](https://gitlab.dune-project.org/core/dune-localfunctions) | releases/2.6
| [dune-functions](https://gitlab.dune-project.org/staging/dune-functions) | releases/2.6
| [dune-typetree](https://gitlab.dune-project.org/staging/dune-typetree) | releases/2.6
| [dune-pdelab](https://gitlab.dune-project.org/pdelab/dune-pdelab) | releases/2.6
| [dune-randomfield](https://gitlab.dune-project.org/oklein/dune-randomfield) | releases/2.6
| [dune-testtools](https://gitlab.dune-project.org/quality/dune-testtools) | releases/2.6 | *Optional:* For system tests

#### DUNE Requirements
| Software | Version/Branch | Comments |
| ---------| -------------- | -------- |
| CMake | 3.10.2 |
| GCC | 7.3 | Alternatively: LLVM Clang >=6, or Apple Clang 10
| git |
| pkg-config |
| FFTW3 | 3.3.7 | MPI support required
| Python | 3.6 |
| pip | 3.6 |
| MPI | | Tested with OpenMPI 2.1.1
| SuperLU | 5.2 |
Dion Haefner's avatar
Dion Haefner committed
255

Lukas Riedel's avatar
Lukas Riedel committed
256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284
#### DORiE Requirements
| Software | Version/Branch | Comments |
| ---------| -------------- | -------- |
| [HDF5](https://www.hdfgroup.org/solutions/hdf5/) | 1.10 | MPI support required
| [yaml-cpp](https://github.com/jbeder/yaml-cpp) | >= 5.2.0 |
| [muparser](http://beltoforion.de/article.php?a=muparser) | master |
| [VTK](https://vtk.org/) | >= 7.1.1 | For the Python module only
| [spdlog](https://github.com/gabime/spdlog) | 1.1.0 | Included as Git Submodule
| [Google Test](https://github.com/google/googletest) | `HEAD` | Included as Git Submodule

#### Optional Packages
| Software | Version/Branch | Comments |
| -------- | -------------- | -------- |
| [doxygen](http://www.stack.nl/~dimitri/doxygen/) | 1.8.13 | Builds documentation
| [METIS](http://glaros.dtc.umn.edu/gkhome/views/metis) | 5 | For parallel runs
| [ParMETIS](http://glaros.dtc.umn.edu/gkhome/views/metis) | 4 | For parallel runs


## Documentation

The documentation of DORiE is twofold. The Sphinx documentation contains a
manual with guidelines and tutorials for users of the compiled software
package. The Doxygen documentation of the C++ source code is intended for
developers only and explains the inner workings of the software.

Both parts of the documentation are deployed to our documentation server for
every branch pushed to the main repository. You will find the latest
[user manual](https://hermes.iup.uni-heidelberg.de/dorie_doc/master/html/) and
[C++ code documentation](https://hermes.iup.uni-heidelberg.de/dorie_doc/master/doxygen/html/)
285 286
there. The documentation for other branches can be accessed via the
[overview page](https://hermes.iup.uni-heidelberg.de/dorie_doc/).
Dion Haefner's avatar
Dion Haefner committed
287

288 289
The documentation can also be built locally after DORiE has been properly
configured following the step-by-step instructions above. To build the
Lukas Riedel's avatar
Lukas Riedel committed
290
documentation, move to the `dorie/build-cmake` directory and simply run
Lukas Riedel's avatar
Lukas Riedel committed
291 292 293

    make doc

Lukas Riedel's avatar
Lukas Riedel committed
294 295 296
You will then find the index page of the Sphinx user documentation at
`dorie/build-cmake/doc/html/index.html` and the index page of the Doxygen
source code documentation at `dorie/build-cmake/doc/doxygen/html/index.html`.
Dion Haefner's avatar
Dion Haefner committed
297

Lukas Riedel's avatar
Lukas Riedel committed
298 299 300
## Usage

DORiE provides a command line interface (CLI) for all its user functions.
Lukas Riedel's avatar
Lukas Riedel committed
301
The required Python modules and all their dependencies are readily installed
Lukas Riedel's avatar
Lukas Riedel committed
302
into a Python virtual environment (`venv`), which has to be activated within a
Lukas Riedel's avatar
Lukas Riedel committed
303 304
shell session. You can do so by activating it in your current session
(Manual Installation only) or by running the Docker application.
305

Lukas Riedel's avatar
Lukas Riedel committed
306 307 308
### Run the `venv` using the Docker application
If you did not install DORiE locally, you can use the Docker application to
boot up the virtual environment in a mounted directory of your choice.
309

Lukas Riedel's avatar
Lukas Riedel committed
310
Start up the Docker application by calling
Lukas Riedel's avatar
Lukas Riedel committed
311

Lukas Riedel's avatar
Lukas Riedel committed
312
    docker run -it -v <dir>:/mnt <img>
313

Lukas Riedel's avatar
Lukas Riedel committed
314
where you replace `<dir>` with a local directory for storing input and output
Lukas Riedel's avatar
Lukas Riedel committed
315 316 317
data, and `<img>` with `dorie/dorie[:<tag>]`. We recommend moving into the
designated input and output directory on your local machine and inserting
`$PWD` as `<dir>` to mount the current directory into the container.
318

Lukas Riedel's avatar
Lukas Riedel committed
319 320 321 322
The command boots up a (`bash`) shell inside a Docker container and mounts
the directory `<dir>` and all its subdirectories into the directory `/mnt`
inside the container. Your shell session starts in this directory with the
virtual environment activated.
323

Lukas Riedel's avatar
Lukas Riedel committed
324 325
Notice, that you can only use **local file paths** in all configuration
settings due to the directory mount.
326

Lukas Riedel's avatar
Lukas Riedel committed
327
### Activate the `venv` locally
Lukas Riedel's avatar
Lukas Riedel committed
328
To activate the virtual environment within your current shell session, execute
329

Lukas Riedel's avatar
Lukas Riedel committed
330
    source <path/to/>dorie/build-cmake/activate
331

Lukas Riedel's avatar
Lukas Riedel committed
332
where you replace `<path/to/>` with the path to the appropriate directory.
333

Lukas Riedel's avatar
Lukas Riedel committed
334 335 336
Your shell will now display the prefix `(dune-env)` to indicate that it is
configured appropriately. You can exit the environent at any time by simply
executing
Dion Haefner's avatar
Dion Haefner committed
337

Lukas Riedel's avatar
Lukas Riedel committed
338
    deactivate
Dion Haefner's avatar
Dion Haefner committed
339

Lukas Riedel's avatar
Lukas Riedel committed
340 341
Notice that any virtual environment only applies to, and lasts for, your
current terminal session!
Dion Haefner's avatar
Dion Haefner committed
342

Lukas Riedel's avatar
Lukas Riedel committed
343 344
_With the virtual environment activated,_ you can now navigate to any directory
that you would like to contain your simulation input and/or output data.
Dion Haefner's avatar
Dion Haefner committed
345

Lukas Riedel's avatar
Lukas Riedel committed
346
### Execute the application
Lukas Riedel's avatar
Lukas Riedel committed
347
Any command to the DORiE application has the signature
348

Lukas Riedel's avatar
Lukas Riedel committed
349
    dorie <cmd> [<opts>] [<args>]
350

Lukas Riedel's avatar
Lukas Riedel committed
351
Using the `-h` or `--help` option, you can find all available commands and
Lukas Riedel's avatar
Lukas Riedel committed
352 353
further help. To start your first simulation run, create a new directory and
enter it.
Lukas Riedel's avatar
Lukas Riedel committed
354

Lukas Riedel's avatar
Lukas Riedel committed
355 356 357
#### 1 — Default input files
Create some exemplary configuration files along with parameter and boundary
condition data files by calling
Lukas Riedel's avatar
Lukas Riedel committed
358 359

    dorie create
Lukas Riedel's avatar
Lukas Riedel committed
360

Lukas Riedel's avatar
Lukas Riedel committed
361 362 363 364 365 366 367
The data files are valid input files for very limited scenarios. The main
configuration file `config.ini` requires tweaking by the user. Most `UNDEFINED`
values must be properly defined before starting the simulation. A cheat sheet
for the single config file entries as well as manuals on how the boundary
condition and parameter files are used can be found in the user documentation.

#### 2 — _Optional:_ Create a random field
Lukas Riedel's avatar
Lukas Riedel committed
368
DORiE implements a lightweight wrapper around the `dune-randomfield`
Lukas Riedel's avatar
Lukas Riedel committed
369 370 371
generator. You can use it to easily create a heterogeneous soil architecture.
This step is optional. Tweak the parameters of `parfield.ini` to your liking
and then call
Lukas Riedel's avatar
Lukas Riedel committed
372

Lukas Riedel's avatar
Lukas Riedel committed
373 374
    dorie pfg parfield.ini

Lukas Riedel's avatar
Lukas Riedel committed
375 376 377
A cheat sheet for this config file is also available from the documentation.

#### 3 — Perform a simulation
Lukas Riedel's avatar
Lukas Riedel committed
378 379 380 381 382 383 384
The DORiE main routine is executed with the `run` command.
Tweak the parameters of `config.ini` to your liking. You will need to
reference several additional input files for soil parameters, boundary
conditions, GMSH grid files (optional), and grid mappings (optional).
Refer to the documentation for further information.

Once prepared, call
Lukas Riedel's avatar
Lukas Riedel committed
385 386 387

    dorie run config.ini

Lukas Riedel's avatar
Lukas Riedel committed
388
to execute the solver.
Lukas Riedel's avatar
Lukas Riedel committed
389

Lukas Riedel's avatar
Lukas Riedel committed
390 391 392 393 394 395
## Troubleshooting

CMake heavily caches the results of its configuration process. In case you
encounter errors or strange behavior, especially after an update, you should
delete the DORiE build folder (called `build-cmake` by default) and re-build
DORiE using `dunecontrol`.
Dion Haefner's avatar
Dion Haefner committed
396

Lukas Riedel's avatar
Lukas Riedel committed
397 398 399
If the problem persists, take a look at the
[list of Issues](https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/issues),
and feel free to create an Issue yourself if the problem is not yet reported.
Dion Haefner's avatar
Dion Haefner committed
400

Lukas Riedel's avatar
Lukas Riedel committed
401
### Debugging
Dion Haefner's avatar
Dion Haefner committed
402
DORiE can be built with debugging flags via CMake. To do so, run
403

Dion Haefner's avatar
Dion Haefner committed
404
    CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Debug" dunecontrol --only=dorie all
405

Dion Haefner's avatar
Dion Haefner committed
406
After building, a debugger can hook into the executables.
407

Lukas Riedel's avatar
Lukas Riedel committed
408 409 410 411
**Note:** If no `CMAKE_BUILD_TYPE` is specified during re-configuration, the
last configuration build type is used. If no CMake files exist, it defaults to
`Release`. You will find the actual value displayed in the final output of
CMake.
412

Lukas Riedel's avatar
Lukas Riedel committed
413 414
To re-create a release build, configure DORiE with the release build type by
executing
415

Dion Haefner's avatar
Dion Haefner committed
416
    CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Release" dunecontrol --only=dorie all
417

Lukas Riedel's avatar
Lukas Riedel committed
418 419 420 421 422 423 424 425
### Running System Tests
DORiE includes a testing system for comparing its results the ones of ODE
solvers or former versions of itself. This ensures that DORiE is running
correctly and producing the expected results. We distinguish _unit tests_ for
testing certain features of the code, and _system tests_ for verifying the
results of the final application. As system tests require executing the DUNE
solvers, it is recommended to build them in a `Release` environment.
Additionaly, there is a set of tests for the Python module.
Lukas Riedel's avatar
Lukas Riedel committed
426 427

| Test category | Build tests | Execute tests | Recommended build type |
428
| ------------- | ----------- | ------------- | ---------------------- |
429 430
| Unit tests | `make build_unit_tests` | `make unit_tests` | `Debug`
| System tests | `make build_system_tests` | `make system_tests` | `Release`
Lukas Riedel's avatar
Lukas Riedel committed
431
| Python tests | _Not required_ | `make test_python` | _Any_
Lukas Riedel's avatar
Lukas Riedel committed
432 433 434

The `make` commands are to be executed from within the `build-cmake` directory.

435 436 437 438 439 440 441 442 443
#### Code Coverage Report
To enable code coverage reports, configure DORiE with the CMake option
`COVERAGE_REPORT` enabled, like so (from the `build-cmake` directory):

    cmake -DCOVERAGE_REPORT=On ..

This will add the appropriate compiler flags to _all_ targets. You then have to
re-build all binaries. After running tests or executing the application, you
can retrieve code coverage information using the
Lukas Riedel's avatar
Lukas Riedel committed
444
[`gcovr`](https://gcovr.com/index.html) utility.
Dion Haefner's avatar
Dion Haefner committed
445

Lukas Riedel's avatar
Lukas Riedel committed
446 447 448 449
### Further Help
[Open an Issue](https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/issues/new),
on GitLab or write to the
[DORiE developer mailing list](mailto:dorieteam@iup.uni-heidelberg.de).