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,520 @@
|
|
|
1
|
+
|
|
2
|
+
.. _project_structure:
|
|
3
|
+
|
|
4
|
+
Project structure
|
|
5
|
+
=================
|
|
6
|
+
|
|
7
|
+
This section describes the typical file structure of HydPy :ref:`projects <project>`,
|
|
8
|
+
comprising :ref:`network files <network_files>`, :ref:`control files <control_files>`,
|
|
9
|
+
:ref:`condition files <condition_files>`, and :ref:`series files <series_files>`. We
|
|
10
|
+
refer to the :ref:`HydPy-H-Lahn` example project to illustrate our explanations, which
|
|
11
|
+
has the following file structure:
|
|
12
|
+
|
|
13
|
+
.. project_structure:: HydPy-H-Lahn
|
|
14
|
+
|
|
15
|
+
All project files are in the project's sub-subdirectories. Except for conditions,
|
|
16
|
+
these sub-subdirectories are usually named `default`. You can add directories with
|
|
17
|
+
different names to, for example, hold the parameter values of multiple calibrations in
|
|
18
|
+
one project.
|
|
19
|
+
|
|
20
|
+
HydPy offers functionalities for reading and writing project files. Besides time
|
|
21
|
+
series files, all project files are usually Python files (ending with ".py"). HydPy
|
|
22
|
+
writes them so that they appear like "normal" configuration files. From the
|
|
23
|
+
programmer's perspective, this requires some tricks, which we mention in the respective
|
|
24
|
+
subsections. One main advantage is that you can copy individual configuration
|
|
25
|
+
fragments into a Python console to check precisely how they work. We frequently use
|
|
26
|
+
this feature throughout the documentation.
|
|
27
|
+
|
|
28
|
+
HydPy allows users to deviate from the default file structure and, due to its design as
|
|
29
|
+
a Python library, even to set up projects directly via scripts or define alternative
|
|
30
|
+
file formats, but these are more advanced topics left for the :ref:`reference manual
|
|
31
|
+
<reference_manual>`.
|
|
32
|
+
|
|
33
|
+
.. _network_files:
|
|
34
|
+
|
|
35
|
+
Network files
|
|
36
|
+
_____________
|
|
37
|
+
|
|
38
|
+
`Network files` define a HydPy project's :ref:`network` by introducing and coupling
|
|
39
|
+
:ref:`elements <element>` and :ref:`nodes <node>`. Consider the following minimal
|
|
40
|
+
example of a network file's content:
|
|
41
|
+
|
|
42
|
+
>>> from hydpy import Node, Element
|
|
43
|
+
>>> _ = Node("n", variable="Q")
|
|
44
|
+
>>> _ = Element("e1", outlets="n")
|
|
45
|
+
>>> _ = Element("e2", inlets="n")
|
|
46
|
+
|
|
47
|
+
Node `n` connects element `e1` with element `e2`, so we have a network of three
|
|
48
|
+
:ref:`devices <device>`. From the perspective of `e1`, `n` is an outlet node, and from
|
|
49
|
+
the perspective of `e2`, an inlet node:
|
|
50
|
+
|
|
51
|
+
>>> assert Element("e1").outlets.n is Element("e2").inlets.n
|
|
52
|
+
|
|
53
|
+
Given the curt names, we cannot safely guess the purposes of `e1` and `e2` because
|
|
54
|
+
network files are model-agnostic. The only thing for sure is that the model of `e1`
|
|
55
|
+
must be able to route discharge to a downstream node, and the model of `e2` must be
|
|
56
|
+
able to receive discharge from an upstream node. Hence, we could use this network file
|
|
57
|
+
for various model-type combinations.
|
|
58
|
+
|
|
59
|
+
The names of elements and nodes serve as their identifiers, which means you never
|
|
60
|
+
make two node or two element instances with the same name. If it looks like you create
|
|
61
|
+
a new instance, you actually just get a reference to an already existing one (possibly
|
|
62
|
+
with already set up node connections):
|
|
63
|
+
|
|
64
|
+
>>> Element("e1")
|
|
65
|
+
Element("e1",
|
|
66
|
+
outlets="n")
|
|
67
|
+
|
|
68
|
+
Each network file corresponds to one :ref:`selection`. The :ref:`HydPy-H-Lahn` project
|
|
69
|
+
defines three selections: one for all :ref:`stream models <stream_models>` and two for
|
|
70
|
+
the :ref:`land models <land_models>` in the headwater and non-headwater subbasins. The
|
|
71
|
+
combination of all individual selections gives a selection named "complete", which is
|
|
72
|
+
automatically creatable by property |Selections.complete| of class |Selections|.
|
|
73
|
+
|
|
74
|
+
The described "name as identifier" mechanism allows us to define the same device in
|
|
75
|
+
multiple network files of the same project. So, one can create an arbitrary number of
|
|
76
|
+
selections to structure the same network after different criteria. The only
|
|
77
|
+
(self-evident) requisite is the consistency of all individual definitions. You cannot,
|
|
78
|
+
for example, add an inlet node to an element if it is already the same element's outlet
|
|
79
|
+
node:
|
|
80
|
+
|
|
81
|
+
>>> Element("e1", inlets="n")
|
|
82
|
+
Traceback (most recent call last):
|
|
83
|
+
...
|
|
84
|
+
ValueError: For element `e1`, the given inlet node `n` is already defined as a(n) outlet node, which is not allowed.
|
|
85
|
+
|
|
86
|
+
Besides these standards, the :ref:`reference manual <reference_manual>` covers many
|
|
87
|
+
features which help to organise HydPy projects (see, for example, the :ref:`keyword`
|
|
88
|
+
features of class |Device| and its collection type |Devices|) or to build more complex
|
|
89
|
+
networks, for example, those that pass on different types of data (configurable by the
|
|
90
|
+
|Node.variable| attribute of class |Node|).
|
|
91
|
+
|
|
92
|
+
.. _control_files:
|
|
93
|
+
|
|
94
|
+
Control files
|
|
95
|
+
_____________
|
|
96
|
+
|
|
97
|
+
`Control files` select :ref:`model types <model>`, prepare model :ref:`instances
|
|
98
|
+
<instance>`, and set :ref:`parameter` values. Each :ref:`element` defined in the
|
|
99
|
+
:ref:`network files <network_files>` requires one control file, which sets up its
|
|
100
|
+
:ref:`main_model`, including all :ref:`submodels <submodel>`.
|
|
101
|
+
|
|
102
|
+
The :ref:`HydPy-H-Lahn` project relies on two main model types: the :ref:`land model
|
|
103
|
+
<land_models>` |hland_96| and the :ref:`stream model <stream_models>` |musk_classic|.
|
|
104
|
+
The control file "stream_dill_assl_lahn2.py", for example, selects the latter for routing
|
|
105
|
+
the outflow of the subbasin Dill to a location in the river Lahn. The control file is
|
|
106
|
+
short because |musk_classic| is relatively simple. The first (Python-code) line
|
|
107
|
+
selects the model type by a so-called "wildcard import", making all relevant
|
|
108
|
+
information directly available:
|
|
109
|
+
|
|
110
|
+
>>> from hydpy.models.musk_classic import *
|
|
111
|
+
|
|
112
|
+
The following line defines a simulation time step size of one hour:
|
|
113
|
+
|
|
114
|
+
>>> simulationstep("1h")
|
|
115
|
+
|
|
116
|
+
Note that the |simulationstep| line is optional. It allows for adjusting parameter
|
|
117
|
+
values that depend on the simulation time step size, so one can set up a model for
|
|
118
|
+
testing purposes without embedding it in a complete project. However, when executing
|
|
119
|
+
the file within the context of a project, the project's simulation step counts (HydPy
|
|
120
|
+
then ignores the control file's specification) so that the same control file works for
|
|
121
|
+
different simulation time step sizes.
|
|
122
|
+
|
|
123
|
+
The |parameterstep| line is similar but mandatory. It defines the time unit of the
|
|
124
|
+
subsequently specified values of time-dependent parameters. The given example
|
|
125
|
+
selects a parameter time step size of one day:
|
|
126
|
+
|
|
127
|
+
>>> parameterstep("1d")
|
|
128
|
+
|
|
129
|
+
.. note::
|
|
130
|
+
|
|
131
|
+
A note for programmers: Function |parameterstep| prepares a suitable model instance
|
|
132
|
+
and makes it and its main components directly available in the local namespace.
|
|
133
|
+
This trick allows for the simple further model preparation steps.
|
|
134
|
+
|
|
135
|
+
As in nearly all cases, the discussed control file only sets the required values of
|
|
136
|
+
control parameters and does not modify the predefined values of other parameter groups.
|
|
137
|
+
The parameter value specifications are not conducted via "assignment expressions" but
|
|
138
|
+
"bracket expressions", like when calling a regular function:
|
|
139
|
+
|
|
140
|
+
>>> nmbsegments(lag=0.417)
|
|
141
|
+
>>> coefficients(damp=0.0)
|
|
142
|
+
|
|
143
|
+
Here, the parameter values are not set directly via positional arguments but by
|
|
144
|
+
parameter-specific keyword arguments unique to the classes |musk_control.NmbSegments|
|
|
145
|
+
and |musk_control.Coefficients|. Note that the `lag` argument is time-dependent and
|
|
146
|
+
so, according to the specified parameter step size, is given in days, while the "true"
|
|
147
|
+
value of the |musk_control.NmbSegments| instance refers to the simulation step size of
|
|
148
|
+
one hour:
|
|
149
|
+
|
|
150
|
+
>>> nmbsegments.value == round(24.0 * 0.417)
|
|
151
|
+
True
|
|
152
|
+
|
|
153
|
+
Due to the higher complexity of |hland_96|, the control file "land_dill_assl.py" is much
|
|
154
|
+
longer. We focus on a few aspects not relevant to |musk_mct|. Therefore, we must
|
|
155
|
+
first clear the local namespace (one could also just start a fresh Python process):
|
|
156
|
+
|
|
157
|
+
>>> from hydpy import reverse_model_wildcard_import
|
|
158
|
+
>>> reverse_model_wildcard_import()
|
|
159
|
+
|
|
160
|
+
|hland_96| requires submodels and the control file must select them. It does so by
|
|
161
|
+
importing the main model (|hland_96|) by a wildcard import but all submodels
|
|
162
|
+
(|evap_aet_hbv96|, |evap_pet_hbv96|, and |rconc_uh|) by a module import:
|
|
163
|
+
|
|
164
|
+
>>> from hydpy.models.hland_96 import *
|
|
165
|
+
>>> from hydpy.models import evap_aet_hbv96
|
|
166
|
+
>>> from hydpy.models import evap_pet_hbv96
|
|
167
|
+
>>> from hydpy.models import rconc_uh
|
|
168
|
+
|
|
169
|
+
The time step-related lines work as described above:
|
|
170
|
+
|
|
171
|
+
>>> simulationstep("1h")
|
|
172
|
+
>>> parameterstep("1d")
|
|
173
|
+
|
|
174
|
+
The subbasin's area is set via a positional argument:
|
|
175
|
+
|
|
176
|
+
>>> area(692.3)
|
|
177
|
+
|
|
178
|
+
The parameter |hland_control.NmbZones| is notable, as it requires integer values and,
|
|
179
|
+
more importantly, modifies the shape of other parameters. After setting its value, you
|
|
180
|
+
can prepare parameters with zone-specific values like |hland_control.ZoneArea|:
|
|
181
|
+
|
|
182
|
+
>>> zonearea.shape
|
|
183
|
+
Traceback (most recent call last):
|
|
184
|
+
...
|
|
185
|
+
hydpy.core.exceptiontools.AttributeNotReady: Shape information for variable `zonearea` can only be retrieved after it has been defined.
|
|
186
|
+
|
|
187
|
+
>>> nmbzones(12)
|
|
188
|
+
>>> assert nmbzones == zonearea.shape[0]
|
|
189
|
+
>>> zonearea(14.41, 7.06, 70.83, 84.36, 70.97, 198.0, 27.75, 130.0, 27.28,
|
|
190
|
+
... 56.94, 1.09, 3.61)
|
|
191
|
+
|
|
192
|
+
Strictly speaking, |hland_control.NmbZones| is specific to the
|
|
193
|
+
|hland.Model.DOCNAME.family| model family. Still, there are many models which rely on
|
|
194
|
+
hydrological response units, stream segments, or different forms of (spatial)
|
|
195
|
+
subdivisions and use the same logic of a control parameter defining the number of
|
|
196
|
+
subdivisions and many parameters or sequences shaped as vectors or matrixes to handle
|
|
197
|
+
different values for individual (spatial) units.
|
|
198
|
+
|
|
199
|
+
Another example of a |hland.Model.DOCNAME.family|-speciality, which also follows a
|
|
200
|
+
general HydPy design principle, is the definition of "spatial types" (mostly land use
|
|
201
|
+
types) via constants. |hland.Model.DOCNAME.family| provides such constants for
|
|
202
|
+
defining the types of the individual zones:
|
|
203
|
+
|
|
204
|
+
>>> zonetype(FIELD, FOREST, FIELD, FOREST, FIELD, FOREST, FIELD, FOREST, FIELD,
|
|
205
|
+
... FOREST, FIELD, FOREST)
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
When preparing zone-specific parameters, you can decide between defining individual,
|
|
209
|
+
land type-specific, and subbasin-wide values:
|
|
210
|
+
|
|
211
|
+
>>> zonez(2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0)
|
|
212
|
+
>>> cfmax(field=4.55853, forest=2.735118)
|
|
213
|
+
>>> fc(278.0)
|
|
214
|
+
|
|
215
|
+
Often, one does not wish to define individual values for each control file but more
|
|
216
|
+
general ones. HydPy supports this via "auxiliary files". In the discussed control
|
|
217
|
+
file, the parameter |hland_control.PCorr| instance takes its value from the auxiliary
|
|
218
|
+
file "land.py" (to get this working in a doctest requires changing the working
|
|
219
|
+
directory):
|
|
220
|
+
|
|
221
|
+
.. testsetup::
|
|
222
|
+
|
|
223
|
+
>>> import os
|
|
224
|
+
>>> workingdir = os.getcwd()
|
|
225
|
+
|
|
226
|
+
>>> import os
|
|
227
|
+
>>> from hydpy import data
|
|
228
|
+
>>> os.chdir(os.path.join(data.__path__[0], "HydPy-H-Lahn", "control", "default"))
|
|
229
|
+
>>> pcorr(auxfile="land")
|
|
230
|
+
>>> pcorr
|
|
231
|
+
pcorr(1.0)
|
|
232
|
+
|
|
233
|
+
All submodels are generally added at a control file's end because they might expect
|
|
234
|
+
some main model parameters to be already prepared. Each main model provides a suitable
|
|
235
|
+
method for adding specific submodel types. Such methods should be applied after a
|
|
236
|
+
`with statement`. Within the subsequent `with block`, one can directly set the
|
|
237
|
+
submodel's parameters as explained above. The discussed control file uses the
|
|
238
|
+
|hland_model.Main_RConcModel_V1.add_rconcmodel_v1| method to add a |rconc_uh|
|
|
239
|
+
instance (and configures its Unit Hydrograph ordinates in a triangle shape):
|
|
240
|
+
|
|
241
|
+
>>> with model.add_rconcmodel_v1(rconc_uh):
|
|
242
|
+
... uh("triangle", tb=0.36728)
|
|
243
|
+
>>> from hydpy import print_vector
|
|
244
|
+
>>> print_vector(model.rconcmodel.parameters.control.uh.values)
|
|
245
|
+
0.02574, 0.077221, 0.128701, 0.180182, 0.213581, 0.170644, 0.119163,
|
|
246
|
+
0.067682, 0.017086
|
|
247
|
+
|
|
248
|
+
Adding a sub-submodel to a submodel works via nested `with blocks`:
|
|
249
|
+
|
|
250
|
+
>>> with model.add_aetmodel_v1(evap_aet_hbv96):
|
|
251
|
+
... temperaturethresholdice(nan)
|
|
252
|
+
... soilmoisturelimit(0.9)
|
|
253
|
+
... excessreduction(0.0)
|
|
254
|
+
... with model.add_petmodel_v1(evap_pet_hbv96):
|
|
255
|
+
... airtemperaturefactor(0.1)
|
|
256
|
+
... altitudefactor(0.0)
|
|
257
|
+
... precipitationfactor(0.02)
|
|
258
|
+
... evapotranspirationfactor(1.0)
|
|
259
|
+
|
|
260
|
+
The last example covers two new cases. First, |numpy.nan| serves to mark "missing" or
|
|
261
|
+
"not required" values. Parameter |evap_control.TemperatureThresholdIce| requires no
|
|
262
|
+
values because it only applies to |hland_constants.ILAKE| zones, while the Dill
|
|
263
|
+
subbasin only consists of |hland_constants.FIELD| and |hland_constants.FOREST| zones.
|
|
264
|
+
Second, main models often transmit some parameter values to their submodels, which
|
|
265
|
+
helps to avoid duplicate and potentially inconsistent definitions. In the discussed
|
|
266
|
+
control file, this applies, for example, to the parameter pairs
|
|
267
|
+
|hland_control.NmbZones| and |evap_control.NmbHRU| and |hland_control.FC| and
|
|
268
|
+
|evap_control.MaxSoilWater|:
|
|
269
|
+
|
|
270
|
+
>>> assert nmbzones == model.aetmodel.parameters.control.nmbhru
|
|
271
|
+
>>> assert fc == model.aetmodel.parameters.control.maxsoilwater
|
|
272
|
+
|
|
273
|
+
Before writing a control file, one should read the documentation of the relevant
|
|
274
|
+
application models in the :ref:`reference manual <reference_manual>`, which provides
|
|
275
|
+
complete lists of the control parameters that need configuration, detailed application
|
|
276
|
+
examples, and much more.
|
|
277
|
+
|
|
278
|
+
.. _condition_files:
|
|
279
|
+
|
|
280
|
+
Condition files
|
|
281
|
+
_______________
|
|
282
|
+
|
|
283
|
+
`Condition files` represent model states and logged data at a particular time point.
|
|
284
|
+
They are usually written at the end of a simulation run and later read before
|
|
285
|
+
simulating another period that starts where the old one has ended. Instead, their
|
|
286
|
+
names usually include the prefix `init` (for initial conditions) and a suffix
|
|
287
|
+
indicating the relevant date, using underscores as separators. Each :ref:`element`
|
|
288
|
+
defined in the :ref:`network files <network_files>` requires one condition file, and so
|
|
289
|
+
each condition file corresponds to one main model and one control file.
|
|
290
|
+
|
|
291
|
+
Condition files are similar to control files but almost always shorter and simpler. We
|
|
292
|
+
take the condition file of the Dill subbasin for 1 January 1996 as an example, which,
|
|
293
|
+
like the discussed control file, starts with a wildcard import that selects the
|
|
294
|
+
relevant main model:
|
|
295
|
+
|
|
296
|
+
>>> from hydpy.models.hland_96 import *
|
|
297
|
+
|
|
298
|
+
Opposed to the control file, importing the relevant submodels is unnecessary, as they
|
|
299
|
+
must already be available before reading the condition file.
|
|
300
|
+
|
|
301
|
+
The following call of function |controlcheck| is optional when working with a complete
|
|
302
|
+
HydPy project but required when executing a condition file independently for testing
|
|
303
|
+
(for the following doctests to work, we must not only remove the old wildcard import
|
|
304
|
+
artifacts but also fake to be "inside" a condition file by taking its name on):
|
|
305
|
+
|
|
306
|
+
>>> reverse_model_wildcard_import()
|
|
307
|
+
>>> temp = __file__
|
|
308
|
+
>>> __file__ = "land_dill_assl.py"
|
|
309
|
+
>>> controlcheck(projectdir=r"HydPy-H-Lahn", controldir="default", firstdate="1996-01-01", stepsize="1d")
|
|
310
|
+
>>> __file__ = temp
|
|
311
|
+
|
|
312
|
+
This step builds a connection to the corresponding control file. We need this
|
|
313
|
+
connection for interactive testing because, for example, the shape of some condition
|
|
314
|
+
sequences depends on the control parameter |hland_control.NmbZones|:
|
|
315
|
+
|
|
316
|
+
>>> assert model.parameters.control.nmbzones == ic.shape[0]
|
|
317
|
+
|
|
318
|
+
The name |controlcheck| reflects that the function enables checking whether a condition
|
|
319
|
+
file is consistent with the corresponding control file.
|
|
320
|
+
|
|
321
|
+
.. note::
|
|
322
|
+
|
|
323
|
+
A note for programmers: Behind the scenes, |controlcheck| operates like the control
|
|
324
|
+
file function |parameterstep| to simplify the appearance of condition files.
|
|
325
|
+
|
|
326
|
+
Setting their values works like for control parameters with "bracket expressions" but
|
|
327
|
+
without land type-specific options because condition sequences usually contain
|
|
328
|
+
calculated values that tend to be dissimilar for all zones:
|
|
329
|
+
|
|
330
|
+
>>> sm(185.13164, 181.18755, 199.80432, 196.55888, 212.04018, 209.48859,
|
|
331
|
+
... 222.12115, 220.12671, 230.30756, 228.70779, 236.91943, 235.64427)
|
|
332
|
+
>>> uz(7.25228)
|
|
333
|
+
|
|
334
|
+
Setting the conditions of submodels requires writing the complete paths to the
|
|
335
|
+
respective sequences (we might add a more convenient syntax based on the `with
|
|
336
|
+
statement` later):
|
|
337
|
+
|
|
338
|
+
>>> model.rconcmodel.sequences.logs.quh(0.0)
|
|
339
|
+
|
|
340
|
+
.. _series_files:
|
|
341
|
+
|
|
342
|
+
Series files
|
|
343
|
+
____________
|
|
344
|
+
|
|
345
|
+
HydPy currently supports three different time `series file` formats, of which the ASCII
|
|
346
|
+
and the NetCDF-CF format should be the right choice in most applications.
|
|
347
|
+
|
|
348
|
+
HydPy's ASCII format (file ending ".asc") is simpler but less efficient. Each file
|
|
349
|
+
stores the time series of one sequence type for one element or node. By default, the
|
|
350
|
+
filename follows a strict pattern, defined by the |IOSequence.filename| property of
|
|
351
|
+
class |IOSequence|. `land_dill_assl_hland_96_input_p.asc` is an example filename of a
|
|
352
|
+
time series managed by an element (or, more precisely, an element's model) and
|
|
353
|
+
`dill_ass_obs_q.asc` is an example filename of a time series managed by a node. Both
|
|
354
|
+
start with the respective device names (`land_dill_assl` and `dill_assl`), defined by
|
|
355
|
+
the properties |ModelSequence.descr_device| of class |ModelSequence| and
|
|
356
|
+
|NodeSequence.descr_device| of class |NodeSequence|. The rest of the files' basenames
|
|
357
|
+
are defined by property |ModelSequence.descr_sequence| of class |ModelSequence|, which
|
|
358
|
+
combines the model type (`hland_96`), the sequence group (`input`) and the sequence
|
|
359
|
+
type (`p`), and property |NodeSequence.descr_sequence| of class |NodeSequence|, which
|
|
360
|
+
combines the sequence type (`obs`) and the handled variable (`q`).
|
|
361
|
+
|
|
362
|
+
Internally, each ASCII file starts with information about the covered data period and
|
|
363
|
+
the temporal resolution, described via a |Timegrid| instance. Consider the following
|
|
364
|
+
example:
|
|
365
|
+
|
|
366
|
+
>>> from hydpy import Timegrid
|
|
367
|
+
>>> timegrid = Timegrid("1996-01-01", "1996-01-05", "1d")
|
|
368
|
+
|
|
369
|
+
The two dates define the start of the first and the end of the last data interval.
|
|
370
|
+
Hence, the example |Timegrid| instance would be suitable for a time series file
|
|
371
|
+
containing, for example, the precipitation sums of four days:
|
|
372
|
+
|
|
373
|
+
>>> assert len(timegrid) == 4
|
|
374
|
+
|
|
375
|
+
The data section after the |Timegrid| header contains no time stamps. So, temporal
|
|
376
|
+
equidistance is strictly required, with missing values marked as |numpy.nan|. The
|
|
377
|
+
individual time series of non-scalar sequences are placed in tab-separated columns.
|
|
378
|
+
|
|
379
|
+
HydPy's NetCDF-CF file format (file ending ".nc") is much more compact, usually times
|
|
380
|
+
faster, and supports reading and writing data "just in time" during simulation runs.
|
|
381
|
+
On the downside, it is more opaque and hard to handle because it stores all data in
|
|
382
|
+
binary form. It follows the `NetCDF Climate and Forecast (CF) Metadata Conventions
|
|
383
|
+
<http://cfconventions.org/Data/cf-conventions/cf-conventions-1.8/cf-conventions.html>`_
|
|
384
|
+
and is, for example, compatible with `Delft-FEWS
|
|
385
|
+
<https://oss.deltares.nl/web/delft-fews>`_.
|
|
386
|
+
|
|
387
|
+
You can use function |summarise_ncfile| to gain insights into HydPy-compatible NetCDF
|
|
388
|
+
files. Here, we let it show the structure of the NetCDF precipitation input file of
|
|
389
|
+
the :ref:`HydPy-H-Lahn` example project:
|
|
390
|
+
|
|
391
|
+
>>> filepath = os.path.join(
|
|
392
|
+
... data.__path__[0], "HydPy-H-Lahn", "series", "default", "hland_96_input_p.nc"
|
|
393
|
+
... )
|
|
394
|
+
>>> from hydpy import repr_, summarise_ncfile
|
|
395
|
+
>>> print(repr_(summarise_ncfile(filepath))) # doctest: +ELLIPSIS
|
|
396
|
+
GENERAL
|
|
397
|
+
file path = .../hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_p.nc
|
|
398
|
+
file format = NETCDF4
|
|
399
|
+
disk format = HDF5
|
|
400
|
+
Attributes
|
|
401
|
+
hydts_timeRef = begin
|
|
402
|
+
title = Daily total precipitation sum HydPy-H-HBV96 model river Lahn
|
|
403
|
+
project = Open Source Project HydPy - A Python framework for the development and application of hydrological models
|
|
404
|
+
version = v5.0
|
|
405
|
+
institution = HydPy Developers
|
|
406
|
+
author = Bastian Klein (klein@bafg.de)
|
|
407
|
+
contact = Bastian Klein (klein@bafg.de), Dennis Meissner (meissner@bafg.de)
|
|
408
|
+
source = Deutscher Wetterdienst, gridded_precipitation_dataset_(HYRAS-DE PRE) v5.0 spatially averaged over HydPy-H-HBV96 subbasins
|
|
409
|
+
conditions_of_use = The use of the data is free of charge. The data is licensed under Attribution-NonCommercial-ShareAlike International 4.0 (CC BY-NC-SA 4.0).
|
|
410
|
+
citation = Klein, B. & D. Meissner (2024): Daily total precipitation sum HydPy-H-HBV96 model river Lahn. HydPy Developers [Data set]. Database Deutscher Wetterdienst gridded_precipitation_dataset_(HYRAS-DE PRE) v5.0 spatially averaged over HydPy-H-HBV96 subbasins
|
|
411
|
+
url = https://github.com/hydpy-dev
|
|
412
|
+
Conventions = CF-1.8
|
|
413
|
+
timereference = left interval boundary
|
|
414
|
+
history = 2024-09-12 10:08:29 UTC: created by R-package hydts using ncdf4 package
|
|
415
|
+
date_created = 2024-09-12 10:08:29 UTC
|
|
416
|
+
created_by = R version 4.4.0 Patched (2024-05-13 r86547 ucrt), packages hydts (version 1.15.1), ncdf4 (version 1.22)
|
|
417
|
+
DIMENSIONS
|
|
418
|
+
stations = 4
|
|
419
|
+
time = 11384
|
|
420
|
+
str_len = 40
|
|
421
|
+
VARIABLES
|
|
422
|
+
time
|
|
423
|
+
dimensions = time
|
|
424
|
+
shape = 11384
|
|
425
|
+
data type = float64
|
|
426
|
+
Attributes
|
|
427
|
+
units = days since 1900-01-01 00:00:00 +0100
|
|
428
|
+
long_name = time
|
|
429
|
+
axis = T
|
|
430
|
+
calendar = standard
|
|
431
|
+
hland_96_input_p
|
|
432
|
+
dimensions = time, stations
|
|
433
|
+
shape = 11384, 4
|
|
434
|
+
data type = float64
|
|
435
|
+
Attributes
|
|
436
|
+
units = mm
|
|
437
|
+
_FillValue = -9999.0
|
|
438
|
+
long_name = Daily Precipitation Sum
|
|
439
|
+
station_id
|
|
440
|
+
dimensions = stations, str_len
|
|
441
|
+
shape = 4, 40
|
|
442
|
+
data type = |S1
|
|
443
|
+
Attributes
|
|
444
|
+
long_name = station or node identification code
|
|
445
|
+
station_names
|
|
446
|
+
dimensions = stations, str_len
|
|
447
|
+
shape = 4, 40
|
|
448
|
+
data type = |S1
|
|
449
|
+
Attributes
|
|
450
|
+
long_name = station or node name
|
|
451
|
+
river_names
|
|
452
|
+
dimensions = stations, str_len
|
|
453
|
+
shape = 4, 40
|
|
454
|
+
data type = |S1
|
|
455
|
+
Attributes
|
|
456
|
+
long_name = river name
|
|
457
|
+
TIME GRID
|
|
458
|
+
first date = 1989-11-01 00:00:00+01:00
|
|
459
|
+
last date = 2021-01-01 00:00:00+01:00
|
|
460
|
+
step size = 1d
|
|
461
|
+
|
|
462
|
+
The time series of all sequences of the same type are stored in one file. So, by
|
|
463
|
+
default, a NetCDF filename is shorter than an ASCII filename as it does not need a
|
|
464
|
+
device-specific prefix (for example, `hland_96_input_p.nc` instead of
|
|
465
|
+
`land_dill_assl_hland_96_input_p.asc` and `obs_q.asc` instead of
|
|
466
|
+
`dill_assl_obs_q.asc`). The device names are instead managed by a file-internal NetCDF
|
|
467
|
+
variable named `station_id`, whose shape is determined by the NetCDF dimensions
|
|
468
|
+
`stations` (usually the number of devices, but see below) and `char_leng_name` (usually
|
|
469
|
+
the longest device name, but see below). The name of the data variable agrees with the
|
|
470
|
+
respective file basename (in the given examples, `hland_96_input_p` and `obs_q`).
|
|
471
|
+
|
|
472
|
+
The second NetCDF variable used for describing the data layout is named `time`, whose
|
|
473
|
+
shape is determined by a NetCDF dimension also named `time`. This variable contains
|
|
474
|
+
floating point numbers representing, for example, the elapsed days between a reference
|
|
475
|
+
date and the actual date (see method |Date.to_cfunits| of class |Date| for some
|
|
476
|
+
examples).
|
|
477
|
+
|
|
478
|
+
As far as we know, the NetCDF-CF convention does not clarify if these time points
|
|
479
|
+
define the start or the end time points of data measurement intervals (left timestep vs
|
|
480
|
+
right timestamp). As a surrogate, HydPy inserts an attribute named `timereference`
|
|
481
|
+
when writing a NetCDF file, with the possible values `left interval boundary` and
|
|
482
|
+
`right interval boundary` for "interval data" and `current time` for "time point data".
|
|
483
|
+
We advise also adding this attribute when using other tools for writing NetCDF files to
|
|
484
|
+
be read by HydPy.
|
|
485
|
+
|
|
486
|
+
The time series are aligned in a (2-dimensional) matrix, with the first axis reflecting
|
|
487
|
+
the time and the second axis reflecting the location. There are additional columns for
|
|
488
|
+
multi-dimensional sequences that address sublocations (for example, hydrological
|
|
489
|
+
response units). The `station_id` variable distinguishes them by suffixing their
|
|
490
|
+
indexes to the device name.
|
|
491
|
+
|
|
492
|
+
HydPy writes all floating-point data with a precision of 64 bits. It is not strictly
|
|
493
|
+
required but, in some situations, might prove beneficial to design externally prepared
|
|
494
|
+
NetCDF files with the same accuracy.
|
|
495
|
+
|
|
496
|
+
See the documentation on module |netcdftools|, which uses many examples to explain the
|
|
497
|
+
NetCDF-CF format in more detail.
|
|
498
|
+
|
|
499
|
+
The third supported time series file format relies on the Numpy format (file ending
|
|
500
|
+
".npy"). It resembles the ASCII format but saves data in binary form. We only
|
|
501
|
+
recommend if if one requires a more efficient alternative to the ASCII format and a
|
|
502
|
+
less complex alternative to the NetCDF format.
|
|
503
|
+
|
|
504
|
+
All time series files can specify dates with or without time zone information. Without
|
|
505
|
+
time zone information, HydPy usually assumes the currently selected
|
|
506
|
+
|Options.utcoffset|, which defaults to +60 minutes. The only exception is for NetCDF
|
|
507
|
+
files, where it always assumes UTC+00 in compliance with the NetCDF-CF conventions.
|
|
508
|
+
|
|
509
|
+
A new HydPy feature, applicable for all file formats but only realised for the group of
|
|
510
|
+
input sequences so far, is the alternative usage of standard names. Class
|
|
511
|
+
|StandardInputNames| lists these standard names, and the input sequences of all model
|
|
512
|
+
types reference one of them. When switching the time series naming
|
|
513
|
+
|SequenceManager.convention| from `model-specific` to `HydPy`, the filename
|
|
514
|
+
"land_dill_assl_hland_96_input_p.asc" becomes "land_dill_assl_precipitation.asc" and
|
|
515
|
+
"hland_96_input_p.nc" becomes "precipitation.nc". Such a standardisation often means a
|
|
516
|
+
relevant simplification when dealing with multiple model types.
|
|
517
|
+
|
|
518
|
+
.. testsetup::
|
|
519
|
+
|
|
520
|
+
>>> os.chdir(workingdir)
|