Commit 84b64b61 authored by Lukas Riedel's avatar Lukas Riedel Committed by Santiago Ospina De Los Ríos

Update contribution guide

* Outline GitLab workflow.
* Add information on how to get an account.
* Mention Code of Conduct.
parent e967f24d
# Contribution Guide
# Contributing to DORiE
We encourage everyone to contribute to the development and improvement of DORIE.
**Thank you for taking your time and contributing to DORiE!** :+1:
Please notice our included [Code of Conduct](CODE_OF_CONDUCT.md).
## Code of Conduct
### Restricted Access to Repository
Everybody participating in and contributing to this project is expected to
uphold our attached [Code of Conduct](CODE_OF_CONDUCT.md). Report any
unacceptable behavior to the [DORiE Developers][mailinglist]!
Free access to the [GitLab instance](https://ts-gitlab.iup.uni-heidelberg.de) of
the [TS-CCEES group](http://ts.iup.uni-heidelberg.de/) at the
[Institute of Environmental Physics](http://www.iup.uni-heidelberg.de/) is
restricted to members of said group.
Non-members are left with read-only access to public repositories.
## How to Contribute
### How to Contribute
DORiE is open source software. We strive for making every stage of development
public, sharing our advances, and incorporating community contributions. We
therefore prefer public contributions of any kind via GitLab.
If you would like to _actively contribute_ to DORiE, and you are affiliated
with [Heidelberg University](http://www.uni-heidelberg.de/) or an associated
research institute, you can become a member of the DORiE development team.
### GitLab Account
Otherwise, we encourage you to contribute bug reports, feature requests, or
improvement suggestions by contacting the development team
[via mail](mailto:dorieteam@iup.uni-heidelberg.de).
The DORiE repository is hosted on the private GitLab instance 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/).
As we want to keep most of our projects private, we disabled the regular
sign-up procedure. If you are not a member of said research group, we encourage
you to request an account [via mail][mailinglist]. Notice that you will only
receive an account flagged as
"[External User](https://docs.gitlab.com/ee/user/permissions.html#external-users-core-only)"
in this case, with access to the DORiE repository only.
Notice, however, that resources for development and support are streched thin:
_Your mileage may vary._
\ No newline at end of file
### Issues and Merge Requests
Report bugs, suggest features, or plan implementations in GitLab Issues. We
provide several Description Templates you may find useful for structuring
your Issue description and providing the required information.
Any changes to source code should be accompanied by a (unit) test verifying the
functionality. Designing this test ideally happens in the planning phase of
a change.
After a proper discussion of the Issue, and the resulting implementation, open
a Merge Request. Again, we encourage you to use one of the Description
Templates. Provide information on how your code changes and additions solve the
problem or implement the feature. Make sure that your MR fulfills the the
criteria for being merged.
### Old-Fashioned Email
Of course, you can always contact the developers directly
[via mail][mailinglist].
[mailinglist]: mailto:dorieteam@iup.uni-heidelberg.de
# DORiE
(**D**UNE-**O**perated **Ri**chards equation solving **E**nvironment)
DORiE is a software suite for solving the Richards Equation. The core feature is a C++ PDE-solver powered by [DUNE](https://dune-project.org/) and the [DUNE-PDELab](https://dune-project.org/modules/dune-pdelab/) module. It implements a Discontinous Galerkin (DG) discretization scheme on structured rectangular / cubic and unstructured simplex grids in two and three spatial dimensions, and makes use of advanced features like adaptive grid refinement.
The suite encapsulates a documentation and 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 [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 [IWR Heidelberg](https://typo.iwr.uni-heidelberg.de/home/).
DORiE is licensed under the [GNU General Public License v3.0](LICENSE).
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).
For the copyright notice and the list of copyright holders,
see [COPYING.md](COPYING.md).
see [`COPYING.md`](COPYING.md).
Contributions to the project are always welcome! Please notice our
[Contribution Guidelines](CONTRIBUTING.md).
## Installation Instructions
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 for inexperienced users it is recommended to use the deployment software [Docker](https://www.docker.com/) instead.
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.
No installation is necessary if you download DORiE as Docker image from
[Docker Hub](https://hub.docker.com/r/dorie/dorie/). You can then proceed
directly to the the instructions on [how to execute DORiE](#run-dorie-run).
The commands listed there are appended to the usual commands for running a
Docker container. See the description on Docker Hub for further details.
### Download Docker Image
### Download Docker image
No installation is necessary if you download DORiE as Docker image from
[Docker Hub](https://hub.docker.com/r/dorie/dorie/).
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,
......@@ -31,89 +70,54 @@ execute
Omitting the tag information downloads the image with tag `latest` which
refers to the latest stable version. You can download any tag by specifying
`<tag>`. The list of available 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`.
### Docker Installation
`<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`.
You can also compile any local version of DORiE into a new Docker image. To do
so, execute
docker build -f docker/dorie.dockerfile -t <img> .
from within the top-level DORiE source directory. Docker will use a prepared
image from Dockerhub and install DORiE into it. The created image will be called
`<img>`.
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.
### Manual Installation
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.
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.
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 strongly discouraged!
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!
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.
#### 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.
| Software | Version/Branch | Comments |
| ---------| -------------- | -------- |
| CMake | 3.10.2 |
| GCC | 7.3 | Alternatively: LLVM Clang >=6, or Apple Clang 10
| git |
| pkg-config |
| HDF5 | 1.10 | with MPI support
| FFTW3 | 3.3.7 | with MPI support
| Python | 3.6 |
| pip | 3.6 |
| MPI | | Tested with OpenMPI 2.1.1
| SuperLU | 5.2 |
| [yaml-cpp](https://github.com/jbeder/yaml-cpp) | >= 5.2.0 |
| [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
| [muparser](http://beltoforion.de/article.php?a=muparser) | master |
| [VTK](https://vtk.org/) | >= 7.1.1 | For the Python module only
| [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
#### Optional Packages
| Software | Version/Branch | Comments |
| ---------| -------------- | -------- |
| [dune-testtools](https://gitlab.dune-project.org/quality/dune-testtools) | releases/2.6 | Required for tests and parts of the user manual
| [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
#### Step-by-step Instructions
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/), you need to check if some of the packages require different installation options than displayed here.
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.
Manual installations on macOS require installing HDF5 from source. This can
be tricky, but the following instructions should work on a clean system.
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!
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!
1. **macOS** users need to start by installing the Apple Command Line Tools by executing
1. **macOS** users need to start by installing the Apple Command Line Tools by
executing
xcode-select --install
Make sure you have no pending software updates for your respective version of macOS!
Make sure you have no pending software updates for your respective version
of macOS!
2. Install third party packages:
......@@ -156,19 +160,21 @@ If you installed [Anaconda](https://conda.io/docs/user-guide/install/download.ht
make && make install
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:
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:
**Ubuntu:**
apt install libmetis-dev libparmetis-dev
**macOS:** _Support is dropped because ParMETIS is currently unavailable from Homebrew._
**macOS:** _Support is dropped because ParMETIS is currently unavailable
from Homebrew._
**Parallel runs without these two packages are possible but not supported!**
4. Clone the DUNE modules into a suitable folder on your machine.
Use `git checkout` to switch to the correct branches (see above).
4. Clone the [DUNE modules](#dune-Packages) into a suitable folder on your
machine. Use `git checkout` to switch to the correct branches.
5. Clone DORiE into the same folder.
......@@ -181,11 +187,16 @@ If you installed [Anaconda](https://conda.io/docs/user-guide/install/download.ht
CMAKE_FLAGS="-DDUNE_PYTHON_VIRTUALENV_SETUP=True -DDUNE_PYTHON_ALLOW_GET_PIP=True" ./dune-common/bin/dunecontrol all
to build all DUNE modules. Additionally, you can add `MAKE_FLAGS="-j X"` before the call to `dunecontrol` to compile on `X` processes in parallel.
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.
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.
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.
If you installed HDF5 from source (all macOS users) or use Anaconda,
If you installed HDF5 from source (all **macOS** users) or use Anaconda,
specify the path to your HDF5 installation by using the `HDF5_ROOT`
variable. On Ubuntu, add the path to the APT package,
......@@ -198,69 +209,122 @@ If you installed [Anaconda](https://conda.io/docs/user-guide/install/download.ht
to the `CMAKE_FLAGS` in the above command, replacing `<hdf5-path>` with the
path chosen as installation prefix when configuring HDF5.
### Recommended Third-Party Software
The following software packages are cross-platform, so you should be able to find a release that fits your operating system:
The following software packages are cross-platform, so you should be able to
find a release that fits your operating system:
* [Gmsh](http://gmsh.info/): An open-source CAD that can be used to create the `.msh` files used by DORiE to define triangular meshes.
* [ParaView](http://www.paraview.org/): A powerful post-processing tool for VTK files. Offers both visualization and data analysis tools.
* [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.
## Usage
### 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.
### Documentation
#### 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 |
The documentation of active branches is automatically deployed to our server.
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/)
#### 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/)
there. The documentation for other branches can be accessed via the
[overview page](https://hermes.iup.uni-heidelberg.de/dorie_doc/).
The documentation can also be built locally after DORiE has been properly
configured following the step-by-step instructions above. To build the
documentation, just run
dunecontrol --only=dorie make doc
or navigate to the `dorie/build-cmake` directory and call
documentation, move to the `dorie/build-cmake` directory and simply run
make doc
You will then find the index page of the Sphinx user manual at
`dorie/build-cmake/doc/html/index.html` and the index page of the Doxygen C++
code documentation at `dorie/build-cmake/doc/doxygen/html/index.html`.
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`.
### Run, DORiE, Run!
DORiE provides a command line interface (CLI) for all its functions.
## Usage
DORiE provides a command line interface (CLI) for all its user functions.
The required Python modules and all their dependencies are readily installed
into a virtual environment (`venv`), which has to be activated within a
into a Python virtual environment (`venv`), which has to be activated within a
shell session. You can do so by activating it in your current session
(Manual Installation only) or by running the Docker application.
#### 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 choice.
### 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.
Start up the Docker application by calling
docker run -it -v <dir>:/mnt <img>
where you replace `<dir>` with a local directory for storing input and output
data, and `<img>` with `dorie/dorie[:<tag>]`.
If you built a local Docker image, replace `<img>` appropriately.
You can also insert `$PWD` as `<dir>` if you want to mount your
current working directory.
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.
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.
Notice, that you can only use **local file paths** in all configuration settings
due to the directory mount.
Notice, that you can only use **local file paths** in all configuration
settings due to the directory mount.
#### Activate the `venv` locally
### Activate the `venv` locally
To activate the virtual environment within your current shell session, execute
source <path/to/>dorie/build-cmake/activate
......@@ -273,26 +337,34 @@ executing
deactivate
Notice that any virtual environment only applies to, and lasts for your current
terminal session!
Notice that any virtual environment only applies to, and lasts for, your
current terminal session!
_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.
#### Execute the application
### Execute the application
Any command to the DORiE application has the signature
dorie <cmd> [<opts>] [<args>]
Using the `-h` or `--help` option, you can find all available commands and
further help.
further help. To start your first simulation run, create a new directory and
enter it.
To start your first simulation run, create a new directory and enter it.
Place some exemplary configuration and boundary condition data files in there
by calling
#### 1 — Default input files
Create some exemplary configuration files along with parameter and boundary
condition data files by calling
dorie create
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
DORiE implements a lightweight wrapper around the `dune-randomfield`
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
......@@ -300,6 +372,9 @@ and then call
dorie pfg parfield.ini
A cheat sheet for this config file is also available from the documentation.
#### 3 — Perform a simulation
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
......@@ -312,38 +387,48 @@ Once prepared, call
to execute the solver.
### 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-install DORiE using `dunecontrol`.
## 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`.
If the problem persists, take a look at the [List of Known Bugs](https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/issues), or create an issue yourself. For problems related to the installation, refer to the sections below.
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.
#### Debugging
### Debugging
DORiE can be built with debugging flags via CMake. To do so, run
CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Debug" dunecontrol --only=dorie all
After building, a debugger can hook into the executables.
**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.
**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.
To re-create a release build, configure DORiE with the release build type by executing
To re-create a release build, configure DORiE with the release build type by
executing
CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Release" dunecontrol --only=dorie all
#### 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.
### 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.
| Test category | Build tests | Execute tests | Recommended build type |
| ------------- | ----------- | ------------- | ---------------------- |
| Unit tests | `make build_unit_tests` | `make unit_tests` | `Debug`
| System tests | `make build_system_tests` | `make system_tests` | `Release`
| Python tests | N/A | `make test_python` | any
| Python tests | _Not required_ | `make test_python` | _Any_
The `make` commands are to be executed from within the `build-cmake` directory.
......@@ -352,5 +437,7 @@ After building them with `Debug` flags and executing them, you can
retrieve code coverage information using the
[`gcovr`](https://gcovr.com/index.html) utility.
#### Further Help
[Open an issue](https://ts-gitlab.iup.uni-heidelberg.de/dorie/dorie/issues/new), or write to the [DORiE developer mailing list](mailto:dorieteam@iup.uni-heidelberg.de).
### 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).
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment