HydPy 6.2.dev1__cp313-cp313-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hydpy/__init__.py +275 -0
- hydpy/aliases.py +2554 -0
- hydpy/auxs/__init__.py +0 -0
- hydpy/auxs/anntools.py +1305 -0
- hydpy/auxs/armatools.py +883 -0
- hydpy/auxs/calibtools.py +3337 -0
- hydpy/auxs/interptools.py +1094 -0
- hydpy/auxs/iuhtools.py +543 -0
- hydpy/auxs/networktools.py +597 -0
- hydpy/auxs/ppolytools.py +809 -0
- hydpy/auxs/quadtools.py +61 -0
- hydpy/auxs/roottools.py +228 -0
- hydpy/auxs/smoothtools.py +273 -0
- hydpy/auxs/statstools.py +2125 -0
- hydpy/auxs/validtools.py +81 -0
- hydpy/conf/HydPyConfigBase.xsd +68637 -0
- hydpy/conf/HydPyConfigBase.xsdt +358 -0
- hydpy/conf/HydPyConfigMultipleRuns.xsd +25 -0
- hydpy/conf/HydPyConfigSingleRun.xsd +24 -0
- hydpy/conf/__init__.py +0 -0
- hydpy/conf/a_coefficients_explicit_lobatto_sequence.npy +0 -0
- hydpy/conf/support_points_for_smoothpar_logistic2.npy +0 -0
- hydpy/config.py +42 -0
- hydpy/core/__init__.py +0 -0
- hydpy/core/aliastools.py +214 -0
- hydpy/core/autodoctools.py +1947 -0
- hydpy/core/auxfiletools.py +1169 -0
- hydpy/core/devicetools.py +3810 -0
- hydpy/core/exceptiontools.py +269 -0
- hydpy/core/filetools.py +1985 -0
- hydpy/core/hydpytools.py +3089 -0
- hydpy/core/importtools.py +1398 -0
- hydpy/core/indextools.py +345 -0
- hydpy/core/itemtools.py +1849 -0
- hydpy/core/masktools.py +460 -0
- hydpy/core/modeltools.py +4868 -0
- hydpy/core/netcdftools.py +2683 -0
- hydpy/core/objecttools.py +2023 -0
- hydpy/core/optiontools.py +1045 -0
- hydpy/core/parametertools.py +4674 -0
- hydpy/core/printtools.py +222 -0
- hydpy/core/propertytools.py +643 -0
- hydpy/core/pubtools.py +254 -0
- hydpy/core/selectiontools.py +1571 -0
- hydpy/core/sequencetools.py +4476 -0
- hydpy/core/seriestools.py +339 -0
- hydpy/core/testtools.py +2483 -0
- hydpy/core/timetools.py +3567 -0
- hydpy/core/typingtools.py +333 -0
- hydpy/core/variabletools.py +2615 -0
- hydpy/cythons/__init__.py +24 -0
- hydpy/cythons/annutils.pxd +33 -0
- hydpy/cythons/annutils.pyi +25 -0
- hydpy/cythons/annutils.pyx +120 -0
- hydpy/cythons/autogen/__init__.py +0 -0
- hydpy/cythons/autogen/annutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/annutils.pxd +42 -0
- hydpy/cythons/autogen/annutils.pyx +129 -0
- hydpy/cythons/autogen/c_arma.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_arma.pxd +179 -0
- hydpy/cythons/autogen/c_arma.pyx +356 -0
- hydpy/cythons/autogen/c_arma_rimorido.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_arma_rimorido.pxd +179 -0
- hydpy/cythons/autogen/c_arma_rimorido.pyx +356 -0
- hydpy/cythons/autogen/c_conv.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_conv.pxd +198 -0
- hydpy/cythons/autogen/c_conv.pyx +491 -0
- hydpy/cythons/autogen/c_conv_idw.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_conv_idw.pxd +124 -0
- hydpy/cythons/autogen/c_conv_idw.pyx +264 -0
- hydpy/cythons/autogen/c_conv_idw_ed.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_conv_idw_ed.pxd +197 -0
- hydpy/cythons/autogen/c_conv_idw_ed.pyx +481 -0
- hydpy/cythons/autogen/c_conv_nn.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_conv_nn.pxd +120 -0
- hydpy/cythons/autogen/c_conv_nn.pyx +224 -0
- hydpy/cythons/autogen/c_dam.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam.pxd +805 -0
- hydpy/cythons/autogen/c_dam.pyx +1477 -0
- hydpy/cythons/autogen/c_dam_llake.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_llake.pxd +364 -0
- hydpy/cythons/autogen/c_dam_llake.pyx +705 -0
- hydpy/cythons/autogen/c_dam_lreservoir.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_lreservoir.pxd +365 -0
- hydpy/cythons/autogen/c_dam_lreservoir.pyx +708 -0
- hydpy/cythons/autogen/c_dam_lretention.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_lretention.pxd +340 -0
- hydpy/cythons/autogen/c_dam_lretention.pyx +625 -0
- hydpy/cythons/autogen/c_dam_pump.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_pump.pxd +402 -0
- hydpy/cythons/autogen/c_dam_pump.pyx +724 -0
- hydpy/cythons/autogen/c_dam_pump_sluice.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_pump_sluice.pxd +452 -0
- hydpy/cythons/autogen/c_dam_pump_sluice.pyx +829 -0
- hydpy/cythons/autogen/c_dam_sluice.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_sluice.pxd +404 -0
- hydpy/cythons/autogen/c_dam_sluice.pyx +726 -0
- hydpy/cythons/autogen/c_dam_v001.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v001.pxd +452 -0
- hydpy/cythons/autogen/c_dam_v001.pyx +816 -0
- hydpy/cythons/autogen/c_dam_v002.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v002.pxd +394 -0
- hydpy/cythons/autogen/c_dam_v002.pyx +703 -0
- hydpy/cythons/autogen/c_dam_v003.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v003.pxd +417 -0
- hydpy/cythons/autogen/c_dam_v003.pyx +744 -0
- hydpy/cythons/autogen/c_dam_v004.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v004.pxd +486 -0
- hydpy/cythons/autogen/c_dam_v004.pyx +891 -0
- hydpy/cythons/autogen/c_dam_v005.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v005.pxd +524 -0
- hydpy/cythons/autogen/c_dam_v005.pyx +928 -0
- hydpy/cythons/autogen/c_dummy.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy.pxd +151 -0
- hydpy/cythons/autogen/c_dummy.pyx +263 -0
- hydpy/cythons/autogen/c_dummy_interceptedwater.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_interceptedwater.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_interceptedwater.pyx +104 -0
- hydpy/cythons/autogen/c_dummy_node2node.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_node2node.pxd +89 -0
- hydpy/cythons/autogen/c_dummy_node2node.pyx +148 -0
- hydpy/cythons/autogen/c_dummy_snowalbedo.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_snowalbedo.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_snowalbedo.pyx +104 -0
- hydpy/cythons/autogen/c_dummy_snowcover.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_snowcover.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_snowcover.pyx +104 -0
- hydpy/cythons/autogen/c_dummy_snowycanopy.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_snowycanopy.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_snowycanopy.pyx +104 -0
- hydpy/cythons/autogen/c_dummy_soilwater.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_soilwater.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_soilwater.pyx +104 -0
- hydpy/cythons/autogen/c_evap.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap.pxd +1029 -0
- hydpy/cythons/autogen/c_evap.pyx +2601 -0
- hydpy/cythons/autogen/c_evap_aet_hbv96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_aet_hbv96.pxd +227 -0
- hydpy/cythons/autogen/c_evap_aet_hbv96.pyx +584 -0
- hydpy/cythons/autogen/c_evap_aet_minhas.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_aet_minhas.pxd +193 -0
- hydpy/cythons/autogen/c_evap_aet_minhas.pyx +478 -0
- hydpy/cythons/autogen/c_evap_aet_morsim.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_aet_morsim.pxd +681 -0
- hydpy/cythons/autogen/c_evap_aet_morsim.pyx +1642 -0
- hydpy/cythons/autogen/c_evap_pet_ambav1.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_pet_ambav1.pxd +532 -0
- hydpy/cythons/autogen/c_evap_pet_ambav1.pyx +1296 -0
- hydpy/cythons/autogen/c_evap_pet_hbv96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_pet_hbv96.pxd +179 -0
- hydpy/cythons/autogen/c_evap_pet_hbv96.pyx +328 -0
- hydpy/cythons/autogen/c_evap_pet_m.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_pet_m.pxd +124 -0
- hydpy/cythons/autogen/c_evap_pet_m.pyx +214 -0
- hydpy/cythons/autogen/c_evap_pet_mlc.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_pet_mlc.pxd +126 -0
- hydpy/cythons/autogen/c_evap_pet_mlc.pyx +214 -0
- hydpy/cythons/autogen/c_evap_ret_fao56.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_ret_fao56.pxd +305 -0
- hydpy/cythons/autogen/c_evap_ret_fao56.pyx +624 -0
- hydpy/cythons/autogen/c_evap_ret_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_ret_io.pxd +112 -0
- hydpy/cythons/autogen/c_evap_ret_io.pyx +176 -0
- hydpy/cythons/autogen/c_evap_ret_tw2002.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_ret_tw2002.pxd +139 -0
- hydpy/cythons/autogen/c_evap_ret_tw2002.pyx +273 -0
- hydpy/cythons/autogen/c_exch.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_exch.pxd +230 -0
- hydpy/cythons/autogen/c_exch.pyx +462 -0
- hydpy/cythons/autogen/c_exch_branch_hbv96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_exch_branch_hbv96.pxd +134 -0
- hydpy/cythons/autogen/c_exch_branch_hbv96.pyx +255 -0
- hydpy/cythons/autogen/c_exch_waterlevel.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_exch_waterlevel.pxd +54 -0
- hydpy/cythons/autogen/c_exch_waterlevel.pyx +78 -0
- hydpy/cythons/autogen/c_exch_weir_hbv96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_exch_weir_hbv96.pxd +156 -0
- hydpy/cythons/autogen/c_exch_weir_hbv96.pyx +282 -0
- hydpy/cythons/autogen/c_ga.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_ga.pxd +353 -0
- hydpy/cythons/autogen/c_ga.pyx +1204 -0
- hydpy/cythons/autogen/c_ga_garto.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_ga_garto.pxd +330 -0
- hydpy/cythons/autogen/c_ga_garto.pyx +1105 -0
- hydpy/cythons/autogen/c_ga_garto_submodel1.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_ga_garto_submodel1.pxd +236 -0
- hydpy/cythons/autogen/c_ga_garto_submodel1.pyx +944 -0
- hydpy/cythons/autogen/c_gland.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_gland.pxd +437 -0
- hydpy/cythons/autogen/c_gland.pyx +726 -0
- hydpy/cythons/autogen/c_gland_gr4.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_gland_gr4.pxd +382 -0
- hydpy/cythons/autogen/c_gland_gr4.pyx +605 -0
- hydpy/cythons/autogen/c_gland_gr5.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_gland_gr5.pxd +368 -0
- hydpy/cythons/autogen/c_gland_gr5.pyx +568 -0
- hydpy/cythons/autogen/c_gland_gr6.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_gland_gr6.pxd +420 -0
- hydpy/cythons/autogen/c_gland_gr6.pyx +673 -0
- hydpy/cythons/autogen/c_hland.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_hland.pxd +855 -0
- hydpy/cythons/autogen/c_hland.pyx +2486 -0
- hydpy/cythons/autogen/c_hland_96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_hland_96.pxd +631 -0
- hydpy/cythons/autogen/c_hland_96.pyx +1724 -0
- hydpy/cythons/autogen/c_hland_96c.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_hland_96c.pxd +621 -0
- hydpy/cythons/autogen/c_hland_96c.pyx +1822 -0
- hydpy/cythons/autogen/c_hland_96p.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_hland_96p.pxd +683 -0
- hydpy/cythons/autogen/c_hland_96p.pyx +1911 -0
- hydpy/cythons/autogen/c_kinw.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_kinw.pxd +509 -0
- hydpy/cythons/autogen/c_kinw.pyx +965 -0
- hydpy/cythons/autogen/c_kinw_williams.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_kinw_williams.pxd +409 -0
- hydpy/cythons/autogen/c_kinw_williams.pyx +763 -0
- hydpy/cythons/autogen/c_kinw_williams_ext.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_kinw_williams_ext.pxd +220 -0
- hydpy/cythons/autogen/c_kinw_williams_ext.pyx +440 -0
- hydpy/cythons/autogen/c_lland.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_lland.pxd +1386 -0
- hydpy/cythons/autogen/c_lland.pyx +3679 -0
- hydpy/cythons/autogen/c_lland_dd.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_lland_dd.pxd +679 -0
- hydpy/cythons/autogen/c_lland_dd.pyx +1719 -0
- hydpy/cythons/autogen/c_lland_knauf.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_lland_knauf.pxd +1096 -0
- hydpy/cythons/autogen/c_lland_knauf.pyx +2784 -0
- hydpy/cythons/autogen/c_lland_knauf_ic.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_lland_knauf_ic.pxd +1369 -0
- hydpy/cythons/autogen/c_lland_knauf_ic.pyx +3625 -0
- hydpy/cythons/autogen/c_meteo.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo.pxd +469 -0
- hydpy/cythons/autogen/c_meteo.pyx +879 -0
- hydpy/cythons/autogen/c_meteo_clear_glob_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_clear_glob_io.pxd +75 -0
- hydpy/cythons/autogen/c_meteo_clear_glob_io.pyx +107 -0
- hydpy/cythons/autogen/c_meteo_glob_fao56.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_glob_fao56.pxd +209 -0
- hydpy/cythons/autogen/c_meteo_glob_fao56.pyx +339 -0
- hydpy/cythons/autogen/c_meteo_glob_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_glob_io.pxd +63 -0
- hydpy/cythons/autogen/c_meteo_glob_io.pyx +91 -0
- hydpy/cythons/autogen/c_meteo_glob_morsim.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_glob_morsim.pxd +289 -0
- hydpy/cythons/autogen/c_meteo_glob_morsim.pyx +527 -0
- hydpy/cythons/autogen/c_meteo_precip_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_precip_io.pxd +112 -0
- hydpy/cythons/autogen/c_meteo_precip_io.pyx +176 -0
- hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.pxd +87 -0
- hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.pyx +123 -0
- hydpy/cythons/autogen/c_meteo_sun_fao56.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_sun_fao56.pxd +209 -0
- hydpy/cythons/autogen/c_meteo_sun_fao56.pyx +343 -0
- hydpy/cythons/autogen/c_meteo_sun_morsim.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_sun_morsim.pxd +286 -0
- hydpy/cythons/autogen/c_meteo_sun_morsim.pyx +519 -0
- hydpy/cythons/autogen/c_meteo_temp_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_temp_io.pxd +112 -0
- hydpy/cythons/autogen/c_meteo_temp_io.pyx +176 -0
- hydpy/cythons/autogen/c_musk.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_musk.pxd +282 -0
- hydpy/cythons/autogen/c_musk.pyx +605 -0
- hydpy/cythons/autogen/c_musk_classic.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_musk_classic.pxd +138 -0
- hydpy/cythons/autogen/c_musk_classic.pyx +226 -0
- hydpy/cythons/autogen/c_musk_mct.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_musk_mct.pxd +282 -0
- hydpy/cythons/autogen/c_musk_mct.pyx +609 -0
- hydpy/cythons/autogen/c_rconc.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_rconc.pxd +119 -0
- hydpy/cythons/autogen/c_rconc.pyx +174 -0
- hydpy/cythons/autogen/c_rconc_nash.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_rconc_nash.pxd +111 -0
- hydpy/cythons/autogen/c_rconc_nash.pyx +185 -0
- hydpy/cythons/autogen/c_rconc_uh.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_rconc_uh.pxd +92 -0
- hydpy/cythons/autogen/c_rconc_uh.pyx +125 -0
- hydpy/cythons/autogen/c_sw1d.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d.pxd +511 -0
- hydpy/cythons/autogen/c_sw1d.pyx +1263 -0
- hydpy/cythons/autogen/c_sw1d_channel.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_channel.pxd +119 -0
- hydpy/cythons/autogen/c_sw1d_channel.pyx +300 -0
- hydpy/cythons/autogen/c_sw1d_gate_out.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_gate_out.pxd +240 -0
- hydpy/cythons/autogen/c_sw1d_gate_out.pyx +476 -0
- hydpy/cythons/autogen/c_sw1d_lias.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_lias.pxd +320 -0
- hydpy/cythons/autogen/c_sw1d_lias.pyx +619 -0
- hydpy/cythons/autogen/c_sw1d_lias_sluice.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_lias_sluice.pxd +325 -0
- hydpy/cythons/autogen/c_sw1d_lias_sluice.pyx +644 -0
- hydpy/cythons/autogen/c_sw1d_network.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_network.pxd +90 -0
- hydpy/cythons/autogen/c_sw1d_network.pyx +246 -0
- hydpy/cythons/autogen/c_sw1d_pump.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_pump.pxd +256 -0
- hydpy/cythons/autogen/c_sw1d_pump.pyx +502 -0
- hydpy/cythons/autogen/c_sw1d_q_in.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_q_in.pxd +224 -0
- hydpy/cythons/autogen/c_sw1d_q_in.pyx +383 -0
- hydpy/cythons/autogen/c_sw1d_q_out.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_q_out.pxd +224 -0
- hydpy/cythons/autogen/c_sw1d_q_out.pyx +383 -0
- hydpy/cythons/autogen/c_sw1d_storage.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_storage.pxd +193 -0
- hydpy/cythons/autogen/c_sw1d_storage.pyx +349 -0
- hydpy/cythons/autogen/c_sw1d_weir_out.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_weir_out.pxd +212 -0
- hydpy/cythons/autogen/c_sw1d_weir_out.pyx +404 -0
- hydpy/cythons/autogen/c_test.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_test.pxd +175 -0
- hydpy/cythons/autogen/c_test.pyx +348 -0
- hydpy/cythons/autogen/c_test_discontinous.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_test_discontinous.pxd +146 -0
- hydpy/cythons/autogen/c_test_discontinous.pyx +256 -0
- hydpy/cythons/autogen/c_test_stiff0d.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_test_stiff0d.pxd +146 -0
- hydpy/cythons/autogen/c_test_stiff0d.pyx +250 -0
- hydpy/cythons/autogen/c_test_stiff1d.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_test_stiff1d.pxd +145 -0
- hydpy/cythons/autogen/c_test_stiff1d.pyx +294 -0
- hydpy/cythons/autogen/c_whmod.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_whmod.pxd +482 -0
- hydpy/cythons/autogen/c_whmod.pyx +1156 -0
- hydpy/cythons/autogen/c_whmod_rural.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_whmod_rural.pxd +411 -0
- hydpy/cythons/autogen/c_whmod_rural.pyx +982 -0
- hydpy/cythons/autogen/c_whmod_urban.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_whmod_urban.pxd +482 -0
- hydpy/cythons/autogen/c_whmod_urban.pyx +1155 -0
- hydpy/cythons/autogen/c_wland.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wland.pxd +842 -0
- hydpy/cythons/autogen/c_wland.pyx +1890 -0
- hydpy/cythons/autogen/c_wland_gd.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wland_gd.pxd +829 -0
- hydpy/cythons/autogen/c_wland_gd.pyx +1847 -0
- hydpy/cythons/autogen/c_wland_wag.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wland_wag.pxd +810 -0
- hydpy/cythons/autogen/c_wland_wag.pyx +1780 -0
- hydpy/cythons/autogen/c_wq.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wq.pxd +275 -0
- hydpy/cythons/autogen/c_wq.pyx +652 -0
- hydpy/cythons/autogen/c_wq_trapeze.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wq_trapeze.pxd +170 -0
- hydpy/cythons/autogen/c_wq_trapeze.pyx +400 -0
- hydpy/cythons/autogen/c_wq_trapeze_strickler.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wq_trapeze_strickler.pxd +243 -0
- hydpy/cythons/autogen/c_wq_trapeze_strickler.pyx +578 -0
- hydpy/cythons/autogen/c_wq_walrus.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wq_walrus.pxd +61 -0
- hydpy/cythons/autogen/c_wq_walrus.pyx +82 -0
- hydpy/cythons/autogen/configutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/configutils.pxd +17 -0
- hydpy/cythons/autogen/configutils.pyx +119 -0
- hydpy/cythons/autogen/interfaceutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/interfaceutils.pxd +31 -0
- hydpy/cythons/autogen/interfaceutils.pyx +82 -0
- hydpy/cythons/autogen/interputils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/interputils.pxd +42 -0
- hydpy/cythons/autogen/interputils.pyx +118 -0
- hydpy/cythons/autogen/masterinterface.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/masterinterface.pxd +153 -0
- hydpy/cythons/autogen/masterinterface.pyx +222 -0
- hydpy/cythons/autogen/pointerutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/pointerutils.pxd +31 -0
- hydpy/cythons/autogen/pointerutils.pyx +650 -0
- hydpy/cythons/autogen/ppolyutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/ppolyutils.pxd +35 -0
- hydpy/cythons/autogen/ppolyutils.pyx +59 -0
- hydpy/cythons/autogen/quadutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/quadutils.pxd +26 -0
- hydpy/cythons/autogen/quadutils.pyx +973 -0
- hydpy/cythons/autogen/rootutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/rootutils.pxd +28 -0
- hydpy/cythons/autogen/rootutils.pyx +109 -0
- hydpy/cythons/autogen/sequenceutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/sequenceutils.pxd +45 -0
- hydpy/cythons/autogen/sequenceutils.pyx +101 -0
- hydpy/cythons/autogen/smoothutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/smoothutils.pxd +29 -0
- hydpy/cythons/autogen/smoothutils.pyx +833 -0
- hydpy/cythons/configutils.pxd +8 -0
- hydpy/cythons/configutils.pyi +5 -0
- hydpy/cythons/configutils.pyx +110 -0
- hydpy/cythons/interfaceutils.pxd +22 -0
- hydpy/cythons/interfaceutils.pyi +15 -0
- hydpy/cythons/interfaceutils.pyx +73 -0
- hydpy/cythons/interputils.pxd +33 -0
- hydpy/cythons/interputils.pyi +32 -0
- hydpy/cythons/interputils.pyx +109 -0
- hydpy/cythons/modelutils.py +2990 -0
- hydpy/cythons/pointerutils.pxd +22 -0
- hydpy/cythons/pointerutils.pyi +89 -0
- hydpy/cythons/pointerutils.pyx +641 -0
- hydpy/cythons/ppolyutils.pxd +26 -0
- hydpy/cythons/ppolyutils.pyi +21 -0
- hydpy/cythons/ppolyutils.pyx +50 -0
- hydpy/cythons/quadutils.pxd +17 -0
- hydpy/cythons/quadutils.pyi +13 -0
- hydpy/cythons/quadutils.pyx +964 -0
- hydpy/cythons/rootutils.pxd +19 -0
- hydpy/cythons/rootutils.pyi +21 -0
- hydpy/cythons/rootutils.pyx +100 -0
- hydpy/cythons/sequenceutils.pxd +36 -0
- hydpy/cythons/sequenceutils.pyi +7 -0
- hydpy/cythons/sequenceutils.pyx +92 -0
- hydpy/cythons/smoothutils.pxd +20 -0
- hydpy/cythons/smoothutils.pyi +15 -0
- hydpy/cythons/smoothutils.pyx +824 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_dill_assl.py +13 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_kalk.py +13 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_leun.py +14 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_marb.py +13 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_dill_assl_lahn_leun.py +5 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_lahn_leun_lahn_kalk.py +5 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_lahn_marb_lahn_leun.py +5 -0
- hydpy/data/HydPy-H-Lahn/control/default/land.py +9 -0
- hydpy/data/HydPy-H-Lahn/control/default/land_dill_assl.py +57 -0
- hydpy/data/HydPy-H-Lahn/control/default/land_lahn_kalk.py +57 -0
- hydpy/data/HydPy-H-Lahn/control/default/land_lahn_leun.py +56 -0
- hydpy/data/HydPy-H-Lahn/control/default/land_lahn_marb.py +57 -0
- hydpy/data/HydPy-H-Lahn/control/default/stream_dill_assl_lahn_leun.py +7 -0
- hydpy/data/HydPy-H-Lahn/control/default/stream_lahn_leun_lahn_kalk.py +7 -0
- hydpy/data/HydPy-H-Lahn/control/default/stream_lahn_marb_lahn_leun.py +7 -0
- hydpy/data/HydPy-H-Lahn/multiple_runs.xml +309 -0
- hydpy/data/HydPy-H-Lahn/multiple_runs_alpha.xml +71 -0
- hydpy/data/HydPy-H-Lahn/network/default/headwaters.py +11 -0
- hydpy/data/HydPy-H-Lahn/network/default/nonheadwaters.py +11 -0
- hydpy/data/HydPy-H-Lahn/network/default/streams.py +8 -0
- hydpy/data/HydPy-H-Lahn/series/default/dill_assl_obs_q.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/evap_pet_hbv96_input_normalairtemperature.nc +0 -0
- hydpy/data/HydPy-H-Lahn/series/default/evap_pet_hbv96_input_normalevapotranspiration.nc +0 -0
- hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_p.nc +0 -0
- hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_t.nc +0 -0
- hydpy/data/HydPy-H-Lahn/series/default/lahn_kalk_obs_q.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/lahn_leun_obs_q.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/lahn_marb_obs_q.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_hland_96_input_p.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_hland_96_input_t.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_hland_96_input_p.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_hland_96_input_t.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_hland_96_input_p.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_hland_96_input_t.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_hland_96_input_p.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_hland_96_input_t.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/obs_q.nc +0 -0
- hydpy/data/HydPy-H-Lahn/single_run.xml +152 -0
- hydpy/data/HydPy-H-Lahn/single_run.xmlt +143 -0
- hydpy/data/__init__.py +17 -0
- hydpy/docs/__init__.py +0 -0
- hydpy/docs/autofigs/__init__.py +0 -0
- hydpy/docs/bib/__init__.py +0 -0
- hydpy/docs/bib/refs.bib +566 -0
- hydpy/docs/combine_docversions.py +133 -0
- hydpy/docs/draw_model_sketches.py +1301 -0
- hydpy/docs/enable_autodoc.py +7 -0
- hydpy/docs/figs/HydPy-G-GR4.png +0 -0
- hydpy/docs/figs/HydPy-G-GR5.png +0 -0
- hydpy/docs/figs/HydPy-G-GR6.png +0 -0
- hydpy/docs/figs/HydPy-H-HBV96-COSERO.png +0 -0
- hydpy/docs/figs/HydPy-H-HBV96-PREVAH.png +0 -0
- hydpy/docs/figs/HydPy-H-HBV96.png +0 -0
- hydpy/docs/figs/HydPy-H-Lahn.png +0 -0
- hydpy/docs/figs/HydPy-KinW-Williams.png +0 -0
- hydpy/docs/figs/HydPy-L-DD.png +0 -0
- hydpy/docs/figs/HydPy-W-Wag.png +0 -0
- hydpy/docs/figs/HydPy_Logo.png +0 -0
- hydpy/docs/figs/HydPy_Logo_Text.png +0 -0
- hydpy/docs/figs/IDLE-editor.png +0 -0
- hydpy/docs/figs/IDLE-shell.png +0 -0
- hydpy/docs/figs/LAWA_river-basin-bumbers.png +0 -0
- hydpy/docs/figs/__init__.py +0 -0
- hydpy/docs/html_/__init__.py +0 -0
- hydpy/docs/polish_html.py +57 -0
- hydpy/docs/prepare.py +224 -0
- hydpy/docs/publish_docs.py +53 -0
- hydpy/docs/rst/HydPy-ARMA.rst +27 -0
- hydpy/docs/rst/HydPy-Conv.rst +22 -0
- hydpy/docs/rst/HydPy-Dam.rst +79 -0
- hydpy/docs/rst/HydPy-Dummy.rst +21 -0
- hydpy/docs/rst/HydPy-Evap.rst +26 -0
- hydpy/docs/rst/HydPy-Exch.rst +36 -0
- hydpy/docs/rst/HydPy-G.rst +40 -0
- hydpy/docs/rst/HydPy-GA.rst +34 -0
- hydpy/docs/rst/HydPy-H.rst +24 -0
- hydpy/docs/rst/HydPy-KinW.rst +32 -0
- hydpy/docs/rst/HydPy-L.rst +42 -0
- hydpy/docs/rst/HydPy-Meteo.rst +28 -0
- hydpy/docs/rst/HydPy-Musk.rst +21 -0
- hydpy/docs/rst/HydPy-Rconc.rst +17 -0
- hydpy/docs/rst/HydPy-SW1D.rst +49 -0
- hydpy/docs/rst/HydPy-Test.rst +19 -0
- hydpy/docs/rst/HydPy-W.rst +20 -0
- hydpy/docs/rst/HydPy-WHMod.rst +19 -0
- hydpy/docs/rst/HydPy-WQ.rst +20 -0
- hydpy/docs/rst/__init__.py +0 -0
- hydpy/docs/rst/additional_repositories.rst +40 -0
- hydpy/docs/rst/auxiliaries.rst +31 -0
- hydpy/docs/rst/continuous_integration.rst +75 -0
- hydpy/docs/rst/core.rst +75 -0
- hydpy/docs/rst/cythons.rst +47 -0
- hydpy/docs/rst/definitions.rst +506 -0
- hydpy/docs/rst/developer_guide.rst +54 -0
- hydpy/docs/rst/example_projects.rst +40 -0
- hydpy/docs/rst/execution.rst +22 -0
- hydpy/docs/rst/framework_tools.rst +56 -0
- hydpy/docs/rst/how_to_read_the_reference_manual.rst +156 -0
- hydpy/docs/rst/hydpydependencies.rst +55 -0
- hydpy/docs/rst/index.rst +125 -0
- hydpy/docs/rst/installation.rst +155 -0
- hydpy/docs/rst/model_families.rst +79 -0
- hydpy/docs/rst/model_overview.rst +291 -0
- hydpy/docs/rst/modelimports.rst +10 -0
- hydpy/docs/rst/options.rst +119 -0
- hydpy/docs/rst/programming_style.rst +572 -0
- hydpy/docs/rst/project_structure.rst +520 -0
- hydpy/docs/rst/quickstart.rst +304 -0
- hydpy/docs/rst/reference_manual.rst +29 -0
- hydpy/docs/rst/required_tools.rst +50 -0
- hydpy/docs/rst/simulation.rst +514 -0
- hydpy/docs/rst/submodel_interfaces.rst +32 -0
- hydpy/docs/rst/tests_and_documentation.rst +85 -0
- hydpy/docs/rst/user_guide.rst +38 -0
- hydpy/docs/rst/version_control.rst +116 -0
- hydpy/docs/rst/zbibliography.rst +8 -0
- hydpy/docs/sphinx/__init__.py +0 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/changes/frameset.html +11 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/changes/rstsource.html +15 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/changes/versionchanges.html +33 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/defindex.html +35 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/domainindex.html +56 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/genindex-single.html +63 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/genindex-split.html +41 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/genindex.html +76 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/globaltoc.html +11 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/layout.html +221 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/localtoc.html +15 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/opensearch.xml +13 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/page.html +13 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/relations.html +23 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/search.html +65 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/searchbox.html +21 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/searchfield.html +23 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/sourcelink.html +18 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/basic.css_t +925 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/doctools.js +156 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/documentation_options.js_t +13 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/file.png +0 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/language_data.js_t +26 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/minus.png +0 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/plus.png +0 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/searchtools.js +574 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/sphinx_highlight.js +154 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/theme.conf +16 -0
- hydpy/docs/sphinx/_themes/classic_hydpy/layout.html +23 -0
- hydpy/docs/sphinx/_themes/classic_hydpy/static/classic.css_t +358 -0
- hydpy/docs/sphinx/_themes/classic_hydpy/static/sidebar.js_t +72 -0
- hydpy/docs/sphinx/_themes/classic_hydpy/theme.conf +32 -0
- hydpy/docs/sphinx/conf.py +398 -0
- hydpy/docs/sphinx/defaultlinks_extension.py +36 -0
- hydpy/docs/sphinx/integrationtest_extension.py +104 -0
- hydpy/docs/sphinx/projectstructure_extension.py +58 -0
- hydpy/docs/sphinx/submodelgraph_extension.py +53 -0
- hydpy/exe/__init__.py +0 -0
- hydpy/exe/commandtools.py +651 -0
- hydpy/exe/hyd.py +277 -0
- hydpy/exe/modelimports.py +41 -0
- hydpy/exe/replacetools.py +216 -0
- hydpy/exe/servertools.py +2348 -0
- hydpy/exe/xmltools.py +3280 -0
- hydpy/interfaces/__init__.py +0 -0
- hydpy/interfaces/aetinterfaces.py +94 -0
- hydpy/interfaces/dischargeinterfaces.py +45 -0
- hydpy/interfaces/petinterfaces.py +117 -0
- hydpy/interfaces/precipinterfaces.py +42 -0
- hydpy/interfaces/radiationinterfaces.py +79 -0
- hydpy/interfaces/rconcinterfaces.py +30 -0
- hydpy/interfaces/routinginterfaces.py +324 -0
- hydpy/interfaces/soilinterfaces.py +96 -0
- hydpy/interfaces/stateinterfaces.py +98 -0
- hydpy/interfaces/tempinterfaces.py +46 -0
- hydpy/models/__init__.py +0 -0
- hydpy/models/arma/__init__.py +14 -0
- hydpy/models/arma/arma_control.py +383 -0
- hydpy/models/arma/arma_derived.py +204 -0
- hydpy/models/arma/arma_fluxes.py +41 -0
- hydpy/models/arma/arma_inlets.py +11 -0
- hydpy/models/arma/arma_logs.py +19 -0
- hydpy/models/arma/arma_model.py +461 -0
- hydpy/models/arma/arma_outlets.py +11 -0
- hydpy/models/arma_rimorido.py +381 -0
- hydpy/models/conv/__init__.py +12 -0
- hydpy/models/conv/conv_control.py +303 -0
- hydpy/models/conv/conv_derived.py +271 -0
- hydpy/models/conv/conv_fluxes.py +54 -0
- hydpy/models/conv/conv_inlets.py +11 -0
- hydpy/models/conv/conv_model.py +687 -0
- hydpy/models/conv/conv_outlets.py +11 -0
- hydpy/models/conv_idw.py +120 -0
- hydpy/models/conv_idw_ed.py +184 -0
- hydpy/models/conv_nn.py +112 -0
- hydpy/models/dam/__init__.py +16 -0
- hydpy/models/dam/dam_aides.py +17 -0
- hydpy/models/dam/dam_control.py +346 -0
- hydpy/models/dam/dam_derived.py +559 -0
- hydpy/models/dam/dam_factors.py +46 -0
- hydpy/models/dam/dam_fluxes.py +179 -0
- hydpy/models/dam/dam_inlets.py +29 -0
- hydpy/models/dam/dam_logs.py +52 -0
- hydpy/models/dam/dam_model.py +5011 -0
- hydpy/models/dam/dam_outlets.py +23 -0
- hydpy/models/dam/dam_receivers.py +41 -0
- hydpy/models/dam/dam_senders.py +23 -0
- hydpy/models/dam/dam_solver.py +75 -0
- hydpy/models/dam/dam_states.py +11 -0
- hydpy/models/dam_llake.py +499 -0
- hydpy/models/dam_lreservoir.py +548 -0
- hydpy/models/dam_lretention.py +343 -0
- hydpy/models/dam_pump.py +278 -0
- hydpy/models/dam_pump_sluice.py +339 -0
- hydpy/models/dam_sluice.py +319 -0
- hydpy/models/dam_v001.py +1127 -0
- hydpy/models/dam_v002.py +381 -0
- hydpy/models/dam_v003.py +422 -0
- hydpy/models/dam_v004.py +665 -0
- hydpy/models/dam_v005.py +479 -0
- hydpy/models/dummy/__init__.py +15 -0
- hydpy/models/dummy/dummy_control.py +22 -0
- hydpy/models/dummy/dummy_fluxes.py +11 -0
- hydpy/models/dummy/dummy_inlets.py +11 -0
- hydpy/models/dummy/dummy_inputs.py +41 -0
- hydpy/models/dummy/dummy_model.py +196 -0
- hydpy/models/dummy/dummy_outlets.py +11 -0
- hydpy/models/dummy_interceptedwater.py +85 -0
- hydpy/models/dummy_node2node.py +83 -0
- hydpy/models/dummy_snowalbedo.py +84 -0
- hydpy/models/dummy_snowcover.py +84 -0
- hydpy/models/dummy_snowycanopy.py +86 -0
- hydpy/models/dummy_soilwater.py +85 -0
- hydpy/models/evap/__init__.py +13 -0
- hydpy/models/evap/evap_control.py +354 -0
- hydpy/models/evap/evap_derived.py +236 -0
- hydpy/models/evap/evap_factors.py +188 -0
- hydpy/models/evap/evap_fixed.py +68 -0
- hydpy/models/evap/evap_fluxes.py +150 -0
- hydpy/models/evap/evap_inputs.py +54 -0
- hydpy/models/evap/evap_logs.py +91 -0
- hydpy/models/evap/evap_masks.py +48 -0
- hydpy/models/evap/evap_model.py +9170 -0
- hydpy/models/evap/evap_parameters.py +149 -0
- hydpy/models/evap/evap_sequences.py +32 -0
- hydpy/models/evap/evap_states.py +18 -0
- hydpy/models/evap_aet_hbv96.py +372 -0
- hydpy/models/evap_aet_minhas.py +331 -0
- hydpy/models/evap_aet_morsim.py +627 -0
- hydpy/models/evap_pet_ambav1.py +483 -0
- hydpy/models/evap_pet_hbv96.py +147 -0
- hydpy/models/evap_pet_m.py +94 -0
- hydpy/models/evap_pet_mlc.py +107 -0
- hydpy/models/evap_ret_fao56.py +265 -0
- hydpy/models/evap_ret_io.py +74 -0
- hydpy/models/evap_ret_tw2002.py +165 -0
- hydpy/models/exch/__init__.py +14 -0
- hydpy/models/exch/exch_control.py +262 -0
- hydpy/models/exch/exch_derived.py +36 -0
- hydpy/models/exch/exch_factors.py +26 -0
- hydpy/models/exch/exch_fluxes.py +48 -0
- hydpy/models/exch/exch_inlets.py +11 -0
- hydpy/models/exch/exch_logs.py +12 -0
- hydpy/models/exch/exch_model.py +451 -0
- hydpy/models/exch/exch_outlets.py +17 -0
- hydpy/models/exch/exch_receivers.py +17 -0
- hydpy/models/exch_branch_hbv96.py +186 -0
- hydpy/models/exch_waterlevel.py +73 -0
- hydpy/models/exch_weir_hbv96.py +609 -0
- hydpy/models/ga/__init__.py +14 -0
- hydpy/models/ga/ga_aides.py +17 -0
- hydpy/models/ga/ga_control.py +208 -0
- hydpy/models/ga/ga_derived.py +77 -0
- hydpy/models/ga/ga_fluxes.py +83 -0
- hydpy/models/ga/ga_inputs.py +26 -0
- hydpy/models/ga/ga_logs.py +17 -0
- hydpy/models/ga/ga_model.py +2952 -0
- hydpy/models/ga/ga_states.py +87 -0
- hydpy/models/ga_garto.py +1001 -0
- hydpy/models/ga_garto_submodel1.py +79 -0
- hydpy/models/gland/__init__.py +14 -0
- hydpy/models/gland/gland_control.py +90 -0
- hydpy/models/gland/gland_derived.py +113 -0
- hydpy/models/gland/gland_fluxes.py +137 -0
- hydpy/models/gland/gland_inputs.py +12 -0
- hydpy/models/gland/gland_model.py +1439 -0
- hydpy/models/gland/gland_outlets.py +11 -0
- hydpy/models/gland/gland_states.py +90 -0
- hydpy/models/gland_gr4.py +501 -0
- hydpy/models/gland_gr5.py +463 -0
- hydpy/models/gland_gr6.py +487 -0
- hydpy/models/hland/__init__.py +20 -0
- hydpy/models/hland/hland_aides.py +19 -0
- hydpy/models/hland/hland_constants.py +37 -0
- hydpy/models/hland/hland_control.py +1530 -0
- hydpy/models/hland/hland_derived.py +683 -0
- hydpy/models/hland/hland_factors.py +57 -0
- hydpy/models/hland/hland_fixed.py +42 -0
- hydpy/models/hland/hland_fluxes.py +279 -0
- hydpy/models/hland/hland_inputs.py +19 -0
- hydpy/models/hland/hland_masks.py +107 -0
- hydpy/models/hland/hland_model.py +4664 -0
- hydpy/models/hland/hland_outlets.py +11 -0
- hydpy/models/hland/hland_parameters.py +227 -0
- hydpy/models/hland/hland_sequences.py +382 -0
- hydpy/models/hland/hland_states.py +236 -0
- hydpy/models/hland_96.py +1812 -0
- hydpy/models/hland_96c.py +1196 -0
- hydpy/models/hland_96p.py +1204 -0
- hydpy/models/kinw/__init__.py +18 -0
- hydpy/models/kinw/kinw_aides.py +306 -0
- hydpy/models/kinw/kinw_control.py +270 -0
- hydpy/models/kinw/kinw_derived.py +197 -0
- hydpy/models/kinw/kinw_fixed.py +33 -0
- hydpy/models/kinw/kinw_fluxes.py +37 -0
- hydpy/models/kinw/kinw_inlets.py +11 -0
- hydpy/models/kinw/kinw_model.py +3026 -0
- hydpy/models/kinw/kinw_outlets.py +11 -0
- hydpy/models/kinw/kinw_solver.py +45 -0
- hydpy/models/kinw/kinw_states.py +17 -0
- hydpy/models/kinw_williams.py +1299 -0
- hydpy/models/kinw_williams_ext.py +768 -0
- hydpy/models/lland/__init__.py +42 -0
- hydpy/models/lland/lland_aides.py +38 -0
- hydpy/models/lland/lland_constants.py +88 -0
- hydpy/models/lland/lland_control.py +1329 -0
- hydpy/models/lland/lland_derived.py +380 -0
- hydpy/models/lland/lland_factors.py +18 -0
- hydpy/models/lland/lland_fixed.py +128 -0
- hydpy/models/lland/lland_fluxes.py +626 -0
- hydpy/models/lland/lland_inlets.py +12 -0
- hydpy/models/lland/lland_inputs.py +33 -0
- hydpy/models/lland/lland_logs.py +17 -0
- hydpy/models/lland/lland_masks.py +212 -0
- hydpy/models/lland/lland_model.py +7690 -0
- hydpy/models/lland/lland_outlets.py +12 -0
- hydpy/models/lland/lland_parameters.py +195 -0
- hydpy/models/lland/lland_sequences.py +67 -0
- hydpy/models/lland/lland_states.py +280 -0
- hydpy/models/lland_dd.py +2270 -0
- hydpy/models/lland_knauf.py +2156 -0
- hydpy/models/lland_knauf_ic.py +1920 -0
- hydpy/models/meteo/__init__.py +12 -0
- hydpy/models/meteo/meteo_control.py +154 -0
- hydpy/models/meteo/meteo_derived.py +159 -0
- hydpy/models/meteo/meteo_factors.py +88 -0
- hydpy/models/meteo/meteo_fixed.py +19 -0
- hydpy/models/meteo/meteo_fluxes.py +46 -0
- hydpy/models/meteo/meteo_inputs.py +47 -0
- hydpy/models/meteo/meteo_logs.py +30 -0
- hydpy/models/meteo/meteo_model.py +2904 -0
- hydpy/models/meteo/meteo_parameters.py +14 -0
- hydpy/models/meteo/meteo_sequences.py +22 -0
- hydpy/models/meteo_clear_glob_io.py +77 -0
- hydpy/models/meteo_glob_fao56.py +217 -0
- hydpy/models/meteo_glob_io.py +68 -0
- hydpy/models/meteo_glob_morsim.py +444 -0
- hydpy/models/meteo_precip_io.py +76 -0
- hydpy/models/meteo_psun_sun_glob_io.py +83 -0
- hydpy/models/meteo_sun_fao56.py +188 -0
- hydpy/models/meteo_sun_morsim.py +466 -0
- hydpy/models/meteo_temp_io.py +76 -0
- hydpy/models/musk/__init__.py +15 -0
- hydpy/models/musk/musk_control.py +328 -0
- hydpy/models/musk/musk_derived.py +32 -0
- hydpy/models/musk/musk_factors.py +53 -0
- hydpy/models/musk/musk_fluxes.py +24 -0
- hydpy/models/musk/musk_inlets.py +11 -0
- hydpy/models/musk/musk_masks.py +15 -0
- hydpy/models/musk/musk_model.py +838 -0
- hydpy/models/musk/musk_outlets.py +11 -0
- hydpy/models/musk/musk_sequences.py +88 -0
- hydpy/models/musk/musk_solver.py +68 -0
- hydpy/models/musk/musk_states.py +64 -0
- hydpy/models/musk_classic.py +228 -0
- hydpy/models/musk_mct.py +1247 -0
- hydpy/models/rconc/__init__.py +12 -0
- hydpy/models/rconc/rconc_control.py +473 -0
- hydpy/models/rconc/rconc_derived.py +76 -0
- hydpy/models/rconc/rconc_fluxes.py +19 -0
- hydpy/models/rconc/rconc_logs.py +74 -0
- hydpy/models/rconc/rconc_model.py +260 -0
- hydpy/models/rconc/rconc_states.py +11 -0
- hydpy/models/rconc_nash.py +48 -0
- hydpy/models/rconc_uh.py +53 -0
- hydpy/models/sw1d/__init__.py +17 -0
- hydpy/models/sw1d/sw1d_control.py +356 -0
- hydpy/models/sw1d/sw1d_derived.py +85 -0
- hydpy/models/sw1d/sw1d_factors.py +78 -0
- hydpy/models/sw1d/sw1d_fixed.py +12 -0
- hydpy/models/sw1d/sw1d_fluxes.py +55 -0
- hydpy/models/sw1d/sw1d_inlets.py +17 -0
- hydpy/models/sw1d/sw1d_model.py +3385 -0
- hydpy/models/sw1d/sw1d_outlets.py +11 -0
- hydpy/models/sw1d/sw1d_receivers.py +11 -0
- hydpy/models/sw1d/sw1d_senders.py +11 -0
- hydpy/models/sw1d/sw1d_states.py +23 -0
- hydpy/models/sw1d_channel.py +2051 -0
- hydpy/models/sw1d_gate_out.py +599 -0
- hydpy/models/sw1d_lias.py +105 -0
- hydpy/models/sw1d_lias_sluice.py +531 -0
- hydpy/models/sw1d_network.py +1219 -0
- hydpy/models/sw1d_pump.py +448 -0
- hydpy/models/sw1d_q_in.py +79 -0
- hydpy/models/sw1d_q_out.py +81 -0
- hydpy/models/sw1d_storage.py +78 -0
- hydpy/models/sw1d_weir_out.py +75 -0
- hydpy/models/test/__init__.py +14 -0
- hydpy/models/test/test_control.py +28 -0
- hydpy/models/test/test_fluxes.py +17 -0
- hydpy/models/test/test_model.py +201 -0
- hydpy/models/test/test_solver.py +48 -0
- hydpy/models/test/test_states.py +17 -0
- hydpy/models/test_discontinous.py +46 -0
- hydpy/models/test_stiff0d.py +47 -0
- hydpy/models/test_stiff1d.py +42 -0
- hydpy/models/whmod/__init__.py +21 -0
- hydpy/models/whmod/whmod_constants.py +77 -0
- hydpy/models/whmod/whmod_control.py +333 -0
- hydpy/models/whmod/whmod_derived.py +210 -0
- hydpy/models/whmod/whmod_factors.py +9 -0
- hydpy/models/whmod/whmod_fluxes.py +105 -0
- hydpy/models/whmod/whmod_inputs.py +15 -0
- hydpy/models/whmod/whmod_masks.py +178 -0
- hydpy/models/whmod/whmod_model.py +2091 -0
- hydpy/models/whmod/whmod_parameters.py +155 -0
- hydpy/models/whmod/whmod_sequences.py +193 -0
- hydpy/models/whmod/whmod_states.py +73 -0
- hydpy/models/whmod_rural.py +794 -0
- hydpy/models/whmod_urban.py +1011 -0
- hydpy/models/wland/__init__.py +43 -0
- hydpy/models/wland/wland_aides.py +55 -0
- hydpy/models/wland/wland_constants.py +103 -0
- hydpy/models/wland/wland_control.py +508 -0
- hydpy/models/wland/wland_derived.py +330 -0
- hydpy/models/wland/wland_factors.py +11 -0
- hydpy/models/wland/wland_fixed.py +12 -0
- hydpy/models/wland/wland_fluxes.py +166 -0
- hydpy/models/wland/wland_inputs.py +33 -0
- hydpy/models/wland/wland_masks.py +54 -0
- hydpy/models/wland/wland_model.py +3755 -0
- hydpy/models/wland/wland_outlets.py +11 -0
- hydpy/models/wland/wland_parameters.py +214 -0
- hydpy/models/wland/wland_sequences.py +108 -0
- hydpy/models/wland/wland_solver.py +45 -0
- hydpy/models/wland/wland_states.py +56 -0
- hydpy/models/wland_gd.py +888 -0
- hydpy/models/wland_wag.py +1244 -0
- hydpy/models/wq/__init__.py +14 -0
- hydpy/models/wq/wq_control.py +117 -0
- hydpy/models/wq/wq_derived.py +182 -0
- hydpy/models/wq/wq_factors.py +79 -0
- hydpy/models/wq/wq_fluxes.py +17 -0
- hydpy/models/wq/wq_model.py +1889 -0
- hydpy/models/wq_trapeze.py +168 -0
- hydpy/models/wq_trapeze_strickler.py +101 -0
- hydpy/models/wq_walrus.py +57 -0
- hydpy/py.typed +0 -0
- hydpy/tests/.coveragerc +22 -0
- hydpy/tests/__init__.py +0 -0
- hydpy/tests/check_consistency.py +32 -0
- hydpy/tests/hydpydoctestcustomize.pth +1 -0
- hydpy/tests/hydpydoctestcustomize.py +15 -0
- hydpy/tests/iotesting/__init__.py +0 -0
- hydpy/tests/run_doctests.py +233 -0
- hydpy-6.2.dev1.data/scripts/hyd.py +277 -0
- hydpy-6.2.dev1.dist-info/LICENSE +165 -0
- hydpy-6.2.dev1.dist-info/METADATA +163 -0
- hydpy-6.2.dev1.dist-info/RECORD +890 -0
- hydpy-6.2.dev1.dist-info/WHEEL +5 -0
- hydpy-6.2.dev1.dist-info/licenses_hydpy_installer.txt +42 -0
- hydpy-6.2.dev1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
|
|
2
|
+
.. role:: raw-html(raw)
|
|
3
|
+
:format: html
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
.. _definitions:
|
|
7
|
+
|
|
8
|
+
Definitions
|
|
9
|
+
===========
|
|
10
|
+
|
|
11
|
+
HydPy is a Python library that follows the principles of object-oriented programming,
|
|
12
|
+
so its key concepts are usually implemented via classes. The :ref:`reference_manual`
|
|
13
|
+
describes these classes and all their functionalities in detail, which is too much
|
|
14
|
+
information for HydPy beginners. This section offers easier access to HydPy's key
|
|
15
|
+
concepts by listing the central terms and briefly explaining how we understand them.
|
|
16
|
+
If you want to know more, follow the links to the :ref:`reference_manual`.
|
|
17
|
+
|
|
18
|
+
.. _module:
|
|
19
|
+
|
|
20
|
+
module
|
|
21
|
+
______
|
|
22
|
+
|
|
23
|
+
`Module` is the Python term for a single source code file. HydPy's documentation is
|
|
24
|
+
highly in sync with its source code. Hence, we often mention that a particular module
|
|
25
|
+
provides certain features. If you are interested, click on the link to the module or
|
|
26
|
+
search for it in the quick search bar to be directed to a documentation page explaining
|
|
27
|
+
this specific module and all its features.
|
|
28
|
+
|
|
29
|
+
.. _subpackage:
|
|
30
|
+
|
|
31
|
+
subpackage
|
|
32
|
+
__________
|
|
33
|
+
|
|
34
|
+
Python libraries like HydPy are often called "packages". `subpackage` is a
|
|
35
|
+
subdirectory of the complete HydPy package that combines multiple related :ref:`modules
|
|
36
|
+
<module>`. The "model" subpackage, for example, contains all :ref:`base models
|
|
37
|
+
<base_model>` (defined in nested `subpackages` and :ref:`application models
|
|
38
|
+
<application_model>` (defined in single modules).
|
|
39
|
+
|
|
40
|
+
.. _class:
|
|
41
|
+
|
|
42
|
+
class
|
|
43
|
+
_____
|
|
44
|
+
|
|
45
|
+
`Class` (or "type") is a core term in object-oriented programming. In this
|
|
46
|
+
documentation, `class` usually refers to a Python class, with which we often represent
|
|
47
|
+
a hydrological "thing" in general. A general example is the type |float|, which
|
|
48
|
+
defines the general properties of floating-point numbers in Python. A HydPy-specific
|
|
49
|
+
example is the class |hland_control.Area|, used by the model family :ref:`HydPy-H` to
|
|
50
|
+
represent a subbasin's area.
|
|
51
|
+
|
|
52
|
+
.. _subclass:
|
|
53
|
+
|
|
54
|
+
subclass
|
|
55
|
+
________
|
|
56
|
+
|
|
57
|
+
In object-oriented programming, a subclass (or child class) inherits the properties of
|
|
58
|
+
its base classes. One can understand this concept intuitively by considering
|
|
59
|
+
`Furniture` as a base class and `Chair` and `Table` as its subclasses. `Chair` and
|
|
60
|
+
`Table` could share common properties such as `colour` defined by their common base
|
|
61
|
+
class. However, only class `Chair` would need a property like `backrest`.
|
|
62
|
+
|
|
63
|
+
From the development perspective, the concept of subclassing prevents code
|
|
64
|
+
duplications. In the given example, one must add the property `colour` only to the
|
|
65
|
+
single base class `Furniture`, not its two subclasses `Chair` and `Table`. But
|
|
66
|
+
remembering that HydPy relies heavily on subclassing also eases its understanding a
|
|
67
|
+
lot. For example, the mentioned class |hland_control.Area| is a subclass of the base
|
|
68
|
+
class |Parameter| (noted in the first documentation line). Hence, you can expect
|
|
69
|
+
|hland_control.Area| to work like all other |Parameter| subclasses, but it might
|
|
70
|
+
provide additional features. One example of a shared property is the general class
|
|
71
|
+
attribute |Variable.TYPE|, which tells if a parameter handles, for example, integer or
|
|
72
|
+
floating-point values. As you can see in the documentation on |hland_control.Area|,
|
|
73
|
+
:ref:`HydPy-H` (unsurprisingly) expects the subbasin area to be defined by
|
|
74
|
+
floating-point values.
|
|
75
|
+
|
|
76
|
+
.. _instance:
|
|
77
|
+
|
|
78
|
+
instance
|
|
79
|
+
________
|
|
80
|
+
|
|
81
|
+
An `instance` (or "object") is a concrete realisation of a :ref:`class`. `1.5`, for
|
|
82
|
+
example, is an instance of |float| with concrete data that makes it usable. You can
|
|
83
|
+
add two |float| instances with the value `1.5` to get the new float instance `3.0`. In
|
|
84
|
+
contrast, adding two classes does not make sense. To give a HydPy example, class
|
|
85
|
+
|hland_control.Area| defines how we define the area of a subcatchment and how we can
|
|
86
|
+
use it when working with members of the :ref:`HydPy-H` model family. But when dealing
|
|
87
|
+
with the concrete area of a specific subbasin, we work with a single instance of
|
|
88
|
+
|hland_control.Area|.
|
|
89
|
+
|
|
90
|
+
.. _model:
|
|
91
|
+
|
|
92
|
+
model
|
|
93
|
+
_____
|
|
94
|
+
|
|
95
|
+
In hydrology, the meaning of the term `model` is highly context-dependent. Technically
|
|
96
|
+
speaking, this documentation typically uses it to refer to a user-relevant subclass of
|
|
97
|
+
the base class |Model|. Many such classes provide the features to represent the water
|
|
98
|
+
cycle within a subcatchment (e.g. |hland_96|). Others deal with related processes like
|
|
99
|
+
flood routing (e.g. |musk_classic|) or serve more technical purposes like interpolation
|
|
100
|
+
of meteorological input data (e.g. |conv_idw|). The following subsections describe the
|
|
101
|
+
most relevant model-related terms used throughout this documentation.
|
|
102
|
+
|
|
103
|
+
.. _project:
|
|
104
|
+
|
|
105
|
+
project
|
|
106
|
+
_______
|
|
107
|
+
|
|
108
|
+
The term `model` in hydrology often refers to the complete input and configuration data
|
|
109
|
+
necessary to simulate a catchment's water cycle. As explained in the :ref:`Model`
|
|
110
|
+
section, we prefer to use it in the sense of "model type". Hence, when discussing
|
|
111
|
+
"readily set-up models", we use the term `project` instead. See the
|
|
112
|
+
:ref:`HydPy-H-Lahn` project for an example.
|
|
113
|
+
|
|
114
|
+
.. _model_family:
|
|
115
|
+
|
|
116
|
+
model family
|
|
117
|
+
____________
|
|
118
|
+
|
|
119
|
+
Each `model family` targets certain hydrologcial processes or more technical purposes
|
|
120
|
+
and consists of one :ref:`base_model` and several :ref:`application models
|
|
121
|
+
<application_model>`. Some model families are the only ones that fulfil a specific
|
|
122
|
+
task, while others share their tasks but accomplish it with different means. For
|
|
123
|
+
example, :ref:`HydPy-Evap` is the only model family with :ref:`submodels <submodel>`
|
|
124
|
+
suitable for calculating evapotranspiration. In contrast, :ref:`HydPy-Musk` and
|
|
125
|
+
:ref:`HydPy-SW1D` share the same target (flood routing) but achieve it with very
|
|
126
|
+
different approaches ("hydrological" Muskingum routing vs "hydrodynamical"
|
|
127
|
+
Saint-Vernaint routing).
|
|
128
|
+
|
|
129
|
+
.. _base_model:
|
|
130
|
+
|
|
131
|
+
base model
|
|
132
|
+
__________
|
|
133
|
+
|
|
134
|
+
A `base model` provides all :ref:`methods <method>` to be used by the :ref:`application
|
|
135
|
+
models <application_model>` of the same :ref:`model_family`. In practice, base models
|
|
136
|
+
are merely important for model developers. However, we use base modelsto explain and
|
|
137
|
+
test individual methods, so one frequently encounters them when reading the
|
|
138
|
+
documentation. See, for example, the documentation on method |hland_model.Calc_TC_V1|,
|
|
139
|
+
which uses the base model |hland| of the model family :ref:`HydPy-H` to explain the
|
|
140
|
+
adjustment of subbasin-wide average air temperature to hydrological response units with
|
|
141
|
+
different elevations. The explanations and tests apply to all submodels selecting this
|
|
142
|
+
method (in this case, all application models of :ref:`HydPy-H`).
|
|
143
|
+
|
|
144
|
+
A base model's name equals the name of the :ref:`subpackage` containing
|
|
145
|
+
all :ref:`modules <module>` defining it.
|
|
146
|
+
|
|
147
|
+
.. _application_model:
|
|
148
|
+
|
|
149
|
+
application model
|
|
150
|
+
_________________
|
|
151
|
+
|
|
152
|
+
`Application models` are user-relevant model types. They select suitable combinations
|
|
153
|
+
of the :ref:`methods <method>` provided by the :ref:`base_model` of the same
|
|
154
|
+
:ref:`model_family`. (Hence, technically speaking, an `application model` is a
|
|
155
|
+
composition of components provided by a base model, not its subclass.) Two examples of
|
|
156
|
+
the :ref:`HydPy-Evap` model family are |evap_ret_fao56| and |evap_ret_tw2002|, which
|
|
157
|
+
calculate the reference evapotranspiration according :t:`ref-Allen1998` and
|
|
158
|
+
:cite:t:`ref-DVWK`, respectively.
|
|
159
|
+
|
|
160
|
+
An application model's name equals the name of the :ref:`module` defining it.
|
|
161
|
+
|
|
162
|
+
.. _main_model:
|
|
163
|
+
|
|
164
|
+
main model
|
|
165
|
+
__________
|
|
166
|
+
|
|
167
|
+
Essentially, HydPy :ref:`projects <project>` are structured via :ref:`elements
|
|
168
|
+
<element>` and :ref:`nodes <node>`. Each element instance directly handles one `main
|
|
169
|
+
model` instance (and indirectly, eventually, some :ref:`submodel` instances). The
|
|
170
|
+
`main model` defines the general considered processes and executes them or delegates
|
|
171
|
+
this task to its submodels. For example, by selecting |hland_96| as the `main model`,
|
|
172
|
+
one determines that a subbasin's runoff generation and concentration processes are
|
|
173
|
+
represented in the style of HBV96 :cite:p:`ref-Lindstrom1997HBV96`.
|
|
174
|
+
|
|
175
|
+
.. _submodel:
|
|
176
|
+
|
|
177
|
+
submodel
|
|
178
|
+
________
|
|
179
|
+
|
|
180
|
+
`Submodels` are selectable (and sometimes optional) members of :ref:`main models
|
|
181
|
+
<main_model>` that serve more specific tasks. For example, |evap_pet_hbv96| and
|
|
182
|
+
|evap_aet_hbv96| calculate potential and actual evapotranspiration following HBV96
|
|
183
|
+
:cite:p:`ref-Lindstrom1997HBV96`. One can "plug them" to |hland_96| to get a
|
|
184
|
+
consistent HBV96 model but also to other application models of :ref:`HydPy-H` and
|
|
185
|
+
different model families.
|
|
186
|
+
|
|
187
|
+
Note that we sometimes use the term `sub-submodel` when submodels can themselves use
|
|
188
|
+
submodels. For example, |evap_aet_hbv96| can use |evap_pet_hbv96| or a similar submodel
|
|
189
|
+
to gain potential evapotranspiration estimates.
|
|
190
|
+
|
|
191
|
+
.. _submodel_interface:
|
|
192
|
+
|
|
193
|
+
submodel interface
|
|
194
|
+
__________________
|
|
195
|
+
|
|
196
|
+
In object-oriented programming, an `interface` is an abstract description of concrete
|
|
197
|
+
:ref:`classes <class>`. If, for example, a function is "programmed against" an
|
|
198
|
+
`interface`, it can use all concrete classes that "implement" it (synonyms of
|
|
199
|
+
"implement" are "follow" and "comply with").
|
|
200
|
+
|
|
201
|
+
HydPy's design of the :ref:`submodel` concept relies on this programming technique.
|
|
202
|
+
The :ref:`subpackage` `interfaces` provides multiple abstract descriptions for
|
|
203
|
+
submodels. Users do not need to be aware of all details but should understand that if
|
|
204
|
+
an :ref:`application_model` like |hland_96| claims it can consider additional runoff
|
|
205
|
+
concentration processes by using a submodel that follows the |RConcModel_V1| interface,
|
|
206
|
+
they can use, for example, |rconc_uh| for this purpose, as it one of the submodels
|
|
207
|
+
following the |RConcModel_V1| interface.
|
|
208
|
+
|
|
209
|
+
.. _submodel_port:
|
|
210
|
+
|
|
211
|
+
submodel port
|
|
212
|
+
_____________
|
|
213
|
+
|
|
214
|
+
A :ref:`main_model` instance requires connections to all its direct submodel instances
|
|
215
|
+
(but not to its sub-submodel instances). These attribute-like connections are named
|
|
216
|
+
`submodel port` or just `port`. To continue the above example, |hland_96| has the
|
|
217
|
+
`rconcmodel` port to keep a |rconc_uh| submodel accessible. Technically, such a `port`
|
|
218
|
+
is implemented via an instance of the class |SubmodelProperty| (for managing a single
|
|
219
|
+
submodel instance as an attribute) or |SubmodelsProperty| (for managing a submodel
|
|
220
|
+
vector as an attribute).
|
|
221
|
+
|
|
222
|
+
Submodel graphs like the one shown in the :ref:`model_overview` section alternate
|
|
223
|
+
between model and port names (main model :raw-html:`→` port :raw-html:`→`
|
|
224
|
+
submodel :raw-html:`→` port :raw-html:`→` sub-submodel...).
|
|
225
|
+
|
|
226
|
+
.. _stand_alone_model:
|
|
227
|
+
|
|
228
|
+
stand-alone model
|
|
229
|
+
_________________
|
|
230
|
+
|
|
231
|
+
Most :ref:`submodels <submodel>` work only as members of a :ref:`main_model` instance.
|
|
232
|
+
However, there are some exceptions like |evap_ret_fao56|, which also work as
|
|
233
|
+
`stand-alone models`. Suppose you are, for example, just interested in calculating
|
|
234
|
+
reference evapotranspiration for a subbasin. In that case, do not need to set up a
|
|
235
|
+
complete "land model" but can assign an |evap_ret_fao56| instance directly to an
|
|
236
|
+
:ref:`element` (or even use it without any "network overhead").
|
|
237
|
+
|
|
238
|
+
.. _method:
|
|
239
|
+
|
|
240
|
+
method
|
|
241
|
+
______
|
|
242
|
+
|
|
243
|
+
This documentation uses the term `method` in two ways. First, following
|
|
244
|
+
object-oriented programming terminology, it stands for (Python) functions directly
|
|
245
|
+
related to a :ref:`classes <class>`. Second, it stands for the "granular units" (often
|
|
246
|
+
single equations) of (more or less) hydrological approaches implemented via subclasses
|
|
247
|
+
of class |Method|. One example is |hland_model.Calc_TC_V1|, which adjusts the
|
|
248
|
+
subbasin-wide average air temperature to hydrological response units with different
|
|
249
|
+
elevations following HBV96 :cite:p:`ref-Lindstrom1997HBV96`. The :ref:`base_model`
|
|
250
|
+
|hland| defines this method, and :ref:`application models <application_model>` like
|
|
251
|
+
|hland_96| use it.
|
|
252
|
+
|
|
253
|
+
.. _network:
|
|
254
|
+
|
|
255
|
+
network
|
|
256
|
+
_______
|
|
257
|
+
|
|
258
|
+
The term `network` addresses the (spatial) connections necessary to model a catchment
|
|
259
|
+
consisting of more than one subbasin. A `network` combines consistently coupled
|
|
260
|
+
:ref:`element` and :ref:`node` instances.
|
|
261
|
+
|
|
262
|
+
.. _element:
|
|
263
|
+
|
|
264
|
+
element
|
|
265
|
+
_______
|
|
266
|
+
|
|
267
|
+
`Element` instances are the central components of each HydPy :ref:`project's <project>`
|
|
268
|
+
:ref:`network`. They usually represent places where something needs to be calculated,
|
|
269
|
+
for example, the subbasin of a catchment (where we want to calculate runoff generation
|
|
270
|
+
and concentration) or a river crossing a subbasin (where we want to calculate flood
|
|
271
|
+
routing).
|
|
272
|
+
|
|
273
|
+
Within a :ref:`project`, each `element` instance has a unique, user-defined name that
|
|
274
|
+
serves to identify it.
|
|
275
|
+
|
|
276
|
+
`Elements` cannot perform calculations by themselves but require :ref:`application
|
|
277
|
+
models <application_model>`. Each `element` instance handles a single
|
|
278
|
+
:ref:`main_model` (which might have several :ref:`submodels <submodel>`). The
|
|
279
|
+
`element's` task is mainly to connect its model to the network and enable data exchange
|
|
280
|
+
with other models via :ref:`nodes <node>`. A routing model, for example, receives its
|
|
281
|
+
inflow through its `element's` "inlet nodes" and passes it through its `element's`
|
|
282
|
+
"outlet nodes" to the next `element` downstream, which might handle another routing
|
|
283
|
+
model of the same or a different type or, for example, a lake model. Pure information
|
|
284
|
+
like the current water level within river reach required to control an upstream dam's
|
|
285
|
+
water release is sent and received via "sender nodes" and "receiver nodes".
|
|
286
|
+
|
|
287
|
+
HydPy only provides a single `element` type (defined by class |Element|), which can
|
|
288
|
+
handle all different model types.
|
|
289
|
+
|
|
290
|
+
.. _node:
|
|
291
|
+
|
|
292
|
+
node
|
|
293
|
+
____
|
|
294
|
+
|
|
295
|
+
`Node` instances are the second essential component of all :ref:`networks <network>`.
|
|
296
|
+
They allow specifying which :ref:`model` instance passes which type of information in
|
|
297
|
+
which direction. The "direction" follows from the given connections to :ref:`element`
|
|
298
|
+
instances (which handle the model instances). The "type" can be set by the `node's`
|
|
299
|
+
"variable" (see attribute |Node.variable| of class |Node|). Typical "places" for
|
|
300
|
+
`nodes` are basin outlets, river mouths or streamflow gauges.
|
|
301
|
+
|
|
302
|
+
Within a :ref:`project`, each `node` instance has a unique, user-defined name that
|
|
303
|
+
serves to identify it.
|
|
304
|
+
|
|
305
|
+
In contrast to elements, `nodes` do not differentiate between "local material transfer"
|
|
306
|
+
and "remote information transfer". They generally get it from their "entry elements"
|
|
307
|
+
and pass all data to their "exit elements".
|
|
308
|
+
|
|
309
|
+
Besides passing data from one model to the other, `nodes` support provide features like
|
|
310
|
+
injecting externally prepared time series or comparing simulated with observed
|
|
311
|
+
data, which are especially important when a node represents a streamflow gauge.
|
|
312
|
+
|
|
313
|
+
.. _device:
|
|
314
|
+
|
|
315
|
+
device
|
|
316
|
+
______
|
|
317
|
+
|
|
318
|
+
We use `device` as the umbrella term for :ref:`element` and :ref:`node`. (This is due
|
|
319
|
+
to the technical fact that the classes |Element| and |Node| are subclasses of the base
|
|
320
|
+
class |Device|.)
|
|
321
|
+
|
|
322
|
+
.. _selection:
|
|
323
|
+
|
|
324
|
+
selection
|
|
325
|
+
_________
|
|
326
|
+
|
|
327
|
+
A `selection` combines multiple :ref:`node` and :ref:`element` instances. Each HydPy
|
|
328
|
+
:ref:`project` automatically contains one named "complete" that covers the entire
|
|
329
|
+
:ref:`network`. You can freely define additional `selections` and store them in
|
|
330
|
+
individual network files (see the documentation on module |selectiontools| on how to do
|
|
331
|
+
this).
|
|
332
|
+
|
|
333
|
+
Often, `selections` represent subareas of large river basins modelled by multiple
|
|
334
|
+
"land" and "routing" models. Still, you can choose any other criteria; the
|
|
335
|
+
:ref:`HydPy-H-Lahn` project, for example, uses selections to distinguish headwater from
|
|
336
|
+
non-headwater catchments.
|
|
337
|
+
|
|
338
|
+
Overlapping is allowed, meaning the same node or element instance can be a member of
|
|
339
|
+
multiple `selections`.
|
|
340
|
+
|
|
341
|
+
.. _keyword:
|
|
342
|
+
|
|
343
|
+
keyword
|
|
344
|
+
_______
|
|
345
|
+
|
|
346
|
+
Throughout this documentation, the term `keyword` often means "short text attached to
|
|
347
|
+
:ref:`element` or :ref:`node` instances". These `keywords` serve as simple metadata
|
|
348
|
+
and help to query certain instances. For example, one can add the string "gauge" to
|
|
349
|
+
all node instances representing locations with runoff measurements, making it easy to
|
|
350
|
+
calculate Nash-Sutcliffe coefficients wherever possible.
|
|
351
|
+
|
|
352
|
+
Each element and node instance can hold multiple `keywords`.
|
|
353
|
+
|
|
354
|
+
.. _parameter:
|
|
355
|
+
|
|
356
|
+
parameter
|
|
357
|
+
_________
|
|
358
|
+
|
|
359
|
+
The programming and hydrological communities use the term `parameter` differently. In
|
|
360
|
+
Python, `parameter` means a variable of a function that receives its data when the
|
|
361
|
+
function is called (in `def f(x):`, `x` is the variable). To avoid confusion, we try
|
|
362
|
+
to avoid the term `parameter` in this context and instead speak of (function)
|
|
363
|
+
arguments.
|
|
364
|
+
|
|
365
|
+
In hydrological modelling, `parameters` represent properties (described by numbers)
|
|
366
|
+
that often depend on the spatial characteristics of a catchment but are not changed by
|
|
367
|
+
the model equations. In most cases, `parameter` values do not change at all during a
|
|
368
|
+
simulation run (for example, a soil's field capacity). In other cases, the `parameter`
|
|
369
|
+
values vary in a predefined, often daily or annual pattern (for example, a deciduous
|
|
370
|
+
tree's leaf area index).
|
|
371
|
+
|
|
372
|
+
All implemented `parameter` types are subclasses of the base class |Parameter|. We
|
|
373
|
+
differentiate them into the following groups.
|
|
374
|
+
|
|
375
|
+
From the user's perspective, the `control parameters` are most important. One must set
|
|
376
|
+
the values of these `parameters`, which is typically done within "control files", to
|
|
377
|
+
adjust the selected model to the processes of the considered catchment. One example is
|
|
378
|
+
|hland_control.FC|, the field capacity parameter of the :ref:`HydPy-H` model family.
|
|
379
|
+
Note that many `control parameters` offer individual functionalities that often serve
|
|
380
|
+
to reduce configuration efforts.
|
|
381
|
+
|
|
382
|
+
One often encounters `derived parameters` when reading the basic equations and
|
|
383
|
+
explanations of individual :ref:`methods <method>`, but users must seldom configure
|
|
384
|
+
them directly. In applications, `derived parameters` usually query information from
|
|
385
|
+
`control parameters` to calculate their values automatically. If ever, users should
|
|
386
|
+
modify these values for testing purposes. One example is |hland_derived.QFactor|,
|
|
387
|
+
which uses the user-defined subcatchment area (defined by `control parameter`
|
|
388
|
+
|hland_control.Area|) to determine the factor for converting the units of fluxes from
|
|
389
|
+
mm/T to m³/s (with `T` being the simulation step size).
|
|
390
|
+
|
|
391
|
+
`Fixed parameters` represent mathematical or physical properties with unambiguous
|
|
392
|
+
values. Principally, users can modify them, but this is more a feature for testing
|
|
393
|
+
than for practical applications. One example (for a `parameter` with a definitely
|
|
394
|
+
fixed value) is |hland_fixed.Pi|.
|
|
395
|
+
|
|
396
|
+
`Solver parameters` determine the numerical accuracy of :ref:`application models
|
|
397
|
+
<application_model>` that rely on numerical integration methods. All `solver
|
|
398
|
+
parameters` come with default values. These should be sensible in most cases, but
|
|
399
|
+
experienced users always have the option to modify them for potential benefits in
|
|
400
|
+
accuracy or simulation speed. One example is |wland_solver.AbsErrorMax|, which defines
|
|
401
|
+
the local truncation error when working with the models of the :ref:`HydPy-W` family.
|
|
402
|
+
|
|
403
|
+
.. _sequence:
|
|
404
|
+
|
|
405
|
+
sequence
|
|
406
|
+
________
|
|
407
|
+
|
|
408
|
+
In HydPy, the term `sequence's` meaning differs from the Python terminology, and
|
|
409
|
+
one should be aware of a class conflict.
|
|
410
|
+
|
|
411
|
+
In Python, `sequence` refers to any indexable, ordered data collection. A `string`
|
|
412
|
+
(|str|), for example, is a fixed collection of Unicode characters and a `list` (|list|)
|
|
413
|
+
is an adjustable collection of arbitrary objects. We avoid using the term `sequence`
|
|
414
|
+
this way in the documentation texts. Still, many type hints (which define, for
|
|
415
|
+
example, which type of data a function accepts) rely on Python's corresponding abstract
|
|
416
|
+
collection type `Sequence`. (To a function argument annotated with `Sequence[str]`,
|
|
417
|
+
you can pass a string, a list of strings, or any other indexable, ordered collection
|
|
418
|
+
that only contains strings.)
|
|
419
|
+
|
|
420
|
+
In HydPy, we understand the term `sequence` similar to the term :ref:`parameter`, with
|
|
421
|
+
the difference that `sequence` addresses properties that change during a simulation
|
|
422
|
+
run. These properties can be external forcings like precipitation or calculation
|
|
423
|
+
results like discharge. To limit confusion and prevent class name clashes, we added an
|
|
424
|
+
underscore to the general `sequence` base class |Sequence_|.
|
|
425
|
+
|
|
426
|
+
The terms `sequence` and "time series" are closely related but not interchangable. By
|
|
427
|
+
default, `sequence` instances only handle the current value (or, in some cases, the
|
|
428
|
+
recent values) of the properties they represent. Yet, most `sequences` have the
|
|
429
|
+
|IOSequence.series| attribute, allowing them to keep the time series of a complete
|
|
430
|
+
simulation period.
|
|
431
|
+
|
|
432
|
+
We differentiate all implemented `sequence` types into different groups. All
|
|
433
|
+
`sequences` of a group share a common base class that offers special functionalities.
|
|
434
|
+
|
|
435
|
+
`Input sequences` (derived from |InputSequence|) provide the (mostly meteorological)
|
|
436
|
+
input forcings required for hydrological simulations, usually by reading their data
|
|
437
|
+
from time series files.
|
|
438
|
+
|
|
439
|
+
`State and log sequences` serve as a :ref:`model's <model>` memory. We often subsume
|
|
440
|
+
them as "condition sequences" or simply "conditions". `State sequences` (derived from
|
|
441
|
+
|StateSequence|) represent current states like soil moisture. `Log sequences` (derived
|
|
442
|
+
from |LogSequence|) log previous input data or calculation results required by
|
|
443
|
+
approaches like the Unit Hydrograph method. `State and log sequences` usually read
|
|
444
|
+
their initial conditions from "condition files" and and become stepwise updated during
|
|
445
|
+
simulation runs.
|
|
446
|
+
|
|
447
|
+
`Factor and flux sequences` contain pure simulation results. They are technically
|
|
448
|
+
identical but target different properties. `Factor sequences` (derived from
|
|
449
|
+
|FactorSequence|) deal with factors like air temperature or water level, while flux
|
|
450
|
+
sequences (derived from |FluxSequence|) deal with fluxes like global radiation or
|
|
451
|
+
discharge.
|
|
452
|
+
|
|
453
|
+
`Link sequences` (derived from |LinkSequence|) do not carry data of their own but point
|
|
454
|
+
to the data handled by the `node sequences` (derived from |NodeSequence|) of node
|
|
455
|
+
instances. They enable models to query data from and manipulate the data of node
|
|
456
|
+
instances, which is the standard way of data exchange between model instances over the
|
|
457
|
+
network.
|
|
458
|
+
|
|
459
|
+
`Inlet and outlet` sequences are the two most relevant `link sequence` types. They
|
|
460
|
+
serve to pass fluxes downstream. `Inlet sequences` (derived from |InletSequence|)
|
|
461
|
+
enable, for example, routing models to get inflow from upstream models, while `outlet
|
|
462
|
+
sequences` (derived from |OutletSequences| enable them to pass it in modified form to
|
|
463
|
+
downstream models.
|
|
464
|
+
|
|
465
|
+
`Receiver and sender sequences` are also `link sequences`. They allow the distribution
|
|
466
|
+
of different kinds of information to arbitrary locations in the network. For example,
|
|
467
|
+
a downstream routing model could use a `sender sequence` (derived from
|
|
468
|
+
|SenderSequence|) to pass its water level to a "remote node", and an upstream pumping
|
|
469
|
+
station model could query this information from the "remote node" via a `receiver
|
|
470
|
+
sequence` (derived from |ReceiverSequence|) to stop its pumping as soon the actual
|
|
471
|
+
water level exceeds a critical threshold.
|
|
472
|
+
|
|
473
|
+
`Aide sequences` (derived from |AideSequence|) only store temporary information and are
|
|
474
|
+
of little importance to users.
|
|
475
|
+
|
|
476
|
+
Note that `state, factor, and flux sequences` are sometimes called` output sequences`
|
|
477
|
+
for two reasons. First, they support writing simulation results to time series files.
|
|
478
|
+
Second, HydPy allows connecting an `output sequence` of one model instance to an
|
|
479
|
+
`input sequence` of another model instance. (This feature is unhandy, so we added the
|
|
480
|
+
submodel concept to HydPy 6.0. Only a few cases are left where the input-output
|
|
481
|
+
sequence mechanism is still required.)
|
|
482
|
+
|
|
483
|
+
.. _time_grid:
|
|
484
|
+
|
|
485
|
+
time grid
|
|
486
|
+
_________
|
|
487
|
+
|
|
488
|
+
In HydPy, a `time grid` is a set of equally long time intervals defined by an instance
|
|
489
|
+
of the |Timegrid| class. Due to the intervals' equal length, a `time grid` instance is
|
|
490
|
+
outright specified by the starting point of its first interval (|Timegrid.firstdate|),
|
|
491
|
+
the endpoint of its last interval (|Timegrid.lastdate|), and the size of a single
|
|
492
|
+
interval (|Timegrid.stepsize|).
|
|
493
|
+
|
|
494
|
+
When working on a :ref:`project`, one usually deals with three different `time grids`,
|
|
495
|
+
which are handled by an instance of class |Timegrids|:
|
|
496
|
+
|
|
497
|
+
* The `initialisation time grid` (|Timegrids.init|) covers the relevant period
|
|
498
|
+
completely. For example, when HydPy prepares to read time series data from disk, it
|
|
499
|
+
allocates just enough RAM as indicated by |Timegrids.init|.
|
|
500
|
+
* The `simulation time grid` (|Timegrids.sim|) defines the period of the next
|
|
501
|
+
simulation run. By default, it equals |Timegrids.init|), but one can truncate it to
|
|
502
|
+
a subperiod of the initialisation period, which helps, for example, implementing
|
|
503
|
+
data assimilation methods efficiently.
|
|
504
|
+
* The `evaluation time grid` (|Timegrids.eval_|) defines the period of the next
|
|
505
|
+
statistical or graphical evaluation of simulation results. Functions like |nse|
|
|
506
|
+
respect |Timegrids.eval_| automatically if not instructed otherwise.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
.. _hydpy package: https://pypi.org/project/HydPy
|
|
2
|
+
.. _Python Package Index: https://pypi.python.org/pypi
|
|
3
|
+
.. _hydpy repository: https://github.com/hydpy-dev/hydpy
|
|
4
|
+
.. _GitHub: https://github.com
|
|
5
|
+
.. _pandas: http://pandas-docs.github.io/pandas-docs-travis/contributing.html
|
|
6
|
+
|
|
7
|
+
.. _developer_guide:
|
|
8
|
+
|
|
9
|
+
Developer Guide
|
|
10
|
+
===============
|
|
11
|
+
|
|
12
|
+
When applying *HydPy*, you can download it from the `hydpy package`_
|
|
13
|
+
available on the `Python package index`_ and install it with little effort.
|
|
14
|
+
There is a considerable amount of Python tools freely available, being
|
|
15
|
+
of great help when trying to achieve more complex tasks like parameter
|
|
16
|
+
calibration or regionalisation. Cherry picking from different Python
|
|
17
|
+
packages can be a substantial time-saving. Very often it is not necessary
|
|
18
|
+
to write a "real" Python program for the task at hand. Instead, writing a
|
|
19
|
+
simple script utilising functionalities of different packages in the correct
|
|
20
|
+
order often gets the job done.
|
|
21
|
+
|
|
22
|
+
There is also nothing stopping you from modifying the downloaded Python
|
|
23
|
+
files in your favour. You are free to modify existing models, implement
|
|
24
|
+
new ones,or change the framework's structure in a manner that meets your
|
|
25
|
+
personal goals and preferences.
|
|
26
|
+
|
|
27
|
+
However, if you intend to contribute to the further development of *HydPy*,
|
|
28
|
+
you must abandon some parts of freedom and ease of use Python offers.
|
|
29
|
+
First, you must become acquainted with the collaborative development of the
|
|
30
|
+
`hydpy repository`_, primarily taking place on `GitHub`_. Second, you
|
|
31
|
+
need to follow some guidelines on the development of *HydPy*. The Python
|
|
32
|
+
code contributed by different developers should be as consistent as possible.
|
|
33
|
+
Otherwise, there would be a risk of the code base becoming opaque (or
|
|
34
|
+
even faulty), impeding future extensions of *HydPy*.
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
The following sections try to define a strategy allowing to develop *HydPy*
|
|
38
|
+
as an open source project while maintaining sufficiently high quality for
|
|
39
|
+
scientific and engineering applications. The hydrological modelling
|
|
40
|
+
community has not made much progress in this field yet, which is why we
|
|
41
|
+
adopted many concepts from non-hydrological open source projects like
|
|
42
|
+
`pandas`_. Ideas and discussions on improving the outlined strategy are
|
|
43
|
+
welcome!
|
|
44
|
+
|
|
45
|
+
.. toctree::
|
|
46
|
+
:hidden:
|
|
47
|
+
|
|
48
|
+
required_tools
|
|
49
|
+
version_control
|
|
50
|
+
hydpydependencies
|
|
51
|
+
continuous_integration
|
|
52
|
+
tests_and_documentation
|
|
53
|
+
programming_style
|
|
54
|
+
additional_repositories
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
.. _`German Federal Institute of Hydrology (BfG)`: https://www.bafg.de/EN
|
|
3
|
+
.. _`Attribution-NonCommercial-ShareAlike International 4.0 (CC BY-NC-SA 4.0)`: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.en
|
|
4
|
+
|
|
5
|
+
.. _example_projects:
|
|
6
|
+
|
|
7
|
+
Example Projects
|
|
8
|
+
================
|
|
9
|
+
|
|
10
|
+
We provide several example projects. You can download them to familiarise yourself
|
|
11
|
+
with HydPy's project structure, try out the tutorials, or freely experiment with more
|
|
12
|
+
advanced features. Note that all example projects are also included in each HydPy
|
|
13
|
+
release. We use them to explain and test HydPy in several documentation sections.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
.. _HydPy-H-Lahn:
|
|
17
|
+
|
|
18
|
+
HydPy-H-Lahn
|
|
19
|
+
____________
|
|
20
|
+
|
|
21
|
+
`HydPy-H-Lahn` is a complete project data set for the German river Lahn, provided by
|
|
22
|
+
the `German Federal Institute of Hydrology (BfG)`_. The Lahn is a medium-sized
|
|
23
|
+
tributary to the Rhine. The catchment consists of four sub-catchments, each with a
|
|
24
|
+
river gauge (Marburg, Asslar, Leun, Kalkofen) at its outlet. The sub-catchments
|
|
25
|
+
consist of a different number of zones.
|
|
26
|
+
|
|
27
|
+
The meteorological input data stems from the gridded precipitation data set HYRAS-DE
|
|
28
|
+
PRE v5.0, the gridded temperature dataset HYRAS-DE TAS v5.0, and the gridded global
|
|
29
|
+
shortwave radiation dataset HYRAS-DE RSDS v3.0 of the German Weather Service (DWD),
|
|
30
|
+
which was spatially averaged over HydPy-H-HBV96 subbasins by the German Federal
|
|
31
|
+
Insitute of Hydrology. The Hessian Agency for Nature Conservation, Environment and
|
|
32
|
+
Geology (HLNUG) kindly provides the measurement data for the gauges Marburg and Asslar,
|
|
33
|
+
and the Federal Waterways and Shipping Administration (WSV) those of Kalkofen and Leun.
|
|
34
|
+
All this time series data is licensed under
|
|
35
|
+
`Attribution-NonCommercial-ShareAlike International 4.0 (CC BY-NC-SA 4.0)`_.
|
|
36
|
+
|
|
37
|
+
Click :download:`here <HydPy-H-Lahn.zip>` to download `HydPy-H-Lahn`.
|
|
38
|
+
|
|
39
|
+
.. image:: HydPy-H-Lahn.png
|
|
40
|
+
:width: 800
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
.. _execution:
|
|
3
|
+
|
|
4
|
+
Execution Tools
|
|
5
|
+
===============
|
|
6
|
+
|
|
7
|
+
The `exec` subpackage provides features supporting the execution of different HydPy
|
|
8
|
+
functionalities. Most importantly, they address HydPy's usage via the command line
|
|
9
|
+
(see, for example, the entry script |hyd|), its configuration via XML workflow files
|
|
10
|
+
(module |xmltools|), and its feature to run as a server (see module
|
|
11
|
+
|servertools|).
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
.. toctree::
|
|
15
|
+
:hidden:
|
|
16
|
+
|
|
17
|
+
commandtools
|
|
18
|
+
hyd
|
|
19
|
+
modelimports
|
|
20
|
+
replacetools
|
|
21
|
+
servertools
|
|
22
|
+
xmltools
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
|
|
2
|
+
.. _framework_tools:
|
|
3
|
+
|
|
4
|
+
Framework Tools
|
|
5
|
+
===============
|
|
6
|
+
|
|
7
|
+
The HydPy framework provides many general functionalities for programming, documenting,
|
|
8
|
+
and using hydrological models in more or less complex workflows. This section explains
|
|
9
|
+
these general functionalities in multiple subsections, each corresponding to another
|
|
10
|
+
subpackage of the hydpy package.
|
|
11
|
+
|
|
12
|
+
>>> from hydpy import core
|
|
13
|
+
|
|
14
|
+
The `core` subpackage, documented by the :ref:`core` subsection, is HydPy's backbone.
|
|
15
|
+
It contains features for creating networks, defining models, reading time series, and
|
|
16
|
+
much more.
|
|
17
|
+
|
|
18
|
+
>>> from hydpy import cythons
|
|
19
|
+
|
|
20
|
+
The `cythons` subpackage, documented by the :ref:`cythons` subsection, deals mainly
|
|
21
|
+
with programming details related to computational efficiency and is only for framework
|
|
22
|
+
developers (and eventually some model developers) important.
|
|
23
|
+
|
|
24
|
+
>>> from hydpy import auxs
|
|
25
|
+
|
|
26
|
+
The `auxs` subpackage, documented by the :ref:`auxiliaries` subsection, covers
|
|
27
|
+
additional features which are not required when using HydPy in general but can help
|
|
28
|
+
program new models or write elaborated workflow scripts.
|
|
29
|
+
|
|
30
|
+
>>> from hydpy import exe
|
|
31
|
+
|
|
32
|
+
The `exe` subpackage, documented by the "Execution Tools" subsection, mainly enables
|
|
33
|
+
HydPy to be used from the command line and in server mode.
|
|
34
|
+
|
|
35
|
+
Nearly all names of these subpackages' modules end with "tools". The exceptions are
|
|
36
|
+
the modules of the `cythons` subpackage, whose names end with "utils". We adhere to
|
|
37
|
+
this convention to avoid potential name conflicts and to make these modules easily
|
|
38
|
+
distinguishable from other HydPy objects within Python scripts and doctests.
|
|
39
|
+
|
|
40
|
+
We do not try to prevent you from importing highly specialised functionality from any
|
|
41
|
+
module. In contrast, we even encourage it for learning and testing HydPy. However,
|
|
42
|
+
when writing stable workflow scripts, you are well advised to rely only on the
|
|
43
|
+
available top-level imports to avoid the risk of needing to rework your scripts after
|
|
44
|
+
we refactored some HydPy modules:
|
|
45
|
+
|
|
46
|
+
>>> from hydpy.core.timetools import Date # bad
|
|
47
|
+
>>> from hydpy import Date # good
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
.. toctree::
|
|
51
|
+
:hidden:
|
|
52
|
+
|
|
53
|
+
core
|
|
54
|
+
execution
|
|
55
|
+
cythons
|
|
56
|
+
auxiliaries
|