Surface runoff
This page is a work in progress. If you have any questions or notice any errors, please raise an issue.
Overview
Surface runoff occurs when the rate of water reaching the surface exceeds the rate of infiltration into the soil. Surface runoff (overland flow) is often distinguished from other sources of subsurface runoff such as interflow in the vadose zone and baseflow in the saturated zone. Surface runoff is a key output of both hydrological and global land surface models since it serves as a input flux to lakes and rivers. Runoff that is routed into rivers can then serve as a key input to river routing schemes that produce freshwater fluxes for ocean components of Earth system models.
Terrarium.AbstractSurfaceRunoff — Type
Base type for surface runoff processes.
subtypes(Terrarium.AbstractSurfaceRunoff)1-element Vector{Any}:
DirectSurfaceRunoffDirect runoff
The simplest runoff scheme provided by Terrarium is DirectSurfaceRunoff which first routes all rainwater into the ground as infiltration and then simply routes the residual water flux as runoff.
Water in excess of instantaneous infiltration capacity accumulates as surface water and slowly drains back into the soil,
\[\begin{equation} D = \frac{S}{\tau_r} \end{equation}\]
where $S$ is the accumulated surface water depth (m) and $\tau_r$ is the surface water drainage timescale (s).
Terrarium.DirectSurfaceRunoff — Type
struct DirectSurfaceRunoff{NF} <: Terrarium.AbstractSurfaceRunoff{NF}Simple surface runoff scheme that computes runoff as
\[R = P + D - I\]
where P is precipitation reaching the ground, D is drainage from accumualted excess water at the surface, and I is infiltration into the soil.
Properties:
τ_r: Surface water removal timescale
variables(DirectSurfaceRunoff(Float32))Variables
├─ Prognostic:
├─ Auxiliary:
├── surface_runoff [m s^-1] on XY{Center, Center}
├── infiltration [m s^-1] on XY{Center, Center}
├─ Inputs:
├─ Namespaces:
Infiltration capacity and soil saturation
Infiltration is limited by both the type and hydrological state of the soil. The effective infiltration can be calculated as
\[\begin{equation} I = \min(P_{\text{ground}}, I_{\max}) \times (1 - f_{\text{sat}}) \end{equation}\]
where $I_{\max}$ is here the maximum infiltration capacity determined by soil hydraulic conductivity (m/s) and $f_{\text{sat}}$ is the saturation fraction of the upper soil layer (0 = dry, 1 = saturated) (-).
When soil becomes saturated ($f_{\text{sat}} = 1$), infiltration drops to zero and all precipitation is routed to either surface runoff or surface water storage.
Water table and drainage processes
This simplified surface runoff scheme does not explicitly model subsurface drainage or return flows from the water table. It is appropriate for upland areas where:
- Water table is deep relative to the surface
- Saturation excess runoff is minimal
- Hortonian overland flow (infiltration excess) is dominant
In riparian areas or regions with high water tables, more sophisticated approaches (e.g., variable source areas) would be necessary to capture saturation-excess runoff.
Process interface
Terrarium.compute_auxiliary! — Method
compute_auxiliary!(
state,
grid,
runoff::DirectSurfaceRunoff,
canopy_interception::Terrarium.AbstractCanopyInterception,
soil::Terrarium.AbstractSoil,
args...
)
Kernel functions
Terrarium.compute_surface_drainage — Function
compute_surface_drainage(
runoff::DirectSurfaceRunoff{NF},
surface_excess_water
) -> Any
Compute surface drainage flux from the current surface_excess_water resevoir state.
Terrarium.compute_infiltration — Function
compute_infiltration(
runoff::DirectSurfaceRunoff{NF},
influx,
sat_top,
max_infil
) -> Any
Compute infiltration from the given influx (water available for infiltration), saturation of the uppermost soil layer sat_top, and the maximum allowed infiltration max_infil.
Terrarium.compute_surface_runoff — Function
compute_surface_runoff(
runoff::DirectSurfaceRunoff,
precip_ground,
surface_drainage,
infil
) -> Any
Compute surface runoff as precipitation + surface_drainage - infiltration.