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,85 @@
|
|
|
1
|
+
# pylint: disable=unused-wildcard-import
|
|
2
|
+
"""
|
|
3
|
+
|dummy_soilwater| merely serves testing purposes. We use it, for example, to perform
|
|
4
|
+
the integration tests for submodels like |evap_aet_hbv96| without the need to couple
|
|
5
|
+
them to complex main models like |hland_96| for providing soil water data.
|
|
6
|
+
|
|
7
|
+
Integration test
|
|
8
|
+
================
|
|
9
|
+
|
|
10
|
+
The only functionality of |dummy_soilwater| is reading input time series. Hence,
|
|
11
|
+
configuring and testing it does not require additional explanations:
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
>>> from hydpy.models.dummy_soilwater import *
|
|
15
|
+
>>> parameterstep()
|
|
16
|
+
>>> from hydpy import Element
|
|
17
|
+
>>> element = Element("element")
|
|
18
|
+
>>> element.model = model
|
|
19
|
+
|
|
20
|
+
>>> from hydpy import IntegrationTest, pub, round_
|
|
21
|
+
>>> pub.timegrids = "2000-01-01", "2000-01-03", "1d"
|
|
22
|
+
>>> nmbzones(2)
|
|
23
|
+
|
|
24
|
+
>>> test = IntegrationTest(element)
|
|
25
|
+
>>> test.dateformat = "%Y-%d-%m"
|
|
26
|
+
|
|
27
|
+
>>> inputs.soilwater.series = [[1.0, 2.0], [3.0, 4.0]]
|
|
28
|
+
|
|
29
|
+
.. integration-test::
|
|
30
|
+
|
|
31
|
+
>>> test()
|
|
32
|
+
| date | soilwater |
|
|
33
|
+
-------------------------------
|
|
34
|
+
| 2000-01-01 | 1.0 2.0 |
|
|
35
|
+
| 2000-02-01 | 3.0 4.0 |
|
|
36
|
+
|
|
37
|
+
>>> round_(model.get_soilwater_v1(1))
|
|
38
|
+
4.0
|
|
39
|
+
"""
|
|
40
|
+
# import...
|
|
41
|
+
# ...from HydPy
|
|
42
|
+
from hydpy.core import importtools
|
|
43
|
+
from hydpy.core import modeltools
|
|
44
|
+
from hydpy.exe.modelimports import *
|
|
45
|
+
from hydpy.models.dummy import dummy_control
|
|
46
|
+
from hydpy.models.dummy import dummy_model
|
|
47
|
+
from hydpy.interfaces import stateinterfaces
|
|
48
|
+
|
|
49
|
+
ADDITIONAL_CONTROLPARAMETERS = (dummy_control.NmbZones,)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class Model(modeltools.AdHocModel, stateinterfaces.SoilWaterModel_V1):
|
|
53
|
+
"""|dummy_soilwater.DOCNAME.complete|."""
|
|
54
|
+
|
|
55
|
+
DOCNAME = modeltools.DocName(
|
|
56
|
+
short="Dummy-SoilWater",
|
|
57
|
+
description="dummy model supplying main models with soil water states",
|
|
58
|
+
)
|
|
59
|
+
__HYDPY_ROOTMODEL__ = False
|
|
60
|
+
|
|
61
|
+
INLET_METHODS = ()
|
|
62
|
+
RECEIVER_METHODS = ()
|
|
63
|
+
RUN_METHODS = ()
|
|
64
|
+
INTERFACE_METHODS = (dummy_model.Get_SoilWater_V1,)
|
|
65
|
+
ADD_METHODS = ()
|
|
66
|
+
OUTLET_METHODS = ()
|
|
67
|
+
SENDER_METHODS = ()
|
|
68
|
+
SUBMODELINTERFACES = ()
|
|
69
|
+
SUBMODELS = ()
|
|
70
|
+
|
|
71
|
+
@importtools.define_targetparameter(dummy_control.NmbZones)
|
|
72
|
+
def prepare_nmbzones(self, nmbzones: int) -> None:
|
|
73
|
+
"""Set the number of zones.
|
|
74
|
+
|
|
75
|
+
>>> from hydpy.models.dummy_soilwater import *
|
|
76
|
+
>>> parameterstep()
|
|
77
|
+
>>> model.prepare_nmbzones(2)
|
|
78
|
+
>>> nmbzones
|
|
79
|
+
nmbzones(2)
|
|
80
|
+
"""
|
|
81
|
+
self.parameters.control.nmbzones(nmbzones)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
tester = Tester()
|
|
85
|
+
cythonizer = Cythonizer()
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""
|
|
2
|
+
The |evap.DOCNAME.complete| model family supplies methods for calculating potential
|
|
3
|
+
evapotranspiration.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# import...
|
|
7
|
+
# ...from HydPy
|
|
8
|
+
from hydpy.exe.modelimports import *
|
|
9
|
+
from hydpy.models.evap.evap_masks import Masks
|
|
10
|
+
from hydpy.models.evap.evap_model import Model
|
|
11
|
+
|
|
12
|
+
tester = Tester()
|
|
13
|
+
cythonizer = Cythonizer()
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
# pylint: disable=missing-module-docstring
|
|
2
|
+
|
|
3
|
+
# import...
|
|
4
|
+
# ...from standard library
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
# ...from HydPy
|
|
8
|
+
from hydpy.core import exceptiontools
|
|
9
|
+
from hydpy.core import parametertools
|
|
10
|
+
from hydpy.core.typingtools import *
|
|
11
|
+
from hydpy.models.evap import evap_parameters
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class NmbHRU(parametertools.Parameter):
|
|
15
|
+
"""The number of separately modelled hydrological response units [-]."""
|
|
16
|
+
|
|
17
|
+
NDIM, TYPE, TIME, SPAN = 0, int, None, (0, None)
|
|
18
|
+
|
|
19
|
+
def __call__(self, *args, **kwargs) -> None:
|
|
20
|
+
nmbhru_old = exceptiontools.getattr_(self, "value", None)
|
|
21
|
+
super().__call__(*args, **kwargs)
|
|
22
|
+
nmbhru_new = self.value
|
|
23
|
+
if nmbhru_new != nmbhru_old:
|
|
24
|
+
for subpars in self.subpars.pars:
|
|
25
|
+
for par in subpars:
|
|
26
|
+
if (par.NDIM == 1) and not isinstance(
|
|
27
|
+
par, parametertools.KeywordParameter1D
|
|
28
|
+
):
|
|
29
|
+
par.shape = nmbhru_new
|
|
30
|
+
seqs = self.subpars.pars.model.sequences
|
|
31
|
+
for subseqs in seqs:
|
|
32
|
+
for seq in subseqs:
|
|
33
|
+
if seq.NDIM == 1:
|
|
34
|
+
seq.shape = nmbhru_new
|
|
35
|
+
seq_ = getattr(seqs.logs, "loggedpotentialevapotranspiration", None)
|
|
36
|
+
if seq_ is not None:
|
|
37
|
+
seq_.shape = self.value
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class HRUType(parametertools.NameParameter):
|
|
41
|
+
"""Hydrological response unit type [-]."""
|
|
42
|
+
|
|
43
|
+
NDIM, TYPE, TIME = 1, int, None
|
|
44
|
+
SPAN = (None, None)
|
|
45
|
+
constants = parametertools.Constants(ANY=0)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class Water(evap_parameters.ZipParameter1D):
|
|
49
|
+
"""A flag that indicates whether the individual zones are water areas or not."""
|
|
50
|
+
|
|
51
|
+
TYPE, TIME, SPAN = bool, None, (False, True)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class Interception(evap_parameters.ZipParameter1D):
|
|
55
|
+
"""A flag that indicates whether interception evaporation is relevant for the
|
|
56
|
+
individual zones."""
|
|
57
|
+
|
|
58
|
+
TYPE, TIME, SPAN = bool, None, (False, True)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class Soil(evap_parameters.ZipParameter1D):
|
|
62
|
+
"""A flag that indicates whether soil evapotranspiration is relevant for the
|
|
63
|
+
individual zones."""
|
|
64
|
+
|
|
65
|
+
TYPE, TIME, SPAN = bool, None, (False, True)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class Plant(evap_parameters.ZipParameter1D):
|
|
69
|
+
"""A flag that indicates whether the individual zones contain any vegetation."""
|
|
70
|
+
|
|
71
|
+
TYPE, TIME, SPAN = bool, None, (False, True)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class Tree(evap_parameters.ZipParameter1D):
|
|
75
|
+
"""A flag that indicates whether the individual zones contain tree-like
|
|
76
|
+
vegetation."""
|
|
77
|
+
|
|
78
|
+
TYPE, TIME, SPAN = bool, None, (False, True)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class Conifer(evap_parameters.ZipParameter1D):
|
|
82
|
+
"""A flag that indicates whether the individual zones contain conifer-like
|
|
83
|
+
vegetation."""
|
|
84
|
+
|
|
85
|
+
TYPE, TIME, SPAN = bool, None, (False, True)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class HRUArea(parametertools.Parameter):
|
|
89
|
+
"""The area of each hydrological response unit [km²]."""
|
|
90
|
+
|
|
91
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, None)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class HRUAltitude(evap_parameters.ZipParameter1D):
|
|
95
|
+
"""The altitude of each hydrological response unit [m]."""
|
|
96
|
+
|
|
97
|
+
TYPE, TIME, SPAN = float, None, (None, None)
|
|
98
|
+
INIT = 0.0
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class MeasuringHeightWindSpeed(parametertools.Parameter):
|
|
102
|
+
"""The height above ground of the wind speed measurements [m]."""
|
|
103
|
+
|
|
104
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0, None)
|
|
105
|
+
INIT = 10.0
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class AirTemperatureAddend(evap_parameters.ZipParameter1D):
|
|
109
|
+
"""Adjustment addend for air temperature [K]."""
|
|
110
|
+
|
|
111
|
+
TYPE, TIME, SPAN = float, None, (None, None)
|
|
112
|
+
INIT = 0.0
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class CoastFactor(evap_parameters.ZipParameter1D):
|
|
116
|
+
"""The "coast factor" of Turc-Wendling's reference evapotranspiration equation
|
|
117
|
+
[-]."""
|
|
118
|
+
|
|
119
|
+
TYPE, TIME, SPAN = float, None, (0.6, 1.0)
|
|
120
|
+
INIT = 1.0
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class Albedo(evap_parameters.LandMonthParameter):
|
|
124
|
+
"""Earth surface albedo [-]."""
|
|
125
|
+
|
|
126
|
+
TYPE, TIME, SPAN = float, None, (0.0, 1.0)
|
|
127
|
+
INIT = 0.5
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
class GroundAlbedo(evap_parameters.ZipParameter1D):
|
|
131
|
+
"""The albedo of the snow-free ground (including soils, sealed surfaces, and water
|
|
132
|
+
areas) [-]."""
|
|
133
|
+
|
|
134
|
+
TYPE, TIME, SPAN = float, None, (0.0, 1.0)
|
|
135
|
+
INIT = 0.2
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class GroundAlbedoSnow(evap_parameters.ZipParameter1D):
|
|
139
|
+
"""The albedo of the snow-covered ground (including soils and sealed surfaces)
|
|
140
|
+
[-]."""
|
|
141
|
+
|
|
142
|
+
TYPE, TIME, SPAN = float, None, (0.0, 1.0)
|
|
143
|
+
INIT = 0.8
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class LeafAlbedo(evap_parameters.PlantParameter1D):
|
|
147
|
+
"""The albedo of the snow-free leaves [-]."""
|
|
148
|
+
|
|
149
|
+
TYPE, TIME, SPAN = float, None, (0.0, 1.0)
|
|
150
|
+
INIT = 0.2
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class LeafAlbedoSnow(evap_parameters.PlantParameter1D):
|
|
154
|
+
"""The albedo of the snow-covered leaves [-]."""
|
|
155
|
+
|
|
156
|
+
TYPE, TIME, SPAN = float, None, (0.0, 1.0)
|
|
157
|
+
INIT = 0.8
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
class LeafAreaIndex(evap_parameters.LandMonthParameter):
|
|
161
|
+
"""Leaf area index [-]."""
|
|
162
|
+
|
|
163
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
164
|
+
INIT = 5.0
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
class CropHeight(evap_parameters.LandMonthParameter):
|
|
168
|
+
"""Crop height [m]."""
|
|
169
|
+
|
|
170
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
171
|
+
INIT = 1.0
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
class CloudTypeFactor(parametertools.Parameter):
|
|
175
|
+
"""Cloud type-specific factor for calculating atmospheric longwave counter radiation
|
|
176
|
+
[-]."""
|
|
177
|
+
|
|
178
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None)
|
|
179
|
+
INIT = 0.2
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class NightCloudFactor(parametertools.Parameter):
|
|
183
|
+
"""Factor for adjusting daytime estimates of the cloud coverage degree to nighttime
|
|
184
|
+
[-]."""
|
|
185
|
+
|
|
186
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None)
|
|
187
|
+
INIT = 1.0
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
class Emissivity(parametertools.Parameter):
|
|
191
|
+
"""The emissivity of the land surface [-]."""
|
|
192
|
+
|
|
193
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, 1.0)
|
|
194
|
+
INIT = 0.95
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class AverageSoilHeatFlux(parametertools.MonthParameter):
|
|
198
|
+
"""Monthly averages of the soil heat flux [W/m²]."""
|
|
199
|
+
|
|
200
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (None, None)
|
|
201
|
+
INIT = 0.0
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class SurfaceResistance(evap_parameters.LandMonthParameter):
|
|
205
|
+
"""Surface resistance of water areas, sealed areas, and vegetation with sufficient
|
|
206
|
+
water supply [s/m]."""
|
|
207
|
+
|
|
208
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
209
|
+
INIT = 100.0
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
class WetSoilResistance(evap_parameters.SoilParameter1D):
|
|
213
|
+
"""Surface resistance of wet soils [s/m]."""
|
|
214
|
+
|
|
215
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
216
|
+
INIT = 100.0
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class SoilResistanceIncrease(evap_parameters.SoilParameter1D):
|
|
220
|
+
"""Increase in soil surface resistance if evaporation dominates precipitation
|
|
221
|
+
[s/m/T]."""
|
|
222
|
+
|
|
223
|
+
TYPE, TIME, SPAN = float, True, (0.0, None)
|
|
224
|
+
INIT = 0.0
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
class WetnessThreshold(evap_parameters.SoilParameter1D):
|
|
228
|
+
"""The ratio between precipitation and potential evapotranspiration above which the
|
|
229
|
+
topmost soil layer becomes wet [-]."""
|
|
230
|
+
|
|
231
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
232
|
+
INIT = 1.0
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
class LeafResistance(evap_parameters.PlantParameter1D):
|
|
236
|
+
"""Surface resistance of plant leaves [s/m]."""
|
|
237
|
+
|
|
238
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
239
|
+
INIT = 100.0
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
class EvapotranspirationFactor(evap_parameters.ZipParameter1D):
|
|
243
|
+
"""The adjustment factor for potential evapotranspiration [-]."""
|
|
244
|
+
|
|
245
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
246
|
+
INIT = 1.0
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
class MonthFactor(parametertools.MonthParameter):
|
|
250
|
+
"""Factor for converting general potential evaporation or evapotranspiration
|
|
251
|
+
(usually grass reference evapotranspiration) to month-specific potential
|
|
252
|
+
evaporation or evapotranspiration [-]."""
|
|
253
|
+
|
|
254
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, None)
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
class LandMonthFactor(evap_parameters.LandMonthParameter):
|
|
258
|
+
"""Factor for converting general potential evaporation or evapotranspiration
|
|
259
|
+
(usually grass reference evapotranspiration) to land-use- and month-specific
|
|
260
|
+
potential evaporation or evapotranspiration [-]."""
|
|
261
|
+
|
|
262
|
+
NDIM, TYPE, TIME, SPAN = 2, float, None, (0.0, None)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
class AltitudeFactor(evap_parameters.ZipParameter1D):
|
|
266
|
+
"""Decrease of potential evapotranspiration with altitude [-1/100m].
|
|
267
|
+
|
|
268
|
+
In the terminology of HBV96: ECAlt."""
|
|
269
|
+
|
|
270
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (None, None)
|
|
271
|
+
INIT = 0.1
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
class PrecipitationFactor(evap_parameters.ZipParameter1D):
|
|
275
|
+
"""Decrease in potential evapotranspiration due to precipitation [T/mm].
|
|
276
|
+
|
|
277
|
+
In the terminology of HBV96: EPF.
|
|
278
|
+
"""
|
|
279
|
+
|
|
280
|
+
NDIM, TYPE, TIME, SPAN = 1, float, False, (0.0, None)
|
|
281
|
+
INIT = 0.0
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
class AirTemperatureFactor(evap_parameters.ZipParameter1D):
|
|
285
|
+
"""Temperature factor related to the difference of current reference
|
|
286
|
+
evapotranspiration and normal reference evapotranspiration [1/°C].
|
|
287
|
+
|
|
288
|
+
In the terminology of HBV96: ETF.
|
|
289
|
+
"""
|
|
290
|
+
|
|
291
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (None, None)
|
|
292
|
+
INIT = 0.1
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
class DampingFactor(evap_parameters.ZipParameter1D):
|
|
296
|
+
"""Damping factor (temporal weighting factor) for potential evapotranspiration
|
|
297
|
+
[-]."""
|
|
298
|
+
|
|
299
|
+
NDIM, TYPE, TIME, SPAN = 1, float, True, (0.0, 1.0)
|
|
300
|
+
INIT = 0.0
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
class TemperatureThresholdIce(evap_parameters.WaterParameter1D):
|
|
304
|
+
"""Temperature threshold for evaporation from water areas [°C].
|
|
305
|
+
|
|
306
|
+
In the terminology of HBV96: TTIce.
|
|
307
|
+
"""
|
|
308
|
+
|
|
309
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (None, None)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
class MaxSoilWater(evap_parameters.SoilParameter1D):
|
|
313
|
+
"""Maximum soil water content [mm].
|
|
314
|
+
|
|
315
|
+
In the terminology of HBV96: FC.
|
|
316
|
+
"""
|
|
317
|
+
|
|
318
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, None)
|
|
319
|
+
INIT = 200.0
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
class SoilMoistureLimit(evap_parameters.SoilParameter1D):
|
|
323
|
+
"""Relative soil moisture limit for potential evapotranspiration [-].
|
|
324
|
+
|
|
325
|
+
In the terminology of HBV96: `LP`. Typical value: 0.9.
|
|
326
|
+
|
|
327
|
+
In the terminology of MORECS: `PY`. Typical value: 0.6.
|
|
328
|
+
"""
|
|
329
|
+
|
|
330
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, 1.0)
|
|
331
|
+
INIT = 0.9
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
class ExcessReduction(evap_parameters.SoilParameter1D):
|
|
335
|
+
"""A factor for restricting actual to potential evapotranspiration [-].
|
|
336
|
+
|
|
337
|
+
In the terminology of HBV96: ERED.
|
|
338
|
+
"""
|
|
339
|
+
|
|
340
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, 1.0)
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
class DisseFactor(evap_parameters.SoilParameter1D):
|
|
344
|
+
"""Factor for calculating actual soil evapotranspiration based on potential
|
|
345
|
+
evapotranspiration estimates that follow the :cite:t:`ref-Disse1995` formulation of
|
|
346
|
+
the :cite:t:`ref-Minhas1974` equation.
|
|
347
|
+
|
|
348
|
+
In the terminology of :cite:t:`ref-Minhas1974` and :cite:t:`ref-Disse1995`: r.
|
|
349
|
+
|
|
350
|
+
In the terminology of LARSIM: GRASREF_R.
|
|
351
|
+
"""
|
|
352
|
+
|
|
353
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, None)
|
|
354
|
+
INIT = 5.0
|
|
@@ -0,0 +1,236 @@
|
|
|
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 exceptiontools
|
|
10
|
+
from hydpy.core import objecttools
|
|
11
|
+
from hydpy.core import parametertools
|
|
12
|
+
|
|
13
|
+
# ...from evap
|
|
14
|
+
from hydpy.models.evap import evap_parameters
|
|
15
|
+
from hydpy.models.evap import evap_control
|
|
16
|
+
from hydpy.models.evap import evap_fixed
|
|
17
|
+
from hydpy.models.evap import evap_logs
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class MOY(parametertools.MOYParameter):
|
|
21
|
+
"""References the "global" month of the year index array [-]."""
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class HRUAreaFraction(parametertools.Parameter):
|
|
25
|
+
"""The area fraction of each hydrological response unit [-]."""
|
|
26
|
+
|
|
27
|
+
NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, 1.0)
|
|
28
|
+
|
|
29
|
+
CONTROLPARAMETERS = (evap_control.HRUArea,)
|
|
30
|
+
|
|
31
|
+
def update(self) -> None:
|
|
32
|
+
r"""Calculate the fractions based on
|
|
33
|
+
:math:`HRUAreaFraction_i = HRUArea_i / \Sigma HRUArea`.
|
|
34
|
+
|
|
35
|
+
>>> from hydpy.models.evap import *
|
|
36
|
+
>>> parameterstep()
|
|
37
|
+
>>> nmbhru(5)
|
|
38
|
+
>>> hruarea(10.0, 40.0, 20.0, 25.0, 5.0)
|
|
39
|
+
>>> derived.hruareafraction.update()
|
|
40
|
+
>>> derived.hruareafraction
|
|
41
|
+
hruareafraction(0.1, 0.4, 0.2, 0.25, 0.05)
|
|
42
|
+
"""
|
|
43
|
+
hruarea = self.subpars.pars.control.hruarea.values
|
|
44
|
+
self.values = hruarea / numpy.sum(hruarea)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class Altitude(parametertools.Parameter):
|
|
48
|
+
"""Average (reference) subbasin altitude [100m]."""
|
|
49
|
+
|
|
50
|
+
NDIM, TYPE, TIME, SPAN = 0, float, None, (None, None)
|
|
51
|
+
|
|
52
|
+
CONTROLPARAMETERS = (evap_control.HRUArea, evap_control.HRUAltitude)
|
|
53
|
+
|
|
54
|
+
def update(self) -> None:
|
|
55
|
+
"""Average the individual hydrological response units' altitudes.
|
|
56
|
+
|
|
57
|
+
>>> from hydpy.models.evap import *
|
|
58
|
+
>>> parameterstep()
|
|
59
|
+
>>> nmbhru(3)
|
|
60
|
+
>>> hruarea(5.0, 3.0, 2.0)
|
|
61
|
+
>>> hrualtitude(1.0, 3.0, 8.0)
|
|
62
|
+
>>> derived.altitude.update()
|
|
63
|
+
>>> derived.altitude
|
|
64
|
+
altitude(3.0)
|
|
65
|
+
"""
|
|
66
|
+
control = self.subpars.pars.control
|
|
67
|
+
self.value = numpy.dot(
|
|
68
|
+
control.hruarea.values, control.hrualtitude.values
|
|
69
|
+
) / numpy.sum(control.hruarea.values)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class Seconds(parametertools.SecondsParameter):
|
|
73
|
+
"""The length of the actual simulation step size in seconds [h]."""
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class Hours(parametertools.HoursParameter):
|
|
77
|
+
"""The length of the actual simulation step size in hours [h]."""
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class Days(parametertools.DaysParameter):
|
|
81
|
+
"""The length of the actual simulation step size in days [d]."""
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class NmbLogEntries(parametertools.Parameter):
|
|
85
|
+
"""The number of log entries required for a memory duration of 24 hours [-]."""
|
|
86
|
+
|
|
87
|
+
NDIM, TYPE, TIME, SPAN = 0, int, None, (1, None)
|
|
88
|
+
|
|
89
|
+
def update(self):
|
|
90
|
+
"""Calculate the number of entries and adjust the shape of all relevant log
|
|
91
|
+
sequences.
|
|
92
|
+
|
|
93
|
+
The aimed memory duration is one day. Hence, the number of required log
|
|
94
|
+
entries depends on the simulation step size:
|
|
95
|
+
|
|
96
|
+
>>> from hydpy.models.evap import *
|
|
97
|
+
>>> parameterstep()
|
|
98
|
+
>>> from hydpy import pub
|
|
99
|
+
>>> pub.timegrids = "2000-01-01", "2000-01-02", "8h"
|
|
100
|
+
>>> nmbhru(2)
|
|
101
|
+
>>> derived.nmblogentries.update()
|
|
102
|
+
>>> derived.nmblogentries
|
|
103
|
+
nmblogentries(3)
|
|
104
|
+
>>> logs.loggedglobalradiation
|
|
105
|
+
loggedglobalradiation(nan, nan, nan)
|
|
106
|
+
|
|
107
|
+
For 1-dimensional logged properties, there is a second axis whose size depends
|
|
108
|
+
on the selected number of hydrological response units:
|
|
109
|
+
|
|
110
|
+
>>> logs.loggedairtemperature
|
|
111
|
+
loggedairtemperature([[nan, nan],
|
|
112
|
+
[nan, nan],
|
|
113
|
+
[nan, nan]])
|
|
114
|
+
|
|
115
|
+
>>> logs.loggedpotentialevapotranspiration
|
|
116
|
+
loggedpotentialevapotranspiration(nan, nan, nan)
|
|
117
|
+
|
|
118
|
+
To prevent losing information, updating parameter |NmbLogEntries| resets the
|
|
119
|
+
shape of the relevant log sequences only when necessary:
|
|
120
|
+
|
|
121
|
+
>>> logs.loggedglobalradiation = 1.0
|
|
122
|
+
>>> logs.loggedairtemperature = 2.0
|
|
123
|
+
>>> logs.loggedpotentialevapotranspiration = 3.0
|
|
124
|
+
>>> derived.nmblogentries.update()
|
|
125
|
+
>>> logs.loggedglobalradiation
|
|
126
|
+
loggedglobalradiation(1.0, 1.0, 1.0)
|
|
127
|
+
>>> logs.loggedairtemperature
|
|
128
|
+
loggedairtemperature([[2.0, 2.0],
|
|
129
|
+
[2.0, 2.0],
|
|
130
|
+
[2.0, 2.0]])
|
|
131
|
+
>>> logs.loggedpotentialevapotranspiration
|
|
132
|
+
loggedpotentialevapotranspiration(3.0, 3.0, 3.0)
|
|
133
|
+
|
|
134
|
+
There is an explicit check for inappropriate simulation step sizes:
|
|
135
|
+
|
|
136
|
+
>>> pub.timegrids = "2000-01-01 00:00", "2000-01-01 10:00", "5h"
|
|
137
|
+
>>> derived.nmblogentries.update()
|
|
138
|
+
Traceback (most recent call last):
|
|
139
|
+
...
|
|
140
|
+
ValueError: The value of parameter `nmblogentries` of element `?` cannot be \
|
|
141
|
+
determined for a the current simulation step size. The fraction of the memory period \
|
|
142
|
+
(1d) and the simulation step size (5h) leaves a remainder.
|
|
143
|
+
"""
|
|
144
|
+
nmb = "1d" / hydpy.pub.timegrids.stepsize
|
|
145
|
+
if nmb % 1:
|
|
146
|
+
raise ValueError(
|
|
147
|
+
f"The value of parameter {objecttools.elementphrase(self)} cannot be "
|
|
148
|
+
f"determined for a the current simulation step size. The fraction of "
|
|
149
|
+
f"the memory period (1d) and the simulation step size "
|
|
150
|
+
f"({hydpy.pub.timegrids.stepsize}) leaves a remainder."
|
|
151
|
+
)
|
|
152
|
+
self(nmb)
|
|
153
|
+
pars = self.subpars.pars
|
|
154
|
+
for seq in pars.model.sequences.logs:
|
|
155
|
+
if isinstance(seq, evap_logs.LoggedPotentialEvapotranspiration):
|
|
156
|
+
new_shape = self.value
|
|
157
|
+
old_shape = exceptiontools.getattr_(seq, "shape", (None, None))[1]
|
|
158
|
+
else:
|
|
159
|
+
if seq.NDIM == 1:
|
|
160
|
+
new_shape = (self.value,)
|
|
161
|
+
elif seq.NDIM == 2:
|
|
162
|
+
new_shape = self.value, pars.control.nmbhru.value
|
|
163
|
+
else:
|
|
164
|
+
assert False
|
|
165
|
+
old_shape = exceptiontools.getattr_(seq, "shape", (None,))
|
|
166
|
+
if new_shape != old_shape:
|
|
167
|
+
seq.shape = new_shape
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class RoughnessLength(
|
|
171
|
+
evap_parameters.LandMonthParameter
|
|
172
|
+
): # ToDo: not directy required, remove?
|
|
173
|
+
"""Roughness length [m]."""
|
|
174
|
+
|
|
175
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
176
|
+
|
|
177
|
+
CONTROLPARAMETERS = (evap_control.CropHeight,)
|
|
178
|
+
|
|
179
|
+
def update(self):
|
|
180
|
+
r"""Calculate the roughness length based on
|
|
181
|
+
:math:`max(0.13 \cdot CropHeight, \ 0.00013)`.
|
|
182
|
+
|
|
183
|
+
The original equation seems to go back to Montheith. We added the minimum
|
|
184
|
+
value of 0.13 mm to cope with water areas and bare soils (to avoid zero
|
|
185
|
+
roughness lengths):
|
|
186
|
+
|
|
187
|
+
ToDo: Add a reference.
|
|
188
|
+
|
|
189
|
+
>>> from hydpy.models.evap import *
|
|
190
|
+
>>> parameterstep()
|
|
191
|
+
>>> nmbhru(3)
|
|
192
|
+
>>> cropheight(
|
|
193
|
+
... ANY=[0.0, 0.001, 0.01, 0.1, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0, 15.0, 20.0])
|
|
194
|
+
>>> derived.roughnesslength.update()
|
|
195
|
+
>>> derived.roughnesslength
|
|
196
|
+
roughnesslength(ANY=[0.00013, 0.00013, 0.0013, 0.013, 0.13, 0.26, 0.39,
|
|
197
|
+
0.52, 0.65, 1.3, 1.95, 2.6])
|
|
198
|
+
"""
|
|
199
|
+
cropheight = self.subpars.pars.control.cropheight.values
|
|
200
|
+
self.values = numpy.clip(0.13 * cropheight, 0.00013, None)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
class AerodynamicResistanceFactor(evap_parameters.LandMonthParameter):
|
|
204
|
+
"""Factor for calculating aerodynamic resistance [-]."""
|
|
205
|
+
|
|
206
|
+
TYPE, TIME, SPAN = float, None, (0.0, None)
|
|
207
|
+
|
|
208
|
+
CONTROLPARAMETERS = (evap_control.CropHeight,)
|
|
209
|
+
DERIVEDPARAMETERS = (RoughnessLength,)
|
|
210
|
+
FIXEDPARAMETERS = (evap_fixed.AerodynamicResistanceFactorMinimum,)
|
|
211
|
+
|
|
212
|
+
def update(self):
|
|
213
|
+
r"""Calculate the factor for calculating aerodynamic resistance based on the
|
|
214
|
+
:math:`max \big( ln(2 / z_0) \cdot ln(10 / z_0) / 0.41^2, \ \tau \big)` with
|
|
215
|
+
:math:`z_0` being the |RoughnessLength| :cite:p:`ref-Löpmeier2014` and
|
|
216
|
+
:math:`\tau` the "alternative value" suggested by :cite:t:`ref-Thompson1981`
|
|
217
|
+
and also used by :cite:t:`ref-LARSIM`.
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
>>> from hydpy.models.evap import *
|
|
221
|
+
>>> parameterstep()
|
|
222
|
+
>>> derived.roughnesslength(
|
|
223
|
+
... ANY=[0.00013, 0.00013, 0.0013, 0.013, 0.13, 0.26, 0.39, 0.52, 0.65,
|
|
224
|
+
... 1.3, 1.95, 2.6])
|
|
225
|
+
>>> derived.aerodynamicresistancefactor.update()
|
|
226
|
+
>>> derived.aerodynamicresistancefactor
|
|
227
|
+
aerodynamicresistancefactor(ANY=[752.975177, 752.975177, 476.301466,
|
|
228
|
+
262.708041, 112.194903, 94.0, 94.0, 94.0,
|
|
229
|
+
94.0, 94.0, 94.0, 94.0])
|
|
230
|
+
"""
|
|
231
|
+
pars = self.subpars.pars
|
|
232
|
+
z0 = pars.derived.roughnesslength.values
|
|
233
|
+
min_ = pars.fixed.aerodynamicresistancefactorminimum.value
|
|
234
|
+
self.values = numpy.clip(
|
|
235
|
+
numpy.log(10.0 / z0) * numpy.log(10.0 / z0) / 0.41**2, min_, None
|
|
236
|
+
)
|