2.0.0b10
catchment modelling framework
Loading...
Searching...
No Matches
MatrixInfiltration Class Reference

Connects the surfacewater and the most upper layer using a Richards equation like infiltration model. More...

+ Inheritance diagram for MatrixInfiltration:
+ Collaboration diagram for MatrixInfiltration:

Detailed Description

Connects the surfacewater and the most upper layer using a Richards equation like infiltration model.

The potential infiltration is calculated according to the Richards equation. The gradient is from the cell surface to the center of the first layer and the conductivity is the geometric mean of the wetted surface ( \(K_{sat}\)) and the conductivity of the layer center ( \(K(\theta_{layer})\)

\begin{eqnarray*} q_{max} &=& \frac{\Psi_{surface} - \Psi_{soil}}{\Delta z} K A_{cell} \\ K &=& \sqrt{K\left(\theta_{layer}\right)K_{sat}} \\ \Delta z &=& z_{cell} - z_{layer center} \end{eqnarray*}

If the surface water is modeled by a distinct water storage, the actual infiltration is given as the product of the potential infiltration with the coverage of the surface water cmf::upslope::Cell::surface_water_coverage

\[q_{act} = q_{max} \frac{A_{water}}{A_{cell}}\]

If the surface water is no storage on its own, but just a water distribution node, the actual infiltration is the minimum of the potential infiltration and the current inflow (rain, snow melt) to the surface

\[q_{act} = \min\left(q_{max}, \sum{q_{in,surfacewater}}\right)\]

Public Member Functions

real conc (cmf::math::Time t, const cmf::water::solute &_Solute)
 Returns the concentration of the flux.
 
flux_node::ptr get_target (const flux_node &inquirer)
 Returns the other end of a connection than the asking end.
 
flux_node::ptr get_target (int index) const
 With index 0, the left node is returned, with index 1 the right node of the connection.
 
real get_tracer_filter ()
 A value ranging from 0 to 1 to filter tracers out of the water flux.
 
real get_tracer_filter (solute S)
 A value ranging from 0 to 1 to filter tracers out of the water flux.
 
bool kill_me ()
 Deregisters this connection from its nodes. Returns true if only one reference is left.
 
flux_node::ptr left_node () const
 Returns the left node of this connection.
 
real q (const flux_node &inquirer, cmf::math::Time t)
 Returns the current flux through a connection. Negative signs mean out of the inquirer, positive are inflows to the inquirer.
 
void refresh (cmf::math::Time t)
 Performes a new calculation of the flux.
 
flux_node::ptr right_node () const
 returns the right node of this connection
 
void set_tracer_filter (real value)
 A value ranging from 0 to 1 to filter tracers out of the water flux.
 

Static Public Member Functions

static void use_for_cell (cmf::upslope::Cell &c)
 Creates the connection between surfacewater and first soil layer.
 

Public Attributes

const std::string type
 A string describing the type of the connection.
 

Member Function Documentation

◆ conc()

real conc ( cmf::math::Time t,
const cmf::water::solute & _Solute )
inherited

Returns the concentration of the flux.


If not overridden, it returns the concentration of the source of the flux (direction depending)

◆ get_tracer_filter()

real get_tracer_filter ( )
inherited

A value ranging from 0 to 1 to filter tracers out of the water flux.

1.0 is no filter and 0.0 means no solute is crossing this connection

◆ set_tracer_filter()

void set_tracer_filter ( real value)
inherited

A value ranging from 0 to 1 to filter tracers out of the water flux.

1.0 is no filter and 0.0 means no solute is crossing this connection