wland

Base model wland is the core of the HydPy implementation of all WALRUS type models (Brauer et al., 2014), focussing on the interaction between surface water and near-surface groundwater.

Method Features

class hydpy.models.wland.wland_model.Model[source]

Bases: ELSModel

The HydPy-W-Land model.

The following “inlet update methods” are called in the given sequence at the beginning of each simulation step:
  • Calc_FR_V1 Determine the fraction between rainfall and total precipitation.

  • Calc_PM_V1 Calculate the potential snowmelt.

The following methods define the relevant components of a system of ODE equations (e.g. direct runoff):
  • Calc_FXS_V1 Query the current surface water supply/extraction.

  • Calc_FXG_V1 Query the current seepage/extraction.

  • Calc_PC_V1 Calculate the corrected precipitation.

  • Calc_PETL_V1 Adjust the potential evapotranspiration of the land areas.

  • Calc_PES_V1 Adapt the potential evaporation for the surface water area.

  • Calc_TF_V1 Calculate the total amount of throughfall.

  • Calc_EI_V1 Calculate the interception evaporation.

  • Calc_SF_V1 Calculate the frozen amount of throughfall (snowfall).

  • Calc_RF_V1 Calculate the liquid amount of throughfall (rainfall).

  • Calc_AM_V1 Calculate the actual snowmelt.

  • Calc_PS_V1 Calculate the precipitation entering the surface water reservoir.

  • Calc_W_V1 Calculate the wetness index.

  • Calc_PV_V1 Calculate the rainfall (and snowmelt) entering the vadose zone.

  • Calc_PQ_V1 Calculate the rainfall (and snowmelt) entering the quickflow reservoir.

  • Calc_Beta_V1 Calculate the evapotranspiration reduction factor.

  • Calc_ETV_V1 Calculate the actual evapotranspiration from the vadose zone.

  • Calc_ES_V1 Calculate the actual evaporation from the surface water reservoir.

  • Calc_FQS_V1 Calculate the quickflow.

  • Calc_FGS_V1 Calculate the groundwater drainage or surface water infiltration.

  • Calc_RH_V1 Calculate the runoff height.

  • Calc_DVEq_V1 Calculate the equilibrium storage deficit of the vadose zone.

  • Calc_DVEq_V2 Calculate the equilibrium storage deficit of the vadose zone.

  • Calc_DVEq_V3 Calculate the equilibrium storage deficit of the vadose zone.

  • Calc_DVEq_V4 Calculate the equilibrium storage deficit of the vadose zone.

  • Calc_DGEq_V1 Calculate the equilibrium groundwater depth.

  • Calc_GF_V1 Calculate the gain factor for changes in groundwater depth.

  • Calc_CDG_V1 Calculate the change in the groundwater depth due to percolation and capillary rise.

  • Calc_CDG_V2 Calculate the change in the vadose zone’s storage deficit due to percolation, capillary rise, macropore-infiltration, seepage, groundwater drainage, and channel water infiltration.

The following methods define the complete equations of an ODE system (e.g. change in storage of fast water due to effective precipitation and direct runoff):
The following “outlet update methods” are called in the given sequence at the end of each simulation step:
  • Calc_ET_V1 Calculate the total actual evapotranspiration.

  • Calc_R_V1 Calculate the runoff in m³/s.

  • Pass_R_V1 Update the outlet link sequence.

The following “additional methods” might be called by one or more of the other methods or are meant to be directly called by the user:
  • Return_ErrorDV_V1 Calculate the difference between the equilibrium and the actual storage deficit of the vadose zone.

  • Return_DVH_V1 Return the storage deficit of the vadose zone at a specific height above the groundwater table.

  • Return_DVH_V2 Return the storage deficit of the vadose zone at a specific height above the groundwater table.

The following “submodels” might be called by one or more of the implemented methods or are meant to be directly called by the user:
  • PegasusDGEq Pegasus iterator for finding the equilibrium groundwater depth.

  • QuadDVEq_V1 Adaptive quadrature method for integrating the equilibrium storage deficit of the vadose zone.

  • QuadDVEq_V2 Adaptive quadrature method for integrating the equilibrium storage deficit of the vadose zone.

class hydpy.models.wland.wland_model.Calc_FXS_V1[source]

Bases: Method

Query the current surface water supply/extraction.

Requires the derived parameter:

ASR

Requires the input sequence:

FXS

Calculates the flux sequence:

FXS

Basic equation:
\[\begin{split}FXS_{fluxes} = \begin{cases} 0 &|\ FXS_{inputs} = 0 \\ \frac{FXS_{inputs}}{ASR} &|\ FXS_{inputs} \neq 0 \land ASR > 0 \\ inf &|\ FXS_{inputs} \neq 0 \land ASR = 0 \end{cases}\end{split}\]

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> derived.asr(0.5)
>>> inputs.fxs = 2.0
>>> model.calc_fxs_v1()
>>> fluxes.fxs
fxs(4.0)
>>> derived.asr(0.0)
>>> model.calc_fxs_v1()
>>> fluxes.fxs
fxs(inf)
>>> inputs.fxs = 0.0
>>> model.calc_fxs_v1()
>>> fluxes.fxs
fxs(0.0)
class hydpy.models.wland.wland_model.Calc_FXG_V1[source]

Bases: Method

Query the current seepage/extraction.

Requires the derived parameters:

ALR AGR

Requires the input sequence:

FXG

Calculates the flux sequence:

FXG

Basic equation:
\[\begin{split}FXG_{fluxes} = \begin{cases} 0 &|\ FXG_{inputs} = 0 \\ \frac{FXG_{inputs}}{AGR} &|\ FXG_{inputs} \neq 0 \land AGR > 0 \\ inf &|\ FXG_{inputs} \neq 0 \land AGR = 0 \end{cases}\end{split}\]

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> derived.alr(0.5)
>>> derived.agr(0.8)
>>> inputs.fxg = 2.0
>>> model.calc_fxg_v1()
>>> fluxes.fxg
fxg(5.0)
>>> derived.agr(0.0)
>>> model.calc_fxg_v1()
>>> fluxes.fxg
fxg(inf)
>>> inputs.fxg = 0.0
>>> model.calc_fxg_v1()
>>> fluxes.fxg
fxg(0.0)
class hydpy.models.wland.wland_model.Calc_PC_V1[source]

Bases: Method

Calculate the corrected precipitation.

Requires the control parameter:

CP

Requires the input sequence:

P

Calculates the flux sequence:

PC

Basic equation:

\(PC = CP \cdot P\)

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> cp(1.2)
>>> inputs.p = 2.0
>>> model.calc_pc_v1()
>>> fluxes.pc
pc(2.4)
class hydpy.models.wland.wland_model.Calc_PETL_V1[source]

Bases: Method

Adjust the potential evapotranspiration of the land areas.

Requires the control parameters:

NU LT CPET CPETL

Requires the derived parameter:

MOY

Requires the input sequence:

PET

Calculates the flux sequence:

PETL

Basic equation:

\(PETL = CETP \cdot CPETL \cdot PET\)

Examples:

>>> from hydpy import pub, UnitTest
>>> pub.timegrids = '2000-03-30', '2000-04-03', '1d'
>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(2)
>>> lt(FIELD, DECIDIOUS)
>>> cpet(0.8)
>>> cpetl.field_mar = 1.25
>>> cpetl.field_apr = 1.5
>>> cpetl.decidious_mar = 1.75
>>> cpetl.decidious_apr = 2.0
>>> derived.moy.update()
>>> inputs.pet = 2.0
>>> model.idx_sim = pub.timegrids.init['2000-03-31']
>>> model.calc_petl_v1()
>>> fluxes.petl
petl(2.0, 2.8)
>>> model.idx_sim = pub.timegrids.init['2000-04-01']
>>> model.calc_petl_v1()
>>> fluxes.petl
petl(2.4, 3.2)
class hydpy.models.wland.wland_model.Calc_PES_V1[source]

Bases: Method

Adapt the potential evaporation for the surface water area.

Requires the control parameters:

CPET CPES

Requires the derived parameter:

MOY

Requires the input sequence:

PET

Calculates the flux sequence:

PES

Basic equation:

\(PES = CETP \cdot CPES \cdot PET\)

Examples:

>>> from hydpy import pub, UnitTest
>>> pub.timegrids = '2000-03-30', '2000-04-03', '1d'
>>> from hydpy.models.wland import *
>>> parameterstep()
>>> cpet(0.8)
>>> cpes.mar = 1.25
>>> cpes.apr = 1.5
>>> derived.moy.update()
>>> inputs.pet = 2.0
>>> model.idx_sim = pub.timegrids.init['2000-03-31']
>>> model.calc_pes_v1()
>>> fluxes.pes
pes(2.0)
>>> model.idx_sim = pub.timegrids.init['2000-04-01']
>>> model.calc_pes_v1()
>>> fluxes.pes
pes(2.4)
class hydpy.models.wland.wland_model.Calc_TF_V1[source]

Bases: Method

Calculate the total amount of throughfall.

Requires the control parameters:

NU LT LAI IH

Requires the derived parameters:

MOY RH1

Requires the flux sequence:

PC

Requires the state sequence:

IC

Calculates the flux sequence:

TF

Basic equation (discontinuous):
\[\begin{split}TF = \begin{cases} P &|\ IC > IT \\ 0 &|\ IC < IT \end{cases}\end{split}\]

Examples:

>>> from hydpy import pub, UnitTest
>>> pub.timegrids = '2000-03-30', '2000-04-03', '1d'
>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(1)
>>> lt(FIELD)
>>> ih(0.2)
>>> lai.field_mar = 5.0
>>> lai.field_apr = 10.0
>>> derived.moy.update()
>>> fluxes.pc = 5.0
>>> test = UnitTest(
...     model=model,
...     method=model.calc_tf_v1,
...     last_example=6,
...     parseqs=(states.ic, fluxes.tf),
... )
>>> test.nexts.ic = -4.0, 0.0, 1.0, 2.0, 3.0, 7.0

Without smoothing:

>>> sh(0.0)
>>> derived.rh1.update()
>>> model.idx_sim = pub.timegrids.init['2000-03-31']
>>> test()
| ex. |   ic |  tf |
--------------------
|   1 | -4.0 | 0.0 |
|   2 |  0.0 | 0.0 |
|   3 |  1.0 | 2.5 |
|   4 |  2.0 | 5.0 |
|   5 |  3.0 | 5.0 |
|   6 |  7.0 | 5.0 |

With smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> model.idx_sim = pub.timegrids.init['2000-04-01']
>>> test()
| ex. |   ic |      tf |
------------------------
|   1 | -4.0 |     0.0 |
|   2 |  0.0 | 0.00051 |
|   3 |  1.0 |    0.05 |
|   4 |  2.0 |     2.5 |
|   5 |  3.0 |    4.95 |
|   6 |  7.0 |     5.0 |
class hydpy.models.wland.wland_model.Calc_EI_V1[source]

Bases: Method

Calculate the interception evaporation.

Requires the control parameter:

NU

Requires the flux sequence:

PETL

Requires the state sequence:

IC

Calculates the flux sequence:

EI

Basic equation (discontinuous):
\[\begin{split}EI = \begin{cases} PETL &|\ IC > 0 \\ 0 &|\ IC < 0 \end{cases}\end{split}\]

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(1)
>>> fluxes.petl = 5.0
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_ei_v1,
...     last_example=9,
...     parseqs=(states.ic, fluxes.ei)
... )
>>> test.nexts.ic = -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0

Without smoothing:

>>> sh(0.0)
>>> derived.rh1.update()
>>> test()
| ex. |   ic |  ei |
--------------------
|   1 | -4.0 | 0.0 |
|   2 | -3.0 | 0.0 |
|   3 | -2.0 | 0.0 |
|   4 | -1.0 | 0.0 |
|   5 |  0.0 | 2.5 |
|   6 |  1.0 | 5.0 |
|   7 |  2.0 | 5.0 |
|   8 |  3.0 | 5.0 |
|   9 |  4.0 | 5.0 |

With smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> test()
| ex. |   ic |       ei |
-------------------------
|   1 | -4.0 |      0.0 |
|   2 | -3.0 | 0.000005 |
|   3 | -2.0 |  0.00051 |
|   4 | -1.0 |     0.05 |
|   5 |  0.0 |      2.5 |
|   6 |  1.0 |     4.95 |
|   7 |  2.0 |  4.99949 |
|   8 |  3.0 | 4.999995 |
|   9 |  4.0 |      5.0 |
class hydpy.models.wland.wland_model.Calc_FR_V1[source]

Bases: Method

Determine the fraction between rainfall and total precipitation.

Requires the control parameters:

TT TI

Requires the input sequence:

T

Calculates the aide sequence:

FR

Basic equation:

\(FR = \frac{T- \left( TT - TI / 2 \right)}{TI}\)

Restriction:

\(0 \leq FR \leq 1\)

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> tt(1.0)
>>> ti(4.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_fr_v1,
...     last_example=9,
...     parseqs=(inputs.t, aides.fr)
... )
>>> test.nexts.t = -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0
>>> test()
| ex. |    t |   fr |
---------------------
|   1 | -3.0 |  0.0 |
|   2 | -2.0 |  0.0 |
|   3 | -1.0 |  0.0 |
|   4 |  0.0 | 0.25 |
|   5 |  1.0 |  0.5 |
|   6 |  2.0 | 0.75 |
|   7 |  3.0 |  1.0 |
|   8 |  4.0 |  1.0 |
|   9 |  5.0 |  1.0 |
class hydpy.models.wland.wland_model.Calc_RF_V1[source]

Bases: Method

Calculate the liquid amount of throughfall (rainfall).

Requires the control parameter:

NU

Requires the flux sequence:

TF

Requires the aide sequence:

FR

Calculates the flux sequence:

RF

Basic equation:

\(RF = FR \cdot TF\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(1)
>>> fluxes.tf = 2.0
>>> aides.fr = 0.8
>>> model.calc_rf_v1()
>>> fluxes.rf
rf(1.6)
class hydpy.models.wland.wland_model.Calc_SF_V1[source]

Bases: Method

Calculate the frozen amount of throughfall (snowfall).

Requires the control parameter:

NU

Requires the flux sequence:

TF

Requires the aide sequence:

FR

Calculates the flux sequence:

SF

Basic equation:

\(SF = (1-FR) \cdot TF\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(1)
>>> fluxes.tf = 2.0
>>> aides.fr = 0.8
>>> model.calc_sf_v1()
>>> fluxes.sf
sf(0.4)
class hydpy.models.wland.wland_model.Calc_PM_V1[source]

Bases: Method

Calculate the potential snowmelt.

Requires the control parameters:

NU DDF DDT

Requires the derived parameter:

RT2

Requires the input sequence:

T

Calculates the flux sequence:

PM

Basic equation (discontinous):

\(PM = max \left( DDF \cdot (T - DDT), 0 \right)\)

Examples:

>>> from hydpy.models.wland import *
>>> simulationstep('12h')
>>> parameterstep('1d')
>>> nu(1)
>>> ddf(4.0)
>>> ddt(1.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_pm_v1,
...     last_example=11,
...     parseqs=(inputs.t, fluxes.pm)
... )
>>> test.nexts.t = -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0

Without smoothing:

>>> st(0.0)
>>> derived.rt2.update()
>>> test()
| ex. |    t |   pm |
---------------------
|   1 | -4.0 |  0.0 |
|   2 | -3.0 |  0.0 |
|   3 | -2.0 |  0.0 |
|   4 | -1.0 |  0.0 |
|   5 |  0.0 |  0.0 |
|   6 |  1.0 |  0.0 |
|   7 |  2.0 |  2.0 |
|   8 |  3.0 |  4.0 |
|   9 |  4.0 |  6.0 |
|  10 |  5.0 |  8.0 |
|  11 |  6.0 | 10.0 |

With smoothing:

>>> st(1.0)
>>> derived.rt2.update()
>>> test()
| ex. |    t |       pm |
-------------------------
|   1 | -4.0 |      0.0 |
|   2 | -3.0 | 0.000001 |
|   3 | -2.0 | 0.000024 |
|   4 | -1.0 | 0.000697 |
|   5 |  0.0 |     0.02 |
|   6 |  1.0 | 0.411048 |
|   7 |  2.0 |     2.02 |
|   8 |  3.0 | 4.000697 |
|   9 |  4.0 | 6.000024 |
|  10 |  5.0 | 8.000001 |
|  11 |  6.0 |     10.0 |
class hydpy.models.wland.wland_model.Calc_AM_V1[source]

Bases: Method

Calculate the actual snowmelt.

Requires the control parameter:

NU

Requires the derived parameter:

RH1

Requires the flux sequence:

PM

Requires the state sequence:

SP

Calculates the flux sequence:

AM

Basic equation (discontinous):
\[\begin{split}AM = \begin{cases} PM &|\ SP > 0 \\ 0 &|\ SP < 0 \end{cases}\end{split}\]

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(1)
>>> fluxes.pm = 2.0
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_am_v1,
...     last_example=9,
...     parseqs=(states.sp, fluxes.am)
... )
>>> test.nexts.sp = -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0

Without smoothing:

>>> sh(0.0)
>>> derived.rh1.update()
>>> test()
| ex. |   sp |  am |
--------------------
|   1 | -4.0 | 0.0 |
|   2 | -3.0 | 0.0 |
|   3 | -2.0 | 0.0 |
|   4 | -1.0 | 0.0 |
|   5 |  0.0 | 1.0 |
|   6 |  1.0 | 2.0 |
|   7 |  2.0 | 2.0 |
|   8 |  3.0 | 2.0 |
|   9 |  4.0 | 2.0 |

With smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> test()
| ex. |   sp |       am |
-------------------------
|   1 | -4.0 |      0.0 |
|   2 | -3.0 | 0.000002 |
|   3 | -2.0 | 0.000204 |
|   4 | -1.0 |     0.02 |
|   5 |  0.0 |      1.0 |
|   6 |  1.0 |     1.98 |
|   7 |  2.0 | 1.999796 |
|   8 |  3.0 | 1.999998 |
|   9 |  4.0 |      2.0 |
class hydpy.models.wland.wland_model.Calc_PS_V1[source]

Bases: Method

Calculate the precipitation entering the surface water reservoir.

Requires the flux sequence:

PC

Calculates the flux sequence:

PS

Basic equation:

\(PS = PC\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> fluxes.pc = 3.0
>>> model.calc_ps_v1()
>>> fluxes.ps
ps(3.0)
class hydpy.models.wland.wland_model.Calc_W_V1[source]

Bases: Method

Calculate the wetness index.

Requires the control parameter:

CW

Requires the fixed parameter:

Pi

Requires the state sequence:

DV

Calculates the aide sequence:

W

Basic equation:

\(W = cos \left( \frac{max(min(DV, CW), 0) \cdot Pi}{CW} \right) \cdot \frac{1}{2} + \frac{1}{2}\)

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> cw(200.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_w_v1,
...     last_example=11,
...     parseqs=(states.dv, aides.w)
... )
>>> test.nexts.dv = (
...     -50.0, -5.0, 0.0, 5.0, 50.0, 100.0, 150.0, 195.0, 200.0, 205.0, 250.0)
>>> test()
| ex. |    dv |        w |
--------------------------
|   1 | -50.0 |      1.0 |
|   2 |  -5.0 |      1.0 |
|   3 |   0.0 |      1.0 |
|   4 |   5.0 | 0.998459 |
|   5 |  50.0 | 0.853553 |
|   6 | 100.0 |      0.5 |
|   7 | 150.0 | 0.146447 |
|   8 | 195.0 | 0.001541 |
|   9 | 200.0 |      0.0 |
|  10 | 205.0 |      0.0 |
|  11 | 250.0 |      0.0 |
class hydpy.models.wland.wland_model.Calc_PV_V1[source]

Bases: Method

Calculate the rainfall (and snowmelt) entering the vadose zone.

Requires the control parameters:

NU LT AUR

Requires the derived parameter:

AGR

Requires the flux sequences:

RF AM

Requires the aide sequence:

W

Calculates the flux sequence:

PV

Basic equation:
\[\begin{split}PV = \Sigma \left ( \frac{AUR}{AGR} \cdot (RF + AM) \cdot \begin{cases} 0 &|\ LT = SEALED \\ 1-W &|\ LT \neq SEALED \end{cases} \right )\end{split}\]

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(3)
>>> lt(FIELD, SOIL, SEALED)
>>> aur(0.7, 0.2, 0.1)
>>> derived.agr.update()
>>> fluxes.rf = 3.0, 2.0, 1.0
>>> fluxes.am = 1.0, 2.0, 3.0
>>> aides.w = 0.75
>>> model.calc_pv_v1()
>>> fluxes.pv
pv(1.0)
class hydpy.models.wland.wland_model.Calc_PQ_V1[source]

Bases: Method

Calculate the rainfall (and snowmelt) entering the quickflow reservoir.

Requires the control parameters:

NU LT AUR

Requires the flux sequences:

RF AM

Requires the aide sequence:

W

Calculates the flux sequence:

PQ

Basic equation:
\[\begin{split}PQ = \Sigma \left( AUR \cdot (RF + AM) \cdot \begin{cases} 1 &|\ LT = SEALED \\ W &|\ LT \neq SEALED \end{cases} \right)\end{split}\]

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(3)
>>> lt(FIELD, SOIL, SEALED)
>>> aur(0.6, 0.3, 0.1)
>>> fluxes.rf = 3.0, 2.0, 1.0
>>> fluxes.am = 1.0, 2.0, 2.0
>>> aides.w = 0.75
>>> model.calc_pq_v1()
>>> fluxes.pq
pq(3.0)
class hydpy.models.wland.wland_model.Calc_Beta_V1[source]

Bases: Method

Calculate the evapotranspiration reduction factor.

Requires the control parameters:

Zeta1 Zeta2

Requires the state sequence:

DV

Calculates the aide sequence:

Beta

Basic equations:

\(Beta = \frac{1 - x}{1 + x} \cdot \frac{1}{2} + \frac{1}{2}\)

\(x = exp \left( Zeta1 \cdot (DV - Zeta2) \right)\)

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> zeta1(0.02)
>>> zeta2(400.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_beta_v1,
...     last_example=12,
...     parseqs=(states.dv, aides.beta)
... )
>>> test.nexts.dv = (
...     -100.0, 0.0, 100.0, 200.0, 300.0, 400.0,
...     500.0, 600.0, 700.0, 800.0, 900.0, 100000.0
... )
>>> test()
| ex. |       dv |     beta |
-----------------------------
|   1 |   -100.0 | 0.999955 |
|   2 |      0.0 | 0.999665 |
|   3 |    100.0 | 0.997527 |
|   4 |    200.0 | 0.982014 |
|   5 |    300.0 | 0.880797 |
|   6 |    400.0 |      0.5 |
|   7 |    500.0 | 0.119203 |
|   8 |    600.0 | 0.017986 |
|   9 |    700.0 | 0.002473 |
|  10 |    800.0 | 0.000335 |
|  11 |    900.0 | 0.000045 |
|  12 | 100000.0 |      0.0 |
class hydpy.models.wland.wland_model.Calc_ETV_V1[source]

Bases: Method

Calculate the actual evapotranspiration from the vadose zone.

Requires the control parameters:

NU LT AUR

Requires the derived parameter:

AGR

Requires the flux sequences:

PETL EI

Requires the aide sequence:

Beta

Calculates the flux sequence:

ETV

Basic equation:
\[\begin{split}ETV = \Sigma \left( \frac{AUR}{AGR} \cdot (PETL - EI) \cdot \begin{cases} 0 &|\ LT = SEALED \\ Beta &|\ LT \neq SEALED \end{cases} \right)\end{split}\]

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(3)
>>> lt(FIELD, SOIL, SEALED)
>>> aur(0.4, 0.4, 0.2)
>>> derived.agr.update()
>>> fluxes.petl = 5.0
>>> fluxes.ei = 1.0, 3.0, 2.0
>>> aides.beta = 0.75
>>> model.calc_etv_v1()
>>> fluxes.etv
etv(2.25)
class hydpy.models.wland.wland_model.Calc_ES_V1[source]

Bases: Method

Calculate the actual evaporation from the surface water reservoir.

Requires the derived parameter:

RH1

Requires the flux sequence:

PES

Requires the state sequence:

HS

Calculates the flux sequence:

ES

Basic equation (discontinous):
\[\begin{split}ES = \begin{cases} PES &|\ HS > 0 \\ 0 &|\ HS \leq 0 \end{cases}\end{split}\]

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> fluxes.pes = 5.0
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_es_v1,
...     last_example=9,
...     parseqs=(states.hs, fluxes.es)
... )
>>> test.nexts.hs = -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0

Without smoothing:

>>> sh(0.0)
>>> derived.rh1.update()
>>> test()
| ex. |   hs |  es |
--------------------
|   1 | -4.0 | 0.0 |
|   2 | -3.0 | 0.0 |
|   3 | -2.0 | 0.0 |
|   4 | -1.0 | 0.0 |
|   5 |  0.0 | 2.5 |
|   6 |  1.0 | 5.0 |
|   7 |  2.0 | 5.0 |
|   8 |  3.0 | 5.0 |
|   9 |  4.0 | 5.0 |

With smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> test()
| ex. |   hs |       es |
-------------------------
|   1 | -4.0 |      0.0 |
|   2 | -3.0 | 0.000005 |
|   3 | -2.0 |  0.00051 |
|   4 | -1.0 |     0.05 |
|   5 |  0.0 |      2.5 |
|   6 |  1.0 |     4.95 |
|   7 |  2.0 |  4.99949 |
|   8 |  3.0 | 4.999995 |
|   9 |  4.0 |      5.0 |
class hydpy.models.wland.wland_model.Calc_ET_V1[source]

Bases: Method

Calculate the total actual evapotranspiration.

Requires the control parameters:

NU AUR

Requires the derived parameters:

ALR ASR AGR

Requires the flux sequences:

EI ETV ES

Calculates the flux sequence:

ET

Basic equation:

\(ET = ALR \cdot \bigl( \Sigma (AUR \cdot EI) + AGR \cdot ETV \bigl ) + ASR \cdot ES\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(2)
>>> aur(0.8, 0.2)
>>> derived.alr(0.8)
>>> derived.asr(0.2)
>>> derived.agr(0.5)
>>> fluxes.ei = 0.5, 3.0
>>> fluxes.etv = 2.0
>>> fluxes.es = 3.0
>>> model.calc_et_v1()
>>> fluxes.et
et(2.2)
class hydpy.models.wland.wland_model.Calc_DVEq_V1[source]

Bases: Method

Calculate the equilibrium storage deficit of the vadose zone.

Requires the control parameters:

ThetaS PsiAE B

Requires the derived parameter:

NUG

Requires the state sequence:

DG

Calculates the aide sequence:

DVEq

Basic equation (discontinuous):
\[\begin{split}DVEq = \begin{cases} 0 &|\ DG \leq PsiAE \\ ThetaS \cdot \left( DG - \frac{DG^{1-1/b}}{(1-1/b) \cdot PsiAE^{-1/B}} - \frac{PsiAE}{1-B} \right) &|\ PsiAE < DG \end{cases}\end{split}\]

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas(0.4)
>>> psiae(300.0)
>>> b(5.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_dveq_v1,
...     last_example=6,
...     parseqs=(states.dg, aides.dveq)
... )
>>> test.nexts.dg = 200.0, 300.0, 400.0, 800.0, 1600.0, 3200.0

Without smoothing:

>>> test()
| ex. |     dg |       dveq |
-----------------------------
|   1 |  200.0 |        0.0 |
|   2 |  300.0 |        0.0 |
|   3 |  400.0 |   1.182498 |
|   4 |  800.0 |  21.249634 |
|   5 | 1600.0 |  97.612368 |
|   6 | 3200.0 | 313.415248 |
class hydpy.models.wland.wland_model.Return_DVH_V1[source]

Bases: Method

Return the storage deficit of the vadose zone at a specific height above the groundwater table.

Required by the method:

Calc_DVEq_V2

Requires the control parameters:

ThetaS PsiAE B

Requires the derived parameter:

RH1

Basic equation (discontinous):
\[\begin{split}DVH = \begin{cases} 0 &|\ DG \leq PsiAE \\ ThetaS \cdot \left(1 - \left( \frac{h}{PsiAE} \right)^{-1/b} \right) &|\ PsiAE < DG \end{cases}\end{split}\]

This power law is the differential of the equation underlying method Calc_DVEq_V1 with respect to height. Brauer et al. (2014) also cites it (equation 6) but does not use it directly.

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas(0.4)
>>> psiae(300.0)
>>> b(5.0)

With smoothing:

>>> from hydpy import repr_
>>> sh(0.0)
>>> derived.rh1.update()
>>> for h in [200.0, 299.0, 300.0, 301.0, 400.0, 500.0, 600.0]:
...     print(repr_(h), repr_(model.return_dvh_v1(h)))
200.0 0.0
299.0 0.0
300.0 0.0
301.0 0.000266
400.0 0.022365
500.0 0.038848
600.0 0.05178

Without smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> for h in [200.0, 299.0, 300.0, 301.0, 400.0, 500.0, 600.0]:
...     print(repr_(h), repr_(model.return_dvh_v1(h)))
200.0 0.0
299.0 0.000001
300.0 0.00004
301.0 0.000267
400.0 0.022365
500.0 0.038848
600.0 0.05178
class hydpy.models.wland.wland_model.Calc_DVEq_V2[source]

Bases: Method

Calculate the equilibrium storage deficit of the vadose zone.

Required submethod:

Return_DVH_V1

Requires the control parameters:

ThetaS PsiAE B SH

Requires the derived parameters:

NUG RH1

Requires the state sequence:

DG

Calculates the aide sequence:

DVEq

Basic equation:

\(DHEq = \int_{0}^{DG} Return\_DVH\_V1(h) \ \ dh\)

Method Calc_DVEq_V2 integrates Return_DVH_V1 numerically, based on the Lobatto-Gauß quadrature. Hence, it should give nearly identical results as method Calc_DVEq_V1, which provides the analytical solution to the underlying power law. The benefit of method Calc_DVEq_V2 is that it supports the regularisation of Return_DVH_V1, which Calc_DVEq_V1 does not. In our experience, this benefit does not justify the additional numerical cost. However, we keep it for educational purposes; mainly as a starting point to implement alternative relationships between the soil water deficit and the groundwater table that we cannot solve analytically.

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> derived.nug(0)
>>> model.calc_dveq_v2()
>>> aides.dveq
dveq(nan)
>>> derived.nug(1)
>>> thetas(0.4)
>>> psiae(300.0)
>>> b(5.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_dveq_v2,
...     last_example=8,
...     parseqs=(states.dg, aides.dveq)
... )
>>> test.nexts.dg = 200.0, 299.0, 300.0, 301.0, 400.0, 800.0, 1600.0, 3200.0

Without smoothing:

>>> sh(0.0)
>>> derived.rh1.update()
>>> test()
| ex. |     dg |       dveq |
-----------------------------
|   1 |  200.0 |        0.0 |
|   2 |  299.0 |        0.0 |
|   3 |  300.0 |        0.0 |
|   4 |  301.0 |   0.000133 |
|   5 |  400.0 |   1.182498 |
|   6 |  800.0 |  21.249634 |
|   7 | 1600.0 |  97.612368 |
|   8 | 3200.0 | 313.415248 |

With smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> test()
| ex. |     dg |       dveq |
-----------------------------
|   1 |  200.0 |        0.0 |
|   2 |  299.0 |        0.0 |
|   3 |  300.0 |   0.000033 |
|   4 |  301.0 |   0.000176 |
|   5 |  400.0 |   1.182542 |
|   6 |  800.0 |   21.24972 |
|   7 | 1600.0 |  97.612538 |
|   8 | 3200.0 | 313.415588 |
class hydpy.models.wland.wland_model.Calc_DVEq_V3[source]

Bases: Method

Calculate the equilibrium storage deficit of the vadose zone.

Required by the method:

Return_ErrorDV_V1

Requires the control parameters:

ThetaS ThetaR PsiAE B

Requires the derived parameter:

NUG

Requires the state sequence:

DG

Calculates the aide sequence:

DVEq

Basic equation (discontinuous):
\[\begin{split}DHEq = ThetaR \cdot DG + \begin{cases} 0 &|\ DG \leq PsiAE \\ ThetaS \cdot \left( DG - \frac{DG^{1-1/b}}{(1-1/b) \cdot PsiAE^{-1/B}} - \frac{PsiAE}{1-B} \right) &|\ PsiAE < DG \end{cases}\end{split}\]

Method Calc_DVEq_V3 extends the original WALRUS relationship between the groundwater depth and the equilibrium water deficit of the vadose zone defined by equation 5 of Brauer et al. (2014) and implemented into application model wland by method Calc_DVEq_V1. Parameter ThetaR introduces a (small) amount of water to fill the tension-saturated area directly above the groundwater table. This “residual saturation” allows the direct injection of water into groundwater without risking infinitely fast groundwater depth changes.

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas(0.4)
>>> thetar(0.01)
>>> psiae(300.0)
>>> b(5.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_dveq_v3,
...     last_example=8,
...     parseqs=(states.dg, aides.dveq)
... )
>>> test.nexts.dg = 200.0, 299.0, 300.0, 301.0, 400.0, 800.0, 1600.0, 3200.0

Without smoothing:

>>> test()
| ex. |     dg |       dveq |
-----------------------------
|   1 |  200.0 |        2.0 |
|   2 |  299.0 |       2.99 |
|   3 |  300.0 |        3.0 |
|   4 |  301.0 |    3.01013 |
|   5 |  400.0 |   5.152935 |
|   6 |  800.0 |  28.718393 |
|   7 | 1600.0 | 111.172058 |
|   8 | 3200.0 | 337.579867 |
class hydpy.models.wland.wland_model.Return_DVH_V2[source]

Bases: Method

Return the storage deficit of the vadose zone at a specific height above the groundwater table.

Required by the methods:

Calc_DVEq_V4 Calc_GF_V1

Requires the control parameters:

ThetaS ThetaR PsiAE B

Requires the derived parameter:

RH1

Basic equation (discontinous):
\[\begin{split}DVH = ThetaR + \begin{cases} 0 &|\ DG \leq PsiAE \\ (ThetaS-ThetaR) \cdot \left(1 - \left( \frac{h}{PsiAE} \right)^{-1/b} \right) &|\ PsiAE < DG \end{cases}\end{split}\]

The given equation is the differential of the equation underlying method Calc_DVEq_V3 with respect to height.

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas(0.4)
>>> thetar(0.01)
>>> psiae(300.0)
>>> b(5.0)

With smoothing:

>>> from hydpy import repr_
>>> sh(0.0)
>>> derived.rh1.update()
>>> for h in [200.0, 299.0, 300.0, 301.0, 400.0, 500.0, 600.0]:
...     print(repr_(h), repr_(model.return_dvh_v2(h)))
200.0 0.01
299.0 0.01
300.0 0.01
301.0 0.010259
400.0 0.031806
500.0 0.047877
600.0 0.060485

Without smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> for h in [200.0, 299.0, 300.0, 301.0, 400.0, 500.0, 600.0]:
...     print(repr_(h), repr_(model.return_dvh_v2(h)))
200.0 0.01
299.0 0.010001
300.0 0.010039
301.0 0.01026
400.0 0.031806
500.0 0.047877
600.0 0.060485
class hydpy.models.wland.wland_model.Calc_DVEq_V4[source]

Bases: Method

Calculate the equilibrium storage deficit of the vadose zone.

Required submethod:

Return_DVH_V2

Requires the control parameters:

ThetaS ThetaR PsiAE B SH

Requires the derived parameters:

NUG RH1

Requires the state sequence:

DG

Calculates the aide sequence:

DVEq

Basic equation:

\(DHEq = \int_{0}^{DG} Return\_DVH\_V2(h) \ \ dh\)

Method Calc_DVEq_V4 integrates Return_DVH_V2 numerically, based on the Lobatto-Gauß quadrature. The short discussion in the documentation on Calc_DVEq_V2 (which integrates Return_DVH_V1) also applies on Calc_DVEq_V4.

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> derived.nug(0)
>>> model.calc_dveq_v4()
>>> aides.dveq
dveq(nan)
>>> derived.nug(1)
>>> thetas(0.4)
>>> thetar(0.01)
>>> psiae(300.0)
>>> b(5.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_dveq_v4,
...     last_example=8,
...     parseqs=(states.dg, aides.dveq)
... )
>>> test.nexts.dg = 200.0, 299.0, 300.0, 301.0, 400.0, 800.0, 1600.0, 3200.0

Without smoothing:

>>> sh(0.0)
>>> derived.rh1.update()
>>> test()
| ex. |     dg |       dveq |
-----------------------------
|   1 |  200.0 |        2.0 |
|   2 |  299.0 |       2.99 |
|   3 |  300.0 |        3.0 |
|   4 |  301.0 |    3.01013 |
|   5 |  400.0 |   5.152935 |
|   6 |  800.0 |  28.718393 |
|   7 | 1600.0 | 111.172058 |
|   8 | 3200.0 | 337.579867 |

With smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> test()
| ex. |     dg |       dveq |
-----------------------------
|   1 |  200.0 |        2.1 |
|   2 |  299.0 |       3.09 |
|   3 |  300.0 |   3.100032 |
|   4 |  301.0 |   3.110172 |
|   5 |  400.0 |   5.252979 |
|   6 |  800.0 |  28.818477 |
|   7 | 1600.0 | 111.272224 |
|   8 | 3200.0 | 337.680198 |
class hydpy.models.wland.wland_model.Return_ErrorDV_V1[source]

Bases: Method

Calculate the difference between the equilibrium and the actual storage deficit of the vadose zone.

Required by the method:

Calc_DGEq_V1

Required submethod:

Calc_DVEq_V3

Requires the control parameters:

ThetaS ThetaR PsiAE B

Requires the derived parameter:

NUG

Requires the state sequence:

DV

Basic equation:

\(DVEq_{Calc\_DVEq\_V3} - DV\)

Method Return_ErrorDV_V1 uses Calc_DVEq_V3 to calculate the equilibrium deficit corresponding to the current groundwater depth. The following example shows that it resets the values DG and DVEq, which it needs to change temporarily, to their original states.

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas(0.4)
>>> thetar(0.01)
>>> psiae(300.0)
>>> b(5.0)
>>> states.dg = -9.0
>>> aides.dveq = -99.0
>>> states.dv = 3.152935
>>> from hydpy import round_
>>> round_(model.return_errordv_v1(400.0))
2.0
>>> states.dg
dg(-9.0)
>>> aides.dveq
dveq(-99.0)

Technical checks:

As mentioned above, method Return_ErrorDV_V1 changes the values of the sequences DG and DVEq, but only temporarily. Hence, we do not include them into the method specifications, even if the following check considers this to be erroneous:

>>> from hydpy.core.testtools import check_selectedvariables
>>> from hydpy.models.wland.wland_model import Return_ErrorDV_V1
>>> print(check_selectedvariables(Return_ErrorDV_V1))
Definitely missing: dg and dveq
Possibly missing (REQUIREDSEQUENCES):
    Calc_DVEq_V3: DG
Possibly missing (RESULTSEQUENCES):
    Calc_DVEq_V3: DVEq
class hydpy.models.wland.wland_model.Calc_DGEq_V1[source]

Bases: Method

Calculate the equilibrium groundwater depth.

Required submethod:

Return_ErrorDV_V1

Requires the control parameters:

ThetaS ThetaR PsiAE B

Requires the derived parameter:

NUG

Requires the state sequence:

DV

Calculates the aide sequence:

DGEq

Method Calc_DGEq_V1 calculates the equilibrium groundwater depth for the current water deficit of the vadose zone, following methods Return_DVH_V2 and Calc_DVEq_V3. As we are not aware of an analytical solution, we solve it numerically via class PegasusDGEq, which performs an iterative root-search based on the Pegasus method.

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas(0.4)
>>> thetar(0.01)
>>> psiae(300.0)
>>> b(5.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_dgeq_v1,
...     last_example=13,
...     parseqs=(states.dv, aides.dgeq)
... )
>>> test.nexts.dv = (
...     -1.0, -0.01, 0.0, 0.01, 1.0, 2.0, 2.99, 3.0,
...     3.01012983, 5.1529353, 28.71839324, 111.1720584, 337.5798671)
>>> test()
| ex. |         dv |   dgeq |
-----------------------------
|   1 |       -1.0 |    0.0 |
|   2 |      -0.01 |    0.0 |
|   3 |        0.0 |    0.0 |
|   4 |       0.01 |    1.0 |
|   5 |        1.0 |  100.0 |
|   6 |        2.0 |  200.0 |
|   7 |       2.99 |  299.0 |
|   8 |        3.0 |  300.0 |
|   9 |    3.01013 |  301.0 |
|  10 |   5.152935 |  400.0 |
|  11 |  28.718393 |  800.0 |
|  12 | 111.172058 | 1600.0 |
|  13 | 337.579867 | 3200.0 |
class hydpy.models.wland.wland_model.Calc_GF_V1[source]

Bases: Method

Calculate the gain factor for changes in groundwater depth.

Required submethod:

Return_DVH_V2

Requires the control parameters:

ThetaS ThetaR PsiAE B

Requires the derived parameter:

RH1

Requires the state sequence:

DG

Requires the aide sequence:

DGEq

Calculates the aide sequence:

GF

Basic equation (discontinuous):
\[\begin{split}GF = \begin{cases} 0 &|\ DG \leq 0 \\ Return\_DVH\_V2(DGEq - DG)^{-1} &|\ 0 < DG \end{cases}\end{split}\]

The original WALRUS model attributes a passive role to groundwater dynamics. All water entering or leaving the underground is added to or subtracted from the vadose zone, and the groundwater table only reacts on such changes until it is in equilibrium with the updated water deficit in the vadose zone. Hence, the movement of the groundwater table is generally slow. However, in catchments with near-surface water tables, we often observe fast responses of groundwater to input forcings, maybe due to rapid infiltration along macropores or the re-infiltration of channel water. In such situations, where the input water somehow bypasses the vadose zone, the speed of the rise of the groundwater table depends not only on the effective pore size of the soil material but also on the soil’s degree of saturation directly above the groundwater table. The smaller the remaining pore size, the larger the fraction between the water table’s rise and the actual groundwater recharge. We call this fraction the “gain factor” (GF).

The WALRUS model does not explicitly account for the soil moisture in different depths above the groundwater table. To keep the vertically lumped approach, we use the difference between the actual (DG) and the equilibrium groundwater depth (DGEq) as an indicator for the wetness above the groundwater table. When DG is identical with DGEq, soil moisture and groundwater are in equilibrium. Then, the tension-saturated area is fully developed, and the groundwater table moves quickly (depending on ThetaR). The opposite case is when DG is much smaller than DGEq. Such a situation occurs after a fast rise of the groundwater table when the soil water still needs much redistribution before it can be in equilibrium with groundwater. In the most extreme case, the gain factor is just as large as indicated by the effective pore size alone (depending on ThetaS).

The above discussion only applies as long as the groundwater table is below the soil surface. For large-scale ponding (see Brauer et al. (2014), section 5.11), we set GF to zero. See the documentation on the methods Calc_CDG_V1 and Calc_FGS_V1 for related discussions.

Examples:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas(0.4)
>>> thetar(0.01)
>>> psiae(300.0)
>>> b(5.0)
>>> sh(0.0)
>>> aides.dgeq = 5000.0
>>> derived.rh1.update()
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_gf_v1,
...     last_example=16,
...     parseqs=(states.dg, aides.gf)
... )
>>> test.nexts.dg = (
...     -10.0, -1.0, 0.0, 1.0, 10.0,
...     1000.0, 2000.0, 3000.0, 4000.0, 4500.0, 4600.0,
...     4690.0, 4699.0, 4700.0, 4701.0, 4710.0)
>>> test()
| ex. |     dg |        gf |
----------------------------
|   1 |  -10.0 |       0.0 |
|   2 |   -1.0 |       0.0 |
|   3 |    0.0 |   2.81175 |
|   4 |    1.0 |  5.623782 |
|   5 |   10.0 |  5.626316 |
|   6 | 1000.0 |  5.963555 |
|   7 | 2000.0 |  6.496601 |
|   8 | 3000.0 |  7.510869 |
|   9 | 4000.0 | 10.699902 |
|  10 | 4500.0 |  20.88702 |
|  11 | 4600.0 | 31.440737 |
|  12 | 4690.0 | 79.686112 |
|  13 | 4699.0 | 97.470815 |
|  14 | 4700.0 |     100.0 |
|  15 | 4701.0 |     100.0 |
|  16 | 4710.0 |     100.0 |
>>> sh(1.0)
>>> derived.rh1.update()
>>> test()
| ex. |     dg |        gf |
----------------------------
|   1 |  -10.0 |       0.0 |
|   2 |   -1.0 |  0.056232 |
|   3 |    0.0 |   2.81175 |
|   4 |    1.0 |  5.567544 |
|   5 |   10.0 |  5.626316 |
|   6 | 1000.0 |  5.963555 |
|   7 | 2000.0 |  6.496601 |
|   8 | 3000.0 |  7.510869 |
|   9 | 4000.0 | 10.699902 |
|  10 | 4500.0 |  20.88702 |
|  11 | 4600.0 | 31.440737 |
|  12 | 4690.0 | 79.686112 |
|  13 | 4699.0 | 97.465434 |
|  14 | 4700.0 | 99.609455 |
|  15 | 4701.0 | 99.994314 |
|  16 | 4710.0 |     100.0 |
class hydpy.models.wland.wland_model.Calc_CDG_V1[source]

Bases: Method

Calculate the change in the groundwater depth due to percolation and capillary rise.

Requires the control parameter:

CV

Requires the derived parameters:

NUG RH1

Requires the state sequences:

DG DV

Requires the aide sequence:

DVEq

Calculates the flux sequence:

CDG

Basic equation (discontinuous):

\(CDG = \frac{DV-min(DVEq, DG)}{CV}\)

Note that this equation slightly differs from equation 6 of Brauer et al. (2014). In case of large-scale ponding, DVEq always stays at zero and we let DG take control of the speed of the water table movement. See the documentation on method Calc_FGS_V1 for additional information on the differences between wland and WALRUS for this rare situation.

Examples:

>>> from hydpy.models.wland import *
>>> simulationstep('12h')
>>> parameterstep('1d')
>>> cv(10.0)
>>> sh(0.0)
>>> derived.rh1.update()
>>> states.dv = 100.0
>>> states.dg = 1000.0
>>> aides.dveq = 80.0
>>> model.calc_cdg_v1()
>>> fluxes.cdg
cdg(1.0)

Without large-scale ponding:

>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_cdg_v1,
...     last_example=5,
...     parseqs=(states.dg, fluxes.cdg)
... )

With large-scale ponding and without smoothing:

>>> states.dv = -10.0
>>> aides.dveq = 0.0
>>> test.nexts.dg = 10.0, 1.0, 0.0, -1.0, -10.0
>>> test()
| ex. |    dg |   cdg |
-----------------------
|   1 |  10.0 |  -0.5 |
|   2 |   1.0 |  -0.5 |
|   3 |   0.0 |  -0.5 |
|   4 |  -1.0 | -0.45 |
|   5 | -10.0 |   0.0 |

With large-scale ponding and with smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> test()
| ex. |    dg |       cdg |
---------------------------
|   1 |  10.0 |      -0.5 |
|   2 |   1.0 | -0.499891 |
|   3 |   0.0 | -0.492458 |
|   4 |  -1.0 | -0.449891 |
|   5 | -10.0 |       0.0 |
class hydpy.models.wland.wland_model.Calc_CDG_V2[source]

Bases: Method

Calculate the change in the vadose zone’s storage deficit due to percolation, capillary rise, macropore-infiltration, seepage, groundwater drainage, and channel water infiltration.

Requires the control parameter:

CV

Requires the derived parameters:

NUG RH1

Requires the flux sequences:

PV FGS FXG

Requires the state sequences:

DG DV

Requires the aide sequences:

DVEq GF

Calculates the flux sequence:

CDG

Basic equation:

\(CDG = \frac{DV-min(DVEq, DG)}{CV} + GF \cdot \big( FGS - PV - FXG \big)\)

Method Calc_CDG_V2 extends Calc_CDG_V1, which implements the (nearly) original WALRUS relationship defined by equation 6 of Brauer et al. (2014)). See the documentation on method Calc_GF_V1 for a comprehensive explanation of the reason for this extension.

Examples:

Without large-scale ponding:

>>> from hydpy.models.wland import *
>>> simulationstep('12h')
>>> parameterstep('1d')
>>> cv(10.0)
>>> sh(0.0)
>>> derived.rh1.update()
>>> states.dv = 100.0
>>> states.dg = 1000.0
>>> fluxes.pv = 1.0
>>> fluxes.fxg = 2.0
>>> fluxes.fgs = 4.0
>>> aides.dveq = 80.0
>>> aides.gf = 2.0
>>> model.calc_cdg_v2()
>>> fluxes.cdg
cdg(3.0)

With large-scale ponding and without smoothing:

>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_cdg_v2,
...     last_example=5,
...     parseqs=(states.dg, fluxes.cdg)
... )
>>> aides.gf = 0.0
>>> states.dv = -10.0
>>> aides.dveq = 0.0
>>> test.nexts.dg = 10.0, 1.0, 0.0, -1.0, -10.0
>>> test()
| ex. |    dg |   cdg |
-----------------------
|   1 |  10.0 |  -0.5 |
|   2 |   1.0 |  -0.5 |
|   3 |   0.0 |  -0.5 |
|   4 |  -1.0 | -0.45 |
|   5 | -10.0 |   0.0 |

With large-scale ponding and with smoothing:

>>> sh(1.0)
>>> derived.rh1.update()
>>> test()
| ex. |    dg |       cdg |
---------------------------
|   1 |  10.0 |      -0.5 |
|   2 |   1.0 | -0.499891 |
|   3 |   0.0 | -0.492458 |
|   4 |  -1.0 | -0.449891 |
|   5 | -10.0 |       0.0 |
class hydpy.models.wland.wland_model.Calc_FGS_V1[source]

Bases: Method

Calculate the groundwater drainage or surface water infiltration.

Requires the control parameters:

CD CG CGF

Requires the derived parameters:

NUG RH2

Requires the state sequences:

DG HS

Calculates the flux sequence:

FGS

For large-scale ponding, wland and WALRUS calculate FGS differently (even for discontinuous parameterisations). The WALRUS model redistributes water instantaneously in such cases (see Brauer et al. (2014), section 5.11), which relates to infinitely high flow velocities and cannot be handled by the numerical integration algorithm underlying wland. Hence, we instead introduce the parameter CGF. Setting it to a value larger zero increases the flow velocity with increasing large-scale ponding. The larger the value of CGF, the stronger the functional similarity of both approaches. But note that very high values can result in increased computation times.

Basic equations (discontinous):

\(Gradient = CD - DG - HS\)

\(ContactSurface = max \left( CD - DG, HS \right)\)

\(Excess = max \left( -DG, HS - CD, 0 \right)\)

\(Conductivity = \frac{1 + CGF \cdot Excess}{CG}\)

\(FGS = Gradient \cdot ContactSurface \cdot Conductivity\)

Examples:

>>> from hydpy.models.wland import *
>>> simulationstep('12h')
>>> parameterstep('1d')
>>> cd(600.0)
>>> cg(10000.0)
>>> states.hs = 300.0
>>> from hydpy import UnitTest
>>> test = UnitTest(model=model,
...                 method=model.calc_fgs_v1,
...                 last_example=15,
...                 parseqs=(states.dg, states.hs, fluxes.fgs))
>>> test.nexts.dg = (
...     -100.0, -1.0, 0.0, 1.0, 100.0, 200.0, 290.0, 299.0,
...     300.0, 301.0, 310.0, 400.0, 500.0, 600.0, 700.0)

Without smoothing and without increased conductivity for large-scale ponding:

>>> cgf(0.0)
>>> sh(0.0)
>>> derived.rh2.update()
>>> test()
| ex. |     dg |    hs |     fgs |
----------------------------------
|   1 | -100.0 | 300.0 |    14.0 |
|   2 |   -1.0 | 300.0 | 9.04505 |
|   3 |    0.0 | 300.0 |     9.0 |
|   4 |    1.0 | 300.0 | 8.95505 |
|   5 |  100.0 | 300.0 |     5.0 |
|   6 |  200.0 | 300.0 |     2.0 |
|   7 |  290.0 | 300.0 |   0.155 |
|   8 |  299.0 | 300.0 | 0.01505 |
|   9 |  300.0 | 300.0 |     0.0 |
|  10 |  301.0 | 300.0 |  -0.015 |
|  11 |  310.0 | 300.0 |   -0.15 |
|  12 |  400.0 | 300.0 |    -1.5 |
|  13 |  500.0 | 300.0 |    -3.0 |
|  14 |  600.0 | 300.0 |    -4.5 |
|  15 |  700.0 | 300.0 |    -6.0 |

Without smoothing but with increased conductivity for large-scale ponding:

>>> cgf(0.1)
>>> test()
| ex. |     dg |    hs |      fgs |
-----------------------------------
|   1 | -100.0 | 300.0 |    294.0 |
|   2 |   -1.0 | 300.0 | 10.85406 |
|   3 |    0.0 | 300.0 |      9.0 |
|   4 |    1.0 | 300.0 |  8.95505 |
|   5 |  100.0 | 300.0 |      5.0 |
|   6 |  200.0 | 300.0 |      2.0 |
|   7 |  290.0 | 300.0 |    0.155 |
|   8 |  299.0 | 300.0 |  0.01505 |
|   9 |  300.0 | 300.0 |      0.0 |
|  10 |  301.0 | 300.0 |   -0.015 |
|  11 |  310.0 | 300.0 |    -0.15 |
|  12 |  400.0 | 300.0 |     -1.5 |
|  13 |  500.0 | 300.0 |     -3.0 |
|  14 |  600.0 | 300.0 |     -4.5 |
|  15 |  700.0 | 300.0 |     -6.0 |

With smoothing and with increased conductivity for large-scale ponding:

>>> sh(1.0)
>>> derived.rh2.update()
>>> test()
| ex. |     dg |    hs |      fgs |
-----------------------------------
|   1 | -100.0 | 300.0 |    294.0 |
|   2 |   -1.0 | 300.0 | 10.87215 |
|   3 |    0.0 | 300.0 | 9.369944 |
|   4 |    1.0 | 300.0 |  8.97296 |
|   5 |  100.0 | 300.0 |      5.0 |
|   6 |  200.0 | 300.0 |      2.0 |
|   7 |  290.0 | 300.0 |    0.155 |
|   8 |  299.0 | 300.0 |  0.01505 |
|   9 |  300.0 | 300.0 |      0.0 |
|  10 |  301.0 | 300.0 |   -0.015 |
|  11 |  310.0 | 300.0 |    -0.15 |
|  12 |  400.0 | 300.0 |     -1.5 |
|  13 |  500.0 | 300.0 |     -3.0 |
|  14 |  600.0 | 300.0 |     -4.5 |
|  15 |  700.0 | 300.0 |     -6.0 |
class hydpy.models.wland.wland_model.Calc_FQS_V1[source]

Bases: Method

Calculate the quickflow.

Requires the control parameters:

NU CQ

Requires the state sequence:

HQ

Calculates the flux sequence:

FQS

Basic equation:

\(FQS = \frac{HQ}{CQ}\)

Example:

>>> from hydpy.models.wland import *
>>> simulationstep('12h')
>>> parameterstep('1d')
>>> cq(10.0)
>>> states.hq = 100.0
>>> model.calc_fqs_v1()
>>> fluxes.fqs
fqs(5.0)
class hydpy.models.wland.wland_model.Calc_RH_V1[source]

Bases: Method

Calculate the runoff height.

Requires the control parameters:

CS CD HSMin XS

Requires the derived parameter:

RH2

Requires the state sequence:

HS

Calculates the flux sequence:

RH

Basic equation (discontinuous):

\(RH = CS \cdot \left( \frac{max(HS-HSMin, 0)}{CD-HSMin} \right) ^ {XS}\)

Examples:

>>> from hydpy.models.wland import *
>>> simulationstep('12h')
>>> parameterstep('1d')
>>> cs(2.0)
>>> cd(5.0)
>>> hsmin(2.0)
>>> xs(2.0)
>>> from hydpy import UnitTest
>>> test = UnitTest(
...     model=model,
...     method=model.calc_rh_v1,
...     last_example=11,
...     parseqs=(states.hs, fluxes.rh)
... )
>>> test.nexts.hs = 0.0, 1.0, 1.9, 2.0, 2.1, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0

Without smoothing:

>>> sh(0.0)
>>> derived.rh2.update()
>>> test()
| ex. |  hs |       rh |
------------------------
|   1 | 0.0 |      0.0 |
|   2 | 1.0 |      0.0 |
|   3 | 1.9 |      0.0 |
|   4 | 2.0 |      0.0 |
|   5 | 2.1 | 0.001111 |
|   6 | 3.0 | 0.111111 |
|   7 | 4.0 | 0.444444 |
|   8 | 5.0 |      1.0 |
|   9 | 6.0 | 1.777778 |
|  10 | 7.0 | 2.777778 |
|  11 | 8.0 |      4.0 |

With smoothing:

>>> sh(0.1)
>>> derived.rh2.update()
>>> test()
| ex. |  hs |       rh |
------------------------
|   1 | 0.0 |      0.0 |
|   2 | 1.0 |      0.0 |
|   3 | 1.9 | 0.000011 |
|   4 | 2.0 | 0.000187 |
|   5 | 2.1 | 0.001344 |
|   6 | 3.0 | 0.111111 |
|   7 | 4.0 | 0.444444 |
|   8 | 5.0 |      1.0 |
|   9 | 6.0 | 1.777778 |
|  10 | 7.0 | 2.777778 |
|  11 | 8.0 |      4.0 |
class hydpy.models.wland.wland_model.Update_IC_V1[source]

Bases: Method

Update the interception storage.

Requires the control parameter:

NU

Requires the flux sequences:

PC TF EI

Updates the state sequence:

IC

Basic equation:

\(\frac{dIC}{dt} = PC - TF - EI\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(1)
>>> fluxes.pc = 2.0
>>> fluxes.tf = 1.0
>>> fluxes.ei = 3.0
>>> states.ic.old = 4.0
>>> model.update_ic_v1()
>>> states.ic
ic(2.0)
class hydpy.models.wland.wland_model.Update_SP_V1[source]

Bases: Method

Update the storage deficit.

Requires the control parameter:

NU

Requires the flux sequences:

SF AM

Updates the state sequence:

SP

Basic equation:

\(\frac{dSP}{dt} = SF - AM\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(1)
>>> fluxes.sf = 1.0
>>> fluxes.am = 2.0
>>> states.sp.old = 3.0
>>> model.update_sp_v1()
>>> states.sp
sp(2.0)
class hydpy.models.wland.wland_model.Update_DV_V1[source]

Bases: Method

Update the storage deficit of the vadose zone.

Requires the derived parameter:

NUG

Requires the flux sequences:

FXG PV ETV FGS

Updates the state sequence:

DV

Basic equation:

\(\frac{dDV}{dt} = -(FXG + PV - ETV - FGS)\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> fluxes.fxg = 1.0
>>> fluxes.pv = 2.0
>>> fluxes.etv = 3.0
>>> fluxes.fgs = 4.0
>>> states.dv.old = 5.0
>>> model.update_dv_v1()
>>> states.dv
dv(9.0)
class hydpy.models.wland.wland_model.Update_DG_V1[source]

Bases: Method

Update the groundwater depth.

Requires the derived parameter:

NUG

Requires the flux sequence:

CDG

Updates the state sequence:

DG

Basic equation:

\(\frac{dDG}{dt} = CDG\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> states.dg.old = 2.0
>>> fluxes.cdg = 3.0
>>> model.update_dg_v1()
>>> states.dg
dg(5.0)
class hydpy.models.wland.wland_model.Update_HQ_V1[source]

Bases: Method

Update the level of the quickflow reservoir.

Requires the flux sequences:

PQ FQS

Updates the state sequence:

HQ

Basic equation:

\(\frac{dHQ}{dt} = PQ - FQS\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> states.hq.old = 2.0
>>> fluxes.pq = 3.0
>>> fluxes.fqs = 4.0
>>> model.update_hq_v1()
>>> states.hq
hq(1.0)
class hydpy.models.wland.wland_model.Update_HS_V1[source]

Bases: Method

Update the surface water level.

Requires the derived parameters:

ALR ASR AGR

Requires the flux sequences:

FXS PS ES FGS FQS RH

Updates the state sequence:

HS

Basic equation:

\(\frac{dHS}{dt} = PS - ETS + FXS + \frac{ALR \cdot \left(AGR \cdot FGS + FQS \right) - RH}{ASR}\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> derived.alr(0.8)
>>> derived.asr(0.2)
>>> derived.agr(1.0)
>>> states.hs.old = 2.0
>>> fluxes.fxs = 3.0
>>> fluxes.ps = 4.0
>>> fluxes.es = 5.0
>>> fluxes.fgs = 6.0
>>> fluxes.fqs = 7.0
>>> fluxes.rh = 8.0
>>> model.update_hs_v1()
>>> states.hs
hs(16.0)
class hydpy.models.wland.wland_model.Calc_R_V1[source]

Bases: Method

Calculate the runoff in m³/s.

Requires the derived parameter:

QF

Requires the flux sequence:

RH

Calculates the flux sequence:

R

Basic equation:

\(R = QF \cdot RH\)

Example:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> derived.qf(2.0)
>>> fluxes.rh = 3.0
>>> model.calc_r_v1()
>>> fluxes.r
r(6.0)
class hydpy.models.wland.wland_model.Pass_R_V1[source]

Bases: Method

Update the outlet link sequence.

Requires the flux sequence:

R

Calculates the outlet sequence:

Q

Basic equation:

\(Q = R\)

class hydpy.models.wland.wland_model.PegasusDGEq(model: Model)[source]

Bases: Pegasus

Pegasus iterator for finding the equilibrium groundwater depth.

METHODS: ClassVar[Tuple[Type[Method], ...]] = (<class 'hydpy.models.wland.wland_model.Return_ErrorDV_V1'>,)
name = 'pegasusdgeq'
class hydpy.models.wland.wland_model.QuadDVEq_V1(model: Model)[source]

Bases: Quad

Adaptive quadrature method for integrating the equilibrium storage deficit of the vadose zone.

METHODS: ClassVar[Tuple[Type[Method], ...]] = (<class 'hydpy.models.wland.wland_model.Return_DVH_V1'>,)
name = 'quaddveq_v1'
class hydpy.models.wland.wland_model.QuadDVEq_V2(model: Model)[source]

Bases: Quad

Adaptive quadrature method for integrating the equilibrium storage deficit of the vadose zone.

METHODS: ClassVar[Tuple[Type[Method], ...]] = (<class 'hydpy.models.wland.wland_model.Return_DVH_V2'>,)
name = 'quaddveq_v2'

Parameter Features

Parameter tools

class hydpy.models.wland.wland_parameters.SoilParameter(subvars: variabletools.SubgroupType)[source]

Bases: Parameter

Base class for parameters related to the soil character.

Some parameters of HydPy-W-Land are strongly related to the soil character and come with default values. To apply these default values, use the soil keyword in combination with one of the available soil constants (see SOIL_CONSTANTS).

We take parameter B and the soil character SAND as an example, which has the default value 4.05:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> b(soil=SAND)
>>> b
b(soil=SAND)
>>> from hydpy import round_
>>> round_(b.value)
4.05

You are free to ignore the default values and to set anything you like:

>>> b.value = 3.0
>>> b
b(3.0)

The string representation relies on the soil keyword only when used to define the value directly beforehand:

>>> b(4.05)
>>> b
b(4.05)

For a list of the available defaults, see the respective parameter’s documentation or the error message that class SoilParameter raises if one passes a wrong value:

>>> b(soil=0)
Traceback (most recent call last):
...
ValueError: While trying the set the value of parameter `b` of element `?`, the following error occurred: The given soil constant `0` is not among the available ones.  Please use one of the following constants: SAND (1), LOAMY_SAND (2), SANDY_LOAM (3), SILT_LOAM (4), LOAM (5), SANDY_CLAY_LOAM (6), SILT_CLAY_LOAM (7), CLAY_LOAM (8), SANDY_CLAY (9), SILTY_CLAY (10), and CLAY (11).

It is not allowed to combine the soil keyword with other keywords:

>>> b(soil=SAND, landuse='acre')
Traceback (most recent call last):
...
TypeError: While trying the set the value of parameter `b` of element `?`, the following error occurred: It is not allowed to combine keyword `soil` with other keywords, but the following ones are also used: landuse.
>>> b(landuse='acre')
Traceback (most recent call last):
...
NotImplementedError: While trying the set the value of parameter `b` of element `?`, the following error occurred: The value(s) of parameter `b` of element `?` could not be set based on the given keyword arguments.
classmethod print_defaults()[source]

Print the soil-related default values of the parameter.

See the documentation on class B for an example.

name: str = 'soilparameter'

Name of the variable in lower case letters.

unit: str = '?'

Unit of the variable.

class hydpy.models.wland.wland_parameters.LanduseParameter(subvars: SubParameters)[source]

Bases: ZipParameter

Base class for 1-dimensional parameters relevant for all types of land-use.

We take the parameter DDT as an example. You can define its values by using the names of all land use-related constants in lower-case as keywords:

>>> from hydpy.models.wland import *
>>> simulationstep("1d")
>>> parameterstep("1d")
>>> nu(12)
>>> lt(SEALED, FIELD, WINE, ORCHARD, SOIL, PASTURE, WETLAND,
...    TREES, CONIFER, DECIDIOUS, MIXED, SEALED)
>>> ddf(sealed=0.0, field=1.0, wine=2.0, orchard=3.0, soil=4.0, pasture=5.0,
...     wetland=6.0, trees=7.0, conifer=8.0, decidious=9.0, mixed=10.0)
>>> ddf
ddf(conifer=8.0, decidious=9.0, field=1.0, mixed=10.0, orchard=3.0,
    pasture=5.0, sealed=0.0, soil=4.0, trees=7.0, wetland=6.0,
    wine=2.0)
>>> ddf.values
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.,  0.])

You can average the current values with regard to the hydrological response area fractions, defined via parameter AUR:

>>> aur(0.01, 0.02, 0.04, 0.05, 0.06, 0.08, 0.09, 0.1, 0.12, 0.13, 0.14, 0.16)
>>> from hydpy import round_
>>> round_(ddf.average_values())
5.66

You can query or change the values related to specific land use types via attribute access:

>>> ddf.sealed
array([0., 0.])
>>> ddf.sealed = 11.0, 12.0
>>> ddf
ddf(11.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0)
>>> ddf.sealed = 12.0
>>> ddf
ddf(conifer=8.0, decidious=9.0, field=1.0, mixed=10.0, orchard=3.0,
    pasture=5.0, sealed=12.0, soil=4.0, trees=7.0, wetland=6.0,
    wine=2.0)
MODEL_CONSTANTS: Dict[str, int] = {'CONIFER': 20, 'DECIDIOUS': 21, 'FIELD': 13, 'MIXED': 22, 'ORCHARD': 15, 'PASTURE': 17, 'SEALED': 12, 'SOIL': 16, 'TREES': 19, 'WETLAND': 18, 'WINE': 14}
mask
property refweights

Alias for the associated instance of AUR for calculating areal mean values.

name: str = 'landuseparameter'

Name of the variable in lower case letters.

unit: str = '?'

Unit of the variable.

class hydpy.models.wland.wland_parameters.LanduseMonthParameter(subvars: SubParameters)[source]

Bases: KeywordParameter2D

Base class for parameters which values depend both on the actual month and land-use type.

COLNAMES: ClassVar[Tuple[str, ...]] = ('jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec')
ROWNAMES: ClassVar[Tuple[str, ...]] = ('sealed', 'field', 'wine', 'orchard', 'soil', 'pasture', 'wetland', 'trees', 'conifer', 'decidious', 'mixed')
name: str = 'landusemonthparameter'

Name of the variable in lower case letters.

unit: str = '?'

Unit of the variable.

Constants

HydPy-W-Land provides two types of constants: those associated with the average soil character of a sub-catchment and those associated with the land-use type of the different hydrological response units of a sub-catchment. They are all available via wildcard-imports:

>>> from hydpy.models.wland import *
>>> (SAND, LOAMY_SAND, SANDY_LOAM, SILT_LOAM, LOAM, SANDY_CLAY_LOAM,
... SILT_CLAY_LOAM, CLAY_LOAM, SANDY_CLAY, SILTY_CLAY, CLAY)
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
>>> (SEALED, FIELD, WINE, ORCHARD, SOIL, PASTURE, WETLAND, TREES,
...  CONIFER, DECIDIOUS, MIXED)
(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
hydpy.models.wland.wland_constants.SAND = 1

Soil character constant for sand.

hydpy.models.wland.wland_constants.LOAMY_SAND = 2

Soil character constant for loamy sand.

hydpy.models.wland.wland_constants.SANDY_LOAM = 3

Soil character constant for sandy loam.

hydpy.models.wland.wland_constants.SILT_LOAM = 4

Soil character constant for silt loam.

hydpy.models.wland.wland_constants.LOAM = 5

Soil character constant for loam.

hydpy.models.wland.wland_constants.SANDY_CLAY_LOAM = 6

Soil character constant for sandy clay loam.

hydpy.models.wland.wland_constants.SILT_CLAY_LOAM = 7

Soil character constant for silt clay loam.

hydpy.models.wland.wland_constants.CLAY_LOAM = 8

Soil character constant for clay loam.

hydpy.models.wland.wland_constants.SANDY_CLAY = 9

Soil character constant for sandy clay.

hydpy.models.wland.wland_constants.SILTY_CLAY = 10

Soil character constant for silty clay.

hydpy.models.wland.wland_constants.CLAY = 11

Soil character constant for clay.

hydpy.models.wland.wland_constants.SEALED = 12

Land type constant for sealed surface.

hydpy.models.wland.wland_constants.FIELD = 13

Land type constant for fields.

hydpy.models.wland.wland_constants.WINE = 14

Land type constant for viticulture.

hydpy.models.wland.wland_constants.ORCHARD = 15

Land type constant for orchards.

hydpy.models.wland.wland_constants.SOIL = 16

Land type constant for bare, unsealed soils.

hydpy.models.wland.wland_constants.PASTURE = 17

Land type constant for pasture.

hydpy.models.wland.wland_constants.WETLAND = 18

Land type constant for wetlands.

hydpy.models.wland.wland_constants.TREES = 19

Land type constant for loose tree populations.

hydpy.models.wland.wland_constants.CONIFER = 20

Land type constant for coniferous forests.

hydpy.models.wland.wland_constants.DECIDIOUS = 21

Land type constant for deciduous forests.

hydpy.models.wland.wland_constants.MIXED = 22

Land type constant for mixed forests.

Control parameters

class hydpy.models.wland.ControlParameters(master: Parameters, cls_fastaccess: Type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Control parameters of model wland.

The following classes are selected:
  • AL() Land area [km²].

  • AS_() Surface water area [km²].

  • NU() Number of hydrological response units [-].

  • LT() Landuse type [-].

  • AUR() Relative area of each hydrological response unit [-].

  • CP() Factor for correcting precipitation [-].

  • CPET() Factor for correcting potential evapotranspiration [-].

  • CPETL() Factor for converting general potential evapotranspiration (usually grass reference evapotranspiration) to land-use specific potential evapotranspiration [-].

  • CPES() Factor for converting general potential evapotranspiration (usually grass reference evapotranspiration) to potential evaporation from water areas [-].

  • LAI() Leaf area index [-].

  • IH() Interception capacity with respect to the leaf surface area [mm].

  • TT() Threshold temperature for snow/rain [°C].

  • TI() Temperature interval with a mixture of snow and rain [°C].

  • DDF() Day degree factor [mm/°C/T].

  • DDT() Day degree threshold temperature [°C].

  • CW() Wetness index parameter [mm].

  • CV() Vadose zone relaxation time constant [T].

  • CG() Groundwater reservoir constant [mm T].

  • CGF() Groundwater reservoir flood factor [1/mm].

  • CQ() Quickflow reservoir relaxation time [T].

  • CD() Channel depth [mm].

  • CS() Surface water parameter for bankfull discharge [mm/T].

  • HSMin() Surface water level where and below which discharge is zero [mm].

  • XS() Stage-discharge relation exponent [-].

  • B() Pore size distribution parameter [-].

  • PsiAE() Air entry pressure [mm].

  • ThetaS() Soil moisture content at saturation [-].

  • ThetaR() Residual soil moisture deficit at tension saturation [-].

  • Zeta1() Curvature parameter of the evapotranspiration reduction function [-].

  • Zeta2() Inflection point of the evapotranspiration reduction function [mm].

  • SH() General smoothing parameter related to the height of water columns [mm].

  • ST() General smoothing parameter related to temperature [°C].

class hydpy.models.wland.wland_control.AL(subvars: SubParameters)[source]

Bases: Parameter

Land area [km²].

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'al'

Name of the variable in lower case letters.

unit: str = 'km²'

Unit of the variable.

class hydpy.models.wland.wland_control.AS_(subvars: SubParameters)[source]

Bases: Parameter

Surface water area [km²].

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'as_'

Name of the variable in lower case letters.

unit: str = 'km²'

Unit of the variable.

class hydpy.models.wland.wland_control.NU(subvars: SubParameters)[source]

Bases: Parameter

Number of hydrological response units [-].

Required by the methods:

Calc_AM_V1 Calc_EI_V1 Calc_ETV_V1 Calc_ET_V1 Calc_FQS_V1 Calc_PETL_V1 Calc_PM_V1 Calc_PQ_V1 Calc_PV_V1 Calc_RF_V1 Calc_SF_V1 Calc_TF_V1 Update_IC_V1 Update_SP_V1

Parameter NU automatically sets the length of most 1-dimensional parameters and sequences of HydPy-W-Land:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(3)
>>> lt.shape
(3,)
>>> states.ic.shape
(3,)

Changing the value of parameter NU reshapes the related parameters and sequences and thereby eventually deletes predefined values:

>>> states.ic = 1.0
>>> states.ic
ic(1.0, 1.0, 1.0)
>>> nu(2)
>>> states.ic
ic(nan, nan)

Redefining the same value for parameter NU does not affect any related parameter and sequence object:

>>> states.ic = 1.0
>>> states.ic
ic(1.0, 1.0)
>>> nu(2)
>>> states.ic
ic(1.0, 1.0)
NDIM: int = 0
TYPE

alias of int

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0, None)
name: str = 'nu'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.LT(subvars: SubParameters)[source]

Bases: NameParameter

Landuse type [-].

Required by the methods:

Calc_ETV_V1 Calc_PETL_V1 Calc_PQ_V1 Calc_PV_V1 Calc_TF_V1

For better readability, use the land-use related constants defined in module wland_constants to set the individual hydrological response units’ land-use types:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(11)
>>> lt(SEALED, FIELD, WINE, ORCHARD, SOIL, PASTURE, WETLAND,
...    TREES, CONIFER, DECIDIOUS, MIXED)
>>> lt
lt(SEALED, FIELD, WINE, ORCHARD, SOIL, PASTURE, WETLAND, TREES,
   CONIFER, DECIDIOUS, MIXED)
NDIM: int = 1
TYPE

alias of int

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (12, 22)
CONSTANTS: Constants = {'CONIFER': 20, 'DECIDIOUS': 21, 'FIELD': 13, 'MIXED': 22, 'ORCHARD': 15, 'PASTURE': 17, 'SEALED': 12, 'SOIL': 16, 'TREES': 19, 'WETLAND': 18, 'WINE': 14}
name: str = 'lt'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.AUR(subvars: SubParameters)[source]

Bases: Parameter

Relative area of each hydrological response unit [-].

Required by the methods:

Calc_ETV_V1 Calc_ET_V1 Calc_PQ_V1 Calc_PV_V1

NDIM: int = 1
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, 1.0)
name: str = 'aur'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.CP(subvars: SubParameters)[source]

Bases: Parameter

Factor for correcting precipitation [-].

Required by the method:

Calc_PC_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cp'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.CPET(subvars: SubParameters)[source]

Bases: Parameter

Factor for correcting potential evapotranspiration [-].

Required by the methods:

Calc_PES_V1 Calc_PETL_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cpet'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.CPETL(subvars: SubParameters)[source]

Bases: LanduseMonthParameter

Factor for converting general potential evapotranspiration (usually grass reference evapotranspiration) to land-use specific potential evapotranspiration [-].

Required by the method:

Calc_PETL_V1

NDIM: int = 2
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cpetl'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.CPES(subvars: SubParameters)[source]

Bases: MonthParameter

Factor for converting general potential evapotranspiration (usually grass reference evapotranspiration) to potential evaporation from water areas [-].

Required by the method:

Calc_PES_V1

NDIM: int = 1
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cpes'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.LAI(subvars: SubParameters)[source]

Bases: LanduseMonthParameter

Leaf area index [-].

Required by the method:

Calc_TF_V1

NDIM: int = 2
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'lai'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.IH(subvars: SubParameters)[source]

Bases: Parameter

Interception capacity with respect to the leaf surface area [mm].

Required by the method:

Calc_TF_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'ih'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_control.TT(subvars: SubParameters)[source]

Bases: Parameter

Threshold temperature for snow/rain [°C].

Required by the method:

Calc_FR_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'tt'

Name of the variable in lower case letters.

unit: str = '°C'

Unit of the variable.

class hydpy.models.wland.wland_control.TI(subvars: SubParameters)[source]

Bases: Parameter

Temperature interval with a mixture of snow and rain [°C].

Required by the method:

Calc_FR_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'ti'

Name of the variable in lower case letters.

unit: str = '°C'

Unit of the variable.

class hydpy.models.wland.wland_control.DDF(subvars: SubParameters)[source]

Bases: LanduseParameter

Day degree factor [mm/°C/T].

Required by the method:

Calc_PM_V1

NDIM: int = 1
TYPE

alias of float

TIME: bool | None = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'ddf'

Name of the variable in lower case letters.

unit: str = 'mm/°C/T'

Unit of the variable.

class hydpy.models.wland.wland_control.DDT(subvars: SubParameters)[source]

Bases: Parameter

Day degree threshold temperature [°C].

Required by the method:

Calc_PM_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'ddt'

Name of the variable in lower case letters.

unit: str = '°C'

Unit of the variable.

class hydpy.models.wland.wland_control.CW(subvars: SubParameters)[source]

Bases: Parameter

Wetness index parameter [mm].

Required by the method:

Calc_W_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (1.0, None)
name: str = 'cw'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_control.CV(subvars: SubParameters)[source]

Bases: Parameter

Vadose zone relaxation time constant [T].

Required by the methods:

Calc_CDG_V1 Calc_CDG_V2

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cv'

Name of the variable in lower case letters.

unit: str = 'T'

Unit of the variable.

class hydpy.models.wland.wland_control.CG(subvars: SubParameters)[source]

Bases: Parameter

Groundwater reservoir constant [mm T].

Required by the method:

Calc_FGS_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cg'

Name of the variable in lower case letters.

unit: str = 'mm T'

Unit of the variable.

class hydpy.models.wland.wland_control.CGF(subvars: SubParameters)[source]

Bases: Parameter

Groundwater reservoir flood factor [1/mm].

Required by the method:

Calc_FGS_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cgf'

Name of the variable in lower case letters.

unit: str = '1/mm'

Unit of the variable.

class hydpy.models.wland.wland_control.CQ(subvars: SubParameters)[source]

Bases: Parameter

Quickflow reservoir relaxation time [T].

Required by the method:

Calc_FQS_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cq'

Name of the variable in lower case letters.

unit: str = 'T'

Unit of the variable.

class hydpy.models.wland.wland_control.CD(subvars: SubParameters)[source]

Bases: Parameter

Channel depth [mm].

Required by the methods:

Calc_FGS_V1 Calc_RH_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cd'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_control.CS(subvars: SubParameters)[source]

Bases: Parameter

Surface water parameter for bankfull discharge [mm/T].

Required by the method:

Calc_RH_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'cs'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_control.HSMin(subvars: SubParameters)[source]

Bases: Parameter

Surface water level where and below which discharge is zero [mm].

Required by the method:

Calc_RH_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'hsmin'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_control.XS(subvars: SubParameters)[source]

Bases: Parameter

Stage-discharge relation exponent [-].

Required by the method:

Calc_RH_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
INIT: int | float | bool | None = 1.5
name: str = 'xs'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.B(subvars: variabletools.SubgroupType)[source]

Bases: SoilParameter

Pore size distribution parameter [-].

Required by the methods:

Calc_DGEq_V1 Calc_DVEq_V1 Calc_DVEq_V2 Calc_DVEq_V3 Calc_DVEq_V4 Calc_GF_V1 Return_DVH_V1 Return_DVH_V2 Return_ErrorDV_V1

Parameter B comes with the following default values:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> b.print_defaults()
SAND: 4.05
LOAMY_SAND: 4.38
SANDY_LOAM: 4.9
SILT_LOAM: 5.3
LOAM: 5.39
SANDY_CLAY_LOAM: 7.12
SILT_CLAY_LOAM: 7.75
CLAY_LOAM: 8.52
SANDY_CLAY: 10.4
SILTY_CLAY: 10.4
CLAY: 11.4

See the documentation on class SoilParameter for further information.

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'b'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.PsiAE(subvars: variabletools.SubgroupType)[source]

Bases: SoilParameter

Air entry pressure [mm].

Required by the methods:

Calc_DGEq_V1 Calc_DVEq_V1 Calc_DVEq_V2 Calc_DVEq_V3 Calc_DVEq_V4 Calc_GF_V1 Return_DVH_V1 Return_DVH_V2 Return_ErrorDV_V1

Parameter PsiAE comes with the following default values:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> psiae.print_defaults()
SAND: 121.0
LOAMY_SAND: 90.0
SANDY_LOAM: 218.0
SILT_LOAM: 786.0
LOAM: 478.0
SANDY_CLAY_LOAM: 299.0
SILT_CLAY_LOAM: 356.0
CLAY_LOAM: 630.0
SANDY_CLAY: 153.0
SILTY_CLAY: 490.0
CLAY: 405.0

See the documentation on class SoilParameter for further information.

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'psiae'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_control.ThetaS(subvars: variabletools.SubgroupType)[source]

Bases: SoilParameter

Soil moisture content at saturation [-].

Required by the methods:

Calc_DGEq_V1 Calc_DVEq_V1 Calc_DVEq_V2 Calc_DVEq_V3 Calc_DVEq_V4 Calc_GF_V1 Return_DVH_V1 Return_DVH_V2 Return_ErrorDV_V1

Parameter ThetaS comes with the following default values:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas.print_defaults()
SAND: 0.395
LOAMY_SAND: 0.41
SANDY_LOAM: 0.435
SILT_LOAM: 0.485
LOAM: 0.451
SANDY_CLAY_LOAM: 0.42
SILT_CLAY_LOAM: 0.477
CLAY_LOAM: 0.476
SANDY_CLAY: 0.426
SILTY_CLAY: 0.492
CLAY: 0.482

See the documentation on class SoilParameter for further information.

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, 1.0)
trim(lower=None, upper=None)[source]

Trim ThetaS following \(1e^{-6} \leq ThetaS \leq 1.0\) and, if ThetaR exists for the relevant application model, also following \(ThetaR \leq ThetaS\).

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetas(0.0)
>>> thetas
thetas(0.000001)
>>> thetar.value = 0.5
>>> thetas(0.4)
>>> thetas
thetas(0.5)
>>> thetas(soil=SANDY_LOAM)
>>> thetas
thetas(0.5)
>>> thetas(1.01)
>>> thetas
thetas(1.0)
name: str = 'thetas'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.ThetaR(subvars: SubParameters)[source]

Bases: Parameter

Residual soil moisture deficit at tension saturation [-].

Required by the methods:

Calc_DGEq_V1 Calc_DVEq_V3 Calc_DVEq_V4 Calc_GF_V1 Return_DVH_V2 Return_ErrorDV_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (1e-06, None)
INIT: int | float | bool | None = 0.01
trim(lower=None, upper=None)[source]

Trim ThetaR following \(1e^{-6} \leq ThetaR \leq ThetaS\).

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> thetar(0.0)
>>> thetar
thetar(0.000001)
>>> thetas(0.41)
>>> thetar(0.42)
>>> thetar
thetar(0.41)
name: str = 'thetar'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.Zeta1(subvars: SubParameters)[source]

Bases: Parameter

Curvature parameter of the evapotranspiration reduction function [-].

Required by the method:

Calc_Beta_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
INIT: int | float | bool | None = 0.02
name: str = 'zeta1'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_control.Zeta2(subvars: SubParameters)[source]

Bases: Parameter

Inflection point of the evapotranspiration reduction function [mm].

Required by the method:

Calc_Beta_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
INIT: int | float | bool | None = 400.0
name: str = 'zeta2'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_control.SH(subvars: SubParameters)[source]

Bases: Parameter

General smoothing parameter related to the height of water columns [mm].

Required by the methods:

Calc_DVEq_V2 Calc_DVEq_V4

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'sh'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_control.ST(subvars: SubParameters)[source]

Bases: Parameter

General smoothing parameter related to temperature [°C].

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'st'

Name of the variable in lower case letters.

unit: str = '°C'

Unit of the variable.

Derived parameters

class hydpy.models.wland.DerivedParameters(master: Parameters, cls_fastaccess: Type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Derived parameters of model wland.

The following classes are selected:
  • MOY() References the “global” month of the year index array [-].

  • NUG() Number of groundwater affected hydrological response units [-].

  • AT() Total area [km²].

  • ALR() Relative land area [-].

  • ASR() Relative surface water area fraction [-].

  • AGR() Relative groundwater area [-].

  • QF() Factor for converting mm/T to m³/s [T m³ / mm s].

  • RH1() Regularisation parameter related to the height of water columns used when applying regularisation function smooth_logistic1() [mm].

  • RH2() Regularisation parameter related to the height of water columns used when applying regularisation function smooth_logistic2() [mm].

  • RT2() Regularisation parameter related to temperature for applying regularisation function smooth_logistic2()) [°C].

class hydpy.models.wland.wland_derived.MOY(subvars: SubParameters)[source]

Bases: MOYParameter

References the “global” month of the year index array [-].

Required by the methods:

Calc_PES_V1 Calc_PETL_V1 Calc_TF_V1

name: str = 'moy'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_derived.NUG(subvars: SubParameters)[source]

Bases: Parameter

Number of groundwater affected hydrological response units [-].

Required by the methods:

Calc_CDG_V1 Calc_CDG_V2 Calc_DGEq_V1 Calc_DVEq_V1 Calc_DVEq_V2 Calc_DVEq_V3 Calc_DVEq_V4 Calc_FGS_V1 Return_ErrorDV_V1 Update_DG_V1 Update_DV_V1

NDIM: int = 0
TYPE

alias of int

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0, None)
update()[source]

Update NUG based on \(NUG = \Sigma (LT \neq SEALED)\).

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(5)
>>> lt(SEALED, FIELD, SEALED, CONIFER, SEALED)
>>> derived.nug.update()
>>> derived.nug
nug(2)
name: str = 'nug'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_derived.AT(subvars: SubParameters)[source]

Bases: Parameter

Total area [km²].

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
update()[source]

Update AT based on \(AT = AL + AS\).

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> al(2.0)
>>> as_(1.0)
>>> derived.at.update()
>>> derived.at
at(3.0)
name: str = 'at'

Name of the variable in lower case letters.

unit: str = 'km²'

Unit of the variable.

class hydpy.models.wland.wland_derived.ALR(subvars: SubParameters)[source]

Bases: Parameter

Relative land area [-].

Required by the methods:

Calc_ET_V1 Calc_FXG_V1 Update_HS_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
update()[source]

Update ALR based on \(ALR = AL / AT\).

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> al(1.4)
>>> derived.at(2.0)
>>> derived.alr.update()
>>> derived.alr
alr(0.7)
name: str = 'alr'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_derived.ASR(subvars: SubParameters)[source]

Bases: Parameter

Relative surface water area fraction [-].

Required by the methods:

Calc_ET_V1 Calc_FXS_V1 Update_HS_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
DERIVEDPARAMTERS = (<class 'hydpy.models.wland.wland_derived.AT'>,)
update()[source]

Update ASR based on \(ASR = AS / AT\).

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> as_(0.4)
>>> derived.at(2.0)
>>> derived.asr.update()
>>> derived.asr
asr(0.2)
name: str = 'asr'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_derived.AGR(subvars: SubParameters)[source]

Bases: Parameter

Relative groundwater area [-].

Required by the methods:

Calc_ETV_V1 Calc_ET_V1 Calc_FXG_V1 Calc_PV_V1 Update_HS_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
update()[source]

Update AGR based on \(AGR = \Sigma AUR_{\overline{SEALED}}\).

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> nu(5)
>>> lt(SEALED, SOIL, SEALED, FIELD, SEALED)
>>> aur(0.04, 0.12, 0.2, 0.28, 0.36)
>>> derived.agr.update()
>>> derived.agr
agr(0.4)
name: str = 'agr'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_derived.QF(subvars: SubParameters)[source]

Bases: Parameter

Factor for converting mm/T to m³/s [T m³ / mm s].

Required by the method:

Calc_R_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
update()[source]

Update QF based on AT and the current simulation step size.

>>> from hydpy.models.wland import *
>>> simulationstep('1d')
>>> parameterstep()
>>> derived.at(10.0)
>>> derived.qf.update()
>>> derived.qf
qf(0.115741)
name: str = 'qf'

Name of the variable in lower case letters.

unit: str = 'T / mm s'

Unit of the variable.

class hydpy.models.wland.wland_derived.RH1(subvars: SubParameters)[source]

Bases: Parameter

Regularisation parameter related to the height of water columns used when applying regularisation function smooth_logistic1() [mm].

Required by the methods:

Calc_AM_V1 Calc_CDG_V1 Calc_CDG_V2 Calc_DVEq_V2 Calc_DVEq_V4 Calc_ES_V1 Calc_GF_V1 Calc_TF_V1 Return_DVH_V1 Return_DVH_V2

Calculated by the method:

Calc_EI_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
update()[source]

Calculate the smoothing parameter value.

The documentation on module smoothtools explains the following example in some detail:

>>> from hydpy.models.wland import *
>>> parameterstep()
>>> sh(0.0)
>>> derived.rh1.update()
>>> from hydpy.cythons.smoothutils import smooth_logistic1
>>> from hydpy import round_
>>> round_(smooth_logistic1(0.1, derived.rh1))
1.0
>>> sh(2.5)
>>> derived.rh1.update()
>>> round_(smooth_logistic1(2.5, derived.rh1))
0.99
name: str = 'rh1'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_derived.RH2(subvars: SubParameters)[source]

Bases: Parameter

Regularisation parameter related to the height of water columns used when applying regularisation function smooth_logistic2() [mm].

Required by the methods:

Calc_FGS_V1 Calc_RH_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
update()[source]

Calculate the smoothing parameter value.

The documentation on module smoothtools explains the following example in some detail:

>>> from hydpy.models.wland import *
>>> from hydpy.cythons.smoothutils import smooth_logistic2
>>> from hydpy import round_
>>> parameterstep()
>>> sh(0.0)
>>> derived.rh2.update()
>>> round_(smooth_logistic2(0.0, derived.rh2))
0.0
>>> sh(2.5)
>>> derived.rh2.update()
>>> round_(smooth_logistic2(2.5, derived.rh2))
2.51
name: str = 'rh2'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_derived.RT2(subvars: SubParameters)[source]

Bases: Parameter

Regularisation parameter related to temperature for applying regularisation function smooth_logistic2()) [°C].

Required by the method:

Calc_PM_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
update()[source]

Calculate the smoothing parameter value.

The documentation on module smoothtools explains the following example in some detail:

>>> from hydpy.models.wland import *
>>> from hydpy.cythons.smoothutils import smooth_logistic2
>>> from hydpy import round_
>>> parameterstep()
>>> st(0.0)
>>> derived.rt2.update()
>>> round_(smooth_logistic2(0.0, derived.rt2))
0.0
>>> st(2.5)
>>> derived.rt2.update()
>>> round_(smooth_logistic2(2.5, derived.rt2))
2.51
name: str = 'rt2'

Name of the variable in lower case letters.

unit: str = '°C'

Unit of the variable.

Fixed parameters

class hydpy.models.wland.FixedParameters(master: Parameters, cls_fastaccess: Type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Fixed parameters of model wland.

The following classes are selected:
class hydpy.models.wland.wland_fixed.Pi(subvars: SubParameters)[source]

Bases: FixedParameter

π [-].

Required by the method:

Calc_W_V1

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
INIT: int | float | bool | None = 3.141592653589793
name: str = 'pi'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

Solver parameters

class hydpy.models.wland.SolverParameters(master: Parameters, cls_fastaccess: Type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Solver parameters of model wland.

The following classes are selected:
  • AbsErrorMax() Absolute numerical error tolerance [mm/T].

  • RelErrorMax() Relative numerical error tolerance [-].

  • RelDTMin() Smallest relative integration time step size allowed [-].

  • RelDTMax() Largest relative integration time step size allowed [-].

class hydpy.models.wland.wland_solver.AbsErrorMax(subvars)[source]

Bases: SolverParameter

Absolute numerical error tolerance [mm/T].

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
INIT: int | float | bool = 0.01
name: str = 'abserrormax'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_solver.RelErrorMax(subvars)[source]

Bases: SolverParameter

Relative numerical error tolerance [-].

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
INIT: int | float | bool = 0.01
name: str = 'relerrormax'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_solver.RelDTMin(subvars)[source]

Bases: SolverParameter

Smallest relative integration time step size allowed [-].

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, 1.0)
INIT: int | float | bool = 0.0
name: str = 'reldtmin'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_solver.RelDTMax(subvars)[source]

Bases: SolverParameter

Largest relative integration time step size allowed [-].

NDIM: int = 0
TYPE

alias of float

TIME: bool | None = None
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, 1.0)
INIT: int | float | bool = 1.0
name: str = 'reldtmax'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

Sequence Features

Input sequences

class hydpy.models.wland.InputSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: InputSequences

Input sequences of model wland.

The following classes are selected:
  • T() Air temperature [°C].

  • P() Precipitation [mm/T].

  • PET() Potential evapotranspiration [mm/T].

  • FXG() Seepage/extraction (normalised to AT) [mm/T].

  • FXS() Surface water supply/extraction (normalised to AT) [mm/T].

class hydpy.models.wland.wland_inputs.T(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: InputSequence

Air temperature [°C].

Required by the methods:

Calc_FR_V1 Calc_PM_V1

NDIM: int = 0
NUMERIC: bool = False
name: str = 't'

Name of the variable in lower case letters.

unit: str = '°C'

Unit of the variable.

class hydpy.models.wland.wland_inputs.P(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: InputSequence

Precipitation [mm/T].

Required by the method:

Calc_PC_V1

NDIM: int = 0
NUMERIC: bool = False
name: str = 'p'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_inputs.PET(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: InputSequence

Potential evapotranspiration [mm/T].

Required by the methods:

Calc_PES_V1 Calc_PETL_V1

NDIM: int = 0
NUMERIC: bool = False
name: str = 'pet'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_inputs.FXG(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: InputSequence

Seepage/extraction (normalised to AT) [mm/T].

Required by the method:

Calc_FXG_V1

NDIM: int = 0
NUMERIC: bool = True
name: str = 'fxg'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_inputs.FXS(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: InputSequence

Surface water supply/extraction (normalised to AT) [mm/T].

Required by the method:

Calc_FXS_V1

NDIM: int = 0
NUMERIC: bool = False
name: str = 'fxs'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

Flux sequences

class hydpy.models.wland.FluxSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: FluxSequences

Flux sequences of model wland.

The following classes are selected:
  • PC() Corrected precipitation [mm/T].

  • PETL() Adjusted potential evapotranspiration of the land areas [mm/T].

  • PES() Adjusted potential evaporation of the surface water area [mm/T].

  • TF() Total amount of throughfall [mm/T].

  • EI() Interception evaporation [mm/T].

  • RF() Rainfall (or, more concrete, the liquid amount of throughfall) [mm/T].

  • SF() Snowfall (or, more concrete, the frozen amount of throughfall) [mm/T].

  • PM() Potential snowmelt [mm/T].

  • AM() Actual snowmelt [mm/T].

  • PS() Precipitation entering the surface water reservoir [mm/T].

  • PV() Rainfall (and snowmelt) entering the vadose zone [mm/T].

  • PQ() Rainfall (and snowmelt) entering the quickflow reservoir [mm/T].

  • ETV() Actual evapotranspiration from the vadose zone [mm/T].

  • ES() Actual evaporation from the surface water [mm/T].

  • ET() Total actual evapotranspiration [mm/T].

  • FXS() Surface water supply/extraction (normalised to AS_) [mm/T].

  • FXG() Seepage/extraction (normalised to AL) [mm/T].

  • CDG() Change in the groundwater depth due to percolation and capillary rise [mm/T].

  • FGS() Groundwater drainage/surface water infiltration [mm/T].

  • FQS() Quickflow [mm/T].

  • RH() Runoff height [mm/T].

  • R() Runoff [m³/s].

class hydpy.models.wland.wland_fluxes.PC(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Corrected precipitation [mm/T].

Calculated by the method:

Calc_PC_V1

Required by the methods:

Calc_PS_V1 Calc_TF_V1 Update_IC_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'pc'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.PETL(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Adjusted potential evapotranspiration of the land areas [mm/T].

Calculated by the method:

Calc_PETL_V1

Required by the methods:

Calc_EI_V1 Calc_ETV_V1

NDIM: int = 1
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'petl'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.PES(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Adjusted potential evaporation of the surface water area [mm/T].

Calculated by the method:

Calc_PES_V1

Required by the method:

Calc_ES_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'pes'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.TF(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Total amount of throughfall [mm/T].

Calculated by the method:

Calc_TF_V1

Required by the methods:

Calc_RF_V1 Calc_SF_V1 Update_IC_V1

NDIM: int = 1
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'tf'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.EI(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Interception evaporation [mm/T].

Calculated by the method:

Calc_EI_V1

Required by the methods:

Calc_ETV_V1 Calc_ET_V1 Update_IC_V1

NDIM: int = 1
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'ei'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.RF(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Rainfall (or, more concrete, the liquid amount of throughfall) [mm/T].

Calculated by the method:

Calc_RF_V1

Required by the methods:

Calc_PQ_V1 Calc_PV_V1

NDIM: int = 1
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'rf'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.SF(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Snowfall (or, more concrete, the frozen amount of throughfall) [mm/T].

Calculated by the method:

Calc_SF_V1

Required by the method:

Update_SP_V1

NDIM: int = 1
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'sf'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.PM(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Potential snowmelt [mm/T].

Calculated by the method:

Calc_PM_V1

Required by the method:

Calc_AM_V1

NDIM: int = 1
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'pm'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.AM(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Actual snowmelt [mm/T].

Calculated by the method:

Calc_AM_V1

Required by the methods:

Calc_PQ_V1 Calc_PV_V1 Update_SP_V1

NDIM: int = 1
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'am'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.PS(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Precipitation entering the surface water reservoir [mm/T].

Calculated by the method:

Calc_PS_V1

Required by the method:

Update_HS_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'ps'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.PV(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Rainfall (and snowmelt) entering the vadose zone [mm/T].

Calculated by the method:

Calc_PV_V1

Required by the methods:

Calc_CDG_V2 Update_DV_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'pv'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.PQ(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Rainfall (and snowmelt) entering the quickflow reservoir [mm/T].

Calculated by the method:

Calc_PQ_V1

Required by the method:

Update_HQ_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'pq'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.ETV(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Actual evapotranspiration from the vadose zone [mm/T].

Calculated by the method:

Calc_ETV_V1

Required by the methods:

Calc_ET_V1 Update_DV_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'etv'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.ES(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Actual evaporation from the surface water [mm/T].

Calculated by the method:

Calc_ES_V1

Required by the methods:

Calc_ET_V1 Update_HS_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'es'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.ET(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Total actual evapotranspiration [mm/T].

Calculated by the method:

Calc_ET_V1

NDIM: int = 0
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'et'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.FXS(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Surface water supply/extraction (normalised to AS_) [mm/T].

Calculated by the method:

Calc_FXS_V1

Required by the method:

Update_HS_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'fxs'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.FXG(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Seepage/extraction (normalised to AL) [mm/T].

Calculated by the method:

Calc_FXG_V1

Required by the methods:

Calc_CDG_V2 Update_DV_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'fxg'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.CDG(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Change in the groundwater depth due to percolation and capillary rise [mm/T].

Calculated by the methods:

Calc_CDG_V1 Calc_CDG_V2

Required by the method:

Update_DG_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'cdg'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.FGS(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Groundwater drainage/surface water infiltration [mm/T].

Calculated by the method:

Calc_FGS_V1

Required by the methods:

Calc_CDG_V2 Update_DV_V1 Update_HS_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'fgs'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.FQS(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Quickflow [mm/T].

Calculated by the method:

Calc_FQS_V1

Required by the methods:

Update_HQ_V1 Update_HS_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'fqs'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.RH(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Runoff height [mm/T].

Calculated by the method:

Calc_RH_V1

Required by the methods:

Calc_R_V1 Update_HS_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'rh'

Name of the variable in lower case letters.

unit: str = 'mm/T'

Unit of the variable.

class hydpy.models.wland.wland_fluxes.R(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: FluxSequence

Runoff [m³/s].

Calculated by the method:

Calc_R_V1

Required by the method:

Pass_R_V1

NDIM: int = 0
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, None)
name: str = 'r'

Name of the variable in lower case letters.

unit: str = 'm³/s'

Unit of the variable.

State sequences

class hydpy.models.wland.StateSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: StateSequences

State sequences of model wland.

The following classes are selected:
  • IC() Interception storage [mm].

  • SP() Snow pack [mm].

  • DV() Storage deficit of the vadose zone [mm].

  • DG() Groundwater depth [mm].

  • HQ() Level of the quickflow reservoir [mm].

  • HS() Surface water level [mm].

class hydpy.models.wland.wland_states.IC(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: StateSequence

Interception storage [mm].

Updated by the method:

Update_IC_V1

Required by the methods:

Calc_EI_V1 Calc_TF_V1

NDIM: int = 1
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'ic'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_states.SP(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: StateSequence

Snow pack [mm].

Updated by the method:

Update_SP_V1

Required by the method:

Calc_AM_V1

NDIM: int = 1
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'sp'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_states.DV(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: StateSequence

Storage deficit of the vadose zone [mm].

Updated by the method:

Update_DV_V1

Required by the methods:

Calc_Beta_V1 Calc_CDG_V1 Calc_CDG_V2 Calc_DGEq_V1 Calc_W_V1 Return_ErrorDV_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'dv'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_states.DG(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: StateSequence

Groundwater depth [mm].

Updated by the method:

Update_DG_V1

Required by the methods:

Calc_CDG_V1 Calc_CDG_V2 Calc_DVEq_V1 Calc_DVEq_V2 Calc_DVEq_V3 Calc_DVEq_V4 Calc_FGS_V1 Calc_GF_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'dg'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_states.HQ(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: StateSequence

Level of the quickflow reservoir [mm].

Updated by the method:

Update_HQ_V1

Required by the method:

Calc_FQS_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'hq'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_states.HS(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: StateSequence

Surface water level [mm].

Updated by the method:

Update_HS_V1

Required by the methods:

Calc_ES_V1 Calc_FGS_V1 Calc_RH_V1

NDIM: int = 0
NUMERIC: bool = True
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'hs'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

Outlet sequences

class hydpy.models.wland.OutletSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: OutletSequences

Outlet sequences of model wland.

The following classes are selected:
  • Q() Discharge [m³/s].

class hydpy.models.wland.wland_outlets.Q(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: OutletSequence

Discharge [m³/s].

Calculated by the method:

Pass_R_V1

NDIM: int = 0
NUMERIC: bool = False
name: str = 'q'

Name of the variable in lower case letters.

unit: str = 'm³/s'

Unit of the variable.

Aide sequences

class hydpy.models.wland.AideSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: AideSequences

Aide sequences of model wland.

The following classes are selected:
  • FR() Fraction rainfall / total precipitation [-].

  • W() Wetness index [-].

  • Beta() Evapotranspiration reduction factor [-].

  • DVEq() Equilibrium storage deficit of the vadose zone for the actual groundwater depth [mm].

  • DGEq() Equilibrium groundwater depth for the actual storage deficit of the vadose zone [mm].

  • GF() Gain factor for changes in groundwater depth [-].

class hydpy.models.wland.wland_aides.FR(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: AideSequence

Fraction rainfall / total precipitation [-].

Calculated by the method:

Calc_FR_V1

Required by the methods:

Calc_RF_V1 Calc_SF_V1

NDIM: int = 0
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (0.0, 1.0)
name: str = 'fr'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_aides.W(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: AideSequence

Wetness index [-].

Calculated by the method:

Calc_W_V1

Required by the methods:

Calc_PQ_V1 Calc_PV_V1

NDIM: int = 0
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'w'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_aides.Beta(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: AideSequence

Evapotranspiration reduction factor [-].

Calculated by the method:

Calc_Beta_V1

Required by the method:

Calc_ETV_V1

NDIM: int = 0
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'beta'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

class hydpy.models.wland.wland_aides.DVEq(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: AideSequence

Equilibrium storage deficit of the vadose zone for the actual groundwater depth [mm].

Calculated by the methods:

Calc_DVEq_V1 Calc_DVEq_V2 Calc_DVEq_V3 Calc_DVEq_V4

Required by the methods:

Calc_CDG_V1 Calc_CDG_V2

NDIM: int = 0
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'dveq'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_aides.DGEq(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: AideSequence

Equilibrium groundwater depth for the actual storage deficit of the vadose zone [mm].

Calculated by the method:

Calc_DGEq_V1

Required by the method:

Calc_GF_V1

NDIM: int = 0
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'dgeq'

Name of the variable in lower case letters.

unit: str = 'mm'

Unit of the variable.

class hydpy.models.wland.wland_aides.GF(subvars: ModelSequences[ModelSequence, FastAccess])[source]

Bases: AideSequence

Gain factor for changes in groundwater depth [-].

Calculated by the method:

Calc_GF_V1

Required by the method:

Calc_CDG_V2

NDIM: int = 0
NUMERIC: bool = False
SPAN: Tuple[int | float | bool | None, int | float | bool | None] = (None, None)
name: str = 'gf'

Name of the variable in lower case letters.

unit: str = '-'

Unit of the variable.

Auxiliary Features

Masks

class hydpy.models.wland.Masks[source]

Bases: Masks

Masks of base model wland.

The following classes are selected:
class hydpy.models.wland.wland_masks.Complete(variable: VariableProtocol | None = None, **kwargs)[source]

Bases: IndexMask

Mask including all land use types.

RELEVANT_VALUES: Tuple[int, ...] = (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
static get_refindices(variable)[source]

Reference to the associated instance of LT.

name: str = 'complete'
class hydpy.models.wland.AideSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: AideSequences

Aide sequences of model wland.

The following classes are selected:
  • FR() Fraction rainfall / total precipitation [-].

  • W() Wetness index [-].

  • Beta() Evapotranspiration reduction factor [-].

  • DVEq() Equilibrium storage deficit of the vadose zone for the actual groundwater depth [mm].

  • DGEq() Equilibrium groundwater depth for the actual storage deficit of the vadose zone [mm].

  • GF() Gain factor for changes in groundwater depth [-].

class hydpy.models.wland.ControlParameters(master: Parameters, cls_fastaccess: Type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Control parameters of model wland.

The following classes are selected:
  • AL() Land area [km²].

  • AS_() Surface water area [km²].

  • NU() Number of hydrological response units [-].

  • LT() Landuse type [-].

  • AUR() Relative area of each hydrological response unit [-].

  • CP() Factor for correcting precipitation [-].

  • CPET() Factor for correcting potential evapotranspiration [-].

  • CPETL() Factor for converting general potential evapotranspiration (usually grass reference evapotranspiration) to land-use specific potential evapotranspiration [-].

  • CPES() Factor for converting general potential evapotranspiration (usually grass reference evapotranspiration) to potential evaporation from water areas [-].

  • LAI() Leaf area index [-].

  • IH() Interception capacity with respect to the leaf surface area [mm].

  • TT() Threshold temperature for snow/rain [°C].

  • TI() Temperature interval with a mixture of snow and rain [°C].

  • DDF() Day degree factor [mm/°C/T].

  • DDT() Day degree threshold temperature [°C].

  • CW() Wetness index parameter [mm].

  • CV() Vadose zone relaxation time constant [T].

  • CG() Groundwater reservoir constant [mm T].

  • CGF() Groundwater reservoir flood factor [1/mm].

  • CQ() Quickflow reservoir relaxation time [T].

  • CD() Channel depth [mm].

  • CS() Surface water parameter for bankfull discharge [mm/T].

  • HSMin() Surface water level where and below which discharge is zero [mm].

  • XS() Stage-discharge relation exponent [-].

  • B() Pore size distribution parameter [-].

  • PsiAE() Air entry pressure [mm].

  • ThetaS() Soil moisture content at saturation [-].

  • ThetaR() Residual soil moisture deficit at tension saturation [-].

  • Zeta1() Curvature parameter of the evapotranspiration reduction function [-].

  • Zeta2() Inflection point of the evapotranspiration reduction function [mm].

  • SH() General smoothing parameter related to the height of water columns [mm].

  • ST() General smoothing parameter related to temperature [°C].

class hydpy.models.wland.DerivedParameters(master: Parameters, cls_fastaccess: Type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Derived parameters of model wland.

The following classes are selected:
  • MOY() References the “global” month of the year index array [-].

  • NUG() Number of groundwater affected hydrological response units [-].

  • AT() Total area [km²].

  • ALR() Relative land area [-].

  • ASR() Relative surface water area fraction [-].

  • AGR() Relative groundwater area [-].

  • QF() Factor for converting mm/T to m³/s [T m³ / mm s].

  • RH1() Regularisation parameter related to the height of water columns used when applying regularisation function smooth_logistic1() [mm].

  • RH2() Regularisation parameter related to the height of water columns used when applying regularisation function smooth_logistic2() [mm].

  • RT2() Regularisation parameter related to temperature for applying regularisation function smooth_logistic2()) [°C].

class hydpy.models.wland.FixedParameters(master: Parameters, cls_fastaccess: Type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Fixed parameters of model wland.

The following classes are selected:
class hydpy.models.wland.FluxSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: FluxSequences

Flux sequences of model wland.

The following classes are selected:
  • PC() Corrected precipitation [mm/T].

  • PETL() Adjusted potential evapotranspiration of the land areas [mm/T].

  • PES() Adjusted potential evaporation of the surface water area [mm/T].

  • TF() Total amount of throughfall [mm/T].

  • EI() Interception evaporation [mm/T].

  • RF() Rainfall (or, more concrete, the liquid amount of throughfall) [mm/T].

  • SF() Snowfall (or, more concrete, the frozen amount of throughfall) [mm/T].

  • PM() Potential snowmelt [mm/T].

  • AM() Actual snowmelt [mm/T].

  • PS() Precipitation entering the surface water reservoir [mm/T].

  • PV() Rainfall (and snowmelt) entering the vadose zone [mm/T].

  • PQ() Rainfall (and snowmelt) entering the quickflow reservoir [mm/T].

  • ETV() Actual evapotranspiration from the vadose zone [mm/T].

  • ES() Actual evaporation from the surface water [mm/T].

  • ET() Total actual evapotranspiration [mm/T].

  • FXS() Surface water supply/extraction (normalised to AS_) [mm/T].

  • FXG() Seepage/extraction (normalised to AL) [mm/T].

  • CDG() Change in the groundwater depth due to percolation and capillary rise [mm/T].

  • FGS() Groundwater drainage/surface water infiltration [mm/T].

  • FQS() Quickflow [mm/T].

  • RH() Runoff height [mm/T].

  • R() Runoff [m³/s].

class hydpy.models.wland.InputSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: InputSequences

Input sequences of model wland.

The following classes are selected:
  • T() Air temperature [°C].

  • P() Precipitation [mm/T].

  • PET() Potential evapotranspiration [mm/T].

  • FXG() Seepage/extraction (normalised to AT) [mm/T].

  • FXS() Surface water supply/extraction (normalised to AT) [mm/T].

class hydpy.models.wland.OutletSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: OutletSequences

Outlet sequences of model wland.

The following classes are selected:
  • Q() Discharge [m³/s].

class hydpy.models.wland.SolverParameters(master: Parameters, cls_fastaccess: Type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Solver parameters of model wland.

The following classes are selected:
  • AbsErrorMax() Absolute numerical error tolerance [mm/T].

  • RelErrorMax() Relative numerical error tolerance [-].

  • RelDTMin() Smallest relative integration time step size allowed [-].

  • RelDTMax() Largest relative integration time step size allowed [-].

class hydpy.models.wland.StateSequences(master: Sequences, cls_fastaccess: Type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: StateSequences

State sequences of model wland.

The following classes are selected:
  • IC() Interception storage [mm].

  • SP() Snow pack [mm].

  • DV() Storage deficit of the vadose zone [mm].

  • DG() Groundwater depth [mm].

  • HQ() Level of the quickflow reservoir [mm].

  • HS() Surface water level [mm].