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,381 @@
|
|
|
1
|
+
"""
|
|
2
|
+
|arma_rimorido| relies on the RIMO/RIDO method, which is based on the `translation
|
|
3
|
+
diffusion equation`, which is a linear approximation of the Saint-Venant equations
|
|
4
|
+
involving only two parameters - one for the celerity and one for the diffusivity of the
|
|
5
|
+
flood wave. The linearity of the approach allows for constructing Unit Hydrograph
|
|
6
|
+
ordinates for each specific combination of celerity, diffusivity, and the length of the
|
|
7
|
+
considered river section. One can understand these ordinates as coefficients of a
|
|
8
|
+
moving average (MA) process.
|
|
9
|
+
|
|
10
|
+
|arma_rimorido| adds two additional features to this conventional approach.
|
|
11
|
+
|
|
12
|
+
Firstly, RIMO/RIDO approximates the response function described by the MA coefficients
|
|
13
|
+
by an ARMA process, which is helpful for response functions with long tails. Very
|
|
14
|
+
often, autoregressive (AR) modelscan approximate long-tailed responses sufficiently
|
|
15
|
+
with few parameters. Hence, ARMA models (which reflect the rising limb of a response
|
|
16
|
+
function with their MA coefficients and its falling limb with their AR coefficients)
|
|
17
|
+
are often more parameter efficient than pure MA models.
|
|
18
|
+
|
|
19
|
+
Secondly, RIMO/RIDO separates the flow into the river section into different "portions"
|
|
20
|
+
based on discharge thresholds. Each portion is routed by a separate ARMA model,
|
|
21
|
+
allowing RIMO/RIDO to reflect the nonlinearity of rating curves to a certain degree.
|
|
22
|
+
For example, the bank-full discharge can serve as a threshold. Then, one can apply
|
|
23
|
+
smaller celerity values and larger diffusivity values on the "upper" flow portion to
|
|
24
|
+
simulate retention processes on floodplains.
|
|
25
|
+
|
|
26
|
+
If you want to apply |arma_rimorido| precisely like RIMO/RIDO, consider using
|
|
27
|
+
|TranslationDiffusionEquation| for calculating its coefficients. But you can also
|
|
28
|
+
define them differently, e.g. using |LinearStorageCascade|. Additionally, you are free
|
|
29
|
+
to apply combined ARMA coefficients or pure MA coefficients only, as described in the
|
|
30
|
+
following examples.
|
|
31
|
+
|
|
32
|
+
Integration tests
|
|
33
|
+
=================
|
|
34
|
+
|
|
35
|
+
.. how_to_understand_integration_tests::
|
|
36
|
+
|
|
37
|
+
We perform the following tests over 20 hours:
|
|
38
|
+
|
|
39
|
+
>>> from hydpy import pub, Nodes, Element
|
|
40
|
+
>>> pub.timegrids = "01.01.2000 00:00", "01.01.2000 20:00", "1h"
|
|
41
|
+
|
|
42
|
+
Import the model and define the time settings:
|
|
43
|
+
|
|
44
|
+
>>> from hydpy.models.arma_rimorido import *
|
|
45
|
+
>>> parameterstep("1h")
|
|
46
|
+
|
|
47
|
+
For testing purposes, |arma_rimorido| shall retrieve its input from the nodes `input1`
|
|
48
|
+
and `input2` and pass its output to the node `output`. Firstly, we define all nodes:
|
|
49
|
+
|
|
50
|
+
>>> nodes = Nodes("input1", "input2", "output")
|
|
51
|
+
|
|
52
|
+
Define the element `stream` and build the connections between the nodes defined above
|
|
53
|
+
and the |arma_rimorido| model instance:
|
|
54
|
+
|
|
55
|
+
>>> stream = Element("stream",
|
|
56
|
+
... inlets=["input1", "input2"],
|
|
57
|
+
... outlets="output")
|
|
58
|
+
>>> stream.model = model
|
|
59
|
+
|
|
60
|
+
Prepare a test function object, which prints the respective values of the model
|
|
61
|
+
sequences |QIn|, |QPIn|, |QPOut|, and |QOut|. The node sequence `sim` is added in
|
|
62
|
+
to that the values calculated for |QOut| are actually passed to `sim`:
|
|
63
|
+
|
|
64
|
+
>>> from hydpy import IntegrationTest
|
|
65
|
+
>>> IntegrationTest.plotting_options.activated=(
|
|
66
|
+
... fluxes.qin, fluxes.qout)
|
|
67
|
+
>>> test = IntegrationTest(
|
|
68
|
+
... stream,
|
|
69
|
+
... seqs=(fluxes.qin, fluxes.qpin, fluxes.qpout,
|
|
70
|
+
... fluxes.qout, nodes.output.sequences.sim))
|
|
71
|
+
|
|
72
|
+
To start the respective example runs from stationary conditions, a base flow value of
|
|
73
|
+
2 m³/s is set for all values of the log sequences |LogIn| and |LogOut|:
|
|
74
|
+
|
|
75
|
+
>>> test.inits = ((logs.login, 2.0),
|
|
76
|
+
... (logs.logout, 2.0))
|
|
77
|
+
|
|
78
|
+
We want to print just the time instead of the whole date:
|
|
79
|
+
|
|
80
|
+
>>> test.dateformat = "%H:%M"
|
|
81
|
+
|
|
82
|
+
We define two flood events, one for each inlet node:
|
|
83
|
+
|
|
84
|
+
>>> nodes.input1.sequences.sim.series = (
|
|
85
|
+
... 1.0, 1.0, 2.0, 4.0, 3.0, 2.0, 1.0, 1.0, 1.0, 1.0,
|
|
86
|
+
... 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
|
87
|
+
>>> nodes.input2.sequences.sim.series = (
|
|
88
|
+
... 1.0, 2.0, 6.0, 9.0, 8.0, 6.0, 4.0, 3.0, 2.0, 1.0,
|
|
89
|
+
... 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
|
90
|
+
|
|
91
|
+
.. _arma_rimorido_ma:
|
|
92
|
+
|
|
93
|
+
MA coefficients
|
|
94
|
+
_______________
|
|
95
|
+
|
|
96
|
+
In the first example, we define a pure fourth-order moving average (MA) process via the
|
|
97
|
+
control parameter |Responses|:
|
|
98
|
+
|
|
99
|
+
>>> responses(((), (0.2, 0.4, 0.3, 0.1)))
|
|
100
|
+
|
|
101
|
+
This configuration leads to a usual "unit hydrograph" convolution result, where all
|
|
102
|
+
inflow "impulses" are separated into the actual and the three subsequent time steps:
|
|
103
|
+
|
|
104
|
+
.. integration-test::
|
|
105
|
+
|
|
106
|
+
>>> test("arma_rimorido_ma")
|
|
107
|
+
| date | qin | qpin | qpout | qout | output |
|
|
108
|
+
-----------------------------------------------
|
|
109
|
+
| 00:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
110
|
+
| 01:00 | 3.0 | 3.0 | 2.2 | 2.2 | 2.2 |
|
|
111
|
+
| 02:00 | 8.0 | 8.0 | 3.6 | 3.6 | 3.6 |
|
|
112
|
+
| 03:00 | 13.0 | 13.0 | 6.9 | 6.9 | 6.9 |
|
|
113
|
+
| 04:00 | 11.0 | 11.0 | 10.1 | 10.1 | 10.1 |
|
|
114
|
+
| 05:00 | 8.0 | 8.0 | 10.7 | 10.7 | 10.7 |
|
|
115
|
+
| 06:00 | 5.0 | 5.0 | 8.8 | 8.8 | 8.8 |
|
|
116
|
+
| 07:00 | 4.0 | 4.0 | 6.3 | 6.3 | 6.3 |
|
|
117
|
+
| 08:00 | 3.0 | 3.0 | 4.5 | 4.5 | 4.5 |
|
|
118
|
+
| 09:00 | 2.0 | 2.0 | 3.3 | 3.3 | 3.3 |
|
|
119
|
+
| 10:00 | 2.0 | 2.0 | 2.5 | 2.5 | 2.5 |
|
|
120
|
+
| 11:00 | 2.0 | 2.0 | 2.1 | 2.1 | 2.1 |
|
|
121
|
+
| 12:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
122
|
+
| 13:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
123
|
+
| 14:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
124
|
+
| 15:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
125
|
+
| 16:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
126
|
+
| 17:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
127
|
+
| 18:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
128
|
+
| 19:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
129
|
+
|
|
130
|
+
.. _arma_rimorido_arma:
|
|
131
|
+
|
|
132
|
+
ARMA coefficients
|
|
133
|
+
_________________
|
|
134
|
+
|
|
135
|
+
Now, we set the order of the MA process to the smallest possible value, which is one.
|
|
136
|
+
The autoregression (AR) process is of order two. Note that negative AR coefficients
|
|
137
|
+
are allowed (also note the opposite signs of the coefficients in contrast to the
|
|
138
|
+
statistical literature):
|
|
139
|
+
|
|
140
|
+
>>> responses(((1.1, -0.3), (0.2,)))
|
|
141
|
+
|
|
142
|
+
Due to the AR process, the maximum time delay of some fractions of each input impulse
|
|
143
|
+
is theoretically infinite:
|
|
144
|
+
|
|
145
|
+
.. integration-test::
|
|
146
|
+
|
|
147
|
+
>>> test("arma_rimorido_arma")
|
|
148
|
+
| date | qin | qpin | qpout | qout | output |
|
|
149
|
+
--------------------------------------------------------
|
|
150
|
+
| 00:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
151
|
+
| 01:00 | 3.0 | 3.0 | 2.2 | 2.2 | 2.2 |
|
|
152
|
+
| 02:00 | 8.0 | 8.0 | 3.42 | 3.42 | 3.42 |
|
|
153
|
+
| 03:00 | 13.0 | 13.0 | 5.702 | 5.702 | 5.702 |
|
|
154
|
+
| 04:00 | 11.0 | 11.0 | 7.4462 | 7.4462 | 7.4462 |
|
|
155
|
+
| 05:00 | 8.0 | 8.0 | 8.08022 | 8.08022 | 8.08022 |
|
|
156
|
+
| 06:00 | 5.0 | 5.0 | 7.654382 | 7.654382 | 7.654382 |
|
|
157
|
+
| 07:00 | 4.0 | 4.0 | 6.795754 | 6.795754 | 6.795754 |
|
|
158
|
+
| 08:00 | 3.0 | 3.0 | 5.779015 | 5.779015 | 5.779015 |
|
|
159
|
+
| 09:00 | 2.0 | 2.0 | 4.71819 | 4.71819 | 4.71819 |
|
|
160
|
+
| 10:00 | 2.0 | 2.0 | 3.856305 | 3.856305 | 3.856305 |
|
|
161
|
+
| 11:00 | 2.0 | 2.0 | 3.226478 | 3.226478 | 3.226478 |
|
|
162
|
+
| 12:00 | 2.0 | 2.0 | 2.792235 | 2.792235 | 2.792235 |
|
|
163
|
+
| 13:00 | 2.0 | 2.0 | 2.503515 | 2.503515 | 2.503515 |
|
|
164
|
+
| 14:00 | 2.0 | 2.0 | 2.316196 | 2.316196 | 2.316196 |
|
|
165
|
+
| 15:00 | 2.0 | 2.0 | 2.196761 | 2.196761 | 2.196761 |
|
|
166
|
+
| 16:00 | 2.0 | 2.0 | 2.121578 | 2.121578 | 2.121578 |
|
|
167
|
+
| 17:00 | 2.0 | 2.0 | 2.074708 | 2.074708 | 2.074708 |
|
|
168
|
+
| 18:00 | 2.0 | 2.0 | 2.045705 | 2.045705 | 2.045705 |
|
|
169
|
+
| 19:00 | 2.0 | 2.0 | 2.027863 | 2.027863 | 2.027863 |
|
|
170
|
+
|
|
171
|
+
.. _arma_rimorido_delay:
|
|
172
|
+
|
|
173
|
+
Increased delay
|
|
174
|
+
_______________
|
|
175
|
+
|
|
176
|
+
This example is identical to the second one, except for the additional time delay of
|
|
177
|
+
exactly one hour due to the changed MA process:
|
|
178
|
+
|
|
179
|
+
>>> responses(((1.1, -0.3), (0.0, 0.2)))
|
|
180
|
+
|
|
181
|
+
.. integration-test::
|
|
182
|
+
|
|
183
|
+
>>> test("arma_rimorido_delay")
|
|
184
|
+
| date | qin | qpin | qpout | qout | output |
|
|
185
|
+
--------------------------------------------------------
|
|
186
|
+
| 00:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
187
|
+
| 01:00 | 3.0 | 3.0 | 2.0 | 2.0 | 2.0 |
|
|
188
|
+
| 02:00 | 8.0 | 8.0 | 2.2 | 2.2 | 2.2 |
|
|
189
|
+
| 03:00 | 13.0 | 13.0 | 3.42 | 3.42 | 3.42 |
|
|
190
|
+
| 04:00 | 11.0 | 11.0 | 5.702 | 5.702 | 5.702 |
|
|
191
|
+
| 05:00 | 8.0 | 8.0 | 7.4462 | 7.4462 | 7.4462 |
|
|
192
|
+
| 06:00 | 5.0 | 5.0 | 8.08022 | 8.08022 | 8.08022 |
|
|
193
|
+
| 07:00 | 4.0 | 4.0 | 7.654382 | 7.654382 | 7.654382 |
|
|
194
|
+
| 08:00 | 3.0 | 3.0 | 6.795754 | 6.795754 | 6.795754 |
|
|
195
|
+
| 09:00 | 2.0 | 2.0 | 5.779015 | 5.779015 | 5.779015 |
|
|
196
|
+
| 10:00 | 2.0 | 2.0 | 4.71819 | 4.71819 | 4.71819 |
|
|
197
|
+
| 11:00 | 2.0 | 2.0 | 3.856305 | 3.856305 | 3.856305 |
|
|
198
|
+
| 12:00 | 2.0 | 2.0 | 3.226478 | 3.226478 | 3.226478 |
|
|
199
|
+
| 13:00 | 2.0 | 2.0 | 2.792235 | 2.792235 | 2.792235 |
|
|
200
|
+
| 14:00 | 2.0 | 2.0 | 2.503515 | 2.503515 | 2.503515 |
|
|
201
|
+
| 15:00 | 2.0 | 2.0 | 2.316196 | 2.316196 | 2.316196 |
|
|
202
|
+
| 16:00 | 2.0 | 2.0 | 2.196761 | 2.196761 | 2.196761 |
|
|
203
|
+
| 17:00 | 2.0 | 2.0 | 2.121578 | 2.121578 | 2.121578 |
|
|
204
|
+
| 18:00 | 2.0 | 2.0 | 2.074708 | 2.074708 | 2.074708 |
|
|
205
|
+
| 19:00 | 2.0 | 2.0 | 2.045705 | 2.045705 | 2.045705 |
|
|
206
|
+
|
|
207
|
+
.. _arma_rimorido_negative_discharge:
|
|
208
|
+
|
|
209
|
+
Negative discharge
|
|
210
|
+
__________________
|
|
211
|
+
|
|
212
|
+
In some hydrological applications, the inflow into a channel might sometimes be lower
|
|
213
|
+
than 0 m³/s. |arma_rimorido| generally routes such negative discharges using the
|
|
214
|
+
response function with the lowest discharge threshold. When we repeat the calculation
|
|
215
|
+
of the :ref:`arma_rimorido_delay` example with inflow constantly decreased by 3 m³/s,
|
|
216
|
+
the outflow is also constantly decreased by 3 m³/s, and many simulated values are
|
|
217
|
+
negative:
|
|
218
|
+
|
|
219
|
+
.. integration-test::
|
|
220
|
+
|
|
221
|
+
>>> nodes.input1.sequences.sim.series -= 3.0
|
|
222
|
+
>>> test.inits = ((logs.login, -1.0),
|
|
223
|
+
... (logs.logout, -1.0))
|
|
224
|
+
>>> test("arma_rimorido_negative_discharge")
|
|
225
|
+
| date | qin | qpin | qpout | qout | output |
|
|
226
|
+
-----------------------------------------------------------
|
|
227
|
+
| 00:00 | -1.0 | -1.0 | -1.0 | -1.0 | -1.0 |
|
|
228
|
+
| 01:00 | 0.0 | 0.0 | -1.0 | -1.0 | -1.0 |
|
|
229
|
+
| 02:00 | 5.0 | 5.0 | -0.8 | -0.8 | -0.8 |
|
|
230
|
+
| 03:00 | 10.0 | 10.0 | 0.42 | 0.42 | 0.42 |
|
|
231
|
+
| 04:00 | 8.0 | 8.0 | 2.702 | 2.702 | 2.702 |
|
|
232
|
+
| 05:00 | 5.0 | 5.0 | 4.4462 | 4.4462 | 4.4462 |
|
|
233
|
+
| 06:00 | 2.0 | 2.0 | 5.08022 | 5.08022 | 5.08022 |
|
|
234
|
+
| 07:00 | 1.0 | 1.0 | 4.654382 | 4.654382 | 4.654382 |
|
|
235
|
+
| 08:00 | 0.0 | 0.0 | 3.795754 | 3.795754 | 3.795754 |
|
|
236
|
+
| 09:00 | -1.0 | -1.0 | 2.779015 | 2.779015 | 2.779015 |
|
|
237
|
+
| 10:00 | -1.0 | -1.0 | 1.71819 | 1.71819 | 1.71819 |
|
|
238
|
+
| 11:00 | -1.0 | -1.0 | 0.856305 | 0.856305 | 0.856305 |
|
|
239
|
+
| 12:00 | -1.0 | -1.0 | 0.226478 | 0.226478 | 0.226478 |
|
|
240
|
+
| 13:00 | -1.0 | -1.0 | -0.207765 | -0.207765 | -0.207765 |
|
|
241
|
+
| 14:00 | -1.0 | -1.0 | -0.496485 | -0.496485 | -0.496485 |
|
|
242
|
+
| 15:00 | -1.0 | -1.0 | -0.683804 | -0.683804 | -0.683804 |
|
|
243
|
+
| 16:00 | -1.0 | -1.0 | -0.803239 | -0.803239 | -0.803239 |
|
|
244
|
+
| 17:00 | -1.0 | -1.0 | -0.878422 | -0.878422 | -0.878422 |
|
|
245
|
+
| 18:00 | -1.0 | -1.0 | -0.925292 | -0.925292 | -0.925292 |
|
|
246
|
+
| 19:00 | -1.0 | -1.0 | -0.954295 | -0.954295 | -0.954295 |
|
|
247
|
+
|
|
248
|
+
>>> nodes.input1.sequences.sim.series += 3.0
|
|
249
|
+
>>> test.inits = ((logs.login, 2.0),
|
|
250
|
+
... (logs.logout, 2.0))
|
|
251
|
+
|
|
252
|
+
.. _arma_rimorido_plausibility:
|
|
253
|
+
|
|
254
|
+
Plausibility
|
|
255
|
+
____________
|
|
256
|
+
|
|
257
|
+
Be aware that neither parameter |Responses| checks the assigned coefficients nor does
|
|
258
|
+
|arma_rimorido| check the calculated outflow for plausibility (one can use the features
|
|
259
|
+
provided in modules |iuhtools| and |armatools| to calculate reliable coefficients).
|
|
260
|
+
The fourth example increases the span of the AR coefficients used in the third example.
|
|
261
|
+
The complete ARMA process is still mass conservative, but some response values of the
|
|
262
|
+
recession curve are negative:
|
|
263
|
+
|
|
264
|
+
.. integration-test::
|
|
265
|
+
|
|
266
|
+
>>> responses(((1.5, -0.7), (0.0, 0.2)))
|
|
267
|
+
>>> test("arma_rimorido_plausibility")
|
|
268
|
+
| date | qin | qpin | qpout | qout | output |
|
|
269
|
+
-----------------------------------------------------------
|
|
270
|
+
| 00:00 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 |
|
|
271
|
+
| 01:00 | 3.0 | 3.0 | 2.0 | 2.0 | 2.0 |
|
|
272
|
+
| 02:00 | 8.0 | 8.0 | 2.2 | 2.2 | 2.2 |
|
|
273
|
+
| 03:00 | 13.0 | 13.0 | 3.5 | 3.5 | 3.5 |
|
|
274
|
+
| 04:00 | 11.0 | 11.0 | 6.31 | 6.31 | 6.31 |
|
|
275
|
+
| 05:00 | 8.0 | 8.0 | 9.215 | 9.215 | 9.215 |
|
|
276
|
+
| 06:00 | 5.0 | 5.0 | 11.0055 | 11.0055 | 11.0055 |
|
|
277
|
+
| 07:00 | 4.0 | 4.0 | 11.05775 | 11.05775 | 11.05775 |
|
|
278
|
+
| 08:00 | 3.0 | 3.0 | 9.682775 | 9.682775 | 9.682775 |
|
|
279
|
+
| 09:00 | 2.0 | 2.0 | 7.383738 | 7.383738 | 7.383738 |
|
|
280
|
+
| 10:00 | 2.0 | 2.0 | 4.697664 | 4.697664 | 4.697664 |
|
|
281
|
+
| 11:00 | 2.0 | 2.0 | 2.277879 | 2.277879 | 2.277879 |
|
|
282
|
+
| 12:00 | 2.0 | 2.0 | 0.528454 | 0.528454 | 0.528454 |
|
|
283
|
+
| 13:00 | 2.0 | 2.0 | -0.401834 | -0.401834 | -0.401834 |
|
|
284
|
+
| 14:00 | 2.0 | 2.0 | -0.572669 | -0.572669 | -0.572669 |
|
|
285
|
+
| 15:00 | 2.0 | 2.0 | -0.17772 | -0.17772 | -0.17772 |
|
|
286
|
+
| 16:00 | 2.0 | 2.0 | 0.534289 | 0.534289 | 0.534289 |
|
|
287
|
+
| 17:00 | 2.0 | 2.0 | 1.325837 | 1.325837 | 1.325837 |
|
|
288
|
+
| 18:00 | 2.0 | 2.0 | 2.014753 | 2.014753 | 2.014753 |
|
|
289
|
+
| 19:00 | 2.0 | 2.0 | 2.494044 | 2.494044 | 2.494044 |
|
|
290
|
+
|
|
291
|
+
.. _arma_rimorido_nonlinearity:
|
|
292
|
+
|
|
293
|
+
Nonlinearity
|
|
294
|
+
____________
|
|
295
|
+
|
|
296
|
+
In the following example, we combine the coefficients of the first two examples.
|
|
297
|
+
Between inflow values of 0 and 7 m³/s, the pure AR process is applied. For inflow
|
|
298
|
+
discharges exceeding 7 m³/s, inflow is separated. The AR process is still applied on
|
|
299
|
+
the portion of 7 m³/s, but for the inflow exceeding this threshold, the mixed ARMA
|
|
300
|
+
model is applied:
|
|
301
|
+
|
|
302
|
+
>>> responses(_0=((), (0.2, 0.4, 0.3, 0.1)),
|
|
303
|
+
... _7=((1.1, -0.3), (0.2,)))
|
|
304
|
+
|
|
305
|
+
To start from stationary conditions again, one has to apply different values to both
|
|
306
|
+
log sequences. The base flow value of 2 m³/s is only given to the (low flow) MA model;
|
|
307
|
+
the (high flow) ARMA model is initialized with zero values instead:
|
|
308
|
+
|
|
309
|
+
>>> test.inits.login = [[2.0], [0.0]]
|
|
310
|
+
>>> test.inits.logout = [[2.0], [0.0]]
|
|
311
|
+
|
|
312
|
+
The separate handling of the inflow can be studied by inspecting the columns of
|
|
313
|
+
sequence |QPIn| and sequence |QPOut|. The respective left columns show the input and
|
|
314
|
+
output of the MA model, and the respective right columns show the input and output of
|
|
315
|
+
the ARMA model:
|
|
316
|
+
|
|
317
|
+
.. integration-test::
|
|
318
|
+
|
|
319
|
+
>>> test("arma_rimorido_nonlinearity")
|
|
320
|
+
| date | qin | qpin | qpout | qout | output |
|
|
321
|
+
------------------------------------------------------------------
|
|
322
|
+
| 00:00 | 2.0 | 2.0 0.0 | 2.0 0.0 | 2.0 | 2.0 |
|
|
323
|
+
| 01:00 | 3.0 | 3.0 0.0 | 2.2 0.0 | 2.2 | 2.2 |
|
|
324
|
+
| 02:00 | 8.0 | 7.0 1.0 | 3.4 0.2 | 3.6 | 3.6 |
|
|
325
|
+
| 03:00 | 13.0 | 7.0 6.0 | 5.3 1.42 | 6.72 | 6.72 |
|
|
326
|
+
| 04:00 | 11.0 | 7.0 4.0 | 6.6 2.302 | 8.902 | 8.902 |
|
|
327
|
+
| 05:00 | 8.0 | 7.0 1.0 | 7.0 2.3062 | 9.3062 | 9.3062 |
|
|
328
|
+
| 06:00 | 5.0 | 5.0 0.0 | 6.6 1.84622 | 8.44622 | 8.44622 |
|
|
329
|
+
| 07:00 | 4.0 | 4.0 0.0 | 5.6 1.338982 | 6.938982 | 6.938982 |
|
|
330
|
+
| 08:00 | 3.0 | 3.0 0.0 | 4.4 0.919014 | 5.319014 | 5.319014 |
|
|
331
|
+
| 09:00 | 2.0 | 2.0 0.0 | 3.3 0.609221 | 3.909221 | 3.909221 |
|
|
332
|
+
| 10:00 | 2.0 | 2.0 0.0 | 2.5 0.394439 | 2.894439 | 2.894439 |
|
|
333
|
+
| 11:00 | 2.0 | 2.0 0.0 | 2.1 0.251116 | 2.351116 | 2.351116 |
|
|
334
|
+
| 12:00 | 2.0 | 2.0 0.0 | 2.0 0.157896 | 2.157896 | 2.157896 |
|
|
335
|
+
| 13:00 | 2.0 | 2.0 0.0 | 2.0 0.098351 | 2.098351 | 2.098351 |
|
|
336
|
+
| 14:00 | 2.0 | 2.0 0.0 | 2.0 0.060817 | 2.060817 | 2.060817 |
|
|
337
|
+
| 15:00 | 2.0 | 2.0 0.0 | 2.0 0.037394 | 2.037394 | 2.037394 |
|
|
338
|
+
| 16:00 | 2.0 | 2.0 0.0 | 2.0 0.022888 | 2.022888 | 2.022888 |
|
|
339
|
+
| 17:00 | 2.0 | 2.0 0.0 | 2.0 0.013959 | 2.013959 | 2.013959 |
|
|
340
|
+
| 18:00 | 2.0 | 2.0 0.0 | 2.0 0.008488 | 2.008488 | 2.008488 |
|
|
341
|
+
| 19:00 | 2.0 | 2.0 0.0 | 2.0 0.005149 | 2.005149 | 2.005149 |
|
|
342
|
+
"""
|
|
343
|
+
|
|
344
|
+
# import...
|
|
345
|
+
# ...from HydPy
|
|
346
|
+
from hydpy.exe.modelimports import *
|
|
347
|
+
from hydpy.core import modeltools
|
|
348
|
+
|
|
349
|
+
# ...from arma
|
|
350
|
+
from hydpy.models.arma import arma_model
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
class Model(modeltools.AdHocModel):
|
|
354
|
+
"""|arma_rimorido.DOCNAME.complete|."""
|
|
355
|
+
|
|
356
|
+
DOCNAME = modeltools.DocName(
|
|
357
|
+
short="ARMA-RIMO/RIDO",
|
|
358
|
+
description="nonlinear routing by multiple ARMA processes",
|
|
359
|
+
)
|
|
360
|
+
__HYDPY_ROOTMODEL__ = True
|
|
361
|
+
|
|
362
|
+
INLET_METHODS = (arma_model.Pick_Q_V1,)
|
|
363
|
+
RECEIVER_METHODS = ()
|
|
364
|
+
RUN_METHODS = (
|
|
365
|
+
arma_model.Calc_QPIn_V1,
|
|
366
|
+
arma_model.Update_LogIn_V1,
|
|
367
|
+
arma_model.Calc_QMA_V1,
|
|
368
|
+
arma_model.Calc_QAR_V1,
|
|
369
|
+
arma_model.Calc_QPOut_V1,
|
|
370
|
+
arma_model.Update_LogOut_V1,
|
|
371
|
+
arma_model.Calc_QOut_V1,
|
|
372
|
+
)
|
|
373
|
+
ADD_METHODS = ()
|
|
374
|
+
OUTLET_METHODS = (arma_model.Pass_Q_V1,)
|
|
375
|
+
SENDER_METHODS = ()
|
|
376
|
+
SUBMODELINTERFACES = ()
|
|
377
|
+
SUBMODELS = ()
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
tester = Tester()
|
|
381
|
+
cythonizer = Cythonizer()
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""
|
|
2
|
+
The |conv.DOCNAME.complete| model family allows connecting different kinds of models
|
|
3
|
+
providing output and requiring input that does not fit immediately.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# import...
|
|
7
|
+
# ...from HydPy
|
|
8
|
+
from hydpy.exe.modelimports import *
|
|
9
|
+
from hydpy.models.conv.conv_model import Model
|
|
10
|
+
|
|
11
|
+
tester = Tester()
|
|
12
|
+
cythonizer = Cythonizer()
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# pylint: disable=missing-module-docstring
|
|
2
|
+
|
|
3
|
+
# import...
|
|
4
|
+
# ...from site-packages
|
|
5
|
+
import numpy
|
|
6
|
+
|
|
7
|
+
# ...from HydPy
|
|
8
|
+
from hydpy import config
|
|
9
|
+
from hydpy.core import devicetools
|
|
10
|
+
from hydpy.core import objecttools
|
|
11
|
+
from hydpy.core import parametertools
|
|
12
|
+
from hydpy.core.typingtools import *
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Coordinates(parametertools.Parameter):
|
|
16
|
+
"""Base class for |InputCoordinates| and |OutputCoordinates| [?].
|
|
17
|
+
|
|
18
|
+
We use the derived class |InputCoordinates| as an example:
|
|
19
|
+
|
|
20
|
+
>>> from hydpy.models.conv import *
|
|
21
|
+
>>> parameterstep()
|
|
22
|
+
|
|
23
|
+
|Coordinates| subclasses define 2-dimensional sequences. Hence, we
|
|
24
|
+
must define their shape first:
|
|
25
|
+
|
|
26
|
+
>>> inputcoordinates
|
|
27
|
+
inputcoordinates(?)
|
|
28
|
+
>>> inputcoordinates.values
|
|
29
|
+
Traceback (most recent call last):
|
|
30
|
+
...
|
|
31
|
+
hydpy.core.exceptiontools.AttributeNotReady: Shape information for \
|
|
32
|
+
variable `inputcoordinates` can only be retrieved after it has been defined.
|
|
33
|
+
|
|
34
|
+
However, you usually do this automatically when assigning new
|
|
35
|
+
values. Use keyword arguments to define the names of the relevant
|
|
36
|
+
input nodes as well as their coordinates:
|
|
37
|
+
|
|
38
|
+
>>> from hydpy import print_matrix
|
|
39
|
+
>>> inputcoordinates(in1=(1.0, 3.0))
|
|
40
|
+
>>> inputcoordinates
|
|
41
|
+
inputcoordinates(in1=(1.0, 3.0))
|
|
42
|
+
>>> print_matrix(inputcoordinates.values)
|
|
43
|
+
| 1.0, 3.0 |
|
|
44
|
+
|
|
45
|
+
Defining new coordinates removes the old ones:
|
|
46
|
+
|
|
47
|
+
>>> inputcoordinates(in2=(2.0, 4.0),
|
|
48
|
+
... in0=(3.0, 5.0),
|
|
49
|
+
... in3=(4.0, 6.0))
|
|
50
|
+
>>> inputcoordinates
|
|
51
|
+
inputcoordinates(in2=(2.0, 4.0),
|
|
52
|
+
in0=(3.0, 5.0),
|
|
53
|
+
in3=(4.0, 6.0))
|
|
54
|
+
>>> print_matrix(inputcoordinates.values)
|
|
55
|
+
| 2.0, 4.0 |
|
|
56
|
+
| 3.0, 5.0 |
|
|
57
|
+
| 4.0, 6.0 |
|
|
58
|
+
|
|
59
|
+
You are free to change individual coordinate values (the rows of the
|
|
60
|
+
data array contain the different value pairs; the row order
|
|
61
|
+
corresponds to the definition order when "calling" the parameter):
|
|
62
|
+
|
|
63
|
+
>>> inputcoordinates.values[1, 0] = 9.0
|
|
64
|
+
>>> inputcoordinates
|
|
65
|
+
inputcoordinates(in2=(2.0, 4.0),
|
|
66
|
+
in0=(9.0, 5.0),
|
|
67
|
+
in3=(4.0, 6.0))
|
|
68
|
+
|
|
69
|
+
The attribute |Coordinates.nodes| stores the correctly ordered nodes:
|
|
70
|
+
|
|
71
|
+
>>> inputcoordinates.nodes
|
|
72
|
+
(Node("in2", variable="Q"), Node("in0", variable="Q"), \
|
|
73
|
+
Node("in3", variable="Q"))
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
NDIM, TYPE, TIME, SPAN = 2, float, None, (None, None)
|
|
77
|
+
|
|
78
|
+
nodes: tuple[devicetools.Node, ...]
|
|
79
|
+
"""The relevant input or output nodes."""
|
|
80
|
+
|
|
81
|
+
def __init__(self, subvars: parametertools.SubParameters):
|
|
82
|
+
super().__init__(subvars)
|
|
83
|
+
self.nodes = ()
|
|
84
|
+
|
|
85
|
+
def __call__(self, *args, **kwargs) -> None:
|
|
86
|
+
nodes = []
|
|
87
|
+
coordinates = numpy.empty((len(kwargs), 2), dtype=config.NP_FLOAT)
|
|
88
|
+
for idx, (name, values) in enumerate(kwargs.items()):
|
|
89
|
+
nodes.append(devicetools.Node(name))
|
|
90
|
+
coordinates[idx, :] = values
|
|
91
|
+
self.nodes = tuple(nodes)
|
|
92
|
+
self._set_shape((len(nodes), 2))
|
|
93
|
+
self._set_value(coordinates)
|
|
94
|
+
|
|
95
|
+
def __repr__(self) -> str:
|
|
96
|
+
prefix = f"{self.name}("
|
|
97
|
+
blanks = " " * len(prefix)
|
|
98
|
+
lines = []
|
|
99
|
+
if self.nodes:
|
|
100
|
+
for idx, node in enumerate(self.nodes):
|
|
101
|
+
entry = f"{node.name}={objecttools.repr_tuple(self.values[idx, :])}"
|
|
102
|
+
if not idx:
|
|
103
|
+
lines.append(f"{prefix}{entry}")
|
|
104
|
+
else:
|
|
105
|
+
lines.append(f"{blanks}{entry}")
|
|
106
|
+
if idx < len(self.nodes) - 1:
|
|
107
|
+
lines[-1] += ","
|
|
108
|
+
else:
|
|
109
|
+
lines[-1] += ")"
|
|
110
|
+
return "\n".join(lines)
|
|
111
|
+
return f"{prefix}?)"
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class InputCoordinates(Coordinates):
|
|
115
|
+
"""Coordinates of the inlet nodes [?]."""
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
class OutputCoordinates(Coordinates):
|
|
119
|
+
"""Coordinates of the outlet nodes [?]."""
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class Heights(parametertools.Parameter):
|
|
123
|
+
"""Base class for |InputHeights| and |OutputHeights| [?].
|
|
124
|
+
|
|
125
|
+
We use the derived class |InputHeights| as an example:
|
|
126
|
+
|
|
127
|
+
>>> from hydpy.models.conv import *
|
|
128
|
+
>>> parameterstep()
|
|
129
|
+
|
|
130
|
+
|Heights| subclasses define 1-dimensional sequences. Hence, we must define
|
|
131
|
+
their shape first:
|
|
132
|
+
|
|
133
|
+
>>> inputheights
|
|
134
|
+
inputheights(?)
|
|
135
|
+
>>> inputheights.values
|
|
136
|
+
Traceback (most recent call last):
|
|
137
|
+
...
|
|
138
|
+
hydpy.core.exceptiontools.AttributeNotReady: Shape information for \
|
|
139
|
+
variable `inputheights` can only be retrieved after it has been defined.
|
|
140
|
+
|
|
141
|
+
However, you usually do this automatically when assigning new values.
|
|
142
|
+
Use keyword arguments to define the names of the relevant input nodes
|
|
143
|
+
as well as their heights:
|
|
144
|
+
|
|
145
|
+
>>> from hydpy import print_vector
|
|
146
|
+
>>> inputheights(in1=1.0)
|
|
147
|
+
>>> inputheights
|
|
148
|
+
inputheights(in1=1.0)
|
|
149
|
+
>>> print_vector(inputheights.values)
|
|
150
|
+
1.0
|
|
151
|
+
|
|
152
|
+
Defining new heights removes the old ones:
|
|
153
|
+
|
|
154
|
+
>>> inputheights(in2=2.0,
|
|
155
|
+
... in0=3.0,
|
|
156
|
+
... in3=4.0)
|
|
157
|
+
>>> inputheights
|
|
158
|
+
inputheights(in2=2.0,
|
|
159
|
+
in0=3.0,
|
|
160
|
+
in3=4.0)
|
|
161
|
+
>>> print_vector(inputheights.values)
|
|
162
|
+
2.0, 3.0, 4.0
|
|
163
|
+
|
|
164
|
+
You are free to change individual height values (the row order corresponds
|
|
165
|
+
to the definition order when "calling" the parameter):
|
|
166
|
+
|
|
167
|
+
>>> inputheights.values[1] = 9.0
|
|
168
|
+
>>> inputheights
|
|
169
|
+
inputheights(in2=2.0,
|
|
170
|
+
in0=9.0,
|
|
171
|
+
in3=4.0)
|
|
172
|
+
|
|
173
|
+
The attribute |Heights.nodes| stores the correctly ordered nodes:
|
|
174
|
+
|
|
175
|
+
>>> inputheights.nodes
|
|
176
|
+
(Node("in2", variable="Q"), Node("in0", variable="Q"), \
|
|
177
|
+
Node("in3", variable="Q"))
|
|
178
|
+
"""
|
|
179
|
+
|
|
180
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (None, None)
|
|
181
|
+
|
|
182
|
+
nodes: tuple[devicetools.Node, ...]
|
|
183
|
+
"""The relevant input or output nodes."""
|
|
184
|
+
|
|
185
|
+
def __init__(self, subvars: parametertools.SubParameters):
|
|
186
|
+
super().__init__(subvars)
|
|
187
|
+
self.nodes = ()
|
|
188
|
+
|
|
189
|
+
def __call__(self, *args, **kwargs) -> None:
|
|
190
|
+
nodes = []
|
|
191
|
+
heights = numpy.empty(len(kwargs), dtype=config.NP_FLOAT)
|
|
192
|
+
for idx, (name, value) in enumerate(kwargs.items()):
|
|
193
|
+
nodes.append(devicetools.Node(name))
|
|
194
|
+
heights[idx] = value
|
|
195
|
+
self.nodes = tuple(nodes)
|
|
196
|
+
self._set_shape(len(nodes))
|
|
197
|
+
self._set_value(heights)
|
|
198
|
+
|
|
199
|
+
def __repr__(self) -> str:
|
|
200
|
+
prefix = f"{self.name}("
|
|
201
|
+
blanks = " " * len(prefix)
|
|
202
|
+
lines = []
|
|
203
|
+
if self.nodes:
|
|
204
|
+
for idx, node in enumerate(self.nodes):
|
|
205
|
+
entry = f"{node.name}={self.values[idx]}"
|
|
206
|
+
if not idx:
|
|
207
|
+
lines.append(f"{prefix}{entry}")
|
|
208
|
+
else:
|
|
209
|
+
lines.append(f"{blanks}{entry}")
|
|
210
|
+
if idx < len(self.nodes) - 1:
|
|
211
|
+
lines[-1] += ","
|
|
212
|
+
else:
|
|
213
|
+
lines[-1] += ")"
|
|
214
|
+
return "\n".join(lines)
|
|
215
|
+
return f"{prefix}?)"
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
class InputHeights(Heights):
|
|
219
|
+
"""The height (above sea level or anything else) of the input nodes [?]."""
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
class OutputHeights(Heights):
|
|
223
|
+
"""The height (above sea level or anything else) of the output nodes [?]."""
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
class MaxNmbInputs(parametertools.Parameter):
|
|
227
|
+
"""The maximum number of input locations to be taken into account for
|
|
228
|
+
interpolating the values of a specific output location [-].
|
|
229
|
+
|
|
230
|
+
When passing no value, parameter |MaxNmbInputs| queries it from the shape
|
|
231
|
+
of parameter |InputCoordinates|:
|
|
232
|
+
|
|
233
|
+
>>> from hydpy.models.conv import *
|
|
234
|
+
>>> parameterstep()
|
|
235
|
+
>>> inputcoordinates(in2=(2.0, 4.0),
|
|
236
|
+
... in0=(3.0, 5.0),
|
|
237
|
+
... in3=(4.0, 6.0))
|
|
238
|
+
>>> maxnmbinputs()
|
|
239
|
+
>>> maxnmbinputs
|
|
240
|
+
maxnmbinputs(3)
|
|
241
|
+
|
|
242
|
+
You can define alternative values manually:
|
|
243
|
+
|
|
244
|
+
>>> maxnmbinputs(2)
|
|
245
|
+
>>> maxnmbinputs
|
|
246
|
+
maxnmbinputs(2)
|
|
247
|
+
"""
|
|
248
|
+
|
|
249
|
+
NDIM, TYPE, TIME, SPAN = 0, int, None, (1, None)
|
|
250
|
+
|
|
251
|
+
def __call__(self, *args, **kwargs) -> None:
|
|
252
|
+
if not args and not kwargs:
|
|
253
|
+
super().__call__(self.subpars.inputcoordinates.shape[0])
|
|
254
|
+
else:
|
|
255
|
+
super().__call__(*args, **kwargs)
|
|
256
|
+
|
|
257
|
+
def trim(self, lower=None, upper=None) -> bool:
|
|
258
|
+
"""Assure that the value of |MaxNmbInputs| does not exceed the
|
|
259
|
+
number of available input locations.
|
|
260
|
+
|
|
261
|
+
>>> from hydpy.models.conv import *
|
|
262
|
+
>>> parameterstep()
|
|
263
|
+
>>> inputcoordinates(in2=(2.0, 4.0),
|
|
264
|
+
... in0=(3.0, 5.0),
|
|
265
|
+
... in3=(4.0, 6.0))
|
|
266
|
+
>>> maxnmbinputs(0)
|
|
267
|
+
Traceback (most recent call last):
|
|
268
|
+
...
|
|
269
|
+
ValueError: The value `0` of parameter `maxnmbinputs` of \
|
|
270
|
+
element `?` is not valid.
|
|
271
|
+
>>> maxnmbinputs(4)
|
|
272
|
+
Traceback (most recent call last):
|
|
273
|
+
...
|
|
274
|
+
ValueError: The value `4` of parameter `maxnmbinputs` of \
|
|
275
|
+
element `?` is not valid.
|
|
276
|
+
"""
|
|
277
|
+
if upper is None:
|
|
278
|
+
upper = self.subpars.inputcoordinates.shape[0]
|
|
279
|
+
return super().trim(lower, upper)
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
class MinNmbInputs(parametertools.Parameter):
|
|
283
|
+
"""The minimum number of inputs for performing a statistical analysis [-]."""
|
|
284
|
+
|
|
285
|
+
NDIM, TYPE, TIME, SPAN = 0, int, None, (2, None)
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
class DefaultConstant(parametertools.Parameter):
|
|
289
|
+
"""Default or fallback value for the constant of the linear regression model [?]."""
|
|
290
|
+
|
|
291
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (None, None)
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
class DefaultFactor(parametertools.Parameter):
|
|
295
|
+
"""Default or fallback value for the factor of the linear regression model [?]."""
|
|
296
|
+
|
|
297
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (-1.0, 1.0)
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
class Power(parametertools.Parameter):
|
|
301
|
+
"""Power parameter for calculating inverse distance weights [-]."""
|
|
302
|
+
|
|
303
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0, None)
|