HydPy-H-HBV96-PREVAH (fusion of SMHI-IHMS-HBV96 and PREVAH)

hland_96p combines HBV96’s Lindström et al. (1997) and PREVAH’s Viviroli et al. (2009) process equations. We implemented it on behalf of the German Federal Institute of Hydrology (BfG) as an alternative to hland_96 for modelling large river basins in central Europe. All processes “above the soil” (input data correction, interception, snowmelt) and “inside the soil” (evaporation, generation of effective precipitation), as well as the handling of water areas, are identical with hland_96 (and so with HBV96). Most processes “below the soil” agree with PREVAH (runoff generation and runoff concentration).

The following figure shows the general structure of hland_96p:

_images/HydPy-H-HBV96-PREVAH.png

Comparing the above figure with the analogue figure of hland_96 reveals that hland_96p models five instead of two runoff components, requiring a larger number of vertically arranged storages. The two upper storages (SUZ, related to the soil, and SG1, related to dynamic groundwater aquifers) are zone-specific. In comparison, the upper zone layer (UZ) of hland_96 is subbasin-specific. hland_96p models the two lower storages (SG2 and SG3), dealing with slow and slowest groundwater responses, slightly different from PREVAH. First, their outflows (RG2 and RG3) are individually accessible (PREVAH handles their outflow as one runoff component). Second, it represents internal lakes as an “extension” of the groundwater (like in hland_96/HBV96). Like all hland application models, hland_96p optionally allows using a submodel for additional consideration of runoff concentration. While the figure of hland_96 relies on rconc_uh, the figure of hland_96p selects rconc_nash as an example.

Integration tests

Note

When new to HydPy, consider reading section Integration Tests first.

We define the settings of the following test calculations as similar to the ones of application model hland_96 as possible. Hence, comparing the test results gives a good impression of the functional differences of both models.

The following settings are identical:

>>> from hydpy import pub
>>> pub.timegrids = "01.01.2000", "05.01.2000", "1h"
>>> from hydpy.models.hland_96p import *
>>> parameterstep("1h")
>>> from hydpy import Node, Element
>>> outlet = Node("outlet")
>>> land = Element("land", outlets=outlet)
>>> land.model = model
>>> nmbzones(1)
>>> sclass(1)
>>> area(1.0)
>>> zonearea(1.0)
>>> zonez(1.0)
>>> psi(1.0)

We assign identical values to all parameters, besides those that are specific to hland_96p (SGR, SG1Max, K0, K1, K2, and K3). Also, we use the same submodels to simulate evaporation but select rconc_nash instead of rconc_uh for extending the simulation of runoff concentration processes:

>>> zonetype(FIELD)
>>> pcorr(1.1)
>>> pcalt(0.1)
>>> rfcf(1.1)
>>> sfcf(1.3)
>>> tcorr(0.6)
>>> tcalt(0.6)
>>> icmax(2.0)
>>> sfdist(1.0)
>>> smax(inf)
>>> sred(0.0)
>>> tt(0.0)
>>> ttint(2.0)
>>> dttm(1.0)
>>> cfmax(0.5)
>>> cfvar(0.1)
>>> gmelt(1.0)
>>> gvar(0.2)
>>> cfr(0.1)
>>> whc(0.4)
>>> fc(200.0)
>>> beta(2.0)
>>> percmax(2.0)
>>> sgr(20.0)
>>> sg1max(50.0)
>>> k0(2.0)
>>> k1(10.0)
>>> k2(20.0)
>>> k3(100.0)
>>> with model.add_aetmodel_v1("evap_aet_hbv96"):
...     temperaturethresholdice(0.0)
...     soilmoisturelimit(0.8)
...     excessreduction(0.5)
...     with model.add_petmodel_v1("evap_pet_hbv96"):
...         evapotranspirationfactor(0.7)
...         airtemperaturefactor(0.1)
...         altitudefactor(-0.1)
...         precipitationfactor(0.1)
>>> with model.add_rconcmodel_v1("rconc_nash"):
...     retentiontime(3.0)
...     nmbstorages(5)
...     nmbsteps(100)
>>> from hydpy import IntegrationTest
>>> IntegrationTest.plotting_options.axis1 = (
...     inputs.p, fluxes.rs, fluxes.ri, fluxes.rg1, fluxes.rg2, fluxes.rg3, fluxes.rt)
>>> IntegrationTest.plotting_options.axis2 = inputs.t
>>> test = IntegrationTest(land)
>>> test.dateformat = '%d/%m %H:00'

The same holds for the initial conditions.

>>> test.inits = ((states.ic, 0.0),
...               (states.sp, 0.0),
...               (states.wc, 0.0),
...               (states.sm, 100.0),
...               (states.suz, 0.0),
...               (states.sg1, 10.0),
...               (states.sg2, 10.0),
...               (states.sg3, 10.0),
...               (model.rconcmodel.sequences.states.sc, 0.05))

All input time series are identical:

>>> inputs.p.series = (
...     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
...     0.2, 0.0, 0.0, 1.3, 5.6, 2.9, 4.9, 10.6, 0.1, 0.7, 3.0, 2.1, 10.4, 3.5, 3.4,
...     1.2, 0.1, 0.0, 0.0, 0.4, 0.1, 3.6, 5.9, 1.1, 20.7, 37.9, 8.2, 3.6, 7.5, 18.5,
...     15.4, 6.3, 1.9, 4.9, 2.7, 0.5, 0.2, 0.5, 2.4, 0.4, 0.2, 0.0, 0.0, 0.3, 2.6,
...     0.7, 0.3, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
...     1.3, 0.0, 0.0, 0.0, 0.7, 0.4, 0.1, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
...     0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
>>> inputs.t.series = (
...     21.2, 19.4, 18.9, 18.3, 18.9, 22.5, 25.1, 28.3, 27.8, 31.4, 32.2, 35.2, 37.1,
...     31.2, 24.3, 25.4, 25.9, 23.7, 21.6, 21.2, 20.4, 19.8, 19.6, 19.2, 19.2, 19.2,
...     18.9, 18.7, 18.5, 18.3, 18.5, 18.8, 18.8, 19.0, 19.2, 19.3, 19.0, 18.8, 18.7,
...     17.8, 17.4, 17.3, 16.8, 16.5, 16.3, 16.2, 15.5, 14.6, 14.7, 14.6, 14.1, 14.3,
...     14.9, 15.7, 16.0, 16.7, 17.1, 16.2, 15.9, 16.3, 16.3, 16.4, 16.5, 18.4, 18.3,
...     18.1, 16.7, 15.2, 13.4, 12.4, 11.6, 11.0, 10.5, 11.7, 11.9, 11.2, 11.1, 11.9,
...     12.2, 11.8, 11.4, 11.6, 13.0, 17.1, 18.2, 22.4, 21.4, 21.8, 22.2, 20.1, 17.8,
...     15.2, 14.5, 12.4, 11.7, 11.9)
>>> petinputs = model.aetmodel.petmodel.sequences.inputs
>>> petinputs.normalairtemperature.series = inputs.t.series - 1.0
>>> petinputs.normalevapotranspiration.series = (
...     0.100707, 0.097801, 0.096981, 0.09599, 0.096981, 0.102761, 0.291908, 1.932875,
...     4.369536, 7.317556, 8.264362, 9.369867, 5.126178, 6.62503, 7.397619, 2.39151,
...     1.829834, 1.136569, 0.750986, 0.223895, 0.099425, 0.098454, 0.098128, 0.097474,
...     0.097474, 0.097474, 0.096981, 0.096652, 0.096321, 0.09599, 0.187298, 1.264612,
...     3.045538, 1.930758, 2.461001, 6.215945, 3.374783, 8.821555, 4.046025, 2.110757,
...     2.239257, 2.877848, 1.591452, 0.291604, 0.092622, 0.092451, 0.091248, 0.089683,
...     0.089858, 0.089683, 0.088805, 0.089157, 0.090207, 0.091593, 0.154861, 0.470369,
...     1.173726, 4.202296, 4.359715, 5.305753, 5.376027, 4.658915, 7.789594, 4.851567,
...     5.30692, 3.286036, 1.506216, 0.274762, 0.087565, 0.085771, 0.084317, 0.083215,
...     0.082289, 0.0845, 0.084864, 0.083584, 0.0834, 0.084864, 0.310229, 1.391958,
...     3.195876, 5.191651, 7.155036, 8.391432, 8.391286, 10.715238, 9.383394, 7.861915,
...     6.298329, 2.948416, 1.309232, 0.32955, 0.089508, 0.085771, 0.0845, 0.084864)
>>> test.reset_inits()
>>> conditions = model.conditions

field

hland_96p neither implements an approach analogue to HBV96’s contributing area concept nor a substep mechanism controlling the numerical accuracy of the runoff generation module. Hence, we provide only a single “field” example that is comparable both with the first and the second example of hland_96:

>>> test('hland_96p_field')
Click to see the table

There is no indication of an error in the water balance:

>>> from hydpy import round_
>>> round_(model.check_waterbalance(conditions))
0.0

internal lake

Like in the internal lake example of hland_96, we now focus on ILAKE zones. We understand the combination of the slow-response groundwater reservoirs SG2 and SG3 as the surrogate for HBV96’s lower zone storage (LZ). Hence, we add precipitation falling on “internal lakes” to both storages and remove lake evaporation from both storages. As for percolation, parameter FSG determines how hland_96p divides precipitation and evaporation between both storages:

>>> zonetype(ILAKE)
>>> model.aetmodel.parameters.control.temperaturethresholdice(13.0)
>>> test('hland_96p_ilake')
Click to see the table

There is no indication of an error in the water balance:

>>> round_(model.check_waterbalance(conditions))
0.0

snow classes

Regarding snow simulation, all functionalities of hland_96p are identical with the ones of hland_96. Hence, all snow data in the following table agrees with the snow classes example of hland_96:

>>> sclass(2)
>>> sfdist(linear=0.2)
>>> zonetype(FIELD)
>>> t_series = inputs.t.series.copy()
>>> tn_series = petinputs.normalairtemperature.series.copy()
>>> inputs.t.series[:48] = -20.0
>>> inputs.t.series[48:] = 20.0
>>> petinputs.normalairtemperature.series = inputs.t.series
>>> test("hland_96p_snow_classes")
Click to see the table
Click to see the graph

There is no indication of an error in the water balance:

>>> round_(model.check_waterbalance(conditions))
0.0

glacier

Regarding glacier simulation, all functionalities of hland_96p are identical with the ones of hland_96. Hence, all snow data in the following table agrees with the glacier example of hland_96:

>>> zonetype(GLACIER)
>>> test('hland_96p_glacier')
Click to see the table

There is no indication of an error in the water balance:

>>> round_(model.check_waterbalance(conditions))
0.0

multiple zones

This example focuses on the spatial configuration of hland_96p. The most marked difference to hland_96 is the separate modelling of the faster runoff components (RS, RI, RG1) for each zone. Hence, there are five distinct values for each runoff component in the following table. In contrast, the table of the corresponding multiple zones example of hland_96 contains only a single value for the only fast runoff component Q0 of hland_96:

>>> name2value = {par.name: par.value for par in control}
>>> nmbzones(5)
>>> sclass(1)
>>> area(15.0)
>>> zonearea(5.0, 4.0, 3.0, 2.0, 1.0)
>>> zonetype(FIELD, FOREST, GLACIER, ILAKE, SEALED)
>>> sfdist(1.0)
>>> for name, value in name2value.items():
...     if name not in ("nmbzones", "sclass", "area", "zonearea", "zonetype", "sfdist"):
...         control[name].value = value
>>> model.add_aetmodel_v1.update(model, model.aetmodel, refresh=True)
>>> model.aetmodel.add_petmodel_v1.update(model.aetmodel, model.aetmodel.petmodel, refresh=True)
>>> aetcontrol = model.aetmodel.parameters.control
>>> aetcontrol.temperaturethresholdice(0.0)
>>> aetcontrol.soilmoisturelimit(0.8)
>>> aetcontrol.excessreduction(0.5)
>>> petcontrol = model.aetmodel.petmodel.parameters.control
>>> petcontrol.evapotranspirationfactor(0.7)
>>> petcontrol.airtemperaturefactor(0.1)
>>> petcontrol.altitudefactor(-0.1)
>>> petcontrol.precipitationfactor(0.1)
>>> inputs.t.series = t_series
>>> petinputs.normalairtemperature.series = tn_series
>>> test("hland_96p_multiple_zones",
...      axis1=(inputs.p, fluxes.rt, fluxes.qt),
...      axis2=inputs.t)
Click to see the table
Click to see the graph

There is no indication of an error in the water balance:

>>> round_(model.check_waterbalance(conditions))
0.0

snow redistribution

Regarding snow redistribution, all functionalities of hland_96p are identical with the ones of hland_96. Hence, all snow data in the following table agrees with the snow redistribution 1 example of hland_96:

>>> zonez(0.0, 10.0, 30.0, 0.0, 20.0)
>>> smax(200.0)
>>> sred(n_zones=1)
>>> inputs.t.series = -0.4
>>> pcorr *= 2.0
>>> pcalt(0.05)
>>> test("hland_96p_snow_redistribution",
...      axis1=(states.sp, states.wc), axis2=(factors.tc, fluxes.pc))
Click to see the table
Click to see the graph

There is no indication of an error in the water balance:

>>> round_(model.check_waterbalance(conditions))
0.0

The submodel rconcmodel is optional. We repeat the last integration test, but without a submodel for runoff concentration.

>>> model.rconcmodel = None
>>> test("hland_96p_snow_redistribution",
...      axis1=(states.sp, states.wc), axis2=(factors.tc, fluxes.pc))
Click to see the table
Click to see the graph

There is no indication of an error in the water balance:

>>> round_(model.check_waterbalance(conditions))
0.0
class hydpy.models.hland_96p.Model[source]

Bases: Main_AETModel_V1, Main_RConcModel_V1, Sub_TempModel_V1, Sub_PrecipModel_V1, Sub_IntercModel_V1, Sub_SoilWaterModel_V1, Sub_SnowCoverModel_V1

HydPy-H-HBV96-PREVAH (fusion of SMHI-IHMS-HBV96 and PREVAH).

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_FracRain_V1 Determine the temperature-dependent fraction of (liquid) rainfall and (total) precipitation.

  • Calc_RFC_SFC_V1 Calculate the corrected fractions of rainfall/snowfall and total precipitation.

  • Calc_PC_V1 Apply the precipitation correction factors and adjust precipitation to the altitude of the individual zones.

  • Calc_TF_Ic_V1 Calculate throughfall and update the interception storage accordingly.

  • Calc_SP_WC_V1 Add throughfall to the snow layer.

  • Calc_SPL_WCL_SP_WC_V1 Calculate the subbasin-internal redistribution losses of the snow layer.

  • Calc_SPG_WCG_SP_WC_V1 Calculate the subbasin-internal redistribution gains of the snow layer.

  • Calc_CFAct_V1 Adjust the day degree factor for snow to the current day of the year.

  • Calc_Melt_SP_WC_V1 Calculate the 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_SWE_V1 Calculate the total snow water equivalent.

  • Calc_SR_V1 Calculate the sealed surface runoff.

  • Calc_GAct_V1 Adjust the day degree factor for glacier ice to the current day of the year.

  • Calc_GlMelt_In_V1 Calculate the melting of non-snow-covered glaciers and add it to the water release of the snow module.

  • Calc_EI_Ic_V1 Let a submodel that follows the AETModel_V1 submodel interface calculate interception evaporation and adjust the amount of intercepted water.

  • Calc_R_SM_V1 Calculate effective precipitation and update the soil moisture.

  • Calc_EA_SM_V1 Let a submodel that follows the AETModel_V1 submodel interface calculate soil evapotranspiration and adjust the soil water content.

  • Calc_SUZ_V1 Add the effective precipitation to the upper storage reservoir.

  • Calc_DP_SUZ_V1 Calculate the deep percolation and remove it from the upper storage reservoir.

  • Calc_RS_RI_SUZ_V1 Calculate the surface runoff and the interflow and remove them from the upper storage reservoir.

  • Calc_GR1_V1 Calculate the recharge to the fast response groundwater reservoir.

  • Calc_RG1_SG1_V1 Calculate the discharge from the fast response groundwater reservoir and subtract it.

  • Calc_GR2_GR3_V1 Calculate the recharge of the first-order and the second-order slow response groundwater reservoir.

  • Calc_RG2_SG2_V1 Calculate the discharge from the first-order slow response groundwater reservoir and subtract it.

  • Calc_RG3_SG3_V1 Calculate the discharge from the second-order slow response groundwater reservoir and subtract it.

  • Calc_EL_SG2_SG3_V1 Let a submodel that follows the AETModel_V1 submodel interface calculate interception evaporation, soil evapotranspiration, and open water evaporation, and adjust the related interception, soil water, and slow response groundwater storages accordingly.

  • Calc_InRC_V2 Calculate the input of the runoff concentration submodel.

  • Calc_OutRC_V1 If the model has a submodel that follows the RConcModel_V1 submodel interface, calculate runoff concentration. If not, set the output equal to the input.

  • Calc_RT_V1 Calculate the total discharge in mm.

  • Calc_QT_V1 Calculate the total discharge in m³/s.

The following “outlet update methods” are called in the given sequence at the end of each simulation step:
The following interface methods are available to main models using the defined model as a submodel:
The following “additional methods” might be called by one or more of the other methods or are meant to be directly called by the user:
Users can hook submodels into the defined main model if they satisfy one of the following interfaces:
  • AETModel_V1 Interface for calculating interception evaporation, evapotranspiration from soils, evaporation from water areas in separate steps.

  • RConcModel_V1 Simple interface for calculating runoff concentration processes.

DOCNAME: DocName = ('H-HBV96-PREVAH', 'fusion of SMHI-IHMS-HBV96 and PREVAH')
aetmodel: SubmodelProperty

Required submodel that complies with the following interface: AETModel_V1.

rconcmodel: modeltools.SubmodelProperty

Optional submodel that complies with the following interface: RConcModel_V1.

check_waterbalance(initial_conditions: dict[str, dict[str, dict[str, float | ndarray[Any, dtype[float64]]]]]) float[source]

Determine the water balance error of the previous simulation run in mm.

Method check_waterbalance() calculates the balance error as follows:

\[\begin{split}\Sigma In_{hru} - \Sigma Out_{hru} - \Sigma Out_{basin} + \Delta Vol_{hru} + \Delta Vol_{snow} + \Delta Vol_{basin} - \Delta Vol_{rconc} \\ \\ \Sigma In_{hru} = \sum_{k=1}^{N_{hru}} A_Z^k \cdot \sum_{t=t0}^{t1} PC_t^k + GLMelt_t^k \\ \Sigma Out_{hru} = \sum_{k=1}^{N_{hru}} A_Z^k \cdot \sum_{t=t0}^{t1} EI_t^k + EA_t^k + EL_t^k \\ \\ \Sigma Out_{basin} = \sum_{t=t0}^{t1} RT_t \\ \Delta Vol_{hru} = \sum_{k=1}^{N_{hru}} A_Z^k \cdot \Big( \big(IC_{t0}^k - IC_{t1}^k\big) + \big(SM_{t0}^k - SM_{t1}^k\big) + \big( SUZ_{t0}^k - SUZ_{t1}^k \big) + \big( SG1_{t0}^k - SG1_{t1}^k \big) \Big) \\ \Delta Vol_{snow} = \sum_{k=1}^{N_{hru}} A_Z^k \cdot \frac{1}{N_{snow}} \cdot \sum_{c=1}^{N_{snow}} \left(SP_{t0}^{k,s} - SP_{t1}^{k,s}\right) + \left(WC_{t0}^{k,s} - WC_{t1}^{k,s}\right) \\ \Delta Vol_{basin} = A_L \cdot \Big( \big( SG2_{t0} - SG2_{t1} \big) + \big( SG3_{t0} - SG3_{t1} \big) \Big) \\ \Delta Vol_{rconc} = \begin{cases} rconcmodel.get\_waterbalance &|\ rconcmodel \\ 0 &|\ \overline{rconcmodel} \end{cases} \\ \\ N_{hru} = NmbZones \\ N_{snow} = SClass \\ A_Z = RelZoneAreas \\ A_L = RelLowerZoneArea\end{split}\]

The returned error should always be in scale with numerical precision so that it does not affect the simulation results in any relevant manner.

Pick the required initial conditions before starting the simulation run via property conditions. See the integration tests of the application model hland_96p for some examples.

REUSABLE_METHODS: ClassVar[tuple[type[ReusableMethod], ...]] = ()
cymodel: CyModelProtocol | None
parameters: parametertools.Parameters
sequences: sequencetools.Sequences
masks: masktools.Masks
class hydpy.models.hland_96p.Masks[source]

Bases: Masks

Masks applicable to hland_96p.

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

Bases: AideSequences

Aide sequences of model hland_96p.

The following classes are selected:
  • SPE() Subbasin-internal redistribution excess of the snow’s ice content [mm/T].

  • WCE() Subbasin-internal redistribution excess of the snow’s water content [mm/T].

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

Bases: SubParameters

Control parameters of model hland_96p.

The following classes are selected:
  • Area() Subbasin area [km²].

  • NmbZones() Number of zones (hydrological response units) in a subbasin [-].

  • SClass() Number of snow classes in each zone [-].

  • ZoneType() Type of each zone [-].

  • ZoneArea() Zone area [km²].

  • Psi() Fraction of the actual sealing of zones classified as SEALED [-].

  • ZoneZ() Zone elevation [100m].

  • PCorr() General precipitation correction factor [-].

  • PCAlt() Elevation correction factor for precipitation [1/100m].

  • RfCF() Rainfall correction factor [-].

  • SfCF() Snowfall correction factor [-].

  • TCorr() General temperature correction addend [-].

  • TCAlt() Elevation correction factor for temperature [-1°C/100m].

  • IcMax() Maximum interception storage [mm].

  • SFDist() Distribution of snowfall [-].

  • SMax() Maximum snow water equivalent [mm].

  • SRed() Snow redistribution paths [-].

  • TT() Temperature threshold for snow/rain [°C].

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

  • DTTM() Difference between TTM and TT [°C].

  • CFMax() Average degree day factor for snow (on glaciers or not) [mm/°C/T].

  • CFVar() Annual variability of CFMax [mm/°C/T].

  • GMelt() Degree day factor for glacial ice [mm/°C/T].

  • GVar() Annual variability of GMelt [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].

  • Beta() Nonlinearity parameter of the soil routine [-].

  • PercMax() Maximum percolation rate [mm/T].

  • SGR() Threshold content of SUZ for the generation of surface runoff [mm].

  • K0() Storage time for surface runoff [T].

  • K1() Storage time for interflow [T].

  • SG1Max() Maximum content of the fast response groundwater reservoir SG1 [mm].

  • K2() Storage time for quick response baseflow [T].

  • K3() Storage time for delayed baseflow [T].

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

Bases: SubParameters

Derived parameters of model hland_96p.

The following classes are selected:
  • DOY() References the dayofyear index array provided by the instance of class Indexer available in module pub [-].

  • RelZoneAreas() Relative area of all zones [-].

  • RelLandArea() Relative area of all FIELD, FOREST, GLACIER, and SEALED zones [-].

  • RelLowerZoneArea() Relative area of all FIELD, FOREST, GLACIER, and ILAKE zones [-].

  • ZoneAreaRatios() Ratios of all zone combinations [-].

  • IndicesZoneZ() Indices of the zones sorted by altitude [-].

  • Z() Average (reference) subbasin elevation [100m].

  • SRedOrder() Processing order for the snow redistribution routine [-].

  • SRedEnd() Flags that indicate the “dead ends” of snow redistribution within a subbasin.

  • SRedNumber() The total number of snow redistribution paths [-].

  • TTM() Threshold temperature for snow melting and refreezing [°C].

  • W0() Weight for calculating surface runoff [-].

  • W1() Weight for calculating interflow [-].

  • W2() Weight for calculating the quick response base flow [-].

  • W3() Weight for calculating the response of the first-order groundwater reservoir [-].

  • K4() Storage time for very delayed baseflow [T].

  • W4() Weight for calculating the response of the second-order groundwater reservoir [-].

  • QFactor() Factor for converting mm/stepsize to m³/s.

class hydpy.models.hland_96p.FactorSequences(master: Sequences, cls_fastaccess: type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)

Bases: FactorSequences

Factor sequences of model hland_96p.

The following classes are selected:
  • 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 [-].

  • CFAct() Actual degree day factor for snow (on glaciers or not) [mm/°C/T].

  • SWE() Snow water equivalent [mm].

  • GAct() Actual degree day factor for glacier ice [mm/°C/T].

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

Bases: SubParameters

Fixed parameters of model hland_96p.

The following classes are selected:
  • Pi() π [-].

  • FSG() Fraction between the spatial extents of the first-order and the second-order slow response groundwater reservoir [-].

  • K1L() Lowest possible lower boundary value for the parameters K1, K2, and K3 [-].

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

Bases: FluxSequences

Flux sequences of model hland_96p.

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

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

  • TF() Throughfall [mm/T].

  • SPL() Subbasin-internal redistribution loss of the snow’s ice content [mm/T].

  • WCL() Subbasin-internal redistribution loss of the snow’s water content [mm/T].

  • SPG() Subbasin-internal redistribution gain of the snow’s ice content [mm/T].

  • WCG() Subbasin-internal redistribution gain of the snow’s water content [mm/T].

  • GlMelt() Glacier melt [mm/T].

  • Melt() Actual melting of frozen water stored in the snow layer [mm/T].

  • Refr() Actual (re)freezing of liquid water stored in the snow layer [mm/T].

  • In_() Snow module release/soil module inflow [mm/T].

  • R() Effective soil response [mm/T].

  • SR() Sealed surface runoff [mm/T].

  • EA() Actual soil evaporation [mm/T].

  • DP() Deep percolation rate [mm/T].

  • EL() Actual lake evaporation [mm/T].

  • RS() Surface runoff [mm/T].

  • RI() Interflow [mm/T].

  • GR1() Recharge into the fast response groundwater reservoir [mm/T].

  • RG1() Discharge from the fast response groundwater reservoir [mm/T].

  • GR2() Recharge into the first-order slow response groundwater reservoir [mm/T].

  • RG2() Discharge from the first-order slow response groundwater reservoir [mm/T].

  • GR3() Recharge into the second-order slow response groundwater reservoir [mm/T].

  • RG3() Discharge from the second-order slow response groundwater reservoir [mm/T].

  • InRC() Input of the runoff concentration submodel [mm/T].

  • OutRC() Output of the runoff concentration submodel [mm/T].

  • RT() Total model outflow [mm/T].

  • QT() Total model outflow [m³/s].

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

Bases: InputSequences

Input sequences of model hland_96p.

The following classes are selected:
  • P() Precipitation [mm].

  • T() Temperature [°C].

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

Bases: OutletSequences

Outlet sequences of model hland_96p.

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

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

Bases: StateSequences

State sequences of model hland_96p.

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

  • SP() Frozen water stored in the snow layer [mm].

  • WC() Liquid water content of the snow layer [mm].

  • SM() Soil moisture [mm].

  • SUZ() Upper storage reservoir [mm].

  • SG1() Fast response groundwater reservoir [mm].

  • SG2() First-order slow response groundwater reservoir [mm].

  • SG3() Second-order slow response groundwater reservoir [mm].