2.0.0b10
catchment modelling framework
Loading...
Searching...
No Matches
Lateral Darcian flow

next...

Darcian flow connections

Lateral subsurface flow in physically based models are usual based on some variant or simplification of Darcy's law. CMF has four different flux connections to describe the lateral subsurface flux between variable saturated soil layers. The naming conventions of the darcian flux connections are not chosen very well and are subject to change.

As a basis, all flux connections follow Darcy's equation:

\[ q = \nabla \Psi T w \]

where:

  • \(q\) is the flux between to horizontal adjacent soil layers in \(m^3/day\)
  • \(\nabla \Psi\) is the gradient over distance \(d [m]\)
  • \(T\) is the transmissivity between the layers in \(m^2/day\)
  • \(w\) is the width of the shared boundary of the layers in \(m\).

The four variants of Darcy flow implemented in cmf differ in their way, how transmissivity \(T\) and the head gradient \(\nabla \Psi\) of the interface of two adjacent soil layers is calculated.

The following variants are available and explained below in detail:

  • \(T_u\): unsaturated Transmissivity
  • \(T_s\): saturated Transmissivity
  • \(\nabla\Psi(\theta)\): Head based gradient
  • \(\nabla\Psi(z)\): Topographic gradient

These variants lead to the four combinations of \(T\) and \(\nabla\Psi\):

\(T_u\) \(T_s\)
\(\nabla\Psi(\theta)\) Richards_lateral Darcy
\(\nabla\Psi(z)\) DarcyKinematic TopographicGradientDarcy

Transmissivity variants

a) Unsaturated transmissivity \(T_u\)

\[ T(\theta) = K(\theta)\ \Delta z \]

where:

  • \(K(\theta)\) is the harmonic mean of the unsaturated conductivity in \(\frac m{day}\), cf. retention curve
  • \(\Delta z\) is the thickness of the interface of the adjacent layers

This transmissivity function is used in Richards_lateral and DarcyKinematic

b) Saturated transmissivity \(T_s\)

\[ T_{sat}(\Psi) = K_{sat}\ (\Delta z + \Psi_M) \]

where:

  • \(K_{sat}\) is the saturated conductivity in \(\frac m{day}\)
  • \(\Delta z + \Psi_M\) is the height of the water table above the layer bottom using the matrix potential \(\Psi_M\). If the saturated depth is below the lower layer thickness, the flow depth is 0.

Used by Darcy and TopographicGradientDarcy

Gradient variants

a) Head based gradient \(\nabla \Psi(\theta)\)

The two connections types, Richards_lateral and Darcy are using the real, water content dependent head of the connected soillayers to calculate the gradient. This makes it more difficult to solve, yet more realistic than option b.

\[ \nabla \Psi = \frac{\Psi_1(\theta_1) - \Psi_2(\theta_2)}{d} \]

where \(d\) is the distance between the soil layers.

b) Topographic gradient \(\nabla \Psi(z)\)

To make the system simpler to solve, in this option, used by TopographicGradientDarcy and DarcyKinematic, the topographic elevation of the cells is used as a proxy for the real water pressure head. This option is much simpler to solve for the system, however, the results are only realistic in case of water tables roughly parallel to the surface.

\[ \nabla \Psi = \frac{z_{cell,1} - z_{cell,2}}{d} \]

Connecting cell layers using a darcian lateral connection

All dedicated lateral connection provide the same interface for the creation of a connection. Below we are going to use cmf.Darcy as an example, but it works the same way with the other three connections.

cmf.Darcy(leftnode, rightnode, FlowWidth, distance=0)
  • leftnode needs to be a SoilLayer object - rightnode is any flux_node object - FlowWidth is the width of the connection in m - distance is the distance between leftnode and rightnode in m. If it is left to 0 (default), the distance is calculated from the position of the nodes.

When rightnode is another soillayer the flow thickness is calculated as the common interface of the soillayers according to their depth below ground. Otherwise the interface A is calculated as the thickness of leftnode times the flow width.

However, if you have several cells with a defined topology, one can use the topological information and create lateral connections for all layers of all cells with a single command:

cmf.connect_cells_with_flux(cells, cmf.Darcy, start_at_layer=0)
connect_cells_with_flux(cells, connection, start_at_layer=0)
Definition __init__.py:30

Here, cells is a collection of cells, eg. the whole project or a list of cells if you want to install the connection only for a part of your cells. The start_at_layer argument is optional. If it is set to a number n, the connection is not installed for the n-1 upper layers of a cell.