# Feature Overview

DORiE is a flexible partial differential equation (PDE) solver based on DUNE and the DUNE-PDELab module. DORiE runs in 2D and 3D and computes solutions on structured and unstructured grids.

## Richards Solver

The Richards equation describes water flow in unsaturated porous media by two state variables, the matric head $$h_m \, [\mathrm{m}]$$ and the volumetric water content $$\theta_w$$,

$\frac{\partial}{\partial t} \theta_w - \nabla \left[ K (\theta_w) \left[ \nabla h_m - \mathbf{\hat{g}} \right] \right] = 0,$

where $$K \, [\mathrm{ms}^{-1}]$$ is the hydraulic conductivity and $$\mathbf{\hat{g}}$$ is the unit vector in the direction of gravitational force. To solve the equation, we need to convert the matric head into water content and vice versa. The function $$\theta_w (h_m)$$ is called retention curve. Both functions $$\theta_w (h_m)$$ and $$K (\theta_w)$$ are supplied by a parameterization and represent the hydraulic material properties.

DORiE solves the Richards equation for the matric head because it that a reformulation of the matric potential $$\psi_m [\mathrm{Jm}^{-3}]$$ which, by definition, is continuous and differentiable at any point in the soil. Depending on the soil architecture, the hydraulic parameters may be discontinuous which would lead to water content and conductivity exhibiting singularities.

Use the value richards in the simulation.mode keyword to run the standalone Richards solver.

### Solver Options

DORiE includes a finite volume (FV) and a discontinuous Galerkin (DG) solver for the Richards equation. The FV solver can be selected for structured rectangular grids by setting richards.numerics.FEorder = 0 when adaptivity is disabled. The DG solver is used for orders $$k \geq 1$$ and is available for all grid options.

## Solute Transport Solver

The solute transport equation for unsaturated media describes movement of solute by the solute concentration $$c_w \, [\mathrm{kg}/\mathrm{m}^3]$$,

$\frac{\partial}{\partial t} c_w \theta_w - \nabla \left[ \vec{j}_w c_w + D \theta_w \nabla c_w \right] = 0,$

where $$D \, [\mathrm{m}^2/\mathrm{s}]$$ is the effective hydrodynamic dispersion tensor, and $$\vec{j}_w$$ is the water flux. Currently, $$D$$ can only be used as a constant parameter by the keyword effHydrDips in the configuration file. The solute concentration per total volume $$c_t \, [\mathrm{kg}/\mathrm{m}^3]$$ is calculated by multiplying the concentration in the water phase with the volumetric water content,

$c_t = c_w \theta_w$

The solute transport requires a water flux of the unsaturated media, hence, the Richards solver must be utilized to solve them. Use the value richards+transport in the simulation.mode keyword to run the solute transport solver.

## Advanced Solver Features

• Unstructured Grids: The DG scheme of DORiE can be applied onto any grid geometry. Users can load unstructured simplex grids into DORiE via GMSH .msh files. DORiE will then use an unstructured grid manager. See Grid Creation and Mapping for details.

• Adaptive Grid Refinement (h-refinement): DORiE supports adaptive local grid refinement based on an a-posteriori flux error estimator. Enabling grid refinement requires using an unstructured grid manager. Adaptivity can be enabled by setting a refinement policy in the Configuration File.

• Parallel Execution: DUNE modules are generally set up to support parallel execution on distributed hardware via MPI. DORiE supports parallel execution on a best effort basis. This feature is currently only supported for structured rectangular grids. Parallel execution is controlled through the Command Line Interface.

## Available Models

Several settings like solver coupling, spatial dimension, or polynomial order must be given at compile time. DORiE includes a discrete set of setting combinations users may choose from via the configuration file. If DORiE is run from its public Docker image or with the default targets built locally on your machine, these are the available combinations of options:

simulation.mode

grid.dimensions

richards.numerics.FEorder

transport.numerics.FEorder

GMSH Grid and grid refinement

Parallel execution

richards

2

0

2

1..3

on structured grids

3

0

3

1

on structured grids

richards+transport

2

0

same as richards

2

1..3

same as richards

on structured grids

3

0

same as richards

3

1

same as richards

on structured grids

• : Grid refinement on rectangular grids produces hanging nodes which are currently not considered in the flux reconstruction. This can result in erroneous results computed by the transport solver.