HydPy-Evap-PET-HBV96 (potential evapotranspiration after HBV96)

The primary purpose of evap_pet_hbv96 is to serve as a submodel that provides estimates of potential evapotranspiration corresponding to HBV96 (Lindström et al., 1997). Of course, you can connect it to hland_96 if you want a close HBV96 emulation, but it also works with other main models like lland_dd or wland_wag.

evap_pet_hbv96 itself requires other models for determining temperature and precipitation. By default, it queries the already available data from its main model. Alternatively, it can handle its own submodels. The following tests rely on the latter option.

Integration test

Note

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

According to the intended usage as a submodel, evap_pet_hbv96 requires no connections to any nodes. Hence, assigning a model instance to a blank Element instance is sufficient:

>>> from hydpy import Element
>>> from hydpy.models.evap_pet_hbv96 import *
>>> parameterstep("1h")
>>> element = Element("element")
>>> element.model = model

We perform the integration test for a single simulation step, the first hour of the second day of the simulation period selected for the integration tests of hland_96:

>>> from hydpy import IntegrationTest, pub
>>> pub.timegrids = "2000-01-02 00:00", "2000-01-02 01:00", "1h"

We set all parameter values identical to the ones defined in the field example of hland_96:

>>> nmbhru(1)
>>> hruarea(1.0)
>>> hrualtitude(100.0)
>>> evapotranspirationfactor(0.7)
>>> airtemperaturefactor(0.1)
>>> altitudefactor(-0.1)
>>> precipitationfactor(0.1)

A meteo_temp_io submodel provides the required temperature, and a meteo_precip_io submodel the required precipitation:

>>> with model.add_tempmodel_v2("meteo_temp_io"):
...     temperatureaddend(0.0)
>>> with model.add_precipmodel_v2("meteo_precip_io"):
...     precipitationfactor(1.0)

Now we can initialise an IntegrationTest object:

>>> test = IntegrationTest(element)
>>> test.dateformat = "%d/%m %H:00"

The following meteorological input also stems from the input data of the field example:

>>> inputs.normalairtemperature.series = 18.2
>>> inputs.normalevapotranspiration.series = 0.097474
>>> model.tempmodel.sequences.inputs.temperature.series = 19.2

The following precipitation value is from the results table of the field example:

>>> model.precipmodel.sequences.inputs.precipitation.series = 0.847

The following simulation results contain the calculated reference and potential evapotranspiration. Reference evapotranspiration is not available in the results of the field example of hland_96. The potential evapotranspiration estimate is the same in both tables:

>>> test()
Click to see the table
class hydpy.models.evap_pet_hbv96.Model[source]

Bases: Main_TempModel_V1, Main_TempModel_V2A, Main_PrecipModel_V1, Main_PrecipModel_V2A, Sub_ETModel, PETModel_V1

HydPy-Evap-PET-HBV96 (potential evapotranspiration after HBV96).

The following “run methods” are called in the given sequence during 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:
  • TempModel_V1 Pure getter interface for using main models as sub-submodels.

  • TempModel_V2 Simple interface for determining the temperature in one step.

  • PrecipModel_V1 Pure getter interface for using main models as sub-submodels.

  • PrecipModel_V2 Simple interface for determining precipitation in one step.

DOCNAME: DocName = ('Evap-PET-HBV96', 'potential evapotranspiration after HBV96')
tempmodel: SubmodelProperty

Required submodel that complies with one of the following interfaces: TempModel_V1 or TempModel_V2.

precipmodel: modeltools.SubmodelProperty

Required submodel that complies with one of the following interfaces: PrecipModel_V1 or PrecipModel_V2.

REUSABLE_METHODS: ClassVar[tuple[type[ReusableMethod], ...]] = ()
preparemethod2arguments: dict[str, tuple[tuple[Any, ...], dict[str, Any]]]
cymodel: CyModelProtocol | None
parameters: parametertools.Parameters
sequences: sequencetools.Sequences
masks: masktools.Masks
class hydpy.models.evap_pet_hbv96.ControlParameters(master: Parameters, cls_fastaccess: type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Control parameters of model evap_pet_hbv96.

The following classes are selected:
  • NmbHRU() The number of separately modelled hydrological response units [-].

  • HRUArea() The area of each hydrological response unit [km²].

  • HRUAltitude() The altitude of each hydrological response unit [m].

  • EvapotranspirationFactor() The adjustment factor for potential evapotranspiration [-].

  • AltitudeFactor() Decrease of potential evapotranspiration with altitude [-1/100m].

  • PrecipitationFactor() Decrease in potential evapotranspiration due to precipitation [T/mm].

  • AirTemperatureFactor() Temperature factor related to the difference of current reference evapotranspiration and normal reference evapotranspiration [1/°C].

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

Bases: SubParameters

Derived parameters of model evap_pet_hbv96.

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

Bases: FactorSequences

Factor sequences of model evap_pet_hbv96.

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

Bases: FluxSequences

Flux sequences of model evap_pet_hbv96.

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

Bases: InputSequences

Input sequences of model evap_pet_hbv96.

The following classes are selected: