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_V1HydPy-Evap-PET-HBV96 (potential evapotranspiration after HBV96).
- The following “run methods” are called in the given sequence during each simulation step:
Calc_MeanAirTemperature_V1Let a submodel that complies with theTempModel_V1orTempModel_V2interface determine the air temperature.Calc_Precipitation_V1Let a submodel that complies with thePrecipModel_V1orPrecipModel_V2interface determine precipitation.Calc_ReferenceEvapotranspiration_V5Adjust the normal evapotranspiration to the difference between actual air temperature and normal air temperature (Lindström et al., 1997).Adjust_ReferenceEvapotranspiration_V1Adjust the previously calculated reference evapotranspiration.Calc_PotentialEvapotranspiration_V3Apply the altitude- and precipitation-related adjustment factors on reference evapotranspiration to determine potential evapotranspiration (Lindström et al., 1997).Calc_MeanPotentialEvapotranspiration_V1Calculate the average potential evapotranspiration.
- The following interface methods are available to main models using the defined model as a submodel:
Determine_PotentialEvapotranspiration_V1Interface method that applies the complete application model by executing all “run methods”.Get_PotentialEvapotranspiration_V2Get the current potential evapotranspiration from the selected hydrological response unit.Get_MeanPotentialEvapotranspiration_V2Get the averaged potential 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_MeanAirTemperature_TempModel_V1Query mean air temperature from a main model referenced as a sub-submodel and follows theTempModel_V1interface.Calc_MeanAirTemperature_TempModel_V2Let a submodel that complies with theTempModel_V2interface determine the mean air temperature.Calc_Precipitation_PrecipModel_V1Query precipitation from a main model that is referenced as a sub-submodel and follows thePrecipModel_V1interface.Calc_Precipitation_PrecipModel_V2Let a submodel that complies with thePrecipModel_V2interface determine the precipitation.
- Users can hook submodels into the defined main model if they satisfy one of the following interfaces:
TempModel_V1Pure getter interface for using main models as sub-submodels.TempModel_V2Simple interface for determining the temperature in one step.PrecipModel_V1Pure getter interface for using main models as sub-submodels.PrecipModel_V2Simple interface for determining precipitation in one step.
- 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], ...]] = ()¶
- 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:
SubParametersControl 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:
SubParametersDerived parameters of model evap_pet_hbv96.
- The following classes are selected:
HRUAreaFraction()The area fraction of each hydrological response unit [-].Altitude()Average (reference) subbasin altitude [100m].
- class hydpy.models.evap_pet_hbv96.FactorSequences(master: Sequences, cls_fastaccess: type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)¶
Bases:
FactorSequencesFactor sequences of model evap_pet_hbv96.
- The following classes are selected:
MeanAirTemperature()The basin’s mean air temperature [°C].
- class hydpy.models.evap_pet_hbv96.FluxSequences(master: Sequences, cls_fastaccess: type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)¶
Bases:
FluxSequencesFlux sequences of model evap_pet_hbv96.
- The following classes are selected:
Precipitation()Precipitation [mm/T].ReferenceEvapotranspiration()Reference (grass) evapotranspiration [mm/T].PotentialEvapotranspiration()Potential (land type-specific) evapotranspiration [mm/T].MeanPotentialEvapotranspiration()Mean potential evapotranspiration [mm/T].
- class hydpy.models.evap_pet_hbv96.InputSequences(master: Sequences, cls_fastaccess: type[TypeFastAccess_co] | None = None, cymodel: CyModelProtocol | None = None)¶
Bases:
InputSequencesInput sequences of model evap_pet_hbv96.
- The following classes are selected:
NormalAirTemperature()Normal air temperature [°C].NormalEvapotranspiration()Normal evapotranspiration [mm/T].