hland¶
The H-Land model is the core of the HydPy implementation of the the frequently applied HBV96 model. It consists of some routines for the preparation of meteorological input, and some process routines related to interception, snow, soil moisture, upper groundwater, lower groundwater (including lakes), and runoff concentration.
Method Features¶
-
class
hydpy.models.hland.hland_model.
Model
[source]¶ Bases:
hydpy.core.modeltools.AdHocModel
The HydPy-H-Land base model.
- The following “run methods” are called in the given sequence during each simulation step:
Calc_TC_V1
Adjust the measured air temperature to the altitude of the individual zones.Calc_TMean_V1
Calculate the areal mean temperature of the subbasin.Calc_FracRain_V1
Determine the temperature-dependent fraction of (liquid) rainfall and (total) precipitation.Calc_RFC_SFC_V1
Calculate the corrected fractions rainfall/snowfall and total precipitation.Calc_PC_V1
Apply the precipitation correction factors and adjust precipitation to the altitude of the individual zones.Calc_EP_V1
Adjust potential norm evaporation to the actual temperature.Calc_EPC_V1
Apply the evaporation correction factors and adjust evaporation to the altitude of the individual zones.Calc_TF_Ic_V1
Calculate throughfall and update the interception storage accordingly.Calc_EI_Ic_V1
Calculate interception evaporation and update the interception storage accordingly.Calc_SP_WC_V1
Add throughfall to the snow layer.Calc_Melt_SP_WC_V1
Calculate melting of the ice content within the snow layer and update both the snow layers ice and the water content.Calc_Refr_SP_WC_V1
Calculate refreezing of the water content within the snow layer and update both the snow layers ice and the water content.Calc_In_WC_V1
Calculate the actual water release from the snow layer due to the exceedance of the snow layers capacity for (liquid) water.Calc_GlMelt_In_V1
Calculate melting from glaciers which are actually not covered by a snow layer and add it to the water release of the snow module.Calc_R_SM_V1
Calculate effective precipitation and update soil moisture.Calc_CF_SM_V1
Calculate capillary flow and update soil moisture.Calc_EA_SM_V1
Calculate soil evaporation and update soil moisture.Calc_InUZ_V1
Accumulate the total inflow into the upper zone layer.Calc_ContriArea_V1
Determine the relative size of the contributing area of the whole subbasin.Calc_Q0_Perc_UZ_V1
Perform the upper zone layer routine which determines percolation to the lower zone layer and the fast response of the hland model.Calc_LZ_V1
Update the lower zone layer in accordance with percolation from upper groundwater to lower groundwater and/or in accordance with lake precipitation.Calc_EL_LZ_V1
Calculate lake evaporation.Calc_Q1_LZ_V1
Calculate the slow response of the lower zone layer.Calc_InUH_V1
Calculate the unit hydrograph input.Calc_OutUH_QUH_V1
Calculate the unit hydrograph output (convolution).Calc_QT_V1
Calculate the total discharge after possible abstractions.
- The following “outlet update methods” are called in the given sequence at the end of each simulation step:
Pass_Q_v1
Update the outlet link sequence.
-
class
hydpy.models.hland.hland_model.
Calc_TC_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Adjust the measured air temperature to the altitude of the individual zones.
- Requires the control parameters:
- Requires the input sequence:
- Calculates the flux sequence:
- Basic equation:
\(TC = T - TCAlt \cdot (ZoneZ-ZRelT)\)
Examples:
Prepare two zones, the first one lying at the reference height and the second one 200 meters above:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(2) >>> zrelt(2.0) >>> zonez(2.0, 4.0)
Applying the usual temperature lapse rate of 0.6°C/100m does not affect the temperature of the first zone but reduces the temperature of the second zone by 1.2°C:
>>> tcalt(0.6) >>> inputs.t = 5.0 >>> model.calc_tc_v1() >>> fluxes.tc tc(5.0, 3.8)
-
class
hydpy.models.hland.hland_model.
Calc_TMean_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the areal mean temperature of the subbasin.
- Requires the control parameter:
- Requires the derived parameter:
- Requires the flux sequence:
- Calculates the flux sequence:
Examples:
Prepare two zones, the first one being twice as large as the second one:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(2) >>> derived.relzonearea(2.0/3.0, 1.0/3.0)
With temperature values of 5°C and 8°C of the respective zones, the mean temperature is 6°C:
>>> fluxes.tc = 5.0, 8.0 >>> model.calc_tmean_v1() >>> fluxes.tmean tmean(6.0)
-
class
hydpy.models.hland.hland_model.
Calc_FracRain_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Determine the temperature-dependent fraction of (liquid) rainfall and (total) precipitation.
- Requires the control parameters:
- Requires the flux sequence:
- Calculates the flux sequence:
- Basic equation:
\(FracRain = \frac{TC-(TT-\frac{TTInt}{2})}{TTInt}\)
- Restriction:
\(0 \leq FracRain \leq 1\)
Examples:
The threshold temperature of seven zones is 0°C and the corresponding temperature interval of mixed precipitation 2°C:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(7) >>> tt(0.0) >>> ttint(2.0)
The fraction of rainfall is zero below -1°C, is one above 1°C and increases linearly in between:
>>> fluxes.tc = -10.0, -1.0, -0.5, 0.0, 0.5, 1.0, 10.0 >>> model.calc_fracrain_v1() >>> fluxes.fracrain fracrain(0.0, 0.0, 0.25, 0.5, 0.75, 1.0, 1.0)
Note the special case of a zero temperature interval. With a actual temperature being equal to the threshold temperature, the rainfall fraction is one:
>>> ttint(0.0) >>> model.calc_fracrain_v1() >>> fluxes.fracrain fracrain(0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0)
-
class
hydpy.models.hland.hland_model.
Calc_RFC_SFC_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the corrected fractions rainfall/snowfall and total precipitation.
- Requires the control parameters:
- Requires the flux sequence:
- Calculates the flux sequences:
- Basic equations:
\(RfC = RfCF \cdot FracRain\)
\(SfC = SfCF \cdot (1 - FracRain)\)
Examples:
Assume five zones with different temperatures and hence different fractions of rainfall and total precipitation:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> fluxes.fracrain = 0.0, 0.25, 0.5, 0.75, 1.0
With no rainfall and no snowfall correction (implied by the respective factors being one), the corrected fraction related to rainfall is identical with the original fraction and the corrected fraction related to snowfall behaves opposite:
>>> rfcf(1.0) >>> sfcf(1.0) >>> model.calc_rfc_sfc_v1() >>> fluxes.rfc rfc(0.0, 0.25, 0.5, 0.75, 1.0) >>> fluxes.sfc sfc(1.0, 0.75, 0.5, 0.25, 0.0)
With a negative rainfall correction of 20% and a positive snowfall correction of 20 % the corrected fractions are:
>>> rfcf(0.8) >>> sfcf(1.2) >>> model.calc_rfc_sfc_v1() >>> fluxes.rfc rfc(0.0, 0.2, 0.4, 0.6, 0.8) >>> fluxes.sfc sfc(1.2, 0.9, 0.6, 0.3, 0.0)
-
class
hydpy.models.hland.hland_model.
Calc_PC_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Apply the precipitation correction factors and adjust precipitation to the altitude of the individual zones.
- Requires the control parameters:
- Requires the input sequence:
- Requires the flux sequences:
- Calculates the flux sequence:
- Basic equation:
\(PC = P \cdot PCorr \cdot (1+PCAlt \cdot (ZoneZ-ZRelP)) \cdot (RfC + SfC)\)
Examples:
Five zones are at an elevation of 200 m. A precipitation value of 5 mm has been measured at a gauge at an elevation of 300 m:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> zrelp(2.0) >>> zonez(3.0) >>> inputs.p = 5.0
The first four zones illustrate the individual precipitation corrections due to the general precipitation correction factor (
PCorr
, first zone), the altitude correction factor (PCAlt
, second zone), the rainfall related correction (RfC
, third zone), and the snowfall related correction factor (SfC
, fourth zone). The fifth zone illustrates the interaction between all corrections:>>> pcorr(1.3, 1.0, 1.0, 1.0, 1.3) >>> pcalt(0.0, 0.1, 0.0, 0.0, 0.1) >>> fluxes.rfc = 0.5, 0.5, 0.4, 0.5, 0.4 >>> fluxes.sfc = 0.5, 0.5, 0.5, 0.7, 0.7 >>> model.calc_pc_v1() >>> fluxes.pc pc(6.5, 5.5, 4.5, 6.0, 7.865)
Usually, one would set zero or positive values for parameter
PCAlt
. But it is also allowed to set negative values, in order to reflect possible negative relationships between precipitation and altitude. To prevent from calculating negative precipitation when too large negative values are applied, a truncation is performed:>>> pcalt(-1.0) >>> model.calc_pc_v1() >>> fluxes.pc pc(0.0, 0.0, 0.0, 0.0, 0.0)
-
class
hydpy.models.hland.hland_model.
Calc_EP_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Adjust potential norm evaporation to the actual temperature.
- Requires the control parameters:
- Requires the input sequences:
- Requires the flux sequence:
- Calculates the flux sequence:
- Basic equation:
\(EP = EPN \cdot (1 + ETF \cdot (TMean - TN))\)
- Restriction:
\(0 \leq EP \leq 2 \cdot EPN\)
Examples:
Assume four zones with different values of the temperature related factor for the adjustment of evaporation (the negative value of the first zone is not meaningful, but used for illustration purporses):
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> etf(-0.5, 0.0, 0.1, 0.5) >>> inputs.tn = 20.0 >>> inputs.epn = 2.0
With mean temperature equal to norm temperature, actual (uncorrected) evaporation is equal to norm evaporation:
>>> fluxes.tmean = 20.0 >>> model.calc_ep_v1() >>> fluxes.ep ep(2.0, 2.0, 2.0, 2.0)
With mean temperature 5°C higher than norm temperature, potential evaporation is increased by 1 mm for the third zone, which possesses a very common adjustment factor. For the first zone, potential evaporation is 0 mm (which is the smallest value allowed), and for the fourth zone it is the double value of the norm evaporation (which is the largest value allowed):
>>> fluxes.tmean = 25.0 >>> model.calc_ep_v1() >>> fluxes.ep ep(0.0, 2.0, 3.0, 4.0)
-
class
hydpy.models.hland.hland_model.
Calc_EPC_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Apply the evaporation correction factors and adjust evaporation to the altitude of the individual zones.
- Requires the control parameters:
- Requires the flux sequences:
- Calculates the flux sequence:
Calculate the areal mean of (uncorrected) potential evaporation for the subbasin, adjust it to the individual zones in accordance with their heights and perform some corrections, among which one depends on the actual precipitation.
- Basic equation:
\(EPC = EP \cdot ECorr \cdot (1+ECAlt \cdot (ZoneZ-ZRelE)) \cdot exp(-EPF \cdot PC)\)
Examples:
Four zones are at an elevation of 200 m. A (uncorrected) potential evaporation value of 2 mm and a (corrected) precipitation value of 5 mm have been determined for each zone beforehand:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> nmbzones(4) >>> zrele(2.0) >>> zonez(3.0) >>> fluxes.ep = 2.0 >>> fluxes.pc = 5.0
The first three zones illustrate the individual evaporation corrections due to the general evaporation correction factor (
ECorr
, first zone), the altitude correction factor (ECAlt
, second zone), the precipitation related correction factor (EPF
, third zone). The fourth zone illustrates the interaction between all corrections:>>> ecorr(1.3, 1.0, 1.0, 1.3) >>> ecalt(0.0, 0.1, 0.0, 0.1) >>> epf(0.0, 0.0, -numpy.log(0.7)/10.0, -numpy.log(0.7)/10.0) >>> model.calc_epc_v1() >>> fluxes.epc epc(2.6, 1.8, 1.4, 1.638)
To prevent from calculating negative evaporation values when too large values for parameter
ECAlt
are set, a truncation is performed:>>> ecalt(2.0) >>> model.calc_epc_v1() >>> fluxes.epc epc(0.0, 0.0, 0.0, 0.0)
-
class
hydpy.models.hland.hland_model.
Calc_TF_Ic_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate throughfall and update the interception storage accordingly.
- Requires the control parameters:
- Requires the flux sequence:
- Updates the state sequence:
- Calculates the flux sequence:
- Basic equation:
\(TF = \Bigl \lbrace { {PC \ | \ Ic = IcMax} \atop {0 \ | \ Ic < IcMax} }\)
Examples:
Initialize six zones of different types. Assume a generall maximum interception capacity of 2 mm. All zones receive a 0.5 mm input of precipitation:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(6) >>> zonetype(GLACIER, ILAKE, FIELD, FOREST, FIELD, FIELD) >>> icmax(2.0) >>> fluxes.pc = 0.5 >>> states.ic = 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 >>> model.calc_tf_ic_v1()
For glaciers (first zone) and internal lakes (second zone) the interception routine does not apply. Hence, all precipitation is routed as throughfall. For fields and forests, the interception routine is identical (usually, only larger capacities for forests are assumed, due to their higher leaf area index). Hence, the results of the third and the second zone are equal. The last three zones demonstrate, that all precipitation is stored until the interception capacity is reached; afterwards, all precepitation is routed as throughfall. Initial storage reduces the effective capacity of the respective simulation step:
>>> states.ic ic(0.0, 0.0, 0.5, 0.5, 1.5, 2.0) >>> fluxes.tf tf(0.5, 0.5, 0.0, 0.0, 0.0, 0.5)
A zero precipitation example:
>>> fluxes.pc = 0.0 >>> states.ic = 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 >>> model.calc_tf_ic_v1() >>> states.ic ic(0.0, 0.0, 0.0, 0.0, 1.0, 2.0) >>> fluxes.tf tf(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
A high precipitation example:
>>> fluxes.pc = 5.0 >>> states.ic = 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 >>> model.calc_tf_ic_v1() >>> states.ic ic(0.0, 0.0, 2.0, 2.0, 2.0, 2.0) >>> fluxes.tf tf(5.0, 5.0, 3.0, 3.0, 4.0, 5.0)
-
class
hydpy.models.hland.hland_model.
Calc_EI_Ic_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate interception evaporation and update the interception storage accordingly.
- Requires the control parameters:
- Requires the flux sequence:
- Updates the state sequence:
- Calculates the flux sequence:
- Basic equation:
\(EI = \Bigl \lbrace { {EPC \ | \ Ic > 0} \atop {0 \ | \ Ic = 0} }\)
Examples:
Initialize six zones of different types. For all zones a (corrected) potential evaporation of 0.5 mm is given:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(6) >>> zonetype(GLACIER, ILAKE, FIELD, FOREST, FIELD, FIELD) >>> fluxes.epc = 0.5 >>> states.ic = 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 >>> model.calc_ei_ic_v1()
For glaciers (first zone) and internal lakes (second zone) the interception routine does not apply. Hence, no interception evaporation can occur. For fields and forests, the interception routine is identical (usually, only larger capacities for forests are assumed, due to their higher leaf area index). Hence, the results of the third and the second zone are equal. The last three zones demonstrate, that all interception evaporation is equal to potential evaporation until the interception storage is empty; afterwards, interception evaporation is zero:
>>> states.ic ic(0.0, 0.0, 0.0, 0.0, 0.5, 1.5) >>> fluxes.ei ei(0.0, 0.0, 0.0, 0.0, 0.5, 0.5)
A zero evaporation example:
>>> fluxes.epc = 0.0 >>> states.ic = 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 >>> model.calc_ei_ic_v1() >>> states.ic ic(0.0, 0.0, 0.0, 0.0, 1.0, 2.0) >>> fluxes.ei ei(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
A high evaporation example:
>>> fluxes.epc = 5.0 >>> states.ic = 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 >>> model.calc_ei_ic_v1() >>> states.ic ic(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> fluxes.ei ei(0.0, 0.0, 0.0, 0.0, 1.0, 2.0)
-
class
hydpy.models.hland.hland_model.
Calc_SP_WC_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Add throughfall to the snow layer.
- Requires the control parameters:
- Requires the flux sequences:
- Updates the state sequences:
- Basic equations:
\(\frac{dSP}{dt} = TF \cdot \frac{SfC}{SfC+RfC}\)
\(\frac{dWC}{dt} = TF \cdot \frac{RfC}{SfC+RfC}\)
Exemples:
Consider the following setting, in which eight zones of different type receive a throughfall of 10mm:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(8) >>> zonetype(ILAKE, GLACIER, FIELD, FOREST, FIELD, FIELD, FIELD, FIELD) >>> fluxes.tf = 10.0 >>> fluxes.sfc = 0.5, 0.5, 0.5, 0.5, 0.2, 0.8, 1.0, 4.0 >>> fluxes.rfc = 0.5, 0.5, 0.5, 0.5, 0.8, 0.2, 4.0, 1.0 >>> states.sp = 0.0 >>> states.wc = 0.0 >>> model.calc_sp_wc_v1() >>> states.sp sp(0.0, 5.0, 5.0, 5.0, 2.0, 8.0, 2.0, 8.0) >>> states.wc wc(0.0, 5.0, 5.0, 5.0, 8.0, 2.0, 8.0, 2.0)
The snow routine does not apply for internal lakes, which is why both the ice storage and the water storage of the first zone remain unchanged. The snow routine is identical for glaciers, fields and forests in the current context, which is why the results of the second, third, and fourth zone are equal. The last four zones illustrate that the corrected snowfall fraction as well as the corrected rainfall fraction are applied in a relative manner, as the total amount of water yield has been corrected in the interception module already.
When both factors are zero, the neither the water nor the ice content of the snow layer changes:
>>> fluxes.sfc = 0.0 >>> fluxes.rfc = 0.0 >>> states.sp = 2.0 >>> states.wc = 0.0 >>> model.calc_sp_wc_v1() >>> states.sp sp(0.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0) >>> states.wc wc(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-
class
hydpy.models.hland.hland_model.
Calc_Melt_SP_WC_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate melting of the ice content within the snow layer and update both the snow layers ice and the water content.
- Requires the control parameters:
- Requires the derived parameter:
- Requires the flux sequence:
- Updates the state sequences:
- Calculates the flux sequence:
- Basic equations:
\(\frac{dSP}{dt} = - Melt\)
\(\frac{dWC}{dt} = + Melt\)
\(Melt = min(cfmax \cdot (TC-TTM), SP)\)
Examples:
Six zones are initialized with the same threshold temperature and degree day factor, but with different zone types and initial ice contents:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> nmbzones(6) >>> zonetype(ILAKE, GLACIER, FIELD, FOREST, FIELD, FIELD) >>> cfmax(4.0) >>> derived.ttm = 2.0 >>> states.sp = 0.0, 10.0, 10.0, 10.0, 5.0, 0.0 >>> states.wc = 2.0
Note that the assumed length of the simulation step is only a half day. Hence the effective value of the degree day factor is not 4 but 2:
>>> cfmax cfmax(4.0) >>> cfmax.values array([ 2., 2., 2., 2., 2., 2.])
When the actual temperature is equal to the threshold temperature for melting and refreezing, no melting occurs and the states remain unchanged:
>>> fluxes.tc = 2.0 >>> model.calc_melt_sp_wc_v1() >>> fluxes.melt melt(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sp sp(0.0, 10.0, 10.0, 10.0, 5.0, 0.0) >>> states.wc wc(0.0, 2.0, 2.0, 2.0, 2.0, 2.0)
The same holds true for an actual temperature lower than the threshold temperature:
>>> states.sp = 0.0, 10.0, 10.0, 10.0, 5.0, 0.0 >>> states.wc = 2.0 >>> fluxes.tc = -1.0 >>> model.calc_melt_sp_wc_v1() >>> fluxes.melt melt(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sp sp(0.0, 10.0, 10.0, 10.0, 5.0, 0.0) >>> states.wc wc(0.0, 2.0, 2.0, 2.0, 2.0, 2.0)
With an actual temperature 3°C above the threshold temperature, melting can occur. Actual melting is consistent with potential melting, except for the first zone, which is an internal lake, and the last two zones, for which potential melting exceeds the available frozen water content of the snow layer:
>>> states.sp = 0.0, 10.0, 10.0, 10.0, 5.0, 0.0 >>> states.wc = 2.0 >>> fluxes.tc = 5.0 >>> model.calc_melt_sp_wc_v1() >>> fluxes.melt melt(0.0, 6.0, 6.0, 6.0, 5.0, 0.0) >>> states.sp sp(0.0, 4.0, 4.0, 4.0, 0.0, 0.0) >>> states.wc wc(0.0, 8.0, 8.0, 8.0, 7.0, 2.0)
-
class
hydpy.models.hland.hland_model.
Calc_Refr_SP_WC_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate refreezing of the water content within the snow layer and update both the snow layers ice and the water content.
- Requires the control parameters:
- Requires the derived parameter:
- Requires the flux sequence:
- Updates the state sequences:
- Calculates the flux sequence:
- Basic equations:
\(\frac{dSP}{dt} = + Refr\)
\(\frac{dWC}{dt} = - Refr\)
\(Refr = min(cfr \cdot cfmax \cdot (TTM-TC), WC)\)
Examples:
Six zones are initialized with the same threshold temperature, degree day factor and refreezing coefficient, but with different zone types and initial states:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> nmbzones(6) >>> zonetype(ILAKE, GLACIER, FIELD, FOREST, FIELD, FIELD) >>> cfmax(4.0) >>> cfr(0.1) >>> derived.ttm = 2.0 >>> states.sp = 2.0 >>> states.wc = 0.0, 1.0, 1.0, 1.0, 0.5, 0.0
Note that the assumed length of the simulation step is only a half day. Hence the effective value of the degree day factor is not 4 but 2:
>>> cfmax cfmax(4.0) >>> cfmax.values array([ 2., 2., 2., 2., 2., 2.])
When the actual temperature is equal to the threshold temperature for melting and refreezing, neither no refreezing occurs and the states remain unchanged:
>>> fluxes.tc = 2.0 >>> model.calc_refr_sp_wc_v1() >>> fluxes.refr refr(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sp sp(0.0, 2.0, 2.0, 2.0, 2.0, 2.0) >>> states.wc wc(0.0, 1.0, 1.0, 1.0, 0.5, 0.0)
The same holds true for an actual temperature higher than the threshold temperature:
>>> states.sp = 2.0 >>> states.wc = 0.0, 1.0, 1.0, 1.0, 0.5, 0.0 >>> fluxes.tc = 2.0 >>> model.calc_refr_sp_wc_v1() >>> fluxes.refr refr(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sp sp(0.0, 2.0, 2.0, 2.0, 2.0, 2.0) >>> states.wc wc(0.0, 1.0, 1.0, 1.0, 0.5, 0.0)
With an actual temperature 3°C above the threshold temperature, only melting can occur. Actual melting is consistent with potential melting, except for the first zone, which is an internal lake, and the last two zones, for which potential melting exceeds the available frozen water content of the snow layer:
>>> states.sp = 2.0 >>> states.wc = 0.0, 1.0, 1.0, 1.0, 0.5, 0.0 >>> fluxes.tc = 5.0 >>> model.calc_refr_sp_wc_v1() >>> fluxes.refr refr(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sp sp(0.0, 2.0, 2.0, 2.0, 2.0, 2.0) >>> states.wc wc(0.0, 1.0, 1.0, 1.0, 0.5, 0.0)
With an actual temperature 3°C below the threshold temperature, refreezing can occur. Actual refreezing is consistent with potential refreezing, except for the first zone, which is an internal lake, and the last two zones, for which potential refreezing exceeds the available liquid water content of the snow layer:
>>> states.sp = 2.0 >>> states.wc = 0.0, 1.0, 1.0, 1.0, 0.5, 0.0 >>> fluxes.tc = -1.0 >>> model.calc_refr_sp_wc_v1() >>> fluxes.refr refr(0.0, 0.6, 0.6, 0.6, 0.5, 0.0) >>> states.sp sp(0.0, 2.6, 2.6, 2.6, 2.5, 2.0) >>> states.wc wc(0.0, 0.4, 0.4, 0.4, 0.0, 0.0)
-
class
hydpy.models.hland.hland_model.
Calc_In_WC_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the actual water release from the snow layer due to the exceedance of the snow layers capacity for (liquid) water.
- Requires the control parameters:
- Requires the flux sequence:
- Requires the state sequence:
- Updates the state sequence:
- Calculates the flux sequence:
- Basic equations:
\(\frac{dWC}{dt} = -In\)
\(-In = max(WC - WHC \cdot SP, 0)\)
Examples:
Initialize six zones of different types and frozen water contents of the snow layer and set the relative water holding capacity to 20% of the respective frozen water content:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(6) >>> zonetype(ILAKE, GLACIER, FIELD, FOREST, FIELD, FIELD) >>> whc(0.2) >>> states.sp = 0.0, 10.0, 10.0, 10.0, 5.0, 0.0
Also set the actual value of stand precipitation to 5 mm/d:
>>> fluxes.tf = 5.0
When there is no (liquid) water content in the snow layer, no water can be released:
>>> states.wc = 0.0 >>> model.calc_in_wc_v1() >>> fluxes.in_ in_(5.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.wc wc(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
When there is a (liquid) water content in the snow layer, the water release depends on the frozen water content. Note the special cases of the first zone being an internal lake, for which the snow routine does not apply, and of the last zone, which has no ice content and thus effectively not really a snow layer:
>>> states.wc = 5.0 >>> model.calc_in_wc_v1() >>> fluxes.in_ in_(5.0, 3.0, 3.0, 3.0, 4.0, 5.0) >>> states.wc wc(0.0, 2.0, 2.0, 2.0, 1.0, 0.0)
When the relative water holding capacity is assumed to be zero, all liquid water is released:
>>> whc(0.0) >>> states.wc = 5.0 >>> model.calc_in_wc_v1() >>> fluxes.in_ in_(5.0, 5.0, 5.0, 5.0, 5.0, 5.0) >>> states.wc wc(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
Note that for the single lake zone, stand precipitation is directly passed to in_ in all three examples.
-
class
hydpy.models.hland.hland_model.
Calc_GlMelt_In_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate melting from glaciers which are actually not covered by a snow layer and add it to the water release of the snow module.
- Requires the control parameters:
- Requires the derived parameter:
- Requires the flux sequence:
- Requires the state sequence:
- Updates the flux sequence:
- Calculates the flux sequence:
Basic equation:
\(GlMelt = \Bigl \lbrace { {max(GMelt \cdot (TC-TTM), 0) \ | \ SP = 0} \atop {0 \ | \ SP > 0} }\)
Examples:
Seven zones are prepared, but glacier melting occurs only in the fourth one, as the first three zones are no glaciers, the fifth zone is covered by a snow layer and the actual temperature of the last two zones is not above the threshold temperature:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> nmbzones(7) >>> zonetype(FIELD, FOREST, ILAKE, GLACIER, GLACIER, GLACIER, GLACIER) >>> gmelt(4.) >>> derived.ttm(2.) >>> states.sp = 0., 0., 0., 0., .1, 0., 0. >>> fluxes.tc = 3., 3., 3., 3., 3., 2., 1. >>> fluxes.in_ = 3. >>> model.calc_glmelt_in_v1() >>> fluxes.glmelt glmelt(0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) >>> fluxes.in_ in_(3.0, 3.0, 3.0, 5.0, 3.0, 3.0, 3.0)
Note that the assumed length of the simulation step is only a half day. Hence the effective value of the degree day factor is not 4 but 2:
>>> gmelt gmelt(4.0) >>> gmelt.values array([ 2., 2., 2., 2., 2., 2., 2.])
-
class
hydpy.models.hland.hland_model.
Calc_R_SM_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate effective precipitation and update soil moisture.
- Requires the control parameters:
- Requires the flux sequence:
- Updates the state sequence:
- Calculates the flux sequence:
- Basic equations:
\(\frac{dSM}{dt} = IN - R\)
\(R = IN \cdot \left(\frac{SM}{FC}\right)^{Beta}\)
Examples:
Initialize six zones of different types. The field capacity of all fields and forests is set to 200mm, the input of each zone is 10mm:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(6) >>> zonetype(ILAKE, GLACIER, FIELD, FOREST, FIELD, FIELD) >>> fc(200.0) >>> fluxes.in_ = 10.0
With a common nonlinearity parameter value of 2, a relative soil moisture of 50% (zones three and four) results in a discharge coefficient of 25%. For a soil completely dried (zone five) or completely saturated (one six) the discharge coefficient does not depend on the nonlinearity parameter and is 0% and 100% respectively. Glaciers and internal lakes also always route 100% of their input as effective precipitation:
>>> beta(2.0) >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 >>> model.calc_r_sm_v1() >>> fluxes.r r(10.0, 10.0, 2.5, 2.5, 0.0, 10.0) >>> states.sm sm(0.0, 0.0, 107.5, 107.5, 10.0, 200.0)
Through decreasing the nonlinearity parameter, the discharge coefficient increases. A parameter value of zero leads to a discharge coefficient of 100% for any soil moisture:
>>> beta(0.0) >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 >>> model.calc_r_sm_v1() >>> fluxes.r r(10.0, 10.0, 10.0, 10.0, 10.0, 10.0) >>> states.sm sm(0.0, 0.0, 100.0, 100.0, 0.0, 200.0)
With zero field capacity, the discharge coefficient also always equates to 100%:
>>> fc(0.0) >>> beta(2.0) >>> states.sm = 0.0 >>> model.calc_r_sm_v1() >>> fluxes.r r(10.0, 10.0, 10.0, 10.0, 10.0, 10.0) >>> states.sm sm(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-
class
hydpy.models.hland.hland_model.
Calc_CF_SM_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate capillary flow and update soil moisture.
- Requires the control parameters:
- Requires the flux sequence:
- Requires the state sequence:
- Updates the state sequence:
- Calculates the flux sequence:
- Basic equations:
\(\frac{dSM}{dt} = CF\)
\(CF = CFLUX \cdot (1 - \frac{SM}{FC})\)
Examples:
Initialize six zones of different types. The field capacity of als fields and forests is set to 200mm, the maximum capillary flow rate is 4mm/d:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> nmbzones(6) >>> zonetype(ILAKE, GLACIER, FIELD, FOREST, FIELD, FIELD) >>> fc(200.0) >>> cflux(4.0)
Note that the assumed length of the simulation step is only a half day. Hence the maximum capillary flow per simulation step is 2 instead of 4:
>>> cflux cflux(4.0) >>> cflux.values array([ 2., 2., 2., 2., 2., 2.])
For fields and forests, the actual capillary return flow depends on the relative soil moisture deficite, if either the upper zone layer provides enough water…
>>> fluxes.r = 0.0 >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 >>> states.uz = 20.0 >>> model.calc_cf_sm_v1() >>> fluxes.cf cf(0.0, 0.0, 1.0, 1.0, 2.0, 0.0) >>> states.sm sm(0.0, 0.0, 101.0, 101.0, 2.0, 200.0)
…our enough effective precipitation is generated, which can be rerouted directly:
>>> cflux(4.0) >>> fluxes.r = 10.0 >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 >>> states.uz = 0.0 >>> model.calc_cf_sm_v1() >>> fluxes.cf cf(0.0, 0.0, 1.0, 1.0, 2.0, 0.0) >>> states.sm sm(0.0, 0.0, 101.0, 101.0, 2.0, 200.0)
If the upper zone layer is empty and no effective precipitation is generated, capillary flow is zero:
>>> cflux(4.0) >>> fluxes.r = 0.0 >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 >>> states.uz = 0.0 >>> model.calc_cf_sm_v1() >>> fluxes.cf cf(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sm sm(0.0, 0.0, 100.0, 100.0, 0.0, 200.0)
Here an example, where both the upper zone layer and effective precipitation provide water for the capillary flow, but less then the maximum flow rate times the relative soil moisture:
>>> cflux(4.0) >>> fluxes.r = 0.1 >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 >>> states.uz = 0.2 >>> model.calc_cf_sm_v1() >>> fluxes.cf cf(0.0, 0.0, 0.3, 0.3, 0.3, 0.0) >>> states.sm sm(0.0, 0.0, 100.3, 100.3, 0.3, 200.0)
Even unrealistic high maximum capillary flow rates do not result in overfilled soils:
>>> cflux(1000.0) >>> fluxes.r = 200.0 >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 >>> states.uz = 200.0 >>> model.calc_cf_sm_v1() >>> fluxes.cf cf(0.0, 0.0, 100.0, 100.0, 200.0, 0.0) >>> states.sm sm(0.0, 0.0, 200.0, 200.0, 200.0, 200.0)
For (unrealistic) soils with zero field capacity, capillary flow is always zero:
>>> fc(0.0) >>> states.sm = 0.0 >>> model.calc_cf_sm_v1() >>> fluxes.cf cf(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sm sm(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-
class
hydpy.models.hland.hland_model.
Calc_EA_SM_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate soil evaporation and update soil moisture.
- Requires the control parameters:
- Requires the flux sequences:
- Requires the state sequence:
- Updates the state sequence:
- Calculates the flux sequence:
- Basic equations:
\(\frac{dSM}{dt} = - EA\)
\(EA_{temp} = \biggl \lbrace { {EPC \cdot min\left(\frac{SM}{LP \cdot FC}, 1\right) \ | \ SP = 0} \atop {0 \ | \ SP > 0} }\)
\(EA = EA_{temp} - max(ERED \cdot (EA_{temp} + EI - EPC), 0)\)
Examples:
- Initialize seven zones of different types. The field capacity
of all fields and forests is set to 200mm, potential evaporation and interception evaporation are 2mm and 1mm respectively:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(7) >>> zonetype(ILAKE, GLACIER, FIELD, FOREST, FIELD, FIELD, FIELD) >>> fc(200.0) >>> lp(0.0, 0.0, 0.5, 0.5, 0.0, 0.8, 1.0) >>> ered(0.0) >>> fluxes.epc = 2.0 >>> fluxes.ei = 1.0 >>> states.sp = 0.0
Only fields and forests include soils; for glaciers and zones (the first two zones) no soil evaporation is performed. For fields and forests, the underlying calculations are the same. In the following example, the relative soil moisture is 50% in all field and forest zones. Hence, differences in soil evaporation are related to the different soil evaporation parameter values only:
>>> states.sm = 100.0 >>> model.calc_ea_sm_v1() >>> fluxes.ea ea(0.0, 0.0, 2.0, 2.0, 2.0, 1.25, 1.0) >>> states.sm sm(0.0, 0.0, 98.0, 98.0, 98.0, 98.75, 99.0)
In the last example, evaporation values of 2mm have been calculated for some zones despite the fact, that these 2mm added to the actual interception evaporation of 1mm exceed potential evaporation. This behaviour can be reduced…
>>> states.sm = 100.0 >>> ered(0.5) >>> model.calc_ea_sm_v1() >>> fluxes.ea ea(0.0, 0.0, 1.5, 1.5, 1.5, 1.125, 1.0) >>> states.sm sm(0.0, 0.0, 98.5, 98.5, 98.5, 98.875, 99.0)
…or be completely excluded:
>>> states.sm = 100.0 >>> ered(1.0) >>> model.calc_ea_sm_v1() >>> fluxes.ea ea(0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0) >>> states.sm sm(0.0, 0.0, 99.0, 99.0, 99.0, 99.0, 99.0)
Any occurrence of a snow layer suppresses soil evaporation completely:
>>> states.sp = 0.01 >>> states.sm = 100.0 >>> model.calc_ea_sm_v1() >>> fluxes.ea ea(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sm sm(0.0, 0.0, 100.0, 100.0, 100.0, 100.0, 100.0)
For (unrealistic) soils with zero field capacity, soil evaporation is always zero:
>>> fc(0.0) >>> states.sm = 0.0 >>> model.calc_ea_sm_v1() >>> fluxes.ea ea(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) >>> states.sm sm(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
-
class
hydpy.models.hland.hland_model.
Calc_InUZ_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Accumulate the total inflow into the upper zone layer.
- Requires the control parameters:
- Requires the derived parameter:
- Requires the flux sequences:
- Calculates the flux sequence:
- Basic equation:
\(InUZ = R - CF\)
Examples:
Initialize three zones of different relative land sizes (area related to the total size of the subbasin except lake areas):
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(3) >>> zonetype(FIELD, ILAKE, GLACIER) >>> derived.rellandzonearea = 2.0/3.0, 0.0, 1.0/3.0 >>> fluxes.r = 6.0, 0.0, 2.0 >>> fluxes.cf = 2.0, 0.0, 1.0 >>> model.calc_inuz_v1() >>> fluxes.inuz inuz(3.0)
Internal lakes do not contribute to the upper zone layer. Hence for a subbasin consisting only of interal lakes a zero input value would be calculated:
>>> zonetype(ILAKE, ILAKE, ILAKE) >>> model.calc_inuz_v1() >>> fluxes.inuz inuz(0.0)
-
class
hydpy.models.hland.hland_model.
Calc_ContriArea_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Determine the relative size of the contributing area of the whole subbasin.
- Requires the control parameters:
- Requires the derived parameters:
- Requires the state sequence:
- Calculates the flux sequence:
- Basic equation:
\(ContriArea = \left( \frac{SM}{FC} \right)^{Beta}\)
Examples:
Four zones are initialized, but only the first two zones of type field and forest are taken into account in the calculation of the relative contributing area of the catchment (even, if also glaciers contribute to the inflow of the upper zone layer):
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) >>> beta(2.0) >>> fc(200.0) >>> resparea(True) >>> derived.relsoilarea(0.5) >>> derived.relsoilzonearea(1.0/3.0, 2.0/3.0, 0.0, 0.0)
With a relative soil moisture of 100 % in the whole subbasin, the contributing area is also estimated as 100 %,…
>>> states.sm = 200.0 >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(1.0)
…and relative soil moistures of 0% result in an contributing area of 0 %:
>>> states.sm = 0.0 >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(0.0)
With the given value 2 of the nonlinearity parameter Beta, soil moisture of 50 % results in a contributing area estimate of 25%:
>>> states.sm = 100.0 >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(0.25)
Setting the response area option to False,…
>>> resparea(False) >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(1.0)
… setting the soil area (total area of all field and forest zones in the subbasin) to zero…,
>>> resparea(True) >>> derived.relsoilarea(0.0) >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(1.0)
…or setting all field capacities to zero…
>>> derived.relsoilarea(0.5) >>> fc(0.0) >>> states.sm = 0.0 >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(1.0)
…leads to contributing area values of 100 %.
-
class
hydpy.models.hland.hland_model.
Calc_Q0_Perc_UZ_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Perform the upper zone layer routine which determines percolation to the lower zone layer and the fast response of the hland model.
- Requires the control parameters:
- Requires the derived parameter:
- Requires the flux sequences:
- Updates the state sequence:
- Calculates the flux sequences:
Note that the system behaviour of this method depends strongly on the specifications of the options
RespArea
andRecStep
.- Basic equations:
\(\frac{dUZ}{dt} = InUZ - Perc - Q0\)
\(Perc = PercMax \cdot ContriArea\)
\(Q0 = K * \cdot \left( \frac{UZ}{ContriArea} \right)^{1+Alpha}\)
Examples:
The upper zone layer routine is an exception compared to the other routines of the HydPy-H-Land model, regarding its consideration of numerical accuracy. To increase the accuracy of the numerical integration of the underlying ordinary differential equation, each simulation step can be divided into substeps, which are all solved with first order accuracy. In the first example, this option is omitted through setting the
RecStep
parameter to one:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> recstep(2) >>> derived.dt = 1/recstep >>> percmax(2.0) >>> alpha(1.0) >>> k(2.0) >>> fluxes.contriarea = 1.0 >>> fluxes.inuz = 0.0 >>> states.uz = 1.0 >>> model.calc_q0_perc_uz_v1() >>> fluxes.perc perc(1.0) >>> fluxes.q0 q0(0.0) >>> states.uz uz(0.0)
Due to the sequential calculation of the upper zone routine, the upper zone storage is drained completely through percolation and no water is left for fast discharge response. By dividing the simulation step in 100 substeps, the results are quite different:
>>> recstep(200) >>> derived.dt = 1.0/recstep >>> states.uz = 1.0 >>> model.calc_q0_perc_uz_v1() >>> fluxes.perc perc(0.786934) >>> fluxes.q0 q0(0.213066) >>> states.uz uz(0.0)
Note that the assumed length of the simulation step is only a half day. Hence the effective values of the maximum percolation rate and the storage coefficient is not 2 but 1:
>>> percmax percmax(2.0) >>> k k(2.0) >>> percmax.value 1.0 >>> k.value 1.0
By decreasing the contributing area one decreases percolation but increases fast discharge response:
>>> fluxes.contriarea = 0.5 >>> states.uz = 1.0 >>> model.calc_q0_perc_uz_v1() >>> fluxes.perc perc(0.434108) >>> fluxes.q0 q0(0.565892) >>> states.uz uz(0.0)
Without any contributing area, the complete amount of water stored in the upper zone layer is released as direct discharge immediately:
>>> fluxes.contriarea = 0.0 >>> states.uz = 1.0 >>> model.calc_q0_perc_uz_v1() >>> fluxes.perc perc(0.0) >>> fluxes.q0 q0(1.0) >>> states.uz uz(0.0)
Resetting
RecStep
leads to more transparent results. Note that, due to the large value of the storage coefficient and the low accuracy of the numerical approximation, direct discharge drains the rest of the upper zone storage:>>> recstep(2) >>> fluxes.contriarea = 0.5 >>> derived.dt = 1.0/recstep >>> states.uz = 1.0 >>> model.calc_q0_perc_uz_v1() >>> fluxes.perc perc(0.5) >>> fluxes.q0 q0(0.5) >>> states.uz uz(0.0)
Applying a more reasonable storage coefficient results in:
>>> k(0.5) >>> states.uz = 1.0 >>> model.calc_q0_perc_uz_v1() >>> fluxes.perc perc(0.5) >>> fluxes.q0 q0(0.25) >>> states.uz uz(0.25)
Adding an input of 0.3 mm results the same percolation value (which, in the given example, is determined by the maximum percolation rate only), but in an increases value of the direct response (which always depends on the actual upper zone storage directly):
>>> fluxes.inuz = 0.3 >>> states.uz = 1.0 >>> model.calc_q0_perc_uz_v1() >>> fluxes.perc perc(0.5) >>> fluxes.q0 q0(0.64) >>> states.uz uz(0.16)
Due to the same reasons, another increase in numerical accuracy has no impact on percolation but decreases the direct response in the given example:
>>> recstep(200) >>> derived.dt = 1.0/recstep >>> states.uz = 1.0 >>> model.calc_q0_perc_uz_v1() >>> fluxes.perc perc(0.5) >>> fluxes.q0 q0(0.421708) >>> states.uz uz(0.378292)
-
class
hydpy.models.hland.hland_model.
Calc_LZ_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Update the lower zone layer in accordance with percolation from upper groundwater to lower groundwater and/or in accordance with lake precipitation.
- Requires the control parameters:
- Requires the derived parameters:
- Requires the flux sequences:
- Updates the state sequence:
- Basic equation:
\(\frac{dLZ}{dt} = Perc + Pc\)
Examples:
At first, a subbasin with two field zones is assumed (the zones could be of type forest or glacier as well). In such zones, precipitation does not fall directly into the lower zone layer, hence the given precipitation of 2mm has no impact. Only the actual percolation from the upper zone layer (underneath both field zones) is added to the lower zone storage:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(2) >>> zonetype(FIELD, FIELD) >>> derived.rellandarea = 1.0 >>> derived.relzonearea = 2.0/3.0, 1.0/3.0 >>> fluxes.perc = 2.0 >>> fluxes.pc = 5.0 >>> states.lz = 10.0 >>> model.calc_lz_v1() >>> states.lz lz(12.0)
If the second zone is an internal lake, its precipitation falls on the lower zone layer directly. Note that only 5/3mm precipitation are added, due to the relative size of the internal lake within the subbasin. Percolation from the upper zone layer increases the lower zone storage only by two thirds of its original value, due to the larger spatial extend of the lower zone layer:
>>> zonetype(FIELD, ILAKE) >>> derived.rellandarea = 2.0/3.0 >>> derived.relzonearea = 2.0/3.0, 1.0/3.0 >>> states.lz = 10.0 >>> model.calc_lz_v1() >>> states.lz lz(13.0)
-
class
hydpy.models.hland.hland_model.
Calc_EL_LZ_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate lake evaporation.
- Requires the control parameters:
- Requires the derived parameter:
- Requires the flux sequences:
- Updates the state sequence:
- Calculates the flux sequence:
- Basic equations:
\(\frac{dLZ}{dt} = -EL\)
\(EL = \Bigl \lbrace { {EPC \ | \ TC > TTIce} \atop {0 \ | \ TC \leq TTIce} }\)
Examples:
Six zones of the same size are initialized. The first three zones are no internal lakes, they can not exhibit any lake evaporation. Of the last three zones, which are internal lakes, only the last one evaporates water. For zones five and six, evaporation is suppressed due to an assumed ice layer, whenever the associated theshold temperature is not exceeded:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(6) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE, ILAKE, ILAKE) >>> ttice(-1.0) >>> derived.relzonearea = 1.0/6.0 >>> fluxes.epc = 0.6 >>> fluxes.tc = 0.0, 0.0, 0.0, 0.0, -1.0, -2.0 >>> states.lz = 10.0 >>> model.calc_el_lz_v1() >>> fluxes.el el(0.0, 0.0, 0.0, 0.6, 0.0, 0.0) >>> states.lz lz(9.9)
Note that internal lakes always contain water. Hence, the HydPy-H-Land model allows for negative values of the lower zone storage:
>>> states.lz = 0.05 >>> model.calc_el_lz_v1() >>> fluxes.el el(0.0, 0.0, 0.0, 0.6, 0.0, 0.0) >>> states.lz lz(-0.05)
-
class
hydpy.models.hland.hland_model.
Calc_Q1_LZ_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the slow response of the lower zone layer.
- Requires the control parameters:
- Updates the state sequence:
- Calculates the flux sequence:
- Basic equations:
\(\frac{dLZ}{dt} = -Q1\)
\(Q1 = \Bigl \lbrace { {K4 \cdot LZ^{1+Gamma} \ | \ LZ > 0} \atop {0 \ | \ LZ\leq 0} }\)
Examples:
As long as the lower zone storage is negative…
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> k4(0.2) >>> gamma(0.0) >>> states.lz = -2.0 >>> model.calc_q1_lz_v1() >>> fluxes.q1 q1(0.0) >>> states.lz lz(-2.0)
…or zero, no slow discharge response occurs:
>>> states.lz = 0.0 >>> model.calc_q1_lz_v1() >>> fluxes.q1 q1(0.0) >>> states.lz lz(0.0)
For storage values above zero the linear…
>>> states.lz = 2.0 >>> model.calc_q1_lz_v1() >>> fluxes.q1 q1(0.2) >>> states.lz lz(1.8)
…or nonlinear storage routing equation applies:
>>> gamma(1.) >>> states.lz = 2.0 >>> model.calc_q1_lz_v1() >>> fluxes.q1 q1(0.4) >>> states.lz lz(1.6)
Note that the assumed length of the simulation step is only a half day. Hence the effective value of the storage coefficient is not 0.2 but 0.1:
>>> k4 k4(0.2) >>> k4.value 0.1
-
class
hydpy.models.hland.hland_model.
Calc_InUH_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the unit hydrograph input.
- Requires the derived parameter:
- Requires the flux sequences:
- Calculates the flux sequence:
- Basic equation:
\(InUH = Q0 + Q1\)
Example:
The unit hydrographs receives base flow from the whole subbasin and direct flow from zones of type field, forest and glacier only. In the following example, these occupy only one half of the subbasin, which is why the partial input of q0 is halved:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> derived.rellandarea = 0.5 >>> fluxes.q0 = 4.0 >>> fluxes.q1 = 1.0 >>> model.calc_inuh_v1() >>> fluxes.inuh inuh(3.0)
-
class
hydpy.models.hland.hland_model.
Calc_OutUH_QUH_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the unit hydrograph output (convolution).
- Requires the derived parameter:
- Requires the flux sequence:
- Updates the log sequence:
- Calculates the flux sequence:
Examples:
Prepare a unit hydrograph with only three ordinates — representing a fast catchment response compared to the selected step size:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> derived.uh.shape = 3 >>> derived.uh = 0.3, 0.5, 0.2 >>> logs.quh.shape = 3 >>> logs.quh = 1.0, 3.0, 0.0
Without new input, the actual output is simply the first value stored in the logging sequence and the values of the logging sequence are shifted to the left:
>>> fluxes.inuh = 0.0 >>> model.calc_outuh_quh_v1() >>> fluxes.outuh outuh(1.0) >>> logs.quh quh(3.0, 0.0, 0.0)
With an new input of 4mm, the actual output consists of the first value stored in the logging sequence and the input value multiplied with the first unit hydrograph ordinate. The updated logging sequence values result from the multiplication of the input values and the remaining ordinates:
>>> fluxes.inuh = 4.0 >>> model.calc_outuh_quh_v1() >>> fluxes.outuh outuh(4.2) >>> logs.quh quh(2.0, 0.8, 0.0)
The next example demonstates the updating of non empty logging sequence:
>>> fluxes.inuh = 4.0 >>> model.calc_outuh_quh_v1() >>> fluxes.outuh outuh(3.2) >>> logs.quh quh(2.8, 0.8, 0.0)
A unit hydrograph with only one ordinate results in the direct routing of the input:
>>> derived.uh.shape = 1 >>> derived.uh = 1.0 >>> fluxes.inuh = 0.0 >>> logs.quh.shape = 1 >>> logs.quh = 0.0 >>> model.calc_outuh_quh_v1() >>> fluxes.outuh outuh(0.0) >>> logs.quh quh(0.0) >>> fluxes.inuh = 4.0 >>> model.calc_outuh_quh() >>> fluxes.outuh outuh(4.0) >>> logs.quh quh(0.0)
-
class
hydpy.models.hland.hland_model.
Calc_QT_V1
[source]¶ Bases:
hydpy.core.modeltools.Method
Calculate the total discharge after possible abstractions.
- Requires the control parameter:
- Requires the derived parameter:
- Requires the flux sequence:
- Calculates the flux sequence:
- Basic equation:
\(QT = max(QFactor \cdot OutUH - Abstr, 0)\)
Examples:
Trying to abstract less then available, as much as available and less then available results in:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> abstr(1.0) >>> derived.qfactor(0.5) >>> fluxes.outuh = 4.0 >>> model.calc_qt_v1() >>> fluxes.qt qt(1.0) >>> fluxes.outuh = 2.0 >>> model.calc_qt_v1() >>> fluxes.qt qt(0.0) >>> fluxes.outuh = 1.0 >>> model.calc_qt_v1() >>> fluxes.qt qt(0.0)
Note that “negative abstractions” are allowed:
>>> abstr(-1.0) >>> fluxes.outuh = 2.0 >>> model.calc_qt_v1() >>> fluxes.qt qt(2.0)
-
class
hydpy.models.hland.hland_model.
Pass_Q_v1
[source]¶ Bases:
hydpy.core.modeltools.Method
Update the outlet link sequence.
Parameter Features¶
Parameter tools¶
-
class
hydpy.models.hland.hland_parameters.
ParameterComplete
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base class for 1-dimensional parameters relevant for all types of zones.
ParameterComplete
applies the features of classZipParameter
on the land use types field, forest, glacier, and ilake and consideres them all as relevant (e.g. for calculating weighted averages).The following examples are based on parameter
PCorr
, which is directly derived fromParameterComplete
. After preparing the parameterNmbZones
, parameterPCorr
allows to set its values using the relevant land use types as keywords:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE, FIELD) >>> pcorr(field=2.0, forest=1.0, glacier=4.0, ilake=3.0) >>> pcorr pcorr(field=2.0, forest=1.0, glacier=4.0, ilake=3.0) >>> pcorr.values array([ 2., 1., 4., 3., 2.])
Parameter
ZoneArea
is used for calculating the areal means (seeproperty
refweights
):>>> zonearea(0.0, 1.0, 2.0, 3.0, 4.0) >>> from hydpy import round_ >>> round_(pcorr.average_values()) 2.6
Alternatively, pass other masks defined in module
hland_masks
, to take only certain types of zones into account:>>> round_(pcorr.average_values(model.masks.field)) 2.0 >>> round_(pcorr.average_values("soil")) 1.8 >>> round_(pcorr.average_values(model.masks.field, "forest")) 1.8
All other masks (e.g.
Soil
used byParameterSoil
subclasses asIcMax
) are subsets of maskComplete
:>>> icmax.mask in pcorr.mask True >>> pcorr.mask in icmax.mask False
-
mask
¶
-
property
refweights
¶ Reference to the associated instance of
RelZoneArea
for calculating areal mean values.
-
-
class
hydpy.models.hland.hland_parameters.
ParameterSoil
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base class for 1-dimensional parameters relevant for
FIELD
andFOREST
zones.ParameterSoil
works similar toParameterComplete
. Some examples based on parameterIcMax
:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE, FIELD) >>> icmax(field=2.0, forest=1.0, glacier=4.0, ilake=3.0) >>> icmax icmax(field=2.0, forest=1.0) >>> icmax(field=2.0, default=9.0) >>> icmax icmax(field=2.0, forest=9.0) >>> zonearea(0.0, 1.0, nan, nan, 3.0) >>> from hydpy import round_ >>> round_(icmax.average_values()) 3.75
-
mask
¶
-
TYPE
: Type¶
-
fastaccess
: FastAccessType¶
-
subvars
: SubVariablesType¶
-
-
class
hydpy.models.hland.hland_parameters.
ParameterLand
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base class for 1-dimensional parameters relevant for
FIELD
,FOREST
, andGLACIER
zones.ParameterLand
works similar toParameterComplete
. Some examples based on parameterWHC
:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE, FIELD) >>> whc(field=2.0, forest=1.0, glacier=4.0, ilake=3.0) >>> whc whc(field=2.0, forest=1.0, glacier=4.0) >>> whc(field=2.0, default=9.0) >>> whc whc(field=2.0, forest=9.0, glacier=9.0) >>> zonearea(1.0, 1.0, 1.0, nan, 1.0) >>> from hydpy import round_ >>> round_(whc.average_values()) 5.5
-
mask
¶
-
TYPE
: Type¶
-
fastaccess
: FastAccessType¶
-
subvars
: SubVariablesType¶
-
-
class
hydpy.models.hland.hland_parameters.
ParameterLake
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base class for 1-dimensional parameters relevant for
ILAKE
zones.ParameterLake
works similar toParameterComplete
. Some examples based on parameterTTIce
:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> zonetype(ILAKE, FOREST, GLACIER, ILAKE, FIELD) >>> ttice(field=2.0, forest=1.0, glacier=4.0, ilake=3.0) >>> ttice ttice(3.0) >>> ttice(field=2.0, forest=9.0, default=9.0) >>> ttice ttice(9.0) >>> zonearea(1.0, nan, nan, 1.0, nan) >>> from hydpy import round_ >>> round_(ttice.average_values()) 9.0
-
mask
¶
-
TYPE
: Type¶
-
fastaccess
: FastAccessType¶
-
subvars
: SubVariablesType¶
-
-
class
hydpy.models.hland.hland_parameters.
ParameterGlacier
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base class for 1-dimensional parameters relevant for
GLACIER
zones.ParameterLake
works similar toParameterComplete
. Some examples based on parameterGMelt
:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("1d") >>> nmbzones(5) >>> zonetype(GLACIER, FOREST, ILAKE, GLACIER, FIELD) >>> gmelt(field=2.0, forest=1.0, glacier=4.0, ilake=3.0) >>> gmelt gmelt(4.0) >>> gmelt(field=2.0, forest=9.0, default=8.0) >>> gmelt gmelt(8.0) >>> zonearea(1.0, nan, nan, 1.0, nan) >>> from hydpy import round_ >>> round_(gmelt.average_values()) 8.0
-
mask
¶
-
TYPE
: Type¶
-
fastaccess
: FastAccessType¶
-
subvars
: SubVariablesType¶
-
-
class
hydpy.models.hland.hland_parameters.
ParameterNoGlacier
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base class for 1-dimensional parameters relevant for
FIELD
,FOREST
, andILAKE
zones.ParameterSoil
works similar toParameterComplete
. Some examples based on parameterECorr
:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE, FIELD) >>> ecorr(field=2.0, forest=1.0, glacier=4.0, ilake=3.0) >>> ecorr ecorr(field=2.0, forest=1.0, ilake=3.0) >>> ecorr(field=2.0, default=9.0) >>> ecorr ecorr(field=2.0, forest=9.0, ilake=9.0) >>> zonearea(1.0, 1.0, nan, 1.0, 1.0) >>> from hydpy import round_ >>> round_(ecorr.average_values()) 5.5
-
mask
¶
-
TYPE
: Type¶
-
fastaccess
: FastAccessType¶
-
subvars
: SubVariablesType¶
-
Constants¶
The HydPy-H-Land model (hland
) allows for the subdivision of subbasins
into zones (hydrological response units). Some processes, e.g. interception,
are calculated separately for each zone. This is why some parameters (e.g.
the interception capacity IcMax
) and some sequences (e.g. the actual
interception storage Ic
) are 1-dimensional. Each entry represents the
value of a different zone.
In contrasts to the original HBV96 model, the HydPy-H-Land model allows for
arbitrary definitions of zones. Nevertheless, the original distinction
in accordance with four different zone types is still supported. The
parameter ZoneType
defines e.g. which entry of IcMax
is related to
which zone type via integer values. Note that for zones of type FIELD
and FOREST
the same equations are applied. (Usually, larger IcMax
values and smaller CFMax
are assigned to FOREST
zones due to their
higher leaf area index and the associated decrease in solar radiation.)
On the contrary, zones of type GLACIER
and ILAKE
are partly connected
to different process equations.
For comprehensibility, this module introduces the relevant integer constants. Through performing a wildcard import
>>> from hydpy.models.hland import *
these are available in your local namespace:
>>> FIELD, FOREST, GLACIER, ILAKE
(1, 2, 3, 4)
-
hydpy.models.hland.hland_constants.
FIELD
= 1¶ Constant for the zone type field.
-
hydpy.models.hland.hland_constants.
FOREST
= 2¶ Constant for the zone type forest.
-
hydpy.models.hland.hland_constants.
GLACIER
= 3¶ Constant for the zone type glacier.
-
hydpy.models.hland.hland_constants.
ILAKE
= 4¶ Constant for the zone type internal lake.
Control parameters¶
-
class
hydpy.models.hland.
ControlParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Control parameters of model hland.
- The following classes are selected:
Area()
Subbasin area [km²].NmbZones()
Number of zones (hydrological response units) in a subbasin [-].ZoneType()
Type of each zone.ZoneArea()
Zone area [km²].ZoneZ()
Zone elevation [100m].ZRelP()
Subbasin-wide reference elevation level for precipitation [100m].ZRelT()
Subbasin-wide reference elevation level for temperature [100m].ZRelE()
Subbasin-wide reference elevation level for evaporation [100m].PCorr()
General precipitation correction factor [-].PCAlt()
Elevation correction factor for precipitation [-1/100m].RfCF()
Rainfall correction factor [-].SfCF()
Snowfall correction factor [-].TCAlt()
Elevation correction factor for temperature [-1°C/100m].ECorr()
General evaporation correction factor [-].ECAlt()
Elevation correction factor for evaporation [-1/100m].EPF()
Decrease in potential evaporation due to precipitation [T/mm].ETF()
Temperature factor for evaporation [1/°C].ERed()
Factor for restricting actual to potential evaporation [-].TTIce()
Temperature threshold for lake evaporation [°C].IcMax()
Maximum interception storage [mm].TT()
Temperature threshold for snow/rain [°C].TTInt()
Temperature interval with a mixture of snow and rain [°C].CFMax()
Degree day factor for snow (on glaciers or not) [mm/°C/T].GMelt()
Degree day factor for glacial ice [mm/°C/T].CFR()
Refreezing factor for water stored within the snow layer [-].WHC()
Relative water holding capacity of the snow layer [-].FC()
Maximum soil moisture content (field capacity) [mm].LP()
Relative limit for potential evaporation [-].Beta()
Nonlinearity parameter of the soil routine [-].PercMax()
Maximum percolation rate [mm/T].CFlux()
Capacity (maximum) of the capillary return flux [mm/T].RespArea()
Flag to enable the contributing area approach [-].RecStep()
Number of internal computation steps per simulation time step [-].Alpha()
Nonlinearity parameter of the upper zone layer [-].K()
Recession coefficient of the upper zone layer [1/T/mm^alpha].K4()
Recession coefficient of the lower zone layer [1/T].Gamma()
Nonlinearity parameter of the lower zone layer [-].MaxBaz()
Base length of the triangle unit hydrograph [T].Abstr()
Abstraction of water from computed outflow [m³/s].
-
class
hydpy.models.hland.hland_control.
Area
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Subbasin area [km²].
-
TYPE
¶
-
-
class
hydpy.models.hland.hland_control.
NmbZones
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Number of zones (hydrological response units) in a subbasin [-].
- Required by the methods:
Calc_CF_SM_V1
Calc_ContriArea_V1
Calc_EA_SM_V1
Calc_EI_Ic_V1
Calc_EL_LZ_V1
Calc_EPC_V1
Calc_EP_V1
Calc_FracRain_V1
Calc_GlMelt_In_V1
Calc_InUZ_V1
Calc_In_WC_V1
Calc_LZ_V1
Calc_Melt_SP_WC_V1
Calc_PC_V1
Calc_RFC_SFC_V1
Calc_R_SM_V1
Calc_Refr_SP_WC_V1
Calc_SP_WC_V1
Calc_TC_V1
Calc_TF_Ic_V1
Calc_TMean_V1
Note that
NmbZones
determines the length of most 1-dimensional HydPy-H-Land parameters and sequences. This required that the value of the respectiveNmbZones
instance is set before any of the values of these 1-dimensional parameters or sequences are set. Changing the value of theNmbZones
instance necessitates setting their values again.Examples:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> icmax.shape (5,) >>> states.ic.shape (5,)
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
ZoneType
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Type of each zone.
- Required by the methods:
Calc_CF_SM_V1
Calc_ContriArea_V1
Calc_EA_SM_V1
Calc_EI_Ic_V1
Calc_EL_LZ_V1
Calc_GlMelt_In_V1
Calc_InUZ_V1
Calc_In_WC_V1
Calc_LZ_V1
Calc_Melt_SP_WC_V1
Calc_R_SM_V1
Calc_Refr_SP_WC_V1
Calc_SP_WC_V1
Calc_TF_Ic_V1
For increasing legibility, the HydPy-H-Land constants are used for string representions of
ZoneType
objects:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(6) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE, ILAKE, FIELD) >>> zonetype.values array([1, 2, 3, 4, 4, 1]) >>> zonetype zonetype(FIELD, FOREST, GLACIER, ILAKE, ILAKE, FIELD)
-
TYPE
¶
-
CONSTANTS
: hydpy.core.parametertools.Constants = {'FIELD': 1, 'FOREST': 2, 'GLACIER': 3, 'ILAKE': 4}¶
-
class
hydpy.models.hland.hland_control.
ZoneArea
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Zone area [km²].
-
TYPE
¶
-
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
ZoneZ
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Zone elevation [100m].
- Required by the methods:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
ZRelP
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Subbasin-wide reference elevation level for precipitation [100m].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
ZRelT
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Subbasin-wide reference elevation level for temperature [100m].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
ZRelE
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Subbasin-wide reference elevation level for evaporation [100m].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
PCorr
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]General precipitation correction factor [-].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
PCAlt
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Elevation correction factor for precipitation [-1/100m].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
RfCF
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Rainfall correction factor [-].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
SfCF
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Snowfall correction factor [-].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
TCAlt
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Elevation correction factor for temperature [-1°C/100m].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
ECorr
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]General evaporation correction factor [-].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
ECAlt
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Elevation correction factor for evaporation [-1/100m].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
EPF
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Decrease in potential evaporation due to precipitation [T/mm].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
ETF
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Temperature factor for evaporation [1/°C].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
ERed
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Factor for restricting actual to potential evaporation [-].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
TTIce
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Temperature threshold for lake evaporation [°C].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
IcMax
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Maximum interception storage [mm].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
TT
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Temperature threshold for snow/rain [°C].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
TTInt
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Temperature interval with a mixture of snow and rain [°C].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
DTTM
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Difference between
TTM
andTT
[°C].-
TYPE
¶
-
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
CFMax
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Degree day factor for snow (on glaciers or not) [mm/°C/T].
- Required by the methods:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
GMelt
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Degree day factor for glacial ice [mm/°C/T].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
CFR
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Refreezing factor for water stored within the snow layer [-].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
WHC
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Relative water holding capacity of the snow layer [-].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
FC
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Maximum soil moisture content (field capacity) [mm].
- Required by the methods:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
LP
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Relative limit for potential evaporation [-].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
Beta
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Nonlinearity parameter of the soil routine [-].
- Required by the methods:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
PercMax
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Maximum percolation rate [mm/T].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
CFlux
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Capacity (maximum) of the capillary return flux [mm/T].
- Required by the method:
-
TYPE
¶
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_control.
RespArea
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Flag to enable the contributing area approach [-].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
RecStep
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Number of internal computation steps per simulation time step [-].
- Required by the method:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> recstep(4.2) >>> recstep recstep(4.0)
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
Alpha
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Nonlinearity parameter of the upper zone layer [-].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
K
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Recession coefficient of the upper zone layer [1/T/mm^alpha].
- Required by the method:
In addition to the
Parameter
call method, it is possible to set the value of parameterK
in accordance to the keyword arguments khq, hq and (optionally) alpha. If alpha is not given, the value of the respectiveAlpha
instance is taken. This requires theAlpha
instance to be initialized beforehand.- Basic Equation:
\(K = \frac{HQ}{(HQ/KHQ)^{1+Alpha}}\)
Examples:
When directly setting the value of parameter k, one only needs to be aware of its time dependence:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> k(2.0) >>> k k(2.0) >>> k.value 1.0
Alternatively, one can specify the following three keyword arguments directly,…
>>> k(hq=10.0, khq=2.0, alpha=1.0) >>> k k(0.4) >>> k.value 0.2
…or define the value of parameter alpha beforehand:
>>> alpha(2.0) >>> k(hq=10.0, khq=2.0) >>> k k(0.08) >>> k.value 0.04
The following exceptions occur for wrong combinations of keyword arguments or when
Alpha
has not been prepared beforehand (still has the valuenan
):>>> k(wrong=1) Traceback (most recent call last): ... ValueError: For parameter `k` of element `?` a value can be set directly or indirectly by using the keyword arguments `khq` and `hq`.
>>> k(hq=10.0) Traceback (most recent call last): ... ValueError: For the alternative calculation of parameter `k` of element `?`, at least the keywords arguments `khq` and `hq` must be given.
>>> import numpy >>> alpha(numpy.nan) >>> k(hq=10.0, khq=2.0) Traceback (most recent call last): ... RuntimeError: For the alternative calculation of parameter `k` of element `?`, either the keyword argument `alpha` must be given or the value of parameter `alpha` must be defined beforehand.
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
K4
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Recession coefficient of the lower zone layer [1/T].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
Gamma
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Nonlinearity parameter of the lower zone layer [-].
- Required by the method:
-
TYPE
¶
-
class
hydpy.models.hland.hland_control.
MaxBaz
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Base length of the triangle unit hydrograph [T].
-
TYPE
¶
-
-
class
hydpy.models.hland.hland_control.
Abstr
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Abstraction of water from computed outflow [m³/s].
- Required by the method:
-
TYPE
¶
Derived parameters¶
-
class
hydpy.models.hland.
DerivedParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Derived parameters of model hland.
- The following classes are selected:
RelSoilArea()
Relative area of allFIELD
andFOREST
zones [-].RelLandArea()
Relative area of allFIELD
,FOREST
, andGLACIER
zones [-].RelZoneArea()
Relative zone area of all zone types [-].RelSoilZoneArea()
Relative zone area of allFIELD
andFOREST
zones [-].RelLandZoneArea()
Relative zone area of allFIELD
,FOREST
, andGLACIER
zones [-].TTM()
Threshold temperature for snow melting and refreezing [°C].DT()
Relative time step length for the upper zone layer calculations [-].UH()
Unit hydrograph ordinates based on a isosceles triangle [-].QFactor()
Factor for converting mm/stepsize to m³/s.
-
class
hydpy.models.hland.hland_derived.
RelSoilArea
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Relative area of all
FIELD
andFOREST
zones [-].- Required by the method:
-
TYPE
¶
-
update
()[source]¶ Update
RelSoilArea
based onArea
,ZoneArea
, andZoneType
.>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) >>> area(100.0) >>> zonearea(10.0, 20.0, 30.0, 40.0) >>> derived.relsoilarea.update() >>> derived.relsoilarea relsoilarea(0.3)
-
class
hydpy.models.hland.hland_derived.
RelLandArea
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Relative area of all
FIELD
,FOREST
, andGLACIER
zones [-].- Required by the methods:
-
TYPE
¶
-
update
()[source]¶ Update
RelLandArea
based onArea
,ZoneArea
, andZoneType
.>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) >>> area(100.0) >>> zonearea(10.0, 20.0, 30.0, 40.0) >>> derived.rellandarea.update() >>> derived.rellandarea rellandarea(0.6)
-
class
hydpy.models.hland.hland_derived.
RelZoneArea
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Relative zone area of all zone types [-].
- Required by the methods:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) >>> zonearea(10.0, 40.0, 20.0, 30.0) >>> derived.relzonearea.update() >>> derived.relzonearea relzonearea(field=0.1, forest=0.4, glacier=0.2, ilake=0.3)
-
TYPE
¶
-
class
hydpy.models.hland.hland_derived.
RelSoilZoneArea
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Relative zone area of all
FIELD
andFOREST
zones [-].- Required by the method:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) >>> zonearea(10.0, 40.0, 20.0, 30.0) >>> derived.relsoilzonearea.update() >>> derived.relsoilzonearea relsoilzonearea(field=0.2, forest=0.8)
-
TYPE
¶
-
class
hydpy.models.hland.hland_derived.
RelLandZoneArea
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Relative zone area of all
FIELD
,FOREST
, andGLACIER
zones [-].- Required by the method:
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) >>> zonearea(10.0, 40.0, 20.0, 30.0) >>> derived.rellandzonearea.update() >>> derived.rellandzonearea rellandzonearea(field=0.142857, forest=0.571429, glacier=0.285714)
-
TYPE
¶
-
class
hydpy.models.hland.hland_derived.
TTM
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Threshold temperature for snow melting and refreezing [°C].
- Required by the methods:
-
TYPE
¶
-
update
()[source]¶ Update
TTM
based on \(TTM = TT+DTTM\).>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(1) >>> zonetype(FIELD) >>> tt(1.0) >>> dttm(-2.0) >>> derived.ttm.update() >>> derived.ttm ttm(-1.0)
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_derived.
DT
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Relative time step length for the upper zone layer calculations [-].
- Required by the method:
-
TYPE
¶
-
update
()[source]¶ Update
DT
based on \(DT = \frac{1}{RecStep}\).>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> recstep(2.0) >>> derived.dt.update() >>> derived.dt dt(1.0) >>> recstep(10.0) >>> derived.dt.update() >>> derived.dt dt(0.2)
Note that the value assigned to recstep is related to the given parameter step size of one day. The actually applied recstep of the last example is:
>>> recstep.value 5
-
class
hydpy.models.hland.hland_derived.
UH
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Unit hydrograph ordinates based on a isosceles triangle [-].
- Required by the method:
-
TYPE
¶
-
update
()[source]¶ -
Note
This method also updates the shape of log sequence
QUH
.MaxBaz
determines the end point of the triangle. A value ofMaxBaz
being not larger than the simulation step size is identical with applying no unit hydrograph at all:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> simulationstep("12h") >>> maxbaz(0.0) >>> derived.uh.update() >>> logs.quh.shape (1,) >>> derived.uh uh(1.0)
Note that, due to difference of the parameter and the simulation step size in the given example, the largest assignment resulting in a inactive unit hydrograph is 1/2:
>>> maxbaz(0.5) >>> derived.uh.update() >>> logs.quh.shape (1,) >>> derived.uh uh(1.0)
When
MaxBaz
is in accordance with two simulation steps, both unit hydrograph ordinats must be 1/2 due to symmetry of the triangle:>>> maxbaz(1.0) >>> derived.uh.update() >>> logs.quh.shape (2,) >>> derived.uh uh(0.5) >>> derived.uh.values array([ 0.5, 0.5])
A
MaxBaz
value in accordance with three simulation steps results in the ordinate values 2/9, 5/9, and 2/9:>>> maxbaz(1.5) >>> derived.uh.update() >>> logs.quh.shape (3,) >>> derived.uh uh(0.222222, 0.555556, 0.222222)
And a final example, where the end of the triangle lies within a simulation step, resulting in the fractions 8/49, 23/49, 16/49, and 2/49:
>>> maxbaz(1.75) >>> derived.uh.update() >>> logs.quh.shape (4,) >>> derived.uh uh(0.163265, 0.469388, 0.326531, 0.040816)
-
class
hydpy.models.hland.hland_derived.
QFactor
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.variabletools.Variable
[hydpy.core.parametertools.SubParameters
,hydpy.core.parametertools.FastAccessParameter
]Factor for converting mm/stepsize to m³/s.
- Required by the method:
-
TYPE
¶
Sequence Features¶
Sequence tools¶
-
class
hydpy.models.hland.hland_sequences.
Flux1DSequence
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Base class for 1-dimensional flux subclasses that support aggregation with respect to
ZoneArea
.All
Flux1DSequence
subclasses should stick to the maskComplete
.The following example shows how subclass
PC
works:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) >>> zonearea(10.0, 20.0, 30.0, 40.0) >>> fluxes.pc(5.0, 2.0, 4.0, 1.0) >>> from hydpy import round_ >>> round_(fluxes.pc.average_values()) 2.5
-
mask
¶
-
-
class
hydpy.models.hland.hland_sequences.
State1DSequence
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.StateSequences
],hydpy.core.sequencetools.ConditionSequence
[hydpy.core.sequencetools.StateSequences
,hydpy.core.sequencetools.FastAccessOutputSequence
]Base class for 1-dimensional state subclasses that support aggregation with respect to
ZoneArea
.All
State1DSequence
subclasses must implement fitting mask objects individually.The following example shows how subclass
SM
works, which implements maskSoil
:>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(4) >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) >>> zonearea(10.0, 20.0, 30.0, 40.0) >>> fc(100.0) >>> states.sm(50.0, 20.0, 40.0, 10.0) >>> from hydpy import round_ >>> round_(states.sm.average_values()) 30.0
-
mask
¶
-
fastaccess_new
: hydpy.core.sequencetools.FastAccessOutputSequence¶
-
fastaccess_old
: hydpy.core.variabletools.FastAccess¶
-
Input sequences¶
-
class
hydpy.models.hland.
InputSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.sequencetools.ModelIOSequences
[InputSequence
,hydpy.core.sequencetools.FastAccessInputSequence
]Input sequences of model hland.
-
class
hydpy.models.hland.hland_inputs.
P
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.ModelIOSequence
[hydpy.core.sequencetools.InputSequences
,hydpy.core.sequencetools.FastAccessInputSequence
]Precipitation [mm].
- Required by the method:
-
class
hydpy.models.hland.hland_inputs.
T
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.ModelIOSequence
[hydpy.core.sequencetools.InputSequences
,hydpy.core.sequencetools.FastAccessInputSequence
]Temperature [°C].
- Required by the method:
-
class
hydpy.models.hland.hland_inputs.
TN
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.ModelIOSequence
[hydpy.core.sequencetools.InputSequences
,hydpy.core.sequencetools.FastAccessInputSequence
]Normal temperature [°C].
- Required by the method:
-
class
hydpy.models.hland.hland_inputs.
EPN
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.ModelIOSequence
[hydpy.core.sequencetools.InputSequences
,hydpy.core.sequencetools.FastAccessInputSequence
]Normal potential evaporation [mm].
- Required by the method:
Flux sequences¶
-
class
hydpy.models.hland.
FluxSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.sequencetools.OutputSequences
[FluxSequence
]Flux sequences of model hland.
- The following classes are selected:
TMean()
Mean subbasin temperature [°C].TC()
Corrected temperature [°C].FracRain()
Fraction rainfall / total precipitation [-].RfC()
Actual precipitation correction related to liquid precipitation [-].SfC()
Actual precipitation correction related to frozen precipitation [-].PC()
Corrected precipitation [mm].EP()
Potential evaporation [mm].EPC()
Corrected potential evaporation [mm].EI()
Interception evaporation [mm].TF()
Throughfall [mm].GlMelt()
Glacier melt [mm].Melt()
Actual melting of frozen water stored in the snow layer [mm].Refr()
Actual (re)freezing of liquid water stored in the snow layer [mm].In_()
Snow module release/soil module inflow [mm].R()
Effective soil response [mm].EA()
Actual soil evaporation [mm].CF()
Actual capillary flow [mm].ContriArea()
Fraction of the soil area contributing to runoff generation [-].InUZ()
Inflow to the upper zone layer [mm].Perc()
Percolation from the upper to the lower zone layer [mm].Q0()
Outflow from the upper zone layer [mm].EL()
Actual lake evaporation [mm].Q1()
Outflow from the lower zone layer [mm].InUH()
Input of the triangle unit hydrograph [m].OutUH()
Output of the triangle unit hydrograph [m].QT()
Total model outflow [m³/s].
-
class
hydpy.models.hland.hland_fluxes.
TMean
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Mean subbasin temperature [°C].
- Calculated by the method:
- Required by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
TC
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Corrected temperature [°C].
- Calculated by the method:
- Required by the methods:
Calc_EL_LZ_V1
Calc_FracRain_V1
Calc_GlMelt_In_V1
Calc_Melt_SP_WC_V1
Calc_Refr_SP_WC_V1
Calc_TMean_V1
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
FracRain
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Fraction rainfall / total precipitation [-].
- Calculated by the method:
- Required by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
RfC
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Actual precipitation correction related to liquid precipitation [-].
- Calculated by the method:
- Required by the methods:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
SfC
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Actual precipitation correction related to frozen precipitation [-].
- Calculated by the method:
- Required by the methods:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
PC
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Corrected precipitation [mm].
- Calculated by the method:
- Required by the methods:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
EP
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Potential evaporation [mm].
- Calculated by the method:
- Required by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
EPC
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Corrected potential evaporation [mm].
- Calculated by the method:
- Required by the methods:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
EI
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Interception evaporation [mm].
- Calculated by the method:
- Required by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
TF
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Throughfall [mm].
- Calculated by the method:
- Required by the methods:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
GlMelt
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Glacier melt [mm].
- Calculated by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
Melt
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Actual melting of frozen water stored in the snow layer [mm].
- Calculated by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
Refr
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Actual (re)freezing of liquid water stored in the snow layer [mm].
- Calculated by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
In_
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Snow module release/soil module inflow [mm].
- Calculated by the method:
- Updated by the method:
- Required by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
R
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Effective soil response [mm].
- Calculated by the method:
- Required by the methods:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
EA
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Actual soil evaporation [mm].
- Calculated by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
CFPot
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Potential capillary flow [mm].
-
subvars
: SubVariablesType¶
-
-
class
hydpy.models.hland.hland_fluxes.
CF
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Actual capillary flow [mm].
- Calculated by the method:
- Required by the method:
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_fluxes.
ContriArea
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Fraction of the soil area contributing to runoff generation [-].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.hland.hland_fluxes.
InUZ
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Inflow to the upper zone layer [mm].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.hland.hland_fluxes.
Perc
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Percolation from the upper to the lower zone layer [mm].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.hland.hland_fluxes.
Q0
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Outflow from the upper zone layer [mm].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.hland.hland_fluxes.
EL
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Actual lake evaporation [mm].
- Calculated by the method:
-
class
hydpy.models.hland.hland_fluxes.
Q1
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Outflow from the lower zone layer [mm].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.hland.hland_fluxes.
InUH
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Input of the triangle unit hydrograph [m].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.hland.hland_fluxes.
OutUH
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Output of the triangle unit hydrograph [m].
- Calculated by the method:
- Required by the method:
-
class
hydpy.models.hland.hland_fluxes.
QT
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.FluxSequences
]Total model outflow [m³/s].
- Calculated by the method:
- Required by the method:
State sequences¶
-
class
hydpy.models.hland.
StateSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.sequencetools.OutputSequences
[StateSequence
]State sequences of model hland.
-
class
hydpy.models.hland.hland_states.
Ic
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.StateSequences
],hydpy.core.sequencetools.ConditionSequence
[hydpy.core.sequencetools.StateSequences
,hydpy.core.sequencetools.FastAccessOutputSequence
]Interception storage [mm].
- Updated by the methods:
-
mask
¶
-
trim
(lower=None, upper=None)[source]¶ Trim upper values in accordance with \(IC \leq ICMAX\).
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> icmax(2.0) >>> states.ic(-1.0, 0.0, 1.0, 2.0, 3.0) >>> states.ic ic(0.0, 0.0, 1.0, 2.0, 2.0)
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_states.
SP
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.StateSequences
],hydpy.core.sequencetools.ConditionSequence
[hydpy.core.sequencetools.StateSequences
,hydpy.core.sequencetools.FastAccessOutputSequence
]Frozen water stored in the snow layer [mm].
- Updated by the methods:
- Required by the methods:
-
mask
¶
-
trim
(lower=None, upper=None)[source]¶ Trim values in accordance with \(WC \leq WHC \cdot SP\).
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(7) >>> whc(0.1) >>> states.sp(-1., 0., 0., 5., 5., 5., 5.) >>> states.sp sp(0.0, 0.0, 0.0, 5.0, 5.0, 5.0, 5.0) >>> states.wc.values = -1.0, 0.0, 1.0, -1.0, 0.0, 0.5, 1.0 >>> states.sp(-1., 0., 0., 5., 5., 5., 5.) >>> states.sp sp(0.0, 0.0, 10.0, 5.0, 5.0, 5.0, 10.0)
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_states.
WC
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.StateSequences
],hydpy.core.sequencetools.ConditionSequence
[hydpy.core.sequencetools.StateSequences
,hydpy.core.sequencetools.FastAccessOutputSequence
]Liquid water content of the snow layer [mm].
- Updated by the methods:
Calc_In_WC_V1
Calc_Melt_SP_WC_V1
Calc_Refr_SP_WC_V1
Calc_SP_WC_V1
-
mask
¶
-
trim
(lower=None, upper=None)[source]¶ Trim values in accordance with \(WC \leq WHC \cdot SP\).
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(7) >>> whc(0.1) >>> states.sp = 0.0, 0.0, 0.0, 5.0, 5.0, 5.0, 5.0 >>> states.wc(-1.0, 0.0, 1.0, -1.0, 0.0, 0.5, 1.0) >>> states.wc wc(0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5)
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_states.
SM
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.StateSequences
],hydpy.core.sequencetools.ConditionSequence
[hydpy.core.sequencetools.StateSequences
,hydpy.core.sequencetools.FastAccessOutputSequence
]Soil moisture [mm].
- Updated by the methods:
- Required by the method:
-
mask
¶
-
trim
(lower=None, upper=None)[source]¶ Trim values in accordance with \(SM \leq FC\).
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> fc(200.0) >>> states.sm(-100.0, 0.0, 100.0, 200.0, 300.0) >>> states.sm sm(0.0, 0.0, 100.0, 200.0, 200.0)
-
subvars
: SubVariablesType¶
-
class
hydpy.models.hland.hland_states.
UZ
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.StateSequences
],hydpy.core.sequencetools.ConditionSequence
[hydpy.core.sequencetools.StateSequences
,hydpy.core.sequencetools.FastAccessOutputSequence
]Storage in the upper zone layer [mm].
- Updated by the method:
- Required by the method:
-
class
hydpy.models.hland.hland_states.
LZ
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.OutputSequence
[hydpy.core.sequencetools.StateSequences
],hydpy.core.sequencetools.ConditionSequence
[hydpy.core.sequencetools.StateSequences
,hydpy.core.sequencetools.FastAccessOutputSequence
]Storage in the lower zone layer [mm].
- Updated by the methods:
-
trim
(lower=None, upper=None)[source]¶ Trim negative value whenever there is no internal lake within the respective subbasin.
>>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(2) >>> zonetype(FIELD, ILAKE) >>> states.lz(-1.0) >>> states.lz lz(-1.0) >>> zonetype(FIELD, FOREST) >>> states.lz(-1.0) >>> states.lz lz(0.0) >>> states.lz(1.0) >>> states.lz lz(1.0)
Log sequences¶
-
class
hydpy.models.hland.
LogSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.sequencetools.ModelSequences
[LogSequence
,hydpy.core.variabletools.FastAccess
]Log sequences of model hland.
- The following classes are selected:
QUH()
Whole outflow delayed by means of the unit hydrograph [mm].
-
class
hydpy.models.hland.hland_logs.
QUH
(subvars: SubVariablesType)[source]¶ Bases:
hydpy.core.sequencetools.ConditionSequence
[hydpy.core.sequencetools.LogSequences
,hydpy.core.variabletools.FastAccess
]Whole outflow delayed by means of the unit hydrograph [mm].
- Updated by the method:
The last value is always set to zero to avoid biased results:
>>> from hydpy.models.hland import * >>> parameterstep("1h") >>> simulationstep("1h") >>> maxbaz(3.0) >>> derived.uh.update() >>> logs.quh(1.0, 2.0, 1.0) >>> logs.quh quh(1.0, 2.0, 0.0)
When a wrong number of input values is given,
QUH
distributes their sum equally and emits the following warning:>>> logs.quh(1.0, 2.0, 3.0, 0.0) Traceback (most recent call last): ... UserWarning: Due to the following problem, log sequence `quh` of element `?` handling model `hland` could be initialised with a averaged value only: While trying to set the value(s) of variable `quh`, the following error occurred: While trying to convert the value(s) `(1.0, 2.0, 3.0, 0.0)` to a numpy ndarray with shape `(3...)` and type `float`, the following error occurred: could not broadcast input array from shape (4...) into shape (3...)
>>> logs.quh quh(3.0, 3.0, 0.0)
Outlet sequences¶
-
class
hydpy.models.hland.
OutletSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None) Bases:
hydpy.core.sequencetools.LinkSequences
[OutletSequence
]Outlet sequences of model hland.
- The following classes are selected:
Q()
Runoff [m³/s].
Auxiliary Features¶
Masks¶
-
class
hydpy.models.hland.
Masks
[source] Bases:
hydpy.core.masktools.Masks
Masks of base model
hland
.- The following classes are selected:
Complete()
Mask including all types of zones.Land()
Mask including zones of typeFIELD
,FOREST
, andGLACIER
.NoGlacier()
Mask including zones of typeFIELD
,FOREST
, andILAKE
.
-
class
hydpy.models.hland.hland_masks.
HLandBaseMask
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.core.masktools.IndexMask
To be overridden.
-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.hland_masks.
Complete
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.models.hland.hland_masks.HLandBaseMask
Mask including all types of zones.
-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.hland_masks.
Land
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.models.hland.hland_masks.HLandBaseMask
Mask including zones of type
FIELD
,FOREST
, andGLACIER
.-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.hland_masks.
NoGlacier
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.models.hland.hland_masks.HLandBaseMask
Mask including zones of type
FIELD
,FOREST
, andILAKE
.-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.hland_masks.
Soil
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.models.hland.hland_masks.HLandBaseMask
Mask including zones of type
FIELD
andFOREST
.-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.hland_masks.
Field
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.models.hland.hland_masks.HLandBaseMask
Mask for zone type
FIELD
.-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.hland_masks.
Forest
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.models.hland.hland_masks.HLandBaseMask
Mask for zone type
FOREST
.-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.hland_masks.
ILake
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.models.hland.hland_masks.HLandBaseMask
Mask for zone type
ILAKE
.-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.hland_masks.
Glacier
(variable: Optional[hydpy.core.typingtools.VariableProtocol] = None, **kwargs)[source]¶ Bases:
hydpy.models.hland.hland_masks.HLandBaseMask
Mask for zone type
GLACIER
.-
variable
: hydpy.core.typingtools.VariableProtocol¶
-
-
class
hydpy.models.hland.
ControlParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Control parameters of model hland.
- The following classes are selected:
Area()
Subbasin area [km²].NmbZones()
Number of zones (hydrological response units) in a subbasin [-].ZoneType()
Type of each zone.ZoneArea()
Zone area [km²].ZoneZ()
Zone elevation [100m].ZRelP()
Subbasin-wide reference elevation level for precipitation [100m].ZRelT()
Subbasin-wide reference elevation level for temperature [100m].ZRelE()
Subbasin-wide reference elevation level for evaporation [100m].PCorr()
General precipitation correction factor [-].PCAlt()
Elevation correction factor for precipitation [-1/100m].RfCF()
Rainfall correction factor [-].SfCF()
Snowfall correction factor [-].TCAlt()
Elevation correction factor for temperature [-1°C/100m].ECorr()
General evaporation correction factor [-].ECAlt()
Elevation correction factor for evaporation [-1/100m].EPF()
Decrease in potential evaporation due to precipitation [T/mm].ETF()
Temperature factor for evaporation [1/°C].ERed()
Factor for restricting actual to potential evaporation [-].TTIce()
Temperature threshold for lake evaporation [°C].IcMax()
Maximum interception storage [mm].TT()
Temperature threshold for snow/rain [°C].TTInt()
Temperature interval with a mixture of snow and rain [°C].CFMax()
Degree day factor for snow (on glaciers or not) [mm/°C/T].GMelt()
Degree day factor for glacial ice [mm/°C/T].CFR()
Refreezing factor for water stored within the snow layer [-].WHC()
Relative water holding capacity of the snow layer [-].FC()
Maximum soil moisture content (field capacity) [mm].LP()
Relative limit for potential evaporation [-].Beta()
Nonlinearity parameter of the soil routine [-].PercMax()
Maximum percolation rate [mm/T].CFlux()
Capacity (maximum) of the capillary return flux [mm/T].RespArea()
Flag to enable the contributing area approach [-].RecStep()
Number of internal computation steps per simulation time step [-].Alpha()
Nonlinearity parameter of the upper zone layer [-].K()
Recession coefficient of the upper zone layer [1/T/mm^alpha].K4()
Recession coefficient of the lower zone layer [1/T].Gamma()
Nonlinearity parameter of the lower zone layer [-].MaxBaz()
Base length of the triangle unit hydrograph [T].Abstr()
Abstraction of water from computed outflow [m³/s].
-
class
hydpy.models.hland.
DerivedParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Derived parameters of model hland.
- The following classes are selected:
RelSoilArea()
Relative area of allFIELD
andFOREST
zones [-].RelLandArea()
Relative area of allFIELD
,FOREST
, andGLACIER
zones [-].RelZoneArea()
Relative zone area of all zone types [-].RelSoilZoneArea()
Relative zone area of allFIELD
andFOREST
zones [-].RelLandZoneArea()
Relative zone area of allFIELD
,FOREST
, andGLACIER
zones [-].TTM()
Threshold temperature for snow melting and refreezing [°C].DT()
Relative time step length for the upper zone layer calculations [-].UH()
Unit hydrograph ordinates based on a isosceles triangle [-].QFactor()
Factor for converting mm/stepsize to m³/s.
-
class
hydpy.models.hland.
FluxSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.OutputSequences
[FluxSequence
]Flux sequences of model hland.
- The following classes are selected:
TMean()
Mean subbasin temperature [°C].TC()
Corrected temperature [°C].FracRain()
Fraction rainfall / total precipitation [-].RfC()
Actual precipitation correction related to liquid precipitation [-].SfC()
Actual precipitation correction related to frozen precipitation [-].PC()
Corrected precipitation [mm].EP()
Potential evaporation [mm].EPC()
Corrected potential evaporation [mm].EI()
Interception evaporation [mm].TF()
Throughfall [mm].GlMelt()
Glacier melt [mm].Melt()
Actual melting of frozen water stored in the snow layer [mm].Refr()
Actual (re)freezing of liquid water stored in the snow layer [mm].In_()
Snow module release/soil module inflow [mm].R()
Effective soil response [mm].EA()
Actual soil evaporation [mm].CF()
Actual capillary flow [mm].ContriArea()
Fraction of the soil area contributing to runoff generation [-].InUZ()
Inflow to the upper zone layer [mm].Perc()
Percolation from the upper to the lower zone layer [mm].Q0()
Outflow from the upper zone layer [mm].EL()
Actual lake evaporation [mm].Q1()
Outflow from the lower zone layer [mm].InUH()
Input of the triangle unit hydrograph [m].OutUH()
Output of the triangle unit hydrograph [m].QT()
Total model outflow [m³/s].
-
class
hydpy.models.hland.
InputSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.ModelIOSequences
[InputSequence
,hydpy.core.sequencetools.FastAccessInputSequence
]Input sequences of model hland.
-
class
hydpy.models.hland.
LogSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.ModelSequences
[LogSequence
,hydpy.core.variabletools.FastAccess
]Log sequences of model hland.
- The following classes are selected:
QUH()
Whole outflow delayed by means of the unit hydrograph [mm].
-
class
hydpy.models.hland.
OutletSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.LinkSequences
[OutletSequence
]Outlet sequences of model hland.
- The following classes are selected:
Q()
Runoff [m³/s].
-
class
hydpy.models.hland.
StateSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.OutputSequences
[StateSequence
]State sequences of model hland.