lland_v4

Version 4 of HydPy-L-Land is still under development and likely to change in the future. Its goal is to extend lland_v3 with processes dealing with the interception of snow in canopies, similar to the SCHNEEINTERZEPTION option of LARSIM. The publically available LARSIM documentation does not provide all information required for implementing a perfect emulation, but detailed comparisons suggest that the essential process equations are defined similarly.

The following list summarises the current status of lland_v4 by discussing its main differences to lland_v3:

  • Snow interception occurs only in tree canopies, which is why the results of lland_v4 differ from those of lland_v3 only for the land-use types LAUBW, MISCHW, and NADELW.

  • There is are two additional storages, SInz and STInz, which handle the total and the frozen amount of intercepted snowfall, placed between the “normal” interception and the “normal” snow module.

  • If not stated otherwise, SInz and STInz correspond to WAeS and WATS and are modified by the same or functionally identical methods.

  • If the LARSIM documentation does not suggest otherwise, we reuse the names of the “normal” snow module and suffix “Inz” to it or replace its “Snow” suffix (for example, WaDa becomes WaDaInz and NetRadiationSnow becomes NetRadiationInz).

  • Only a fraction of the water leaving the “normal” interception module reaches the snow interception module (see Calc_NBesInz_V1 and Calc_SnowIntRate_V1).

  • The surface temperature of the intercepted snow is always identical with its bulk temperature (TempSInz), except for the calculation of the latent heat flux (see Return_WSurfInz_V1).

  • The energy balance of the intercepted snow does not (need to) consider the soil heat flux.

  • The radiation exchange with the atmosphere depends on how much the intercepted snow shields the ground (see Calc_NetShortwaveRadiationInz_V1 and Return_NetLongwaveRadiationInz_V1).

  • During periods with intercepted snow, water evaporates (or sublimates) from the snow interception module (EvSInz) but not from the “normal” interception module (EvI).

LEG (2020) discusses many of these points in more detail.

In our experience, lland_v4 tends to calculate thicker snowpacks on the ground than lland_v3 (the highest values of WAeS are usually larger when applying lland_v4). This counterintuitive behaviour seems to be related to disabling the “normal” interception evaporation (EvI) during snow interception periods and is still under discussion.

We will add further explanations and references as soon as we can consolidate lland_v4.

The following integration tests are identical to the ones of lland_v3, except for the additional snow interception processes.

Integration tests

Note

When new to HydPy, consider reading section How to understand integration tests? first.

daily simulation

>>> from hydpy import pub, Timegrid
>>> pub.timegrids = "1997-08-01", "1997-09-01", "1d"
>>> from hydpy.models.lland_v4 import *
>>> parameterstep("1h")
>>> from hydpy import Node, Element
>>> outlet = Node("outlet")
>>> inlet = Node("inlet")
>>> land = Element("land", inlets=inlet, outlets=outlet)
>>> land.model = model
>>> nhru(1)
>>> ft(1.0)
>>> fhru(1.0)
>>> from hydpy import IntegrationTest
>>> IntegrationTest.plotting_options.axis1 = inputs.nied
>>> IntegrationTest.plotting_options.axis2 = fluxes.qah
>>> test = IntegrationTest(land)
>>> test.dateformat = "%Y-%d-%m"

acre (summer)

>>> lnk(ACKER)
>>> kg(0.94)
>>> kt(0.0)
>>> hinz(0.2)
>>> lai.acker_aug = 3.5
>>> tgr(0.0)
>>> trefn(0.0)
>>> tsp(4.0)
>>> pwmax(1.43)
>>> wmax(309.0)
>>> fk(199.0)
>>> pwp(119.4)
>>> kapgrenz(option="0_WMax/10")
>>> kapmax(0.08)
>>> beta(0.001/24)
>>> fbeta(1.0)
>>> rbeta(False)
>>> dmax(r_dmax=0.55)
>>> dmin(r_dmin=10.0)
>>> bsf(0.3)
>>> volbmax(inf)
>>> gsbmax(1.0)
>>> gsbgrad1(inf)
>>> gsbgrad2(inf)
>>> a1(0.0)
>>> a2(0.5)
>>> tind(0.191056)
>>> eqb(35000.0)
>>> eqi1(400.0)
>>> eqi2(400.0)
>>> eqd1(200.0)
>>> eqd2(50.0)
>>> negq(True)
>>> measuringheightwindspeed(10.0)
>>> emissivity(0.95)
>>> py(119.4)
>>> cropheight.acker_aug = 0.4
>>> albedo.acker_aug = 0.24
>>> wg2z.aug = -2.9
>>> surfaceresistance.acker = 40.0
>>> p1strahl(0.5)
>>> p2strahl(1.0/35.0)
>>> p1wind(0.6)
>>> p2wind(1.0/70.0)
>>> turb0(2.0)
>>> turb1(1.6)
>>> albedo0snow(0.9)
>>> snowagingfactor(0.35)
>>> refreezeflag(True)
>>> ktschnee(inf)
>>> fvf(0.3)
>>> bsff(2.0)
>>> p1simax(8.0)
>>> p2simax(1.5)
>>> p1sirate(0.2)
>>> p2sirate(0.02)
>>> p3sirate(0.003)
>>> test.inits = (
...     (states.inzp, 0.0),
...     (states.stinz, 0.0),
...     (states.sinz, 0.0),
...     (states.esnowinz, 0.0),
...     (states.asinz, 0.0),
...     (states.wats, 0.0),
...     (states.waes, 0.0),
...     (states.esnow, 0.0),
...     (states.taus, 0.0),
...     (states.ebdn, 350.0),
...     (states.bowa, 72.0),
...     (states.qdgz1, 0.0),
...     (states.qdgz2, 0.0),
...     (states.qigz1, 0.0),
...     (states.qigz2, 0.0),
...     (states.qbgz, 0.0),
...     (states.qdga1, 0.0),
...     (states.qdga2, 0.0),
...     (states.qiga1, 0.0),
...     (states.qiga2, 0.0),
...     (states.qbga, 0.0))
>>> inputs.nied.series = (
...     13.3, 0.1, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 2.7,
...     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.3, 0.0, 0.1, 10.5, 6.5, 15.0, 9.2, 0.0,
...     0.0)
>>> inputs.teml.series = (
...     16.1, 17.3, 18.9, 17.8, 18.5, 19.9, 20.8, 20.9, 22.3, 23.0, 23.1, 23.2, 23.2,
...     21.7, 20.8, 19.5, 21.0, 21.6, 21.1, 22.4, 22.5, 19.6, 20.3, 24.1, 23.7, 21.1,
...     20.9, 20.2, 16.1, 17.0, 18.2)
>>> inputs.sunshineduration.series = (
...     6.3, 1.7, 4.5, 12.4, 13.9, 13.0, 13.8, 12.3, 13.1, 12.8, 13.1, 13.3, 12.7,
...     10.2, 9.4, 10.3, 11.1, 11.0, 8.5, 11.3, 12.4, 0.1, 6.7, 10.4, 6.5, 4.9, 6.6,
...     0.3, 0.1, 5.0, 3.8)
>>> inputs.windspeed.series = (
...     2.4, 1.6, 1.5, 2.8, 3.0, 3.5, 3.8, 3.3, 1.8, 1.9, 3.0, 2.5, 1.6, 2.7, 3.2, 1.3,
...     1.9, 2.0, 2.6, 3.6, 2.5, 2.1, 1.5, 2.2, 1.9, 2.3, 2.1, 2.6, 2.6, 2.1, 2.1)
>>> inputs.relativehumidity.series = (
...     86.2, 85.8, 82.4, 77.6, 74.9, 77.9, 73.5, 80.1, 72.9, 68.5, 68.6, 66.0, 69.0,
...     75.6, 81.4, 79.0, 75.9, 70.0, 70.3, 69.0, 62.1, 84.5, 83.6, 76.5, 76.6, 84.2,
...     85.8, 86.5, 89.6, 78.3, 78.5)
>>> inputs.atmosphericpressure.series = (
...     1007.0, 1013.0, 1016.0, 1017.0, 1018.0, 1018.0, 1019.0, 1019.0, 1019.0, 1020.0,
...     1021.0, 1022.0, 1019.0, 1015.0, 1016.0, 1019.0, 1019.0, 1018.0, 1019.0, 1019.0,
...     1017.0, 1015.0, 1015.0, 1011.0, 1008.0, 1006.0, 1005.0, 1000.0, 1004.0, 1011.0,
...     1014.0)
>>> inlet.sequences.sim.series = 0.0
>>> inputs.possiblesunshineduration.series = (
...     15.69078473, 15.62882066, 15.56613383, 15.50275437, 15.43871163, 15.37403418,
...     15.3087498, 15.24288548, 15.17646742, 15.10952106, 15.04207104, 14.97414122,
...     14.90575471, 14.83693386, 14.76770029, 14.69807488, 14.62807779, 14.5577285,
...     14.48704578, 14.41604776, 14.34475191, 14.27317506, 14.20133345, 14.12924271,
...     14.05691791, 13.98437357, 13.91162366, 13.83868165, 13.76556053, 13.69227282,
...     13.61883057)
>>> inputs.globalradiation.series = (
...     190.2514903, 127.6607822, 164.4012978, 269.0205016, 287.8486672, 274.6742631,
...     284.0478917, 262.9712633, 272.2564135, 267.0192178, 269.6265466, 270.8782909,
...     261.6971638, 227.9621155, 216.3563213, 226.6379036, 235.5285025, 232.8494284,
...     199.7134896, 233.7719021, 246.1212861, 90.58551, 171.9449932, 216.5498126,
...     166.9168296, 145.9856109, 165.5438903, 87.6933456, 84.356885, 142.3092025,
...     126.7220785)
>>> parameters.update()
>>> test.reset_inits()
>>> conditions = sequences.conditions
>>> conditions_acker_summer = test(
...     "lland_v4_acker_summer_daily",
...     axis1=(inputs.nied, fluxes.qah), axis2=states.bowa,
...     get_conditions="1997-08-03")
Click to see the table
Click to see the graph
>>> from hydpy import round_
>>> round_(model.check_waterbalance(conditions))
0.0

acre (routing)

>>> inlet.sequences.sim.series = 0.02
>>> control.negq(False)
>>> test("lland_v4_acker_routing_daily",
...      axis1=(inputs.nied, fluxes.qah), axis2=states.bowa)
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

acre (heavy rain)

>>> lnk(ACKER)
>>> inlet.sequences.sim.series = 0.0
>>> nied = inputs.nied.series.copy()
>>> inputs.nied.series = 20.0
>>> conditions_acker_heavy_rain = test(
...     "lland_v4_acker_heavy_rain_daily",
...     axis1=(inputs.nied, fluxes.qah), axis2=states.bowa,
...     get_conditions="1997-08-03")
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0
>>> inputs.nied.series = nied

water

>>> lnk(WASSER)
>>> negq(False)
>>> surfaceresistance.wasser_aug = 0.0
>>> cropheight.wasser_aug = 0.05
>>> albedo.wasser_aug = 0.7
>>> conditions_wasser = test(
...     "lland_v4_wasser_daily",
...     axis1=(fluxes.nkor, fluxes.evi, fluxes.qah),
...     get_conditions="1997-08-03")
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

water (routing)

>>> inlet.sequences.sim.series = 0.02
>>> test("lland_v4_wasser_routing_daily",
...      axis1=(fluxes.nkor, fluxes.evi, fluxes.qah))
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

water (negative runoff)

>>> negq(True)
>>> inlet.sequences.sim.series = 0.0
>>> test("lland_v4_wasser_negq_daily",
...      axis1=(fluxes.nkor, fluxes.evi, fluxes.qah))
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

lakes

>>> lnk(SEE)
>>> surfaceresistance.see_aug = 0.0
>>> cropheight.see_aug = 0.05
>>> albedo.see_aug = 0.7
>>> negq(False)
>>> test("lland_v4_see_daily",
...      axis1=(fluxes.nkor, fluxes.evi, fluxes.qah))
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

streams

>>> lnk(FLUSS)
>>> surfaceresistance.fluss_aug = 0.0
>>> cropheight.fluss_aug = 0.05
>>> albedo.fluss_aug = 0.7
>>> test("lland_v4_fluss_daily",
...      axis1=(fluxes.nkor, fluxes.evi, fluxes.qah))
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

sealed surfaces

>>> lnk(VERS)
>>> negq(True)
>>> surfaceresistance.vers_aug = 500
>>> cropheight.vers_aug = 5.0
>>> albedo.vers_aug = 0.10
>>> lai.vers_aug = 10.0
>>> test("lland_v4_vers_daily",
...      axis1=(inputs.nied, fluxes.qah, states.bowa))
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

conifers (summer)

>>> lnk(NADELW)
>>> surfaceresistance.nadelw = 56.0
>>> cropheight.nadelw = 10.0
>>> albedo.nadelw = 0.12
>>> lai.nadelw = 11.0
>>> conditions_nadelw_summer = test(
...     "lland_v4_nadelw_summer_daily",
...     axis1=(inputs.nied, fluxes.qah, states.bowa),
...     get_conditions="1997-08-03")
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

acre (winter)

>>> pub.timegrids = "2010-12-01", "2011-01-01", "1d"
>>> lnk(ACKER)
>>> lai.acker_dec = 0.3
>>> cropheight.acker_dec = 0.05
>>> albedo.acker_dec = 0.1
>>> wg2z.dec = 8.583333333333
>>> test = IntegrationTest(land)
>>> test.dateformat = "%Y-%d-%m"
>>> test.inits = (
...     (states.inzp, 0.0),
...     (states.stinz, 0.0),
...     (states.sinz, 0.0),
...     (states.esnowinz, 0.0),
...     (states.asinz, 0.0),
...     (states.wats, 0.0),
...     (states.waes, 0.0),
...     (states.esnow, 0.0),
...     (states.taus, 0.0),
...     (states.ebdn, 0.0),
...     (states.bowa, 72.0),
...     (states.qdgz1, 0.0),
...     (states.qdgz2, 0.0),
...     (states.qigz1, 0.0),
...     (states.qigz2, 0.0),
...     (states.qbgz, 0.0),
...     (states.qdga1, 0.0),
...     (states.qdga2, 0.0),
...     (states.qiga1, 0.0),
...     (states.qiga2, 0.0),
...     (states.qbga, 0.0))
>>> inputs.nied.series = (
...     0.0, 11.1, 0.4, 1.2, 6.4, 0.0, 0.0, 0.0, 0.7, 3.3, 9.4, 0.2, 2.9, 0.0, 0.0,
...     6.7, 0.0, 0.1, 0.0, 0.2, 0.2, 2.4, 7.0, 0.2, 0.0, 1.2, 0.9, 0.0, 0.0, 0.2, 0.9)
>>> inputs.teml.series = (
...     -5.8, -3.0, -5.6, -3.8, 0.2, -1.1, -2.9, -2.9, -2.1, -3.1, 5.1, 0.2, -3.5,
...     -3.9, -6.3, -3.5, -7.3, -5.8, -7.9, -5.7, -5.6, -4.8, -1.1, -2.9, -9.1, -8.6,
...     -5.3, -7.7, -9.2, -7.4, 1.7)
>>> inputs.sunshineduration.series = (
...     3.5, 0.0, 0.1, 3.7, 0.0, 0.1, 0.0, 0.0, 4.4, 0.1, 0.2, 0.7, 0.0, 1.2, 3.0, 0.0,
...     0.0, 0.0, 0.0, 0.2, 0.8, 0.0, 0.0, 0.0, 3.2, 4.3, 0.0, 3.4, 0.0, 0.0, 4.0)
>>> inputs.windspeed.series = (
...     6.9, 5.2, 2.0, 4.3, 4.0, 2.4, 1.9, 1.8, 2.7, 3.0, 7.4, 5.7, 2.2, 3.1, 2.8, 3.7,
...     0.9, 1.3, 1.9, 2.4, 2.3, 4.6, 8.6, 7.6, 3.8, 1.5, 1.3, 3.0, 2.7, 1.4, 4.2)
>>> inputs.relativehumidity.series = (
...     70.3, 85.0, 95.9, 90.6, 96.5, 99.0, 99.2, 99.1, 96.9, 95.0, 90.6, 78.7, 90.5,
...     88.1, 92.8, 98.1, 96.6, 97.7, 95.8, 97.5, 95.0, 93.8, 94.9, 85.4, 87.2, 92.7,
...     97.8, 95.4, 94.9, 96.0, 96.5)
>>> inputs.atmosphericpressure.series = (
...     1015.0, 1007.0, 1005.0, 1008.0, 996.0, 998.0, 1004.0, 1006.0, 1009.0, 1018.0,
...     1004.0, 1012.0, 1020.0, 1025.0, 1023.0, 1000.0, 991.0, 997.0, 997.0, 997.0,
...     1004.0, 1007.0, 1004.0, 1008.0, 1018.0, 1019.0, 1017.0, 1022.0, 1024.0, 1021.0,
...     1016.0)
>>> inlet.sequences.sim.series = 0.0
>>> inputs.possiblesunshineduration.series = (
...     7.64102946, 7.6096444, 7.57982377, 7.55159603, 7.52498861, 7.50002776,
...     7.47673851, 7.45514453, 7.43526809, 7.41712991, 7.40074913, 7.38614323,
...     7.3733279, 7.36231706, 7.35312273, 7.34575502, 7.34022207, 7.33653002,
...     7.33468296, 7.33468296, 7.33653002, 7.34022207, 7.34575502, 7.35312273,
...     7.36231706, 7.3733279, 7.38614323, 7.40074913, 7.41712991, 7.43526809,
...     7.45514453)
>>> inputs.globalradiation.series = (
...     31.9427981, 9.8738984, 16.6834998, 31.8074275, 9.5325105, 16.1414844,
...     9.3414287, 9.2567644, 33.405815, 15.5911584, 15.8915442, 17.8235189, 8.941324,
...     19.6680679, 26.8315815, 8.8377384, 8.817416, 8.8041854, 8.7980439, 15.4647459,
...     17.8795412, 8.8221612, 8.8443961, 8.8737425, 27.7596417, 32.3287553, 9.0045823,
...     28.9823209, 9.1276454, 9.1999895, 32.0622345)
>>> conditions_acker_winter = test(
...     "lland_v4_acker_winter_daily",
...     axis1=(inputs.nied, fluxes.wada), axis2=(states.waes, states.wats),
...     get_conditions="2010-12-10")
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

conifers (winter)

>>> lnk(NADELW)
>>> conditions_nadelw_winter = test(
...     "lland_v4_nadelw_winter_daily",
...     axis1=(inputs.nied, fluxes.wada), axis2=(states.waes, states.wats),
...     get_conditions="2010-12-10")
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0

acre (snow surface temperature)

>>> lnk(ACKER)
>>> ktschnee(5.0)
>>> conditions_acker_winter_ktschnee = test(
...     "lland_v4_acker_winter_ktschnee_daily",
...     axis1=(inputs.nied, fluxes.wada), axis2=(states.waes, states.wats),
...     get_conditions="2010-12-10")
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions))
0.0
>>> ktschnee(inf)

hourly simulation

>>> pub.timegrids = "1997-08-03", "1997-08-06", "1h"
>>> for parameter in control:
...     if parameter.TIME == True:
...         parameter.value = parameter.value/24
...     if parameter.TIME == False:
...         parameter.value = parameter.value*24
>>> for parameter in fixed:
...     parameter.restore()
>>> test = IntegrationTest(land)

acre (summer)

>>> inputs.nied.series = 0.0
>>> inputs.teml.series = (
...     16.9, 16.6, 16.4, 16.3, 16.0, 15.9, 16.0, 16.6, 17.4, 19.0, 20.3, 21.4, 21.3,
...     21.8, 22.9, 22.7, 22.5, 21.9, 21.4, 20.7, 19.4, 17.8, 17.0, 16.4, 15.9, 15.4,
...     15.2, 14.9, 14.3, 14.1, 14.3, 15.4, 16.8, 18.2, 19.5, 20.3, 21.0, 21.8, 21.9,
...     21.8, 22.2, 21.8, 20.9, 19.7, 17.9, 15.8, 14.8, 14.1, 13.4, 12.8, 12.3, 12.0,
...     11.7, 11.6, 12.6, 14.8, 17.1, 19.4, 20.6, 21.4, 22.5, 23.1, 23.4, 23.8, 24.0,
...     24.0, 23.7, 22.8, 21.3, 19.3, 18.3, 17.4)
>>> inputs.sunshineduration.series = (
...     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.5, 0.7, 0.8, 0.5, 0.4, 0.5,
...     0.5, 0.3, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.9,
...     1.0, 1.0, 0.9, 0.8, 0.9, 0.8, 0.9, 0.9, 0.9, 1.0, 1.0, 1.0, 0.3, 0.0, 0.0, 0.0,
...     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.9, 1.0, 0.9, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
...     1.0, 1.0, 1.0, 1.0, 0.5, 0.0, 0.0, 0.0)
>>> inputs.windspeed.series = (
...     0.8, 0.8, 0.8, 0.8, 0.8, 0.6, 0.9, 0.9, 0.9, 1.3, 1.5, 1.2, 1.3, 1.5, 1.9, 1.9,
...     2.3, 2.4, 2.5, 2.5, 2.2, 1.7, 1.7, 2.3, 2.3, 2.2, 2.3, 2.0, 2.3, 2.5, 2.4, 2.5,
...     2.5, 2.9, 3.1, 3.3, 3.3, 3.2, 2.5, 2.9, 3.6, 4.2, 4.2, 3.6, 3.2, 2.2, 2.2, 2.1,
...     1.8, 1.8, 1.6, 1.2, 1.9, 1.3, 1.6, 1.9, 3.2, 4.0, 4.6, 4.1, 4.1, 4.4, 4.6, 4.5,
...     4.7, 4.5, 4.1, 3.8, 2.5, 1.9, 2.2, 2.7)
>>> inputs.relativehumidity.series = (
...     95.1, 94.9, 95.9, 96.7, 97.2, 97.5, 97.7, 97.4, 96.8, 86.1, 76.8, 71.8, 67.5,
...     66.1, 63.4, 62.4, 61.1, 62.1, 67.0, 74.5, 81.2, 86.9, 90.1, 90.9, 88.0, 89.2,
...     88.8, 89.7, 93.0, 93.6, 94.6, 93.3, 86.9, 78.9, 75.8, 73.4, 68.3, 61.3, 60.6,
...     58.8, 57.2, 57.2, 59.9, 66.1, 71.7, 80.6, 85.9, 89.3, 91.4, 93.1, 94.6, 95.6,
...     96.2, 95.7, 95.1, 96.3, 89.9, 79.2, 73.4, 67.3, 62.2, 59.6, 55.4, 52.1, 49.5,
...     48.1, 49.4, 57.0, 65.9, 73.0, 76.7, 81.8)
>>> inputs.atmosphericpressure.series = (
...     1015.0, 1015.0, 1015.0, 1015.0, 1015.0, 1015.0, 1015.0, 1015.0, 1016.0, 1016.0,
...     1016.0, 1016.0, 1016.0, 1016.0, 1016.0, 1016.0, 1016.0, 1016.0, 1016.0, 1016.0,
...     1016.0, 1016.0, 1017.0, 1017.0, 1017.0, 1016.0, 1016.0, 1016.0, 1016.0, 1017.0,
...     1017.0, 1017.0, 1017.0, 1017.0, 1017.0, 1018.0, 1018.0, 1018.0, 1018.0, 1017.0,
...     1017.0, 1017.0, 1017.0, 1017.0, 1017.0, 1018.0, 1018.0, 1018.0, 1018.0, 1018.0,
...     1018.0, 1018.0, 1018.0, 1018.0, 1018.0, 1019.0, 1019.0, 1019.0, 1019.0, 1019.0,
...     1019.0, 1019.0, 1019.0, 1019.0, 1018.0, 1018.0, 1018.0, 1018.0, 1018.0, 1018.0,
...     1018.0, 1018.0)
>>> inlet.sequences.sim.series = 0.0
>>> inputs.possiblesunshineduration.series = (
...     0.0, 0.0, 0.0, 0.0, 0.42973358, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
...     1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.13640025, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
...     0.39804385, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
...     1.0, 1.0, 0.10471052, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.36602248, 1.0, 1.0,
...     1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.07268915,
...     0.0, 0.0, 0.0)
>>> inputs.globalradiation.series = (
...     0.0, 0.0, 0.0, 0.0, 1.9436861, 21.9324417, 57.2561861, 109.3328444,
...     170.9491528, 311.762625, 501.5833, 615.0187278, 626.544325, 496.1334167,
...     419.5209944, 387.8873528, 278.4968722, 137.1386083, 51.0807139, 13.6328167,
...     0.1859444, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5905167, 19.9509028,
...     62.985775, 285.7763889, 475.2252472, 614.0067194, 643.8065083, 600.2629806,
...     620.5141389, 599.4413861, 613.5512222, 517.1070472, 377.8366167, 252.2046389,
...     128.5767139, 42.0725861, 0.8128972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
...     1.4823472, 21.1355667, 125.88345, 305.9549444, 511.104575, 629.5192389,
...     765.8165889, 767.1458417, 736.2638528, 768.0061833, 735.9293694, 620.3749528,
...     450.0952639, 273.6141417, 133.3681056, 40.3265028, 0.8671222, 0.0, 0.0, 0.0)
>>> test.inits = (
...     (logs.loggedsunshineduration,
...      [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.1, 0.2, 0.1, 0.2, 0.2, 0.3, 0.0,
...       0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]),
...     (logs.loggedpossiblesunshineduration,
...      [0.0, 0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
...       1.0, 1.0, 1.0, 1.0, 1.0, 0.2, 0.0, 0.0, 0.0]),
...     (logs.loggedglobalradiation,
...      [0.0, 0.0, 0.0, 0.0, 0.0, 27.8, 55.6, 138.9, 222.2, 305.6, 333.3, 388.9,
...       527.8, 444.4, 250.0, 222.2, 166.7, 111.1, 55.6, 27.8, 0.0, 0.0, 0.0, 0.0]),
...     (logs.loggedteml,
...      [13.2, 13.2, 13.1, 12.6, 12.7, 13.0, 13.5, 14.8, 16.2, 17.7, 18.8, 19.4, 20.4,
...       21.0, 21.5, 21.2, 20.4, 20.7, 20.2, 19.7, 19.0, 18.0, 17.5, 17.1]),
...     (logs.loggedrelativehumidity,
...      [95.1, 94.5, 94.8, 96.4, 96.6, 97.1, 97.1, 96.7, 92.2, 88.5, 81.1, 76.5, 75.1,
...       70.8, 68.9, 69.2, 75.0, 74.0, 77.4, 81.4, 85.3, 90.1, 92.3, 93.8]),
...     (logs.loggedwindspeed2m,
...      [0.8, 1.0, 1.2, 1.3, 0.9, 1.1, 1.3, 1.3, 1.9, 2.2, 1.8, 2.3, 2.4, 2.5, 2.4,
...       2.5, 2.1, 2.2, 1.7, 1.7, 1.3, 1.3, 0.7, 0.8]))
>>> for key, value in locals().copy().items():
...     if key.startswith("conditions_") and "states" in value:
...         for name in ("esnowinz", "esnow", "ebdn"):
...             value["states"][name] *= 24
>>> test("lland_v4_acker_summer_hourly",
...      axis1=(fluxes.evb, fluxes.qah), axis2=states.bowa,
...      use_conditions=conditions_acker_summer)
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions_acker_summer))
0.0

acre (heavy rain)

>>> inputs.nied.series = 20.0 / 24.0
>>> control.negq(False)
>>> test("lland_v4_acker_heavy_rain_hourly",
...      axis1=(inputs.nied, fluxes.qah), axis2=states.bowa,
...      use_conditions=conditions_acker_heavy_rain)
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions_acker_heavy_rain))
0.0

water

>>> lnk(WASSER)
>>> inputs.nied.series = 0.05
>>> test("lland_v4_water_hourly",
...      axis1=(fluxes.nkor, fluxes.evpo, fluxes.evi, fluxes.qah),
...      use_conditions=conditions_wasser)
Click to see the table
Click to see the graph
>>> inputs.nied.series = 0.0
>>> round_(model.check_waterbalance(conditions_wasser))
0.0

conifers (summer)

>>> lnk(NADELW)
>>> test("lland_v4_nadelw_summer_hourly",
...      axis1=(fluxes.evi, fluxes.evb), axis2=states.inzp,
...      use_conditions=conditions_nadelw_summer)
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions_nadelw_summer))
0.0

acre (winter)

>>> pub.timegrids = "2010-12-10", "2010-12-13", "1h"
>>> inputs.nied.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.0,
...     0.1, 0.0, 0.3, 0.2, 0.4, 0.7, 0.5, 1.0, 2.0, 2.1, 1.8, 1.3, 0.5, 0.2, 0.5, 0.2,
...     0.1, 0.3, 0.1, 0.1, 0.0, 0.1, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1,
...     0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 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.teml.series = (
...     -3.7, -4.8, -5.6, -6.2, -7.3, -8.3, -8.6, -8.5, -9.5, -9.2, -6.9, -4.0, -2.8,
...     -1.4, -0.4, 0.5, 1.0, 1.1, 1.0, 1.4, 1.6, 2.0, 2.4, 2.5, 2.7, 3.2, 3.9, 4.4,
...     4.8, 4.8, 5.1, 5.1, 5.4, 5.3, 5.5, 6.1, 6.4, 6.4, 6.5, 6.3, 5.9, 5.5, 5.1, 4.8,
...     4.9, 4.9, 4.7, 3.8, 3.9, 3.7, 3.5, 3.3, 3.3, 3.0, 1.9, 1.2, 0.8, 0.8, 0.5, 0.3,
...     -0.1, -0.4, -0.6, -0.8, -1.3, -1.6, -2.0, -2.1, -2.2, -2.6, -3.1, -3.9)
>>> inputs.sunshineduration.series = (
...     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 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.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, 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.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.2,
...     0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
>>> inputs.windspeed.series = (
...     3.4, 2.9, 2.5, 3.0, 2.5, 2.3, 2.1, 1.4, 1.1, 1.0, 1.4, 1.3, 1.3, 1.4, 2.3, 2.8,
...     3.1, 3.5, 4.4, 3.8, 5.7, 5.6, 5.8, 6.2, 5.6, 5.2, 5.7, 6.6, 7.0, 7.3, 7.2, 7.6,
...     7.3, 7.1, 7.1, 8.9, 9.5, 7.9, 9.6, 9.1, 8.7, 8.9, 7.9, 7.1, 6.4, 7.2, 7.0, 6.8,
...     6.4, 6.3, 5.7, 5.2, 4.6, 4.9, 6.3, 5.8, 6.1, 5.9, 6.4, 6.8, 7.0, 6.3, 7.3, 7.5,
...     7.0, 6.0, 4.8, 4.2, 4.9, 4.0, 3.4, 3.4)
>>> inputs.relativehumidity.series = (
...     87.5, 90.7, 89.7, 91.3, 94.2, 93.2, 96.5, 95.9, 96.8, 94.3, 96.7, 97.4, 93.9,
...     93.4, 93.3, 94.1, 94.6, 94.4, 96.9, 98.3, 98.7, 99.6, 99.4, 99.2, 99.2, 99.6,
...     99.8, 99.8, 99.0, 97.6, 97.4, 96.3, 95.2, 96.3, 95.5, 91.6, 90.0, 85.7, 82.3,
...     82.5, 82.2, 76.5, 81.7, 83.4, 82.8, 85.8, 87.6, 85.6, 85.3, 86.2, 89.3, 91.4,
...     90.9, 89.2, 85.6, 86.3, 91.2, 87.5, 84.5, 76.7, 74.8, 69.7, 66.9, 64.4, 65.4,
...     67.6, 70.2, 70.4, 69.5, 71.6, 74.5, 80.2)
>>> inputs.atmosphericpressure.series = (
...     1017.0, 1018.0, 1018.0, 1019.0, 1020.0, 1020.0, 1021.0, 1021.0, 1022.0, 1022.0,
...     1022.0, 1022.0, 1022.0, 1021.0, 1020.0, 1020.0, 1019.0, 1018.0, 1016.0, 1015.0,
...     1014.0, 1013.0, 1011.0, 1010.0, 1008.0, 1007.0, 1006.0, 1005.0, 1005.0, 1004.0,
...     1004.0, 1004.0, 1003.0, 1003.0, 1003.0, 1002.0, 1002.0, 1002.0, 1002.0, 1003.0,
...     1003.0, 1003.0, 1003.0, 1003.0, 1003.0, 1003.0, 1003.0, 1002.0, 1002.0, 1002.0,
...     1002.0, 1003.0, 1004.0, 1005.0, 1006.0, 1008.0, 1009.0, 1010.0, 1011.0, 1012.0,
...     1013.0, 1014.0, 1015.0, 1015.0, 1017.0, 1017.0, 1018.0, 1019.0, 1019.0, 1020.0,
...     1020.0, 1020.0)
>>> inputs.possiblesunshineduration.series = (
...     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.35523162, 1.0, 1.0, 1.0, 1.0, 1.0,
...     1.0, 1.0, 0.06189829, 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.34704123, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0537079,
...     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.33973828, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.04640495, 0.0, 0.0, 0.0, 0.0,
...     0.0, 0.0, 0.0)
>>> inputs.globalradiation.series = (
...     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.1076111, 18.6632028, 56.2679083,
...     107.1682361, 91.4733333, 80.4755361, 43.1205917, 10.3200917, 0.0281028, 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.9007333, 17.2675111, 52.6176111, 80.1356333, 80.2761167, 75.8354028,
...     42.2279111, 12.6139194, 0.0219111, 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.8941444, 17.7125389, 54.3025861,
...     81.5041472, 81.6652944, 77.0789583, 60.2540417, 14.8373, 0.1688556, 0.0, 0.0,
...     0.0, 0.0, 0.0, 0.0, 0.0)
>>> test.inits = (
...     (logs.loggedsunshineduration,
...      [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04, 0.25, 0.59, 0.91,
...       0.97, 1.0, 0.65, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]),
...     (logs.loggedpossiblesunshineduration,
...      [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
...       1.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]),
...     (logs.loggedglobalradiation,
...      [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 27.8, 55.6, 111.1, 166.7, 138.9,
...       55.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]),
...     (logs.loggedteml,
...      [-2.8, -2.6, -2.2, -1.8, -1.8, -2.4, -1.5, -1.4, -0.8, -0.8, -0.9, 0.9, -0.8,
...       -1.0, -1.2, -1.8, -2.8, -3.8, -4.3, -4, -3.9, -1.6, -1.6, 2.6]),
...     (logs.loggedrelativehumidity,
...      [99.4, 99.0, 99.6, 99.6, 99.3, 99.3, 99.8, 99.7, 100.0, 99.6, 99.3, 98.9,
...       96.6, 93.0, 91.4, 92.0, 94.5, 96.5, 98.2, 96.9, 98.0, 95.0, 91.8, 88.5]),
...     (logs.loggedwindspeed2m,
...      [2.2, 2.0, 2.5, 2.6, 2.3, 1.7, 2.8, 1.9, 2.6, 2.9, 3.5, 3.4, 3.5, 3.0, 3.9,
...       3.6, 2.2, 2.4, 2.5, 1.5, 2.5, 3.0, 3.2, 3.1]))
>>> lnk(ACKER)
>>> test("lland_v4_acker_winter_hourly",
...      axis1=(inputs.nied, fluxes.wada), axis2=(states.waes, states.wats),
...      use_conditions=conditions_acker_winter)
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions_acker_winter))
0.0

conifers (winter)

>>> lnk(NADELW)
>>> test("lland_v4_nadelw_winter_hourly",
...      axis1=(inputs.nied, fluxes.wada), axis2=(states.waes, states.wats),
...      use_conditions=conditions_nadelw_winter)
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions_nadelw_winter))
0.0

acre (snow surface temperature)

>>> lnk(ACKER)
>>> ktschnee(5.0)
>>> test("lland_v4_acker_winter_ktschnee_hourly",
...      axis1=(inputs.nied, fluxes.wada),
...      axis2=(states.waes, states.wats),
...      use_conditions=conditions_acker_winter_ktschnee)
Click to see the table
Click to see the graph
>>> round_(model.check_waterbalance(conditions_acker_winter_ktschnee))
0.0
class hydpy.models.lland_v4.Model[source]

Bases: AdHocModel

Penman-Monteith and Knauf with snow interception version of HydPy-L-Land (lland_v4).

The following “inlet update methods” are called in the given sequence at the beginning of each simulation step:
  • Pick_QZ_V1 Query the current inflow from all inlet nodes.

The following “run methods” are called in the given sequence during each simulation step:
The following “outlet update methods” are called in the given sequence at the end of each simulation step:
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:
The following “submodels” might be called by one or more of the implemented methods or are meant to be directly called by the user:
  • PegasusESnowInz Pegasus iterator for finding the correct energy content of the intercepted snow.

  • PegasusESnow Pegasus iterator for finding the correct snow energy content.

  • PegasusTempSSurface Pegasus iterator for finding the correct snow surface temperature.

idx_hru

The hydrological response unit index.

check_waterbalance(initial_conditions: Dict[str, Dict[str, ArrayFloat]]) float[source]

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

Method check_waterbalance() calculates the balance error as follows:

\[\sum_{t=t0}^{t1} \Bigg( NKor_t + QZH_t - \bigg( \sum_{k=1}^{nhru} fhru^k \cdot \Big( EvI_t^k + EvSInz_t^k + EvS_t^k + EvB_t^k \Big) \bigg) - QAH_t \Bigg) + \sum_{k=1}^{nhru} fhru^k \cdot \bigg( \Big( Inzp_{t0}^k - Inzp_{t1}^k \Big) + \Big( SInz_{t0}^k - SInz_{t1}^k \Big) + \Big( WAeS_{t0}^{k} - WAeS_{t1}^{k} \Big) + \Big( BoWa_{t0}^{k} - BoWa_{t1}^{k} \Big) \bigg) - \sum_{t=t0}^{t1} \bigg( \Big( QDGZ1_t - QDGA1_t \Big) + \Big( QDGZ2_t - QDGA2_t \Big) + \Big( QIGZ1_t - QIGA1_t \Big) + \Big( QIGZ2_t - QIGA2_t \Big) + \Big( QBGZ_t - QBGA_t \Big) \bigg)\]

The returned error should usually be in scale with numerical precision so that it does not affect the simulation results in any relevant manner. The only exception we are aware of is the “generation” of additional water when the base flow storage cannot meet the water demand required for the calculated capillary rise (see acre (capillary rise, water balance error)).

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

class hydpy.models.lland_v4.Masks[source]

Bases: Masks

Masks applicable to lland_v4.

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

Bases: AideSequences

Aide sequences of model lland_v4.

The following classes are selected:
  • SNRatio() Ratio of frozen precipitation to total precipitation [-].

  • RLAtm() Atmosphärische Gegenstrahlung (longwave radiation emitted from the atmosphere) [W/m²].

  • TempS() Temperatur der Schneedecke (temperature of the snow layer) [°C].

  • TempSInz() Temperatur des interzepierten Schnees (temperature of the intercepted snow) [°C].

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

Bases: SubParameters

Control parameters of model lland_v4.

The following classes are selected:
  • FT() Teileinzugsgebietsfläche (subbasin area) [km²].

  • NHRU() Anzahl der Hydrotope (number of hydrological response units) [-].

  • Lnk() Landnutzungsklasse (land use class) [-].

  • FHRU() Flächenanteile der Hydrotope (area percentages of the respective HRUs) [-].

  • KG() Niederschlagskorrekturfaktor (adjustment factor for precipitation) [-].

  • KT() Temperaturkorrektursummand (adjustment summand for air temperature) [°C].

  • P1Strahl() Konstante der Globalstrahlungsreduktion für Wald (constant for reducing the global radiation in forests) [-].

  • P2Strahl() Faktor der Globalstrahlungsreduktion für Wald (factor for reducing the global radiation in forests) [-].

  • Albedo() Albedo [-].

  • Albedo0Snow() Albedo von Neuschnee (albedo of fresh snow) [-].

  • SnowAgingFactor() Wichtungsfaktor für die Sensitivität der Albedo für die Alterung des Schnees (weighting factor of albedo sensitivity for snow aging) [-].

  • Turb0() Parameter des Übergangskoeffizienten des turbulenten Wärmestroms (parameter of transition coefficient for turbulent heat flux) [W/m²/K].

  • Turb1() Parameter des Übergangskoeffizienten des turbulenten Wärmestroms (parameter of transition coefficient for turbulent heat flux) [J/m³/K].

  • Emissivity() Emissivität der Oberfläche (emissivity) [-]

  • MeasuringHeightWindSpeed() The height above ground of the wind speed measurements [m].

  • P1Wind() Konstante der Windgeschwindigkeitsreduktion für Wald (constant for reducing the wind speed in forests) [-].

  • P2Wind() Faktor der Windgeschwindigkeitsreduktion für Wald (factor for reducing the wind speed in forests) [-].

  • LAI() Blattflächenindex (leaf area index) [-].

  • HInz() Interzeptionskapazität bezogen auf die Blattoberfläche (interception capacity normalized to the leaf surface area) [mm].

  • P1SIMax() Konstante zur Berechnung der maximalen Schneeinterzeptionskapazität basierend auf dem Blattflächenindex (constant for calculating the maximum snow interception capacity based on the leaf area index) [mm].

  • P2SIMax() Faktor zur Berechnung der maximalen Schneeinterzeptionskapazität basierend auf dem Blattflächenindex (factor for calculating the maximum snow interception capacity based on the leaf area index) [mm].

  • P1SIRate() Konstante zur Berechnung des Verhältnisses von Schneeinerzeptionsrate und Niederschlagsintensität basierend auf dem Blattflächenindex (constant for calculating the ratio of the snow interception rate and the precipitation intensity based on the leaf area index) [-].

  • P2SIRate() Faktor zur Berechnung des Verhältnisses von Schneeinerzeptionsrate und Niederschlagsintensität basierend auf dem Blattflächenindex (factor for calculating the ratio of the snow interception rate and precipitation intensity based on the leaf area index) [-].

  • P3SIRate() Faktor zur Berechnung des Verhältnisses von Schneeinerzeptionsrate und Niederschlagsintensität basierend auf der bereits interzipierten Schneemenge (factor for calculating the ratio of the snow interception rate and precipitation intensity based on the amount of already intercepted snow) [1/mm].

  • TRefN() Niederschlagstemperaturgrenzwert des zur Berechnung des Wärmeeintrags durch Regen (precipitation temperature threshold to calculate heat flux caused by liquid precipitation on snow) [°C].

  • TGr() Temperaturgrenzwert flüssiger/fester Niederschlag (threshold temperature liquid/frozen precipitation) [°C].

  • TSp() Temperaturspanne flüssiger/fester Niederschlag (temperature range with mixed precipitation) [°C].

  • PWMax() Maximalverhältnis Gesamt- zu Trockenschnee (maximum ratio of the total and the frozen water equivalent stored in the snow cover) [-].

  • RefreezeFlag() Flag um wiedergefrieren zu aktivieren (flag to activate refreezing) [-].

  • KTSchnee() Effektive Wärmeleitfähigkeit der obersten Schneeschicht (effective thermal conductivity of the top snow layer) [W/m²/K].

  • WG2Z() Bodenwärmestrom in der Tiefe 2z (soil heat flux at depth 2z) [W/m²].

  • CropHeight() Crop height [m].

  • SurfaceResistance() Surface Resistance [s/m].

  • WMax() Maximaler Bodenwasserspeicher (maximum soil water storage) [mm].

  • FK() Feldkapazität / Mindestbodenfeuchte für die Interflowentstehung (field capacity / threshold value of soil moisture for interflow generation) [mm].

  • PWP() Permanenter Welkepunkt / Mindestbodenfeuchte für die Basisabflussentstehung (permanent wilting point threshold value of soil moisture for base flow generation) [mm].

  • PY() Permanenter Welkepunkt / Schwellenwert für den Anteil des für Pflanzen gebundenen Bodenwassers (permanent wilting point) [mm].

  • BSf() Bodenfeuchte-Sättigungsfläche-Parameter (shape parameter for the relation between the avarage soil moisture and the relative saturated area of a subbasin) [-].

  • FVF() Frostversiegelungsfaktor zur Ermittelung des Frostversiegelungsgrades (frost sealing factor for determination of the degree of frost sealing FVG) [-].

  • BSFF() Exponent zur Ermittelung des Frostversieglungsgrades (frost sealing exponent for determination of degree of frost sealing FVG) [-].

  • DMin() Drainageindex des mittleren Bodenspeichers (flux rate for releasing interflow from the middle soil compartment) [mm/T].

  • DMax() Drainageindex des oberen Bodenspeichers (additional flux rate for releasing interflow from the upper soil compartment) [mm/T].

  • Beta() Drainageindex des tiefen Bodenspeichers (storage coefficient for releasing base flow from the lower soil compartment) [1/T].

  • FBeta() Faktor zur Erhöhung der Perkolation im Grobporenbereich (factor for increasing percolation under wet conditions) [-].

  • KapMax() Maximale kapillare Aufstiegsrate (maximum capillary rise) [mm/T].

  • KapGrenz() Grenzwerte für den kapillaren Aufstieg (threshold values related to the capillary rise) [mm].

  • RBeta() Boolscher Parameter der steuert, ob the Perkolation unterhalb der Feldkapazität auf Null reduziert wird (flag to indicate if seepage is reduced to zero below field capacity) [-].

  • VolBMax() Maximaler Inhalt des Gebietsspeichers für Basisabfluss (maximum value of the storage compartment for base flow) [mm].

  • GSBMax() Faktor zur Anpassung von VolBMax (factor for adjusting VolBMax) [-].

  • GSBGrad1() Höchste Volumenzunahme des Gebietsspeichers für Basisabfluss ohne Begrenzung des Zuflusses (highest possible storage increase of the compartment for base flow without inflow reductions) [mm/T].

  • GSBGrad2() Volumenzunahme des Gebietsspeichers für Basisabfluss, oberhalb der jeglicher Zufluss ausgeschlossen ist (highest possible storage increase of the compartment for base flow) [mm/T].

  • A1() Parameter für die kontinuierliche Aufteilung der Direktabflusskomponenten (threshold value for the continuous seperation of direct runoff in a slow and a fast component) [mm/T]

  • A2() Parameter für die diskontinuierliche Aufteilung der Direktabflusskomponenten (threshold value for the discontinuous seperation of direct runoff in a slow and a fast component) [mm/T]

  • TInd() Fließzeitindex (factor related to the time of concentration) [T].

  • EQB() Kalibrierfaktor für die Basisabflusskonzentration (factor for adjusting the concentration time of baseflow). [-].

  • EQI1() Kalibrierfaktor für die “untere” Zwischenabflusskonzentration (factor for adjusting the concentration time of the first interflow component) [-].

  • EQI2() Kalibrierfaktor für die “obere” Zwischenabflusskonzentration (factor for adjusting the concentration time of the second interflow component) [-].

  • EQD1() Kalibrierfaktor für die langsamere Direktabflusskonzentration (factor for adjusting the concentration time of the slower component of direct runoff). [-].

  • EQD2() Kalibrierfaktor für die schnellere Direktabflusskonzentration (factor for adjusting the concentration time of the faster component of direct runoff). [-].

  • NegQ() Option: sind negative Abflüsse erlaubt (flag that indicated wether negative discharge values are allowed or not) [-].

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

Bases: SubParameters

Derived parameters of model lland_v4.

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

  • Seconds() The length of the actual simulation step size in seconds [s].

  • Hours() The length of the actual simulation step size in hours [h].

  • Days() The length of the actual simulation step size in days [d].

  • NmbLogEntries() The number of log entries required for a memory duration of 24 hours [-].

  • AbsFHRU() Flächen der Hydrotope (areas of the respective HRUs) [km²].

  • KInz() Interzeptionskapazität bezogen auf die Bodenoberfläche (interception capacity normalized to the soil surface area) [mm].

  • HeatOfFusion() Heat which is necessary to melt the frozen soil water content [WT].

  • Fr() Reduktionsfaktor für Strahlung according to LEG (2020) (basierend auf LUWG (2015)) (reduction factor for short- and long wave radiation) LEG (2020) (based on LUWG (2015)) [-].

  • NFk() Nutzbare Feldkapazität (usable field capacity) [mm].

  • KB() Konzentrationszeit des Basisabflusses (concentration time of baseflow) [T].

  • KI1() Konzentrationszeit des “unteren” Zwischenabflusses (concentration time of the first interflow component) [T].

  • KI2() Konzentrationszeit des “oberen” Zwischenabflusses” (concentration time of the second interflow component) [T].

  • KD1() Konzentrationszeit des “langsamen” Direktabflusses (concentration time of the slower component of direct runoff) [T].

  • KD2() Konzentrationszeit des “schnellen” Direktabflusses (concentration time of the faster component of direct runoff) [T].

  • QBGAMax() Maximaler Abfluss aus dem Basisabfluss-Gebietsspeicher (maximum outflow from the storage compartment for base flow) [mm/T].

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

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

Bases: SubParameters

Fixed parameters of model lland_v4.

The following classes are selected:
  • CPWasser() Spezifische Wärmekapazität von Wasser (specific heat capacity of water) [WT/kg/K].

  • CPEis() Spezifische Wärmekapazität von Eis bei 0 °C (specific heat capacity of ice at a temperature of 0 °C) [WT/kg/K].

  • RSchmelz() Spezifische Schmelzwärme von Wasser (specific melt heat of water) [WT/kg].

  • Z() Halbe Mächtigkeit der in der Temperaturmodellierung betrachteten Bodensäule (the half thickness of the surface soil layer relevant for modelling soil temperature) [m].

  • BoWa2Z() Bodenwassergehalt der Bodenschicht bis zu einer Tiefe 2z (soil water content of the soil layer down two a depth of 2z) [mm].

  • LambdaG() Wärmeleitfähigkeit des Bodens (thermal conductivity of the top soil layer) [W/m/K].

  • Sigma() Stefan-Boltzmann-Konstante (Stefan-Boltzmann constant) [W/m²/K].

  • RDryAir() Gaskonstante für trockene Luft (gas constant for dry air) [J/kg/K].

  • RWaterVapour() Gaskonstante für Wasserdampf (gas constant for water vapour) [J/kg/K].

  • LW() Latente Verdunstungswärme bei 15°C (heat of condensation at at temperature of 15°C) [WT/kg)].

  • LWE() Mittlere latente Verdunstungswärme für Wasser und Eis (average heat of condensation for water and ice) [WT/kg].

  • CPLuft() Spezifische Wärmekapazität Luft (heat of condensation for a water temperature of 15°C) [WT/kg/K].

  • Psy() Psychrometerkonstante bei Normaldruck (psychrometric constant at normal pressure) [hPa/K].

  • PsyInv() Kehrwert der Psychrometerkonstante über Schnee und Eis bei 0°C (inverse psychrometric constant for ice and snow at 0°C) [K/hPa].

  • Z0() Rauhigkeitslänge für Wiese (roughness length for short grass) [m].

  • FrAtm() Empirischer Faktor zur Berechnung der atmosphärischen Gegenstrahlung (empirical factor for the calculation of atmospheric radiation) [-]

  • CG() Volumetrische Wärmekapazität des Bodens (volumetric heat capacity of soil) [WT/m³/K].

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

Bases: FluxSequences

Flux sequences of model lland_v4.

The following classes are selected:
  • QZ() Zufluss in das Teilgebiet (inflow into the subcatchment) [m³/s].

  • QZH() Abflussspende in das Teilgebiet (inflow into the subcatchment) [mm/T].

  • TemLTag() Tageswert der Lufttemperatur (daily air temperature) [°C].

  • DailyRelativeHumidity() Daily relative humidity [%].

  • DailySunshineDuration() Daily sunshine duration [h].

  • DailyPossibleSunshineDuration() Astronomically possible daily sunshine duration [h].

  • DailyGlobalRadiation() Daily global radiation [h].

  • NKor() Korrigierter Niederschlag (corrected precipitation) [mm/T].

  • TKor() Korrigierte Lufttemperatur (corrected air temperature) [°C].

  • TKorTag() Tageswert der korrigierten Lufttemperatur (corrected daily air temperature) [°C].

  • WindSpeed2m() Wind speed at a height of 2 m above the ground for grass [m/s].

  • DailyWindSpeed2m() Daily wind speed 2 meters above ground [m/s].

  • ReducedWindSpeed2m() Land-use-specific wind speed at a height of 2 m above the ground [m/s].

  • WindSpeed10m() Wind speed at a height of 10 m above the ground for grass [m/s].

  • SaturationVapourPressure() Saturation vapour pressure [hPa].

  • DailySaturationVapourPressure() Daily satuarion vapour pressure [hPa].

  • SaturationVapourPressureInz() Sättigungsdampdruck unmittelbar oberhalb der Oberfläche des interzepierten Schnees (saturation vapour pressure directly above the surface of the intercepted snow) [hPa].

  • SaturationVapourPressureSnow() Saturation vapour pressure snow [hPa].

  • SaturationVapourPressureSlope() The slope of the saturation vapour pressure curve [hPa/K].

  • DailySaturationVapourPressureSlope() Daily satuarion vapour pressure [hPa/K].

  • ActualVapourPressure() Actual vapour pressure [hPa].

  • DailyActualVapourPressure() Daily actual vapour pressure [hPa].

  • DryAirPressure() Dry air pressure [hPa].

  • DensityAir() Air density [kg/m³]

  • G() “MORECS” Bodenwärmestrom (“MORECS” soil heat flux) [W/m²].

  • TZ() Bodentemperatur in der Tiefe z (soil temperature at depth z) [°C].

  • WG() “Dynamischer” Bodenwärmestrom (“dynamic” soil heat flux) [W/m²].

  • NetShortwaveRadiation() Netto kurzwellige Strahlungsbilanz (net shortwave radiation) [W/m²].

  • NetShortwaveRadiationInz() Kurzwellige Netto-Strahlungsbilanz für den interzipierten Schnee (net shortwave radiation for intercepted snow) [W/m²].

  • NetShortwaveRadiationSnow() Kurzwellige Netto-Strahlungsbilanz für Schneeoberflächen (net shortwave radiation for snow surfaces) [W/m²].

  • DailyNetShortwaveRadiation() Daily not shortwave radiation [W/m²].

  • DailyNetLongwaveRadiation() Daily net longwave radiation [W/m²].

  • NetLongwaveRadiationInz() Langwellige Nettostrahlung des interzepierten Schnees (net longwave radiation of the intercepted snow [W/m²].

  • NetLongwaveRadiationSnow() Net longwave radiation for snow-surfaces [W/m²].

  • NetRadiation() Total net radiation [W/m²].

  • NetRadiationInz() Nettostrahlung des interzepierten Schnees (total net radiation of the intercepted snow [W/m²].

  • NetRadiationSnow() Total net radiation for snow-surfaces [W/m²].

  • DailyNetRadiation() Daily net radiation [W/m²].

  • AerodynamicResistance() Aerodynamischer Widerstand (aerodynamic resistance) [s/m].

  • SoilSurfaceResistance() Oberflächenwiderstand (surface resistance) [s/m].

  • LanduseSurfaceResistance() Oberflächenwiderstand (surface resistance) [s/m].

  • ActualSurfaceResistance() Oberflächenwiderstand (surface resistance) [s/m].

  • NBes() Gesamter Bestandsniederschlag (total stand precipitation) [mm/T].

  • SBes() Schneeanteil Bestandsniederschlag (frozen stand precipitation) [mm/T].

  • SnowIntMax() Schneeinterzeptionsspeicherkapazität (capacity of the snow interception storage) [mm].

  • SnowIntRate() Anteil des im Schneeinterzeptionsspeicher zurückgehaltenen Niederschlags (ratio between the snow interception rate and precipitation) [-].

  • NBesInz() Gesamter Bestandsniederschlag, der den Schneeinterzeptionsspeicher erreicht (total stand precipitation reaching the snow interception storage) [mm/T].

  • SBesInz() Gefrorener Bestandsniederschlag, der den Schneeinterzeptionsspeicher erreicht (frozen amount of stand precipitation reaching the snow interception storage) [mm/T].

  • WNiedInz() Niederschlagsbedingter Wärmestrom in den Schneeinterzeptionsspeicher (heat flux into the snow interception storage due to precipitation) [W/m²].

  • ActualAlbedoInz() Aktuelle Albedo der Oberfläche des interzeptierten Schnees (the current albedo of the surface of the intercepted snow) [-].

  • WaDaInz() Wasserdargebot des Schneeinterzeptionsspeichers (water leaving the snow interception storage) [mm/T].

  • SchmPotInz() Potentielle Schmelze des interzepierten Schnees (potential amount of snow melting within the snow interception storage) [mm/T].

  • SchmInz() Tatsächliche Schmelze des interzepierten Schnees (actual amount of snow melting within the snow cover) [mm/T].

  • GefrPotInz() Potentielles Wiedergefrieren des interzipierten Schnees (potential amount of water refreezing within the snow interception storage) [mm/T].

  • GefrInz() Tatsächliche Wiedergefrieren des interzipierten Schnees (actual amount of water refreezing within the snow interception storage) [mm/T].

  • EvSInz() Tatsächliche Verdunstung des interzepierten Schnees (actual evaporation of the intercepted snow) [mm/T].

  • EvPo() Evapotranspiration (evapotranspiration) [mm/T].

  • EvI() Tatsächliche Interzeptionsverdunstung (actual evaporation of intercepted water) [mm/T].

  • EvB() Tatsächliche Verdunstung von Bodenwasser (actual evaporation of soil water) [mm/T].

  • EvS() Tatsächliche Schneeverdunstung (actual evaporation of snow-water) [mm/T].

  • WNied() Niederschlagsbedingter Wärmestrom in die Schneedecke (heat flux into the snow layer due to precipitation) [W/m²].

  • TempSSurface() Schneetemperatur an der Schneeoberfläche (the snow temperature at the snow surface) [°C].

  • ActualAlbedo() Aktuelle Albedo der relevanten Oberfläche (the current albedo of the relevant surface) [-].

  • SchmPot() Potentielle Schneeschmelze (potential amount of water melting within the snow cover) [mm/T].

  • Schm() Tatsächliche Schneeschmelze (actual amount of water melting within the snow cover) [mm/T].

  • GefrPot() Potentielles Schnee-Wiedergefrieren (potential amount of water refreezing within the snow cover) [mm/T].

  • Gefr() Tatsächliche Schnee-Wiedergefrieren (actual amount of water refreezing within the snow cover) [mm/T].

  • WLatInz() Latente Wärmestrom interzepierter Schnee/Atmosphäre (latent heat flux between the intercepted snow and the atmosphere) [W/m²].

  • WLatSnow() Latente Wärmestrom Schnee/Atmosphäre (latent heat flux between the snow-layer and the atmosphere) [W/m²].

  • WSensInz() Fühlbare Wärmestrom interzipierter Schnee/Atmosphäre (sensible heat flux between the intercepted snow and the atmosphere) [W/m²].

  • WSensSnow() Fühlbare Wärmestrom Schnee/Atmosphäre (sensible heat flux between the snow-layer and the atmosphere) [W/m²].

  • WSurfInz() Wärmestrom vom Körper des interzepierten Schnees bis zu dessen Schneeoberfläche (heat flux from the body of the intercepted snow to its surface) [W/m²].

  • WSurf() Wärmestrom von der Schneedecke zur Schneeoberfläche (heat flux from the snow layer to the snow surface) [W/m²].

  • SFF() Relativer Anteil des gefrorenen Bodenwassers bis zu einer Tiefe von 2z (relative proportion of frozen soil water) [-].

  • FVG() Frostversiegelungsgrad (degree of frost sealing) [-].

  • WaDa() Wasserdargebot (water reaching the soil routine) [mm/T].

  • QDB() Direktabfluss-Abgabe aus dem Bodenspeicher (direct runoff release from the soil storage) [mm/T].

  • QIB1() Erste Komponente der Interflow-Abgabe aus dem Bodenspeicher (first component of the interflow release from the soil storage) [mm/T].

  • QIB2() Zweite Komponente der Interflow-Abgabe aus dem Bodenspeicher (second component of the interflow release from the soil storage) [mm/T].

  • QBB() Basisabfluss-Abgabe aus dem Bodenspeicher (base flow release from the soil storage) [mm/T].

  • QKap() Kapillarer Aufstieg in den Bodenspeicher (capillary rise to soil storage) [mm/T].

  • QDGZ() Gesamtzufluss in beide Direktabfluss-Gebietsspeicher (total inflow into both storage compartments for direct runoff) [mm/T].

  • QAH() Abflussspende des Teilgebiets (runoff at the catchment outlet) [mm/T].

  • QA() Abfluss des Teilgebiets (runoff at the catchment outlet) [m³/s].

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

Bases: InletSequences

Inlet sequences of model lland_v4.

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

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

Bases: InputSequences

Input sequences of model lland_v4.

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

Bases: LogSequences

Log sequences of model lland_v4.

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

Bases: OutletSequences

Outlet sequences of model lland_v4.

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

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

Bases: StateSequences

State sequences of model lland_v4.

The following classes are selected:
  • Inzp() Interzeptionsspeicherung (interception storage) [mm].

  • STInz() Wasseräquivalent Trockenschnee im Interzeptionsspeicher (total water equivalent of the intercepted snow) [mm].

  • SInz() Wasseräquivalent Gesamtschnee im Interzeptionsspeicher (frozen water equivalent of the intercepted snow) [mm].

  • ESnowInz() Kälteinhalt der Schneedecke des Interzeptionsspeichers [WT/m²].

  • ASInz() Dimensionsloses Alter des interzipierten Schnees (dimensionless age of the intercepted snow layer) [-].

  • WATS() Wasseräquivalent Trockenschnee auf der Bodenoberfläche (frozen water equivalent of the snow cover) [mm].

  • WAeS() Wasseräquivalent Gesamtschnee auf der Bodenoberfläche (total water equivalent of the snow cover) [mm].

  • ESnow() Thermischer Energieinhalt der Schneedecke bezogen auf 0°C (thermal energy content of the snow layer with respect to 0°C) [WT/m²].

  • TauS() Dimensionsloses Alter der Schneedecke (dimensionless age of the snow layer) [-].

  • EBdn() Energiegehalt des Bodenwassers (energy content of the soil water) [WT/m²].

  • BoWa() Bodenwasserspeicherung (soil water storage) [mm].

  • QDGZ1() Zufluss in den trägeren Direktabfluss-Gebietsspeicher (inflow into the less responsive storage compartment for direct runoff) [mm/T].

  • QDGZ2() Zufluss in den dynamischeren Direktabfluss-Gebietsspeicher (inflow into the more responsive storage compartment for direct runoff) [mm/T].

  • QIGZ1() “Zufluss in den ersten Zwischenabfluss-Gebietsspeicher (inflow into the first storage compartment for interflow) [mm/T].

  • QIGZ2() Zufluss in den zweiten Zwischenabfluss-Gebietsspeicher (inflow into the second storage compartment for interflow) [mm/T].

  • QBGZ() Zufluss in den Basisabfluss-Gebietsspeicher (inflow into the storage compartment for base flow) [mm/T].

  • QDGA1() Abfluss aus dem trägeren Direktabfluss-Gebietsspeicher (outflow from the less responsive storage compartment for direct runoff) [mm/T].

  • QDGA2() Abfluss aus dem dynamischeren Direktabfluss-Gebietsspeicher (outflow from the more responsive storage compartment for direct runoff) [mm/T].

  • QIGA1() Abfluss aus dem “unteren” Zwischenabfluss-Gebietsspeicher (outflow from the storage compartment for the first interflow component) [mm/T].

  • QIGA2() Abfluss aus dem “oberen” Zwischenabfluss-Gebietsspeicher (outflow from the storage compartment for the second interflow component) [mm/T].

  • QBGA() Abfluss aus dem Basisabfluss-Gebietsspeicher (outflow from the storage compartment for base flow) [mm/T].