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
hydpy/auxs/quadtools.py
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""This module specialises class |Submodel| for quadrature problems.
|
|
2
|
+
|
|
3
|
+
Module |quadtools| provides Python interfaces only. See the Cython extension module
|
|
4
|
+
`quadutils` for the actual implementations of the mathematical algorithms.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# import...
|
|
8
|
+
|
|
9
|
+
# ...from HydPy
|
|
10
|
+
from hydpy.core import modeltools
|
|
11
|
+
from hydpy.core.typingtools import *
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from hydpy.cythons import quadutils
|
|
15
|
+
else:
|
|
16
|
+
from hydpy.cythons.autogen import quadutils
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Quad(modeltools.Submodel):
|
|
20
|
+
"""Numerical solver for quadrature problems based on the Gauss-Lobatto
|
|
21
|
+
quadrature."""
|
|
22
|
+
|
|
23
|
+
CYTHONBASECLASS = quadutils.QuadBase
|
|
24
|
+
PYTHONCLASS = quadutils.QuadPython
|
|
25
|
+
_cysubmodel: quadutils.QuadBase
|
|
26
|
+
|
|
27
|
+
# positional arguments required for consistency with the cythonized extension class:
|
|
28
|
+
def integrate( # pylint: disable=too-many-positional-arguments
|
|
29
|
+
self, x0: float, x1: float, nmin: int, nmax: int, tol: float, /
|
|
30
|
+
) -> float:
|
|
31
|
+
"""Repeatedly integrate the target function within the interval
|
|
32
|
+
:math:`x0 \\leq x \\leq x1` until the estimated accuracy is smaller than
|
|
33
|
+
`tol` using at least `xmin` and at most `xmax` number of nodes.
|
|
34
|
+
|
|
35
|
+
The algorithm underlying |Quad| works acceptable, but should be improvable
|
|
36
|
+
both regarding accuracy and efficiency. We postpone this and provide
|
|
37
|
+
example calculations afterwards. Please see the documentation on method
|
|
38
|
+
|wland_model.Calc_DVEq_V1| to see |Quad| in action until then.
|
|
39
|
+
"""
|
|
40
|
+
return self._cysubmodel.integrate(x0, x1, nmin, nmax, tol)
|
|
41
|
+
|
|
42
|
+
def apply_method0(self, value: float, /) -> float:
|
|
43
|
+
"""Apply the model method to be integrated.
|
|
44
|
+
|
|
45
|
+
For example, submodel |wland_model.QuadDVEq_V1| integrates method
|
|
46
|
+
|wland_model.Return_DVH_V1|:
|
|
47
|
+
|
|
48
|
+
>>> from hydpy.models.wland import *
|
|
49
|
+
>>> parameterstep()
|
|
50
|
+
>>> thetas(0.4)
|
|
51
|
+
>>> psiae(300.0)
|
|
52
|
+
>>> b(5.0)
|
|
53
|
+
>>> sh(0.0)
|
|
54
|
+
>>> derived.rh1.update()
|
|
55
|
+
>>> from hydpy import round_
|
|
56
|
+
>>> round_(model.return_dvh_v1(600.0))
|
|
57
|
+
0.05178
|
|
58
|
+
>>> round_(model.quaddveq_v1.apply_method0(600.0))
|
|
59
|
+
0.05178
|
|
60
|
+
"""
|
|
61
|
+
return self._cysubmodel.apply_method0(value)
|
hydpy/auxs/roottools.py
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"""This module specialises class |Submodel| for root-finding problems.
|
|
2
|
+
|
|
3
|
+
Module |roottools| provides Python interfaces only. See the
|
|
4
|
+
Cython extension module `rootutils` for the actual implementations
|
|
5
|
+
of the mathematical algorithms.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
# import...
|
|
9
|
+
|
|
10
|
+
# ...from HydPy
|
|
11
|
+
from hydpy.core import modeltools
|
|
12
|
+
from hydpy.core.typingtools import *
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from hydpy.cythons import rootutils
|
|
16
|
+
else:
|
|
17
|
+
from hydpy.cythons.autogen import rootutils
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Pegasus(modeltools.Submodel):
|
|
21
|
+
"""Root-finder based on the `Pegasus method`_.
|
|
22
|
+
|
|
23
|
+
.. _`Pegasus method`: https://link.springer.com/article/10.1007/BF01932959
|
|
24
|
+
|
|
25
|
+
The Pegasus method is a root-finding algorithm which sequentially
|
|
26
|
+
decreases its search radius (like the simple bisection algorithm)
|
|
27
|
+
and shows superlinear convergence properties (like the Newton-Raphson
|
|
28
|
+
algorithm). Our implementation adds a simple "interval widening"
|
|
29
|
+
strategy that comes into play when the given initial interval does not
|
|
30
|
+
contain the root. This widening should be left for emergencies as
|
|
31
|
+
it might be not always efficient. So please try to provide to
|
|
32
|
+
initial interval estimates that rather overestimate than underestimate
|
|
33
|
+
the interval width. Additionally, make sure you apply |Pegasus| on
|
|
34
|
+
monotone functions only.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
CYTHONBASECLASS = rootutils.PegasusBase
|
|
38
|
+
PYTHONCLASS = rootutils.PegasusPython
|
|
39
|
+
_cysubmodel: rootutils.PegasusBase
|
|
40
|
+
|
|
41
|
+
# positional arguments required for consistency with the cythonized extension class:
|
|
42
|
+
def find_x( # pylint: disable=too-many-positional-arguments
|
|
43
|
+
self,
|
|
44
|
+
x0: float,
|
|
45
|
+
x1: float,
|
|
46
|
+
xmin: float,
|
|
47
|
+
xmax: float,
|
|
48
|
+
xtol: float,
|
|
49
|
+
ytol: float,
|
|
50
|
+
itermax: int,
|
|
51
|
+
/,
|
|
52
|
+
) -> float:
|
|
53
|
+
"""Find the relevant root within the interval
|
|
54
|
+
:math:`x0 \\leq x \\leq x1` with an accuracy meeting at least
|
|
55
|
+
one of the absolute tolerance values `xtol` and `ytol` (or the
|
|
56
|
+
accuracy achieved by performing the maximum number of iteration
|
|
57
|
+
steps, defined by argument `itermax`).
|
|
58
|
+
|
|
59
|
+
The arguments `xmin` and `xmax` define the smallest and largest
|
|
60
|
+
allowed `x` value, respectively. Method |Pegasus.find_x| never
|
|
61
|
+
evaluates the underlying function for any `x` value outside these
|
|
62
|
+
bounds, even if its "interval widening" strategy suggests so.
|
|
63
|
+
Instead, it returns the relevant `xmin` or `xmax` value.
|
|
64
|
+
|
|
65
|
+
In the following, we explain the details of our Pegasus implementation
|
|
66
|
+
by using method |lland_model.Return_TempSSurface_V1|.
|
|
67
|
+
|
|
68
|
+
Method |lland_model.Return_TempSSurface_V1| (used by application model
|
|
69
|
+
|lland_knauf|) implements the Pegasus iteration to determine the surface
|
|
70
|
+
temperature of the snow layer with the help of the Pegasus subclass
|
|
71
|
+
|lland_model.PegasusTempSSurface|. For the correct surface
|
|
72
|
+
temperature, the net energy gain of the surface (defined by method
|
|
73
|
+
|lland_model.Return_EnergyGainSnowSurface_V1|) must be zero.
|
|
74
|
+
Iteration is necessary, as some terms of the net energy gain (for
|
|
75
|
+
example, the emitted longwave radiation) depend on the surface
|
|
76
|
+
temperature in a non-linear manner.
|
|
77
|
+
|
|
78
|
+
As a starting point, we use the setting provided by the documentation
|
|
79
|
+
on method |lland_model.Return_TempSSurface_V1| but work in pure Python
|
|
80
|
+
mode for flexibility (more specifically, to have direct access to
|
|
81
|
+
method `find_x`) and focus on a single hydrological response unit
|
|
82
|
+
for simplicity:
|
|
83
|
+
|
|
84
|
+
>>> from hydpy import pub
|
|
85
|
+
>>> with pub.options.usecython(False):
|
|
86
|
+
... from hydpy.models.lland import *
|
|
87
|
+
... simulationstep("1d")
|
|
88
|
+
... parameterstep("1d")
|
|
89
|
+
>>> nhru(1)
|
|
90
|
+
>>> lnk(ACKER)
|
|
91
|
+
>>> turb0(2.0)
|
|
92
|
+
>>> turb1(2.0)
|
|
93
|
+
>>> ktschnee(5.0)
|
|
94
|
+
>>> inputs.relativehumidity = 60.0
|
|
95
|
+
>>> states.waes.values = 1.0
|
|
96
|
+
>>> fluxes.tkor = -3.0
|
|
97
|
+
>>> fluxes.reducedwindspeed2m = 3.0
|
|
98
|
+
>>> fluxes.actualvapourpressure = 2.9
|
|
99
|
+
>>> fluxes.netshortwaveradiationsnow = 10.0
|
|
100
|
+
>>> aides.temps = -2.0
|
|
101
|
+
>>> aides.rlatm = 200.0
|
|
102
|
+
|
|
103
|
+
Method |lland_model.Return_TempSSurface_V1| finds the following
|
|
104
|
+
surface temperature value:
|
|
105
|
+
|
|
106
|
+
>>> model.idx_hru = 0
|
|
107
|
+
>>> from hydpy import round_
|
|
108
|
+
>>> round_(model.return_tempssurface_v1(0))
|
|
109
|
+
-8.307868
|
|
110
|
+
|
|
111
|
+
We confirm that the net energy gain corresponding to this surface
|
|
112
|
+
temperature is approximately zero to validate this result:
|
|
113
|
+
|
|
114
|
+
>>> round_(model.return_energygainsnowsurface_v1(-8.3078682))
|
|
115
|
+
0.0
|
|
116
|
+
|
|
117
|
+
Method `apply_method0` always calls the appropriate target
|
|
118
|
+
method, which is, for |lland_model.PegasusTempSSurface|,
|
|
119
|
+
method |lland_model.Return_EnergyGainSnowSurface_V1|:
|
|
120
|
+
|
|
121
|
+
>>> round_(model.pegasustempssurface.apply_method0(-8.3078682))
|
|
122
|
+
0.0
|
|
123
|
+
|
|
124
|
+
To check for some exceptional cases, we call the `find_x` method of
|
|
125
|
+
class |lland_model.PegasusTempSSurface| directly. First, we pass
|
|
126
|
+
the same arguments as in method |lland_model.Return_TempSSurface_V1|
|
|
127
|
+
and thus get the same result:
|
|
128
|
+
|
|
129
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
130
|
+
... -50.0, 5.0, -100.0, 100.0, 0.0, 1e-8, 10))
|
|
131
|
+
-8.307868
|
|
132
|
+
|
|
133
|
+
Through decreasing the maximum number of iterations, the result
|
|
134
|
+
becomes less accurate:
|
|
135
|
+
|
|
136
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
137
|
+
... -50.0, 5.0, -100.0, 100.0, 0.0, 1e-8, 3))
|
|
138
|
+
-8.312628
|
|
139
|
+
>>> round_(model.return_energygainsnowsurface_v1(-8.312628))
|
|
140
|
+
0.09905
|
|
141
|
+
|
|
142
|
+
Use the `ytol` argument to control the achieved accuracy more
|
|
143
|
+
explicitly:
|
|
144
|
+
|
|
145
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
146
|
+
... -50.0, 5.0, -100.0, 100.0, 0.0, 0.1, 10))
|
|
147
|
+
-8.312628
|
|
148
|
+
>>> round_(model.return_energygainsnowsurface_v1(-8.312628))
|
|
149
|
+
0.09905
|
|
150
|
+
|
|
151
|
+
Pass an `xtol` value larger than zero to stop iteration as soon as
|
|
152
|
+
the search interval is small enough:
|
|
153
|
+
|
|
154
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
155
|
+
... -50.0, 5.0, -100.0, 100.0, 0.1, 1e-8, 10))
|
|
156
|
+
-8.30786
|
|
157
|
+
>>> round_(model.return_energygainsnowsurface_v1(-8.30786))
|
|
158
|
+
-0.000171
|
|
159
|
+
|
|
160
|
+
`x0` does not need to be smaller than `x1`, and `xmin` does not need to be
|
|
161
|
+
smaller than `xmax` by necessity (the algorithm swaps values when necessary):
|
|
162
|
+
|
|
163
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
164
|
+
... 50.0, -50.0, 100.0, -100.0, 0.0, 1e-8, 10))
|
|
165
|
+
-8.307868
|
|
166
|
+
|
|
167
|
+
An ill-defined initial interval might decrease efficiency but
|
|
168
|
+
should usually not affect the result:
|
|
169
|
+
|
|
170
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
171
|
+
... 0.0, 5.0, -100.0, 100.0, 0.0, 1e-8, 10))
|
|
172
|
+
-8.307868
|
|
173
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
174
|
+
... -50.0, -20.0, -100.0, 100.0, 0.0, 1e-8, 10))
|
|
175
|
+
-8.307868
|
|
176
|
+
|
|
177
|
+
Defining proper values for arguments `xmin` and `xmax` provides a way to
|
|
178
|
+
prevent possible program crashes. As an example, we do not care about
|
|
179
|
+
physics and set the snow layer's temperature to -300 °C. Theoretically,
|
|
180
|
+
the surface temperature must also be (unrealistically) low to prevent a
|
|
181
|
+
considerable energy gain of the surface due to an extreme temperature
|
|
182
|
+
gradient within the snow layer. However, -100 °C is the lowest value allowed,
|
|
183
|
+
so method |lland_model.PegasusTempSSurface| returns this boundary-value.
|
|
184
|
+
It is up to the model developer to handle such misleading responses
|
|
185
|
+
(if possible):
|
|
186
|
+
|
|
187
|
+
>>> aides.temps = -400
|
|
188
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
189
|
+
... -50.0, 5.0, -100.0, 100.0, 0.0, 1e-8, 10))
|
|
190
|
+
-100.0
|
|
191
|
+
>>> round_(model.return_energygainsnowsurface_v1(-100.0))
|
|
192
|
+
-524.133374
|
|
193
|
+
|
|
194
|
+
To demonstrate the upper boundary's functionality, we set the snow layer
|
|
195
|
+
temperature to 4'000 °C (also not the most plausible value, of course):
|
|
196
|
+
|
|
197
|
+
>>> aides.temps = 4000.0
|
|
198
|
+
>>> round_(model.pegasustempssurface.find_x(
|
|
199
|
+
... -50.0, 5.0, -100.0, 100.0, 0.0, 1e-8, 10))
|
|
200
|
+
100.0
|
|
201
|
+
>>> round_(model.return_energygainsnowsurface_v1(100.0))
|
|
202
|
+
3561.059134
|
|
203
|
+
|
|
204
|
+
Finally, we evaluate some additional snow layer temperatures
|
|
205
|
+
to show that everything works consistently:
|
|
206
|
+
|
|
207
|
+
>>> from hydpy import print_vector
|
|
208
|
+
>>> for temps in [-500, -400, -300, -4, -2, 2, 2000, 3000, 4000]:
|
|
209
|
+
... aides.temps = temps
|
|
210
|
+
... tempssurface = model.pegasustempssurface.find_x(
|
|
211
|
+
... -50.0, 5.0, -100.0, 100.0, 0.0, 1e-8, 10)
|
|
212
|
+
... energygain = model.return_energygainsnowsurface_v1(tempssurface)
|
|
213
|
+
... print_vector([temps, tempssurface, energygain])
|
|
214
|
+
-500, -100.0, -1024.133374
|
|
215
|
+
-400, -100.0, -524.133374
|
|
216
|
+
-300, -100.0, -24.133374
|
|
217
|
+
-4, -8.790047, 0.0
|
|
218
|
+
-2, -8.307868, 0.0
|
|
219
|
+
2, -7.353441, 0.0
|
|
220
|
+
2000, 85.175508, 0.0
|
|
221
|
+
3000, 97.204856, 0.0
|
|
222
|
+
4000, 100.0, 3561.059134
|
|
223
|
+
"""
|
|
224
|
+
return self._cysubmodel.find_x(x0, x1, xmin, xmax, xtol, ytol, itermax)
|
|
225
|
+
|
|
226
|
+
def apply_method0(self, value: float) -> float:
|
|
227
|
+
"""Apply the model method relevant for root-finding."""
|
|
228
|
+
return self._cysubmodel.apply_method0(value)
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"""This module implements features which help to regularize discontinuous
|
|
2
|
+
process equations.
|
|
3
|
+
|
|
4
|
+
.. _Tyralla (2016): http://www.hydrology.ruhr-uni-bochum.de/hydrolgy/mam/\
|
|
5
|
+
download/schriftenreihe_29.pdf
|
|
6
|
+
|
|
7
|
+
Many hydrological models rely heavily on discontinuous equations describing
|
|
8
|
+
hydrological processes. The related "if-else" blocks are often not
|
|
9
|
+
theoretically motivated. Instead, they are thought to ease implementing
|
|
10
|
+
ad hoc solutions of different (parts of) process equations without taking
|
|
11
|
+
care of the entire set of process equations.
|
|
12
|
+
|
|
13
|
+
There are some reasons to ground new model concepts on mainly continuous
|
|
14
|
+
process descriptions. See e. g. `Tyralla (2016)`_ for more a more exhaustive
|
|
15
|
+
discussion of this topic. Nevertheless, one might often want -- at least as
|
|
16
|
+
a starting point -- to pick single discontinuous but well-established
|
|
17
|
+
equations of old model concepts for a new model concept. The tools
|
|
18
|
+
provided by this module can be used to regularize the discontinuities of
|
|
19
|
+
such equations. More concrete, the tools are thought for replacing
|
|
20
|
+
discontinuous process equations by continuous approximations.
|
|
21
|
+
|
|
22
|
+
Some of the implemented features are to be applied during model simulations
|
|
23
|
+
or are in some other way performance-critical, which is why we implement
|
|
24
|
+
them computationally efficient by using Cython (see the extension module
|
|
25
|
+
|smoothutils|.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
# import...
|
|
29
|
+
# ...from standard-library
|
|
30
|
+
import os
|
|
31
|
+
|
|
32
|
+
# ...from site-packages
|
|
33
|
+
# from scipy but not optional due to using interp1d during module initialisation:
|
|
34
|
+
from scipy import interpolate
|
|
35
|
+
import numpy
|
|
36
|
+
|
|
37
|
+
# ...from HydPy
|
|
38
|
+
from hydpy import conf
|
|
39
|
+
from hydpy.core import exceptiontools
|
|
40
|
+
from hydpy.core.typingtools import *
|
|
41
|
+
|
|
42
|
+
if TYPE_CHECKING:
|
|
43
|
+
from scipy import optimize
|
|
44
|
+
from hydpy.cythons import smoothutils
|
|
45
|
+
else:
|
|
46
|
+
optimize = exceptiontools.OptionalImport("optimize", ["scipy.optimize"], locals())
|
|
47
|
+
from hydpy.cythons.autogen import smoothutils
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def calc_smoothpar_logistic1(metapar):
|
|
51
|
+
"""Return the smoothing parameter corresponding to the given meta
|
|
52
|
+
parameter when using |smooth_logistic1|.
|
|
53
|
+
|
|
54
|
+
Calculate the smoothing parameter value corresponding the meta parameter
|
|
55
|
+
value 2.5:
|
|
56
|
+
|
|
57
|
+
>>> from hydpy.auxs.smoothtools import calc_smoothpar_logistic1
|
|
58
|
+
>>> smoothpar = calc_smoothpar_logistic1(2.5)
|
|
59
|
+
|
|
60
|
+
When using this smoothing parameter value, the output of function
|
|
61
|
+
|smooth_logistic1| differs by 1 % from the related "true" discontinuous
|
|
62
|
+
step function for the input values -2.5 and 2.5 (located at a distance
|
|
63
|
+
of 2.5 from the position of the discontinuity):
|
|
64
|
+
|
|
65
|
+
>>> from hydpy.cythons import smoothutils
|
|
66
|
+
>>> from hydpy import round_
|
|
67
|
+
>>> round_(smoothutils.smooth_logistic1(-2.5, smoothpar))
|
|
68
|
+
0.01
|
|
69
|
+
>>> round_(smoothutils.smooth_logistic1(2.5, smoothpar))
|
|
70
|
+
0.99
|
|
71
|
+
|
|
72
|
+
For zero or negative meta parameter values, function
|
|
73
|
+
|calc_smoothpar_logistic1| zero:
|
|
74
|
+
|
|
75
|
+
>>> round_(calc_smoothpar_logistic1(0.0))
|
|
76
|
+
0.0
|
|
77
|
+
>>> round_(calc_smoothpar_logistic1(-1.0))
|
|
78
|
+
0.0
|
|
79
|
+
"""
|
|
80
|
+
return numpy.clip(metapar / numpy.log(99.0), 0.0, numpy.inf)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _error_smoothpar_logistic2(par, metapar):
|
|
84
|
+
return smoothutils.smooth_logistic2(-metapar, par) - 0.01
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _smooth_logistic2_derivative1(par, metapar):
|
|
88
|
+
return smoothutils.smooth_logistic2_derivative1(metapar, par)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def calc_smoothpar_logistic2(metapar, iterate: bool = False):
|
|
92
|
+
"""Return the smoothing parameter corresponding to the given meta
|
|
93
|
+
parameter when using |smooth_logistic2|.
|
|
94
|
+
|
|
95
|
+
Calculate the smoothing parameter value corresponding the meta parameter
|
|
96
|
+
value 2.5:
|
|
97
|
+
|
|
98
|
+
>>> from hydpy.auxs.smoothtools import calc_smoothpar_logistic2
|
|
99
|
+
>>> smoothpar = calc_smoothpar_logistic2(2.5)
|
|
100
|
+
|
|
101
|
+
When using this smoothing parameter value, the output of function
|
|
102
|
+
|smooth_logistic2| differs by 1% from the related "true" discontinuous
|
|
103
|
+
step function for the input values -2.5 and 2.5 (located at a distance
|
|
104
|
+
of 2.5 from the position of the discontinuity):
|
|
105
|
+
|
|
106
|
+
>>> from hydpy.cythons import smoothutils
|
|
107
|
+
>>> from hydpy import round_
|
|
108
|
+
>>> round_(smoothutils.smooth_logistic2(-2.5, smoothpar))
|
|
109
|
+
0.01
|
|
110
|
+
>>> round_(smoothutils.smooth_logistic2(2.5, smoothpar))
|
|
111
|
+
2.51
|
|
112
|
+
|
|
113
|
+
For zero or negative meta parameter values, function
|
|
114
|
+
|calc_smoothpar_logistic2| returns zero:
|
|
115
|
+
|
|
116
|
+
>>> round_(calc_smoothpar_logistic2(-1.0))
|
|
117
|
+
0.0
|
|
118
|
+
>>> round_(calc_smoothpar_logistic2(-1.0, iterate=True))
|
|
119
|
+
0.0
|
|
120
|
+
|
|
121
|
+
Note that function |calc_smoothpar_logistic2| returns approximations
|
|
122
|
+
only. By standard, it relies on linear interpolation between 10,000
|
|
123
|
+
unevenly spaced supporting points in the interval [0.0, 1,000]. The
|
|
124
|
+
achieved interpolation accuracy should suffice for the anticipated
|
|
125
|
+
applications, but be aware of low accuracies in the extrapolation range:
|
|
126
|
+
|
|
127
|
+
>>> metapars = 1000.0, 2000.0, 3000.0
|
|
128
|
+
>>> smoothpars = calc_smoothpar_logistic2(metapars)
|
|
129
|
+
>>> for metapar, smoothpar in zip(metapars, smoothpars):
|
|
130
|
+
... round_(smoothutils.smooth_logistic2(-metapar, smoothpar))
|
|
131
|
+
0.01
|
|
132
|
+
0.010137
|
|
133
|
+
0.011697
|
|
134
|
+
|
|
135
|
+
Alternatively, you can gain higher accuracies through the iterative
|
|
136
|
+
refinement of the results based on the Newton method:
|
|
137
|
+
|
|
138
|
+
>>> for metapar, smoothpar in zip(metapars, smoothpars):
|
|
139
|
+
... smoothpar = calc_smoothpar_logistic2(metapar, iterate=True)
|
|
140
|
+
... round_(smoothutils.smooth_logistic2(-metapar, smoothpar))
|
|
141
|
+
0.01
|
|
142
|
+
0.01
|
|
143
|
+
0.01
|
|
144
|
+
|
|
145
|
+
However, this is possible for scalar values only and very time-consuming.
|
|
146
|
+
Furthermore, there is no guarantee for success (in the extrapolation range):
|
|
147
|
+
|
|
148
|
+
>>> calc_smoothpar_logistic2(1000000.0, iterate=True) # doctest: +ELLIPSIS
|
|
149
|
+
Traceback (most recent call last):
|
|
150
|
+
...
|
|
151
|
+
RuntimeError: Failed to converge ...
|
|
152
|
+
|
|
153
|
+
Hence, our advice to model developers is to restrict the allowed
|
|
154
|
+
span of all smoothing parameters relying on function
|
|
155
|
+
|calc_smoothpar_logistic2| to the mentioned interval and not to use
|
|
156
|
+
the iterative refinement strategy. Consider the refinement only in
|
|
157
|
+
cases that require extremely high accuracies or where one needs to
|
|
158
|
+
extrapolate a little (of course, the range of the supporting points,
|
|
159
|
+
provided by file `support_points_for_smoothpar_logistic2.npy`, could
|
|
160
|
+
also be extended).
|
|
161
|
+
"""
|
|
162
|
+
if iterate:
|
|
163
|
+
if metapar <= 0.0:
|
|
164
|
+
return 0.0
|
|
165
|
+
return optimize.newton(
|
|
166
|
+
_error_smoothpar_logistic2,
|
|
167
|
+
0.3 * metapar**0.84,
|
|
168
|
+
_smooth_logistic2_derivative1,
|
|
169
|
+
args=(metapar,),
|
|
170
|
+
)
|
|
171
|
+
return numpy.clip(
|
|
172
|
+
_cubic_interpolator_for_smoothpar_logistic2(metapar), 0.0, numpy.inf
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def calc_smoothpar_logistic3(metapar):
|
|
177
|
+
"""Return the smoothing parameter corresponding to the given meta
|
|
178
|
+
parameter when using |smooth_logistic3|.
|
|
179
|
+
|
|
180
|
+
|smooth_logistic3| is only an alias for |smooth_logistic2|.
|
|
181
|
+
|
|
182
|
+
Calculate the smoothing parameter value corresponding the meta parameter
|
|
183
|
+
value 2.5:
|
|
184
|
+
|
|
185
|
+
>>> from hydpy.auxs.smoothtools import calc_smoothpar_logistic3
|
|
186
|
+
>>> smoothpar = calc_smoothpar_logistic3(2.5)
|
|
187
|
+
|
|
188
|
+
When using this smoothing parameter value, the output of function
|
|
189
|
+
|smooth_logistic3| would ideally differ by 1% from the related "true"
|
|
190
|
+
discontinuous step function for the input values -2.5 and 3.5 (located
|
|
191
|
+
at a distance of 2.5 from the position of the nearest discontinuity):
|
|
192
|
+
|
|
193
|
+
>>> from hydpy.cythons import smoothutils
|
|
194
|
+
>>> from hydpy import round_
|
|
195
|
+
>>> round_(smoothutils.smooth_logistic3(-2.5, smoothpar))
|
|
196
|
+
0.009876
|
|
197
|
+
>>> round_(smoothutils.smooth_logistic3(3.5, smoothpar))
|
|
198
|
+
0.990124
|
|
199
|
+
|
|
200
|
+
In contrast to the examples shown for functions |smooth_logistic1| and
|
|
201
|
+
|smooth_logistic2|, the smoothing parameter determined for function
|
|
202
|
+
|smooth_logistic3| is not in perfect agreement with the given meta
|
|
203
|
+
parameter. For most purposes, the resulting error is negligible.
|
|
204
|
+
If you strive for very high accuracy, ask us to implement some iterative
|
|
205
|
+
refinement strategy or try it on your own.
|
|
206
|
+
"""
|
|
207
|
+
return calc_smoothpar_logistic2(metapar)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def calc_smoothpar_max1(metapar):
|
|
211
|
+
"""Return the smoothing parameter corresponding to the given meta
|
|
212
|
+
parameter when using |smooth_max1|.
|
|
213
|
+
|
|
214
|
+
|smooth_max1| is only an alias for |smooth_logistic2|.
|
|
215
|
+
|
|
216
|
+
Calculate the smoothing parameter value corresponding the meta parameter
|
|
217
|
+
value 2.5:
|
|
218
|
+
|
|
219
|
+
>>> from hydpy.auxs.smoothtools import calc_smoothpar_max1
|
|
220
|
+
>>> smoothpar = calc_smoothpar_max1(2.5)
|
|
221
|
+
|
|
222
|
+
When using this smoothing parameter value, the output of function
|
|
223
|
+
|smooth_max1| is 0.01 above the discontinuous maximum function result, if
|
|
224
|
+
the absolute value of the difference between the x and the y value is 2.5:
|
|
225
|
+
|
|
226
|
+
>>> from hydpy.cythons import smoothutils
|
|
227
|
+
>>> from hydpy import round_
|
|
228
|
+
>>> round_(smoothutils.smooth_max1(4.0, 1.5, smoothpar))
|
|
229
|
+
4.01
|
|
230
|
+
"""
|
|
231
|
+
return calc_smoothpar_logistic2(metapar)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
def calc_smoothpar_min1(metapar):
|
|
235
|
+
"""Return the smoothing parameter corresponding to the given meta
|
|
236
|
+
parameter when using |smooth_min1|.
|
|
237
|
+
|
|
238
|
+
|smooth_min1| is only an alias for |smooth_logistic2|.
|
|
239
|
+
|
|
240
|
+
Calculate the smoothing parameter value corresponding the meta parameter
|
|
241
|
+
value 2.5:
|
|
242
|
+
|
|
243
|
+
>>> from hydpy.auxs.smoothtools import calc_smoothpar_min1
|
|
244
|
+
>>> smoothpar = calc_smoothpar_min1(2.5)
|
|
245
|
+
|
|
246
|
+
When using this smoothing parameter value, the output of function
|
|
247
|
+
|smooth_min1| is 0.01 below the discontinuous minimum function result, if
|
|
248
|
+
the absolute value of the difference between the x and the y value is 2.5:
|
|
249
|
+
|
|
250
|
+
>>> from hydpy.cythons import smoothutils
|
|
251
|
+
>>> from hydpy import round_
|
|
252
|
+
>>> round_(smoothutils.smooth_min1(-4.0, -1.5, smoothpar))
|
|
253
|
+
-4.01
|
|
254
|
+
"""
|
|
255
|
+
return calc_smoothpar_logistic2(metapar)
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
# Calculate and save the supporting points required for method
|
|
259
|
+
# `calc_smoothpar_logistic2`:
|
|
260
|
+
# xys = numpy.zeros((2, 10000), dtype=config.NP_FLOAT)
|
|
261
|
+
# xys[0, :] = numpy.linspace(0., 1000.**(1./3.), 10000)**3.
|
|
262
|
+
# xys[1, :] = [calc_smoothpar_logistic2(x, iterate=True) for x in xys[0]]
|
|
263
|
+
# numpy.save(os.path.join(
|
|
264
|
+
# conf.__path__[0], "support_points_for_smoothpar_logistic2.npy"), xys)
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
# Load the supporting points required for method `calc_smoothpar_logistic2`:
|
|
268
|
+
confpath = conf.__path__[0]
|
|
269
|
+
xys = numpy.load(os.path.join(confpath, "support_points_for_smoothpar_logistic2.npy"))
|
|
270
|
+
_cubic_interpolator_for_smoothpar_logistic2 = interpolate.interp1d(
|
|
271
|
+
xys[0], xys[1], kind="cubic", fill_value="extrapolate"
|
|
272
|
+
)
|
|
273
|
+
del xys
|