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:
Calc_MeanAirTemperature_V1
Let a submodel that complies with theTempModel_V1
orTempModel_V2
interface determine the air temperature.Calc_Precipitation_V1
Let a submodel that complies with thePrecipModel_V1
orPrecipModel_V2
interface determine precipitation.Calc_ReferenceEvapotranspiration_V5
Adjust the normal evapotranspiration to the difference between actual air temperature and normal air temperature (Lindström et al., 1997).Adjust_ReferenceEvapotranspiration_V1
Adjust the previously calculated reference evapotranspiration.Calc_PotentialEvapotranspiration_V3
Apply the altitude- and precipitation-related adjustment factors on reference evapotranspiration to determine potential evapotranspiration (Lindström et al., 1997).Calc_MeanPotentialEvapotranspiration_V1
Calculate the average potential 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_V2
Get the current potential evapotranspiration from the selected hydrological response unit.Get_MeanPotentialEvapotranspiration_V2
Get 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_V1
Query mean air temperature from a main model referenced as a sub-submodel and follows theTempModel_V1
interface.Calc_MeanAirTemperature_TempModel_V2
Let a submodel that complies with theTempModel_V2
interface determine the mean air temperature.Calc_Precipitation_PrecipModel_V1
Query precipitation from a main model that is referenced as a sub-submodel and follows thePrecipModel_V1
interface.Calc_Precipitation_PrecipModel_V2
Let a submodel that complies with thePrecipModel_V2
interface determine the precipitation.
- 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.
- 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:
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:
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:
FactorSequences
Factor 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:
FluxSequences
Flux 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:
InputSequences
Input sequences of model evap_pet_hbv96.
- The following classes are selected:
NormalAirTemperature()
Normal air temperature [°C].NormalEvapotranspiration()
Normal evapotranspiration [mm/T].