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,74 @@
|
|
|
1
|
+
# pylint: disable=line-too-long, unused-wildcard-import
|
|
2
|
+
"""
|
|
3
|
+
Use |evap_ret_io| as a submodel for handing externally available time series of
|
|
4
|
+
reference evapotranspiration to main models like |lland_dd|.
|
|
5
|
+
|
|
6
|
+
Integration test
|
|
7
|
+
================
|
|
8
|
+
|
|
9
|
+
.. how_to_understand_integration_tests::
|
|
10
|
+
|
|
11
|
+
The only functionality of |evap_ret_io| besides reading input time series is to adjust
|
|
12
|
+
the given values to multiple hydrological response units. Hence, configuring and
|
|
13
|
+
testing it does not require additional explanations:
|
|
14
|
+
|
|
15
|
+
>>> from hydpy.models.evap_ret_io import *
|
|
16
|
+
>>> parameterstep()
|
|
17
|
+
>>> from hydpy import Element
|
|
18
|
+
>>> element = Element("element")
|
|
19
|
+
>>> element.model = model
|
|
20
|
+
|
|
21
|
+
>>> from hydpy import IntegrationTest, pub
|
|
22
|
+
>>> pub.timegrids = "2000-01-01", "2000-01-03", "1d"
|
|
23
|
+
>>> nmbhru(2)
|
|
24
|
+
>>> hruarea(0.2, 0.8)
|
|
25
|
+
>>> evapotranspirationfactor(0.8, 1.2)
|
|
26
|
+
|
|
27
|
+
>>> test = IntegrationTest(element)
|
|
28
|
+
>>> test.dateformat = "%Y-%d-%m"
|
|
29
|
+
|
|
30
|
+
>>> inputs.referenceevapotranspiration.series = 1.0, 2.0
|
|
31
|
+
|
|
32
|
+
.. integration-test::
|
|
33
|
+
|
|
34
|
+
>>> test()
|
|
35
|
+
| date | referenceevapotranspiration | referenceevapotranspiration | meanreferenceevapotranspiration |
|
|
36
|
+
-----------------------------------------------------------------------------------------------------------------
|
|
37
|
+
| 2000-01-01 | 1.0 | 0.8 1.2 | 1.12 |
|
|
38
|
+
| 2000-02-01 | 2.0 | 1.6 2.4 | 2.24 |
|
|
39
|
+
"""
|
|
40
|
+
# import...
|
|
41
|
+
# ...from HydPy
|
|
42
|
+
from hydpy.core import modeltools
|
|
43
|
+
from hydpy.exe.modelimports import *
|
|
44
|
+
from hydpy.interfaces import petinterfaces
|
|
45
|
+
from hydpy.models.evap import evap_model
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class Model(evap_model.Sub_ETModel, petinterfaces.PETModel_V1):
|
|
49
|
+
"""|evap_ret_io.DOCNAME.complete|."""
|
|
50
|
+
|
|
51
|
+
DOCNAME = modeltools.DocName(short="Evap-RET-IO", description="external data")
|
|
52
|
+
__HYDPY_ROOTMODEL__ = False
|
|
53
|
+
|
|
54
|
+
INLET_METHODS = ()
|
|
55
|
+
RECEIVER_METHODS = ()
|
|
56
|
+
RUN_METHODS = (
|
|
57
|
+
evap_model.Calc_ReferenceEvapotranspiration_V3,
|
|
58
|
+
evap_model.Adjust_ReferenceEvapotranspiration_V1,
|
|
59
|
+
evap_model.Calc_MeanReferenceEvapotranspiration_V1,
|
|
60
|
+
)
|
|
61
|
+
INTERFACE_METHODS = (
|
|
62
|
+
evap_model.Determine_PotentialEvapotranspiration_V1,
|
|
63
|
+
evap_model.Get_PotentialEvapotranspiration_V1,
|
|
64
|
+
evap_model.Get_MeanPotentialEvapotranspiration_V1,
|
|
65
|
+
)
|
|
66
|
+
ADD_METHODS = ()
|
|
67
|
+
OUTLET_METHODS = ()
|
|
68
|
+
SENDER_METHODS = ()
|
|
69
|
+
SUBMODELINTERFACES = ()
|
|
70
|
+
SUBMODELS = ()
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
tester = Tester()
|
|
74
|
+
cythonizer = Cythonizer()
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# pylint: disable=line-too-long, unused-wildcard-import
|
|
2
|
+
"""The primary purpose of |evap_ret_tw2002| is to serve as a submodel that provides
|
|
3
|
+
estimates of potential grass reference evapotranspiration following :cite:t:`ref-DVWK`,
|
|
4
|
+
as demonstrated for |lland_dd|. However, you can also use it as a stand-alone model,
|
|
5
|
+
as it does not require interaction with a main model. The following examples make use
|
|
6
|
+
of this stand-alone functionality.
|
|
7
|
+
|
|
8
|
+
|evap_ret_tw2002| requires two submodels. One must follow the |RadiationModel_V1| or
|
|
9
|
+
the |RadiationModel_V2| interface and provide global radiation data; the other must
|
|
10
|
+
follow the |TempModel_V1| or the |TempModel_V2| interface and provide temperature data.
|
|
11
|
+
|
|
12
|
+
Integration tests
|
|
13
|
+
=================
|
|
14
|
+
|
|
15
|
+
.. how_to_understand_integration_tests::
|
|
16
|
+
|
|
17
|
+
Application model |evap_ret_tw2002| requires no input from an external model and does
|
|
18
|
+
not supply any data to an outlet sequence. Hence, assigning a model instance to a
|
|
19
|
+
blank |Element| instance is sufficient:
|
|
20
|
+
|
|
21
|
+
>>> from hydpy import Element
|
|
22
|
+
>>> from hydpy.models.evap_ret_tw2002 import *
|
|
23
|
+
>>> parameterstep()
|
|
24
|
+
>>> element = Element("element")
|
|
25
|
+
>>> element.model = model
|
|
26
|
+
|
|
27
|
+
The implemented Turc-Wendling should be applied to daily data:
|
|
28
|
+
|
|
29
|
+
>>> from hydpy import IntegrationTest, pub
|
|
30
|
+
>>> pub.timegrids = "2000-07-06", "2000-07-07", "1d"
|
|
31
|
+
|
|
32
|
+
We set the parameter and input values in agreement with the
|
|
33
|
+
:ref:`evap_ret_fao56_hourly_simulation` example of |evap_ret_fao56|, which allows for
|
|
34
|
+
comparison with the results of the FAO reference evapotranspiration model applied to
|
|
35
|
+
data of station Uccle (Brussels, Belgium), as reported in example 18 of
|
|
36
|
+
:cite:t:`ref-Allen1998`:
|
|
37
|
+
|
|
38
|
+
>>> nmbhru(1)
|
|
39
|
+
>>> hruarea(1.0)
|
|
40
|
+
>>> evapotranspirationfactor(1.0)
|
|
41
|
+
>>> hrualtitude(100.0)
|
|
42
|
+
|
|
43
|
+
|evap_ret_fao56| has no counterpart for the |CoastFactor| parameter. We set its value from
|
|
44
|
+
our gut feeling to 0.9, as Brussels is not directly adjacent to the coastline (0.6) but
|
|
45
|
+
also not that far away from it (1.0):
|
|
46
|
+
|
|
47
|
+
>>> coastfactor(0.9)
|
|
48
|
+
|
|
49
|
+
A |meteo_glob_io| and a |meteo_temp_io| submodel provide the required global radiation
|
|
50
|
+
and temperature data:
|
|
51
|
+
|
|
52
|
+
>>> with model.add_radiationmodel_v2("meteo_glob_io"):
|
|
53
|
+
... pass
|
|
54
|
+
>>> with model.add_tempmodel_v2("meteo_temp_io"):
|
|
55
|
+
... temperatureaddend(1.0)
|
|
56
|
+
|
|
57
|
+
Now, we can initialise an |IntegrationTest| object and set the required meteorological
|
|
58
|
+
input:
|
|
59
|
+
|
|
60
|
+
>>> test = IntegrationTest(element)
|
|
61
|
+
>>> test.dateformat = "%Y-%d-%m"
|
|
62
|
+
>>> model.tempmodel.sequences.inputs.temperature.series = 15.9
|
|
63
|
+
>>> model.radiationmodel.sequences.inputs.globalradiation.series = 255.367464
|
|
64
|
+
|
|
65
|
+
For the example at hand, there is an excellent agreement with the result calculated by
|
|
66
|
+
|evap_ret_fao56| and given by :cite:t:`ref-Allen1998`, which is 3.75 mm/d:
|
|
67
|
+
|
|
68
|
+
.. integration-test::
|
|
69
|
+
|
|
70
|
+
>>> test()
|
|
71
|
+
| date | airtemperature | globalradiation | referenceevapotranspiration | meanreferenceevapotranspiration |
|
|
72
|
+
-----------------------------------------------------------------------------------------------------------------
|
|
73
|
+
| 2000-06-07 | 16.9 | 255.367464 | 3.787245 | 3.787245 |
|
|
74
|
+
|
|
75
|
+
Instead of IO submodels, one could use the main model of |evap_ret_tw2002| for
|
|
76
|
+
providing the temperature data or a "real" submodel that calculates the global
|
|
77
|
+
radiation data. The first option is not feasible here due to not using
|
|
78
|
+
|evap_ret_tw2002| as a submodel but as a stand-alone model. But we can demonstrate the
|
|
79
|
+
latter option by using, for example, |meteo_glob_fao56|, which we also configure in
|
|
80
|
+
agreement with the :ref:`evap_ret_fao56_hourly_simulation` example. Hence,
|
|
81
|
+
|meteo_glob_fao56| reproduces the global radiation above so that |evap_ret_tw2002|
|
|
82
|
+
calculates the same potential evapotranspiration value:
|
|
83
|
+
|
|
84
|
+
>>> with model.add_radiationmodel_v1("meteo_glob_fao56"):
|
|
85
|
+
... latitude(50.8)
|
|
86
|
+
... angstromconstant(0.25)
|
|
87
|
+
... angstromfactor(0.5)
|
|
88
|
+
|
|
89
|
+
>>> test = IntegrationTest(element)
|
|
90
|
+
>>> test.dateformat = "%Y-%d-%m"
|
|
91
|
+
>>> model.tempmodel.sequences.inputs.temperature.series = 15.9
|
|
92
|
+
>>> model.radiationmodel.sequences.inputs.sunshineduration.series = 9.25
|
|
93
|
+
|
|
94
|
+
.. integration-test::
|
|
95
|
+
|
|
96
|
+
>>> test()
|
|
97
|
+
| date | airtemperature | globalradiation | referenceevapotranspiration | meanreferenceevapotranspiration |
|
|
98
|
+
-----------------------------------------------------------------------------------------------------------------
|
|
99
|
+
| 2000-06-07 | 16.9 | 255.367464 | 3.787245 | 3.787245 |
|
|
100
|
+
|
|
101
|
+
"""
|
|
102
|
+
# import...
|
|
103
|
+
# ...from HydPy
|
|
104
|
+
from hydpy.core import modeltools
|
|
105
|
+
from hydpy.exe.modelimports import *
|
|
106
|
+
from hydpy.interfaces import petinterfaces
|
|
107
|
+
from hydpy.interfaces import radiationinterfaces
|
|
108
|
+
from hydpy.interfaces import tempinterfaces
|
|
109
|
+
from hydpy.models.evap import evap_model
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class Model(
|
|
113
|
+
evap_model.Main_TempModel_V1,
|
|
114
|
+
evap_model.Main_TempModel_V2A,
|
|
115
|
+
evap_model.Main_RadiationModel_V1,
|
|
116
|
+
evap_model.Main_RadiationModel_V2,
|
|
117
|
+
evap_model.Sub_ETModel,
|
|
118
|
+
petinterfaces.PETModel_V1,
|
|
119
|
+
):
|
|
120
|
+
"""|evap_ret_tw2002.DOCNAME.complete|."""
|
|
121
|
+
|
|
122
|
+
DOCNAME = modeltools.DocName(
|
|
123
|
+
short="Evap-RET-TW2002",
|
|
124
|
+
description="Turc-Wendling reference evapotranspiration, 2002",
|
|
125
|
+
)
|
|
126
|
+
__HYDPY_ROOTMODEL__ = False
|
|
127
|
+
|
|
128
|
+
INLET_METHODS = ()
|
|
129
|
+
RECEIVER_METHODS = ()
|
|
130
|
+
RUN_METHODS = (
|
|
131
|
+
evap_model.Process_RadiationModel_V1,
|
|
132
|
+
evap_model.Calc_GlobalRadiation_V1,
|
|
133
|
+
evap_model.Calc_AirTemperature_V1,
|
|
134
|
+
evap_model.Calc_ReferenceEvapotranspiration_V2,
|
|
135
|
+
evap_model.Adjust_ReferenceEvapotranspiration_V1,
|
|
136
|
+
evap_model.Calc_MeanReferenceEvapotranspiration_V1,
|
|
137
|
+
)
|
|
138
|
+
INTERFACE_METHODS = (
|
|
139
|
+
evap_model.Determine_PotentialEvapotranspiration_V1,
|
|
140
|
+
evap_model.Get_PotentialEvapotranspiration_V1,
|
|
141
|
+
evap_model.Get_MeanPotentialEvapotranspiration_V1,
|
|
142
|
+
)
|
|
143
|
+
ADD_METHODS = (
|
|
144
|
+
evap_model.Calc_AirTemperature_TempModel_V1,
|
|
145
|
+
evap_model.Calc_AirTemperature_TempModel_V2,
|
|
146
|
+
)
|
|
147
|
+
OUTLET_METHODS = ()
|
|
148
|
+
SENDER_METHODS = ()
|
|
149
|
+
SUBMODELINTERFACES = (
|
|
150
|
+
tempinterfaces.TempModel_V1,
|
|
151
|
+
tempinterfaces.TempModel_V2,
|
|
152
|
+
radiationinterfaces.RadiationModel_V1,
|
|
153
|
+
)
|
|
154
|
+
SUBMODELS = ()
|
|
155
|
+
|
|
156
|
+
tempmodel = modeltools.SubmodelProperty(
|
|
157
|
+
tempinterfaces.TempModel_V1, tempinterfaces.TempModel_V2
|
|
158
|
+
)
|
|
159
|
+
radiationmodel = modeltools.SubmodelProperty(
|
|
160
|
+
radiationinterfaces.RadiationModel_V1, radiationinterfaces.RadiationModel_V2
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
tester = Tester()
|
|
165
|
+
cythonizer = Cythonizer()
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""
|
|
2
|
+
The |exch.DOCNAME.complete| base model provides features to implement helper models
|
|
3
|
+
that enable other models to exchange data more freely.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# import...
|
|
7
|
+
# ...from HydPy
|
|
8
|
+
from hydpy.exe.modelimports import *
|
|
9
|
+
|
|
10
|
+
# ...from exch
|
|
11
|
+
from hydpy.models.exch.exch_model import Model
|
|
12
|
+
|
|
13
|
+
tester = Tester()
|
|
14
|
+
cythonizer = Cythonizer()
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# pylint: disable=missing-module-docstring
|
|
2
|
+
|
|
3
|
+
# import...
|
|
4
|
+
# ...from site-packages
|
|
5
|
+
import numpy
|
|
6
|
+
|
|
7
|
+
# ...from HydPy
|
|
8
|
+
import hydpy
|
|
9
|
+
from hydpy.core import devicetools
|
|
10
|
+
from hydpy.core import exceptiontools
|
|
11
|
+
from hydpy.core import objecttools
|
|
12
|
+
from hydpy.core import parametertools
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class CrestHeight(parametertools.Parameter):
|
|
16
|
+
"""Crest height [m]."""
|
|
17
|
+
|
|
18
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class CrestWidth(parametertools.Parameter):
|
|
22
|
+
"""Crest width [m]."""
|
|
23
|
+
|
|
24
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class FlowCoefficient(parametertools.Parameter):
|
|
28
|
+
"""Flow coefficient [-]."""
|
|
29
|
+
|
|
30
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None)
|
|
31
|
+
INIT = 0.62
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class FlowExponent(parametertools.Parameter):
|
|
35
|
+
"""Flow exponent [-]."""
|
|
36
|
+
|
|
37
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None)
|
|
38
|
+
INIT = 1.5
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class AllowedExchange(parametertools.Parameter):
|
|
42
|
+
"""The highest water exchange allowed [m³/s]."""
|
|
43
|
+
|
|
44
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None)
|
|
45
|
+
INIT = 1.5
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class Delta(parametertools.MonthParameter):
|
|
49
|
+
"""Monthly varying difference for increasing or decreasing the input [e.g. m³/s]."""
|
|
50
|
+
|
|
51
|
+
TYPE, TIME, SPAN = float, None, (None, None)
|
|
52
|
+
INIT = 0.0
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class Minimum(parametertools.Parameter):
|
|
56
|
+
"""The allowed minimum value of the adjusted input [e.g. m³/s]."""
|
|
57
|
+
|
|
58
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (None, None)
|
|
59
|
+
INIT = 0.0
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class XPoints(parametertools.Parameter):
|
|
63
|
+
"""Supporting points for the independent input variable [e.g. m³/s].
|
|
64
|
+
|
|
65
|
+
There must be at least two supporting points, and they must be strictly monotonous.
|
|
66
|
+
If not, |XPoints| raises the following errors:
|
|
67
|
+
|
|
68
|
+
>>> from hydpy.models.exch_branch_hbv96 import *
|
|
69
|
+
>>> parameterstep()
|
|
70
|
+
>>> xpoints(1.0, 2.0)
|
|
71
|
+
>>> xpoints
|
|
72
|
+
xpoints(1.0, 2.0)
|
|
73
|
+
|
|
74
|
+
>>> xpoints(1.0)
|
|
75
|
+
Traceback (most recent call last):
|
|
76
|
+
...
|
|
77
|
+
ValueError: Branching via linear interpolation requires at least two supporting \
|
|
78
|
+
points, but parameter `xpoints` of element `?` received 1 value(s).
|
|
79
|
+
|
|
80
|
+
>>> xpoints(1.0, 2.0, 2.0, 3.0)
|
|
81
|
+
Traceback (most recent call last):
|
|
82
|
+
...
|
|
83
|
+
ValueError: The values of parameter `xpoints` of element `?` must be arranged \
|
|
84
|
+
strictly monotonously, which is not the case for the given values `1.0, 2.0, 2.0, and \
|
|
85
|
+
3.0`.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (None, None)
|
|
89
|
+
|
|
90
|
+
def __call__(self, *args, **kwargs) -> None:
|
|
91
|
+
self._set_shape(len(args))
|
|
92
|
+
if (shape := self._get_shape()[0]) < 2:
|
|
93
|
+
raise ValueError(
|
|
94
|
+
f"Branching via linear interpolation requires at least two supporting "
|
|
95
|
+
f"points, but parameter {objecttools.elementphrase(self)} received "
|
|
96
|
+
f"{shape} value(s)."
|
|
97
|
+
)
|
|
98
|
+
super().__call__(*args, **kwargs)
|
|
99
|
+
if min(numpy.diff(self._get_value())) <= 0.0:
|
|
100
|
+
raise ValueError(
|
|
101
|
+
f"The values of parameter {objecttools.elementphrase(self)} must be "
|
|
102
|
+
f"arranged strictly monotonously, which is not the case for the given "
|
|
103
|
+
f"values `{objecttools.enumeration(self._get_value())}`."
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class YPoints(parametertools.Parameter):
|
|
108
|
+
"""Supporting points for the dependent output variables [e.g. m³/s].
|
|
109
|
+
|
|
110
|
+
Preparing parameter |YPoints| requires consistency with parameter |XPoints| and the
|
|
111
|
+
currently available |Node| objects.
|
|
112
|
+
|
|
113
|
+
.. testsetup::
|
|
114
|
+
|
|
115
|
+
>>> from hydpy import reverse_model_wildcard_import
|
|
116
|
+
>>> reverse_model_wildcard_import()
|
|
117
|
+
|
|
118
|
+
>>> from hydpy.models.exch_branch_hbv96 import *
|
|
119
|
+
>>> parameterstep("1d")
|
|
120
|
+
>>> ypoints
|
|
121
|
+
ypoints(?)
|
|
122
|
+
|
|
123
|
+
You need to prepare parameter |XPoints| first:
|
|
124
|
+
|
|
125
|
+
>>> ypoints(1.0, 2.0)
|
|
126
|
+
Traceback (most recent call last):
|
|
127
|
+
...
|
|
128
|
+
RuntimeError: The shape of parameter `ypoints` of element `?` depends on the \
|
|
129
|
+
shape of parameter `xpoints`, which is not defined so far.
|
|
130
|
+
|
|
131
|
+
>>> xpoints(1.0, 2.0, 3.0)
|
|
132
|
+
|
|
133
|
+
Supply the names of the output |Node| objects as keyword arguments:
|
|
134
|
+
|
|
135
|
+
>>> ypoints(1.0, 2.0)
|
|
136
|
+
Traceback (most recent call last):
|
|
137
|
+
...
|
|
138
|
+
ValueError: For parameter `ypoints` of element `?`, no branches are defined. Do \
|
|
139
|
+
this via keyword arguments, as explained in the documentation.
|
|
140
|
+
|
|
141
|
+
The number of x and y supporting points must be identical for all branches.:
|
|
142
|
+
|
|
143
|
+
>>> ypoints(branch1=[1.0, 2.0],
|
|
144
|
+
... branch2=[2.0, 4.0])
|
|
145
|
+
Traceback (most recent call last):
|
|
146
|
+
...
|
|
147
|
+
ValueError: Each branch requires the same number of supporting points as given \
|
|
148
|
+
for parameter `xpoints`, which is 3, but for branch `branch1` of parameter `ypoints` \
|
|
149
|
+
of element `?`, 2 values are provided.
|
|
150
|
+
|
|
151
|
+
>>> xpoints(1.0, 2.0)
|
|
152
|
+
|
|
153
|
+
When working on an actual project (indicated by a predefined project name), each
|
|
154
|
+
branch name must correspond to a |Node| name:
|
|
155
|
+
|
|
156
|
+
>>> from hydpy import pub, Nodes
|
|
157
|
+
>>> pub.projectname = "test"
|
|
158
|
+
>>> nodes = Nodes("branch1")
|
|
159
|
+
>>> ypoints(branch1=[1.0, 2.0],
|
|
160
|
+
... branch2=[2.0, 4.0])
|
|
161
|
+
Traceback (most recent call last):
|
|
162
|
+
...
|
|
163
|
+
RuntimeError: Parameter `ypoints` of element `?` is supposed to branch to node \
|
|
164
|
+
`branch2`, but such a node is not available.
|
|
165
|
+
|
|
166
|
+
We use the following general exception message for some unexpected errors:
|
|
167
|
+
|
|
168
|
+
>>> nodes = Nodes("branch1", "branch2")
|
|
169
|
+
>>> ypoints(branch1=[1.0, 2.0],
|
|
170
|
+
... branch2="xy")
|
|
171
|
+
Traceback (most recent call last):
|
|
172
|
+
...
|
|
173
|
+
ValueError: While trying to set the values for branch `branch2` of parameter \
|
|
174
|
+
`ypoints` of element `?`, the following error occurred: could not convert string to \
|
|
175
|
+
float: 'xy'
|
|
176
|
+
|
|
177
|
+
Changing the number of branches during runtime might result in erroneous
|
|
178
|
+
connections to the |Node| objects:
|
|
179
|
+
|
|
180
|
+
>>> ypoints(branch1=[1.0, 2.0],
|
|
181
|
+
... branch2=[2.0, 4.0])
|
|
182
|
+
>>> ypoints
|
|
183
|
+
ypoints(branch1=[1.0, 2.0],
|
|
184
|
+
branch2=[2.0, 4.0])
|
|
185
|
+
>>> ypoints(branch1=[1.0, 2.0])
|
|
186
|
+
Traceback (most recent call last):
|
|
187
|
+
...
|
|
188
|
+
RuntimeError: The number of branches of the exch model should not be changed \
|
|
189
|
+
during run time. If you really need to do this, first initialise a new "branched" \
|
|
190
|
+
sequence and connect it to the respective outlet nodes properly.
|
|
191
|
+
"""
|
|
192
|
+
|
|
193
|
+
NDIM, TYPE, TIME, SPAN = 2, float, None, (None, None)
|
|
194
|
+
|
|
195
|
+
def __call__(self, *args, **kwargs) -> None:
|
|
196
|
+
try:
|
|
197
|
+
shape = (len(kwargs), self.subpars.xpoints.shape[0])
|
|
198
|
+
except exceptiontools.AttributeNotReady:
|
|
199
|
+
raise RuntimeError(
|
|
200
|
+
f"The shape of parameter {objecttools.elementphrase(self)} depends on "
|
|
201
|
+
f"the shape of parameter `xpoints`, which is not defined so far."
|
|
202
|
+
) from None
|
|
203
|
+
if shape[0] == 0:
|
|
204
|
+
raise ValueError(
|
|
205
|
+
f"For parameter {objecttools.elementphrase(self)}, no branches are "
|
|
206
|
+
f"defined. Do this via keyword arguments, as explained in the "
|
|
207
|
+
f"documentation."
|
|
208
|
+
)
|
|
209
|
+
branched = self.subpars.pars.model.sequences.outlets.branched
|
|
210
|
+
if (branched.shape[0] != 0) and (branched.shape[0] != shape[0]):
|
|
211
|
+
raise RuntimeError(
|
|
212
|
+
"The number of branches of the exch model should not be changed "
|
|
213
|
+
"during run time. If you really need to do this, first initialise a "
|
|
214
|
+
'new "branched" sequence and connect it to the respective outlet '
|
|
215
|
+
"nodes properly."
|
|
216
|
+
)
|
|
217
|
+
self.shape = shape
|
|
218
|
+
self.values = numpy.nan
|
|
219
|
+
for idx, (key, value) in enumerate(sorted(kwargs.items())):
|
|
220
|
+
if key not in devicetools.Node.query_all():
|
|
221
|
+
if exceptiontools.attrready(hydpy.pub, "projectname"):
|
|
222
|
+
raise RuntimeError(
|
|
223
|
+
f"Parameter {objecttools.elementphrase(self)} is supposed to "
|
|
224
|
+
f"branch to node `{key}`, but such a node is not available."
|
|
225
|
+
)
|
|
226
|
+
try:
|
|
227
|
+
self.values[idx] = value # type: ignore[index]
|
|
228
|
+
except BaseException:
|
|
229
|
+
if shape[1] != len(value):
|
|
230
|
+
raise ValueError(
|
|
231
|
+
f"Each branch requires the same number of supporting points "
|
|
232
|
+
f"as given for parameter `xpoints`, which is {shape[1]}, but "
|
|
233
|
+
f"for branch `{key}` of parameter "
|
|
234
|
+
f"{objecttools.elementphrase(self)}, {len(value)} values are "
|
|
235
|
+
f"provided."
|
|
236
|
+
) from None
|
|
237
|
+
objecttools.augment_excmessage(
|
|
238
|
+
f"While trying to set the values for branch `{key}` of parameter "
|
|
239
|
+
f"{objecttools.elementphrase(self)}"
|
|
240
|
+
)
|
|
241
|
+
if branched.shape == (0,):
|
|
242
|
+
branched.shape = shape[0]
|
|
243
|
+
self.subpars.pars.model.sequences.fluxes.outputs.shape = shape[0]
|
|
244
|
+
self.subpars.pars.model.nodenames.clear()
|
|
245
|
+
for idx, key in enumerate(sorted(kwargs.keys())):
|
|
246
|
+
setattr(self, key, self.values[idx]) # type: ignore[index]
|
|
247
|
+
self.subpars.pars.model.nodenames.append(key)
|
|
248
|
+
|
|
249
|
+
def __repr__(self) -> str:
|
|
250
|
+
try:
|
|
251
|
+
names = self.subpars.pars.model.nodenames
|
|
252
|
+
lines = []
|
|
253
|
+
for idx, (name, values) in enumerate(zip(names, self._get_value())):
|
|
254
|
+
line = f"{name}={objecttools.repr_list(values)},"
|
|
255
|
+
if not idx:
|
|
256
|
+
lines.append(f"ypoints({line}")
|
|
257
|
+
else:
|
|
258
|
+
lines.append(f" {line}")
|
|
259
|
+
lines[-1] = f"{lines[-1][:-1]})"
|
|
260
|
+
return "\n".join(lines)
|
|
261
|
+
except BaseException:
|
|
262
|
+
return "ypoints(?)"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# pylint: disable=missing-module-docstring
|
|
2
|
+
|
|
3
|
+
# import...
|
|
4
|
+
# ...from HydPy
|
|
5
|
+
from hydpy.core import parametertools
|
|
6
|
+
from hydpy.models.exch import exch_control
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class MOY(parametertools.MOYParameter):
|
|
10
|
+
"""References the "global" month of the year index array [-]."""
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class NmbBranches(parametertools.Parameter):
|
|
14
|
+
"""The number of branches [-]."""
|
|
15
|
+
|
|
16
|
+
NDIM, TYPE, TIME, SPAN = 0, int, None, (1, None)
|
|
17
|
+
|
|
18
|
+
CONTROLPARAMETERS = (exch_control.YPoints,)
|
|
19
|
+
|
|
20
|
+
def update(self):
|
|
21
|
+
"""Determine the number of branches."""
|
|
22
|
+
con = self.subpars.pars.control
|
|
23
|
+
self(con.ypoints.shape[0])
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class NmbPoints(parametertools.Parameter):
|
|
27
|
+
"""The number of supporting points for linear interpolation [-]."""
|
|
28
|
+
|
|
29
|
+
NDIM, TYPE, TIME, SPAN = 0, int, None, (2, None)
|
|
30
|
+
|
|
31
|
+
CONTROLPARAMETERS = (exch_control.YPoints,)
|
|
32
|
+
|
|
33
|
+
def update(self):
|
|
34
|
+
"""Determine the number of points."""
|
|
35
|
+
con = self.subpars.pars.control
|
|
36
|
+
self(con.ypoints.shape[1])
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# pylint: disable=missing-module-docstring
|
|
2
|
+
# import...
|
|
3
|
+
# ...from HydPy
|
|
4
|
+
from hydpy.core import sequencetools
|
|
5
|
+
from hydpy.core import variabletools
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WaterLevels(variabletools.MixinFixedShape, sequencetools.FactorSequence):
|
|
9
|
+
"""The water level at two locations [m].
|
|
10
|
+
|
|
11
|
+
After each simulation step, the value of |exch_factors.WaterLevels| corresponds to
|
|
12
|
+
the value of the |LoggedWaterLevels| of the previous simulation step.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
NDIM = 1
|
|
16
|
+
SHAPE = (2,)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class DeltaWaterLevel(sequencetools.FactorSequence):
|
|
20
|
+
"""Effective difference of the two water levels [m].
|
|
21
|
+
|
|
22
|
+
After each simulation step, the value of |DeltaWaterLevel| corresponds to the value
|
|
23
|
+
of the |LoggedWaterLevels| of the previous simulation step.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
NDIM = 0
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# pylint: disable=missing-module-docstring
|
|
2
|
+
|
|
3
|
+
# import...
|
|
4
|
+
# ...from HydPy
|
|
5
|
+
from hydpy.core import objecttools
|
|
6
|
+
from hydpy.core import sequencetools
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class PotentialExchange(sequencetools.FluxSequence):
|
|
10
|
+
"""The potential bidirectional water exchange [m³/s]."""
|
|
11
|
+
|
|
12
|
+
NDIM, NUMERIC = 0, False
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ActualExchange(sequencetools.FluxSequence):
|
|
16
|
+
"""The actual bidirectional water exchange [m³/s]."""
|
|
17
|
+
|
|
18
|
+
NDIM, NUMERIC = 0, False
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class OriginalInput(sequencetools.FluxSequence):
|
|
22
|
+
"""Unadjusted total input [e.g. m³/s]."""
|
|
23
|
+
|
|
24
|
+
NDIM, NUMERIC = 0, False
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class AdjustedInput(sequencetools.FluxSequence):
|
|
28
|
+
"""Adjusted total input [e.g. m³/s]."""
|
|
29
|
+
|
|
30
|
+
NDIM, NUMERIC = 0, False
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class Outputs(sequencetools.FluxSequence):
|
|
34
|
+
"""Branched outputs [e.g. m³/s]."""
|
|
35
|
+
|
|
36
|
+
NDIM, NUMERIC = 1, False
|
|
37
|
+
|
|
38
|
+
def __repr__(self) -> str:
|
|
39
|
+
names = self.subseqs.seqs.model.nodenames
|
|
40
|
+
lines = []
|
|
41
|
+
for idx, (name, values) in enumerate(zip(names, self.values)):
|
|
42
|
+
line = f"{name}={objecttools.repr_(values)},"
|
|
43
|
+
if not idx:
|
|
44
|
+
lines.append(f"outputs({line}")
|
|
45
|
+
else:
|
|
46
|
+
lines.append(f" {line}")
|
|
47
|
+
lines[-1] = f"{lines[-1][:-1]})"
|
|
48
|
+
return "\n".join(lines)
|