2.0.0b10
catchment modelling framework
|
The state of a water storage in cmf is always the volume of the actually stored water, and the change rate of the state is the sum of the fluxes in an out of the water storage (finite volume, see FiniteVolumeMethod). However, physical descriptions of water flux is often based on the gradient of the hydraulic head in space, like Darcian or Richards approaches, and the 2nd St. Venant equation for surface water. To make such approaces available in cmf, a functional relation between volume and hydraulic head (or potential) needs to be available. In cmf, the term potential (symbol \(\Psi\)) is used.
For unsaturated porous media, the relation between water content and head is given by a retention curve, for saturated porous media this relation is often modelled by a compressability term (eg. in MODFLOW). For surface water, the relation of volume to head is given by the height of the watertable above a model wide reference height, often sea level.
The potential or hydraulic head for porous media is commonly defined as:
\[ \Psi_{tot} = z + \Psi_M(\theta) + p + \Psi_O \]
where:
cmf follows the definition of water potential from above, with two important exceptions:
With these definitions, \(\Psi_{tot}\) is in cmf only a function of the position of the water storage in space and its water content, which is again a function of the stored water volume in m³
\[\Psi_{tot} = z + \Psi_M(\theta)\]
Every flux node in cmf has a property potential
returning the absolute potential \(\Psi_{tot}\) of that flux node. For soil layers, one can query the gravitational potential \(z\) and the matrix potential \(\Psi_M\) also. The gravitational potential for layer l
is defined as the height of the upper layer boundary above reference height
The matrix potential is depending on the water content by the retention curve (see below).
To get an easy to interprete indicator for the vertical potential distribution in a cell, the cell has a property saturated_depth
. If you query the saturated depth of a cell you get the potential of the first saturated layer \(\Psi_M \geq 0m\) relative to the cell height. Hence
is equal to
This works quite fine as an indicator of cell saturation, as long as you do not have perched water tables. In case of a temporary existent perched water table over a confining layer, you may have sharp jumps in saturated_depth
, also the potential of each layer has a smooth behaviour.
It is also possible to set the saturated_depth
of a cell for simplified setting of initial conditions. All layers of the cell will be put into vertical hydrostatic equilibrium for that cell with the same potential. Hence
is equal to
If you want to set a whole landscape into hydrostatic equilibrium in a gradient based model, you need to set the saturated_depth
for each cell with care to their respective height above reference height.
A number of parametric retention curves exists, however the VanGenuchten-Mualem (VanGenuchten 1980) retention curve is the most widely used. Another widely used, older retention curve is the Brooks-Corey curve (Brooks & Corey 1964). Both curves are consist of the pressure - water content relation and another function, based on the same parameters to calculate the unsaturated hydraulic conductivity. Additional retention curves can be easily implemented in cmf on request, however they must meet the following conditions:
Until now the VanGenuchten-Mualem curve and the Brooks-Corey curve are implemented in cmf. For more conceptual models the so called linear retention curve can be used.
All curves share the definition of the water content \(\theta\) and the water filled pore space (wetness) \(W\):
\[ \theta = \frac V {A \Delta z} \]
where:
\[ W = \frac{\theta - \theta_r}{\Phi - \theta_r} \]
where:
For the comparisons of the different retention curves, we define a function to plot the curves. You can play around with the parameters and see the different effects.
Definition from the API-documentation: VanGenuchtenMualem
The equation of the curve and the parameters are described in the API-documentation. In the following, you will create a VanGenuchten-Mualem curve with the follwing paramters in cmf:
Parameter | value | unit | Description |
---|---|---|---|
\(K_{sat}\) | 2.5 | \(m/day\) | Saturated conductivity |
\(\alpha\) | 0.1 | \(1/cm\) | Inverse of water entry potential |
\(n\) | 1.6 | Poresize distribution parameter | |
\(\Phi\) | 0.52 | \(m^3/m^3\) | Porosity |
As noted above, cmf mimics the hydrostatic pressure by allowing a slight oversaturation for the case of hydrostatic pressure \(W(\Psi_M) > 1.0\ \forall\ \Psi_M>0\). To archive that, at a wetness near to saturation ( \(W_0\)), the VanGenuchten curve \(\Psi_M(W)\) is replaced by a parabolic extrapolation function \(f_{ex}(W)\), which has the following properties:
Choosing w0 does affect the degree of oversaturation strongly, but has different effect for different parameters, as the following table shows for the VanGenuchten curve from the example.
\(w0\) | \(f_{ex}(+0.5\ m)\) | \(f_{ex}(+1.0\ m)\) | \(f_{ex}(+2.0\ m)\) |
---|---|---|---|
0.99 | 1.06 | 1.088 | 1.128 |
0.995 | 1.038 | 1.056 | 1.081 |
0.999 | 1.013 | 1.019 | 1.028 |
0.9996 | 1.007 | 1.01 | 1.015 |
0.9999 | 1.003 | 1.004 | 1.006 |
From an accurcy view point, the oversaturation should be as small as possible. However, the steeper \(f_{ex}(W)\) for W>1, the more unstable is the numerical solution. The user needs to define, which oversaturation is tolerable and set W0 accordingly. If you find a 1% oversaturation at \(\Psi_M=+1.0\) tolerable, then set \(W_0=0.9996\) for this curve as follows:
To find the optimal point one can use the fit_w0 method:
Definition from the API-documentation: BrooksCoreyRetentionCurve
Definition from the API-documentation: LinearRetention