hydpy-dev/hydpy

Model names in HydPy 6.0

tyralla opened this issue · 50 comments

In HydPy 5, model names are not overly consistent. We aim to improve this in HydPy 6.0. The following table lists the current and future names. The future names are still open for discussion. Hence, I will edit the table until we agree on all names. The discussion can take place as additional comments, as usual.

HydPy 5.0
source code
HydPy 6.0
source code
HydPy 6.0
documentation
arma_v1 arma_rimorido HydPy-ARMA-RIMO/RIDO (nonlinear routing by multiple ARMA processes)
conv_v001 conv_nn HydPy-Conv-NN (nearest neighbour interpolation)
conv_v002 conv_idw HydPy-Conv-IDW (inverse distance weighted interpolation)
conv_v003 conv_idwed HydPy-Conv-IDWD (inverse distance weighted interpolation with external drift)
dam_v001 ? ?
dam_v002 ? ?
dam_v003 ? ?
dam_v004 ? ?
dam_v005 ? ?
dam_v006 dam_llake HydPy-Dam-L-Lake (controlled lake model adopted from LARSIM)
dam_v007 dam_lretention HydPy-Dam-L-RB (retention basin model adopted from LARSIM)
dam_v008 dam_lreservoir HydPy-Dam-L-RB (reservoir model adopted from LARSIM)
dam_pump HydPy-Dam-Pump (pumping station model)
dam_sluice HydPy-Dam-Sluice (sluice model)
dam_pump_sluice HydPy-Dam-Pump-Sluice (pumping station with sluice model)
dummy_v1 dummy_n2n HydPy-Dummy-N2D (dummy model passing data from inlet to outlet nodes)
dummy_interceptedwater HydPy-Dummy-InterceptedWater (dummy model supplying main models with intercepted water states)
dummy_soilwater HydPy-Dummy-SoilWater (dummy model supplying main models with soil water states)
dummy_snowcover HydPy-Dummy-SnowCover (dummy model supplying main models with snow cover states)
dummy_snowycanopy HydPy-Dummy-SnowyCanopy (dummy model supplying main models with snow cover degrees in canopies)
dummy_snowalbedo HydPy-Dummy-SnowAlbedo (dummy model supplying main models with snow albedo states)
evap_v001 evap_fao56 HydPy-Evap-FAO-56 (FAO-56 Penman-Monteith reference evapotranspiration)
evap_tw2002 HydPy-Evap-TW-2002 (Turc-Wendling reference evapotranspiration, 2002)
evap_io HydPy-Evap-IO (external data)
evap_m HydPy-Evap-LC (month-based adjustment of reference evapotranspiration)
evap_mlc HydPy-Evap-LC (month-based land cover adjustment of reference evapotranspiration)
evap_pet_hbv96 HydPy-Evap-HBV96 (potential evapotranspiration after HBV96)
evap_aet_hbv96 HydPy-Evap-HBV96 (actual evapotranspiration after HBV96)
evap_minhas HydPy-Evap-Minhas (actual evapotranspiration based on the Minhas equation)
evap_morsim HydPy-Evap-MORSIM (actual evapotranspiration based on the LARSIM implementation of MORECS)
exch_v001 exch_hweir HydPy-Exch-Weir-HBV96 (weir model adopted from IHMS-HBV96)
ga_garto HydPy-GA-GARTO (Green-Ampt / Talbot-Ogden infiltration with redistribution)
hland_v1 hland_96 HydPy-H-HBV96 (adoption of SMHI-IHMS-HBV96)
hland_v2 (obsolete after extracting the unit hydrograph / linear storage cascade)
hland_v3 hland_96p HydPy-H-HBV96-PREVAH (fusion of SMHI-IHMS-HBV96 and PREVAH)
hland_v4 hland_96c HydPy-H-HBV96-COSERO (fusion of SMHI-IHMS-HBV96 and COSERO)
lland_v1 lland_dd HydPy-L-DD (adoption of LARSIM with degree day-based snow)
lland_v2 (obsolete after extracting Turc-Wendling / reading reference evapotranspiration)
lland_v3 lland_knauf HydPy-L-Knauf (adoption of LARSIM with Knauf-based snow modelling)
lland_v4 lland_knauf_inzp HydPy-L-Knauf-Inzp (adoption of LARSIM with Knauf-based snow modelling including snow interception)
lstream_v001 ? ?
lstream_v002 ? ?
llake_v1 (can be removed, replaced by dam_v006 for a long time now)
meteo_v001 meteo_fao56glob HydPy-Meteo_FAO56-Glob (global radiation estimation adopted from FAO56)
meteo_v002 meteo_fao56sd HydPy-Meteo_FAO56-SD (sunshine duration estimation adopted from FAO56)
meteo_v003 meteo_lglob HydPy-Meteo_L-Glob (global radiation estimation adopted from LARSIM)
meteo_v004 meteo_lsd HydPy-Meteo_FAO56-SD (sunshine duration estimation adopted from LARSIM)
meteo_precip_io HydPy-Meteo_Precip-IO (external precipitation data)
meteo_temp_io HydPy-Meteo_Temp-IO (external temperature data)
musk_classic musk_classic HydPy-Musk-Classic (classic Muskingum routing, compatible with SMHI-IHMS-HBV96)
musk_mct musk_mct HydPy-Musk-MCT (Muskingum-Cunge-Todini routing)
snow_cn Cema-Neige model
snow_cnhyst Cema-Neige model with hysteresis of snow melt / snow accumulation
sw1d_lias HydPy-SW1D-LIAS (local inertial approximation of the shallow water equations after Almeida 2012)
test_v1 test_stiff0d HydPy-Test-Stiff-0D (test model for stiff ODEs and scalar sequences)
test_v2 test_discontinous HydPy-Test-Discontinuous (test model for discontinuous ODEs)
test_v3 test_stiff1d HydPy-Test-Stiff-1D (test model for stiff ODEs and 1-dimensional sequences)
wland_v001 wland_orig HydPy-W- (semi-distributed adoption of the original WALRUS)
wland_v002 wland_gd HydPy-W- (semi-distributed adoption of WALRUS with increased groundwater dynamics)

I would say we have three types of application model names:

  • The short one. We use it in Python code and the technical part of the online documentation (as a link). It usually consists (or should consist) of the base model's name and a concise description, separated by an underscore. Example: musk_mct.
  • The long one. We use it for introducing a new model, e.g. in the title of the model's documentation. It consists of the literal "HydPy", the base model's name, and a short description, all separated by dashes. Also, we append a more exhaustive explanation in brackets that should be even helpful when encountering the model for the first time. Example: HydPy-Musk-MCT (Muskingum-Cunge-Todini).
  • The intermediate one, for when the short name appears too technical and the long one too long. Example: Musk-MCT.

If find naming the hland..., lland..., and wland... models particularly difficult. For these models, modularisation allows reducing the number of different application models stemming from the same base model. Ideally, the main models would be flexible enough and the set of submodels complete enough so that only one child model would be necessary in each case...

I added evap_io to the table above.

I still do not know if we will keep them as independent models or merge them into other Evap models, but I added preliminary names for evap_lc and evap_mlc.

Same for evap_m.

I nearly finished evap_hbv96 and suggest the full name "HydPy-Evap-HBV96 (potential evaporation after HBV96"). However, for hland_v1, I suggested hland_96. A little inconsistent...

The main models can be sub-submodels idea seems to be a good one. Hence, we really need something like a precip_io model. However, introducing a new model family named precip does not seem right, especially if precip_io would stay the only application model ever. So, adding it to the meteo family seems preferable. My suggestion for the new application model's name thus is meteo_precip_io. (meteo_p_io could be an alternative, but "p" could also stand for pressure).

meteo_precip_io would be the first application model name with two underscores.

A added meteo_temp_io.

I changed evap_hbv96 to evap_pet_hbv96 for a reason discussed here.

I removed evap_lc, which is currently not required.

I added evap_aet_hbv96, which still requires some documentation updates but seems to work fine now.

I changed the name dummy_v1 to dummy_n2n.

I added dummy_ic, dummy_sw, and dummy_sc to the table. These models will now serve for testing evap_aet_hbv96 independently from a main model like hland_v1 and later for playing around with different approaches to calculate actual evapotranspiration and other properties to be calculated by submodels.

Adding them to the test model family is also an option. However, the test models are for model developers and provide actual mathematics, so I think the dummy model family fits slightly better.

I added evap_minhas to the table (which should be in the master branch by today). This model is factored out from lland_v1 and applies an equation introduced by Minhas et al. (1974) to calculate potential evapotranspiration to soil evapotranspiration. Initially, we took this approach from LARSIM-ME, but as there is nothing LARSIM-specific here, I would prefer to let the name refer to the original authors. Like for evap_tw2002.

I added evap_morsim: HydPy-Evap-MORSIM (actual evapotranspiration based on the LARSIM implementation of MORECS).

Consider this name as a very first suggestion. I tried to come up with a name that combines MORECS and LARSIM to clarify that there are some deviations from the original MORECS methodology that follow the LARSIM model.

Our (successful!) extraction of the evapotranspiration calculations from lland simplifies the naming problem. So, lland_dd (for day degree) could replace lland_v1 and lland_knauf could replace lland_v3.

I added the dummy models dummy_snowycanopy and dummy_snowalbedo and gave the others more descriptive names (evap_interceptedwater, evap_soilwater, evap_snowcover). The names are very long, but this should likely bother no one because these models will probably be only used for testing purposes and are of little relevance to model users.

I added (preliminary versions) of dam_pump, dam_sluice, and dam_pump_sluice to the master branch and updated the above table.