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:
Process_RadiationModel_V1
Let a submodel that complies with theRadiationModel_V1
interface preprocess all eventually required data.Calc_GlobalRadiation_V1
Query the global radiation from a submodel that complies with theRadiationModel_V1
,RadiationModel_V2
,RadiationModel_V3
, orRadiationModel_V4
interface.Calc_AirTemperature_V1
Let a submodel that complies with theTempModel_V1
orTempModel_V2
interface determine the air temperature of the individual hydrological response units.Calc_ReferenceEvapotranspiration_V2
Calculate reference evapotranspiration after Turc-Wendling.Adjust_ReferenceEvapotranspiration_V1
Adjust the previously calculated reference evapotranspiration.Calc_MeanReferenceEvapotranspiration_V1
Calculate the average reference evapotranspiration.
- The following interface methods are available to main models using the defined model as a submodel:
Determine_PotentialEvapotranspiration_V1
Interface method that applies the complete application model by executing all “run methods”.Get_PotentialEvapotranspiration_V1
Get the current reference evapotranspiration from the selected hydrological response unit.Get_MeanPotentialEvapotranspiration_V1
Get the averaged reference evapotranspiration.
- 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:
Calc_AirTemperature_TempModel_V1
Query hydrological response units’ air temperature from a main model referenced as a sub-submodel and follows theTempModel_V1
interface.Calc_AirTemperature_TempModel_V2
Let a submodel that complies with theTempModel_V2
interface determine the air temperature of the hydrological response units.
- 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.
- 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], ...]] = ()¶
- 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:
HRUAreaFraction()
The area fraction of each hydrological response unit [-].
- 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:
AirTemperature()
Air temperature [°C].
- 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:
GlobalRadiation()
Global radiation [W/m²].ReferenceEvapotranspiration()
Reference (grass) evapotranspiration [mm/T].MeanReferenceEvapotranspiration()
Mean reference evapotranspiration [mm/T].