README.md 10 KB
Newer Older
Dion Haefner's avatar
Dion Haefner committed
1 2 3 4 5
# Welcome to DORiE!
(__D__UNE-__O__perated __Ri__chards equation solving __E__nvironment)

[![build status](http://shangrila.iup.uni-heidelberg.de:30000/ci/projects/1/status.png?ref=master)](http://shangrila.iup.uni-heidelberg.de:30000/ci/projects/1?ref=master)

Dion Haefner's avatar
Dion Haefner committed
6
DORiE is a software suite for solving Richard's Equation. The core feature is a C++ PDE-solver powered by [DUNE](https://dune-project.org/). 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.
7 8 9

The suite encapsulates a documentation and various tools for program setup, program testing, and output analysis, which are mostly written in Python.

Dion Haefner's avatar
Dion Haefner committed
10
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, 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. 
11 12 13 14


# Installation Instructions

Dion Haefner's avatar
Dion Haefner committed
15
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.
16

Dion Haefner's avatar
Dion Haefner committed
17
In any case, 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.
18

19
## Docker Installation
Dion Haefner's avatar
Dion Haefner committed
20
Install Docker on your machine. We have prepared a [DORiE DUNE Environment Image on Dockerhub](https://hub.docker.com/r/dorie/dune-env/), which is a modified image of the Ubuntu OS that has all dependencies readily installed. The current version is 2.4 (referencing the DUNE module version 2.4).
21
Run a new container from this image by calling
22 23 24

    docker run -i -t dorie/dune-env:2.4 /bin/bash

Dion Haefner's avatar
Dion Haefner committed
25
Docker will automatically download the image if necessary. Use the `-v` option of the `run` command to mount a local directory into the container:
26 27 28

    -v <hostdir/dorie>:/opt/dune/dorie

29
This way, you can access the content of the (still empty) folder of the virtual machine from your local `<hostdir>/dorie` directory. *Mounting directories is not possible after your container has been started!*
30

Dion Haefner's avatar
Dion Haefner committed
31
Next, use `git clone` to download the DORiE repository into the shared folder. Enter the container, and execute
32 33 34

    dunecontrol --only=dorie all

35 36 37
to build DORiE. Lastly, install the DORiE binaries by calling

    dunecontrol --only=dorie make install
38

39
### Update DUNE
40 41 42 43
The DUNE modules in the repository might be outdated. You can update to the newest versions by calling

    dunecontrol update

44
Then compile and install all modules again by executing
45

46
    dunecontrol all && dunecontrol make install
47

Dion Haefner's avatar
Dion Haefner committed
48

49 50 51 52
## Manual Installation
Installing all packages manually can be quite an effort, but useful for developers who want to easily access documentation material and source files of the dependency packages. 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!

### Dependencies
Dion Haefner's avatar
Dion Haefner committed
53
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.
54 55 56

| Software | Version/Branch | Comments |
| ---------| -------------- | -------- |
Dion Haefner's avatar
Dion Haefner committed
57
| CMake | >= 2.8.12 |
58 59 60
| GCC | >= 5 |
| git |
| pkg-config |
Dion Haefner's avatar
Dion Haefner committed
61 62 63 64 65 66
| HDF5 | | with MPI support
| FFTW3 | | with MPI support
| Python | 2.7 or 3.x |
| pip | 2.7 or 3.x |
| MPI | | Tested with OpenMPI and Mpich
| SuperLU | 4.3 or 5.x |
67
| ----- | ----- | ----- |
Dion Haefner's avatar
Dion Haefner committed
68
| VirtualEnv | | Install via `pip` |
69
| ----- | ----- | ----- |
Dion Haefner's avatar
Dion Haefner committed
70
| [UG](https://gitlab.dune-project.org/ug/ug) | 3.12.1 | Follow the [IWR Installation Instructions](http://www.iwr.uni-heidelberg.de/frame/iwrwikiequipment/software/ug)
71 72 73 74 75 76 77 78 79 80
| [dune-common](https://gitlab.dune-project.org/core/dune-common) | releases/2.4
| [dune-geometry](https://gitlab.dune-project.org/core/dune-geometry) | releases/2.4
| [dune-grid](https://gitlab.dune-project.org/core/dune-grid) | releases/2.4
| [dune-istl](https://gitlab.dune-project.org/core/dune-istl) | releases/2.4
| [dune-localfunctions](https://gitlab.dune-project.org/core/dune-localfunctions) | releases/2.4
| [dune-typetree](https://gitlab.dune-project.org/pdelab/dune-typetree) | releases/2.4
| [dune-pdelab](https://gitlab.dune-project.org/pdelab/dune-pdelab) | releases/2.4
| [dune-python](https://gitlab.dune-project.org/quality/dune-python) | releases/2.4
| [dune-testtools](https://gitlab.dune-project.org/quality/dune-testtools) | releases/2.4

Dion Haefner's avatar
Dion Haefner committed
81
If you also want to build the documentation, you will additionally need to install Doxygen.
82

Dion Haefner's avatar
Dion Haefner committed
83 84 85 86
### Manual Installation on Ubuntu
The following instructions follow the basic installation on a fresh Ubuntu system and are similarly executed to create the DORiE Docker image.

1. Install third party packages:
Dion Haefner's avatar
Dion Haefner committed
87
    
Dion Haefner's avatar
Dion Haefner committed
88 89 90 91 92
        apt update 
        apt install autoconf bison cmake doxygen flex gcc-5 g++-5 gfortran-5 \
                    git libatlas-base-dev libfftw3-dev libfftw3-mpi-dev \
                    libfreetype6-dev libhdf5-mpi-dev libopenmpi-dev libpng-dev \
                    libsuperlu-dev libxft-dev python3-dev python3-pip
93 94 95 96 97

2. Install the necessary Python packages using `pip`:
        
        python3 -m pip install virtualenv

Dion Haefner's avatar
Dion Haefner committed
98
3. Clone the specified version of UG into a suitable folder on your machine. Install it by calling
99 100

        autoreconf -is
Dion Haefner's avatar
Dion Haefner committed
101
        ./configure --enable-parallel --without-x --enable-dune --enable-system-heap
102 103
        make && make install

Dion Haefner's avatar
Dion Haefner committed
104 105 106
4. Clone the DUNE modules and DORiE into a suitable folder on your machine. Make sure that you check out the correct branches (2.4 release branch). Enter the parent folder, and call

        ./dune-common/bin/dunecontrol all
107

Dion Haefner's avatar
Dion Haefner committed
108 109 110
    If you installed software into paths not appended to your `PATH` variable, you will have to add a custom options file to make sure that CMake finds all packages. See the [DUNE Installation Instructions](https://dune-project.org/doc/installation/) for details. CMake will throw an error if required packages are not found.
 
5. To install all DUNE packages into system locations (so you can call `dunecontrol` and `dorie` from anywhere), you can run
111

112
        ./dune-common/bin/dunecontrol make install
113

Dion Haefner's avatar
Dion Haefner committed
114
    This may require `sudo` rights on your machine. If you choose not to do this, make sure to append the location of `dunecontrol` (`dune-common/bin`) and `dorie` (`dorie/build-cmake/bin`) to your search path.
115 116 117 118

## 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:
Dion Haefner's avatar
Dion Haefner committed
119 120 121 122

* [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.

123
# Usage
Dion Haefner's avatar
Dion Haefner committed
124

125
## Documentation
Dion Haefner's avatar
Dion Haefner committed
126

127
The documentation of the current `master` branch can be found [online](http://dorie-docs.gitballoon.com) (password: `richards`).
Dion Haefner's avatar
Dion Haefner committed
128

Dion Haefner's avatar
Dion Haefner committed
129
The documentation can be built after DORiE has been properly configured (i.e., by calling `dunecontrol`). Just run
Dion Haefner's avatar
Dion Haefner committed
130

Dion Haefner's avatar
Dion Haefner committed
131
    dunecontrol --only=dorie make doc
Dion Haefner's avatar
Dion Haefner committed
132

133
The documentation files can now be found in the subfolder `dorie/build-cmake/doc`.
Dion Haefner's avatar
Dion Haefner committed
134

135
## Usage
Dion Haefner's avatar
Dion Haefner committed
136
During `make install`, DORiE installs a wrapper to access the functions and executables of DORiE from any location on your device. After a successful installation, you can call the wrapper by simply executing
137 138

    dorie <command>
Dion Haefner's avatar
Dion Haefner committed
139 140
    
If you did not run `dunecontrol make install`, you can find the wrapper in the `dorie/build-cmake/bin` folder of your installation.
141 142 143 144 145 146 147 148

To start your first simulation run, create a new directory and enter it. Place some exemplary configuration files in there by calling

    dorie create

Tweak the paramters to your liking and then call

    dorie run <inifile>
Dion Haefner's avatar
Dion Haefner committed
149

150
to execute the program.
Dion Haefner's avatar
Dion Haefner committed
151

152
List all available commands and find further help by executing
Dion Haefner's avatar
Dion Haefner committed
153

154
    dorie help
Dion Haefner's avatar
Dion Haefner committed
155

156
## Troubleshooting
Dion Haefner's avatar
Dion Haefner committed
157 158 159
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`.

If the problem persists, take a look at the [List of Known Bugs](http://shangrila.iup.uni-heidelberg.de:30000/dorie/dorie/issues?assignee_id=&author_id=&label_name=bug&milestone_id=&scope=all&sort=created_desc&state=opened), or create an issue yourself. For problems related to the installation, refer to the sections below.
Dion Haefner's avatar
Dion Haefner committed
160

161
### Debugging
Dion Haefner's avatar
Dion Haefner committed
162
DORiE can be built with debugging flags via CMake. To do so, run
163

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

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

Dion Haefner's avatar
Dion Haefner committed
168
**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.
169

Dion Haefner's avatar
Dion Haefner committed
170
To re-create a release build, configure DORiE with the release build type by executing
171

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

Dion Haefner's avatar
Dion Haefner committed
174
### DORiE is running, but I suspect that something is wrong
Dion Haefner's avatar
Dion Haefner committed
175
You can execute system tests in order to ensure that DORiE is running correctly and producing the expected results:
Dion Haefner's avatar
Dion Haefner committed
176

Dion Haefner's avatar
Dion Haefner committed
177
    ARGS="--output-on-failure" dunecontrol --only=dorie make test
Dion Haefner's avatar
Dion Haefner committed
178 179 180

You will be informed whether each test has been passed or failed, and you may find additional output in the DORiE build directory.

181
### Further Help
Dion Haefner's avatar
Dion Haefner committed
182
Open an issue, or write to the [DORiE developer mailing list](mailto:dorieteam@iup.uni-heidelberg.de).