HydPy-Evap-RET-TW2002 (Turc-Wendling reference evapotranspiration, 2002)

The primary purpose of evap_ret_tw2002 is to serve as a submodel that provides estimates of potential grass reference evapotranspiration following ATV-DVWK (2002), as demonstrated for lland_dd. However, you can also use it as a stand-alone model, as it does not require interaction with a main model. The following examples make use of this stand-alone functionality.

evap_ret_tw2002 requires two submodels. One must follow the RadiationModel_V1 or the RadiationModel_V2 interface and provide global radiation data; the other must follow the TempModel_V1 or the TempModel_V2 interface and provide temperature data.

Integration tests

Note

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

Application model evap_ret_tw2002 requires no input from an external model and does not supply any data to an outlet sequence. Hence, assigning a model instance to a blank Element instance is sufficient:

>>> from hydpy import Element
>>> from hydpy.models.evap_ret_tw2002 import *
>>> parameterstep()
>>> element = Element("element")
>>> element.model = model

The implemented Turc-Wendling should be applied to daily data:

>>> from hydpy import IntegrationTest, pub
>>> pub.timegrids = "2000-07-06", "2000-07-07", "1d"

We set the parameter and input values in agreement with the hourly simulation example of evap_ret_fao56, which allows for comparison with the results of the FAO reference evapotranspiration model applied to data of station Uccle (Brussels, Belgium), as reported in example 18 of Allen et al. (1998):

>>> nmbhru(1)
>>> hruarea(1.0)
>>> evapotranspirationfactor(1.0)
>>> hrualtitude(100.0)

evap_ret_fao56 has no counterpart for the CoastFactor parameter. We set its value from our gut feeling to 0.9, as Brussels is not directly adjacent to the coastline (0.6) but also not that far away from it (1.0):

>>> coastfactor(0.9)

A meteo_glob_io and a meteo_temp_io submodel provide the required global radiation and temperature data:

>>> with model.add_radiationmodel_v2("meteo_glob_io"):
...     pass
>>> with model.add_tempmodel_v2("meteo_temp_io"):
...     temperatureaddend(1.0)

Now, we can initialise an IntegrationTest object and set the required meteorological input:

>>> test = IntegrationTest(element)
>>> test.dateformat = "%Y-%d-%m"
>>> model.tempmodel.sequences.inputs.temperature.series = 15.9
>>> model.radiationmodel.sequences.inputs.globalradiation.series = 255.367464

For the example at hand, there is an excellent agreement with the result calculated by evap_ret_fao56 and given by Allen et al. (1998), which is 3.75 mm/d:

>>> test()
Click to see the table

Instead of IO submodels, one could use the main model of evap_ret_tw2002 for providing the temperature data or a “real” submodel that calculates the global radiation data. The first option is not feasible here due to not using evap_ret_tw2002 as a submodel but as a stand-alone model. But we can demonstrate the latter option by using, for example, meteo_glob_fao56, which we also configure in agreement with the hourly simulation example. Hence, meteo_glob_fao56 reproduces the global radiation above so that evap_ret_tw2002 calculates the same potential evapotranspiration value:

>>> with model.add_radiationmodel_v1("meteo_glob_fao56"):
...     latitude(50.8)
...     angstromconstant(0.25)
...     angstromfactor(0.5)
>>> test = IntegrationTest(element)
>>> test.dateformat = "%Y-%d-%m"
>>> model.tempmodel.sequences.inputs.temperature.series = 15.9
>>> model.radiationmodel.sequences.inputs.sunshineduration.series = 9.25
>>> test()
Click to see the table
class hydpy.models.evap_ret_tw2002.Model[source]

Bases: Main_TempModel_V1, Main_TempModel_V2A, Main_RadiationModel_V1, Main_RadiationModel_V2, Sub_ETModel, PETModel_V1

HydPy-Evap-RET-TW2002 (Turc-Wendling reference evapotranspiration, 2002).

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.

  • RadiationModel_V1 Simple interface for determining all data in one step.

DOCNAME: DocName = ('Evap-RET-TW2002', 'Turc-Wendling reference evapotranspiration, 2002')
tempmodel: SubmodelProperty

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

radiationmodel: modeltools.SubmodelProperty

Required submodel that complies with one of the following interfaces: RadiationModel_V1 or RadiationModel_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_ret_tw2002.ControlParameters(master: Parameters, cls_fastaccess: type[FastAccessParameter] | None = None, cymodel: CyModelProtocol | None = None)

Bases: SubParameters

Control parameters of model evap_ret_tw2002.

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].

  • CoastFactor() The “coast factor” of Turc-Wendling’s reference evapotranspiration equation [-].

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

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

Bases: SubParameters

Derived parameters of model evap_ret_tw2002.

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

Bases: FactorSequences

Factor sequences of model evap_ret_tw2002.

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

Bases: FluxSequences

Flux sequences of model evap_ret_tw2002.

The following classes are selected: