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

Connects the surfacewater and the most upper layer using a Green-Ampt equation like infiltration. More...

+ Inheritance diagram for GreenAmptInfiltration:
+ Collaboration diagram for GreenAmptInfiltration:

Detailed Description

Connects the surfacewater and the most upper layer using a Green-Ampt equation like infiltration.

The Green-Ampt formula is given as:

\[q(t) = -K_s \frac{dh}{dz} A\]

where:

  • \(q(t)\) is the infiltration rate in m3/day
  • \(K_s\) is the saturated conductivity in m/day
  • \(\frac{dh}{dz}\) is the hydraulic gradient in the wetting front
  • \(A\) is the surface area of the cell

The gradient in the wetting front is calculated as:

\[\frac{dh}{dz} = \frac{h_f - h_0}{Z_f} = \frac{|\Psi_f| + Z_f}{Z_f}\]

where:

  • \(h_f\) is the hydraulic head at the bottom of the wetting front in m
  • \(h_0\) is the hydraulic head at the surface in m
  • \(Z_f\) is the length of the wetting front in m

Since \(Z_f\) is unknown, the depth of the wetting front can be approximated by:

\[Z_f = \frac{F}{\theta_s - \theta_i}\]

with:

  • \(F\) the accumulated volume per area of infiltrated water
  • \(\theta_s, \theta_i\) the volumetric water content at saturation resp. at start of the infiltration

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