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

A connection to route water from a SurfaceWater storage to another node following a topographic gradient. More...

+ Inheritance diagram for KinematicSurfaceRunoff:
+ Collaboration diagram for KinematicSurfaceRunoff:

Detailed Description

A connection to route water from a SurfaceWater storage to another node following a topographic gradient.

\[q_{runoff} = A_{cross} d_{eff}^{2/3} \frac{\sqrt{S}}{n}\]

where:

  • \(q_{runoff}\) is the surface runoff
  • \(A_{cross}\) is the wetted crossectional flux area, given as \(d_{eff} \cdot w\)
  • \(w\) is the width of the shared boundary between the surface water storage and the target node
  • \(d_{eff}\) is the effective flow depth of the surface water.The effective flow depth is defined as

    \[d_{eff} = \begin{cases} V/A-d_{puddle}\ & V/A>d_{puddle} \\ 0.0 & V/A<=d_{puddle} \end{cases}\]

  • \(V\) the volume of stored water in the surface in \(m^3\)
  • \(A\) the area of the cell in \(m^2\)
  • \(d_{puddle}=V_{puddle}/A\) the average depth of water in the surface water needed to start run off
  • \(S = \|\frac{\Delta z\|}{d}\) the slope between surfacewater center and the target node
  • \(n\) the manning roughness

The KinematicSurfaceRunoff can be used as a cell connecting flux as in:

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

This results in a connection of the surfacewater storage of each cell with the surface water storages of its neighbors see

Public Member Functions

 KinematicSurfaceRunoff (cmf::upslope::SurfaceWater::ptr left, cmf::water::flux_node::ptr right, real flowwidth, real distance=-1)
 Creates a KinematicSurfaceRunoff between a SurfaceWater (left) with another (right) node.
 
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.
 

Public Attributes

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

Constructor & Destructor Documentation

◆ KinematicSurfaceRunoff()

KinematicSurfaceRunoff ( cmf::upslope::SurfaceWater::ptr left,
cmf::water::flux_node::ptr right,
real flowwidth,
real distance = -1 )

Creates a KinematicSurfaceRunoff between a SurfaceWater (left) with another (right) node.

Parameters
leftA surfacewater storage
rightThe target node
flowwidththe length of the shared boundary between left and right in m
distancethe distance between left and right in m. If d<=0m, the distance is calculated according to the position of left and right

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