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.
Files changed (890) hide show
  1. hydpy/__init__.py +275 -0
  2. hydpy/aliases.py +2554 -0
  3. hydpy/auxs/__init__.py +0 -0
  4. hydpy/auxs/anntools.py +1305 -0
  5. hydpy/auxs/armatools.py +883 -0
  6. hydpy/auxs/calibtools.py +3337 -0
  7. hydpy/auxs/interptools.py +1094 -0
  8. hydpy/auxs/iuhtools.py +543 -0
  9. hydpy/auxs/networktools.py +597 -0
  10. hydpy/auxs/ppolytools.py +809 -0
  11. hydpy/auxs/quadtools.py +61 -0
  12. hydpy/auxs/roottools.py +228 -0
  13. hydpy/auxs/smoothtools.py +273 -0
  14. hydpy/auxs/statstools.py +2125 -0
  15. hydpy/auxs/validtools.py +81 -0
  16. hydpy/conf/HydPyConfigBase.xsd +68637 -0
  17. hydpy/conf/HydPyConfigBase.xsdt +358 -0
  18. hydpy/conf/HydPyConfigMultipleRuns.xsd +25 -0
  19. hydpy/conf/HydPyConfigSingleRun.xsd +24 -0
  20. hydpy/conf/__init__.py +0 -0
  21. hydpy/conf/a_coefficients_explicit_lobatto_sequence.npy +0 -0
  22. hydpy/conf/support_points_for_smoothpar_logistic2.npy +0 -0
  23. hydpy/config.py +42 -0
  24. hydpy/core/__init__.py +0 -0
  25. hydpy/core/aliastools.py +214 -0
  26. hydpy/core/autodoctools.py +1947 -0
  27. hydpy/core/auxfiletools.py +1169 -0
  28. hydpy/core/devicetools.py +3810 -0
  29. hydpy/core/exceptiontools.py +269 -0
  30. hydpy/core/filetools.py +1985 -0
  31. hydpy/core/hydpytools.py +3089 -0
  32. hydpy/core/importtools.py +1398 -0
  33. hydpy/core/indextools.py +345 -0
  34. hydpy/core/itemtools.py +1849 -0
  35. hydpy/core/masktools.py +460 -0
  36. hydpy/core/modeltools.py +4868 -0
  37. hydpy/core/netcdftools.py +2683 -0
  38. hydpy/core/objecttools.py +2023 -0
  39. hydpy/core/optiontools.py +1045 -0
  40. hydpy/core/parametertools.py +4674 -0
  41. hydpy/core/printtools.py +222 -0
  42. hydpy/core/propertytools.py +643 -0
  43. hydpy/core/pubtools.py +254 -0
  44. hydpy/core/selectiontools.py +1571 -0
  45. hydpy/core/sequencetools.py +4476 -0
  46. hydpy/core/seriestools.py +339 -0
  47. hydpy/core/testtools.py +2483 -0
  48. hydpy/core/timetools.py +3567 -0
  49. hydpy/core/typingtools.py +333 -0
  50. hydpy/core/variabletools.py +2615 -0
  51. hydpy/cythons/__init__.py +24 -0
  52. hydpy/cythons/annutils.pxd +33 -0
  53. hydpy/cythons/annutils.pyi +25 -0
  54. hydpy/cythons/annutils.pyx +120 -0
  55. hydpy/cythons/autogen/__init__.py +0 -0
  56. hydpy/cythons/autogen/annutils.cp313-win_amd64.pyd +0 -0
  57. hydpy/cythons/autogen/annutils.pxd +42 -0
  58. hydpy/cythons/autogen/annutils.pyx +129 -0
  59. hydpy/cythons/autogen/c_arma.cp313-win_amd64.pyd +0 -0
  60. hydpy/cythons/autogen/c_arma.pxd +179 -0
  61. hydpy/cythons/autogen/c_arma.pyx +356 -0
  62. hydpy/cythons/autogen/c_arma_rimorido.cp313-win_amd64.pyd +0 -0
  63. hydpy/cythons/autogen/c_arma_rimorido.pxd +179 -0
  64. hydpy/cythons/autogen/c_arma_rimorido.pyx +356 -0
  65. hydpy/cythons/autogen/c_conv.cp313-win_amd64.pyd +0 -0
  66. hydpy/cythons/autogen/c_conv.pxd +198 -0
  67. hydpy/cythons/autogen/c_conv.pyx +491 -0
  68. hydpy/cythons/autogen/c_conv_idw.cp313-win_amd64.pyd +0 -0
  69. hydpy/cythons/autogen/c_conv_idw.pxd +124 -0
  70. hydpy/cythons/autogen/c_conv_idw.pyx +264 -0
  71. hydpy/cythons/autogen/c_conv_idw_ed.cp313-win_amd64.pyd +0 -0
  72. hydpy/cythons/autogen/c_conv_idw_ed.pxd +197 -0
  73. hydpy/cythons/autogen/c_conv_idw_ed.pyx +481 -0
  74. hydpy/cythons/autogen/c_conv_nn.cp313-win_amd64.pyd +0 -0
  75. hydpy/cythons/autogen/c_conv_nn.pxd +120 -0
  76. hydpy/cythons/autogen/c_conv_nn.pyx +224 -0
  77. hydpy/cythons/autogen/c_dam.cp313-win_amd64.pyd +0 -0
  78. hydpy/cythons/autogen/c_dam.pxd +805 -0
  79. hydpy/cythons/autogen/c_dam.pyx +1477 -0
  80. hydpy/cythons/autogen/c_dam_llake.cp313-win_amd64.pyd +0 -0
  81. hydpy/cythons/autogen/c_dam_llake.pxd +364 -0
  82. hydpy/cythons/autogen/c_dam_llake.pyx +705 -0
  83. hydpy/cythons/autogen/c_dam_lreservoir.cp313-win_amd64.pyd +0 -0
  84. hydpy/cythons/autogen/c_dam_lreservoir.pxd +365 -0
  85. hydpy/cythons/autogen/c_dam_lreservoir.pyx +708 -0
  86. hydpy/cythons/autogen/c_dam_lretention.cp313-win_amd64.pyd +0 -0
  87. hydpy/cythons/autogen/c_dam_lretention.pxd +340 -0
  88. hydpy/cythons/autogen/c_dam_lretention.pyx +625 -0
  89. hydpy/cythons/autogen/c_dam_pump.cp313-win_amd64.pyd +0 -0
  90. hydpy/cythons/autogen/c_dam_pump.pxd +402 -0
  91. hydpy/cythons/autogen/c_dam_pump.pyx +724 -0
  92. hydpy/cythons/autogen/c_dam_pump_sluice.cp313-win_amd64.pyd +0 -0
  93. hydpy/cythons/autogen/c_dam_pump_sluice.pxd +452 -0
  94. hydpy/cythons/autogen/c_dam_pump_sluice.pyx +829 -0
  95. hydpy/cythons/autogen/c_dam_sluice.cp313-win_amd64.pyd +0 -0
  96. hydpy/cythons/autogen/c_dam_sluice.pxd +404 -0
  97. hydpy/cythons/autogen/c_dam_sluice.pyx +726 -0
  98. hydpy/cythons/autogen/c_dam_v001.cp313-win_amd64.pyd +0 -0
  99. hydpy/cythons/autogen/c_dam_v001.pxd +452 -0
  100. hydpy/cythons/autogen/c_dam_v001.pyx +816 -0
  101. hydpy/cythons/autogen/c_dam_v002.cp313-win_amd64.pyd +0 -0
  102. hydpy/cythons/autogen/c_dam_v002.pxd +394 -0
  103. hydpy/cythons/autogen/c_dam_v002.pyx +703 -0
  104. hydpy/cythons/autogen/c_dam_v003.cp313-win_amd64.pyd +0 -0
  105. hydpy/cythons/autogen/c_dam_v003.pxd +417 -0
  106. hydpy/cythons/autogen/c_dam_v003.pyx +744 -0
  107. hydpy/cythons/autogen/c_dam_v004.cp313-win_amd64.pyd +0 -0
  108. hydpy/cythons/autogen/c_dam_v004.pxd +486 -0
  109. hydpy/cythons/autogen/c_dam_v004.pyx +891 -0
  110. hydpy/cythons/autogen/c_dam_v005.cp313-win_amd64.pyd +0 -0
  111. hydpy/cythons/autogen/c_dam_v005.pxd +524 -0
  112. hydpy/cythons/autogen/c_dam_v005.pyx +928 -0
  113. hydpy/cythons/autogen/c_dummy.cp313-win_amd64.pyd +0 -0
  114. hydpy/cythons/autogen/c_dummy.pxd +151 -0
  115. hydpy/cythons/autogen/c_dummy.pyx +263 -0
  116. hydpy/cythons/autogen/c_dummy_interceptedwater.cp313-win_amd64.pyd +0 -0
  117. hydpy/cythons/autogen/c_dummy_interceptedwater.pxd +69 -0
  118. hydpy/cythons/autogen/c_dummy_interceptedwater.pyx +104 -0
  119. hydpy/cythons/autogen/c_dummy_node2node.cp313-win_amd64.pyd +0 -0
  120. hydpy/cythons/autogen/c_dummy_node2node.pxd +89 -0
  121. hydpy/cythons/autogen/c_dummy_node2node.pyx +148 -0
  122. hydpy/cythons/autogen/c_dummy_snowalbedo.cp313-win_amd64.pyd +0 -0
  123. hydpy/cythons/autogen/c_dummy_snowalbedo.pxd +69 -0
  124. hydpy/cythons/autogen/c_dummy_snowalbedo.pyx +104 -0
  125. hydpy/cythons/autogen/c_dummy_snowcover.cp313-win_amd64.pyd +0 -0
  126. hydpy/cythons/autogen/c_dummy_snowcover.pxd +69 -0
  127. hydpy/cythons/autogen/c_dummy_snowcover.pyx +104 -0
  128. hydpy/cythons/autogen/c_dummy_snowycanopy.cp313-win_amd64.pyd +0 -0
  129. hydpy/cythons/autogen/c_dummy_snowycanopy.pxd +69 -0
  130. hydpy/cythons/autogen/c_dummy_snowycanopy.pyx +104 -0
  131. hydpy/cythons/autogen/c_dummy_soilwater.cp313-win_amd64.pyd +0 -0
  132. hydpy/cythons/autogen/c_dummy_soilwater.pxd +69 -0
  133. hydpy/cythons/autogen/c_dummy_soilwater.pyx +104 -0
  134. hydpy/cythons/autogen/c_evap.cp313-win_amd64.pyd +0 -0
  135. hydpy/cythons/autogen/c_evap.pxd +1029 -0
  136. hydpy/cythons/autogen/c_evap.pyx +2601 -0
  137. hydpy/cythons/autogen/c_evap_aet_hbv96.cp313-win_amd64.pyd +0 -0
  138. hydpy/cythons/autogen/c_evap_aet_hbv96.pxd +227 -0
  139. hydpy/cythons/autogen/c_evap_aet_hbv96.pyx +584 -0
  140. hydpy/cythons/autogen/c_evap_aet_minhas.cp313-win_amd64.pyd +0 -0
  141. hydpy/cythons/autogen/c_evap_aet_minhas.pxd +193 -0
  142. hydpy/cythons/autogen/c_evap_aet_minhas.pyx +478 -0
  143. hydpy/cythons/autogen/c_evap_aet_morsim.cp313-win_amd64.pyd +0 -0
  144. hydpy/cythons/autogen/c_evap_aet_morsim.pxd +681 -0
  145. hydpy/cythons/autogen/c_evap_aet_morsim.pyx +1642 -0
  146. hydpy/cythons/autogen/c_evap_pet_ambav1.cp313-win_amd64.pyd +0 -0
  147. hydpy/cythons/autogen/c_evap_pet_ambav1.pxd +532 -0
  148. hydpy/cythons/autogen/c_evap_pet_ambav1.pyx +1296 -0
  149. hydpy/cythons/autogen/c_evap_pet_hbv96.cp313-win_amd64.pyd +0 -0
  150. hydpy/cythons/autogen/c_evap_pet_hbv96.pxd +179 -0
  151. hydpy/cythons/autogen/c_evap_pet_hbv96.pyx +328 -0
  152. hydpy/cythons/autogen/c_evap_pet_m.cp313-win_amd64.pyd +0 -0
  153. hydpy/cythons/autogen/c_evap_pet_m.pxd +124 -0
  154. hydpy/cythons/autogen/c_evap_pet_m.pyx +214 -0
  155. hydpy/cythons/autogen/c_evap_pet_mlc.cp313-win_amd64.pyd +0 -0
  156. hydpy/cythons/autogen/c_evap_pet_mlc.pxd +126 -0
  157. hydpy/cythons/autogen/c_evap_pet_mlc.pyx +214 -0
  158. hydpy/cythons/autogen/c_evap_ret_fao56.cp313-win_amd64.pyd +0 -0
  159. hydpy/cythons/autogen/c_evap_ret_fao56.pxd +305 -0
  160. hydpy/cythons/autogen/c_evap_ret_fao56.pyx +624 -0
  161. hydpy/cythons/autogen/c_evap_ret_io.cp313-win_amd64.pyd +0 -0
  162. hydpy/cythons/autogen/c_evap_ret_io.pxd +112 -0
  163. hydpy/cythons/autogen/c_evap_ret_io.pyx +176 -0
  164. hydpy/cythons/autogen/c_evap_ret_tw2002.cp313-win_amd64.pyd +0 -0
  165. hydpy/cythons/autogen/c_evap_ret_tw2002.pxd +139 -0
  166. hydpy/cythons/autogen/c_evap_ret_tw2002.pyx +273 -0
  167. hydpy/cythons/autogen/c_exch.cp313-win_amd64.pyd +0 -0
  168. hydpy/cythons/autogen/c_exch.pxd +230 -0
  169. hydpy/cythons/autogen/c_exch.pyx +462 -0
  170. hydpy/cythons/autogen/c_exch_branch_hbv96.cp313-win_amd64.pyd +0 -0
  171. hydpy/cythons/autogen/c_exch_branch_hbv96.pxd +134 -0
  172. hydpy/cythons/autogen/c_exch_branch_hbv96.pyx +255 -0
  173. hydpy/cythons/autogen/c_exch_waterlevel.cp313-win_amd64.pyd +0 -0
  174. hydpy/cythons/autogen/c_exch_waterlevel.pxd +54 -0
  175. hydpy/cythons/autogen/c_exch_waterlevel.pyx +78 -0
  176. hydpy/cythons/autogen/c_exch_weir_hbv96.cp313-win_amd64.pyd +0 -0
  177. hydpy/cythons/autogen/c_exch_weir_hbv96.pxd +156 -0
  178. hydpy/cythons/autogen/c_exch_weir_hbv96.pyx +282 -0
  179. hydpy/cythons/autogen/c_ga.cp313-win_amd64.pyd +0 -0
  180. hydpy/cythons/autogen/c_ga.pxd +353 -0
  181. hydpy/cythons/autogen/c_ga.pyx +1204 -0
  182. hydpy/cythons/autogen/c_ga_garto.cp313-win_amd64.pyd +0 -0
  183. hydpy/cythons/autogen/c_ga_garto.pxd +330 -0
  184. hydpy/cythons/autogen/c_ga_garto.pyx +1105 -0
  185. hydpy/cythons/autogen/c_ga_garto_submodel1.cp313-win_amd64.pyd +0 -0
  186. hydpy/cythons/autogen/c_ga_garto_submodel1.pxd +236 -0
  187. hydpy/cythons/autogen/c_ga_garto_submodel1.pyx +944 -0
  188. hydpy/cythons/autogen/c_gland.cp313-win_amd64.pyd +0 -0
  189. hydpy/cythons/autogen/c_gland.pxd +437 -0
  190. hydpy/cythons/autogen/c_gland.pyx +726 -0
  191. hydpy/cythons/autogen/c_gland_gr4.cp313-win_amd64.pyd +0 -0
  192. hydpy/cythons/autogen/c_gland_gr4.pxd +382 -0
  193. hydpy/cythons/autogen/c_gland_gr4.pyx +605 -0
  194. hydpy/cythons/autogen/c_gland_gr5.cp313-win_amd64.pyd +0 -0
  195. hydpy/cythons/autogen/c_gland_gr5.pxd +368 -0
  196. hydpy/cythons/autogen/c_gland_gr5.pyx +568 -0
  197. hydpy/cythons/autogen/c_gland_gr6.cp313-win_amd64.pyd +0 -0
  198. hydpy/cythons/autogen/c_gland_gr6.pxd +420 -0
  199. hydpy/cythons/autogen/c_gland_gr6.pyx +673 -0
  200. hydpy/cythons/autogen/c_hland.cp313-win_amd64.pyd +0 -0
  201. hydpy/cythons/autogen/c_hland.pxd +855 -0
  202. hydpy/cythons/autogen/c_hland.pyx +2486 -0
  203. hydpy/cythons/autogen/c_hland_96.cp313-win_amd64.pyd +0 -0
  204. hydpy/cythons/autogen/c_hland_96.pxd +631 -0
  205. hydpy/cythons/autogen/c_hland_96.pyx +1724 -0
  206. hydpy/cythons/autogen/c_hland_96c.cp313-win_amd64.pyd +0 -0
  207. hydpy/cythons/autogen/c_hland_96c.pxd +621 -0
  208. hydpy/cythons/autogen/c_hland_96c.pyx +1822 -0
  209. hydpy/cythons/autogen/c_hland_96p.cp313-win_amd64.pyd +0 -0
  210. hydpy/cythons/autogen/c_hland_96p.pxd +683 -0
  211. hydpy/cythons/autogen/c_hland_96p.pyx +1911 -0
  212. hydpy/cythons/autogen/c_kinw.cp313-win_amd64.pyd +0 -0
  213. hydpy/cythons/autogen/c_kinw.pxd +509 -0
  214. hydpy/cythons/autogen/c_kinw.pyx +965 -0
  215. hydpy/cythons/autogen/c_kinw_williams.cp313-win_amd64.pyd +0 -0
  216. hydpy/cythons/autogen/c_kinw_williams.pxd +409 -0
  217. hydpy/cythons/autogen/c_kinw_williams.pyx +763 -0
  218. hydpy/cythons/autogen/c_kinw_williams_ext.cp313-win_amd64.pyd +0 -0
  219. hydpy/cythons/autogen/c_kinw_williams_ext.pxd +220 -0
  220. hydpy/cythons/autogen/c_kinw_williams_ext.pyx +440 -0
  221. hydpy/cythons/autogen/c_lland.cp313-win_amd64.pyd +0 -0
  222. hydpy/cythons/autogen/c_lland.pxd +1386 -0
  223. hydpy/cythons/autogen/c_lland.pyx +3679 -0
  224. hydpy/cythons/autogen/c_lland_dd.cp313-win_amd64.pyd +0 -0
  225. hydpy/cythons/autogen/c_lland_dd.pxd +679 -0
  226. hydpy/cythons/autogen/c_lland_dd.pyx +1719 -0
  227. hydpy/cythons/autogen/c_lland_knauf.cp313-win_amd64.pyd +0 -0
  228. hydpy/cythons/autogen/c_lland_knauf.pxd +1096 -0
  229. hydpy/cythons/autogen/c_lland_knauf.pyx +2784 -0
  230. hydpy/cythons/autogen/c_lland_knauf_ic.cp313-win_amd64.pyd +0 -0
  231. hydpy/cythons/autogen/c_lland_knauf_ic.pxd +1369 -0
  232. hydpy/cythons/autogen/c_lland_knauf_ic.pyx +3625 -0
  233. hydpy/cythons/autogen/c_meteo.cp313-win_amd64.pyd +0 -0
  234. hydpy/cythons/autogen/c_meteo.pxd +469 -0
  235. hydpy/cythons/autogen/c_meteo.pyx +879 -0
  236. hydpy/cythons/autogen/c_meteo_clear_glob_io.cp313-win_amd64.pyd +0 -0
  237. hydpy/cythons/autogen/c_meteo_clear_glob_io.pxd +75 -0
  238. hydpy/cythons/autogen/c_meteo_clear_glob_io.pyx +107 -0
  239. hydpy/cythons/autogen/c_meteo_glob_fao56.cp313-win_amd64.pyd +0 -0
  240. hydpy/cythons/autogen/c_meteo_glob_fao56.pxd +209 -0
  241. hydpy/cythons/autogen/c_meteo_glob_fao56.pyx +339 -0
  242. hydpy/cythons/autogen/c_meteo_glob_io.cp313-win_amd64.pyd +0 -0
  243. hydpy/cythons/autogen/c_meteo_glob_io.pxd +63 -0
  244. hydpy/cythons/autogen/c_meteo_glob_io.pyx +91 -0
  245. hydpy/cythons/autogen/c_meteo_glob_morsim.cp313-win_amd64.pyd +0 -0
  246. hydpy/cythons/autogen/c_meteo_glob_morsim.pxd +289 -0
  247. hydpy/cythons/autogen/c_meteo_glob_morsim.pyx +527 -0
  248. hydpy/cythons/autogen/c_meteo_precip_io.cp313-win_amd64.pyd +0 -0
  249. hydpy/cythons/autogen/c_meteo_precip_io.pxd +112 -0
  250. hydpy/cythons/autogen/c_meteo_precip_io.pyx +176 -0
  251. hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.cp313-win_amd64.pyd +0 -0
  252. hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.pxd +87 -0
  253. hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.pyx +123 -0
  254. hydpy/cythons/autogen/c_meteo_sun_fao56.cp313-win_amd64.pyd +0 -0
  255. hydpy/cythons/autogen/c_meteo_sun_fao56.pxd +209 -0
  256. hydpy/cythons/autogen/c_meteo_sun_fao56.pyx +343 -0
  257. hydpy/cythons/autogen/c_meteo_sun_morsim.cp313-win_amd64.pyd +0 -0
  258. hydpy/cythons/autogen/c_meteo_sun_morsim.pxd +286 -0
  259. hydpy/cythons/autogen/c_meteo_sun_morsim.pyx +519 -0
  260. hydpy/cythons/autogen/c_meteo_temp_io.cp313-win_amd64.pyd +0 -0
  261. hydpy/cythons/autogen/c_meteo_temp_io.pxd +112 -0
  262. hydpy/cythons/autogen/c_meteo_temp_io.pyx +176 -0
  263. hydpy/cythons/autogen/c_musk.cp313-win_amd64.pyd +0 -0
  264. hydpy/cythons/autogen/c_musk.pxd +282 -0
  265. hydpy/cythons/autogen/c_musk.pyx +605 -0
  266. hydpy/cythons/autogen/c_musk_classic.cp313-win_amd64.pyd +0 -0
  267. hydpy/cythons/autogen/c_musk_classic.pxd +138 -0
  268. hydpy/cythons/autogen/c_musk_classic.pyx +226 -0
  269. hydpy/cythons/autogen/c_musk_mct.cp313-win_amd64.pyd +0 -0
  270. hydpy/cythons/autogen/c_musk_mct.pxd +282 -0
  271. hydpy/cythons/autogen/c_musk_mct.pyx +609 -0
  272. hydpy/cythons/autogen/c_rconc.cp313-win_amd64.pyd +0 -0
  273. hydpy/cythons/autogen/c_rconc.pxd +119 -0
  274. hydpy/cythons/autogen/c_rconc.pyx +174 -0
  275. hydpy/cythons/autogen/c_rconc_nash.cp313-win_amd64.pyd +0 -0
  276. hydpy/cythons/autogen/c_rconc_nash.pxd +111 -0
  277. hydpy/cythons/autogen/c_rconc_nash.pyx +185 -0
  278. hydpy/cythons/autogen/c_rconc_uh.cp313-win_amd64.pyd +0 -0
  279. hydpy/cythons/autogen/c_rconc_uh.pxd +92 -0
  280. hydpy/cythons/autogen/c_rconc_uh.pyx +125 -0
  281. hydpy/cythons/autogen/c_sw1d.cp313-win_amd64.pyd +0 -0
  282. hydpy/cythons/autogen/c_sw1d.pxd +511 -0
  283. hydpy/cythons/autogen/c_sw1d.pyx +1263 -0
  284. hydpy/cythons/autogen/c_sw1d_channel.cp313-win_amd64.pyd +0 -0
  285. hydpy/cythons/autogen/c_sw1d_channel.pxd +119 -0
  286. hydpy/cythons/autogen/c_sw1d_channel.pyx +300 -0
  287. hydpy/cythons/autogen/c_sw1d_gate_out.cp313-win_amd64.pyd +0 -0
  288. hydpy/cythons/autogen/c_sw1d_gate_out.pxd +240 -0
  289. hydpy/cythons/autogen/c_sw1d_gate_out.pyx +476 -0
  290. hydpy/cythons/autogen/c_sw1d_lias.cp313-win_amd64.pyd +0 -0
  291. hydpy/cythons/autogen/c_sw1d_lias.pxd +320 -0
  292. hydpy/cythons/autogen/c_sw1d_lias.pyx +619 -0
  293. hydpy/cythons/autogen/c_sw1d_lias_sluice.cp313-win_amd64.pyd +0 -0
  294. hydpy/cythons/autogen/c_sw1d_lias_sluice.pxd +325 -0
  295. hydpy/cythons/autogen/c_sw1d_lias_sluice.pyx +644 -0
  296. hydpy/cythons/autogen/c_sw1d_network.cp313-win_amd64.pyd +0 -0
  297. hydpy/cythons/autogen/c_sw1d_network.pxd +90 -0
  298. hydpy/cythons/autogen/c_sw1d_network.pyx +246 -0
  299. hydpy/cythons/autogen/c_sw1d_pump.cp313-win_amd64.pyd +0 -0
  300. hydpy/cythons/autogen/c_sw1d_pump.pxd +256 -0
  301. hydpy/cythons/autogen/c_sw1d_pump.pyx +502 -0
  302. hydpy/cythons/autogen/c_sw1d_q_in.cp313-win_amd64.pyd +0 -0
  303. hydpy/cythons/autogen/c_sw1d_q_in.pxd +224 -0
  304. hydpy/cythons/autogen/c_sw1d_q_in.pyx +383 -0
  305. hydpy/cythons/autogen/c_sw1d_q_out.cp313-win_amd64.pyd +0 -0
  306. hydpy/cythons/autogen/c_sw1d_q_out.pxd +224 -0
  307. hydpy/cythons/autogen/c_sw1d_q_out.pyx +383 -0
  308. hydpy/cythons/autogen/c_sw1d_storage.cp313-win_amd64.pyd +0 -0
  309. hydpy/cythons/autogen/c_sw1d_storage.pxd +193 -0
  310. hydpy/cythons/autogen/c_sw1d_storage.pyx +349 -0
  311. hydpy/cythons/autogen/c_sw1d_weir_out.cp313-win_amd64.pyd +0 -0
  312. hydpy/cythons/autogen/c_sw1d_weir_out.pxd +212 -0
  313. hydpy/cythons/autogen/c_sw1d_weir_out.pyx +404 -0
  314. hydpy/cythons/autogen/c_test.cp313-win_amd64.pyd +0 -0
  315. hydpy/cythons/autogen/c_test.pxd +175 -0
  316. hydpy/cythons/autogen/c_test.pyx +348 -0
  317. hydpy/cythons/autogen/c_test_discontinous.cp313-win_amd64.pyd +0 -0
  318. hydpy/cythons/autogen/c_test_discontinous.pxd +146 -0
  319. hydpy/cythons/autogen/c_test_discontinous.pyx +256 -0
  320. hydpy/cythons/autogen/c_test_stiff0d.cp313-win_amd64.pyd +0 -0
  321. hydpy/cythons/autogen/c_test_stiff0d.pxd +146 -0
  322. hydpy/cythons/autogen/c_test_stiff0d.pyx +250 -0
  323. hydpy/cythons/autogen/c_test_stiff1d.cp313-win_amd64.pyd +0 -0
  324. hydpy/cythons/autogen/c_test_stiff1d.pxd +145 -0
  325. hydpy/cythons/autogen/c_test_stiff1d.pyx +294 -0
  326. hydpy/cythons/autogen/c_whmod.cp313-win_amd64.pyd +0 -0
  327. hydpy/cythons/autogen/c_whmod.pxd +482 -0
  328. hydpy/cythons/autogen/c_whmod.pyx +1156 -0
  329. hydpy/cythons/autogen/c_whmod_rural.cp313-win_amd64.pyd +0 -0
  330. hydpy/cythons/autogen/c_whmod_rural.pxd +411 -0
  331. hydpy/cythons/autogen/c_whmod_rural.pyx +982 -0
  332. hydpy/cythons/autogen/c_whmod_urban.cp313-win_amd64.pyd +0 -0
  333. hydpy/cythons/autogen/c_whmod_urban.pxd +482 -0
  334. hydpy/cythons/autogen/c_whmod_urban.pyx +1155 -0
  335. hydpy/cythons/autogen/c_wland.cp313-win_amd64.pyd +0 -0
  336. hydpy/cythons/autogen/c_wland.pxd +842 -0
  337. hydpy/cythons/autogen/c_wland.pyx +1890 -0
  338. hydpy/cythons/autogen/c_wland_gd.cp313-win_amd64.pyd +0 -0
  339. hydpy/cythons/autogen/c_wland_gd.pxd +829 -0
  340. hydpy/cythons/autogen/c_wland_gd.pyx +1847 -0
  341. hydpy/cythons/autogen/c_wland_wag.cp313-win_amd64.pyd +0 -0
  342. hydpy/cythons/autogen/c_wland_wag.pxd +810 -0
  343. hydpy/cythons/autogen/c_wland_wag.pyx +1780 -0
  344. hydpy/cythons/autogen/c_wq.cp313-win_amd64.pyd +0 -0
  345. hydpy/cythons/autogen/c_wq.pxd +275 -0
  346. hydpy/cythons/autogen/c_wq.pyx +652 -0
  347. hydpy/cythons/autogen/c_wq_trapeze.cp313-win_amd64.pyd +0 -0
  348. hydpy/cythons/autogen/c_wq_trapeze.pxd +170 -0
  349. hydpy/cythons/autogen/c_wq_trapeze.pyx +400 -0
  350. hydpy/cythons/autogen/c_wq_trapeze_strickler.cp313-win_amd64.pyd +0 -0
  351. hydpy/cythons/autogen/c_wq_trapeze_strickler.pxd +243 -0
  352. hydpy/cythons/autogen/c_wq_trapeze_strickler.pyx +578 -0
  353. hydpy/cythons/autogen/c_wq_walrus.cp313-win_amd64.pyd +0 -0
  354. hydpy/cythons/autogen/c_wq_walrus.pxd +61 -0
  355. hydpy/cythons/autogen/c_wq_walrus.pyx +82 -0
  356. hydpy/cythons/autogen/configutils.cp313-win_amd64.pyd +0 -0
  357. hydpy/cythons/autogen/configutils.pxd +17 -0
  358. hydpy/cythons/autogen/configutils.pyx +119 -0
  359. hydpy/cythons/autogen/interfaceutils.cp313-win_amd64.pyd +0 -0
  360. hydpy/cythons/autogen/interfaceutils.pxd +31 -0
  361. hydpy/cythons/autogen/interfaceutils.pyx +82 -0
  362. hydpy/cythons/autogen/interputils.cp313-win_amd64.pyd +0 -0
  363. hydpy/cythons/autogen/interputils.pxd +42 -0
  364. hydpy/cythons/autogen/interputils.pyx +118 -0
  365. hydpy/cythons/autogen/masterinterface.cp313-win_amd64.pyd +0 -0
  366. hydpy/cythons/autogen/masterinterface.pxd +153 -0
  367. hydpy/cythons/autogen/masterinterface.pyx +222 -0
  368. hydpy/cythons/autogen/pointerutils.cp313-win_amd64.pyd +0 -0
  369. hydpy/cythons/autogen/pointerutils.pxd +31 -0
  370. hydpy/cythons/autogen/pointerutils.pyx +650 -0
  371. hydpy/cythons/autogen/ppolyutils.cp313-win_amd64.pyd +0 -0
  372. hydpy/cythons/autogen/ppolyutils.pxd +35 -0
  373. hydpy/cythons/autogen/ppolyutils.pyx +59 -0
  374. hydpy/cythons/autogen/quadutils.cp313-win_amd64.pyd +0 -0
  375. hydpy/cythons/autogen/quadutils.pxd +26 -0
  376. hydpy/cythons/autogen/quadutils.pyx +973 -0
  377. hydpy/cythons/autogen/rootutils.cp313-win_amd64.pyd +0 -0
  378. hydpy/cythons/autogen/rootutils.pxd +28 -0
  379. hydpy/cythons/autogen/rootutils.pyx +109 -0
  380. hydpy/cythons/autogen/sequenceutils.cp313-win_amd64.pyd +0 -0
  381. hydpy/cythons/autogen/sequenceutils.pxd +45 -0
  382. hydpy/cythons/autogen/sequenceutils.pyx +101 -0
  383. hydpy/cythons/autogen/smoothutils.cp313-win_amd64.pyd +0 -0
  384. hydpy/cythons/autogen/smoothutils.pxd +29 -0
  385. hydpy/cythons/autogen/smoothutils.pyx +833 -0
  386. hydpy/cythons/configutils.pxd +8 -0
  387. hydpy/cythons/configutils.pyi +5 -0
  388. hydpy/cythons/configutils.pyx +110 -0
  389. hydpy/cythons/interfaceutils.pxd +22 -0
  390. hydpy/cythons/interfaceutils.pyi +15 -0
  391. hydpy/cythons/interfaceutils.pyx +73 -0
  392. hydpy/cythons/interputils.pxd +33 -0
  393. hydpy/cythons/interputils.pyi +32 -0
  394. hydpy/cythons/interputils.pyx +109 -0
  395. hydpy/cythons/modelutils.py +2990 -0
  396. hydpy/cythons/pointerutils.pxd +22 -0
  397. hydpy/cythons/pointerutils.pyi +89 -0
  398. hydpy/cythons/pointerutils.pyx +641 -0
  399. hydpy/cythons/ppolyutils.pxd +26 -0
  400. hydpy/cythons/ppolyutils.pyi +21 -0
  401. hydpy/cythons/ppolyutils.pyx +50 -0
  402. hydpy/cythons/quadutils.pxd +17 -0
  403. hydpy/cythons/quadutils.pyi +13 -0
  404. hydpy/cythons/quadutils.pyx +964 -0
  405. hydpy/cythons/rootutils.pxd +19 -0
  406. hydpy/cythons/rootutils.pyi +21 -0
  407. hydpy/cythons/rootutils.pyx +100 -0
  408. hydpy/cythons/sequenceutils.pxd +36 -0
  409. hydpy/cythons/sequenceutils.pyi +7 -0
  410. hydpy/cythons/sequenceutils.pyx +92 -0
  411. hydpy/cythons/smoothutils.pxd +20 -0
  412. hydpy/cythons/smoothutils.pyi +15 -0
  413. hydpy/cythons/smoothutils.pyx +824 -0
  414. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_dill_assl.py +13 -0
  415. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_kalk.py +13 -0
  416. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_leun.py +14 -0
  417. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_marb.py +13 -0
  418. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_dill_assl_lahn_leun.py +5 -0
  419. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_lahn_leun_lahn_kalk.py +5 -0
  420. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_lahn_marb_lahn_leun.py +5 -0
  421. hydpy/data/HydPy-H-Lahn/control/default/land.py +9 -0
  422. hydpy/data/HydPy-H-Lahn/control/default/land_dill_assl.py +57 -0
  423. hydpy/data/HydPy-H-Lahn/control/default/land_lahn_kalk.py +57 -0
  424. hydpy/data/HydPy-H-Lahn/control/default/land_lahn_leun.py +56 -0
  425. hydpy/data/HydPy-H-Lahn/control/default/land_lahn_marb.py +57 -0
  426. hydpy/data/HydPy-H-Lahn/control/default/stream_dill_assl_lahn_leun.py +7 -0
  427. hydpy/data/HydPy-H-Lahn/control/default/stream_lahn_leun_lahn_kalk.py +7 -0
  428. hydpy/data/HydPy-H-Lahn/control/default/stream_lahn_marb_lahn_leun.py +7 -0
  429. hydpy/data/HydPy-H-Lahn/multiple_runs.xml +309 -0
  430. hydpy/data/HydPy-H-Lahn/multiple_runs_alpha.xml +71 -0
  431. hydpy/data/HydPy-H-Lahn/network/default/headwaters.py +11 -0
  432. hydpy/data/HydPy-H-Lahn/network/default/nonheadwaters.py +11 -0
  433. hydpy/data/HydPy-H-Lahn/network/default/streams.py +8 -0
  434. hydpy/data/HydPy-H-Lahn/series/default/dill_assl_obs_q.asc +11387 -0
  435. hydpy/data/HydPy-H-Lahn/series/default/evap_pet_hbv96_input_normalairtemperature.nc +0 -0
  436. hydpy/data/HydPy-H-Lahn/series/default/evap_pet_hbv96_input_normalevapotranspiration.nc +0 -0
  437. hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_p.nc +0 -0
  438. hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_t.nc +0 -0
  439. hydpy/data/HydPy-H-Lahn/series/default/lahn_kalk_obs_q.asc +11387 -0
  440. hydpy/data/HydPy-H-Lahn/series/default/lahn_leun_obs_q.asc +11387 -0
  441. hydpy/data/HydPy-H-Lahn/series/default/lahn_marb_obs_q.asc +11387 -0
  442. hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
  443. hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
  444. hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_hland_96_input_p.asc +11387 -0
  445. hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_hland_96_input_t.asc +11387 -0
  446. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
  447. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
  448. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_hland_96_input_p.asc +11387 -0
  449. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_hland_96_input_t.asc +11387 -0
  450. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
  451. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
  452. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_hland_96_input_p.asc +11387 -0
  453. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_hland_96_input_t.asc +11387 -0
  454. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
  455. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
  456. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_hland_96_input_p.asc +11387 -0
  457. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_hland_96_input_t.asc +11387 -0
  458. hydpy/data/HydPy-H-Lahn/series/default/obs_q.nc +0 -0
  459. hydpy/data/HydPy-H-Lahn/single_run.xml +152 -0
  460. hydpy/data/HydPy-H-Lahn/single_run.xmlt +143 -0
  461. hydpy/data/__init__.py +17 -0
  462. hydpy/docs/__init__.py +0 -0
  463. hydpy/docs/autofigs/__init__.py +0 -0
  464. hydpy/docs/bib/__init__.py +0 -0
  465. hydpy/docs/bib/refs.bib +566 -0
  466. hydpy/docs/combine_docversions.py +133 -0
  467. hydpy/docs/draw_model_sketches.py +1301 -0
  468. hydpy/docs/enable_autodoc.py +7 -0
  469. hydpy/docs/figs/HydPy-G-GR4.png +0 -0
  470. hydpy/docs/figs/HydPy-G-GR5.png +0 -0
  471. hydpy/docs/figs/HydPy-G-GR6.png +0 -0
  472. hydpy/docs/figs/HydPy-H-HBV96-COSERO.png +0 -0
  473. hydpy/docs/figs/HydPy-H-HBV96-PREVAH.png +0 -0
  474. hydpy/docs/figs/HydPy-H-HBV96.png +0 -0
  475. hydpy/docs/figs/HydPy-H-Lahn.png +0 -0
  476. hydpy/docs/figs/HydPy-KinW-Williams.png +0 -0
  477. hydpy/docs/figs/HydPy-L-DD.png +0 -0
  478. hydpy/docs/figs/HydPy-W-Wag.png +0 -0
  479. hydpy/docs/figs/HydPy_Logo.png +0 -0
  480. hydpy/docs/figs/HydPy_Logo_Text.png +0 -0
  481. hydpy/docs/figs/IDLE-editor.png +0 -0
  482. hydpy/docs/figs/IDLE-shell.png +0 -0
  483. hydpy/docs/figs/LAWA_river-basin-bumbers.png +0 -0
  484. hydpy/docs/figs/__init__.py +0 -0
  485. hydpy/docs/html_/__init__.py +0 -0
  486. hydpy/docs/polish_html.py +57 -0
  487. hydpy/docs/prepare.py +224 -0
  488. hydpy/docs/publish_docs.py +53 -0
  489. hydpy/docs/rst/HydPy-ARMA.rst +27 -0
  490. hydpy/docs/rst/HydPy-Conv.rst +22 -0
  491. hydpy/docs/rst/HydPy-Dam.rst +79 -0
  492. hydpy/docs/rst/HydPy-Dummy.rst +21 -0
  493. hydpy/docs/rst/HydPy-Evap.rst +26 -0
  494. hydpy/docs/rst/HydPy-Exch.rst +36 -0
  495. hydpy/docs/rst/HydPy-G.rst +40 -0
  496. hydpy/docs/rst/HydPy-GA.rst +34 -0
  497. hydpy/docs/rst/HydPy-H.rst +24 -0
  498. hydpy/docs/rst/HydPy-KinW.rst +32 -0
  499. hydpy/docs/rst/HydPy-L.rst +42 -0
  500. hydpy/docs/rst/HydPy-Meteo.rst +28 -0
  501. hydpy/docs/rst/HydPy-Musk.rst +21 -0
  502. hydpy/docs/rst/HydPy-Rconc.rst +17 -0
  503. hydpy/docs/rst/HydPy-SW1D.rst +49 -0
  504. hydpy/docs/rst/HydPy-Test.rst +19 -0
  505. hydpy/docs/rst/HydPy-W.rst +20 -0
  506. hydpy/docs/rst/HydPy-WHMod.rst +19 -0
  507. hydpy/docs/rst/HydPy-WQ.rst +20 -0
  508. hydpy/docs/rst/__init__.py +0 -0
  509. hydpy/docs/rst/additional_repositories.rst +40 -0
  510. hydpy/docs/rst/auxiliaries.rst +31 -0
  511. hydpy/docs/rst/continuous_integration.rst +75 -0
  512. hydpy/docs/rst/core.rst +75 -0
  513. hydpy/docs/rst/cythons.rst +47 -0
  514. hydpy/docs/rst/definitions.rst +506 -0
  515. hydpy/docs/rst/developer_guide.rst +54 -0
  516. hydpy/docs/rst/example_projects.rst +40 -0
  517. hydpy/docs/rst/execution.rst +22 -0
  518. hydpy/docs/rst/framework_tools.rst +56 -0
  519. hydpy/docs/rst/how_to_read_the_reference_manual.rst +156 -0
  520. hydpy/docs/rst/hydpydependencies.rst +55 -0
  521. hydpy/docs/rst/index.rst +125 -0
  522. hydpy/docs/rst/installation.rst +155 -0
  523. hydpy/docs/rst/model_families.rst +79 -0
  524. hydpy/docs/rst/model_overview.rst +291 -0
  525. hydpy/docs/rst/modelimports.rst +10 -0
  526. hydpy/docs/rst/options.rst +119 -0
  527. hydpy/docs/rst/programming_style.rst +572 -0
  528. hydpy/docs/rst/project_structure.rst +520 -0
  529. hydpy/docs/rst/quickstart.rst +304 -0
  530. hydpy/docs/rst/reference_manual.rst +29 -0
  531. hydpy/docs/rst/required_tools.rst +50 -0
  532. hydpy/docs/rst/simulation.rst +514 -0
  533. hydpy/docs/rst/submodel_interfaces.rst +32 -0
  534. hydpy/docs/rst/tests_and_documentation.rst +85 -0
  535. hydpy/docs/rst/user_guide.rst +38 -0
  536. hydpy/docs/rst/version_control.rst +116 -0
  537. hydpy/docs/rst/zbibliography.rst +8 -0
  538. hydpy/docs/sphinx/__init__.py +0 -0
  539. hydpy/docs/sphinx/_themes/basic_hydpy/changes/frameset.html +11 -0
  540. hydpy/docs/sphinx/_themes/basic_hydpy/changes/rstsource.html +15 -0
  541. hydpy/docs/sphinx/_themes/basic_hydpy/changes/versionchanges.html +33 -0
  542. hydpy/docs/sphinx/_themes/basic_hydpy/defindex.html +35 -0
  543. hydpy/docs/sphinx/_themes/basic_hydpy/domainindex.html +56 -0
  544. hydpy/docs/sphinx/_themes/basic_hydpy/genindex-single.html +63 -0
  545. hydpy/docs/sphinx/_themes/basic_hydpy/genindex-split.html +41 -0
  546. hydpy/docs/sphinx/_themes/basic_hydpy/genindex.html +76 -0
  547. hydpy/docs/sphinx/_themes/basic_hydpy/globaltoc.html +11 -0
  548. hydpy/docs/sphinx/_themes/basic_hydpy/layout.html +221 -0
  549. hydpy/docs/sphinx/_themes/basic_hydpy/localtoc.html +15 -0
  550. hydpy/docs/sphinx/_themes/basic_hydpy/opensearch.xml +13 -0
  551. hydpy/docs/sphinx/_themes/basic_hydpy/page.html +13 -0
  552. hydpy/docs/sphinx/_themes/basic_hydpy/relations.html +23 -0
  553. hydpy/docs/sphinx/_themes/basic_hydpy/search.html +65 -0
  554. hydpy/docs/sphinx/_themes/basic_hydpy/searchbox.html +21 -0
  555. hydpy/docs/sphinx/_themes/basic_hydpy/searchfield.html +23 -0
  556. hydpy/docs/sphinx/_themes/basic_hydpy/sourcelink.html +18 -0
  557. hydpy/docs/sphinx/_themes/basic_hydpy/static/basic.css_t +925 -0
  558. hydpy/docs/sphinx/_themes/basic_hydpy/static/doctools.js +156 -0
  559. hydpy/docs/sphinx/_themes/basic_hydpy/static/documentation_options.js_t +13 -0
  560. hydpy/docs/sphinx/_themes/basic_hydpy/static/file.png +0 -0
  561. hydpy/docs/sphinx/_themes/basic_hydpy/static/language_data.js_t +26 -0
  562. hydpy/docs/sphinx/_themes/basic_hydpy/static/minus.png +0 -0
  563. hydpy/docs/sphinx/_themes/basic_hydpy/static/plus.png +0 -0
  564. hydpy/docs/sphinx/_themes/basic_hydpy/static/searchtools.js +574 -0
  565. hydpy/docs/sphinx/_themes/basic_hydpy/static/sphinx_highlight.js +154 -0
  566. hydpy/docs/sphinx/_themes/basic_hydpy/theme.conf +16 -0
  567. hydpy/docs/sphinx/_themes/classic_hydpy/layout.html +23 -0
  568. hydpy/docs/sphinx/_themes/classic_hydpy/static/classic.css_t +358 -0
  569. hydpy/docs/sphinx/_themes/classic_hydpy/static/sidebar.js_t +72 -0
  570. hydpy/docs/sphinx/_themes/classic_hydpy/theme.conf +32 -0
  571. hydpy/docs/sphinx/conf.py +398 -0
  572. hydpy/docs/sphinx/defaultlinks_extension.py +36 -0
  573. hydpy/docs/sphinx/integrationtest_extension.py +104 -0
  574. hydpy/docs/sphinx/projectstructure_extension.py +58 -0
  575. hydpy/docs/sphinx/submodelgraph_extension.py +53 -0
  576. hydpy/exe/__init__.py +0 -0
  577. hydpy/exe/commandtools.py +651 -0
  578. hydpy/exe/hyd.py +277 -0
  579. hydpy/exe/modelimports.py +41 -0
  580. hydpy/exe/replacetools.py +216 -0
  581. hydpy/exe/servertools.py +2348 -0
  582. hydpy/exe/xmltools.py +3280 -0
  583. hydpy/interfaces/__init__.py +0 -0
  584. hydpy/interfaces/aetinterfaces.py +94 -0
  585. hydpy/interfaces/dischargeinterfaces.py +45 -0
  586. hydpy/interfaces/petinterfaces.py +117 -0
  587. hydpy/interfaces/precipinterfaces.py +42 -0
  588. hydpy/interfaces/radiationinterfaces.py +79 -0
  589. hydpy/interfaces/rconcinterfaces.py +30 -0
  590. hydpy/interfaces/routinginterfaces.py +324 -0
  591. hydpy/interfaces/soilinterfaces.py +96 -0
  592. hydpy/interfaces/stateinterfaces.py +98 -0
  593. hydpy/interfaces/tempinterfaces.py +46 -0
  594. hydpy/models/__init__.py +0 -0
  595. hydpy/models/arma/__init__.py +14 -0
  596. hydpy/models/arma/arma_control.py +383 -0
  597. hydpy/models/arma/arma_derived.py +204 -0
  598. hydpy/models/arma/arma_fluxes.py +41 -0
  599. hydpy/models/arma/arma_inlets.py +11 -0
  600. hydpy/models/arma/arma_logs.py +19 -0
  601. hydpy/models/arma/arma_model.py +461 -0
  602. hydpy/models/arma/arma_outlets.py +11 -0
  603. hydpy/models/arma_rimorido.py +381 -0
  604. hydpy/models/conv/__init__.py +12 -0
  605. hydpy/models/conv/conv_control.py +303 -0
  606. hydpy/models/conv/conv_derived.py +271 -0
  607. hydpy/models/conv/conv_fluxes.py +54 -0
  608. hydpy/models/conv/conv_inlets.py +11 -0
  609. hydpy/models/conv/conv_model.py +687 -0
  610. hydpy/models/conv/conv_outlets.py +11 -0
  611. hydpy/models/conv_idw.py +120 -0
  612. hydpy/models/conv_idw_ed.py +184 -0
  613. hydpy/models/conv_nn.py +112 -0
  614. hydpy/models/dam/__init__.py +16 -0
  615. hydpy/models/dam/dam_aides.py +17 -0
  616. hydpy/models/dam/dam_control.py +346 -0
  617. hydpy/models/dam/dam_derived.py +559 -0
  618. hydpy/models/dam/dam_factors.py +46 -0
  619. hydpy/models/dam/dam_fluxes.py +179 -0
  620. hydpy/models/dam/dam_inlets.py +29 -0
  621. hydpy/models/dam/dam_logs.py +52 -0
  622. hydpy/models/dam/dam_model.py +5011 -0
  623. hydpy/models/dam/dam_outlets.py +23 -0
  624. hydpy/models/dam/dam_receivers.py +41 -0
  625. hydpy/models/dam/dam_senders.py +23 -0
  626. hydpy/models/dam/dam_solver.py +75 -0
  627. hydpy/models/dam/dam_states.py +11 -0
  628. hydpy/models/dam_llake.py +499 -0
  629. hydpy/models/dam_lreservoir.py +548 -0
  630. hydpy/models/dam_lretention.py +343 -0
  631. hydpy/models/dam_pump.py +278 -0
  632. hydpy/models/dam_pump_sluice.py +339 -0
  633. hydpy/models/dam_sluice.py +319 -0
  634. hydpy/models/dam_v001.py +1127 -0
  635. hydpy/models/dam_v002.py +381 -0
  636. hydpy/models/dam_v003.py +422 -0
  637. hydpy/models/dam_v004.py +665 -0
  638. hydpy/models/dam_v005.py +479 -0
  639. hydpy/models/dummy/__init__.py +15 -0
  640. hydpy/models/dummy/dummy_control.py +22 -0
  641. hydpy/models/dummy/dummy_fluxes.py +11 -0
  642. hydpy/models/dummy/dummy_inlets.py +11 -0
  643. hydpy/models/dummy/dummy_inputs.py +41 -0
  644. hydpy/models/dummy/dummy_model.py +196 -0
  645. hydpy/models/dummy/dummy_outlets.py +11 -0
  646. hydpy/models/dummy_interceptedwater.py +85 -0
  647. hydpy/models/dummy_node2node.py +83 -0
  648. hydpy/models/dummy_snowalbedo.py +84 -0
  649. hydpy/models/dummy_snowcover.py +84 -0
  650. hydpy/models/dummy_snowycanopy.py +86 -0
  651. hydpy/models/dummy_soilwater.py +85 -0
  652. hydpy/models/evap/__init__.py +13 -0
  653. hydpy/models/evap/evap_control.py +354 -0
  654. hydpy/models/evap/evap_derived.py +236 -0
  655. hydpy/models/evap/evap_factors.py +188 -0
  656. hydpy/models/evap/evap_fixed.py +68 -0
  657. hydpy/models/evap/evap_fluxes.py +150 -0
  658. hydpy/models/evap/evap_inputs.py +54 -0
  659. hydpy/models/evap/evap_logs.py +91 -0
  660. hydpy/models/evap/evap_masks.py +48 -0
  661. hydpy/models/evap/evap_model.py +9170 -0
  662. hydpy/models/evap/evap_parameters.py +149 -0
  663. hydpy/models/evap/evap_sequences.py +32 -0
  664. hydpy/models/evap/evap_states.py +18 -0
  665. hydpy/models/evap_aet_hbv96.py +372 -0
  666. hydpy/models/evap_aet_minhas.py +331 -0
  667. hydpy/models/evap_aet_morsim.py +627 -0
  668. hydpy/models/evap_pet_ambav1.py +483 -0
  669. hydpy/models/evap_pet_hbv96.py +147 -0
  670. hydpy/models/evap_pet_m.py +94 -0
  671. hydpy/models/evap_pet_mlc.py +107 -0
  672. hydpy/models/evap_ret_fao56.py +265 -0
  673. hydpy/models/evap_ret_io.py +74 -0
  674. hydpy/models/evap_ret_tw2002.py +165 -0
  675. hydpy/models/exch/__init__.py +14 -0
  676. hydpy/models/exch/exch_control.py +262 -0
  677. hydpy/models/exch/exch_derived.py +36 -0
  678. hydpy/models/exch/exch_factors.py +26 -0
  679. hydpy/models/exch/exch_fluxes.py +48 -0
  680. hydpy/models/exch/exch_inlets.py +11 -0
  681. hydpy/models/exch/exch_logs.py +12 -0
  682. hydpy/models/exch/exch_model.py +451 -0
  683. hydpy/models/exch/exch_outlets.py +17 -0
  684. hydpy/models/exch/exch_receivers.py +17 -0
  685. hydpy/models/exch_branch_hbv96.py +186 -0
  686. hydpy/models/exch_waterlevel.py +73 -0
  687. hydpy/models/exch_weir_hbv96.py +609 -0
  688. hydpy/models/ga/__init__.py +14 -0
  689. hydpy/models/ga/ga_aides.py +17 -0
  690. hydpy/models/ga/ga_control.py +208 -0
  691. hydpy/models/ga/ga_derived.py +77 -0
  692. hydpy/models/ga/ga_fluxes.py +83 -0
  693. hydpy/models/ga/ga_inputs.py +26 -0
  694. hydpy/models/ga/ga_logs.py +17 -0
  695. hydpy/models/ga/ga_model.py +2952 -0
  696. hydpy/models/ga/ga_states.py +87 -0
  697. hydpy/models/ga_garto.py +1001 -0
  698. hydpy/models/ga_garto_submodel1.py +79 -0
  699. hydpy/models/gland/__init__.py +14 -0
  700. hydpy/models/gland/gland_control.py +90 -0
  701. hydpy/models/gland/gland_derived.py +113 -0
  702. hydpy/models/gland/gland_fluxes.py +137 -0
  703. hydpy/models/gland/gland_inputs.py +12 -0
  704. hydpy/models/gland/gland_model.py +1439 -0
  705. hydpy/models/gland/gland_outlets.py +11 -0
  706. hydpy/models/gland/gland_states.py +90 -0
  707. hydpy/models/gland_gr4.py +501 -0
  708. hydpy/models/gland_gr5.py +463 -0
  709. hydpy/models/gland_gr6.py +487 -0
  710. hydpy/models/hland/__init__.py +20 -0
  711. hydpy/models/hland/hland_aides.py +19 -0
  712. hydpy/models/hland/hland_constants.py +37 -0
  713. hydpy/models/hland/hland_control.py +1530 -0
  714. hydpy/models/hland/hland_derived.py +683 -0
  715. hydpy/models/hland/hland_factors.py +57 -0
  716. hydpy/models/hland/hland_fixed.py +42 -0
  717. hydpy/models/hland/hland_fluxes.py +279 -0
  718. hydpy/models/hland/hland_inputs.py +19 -0
  719. hydpy/models/hland/hland_masks.py +107 -0
  720. hydpy/models/hland/hland_model.py +4664 -0
  721. hydpy/models/hland/hland_outlets.py +11 -0
  722. hydpy/models/hland/hland_parameters.py +227 -0
  723. hydpy/models/hland/hland_sequences.py +382 -0
  724. hydpy/models/hland/hland_states.py +236 -0
  725. hydpy/models/hland_96.py +1812 -0
  726. hydpy/models/hland_96c.py +1196 -0
  727. hydpy/models/hland_96p.py +1204 -0
  728. hydpy/models/kinw/__init__.py +18 -0
  729. hydpy/models/kinw/kinw_aides.py +306 -0
  730. hydpy/models/kinw/kinw_control.py +270 -0
  731. hydpy/models/kinw/kinw_derived.py +197 -0
  732. hydpy/models/kinw/kinw_fixed.py +33 -0
  733. hydpy/models/kinw/kinw_fluxes.py +37 -0
  734. hydpy/models/kinw/kinw_inlets.py +11 -0
  735. hydpy/models/kinw/kinw_model.py +3026 -0
  736. hydpy/models/kinw/kinw_outlets.py +11 -0
  737. hydpy/models/kinw/kinw_solver.py +45 -0
  738. hydpy/models/kinw/kinw_states.py +17 -0
  739. hydpy/models/kinw_williams.py +1299 -0
  740. hydpy/models/kinw_williams_ext.py +768 -0
  741. hydpy/models/lland/__init__.py +42 -0
  742. hydpy/models/lland/lland_aides.py +38 -0
  743. hydpy/models/lland/lland_constants.py +88 -0
  744. hydpy/models/lland/lland_control.py +1329 -0
  745. hydpy/models/lland/lland_derived.py +380 -0
  746. hydpy/models/lland/lland_factors.py +18 -0
  747. hydpy/models/lland/lland_fixed.py +128 -0
  748. hydpy/models/lland/lland_fluxes.py +626 -0
  749. hydpy/models/lland/lland_inlets.py +12 -0
  750. hydpy/models/lland/lland_inputs.py +33 -0
  751. hydpy/models/lland/lland_logs.py +17 -0
  752. hydpy/models/lland/lland_masks.py +212 -0
  753. hydpy/models/lland/lland_model.py +7690 -0
  754. hydpy/models/lland/lland_outlets.py +12 -0
  755. hydpy/models/lland/lland_parameters.py +195 -0
  756. hydpy/models/lland/lland_sequences.py +67 -0
  757. hydpy/models/lland/lland_states.py +280 -0
  758. hydpy/models/lland_dd.py +2270 -0
  759. hydpy/models/lland_knauf.py +2156 -0
  760. hydpy/models/lland_knauf_ic.py +1920 -0
  761. hydpy/models/meteo/__init__.py +12 -0
  762. hydpy/models/meteo/meteo_control.py +154 -0
  763. hydpy/models/meteo/meteo_derived.py +159 -0
  764. hydpy/models/meteo/meteo_factors.py +88 -0
  765. hydpy/models/meteo/meteo_fixed.py +19 -0
  766. hydpy/models/meteo/meteo_fluxes.py +46 -0
  767. hydpy/models/meteo/meteo_inputs.py +47 -0
  768. hydpy/models/meteo/meteo_logs.py +30 -0
  769. hydpy/models/meteo/meteo_model.py +2904 -0
  770. hydpy/models/meteo/meteo_parameters.py +14 -0
  771. hydpy/models/meteo/meteo_sequences.py +22 -0
  772. hydpy/models/meteo_clear_glob_io.py +77 -0
  773. hydpy/models/meteo_glob_fao56.py +217 -0
  774. hydpy/models/meteo_glob_io.py +68 -0
  775. hydpy/models/meteo_glob_morsim.py +444 -0
  776. hydpy/models/meteo_precip_io.py +76 -0
  777. hydpy/models/meteo_psun_sun_glob_io.py +83 -0
  778. hydpy/models/meteo_sun_fao56.py +188 -0
  779. hydpy/models/meteo_sun_morsim.py +466 -0
  780. hydpy/models/meteo_temp_io.py +76 -0
  781. hydpy/models/musk/__init__.py +15 -0
  782. hydpy/models/musk/musk_control.py +328 -0
  783. hydpy/models/musk/musk_derived.py +32 -0
  784. hydpy/models/musk/musk_factors.py +53 -0
  785. hydpy/models/musk/musk_fluxes.py +24 -0
  786. hydpy/models/musk/musk_inlets.py +11 -0
  787. hydpy/models/musk/musk_masks.py +15 -0
  788. hydpy/models/musk/musk_model.py +838 -0
  789. hydpy/models/musk/musk_outlets.py +11 -0
  790. hydpy/models/musk/musk_sequences.py +88 -0
  791. hydpy/models/musk/musk_solver.py +68 -0
  792. hydpy/models/musk/musk_states.py +64 -0
  793. hydpy/models/musk_classic.py +228 -0
  794. hydpy/models/musk_mct.py +1247 -0
  795. hydpy/models/rconc/__init__.py +12 -0
  796. hydpy/models/rconc/rconc_control.py +473 -0
  797. hydpy/models/rconc/rconc_derived.py +76 -0
  798. hydpy/models/rconc/rconc_fluxes.py +19 -0
  799. hydpy/models/rconc/rconc_logs.py +74 -0
  800. hydpy/models/rconc/rconc_model.py +260 -0
  801. hydpy/models/rconc/rconc_states.py +11 -0
  802. hydpy/models/rconc_nash.py +48 -0
  803. hydpy/models/rconc_uh.py +53 -0
  804. hydpy/models/sw1d/__init__.py +17 -0
  805. hydpy/models/sw1d/sw1d_control.py +356 -0
  806. hydpy/models/sw1d/sw1d_derived.py +85 -0
  807. hydpy/models/sw1d/sw1d_factors.py +78 -0
  808. hydpy/models/sw1d/sw1d_fixed.py +12 -0
  809. hydpy/models/sw1d/sw1d_fluxes.py +55 -0
  810. hydpy/models/sw1d/sw1d_inlets.py +17 -0
  811. hydpy/models/sw1d/sw1d_model.py +3385 -0
  812. hydpy/models/sw1d/sw1d_outlets.py +11 -0
  813. hydpy/models/sw1d/sw1d_receivers.py +11 -0
  814. hydpy/models/sw1d/sw1d_senders.py +11 -0
  815. hydpy/models/sw1d/sw1d_states.py +23 -0
  816. hydpy/models/sw1d_channel.py +2051 -0
  817. hydpy/models/sw1d_gate_out.py +599 -0
  818. hydpy/models/sw1d_lias.py +105 -0
  819. hydpy/models/sw1d_lias_sluice.py +531 -0
  820. hydpy/models/sw1d_network.py +1219 -0
  821. hydpy/models/sw1d_pump.py +448 -0
  822. hydpy/models/sw1d_q_in.py +79 -0
  823. hydpy/models/sw1d_q_out.py +81 -0
  824. hydpy/models/sw1d_storage.py +78 -0
  825. hydpy/models/sw1d_weir_out.py +75 -0
  826. hydpy/models/test/__init__.py +14 -0
  827. hydpy/models/test/test_control.py +28 -0
  828. hydpy/models/test/test_fluxes.py +17 -0
  829. hydpy/models/test/test_model.py +201 -0
  830. hydpy/models/test/test_solver.py +48 -0
  831. hydpy/models/test/test_states.py +17 -0
  832. hydpy/models/test_discontinous.py +46 -0
  833. hydpy/models/test_stiff0d.py +47 -0
  834. hydpy/models/test_stiff1d.py +42 -0
  835. hydpy/models/whmod/__init__.py +21 -0
  836. hydpy/models/whmod/whmod_constants.py +77 -0
  837. hydpy/models/whmod/whmod_control.py +333 -0
  838. hydpy/models/whmod/whmod_derived.py +210 -0
  839. hydpy/models/whmod/whmod_factors.py +9 -0
  840. hydpy/models/whmod/whmod_fluxes.py +105 -0
  841. hydpy/models/whmod/whmod_inputs.py +15 -0
  842. hydpy/models/whmod/whmod_masks.py +178 -0
  843. hydpy/models/whmod/whmod_model.py +2091 -0
  844. hydpy/models/whmod/whmod_parameters.py +155 -0
  845. hydpy/models/whmod/whmod_sequences.py +193 -0
  846. hydpy/models/whmod/whmod_states.py +73 -0
  847. hydpy/models/whmod_rural.py +794 -0
  848. hydpy/models/whmod_urban.py +1011 -0
  849. hydpy/models/wland/__init__.py +43 -0
  850. hydpy/models/wland/wland_aides.py +55 -0
  851. hydpy/models/wland/wland_constants.py +103 -0
  852. hydpy/models/wland/wland_control.py +508 -0
  853. hydpy/models/wland/wland_derived.py +330 -0
  854. hydpy/models/wland/wland_factors.py +11 -0
  855. hydpy/models/wland/wland_fixed.py +12 -0
  856. hydpy/models/wland/wland_fluxes.py +166 -0
  857. hydpy/models/wland/wland_inputs.py +33 -0
  858. hydpy/models/wland/wland_masks.py +54 -0
  859. hydpy/models/wland/wland_model.py +3755 -0
  860. hydpy/models/wland/wland_outlets.py +11 -0
  861. hydpy/models/wland/wland_parameters.py +214 -0
  862. hydpy/models/wland/wland_sequences.py +108 -0
  863. hydpy/models/wland/wland_solver.py +45 -0
  864. hydpy/models/wland/wland_states.py +56 -0
  865. hydpy/models/wland_gd.py +888 -0
  866. hydpy/models/wland_wag.py +1244 -0
  867. hydpy/models/wq/__init__.py +14 -0
  868. hydpy/models/wq/wq_control.py +117 -0
  869. hydpy/models/wq/wq_derived.py +182 -0
  870. hydpy/models/wq/wq_factors.py +79 -0
  871. hydpy/models/wq/wq_fluxes.py +17 -0
  872. hydpy/models/wq/wq_model.py +1889 -0
  873. hydpy/models/wq_trapeze.py +168 -0
  874. hydpy/models/wq_trapeze_strickler.py +101 -0
  875. hydpy/models/wq_walrus.py +57 -0
  876. hydpy/py.typed +0 -0
  877. hydpy/tests/.coveragerc +22 -0
  878. hydpy/tests/__init__.py +0 -0
  879. hydpy/tests/check_consistency.py +32 -0
  880. hydpy/tests/hydpydoctestcustomize.pth +1 -0
  881. hydpy/tests/hydpydoctestcustomize.py +15 -0
  882. hydpy/tests/iotesting/__init__.py +0 -0
  883. hydpy/tests/run_doctests.py +233 -0
  884. hydpy-6.2.dev1.data/scripts/hyd.py +277 -0
  885. hydpy-6.2.dev1.dist-info/LICENSE +165 -0
  886. hydpy-6.2.dev1.dist-info/METADATA +163 -0
  887. hydpy-6.2.dev1.dist-info/RECORD +890 -0
  888. hydpy-6.2.dev1.dist-info/WHEEL +5 -0
  889. hydpy-6.2.dev1.dist-info/licenses_hydpy_installer.txt +42 -0
  890. hydpy-6.2.dev1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,499 @@
1
+ # pylint: disable=line-too-long, unused-wildcard-import
2
+ """
3
+ .. _`LARSIM`: http://www.larsim.de/en/the-model/
4
+
5
+ Conceptionally, |dam_llake| is similar to the "controlled lake" model of `LARSIM`_
6
+ (selectable via the "SEEG" option) in its way to simulate flood retention processes.
7
+ However, in contrast to the "SEEG" option, it can include precipitation, evaporation,
8
+ and a (positive or negative) water exchange into the lake's water balance.
9
+
10
+ One can regard |dam_llake| as controlled in two ways. First, it allows for seasonal
11
+ modifications of the rating curve via parameter |WaterLevel2FloodDischarge|; second, it
12
+ supports restricting the speed of the water level decrease during periods with little
13
+ inflow via parameter |AllowedWaterLevelDrop|.
14
+
15
+ The (optional) inclusion of precipitation and evaporation requires submodels that
16
+ follow the |PrecipModel_V2| and |PETModel_V1| interfaces. The latter must provide
17
+ potential evaporation values. If these reflect, for example, grass reference
18
+ evaporation, they usually show a too-high short-term variability. Therefore, the
19
+ parameter |WeightEvaporation| provides a simple means to damp and delay the given
20
+ potential evaporation values by a simple time weighting approach.
21
+
22
+ The optional water exchange term enables bidirectional coupling of |dam_llake|
23
+ instances and other model objects. Please see the documentation on the exchange model
24
+ |exch_weir_hbv96|, where we demonstrate how to represent a system of two lakes
25
+ connected by a short ditch.
26
+
27
+ Like all models of the |dam.DOCNAME.long| family, |dam_llake| solves its underlying
28
+ continuous ordinary differential equations with an error-adaptive numerical integration
29
+ method. Hence, simulation speed, robustness, and accuracy depend on the configuration
30
+ of the parameters of the model equations and the underlying solver. We discuss these
31
+ topics in more detail in the documentation on the application model |dam_v001|. Before
32
+ the first usage of any |dam.DOCNAME.long| model, you should at least read how to set
33
+ proper smoothing parameter values and how to configure |InterpAlgorithm| objects for
34
+ interpolating the relationships between stage and volume (|WaterVolume2WaterLevel|) and
35
+ between discharge and stage (|WaterLevel2FloodDischarge|).
36
+
37
+ Integration tests
38
+ =================
39
+
40
+ .. how_to_understand_integration_tests::
41
+
42
+ We are going to perform all example calculations over 20 days:
43
+
44
+ >>> from hydpy import Element, Node, pub
45
+ >>> pub.timegrids = "01.01.2000", "21.01.2000", "1d"
46
+
47
+ Now, we prepare a |dam_llake| model instance as usual:
48
+
49
+ >>> from hydpy.models.dam_llake import *
50
+ >>> parameterstep("1d")
51
+
52
+ Next, we embed this model instance into an |Element| connected to one inlet |Node|
53
+ (`inflow`) and one outlet |Node| (`outflow`):
54
+
55
+ >>> inflow = Node("inflow", variable="Q")
56
+ >>> outflow = Node("outflow", variable="Q")
57
+ >>> exchange = Node("exchange", variable="E")
58
+ >>> lake = Element("lake", inlets=(inflow, exchange), outlets=outflow)
59
+ >>> lake.model = model
60
+
61
+ To execute the following examples conveniently, we prepare a test function object and
62
+ change some of its default output settings:
63
+
64
+ >>> from hydpy import IntegrationTest
65
+ >>> test = IntegrationTest(lake)
66
+ >>> test.dateformat = "%d.%m."
67
+ >>> test.plotting_options.axis1 = fluxes.inflow, fluxes.outflow
68
+ >>> test.plotting_options.axis2 = states.watervolume
69
+
70
+ |WaterVolume| is the only state sequence of |dam_llake|. The purpose of the only log
71
+ sequence |LoggedAdjustedEvaporation| is to allow for the mentioned time-weighting of
72
+ the external potential evaporation values. We set the initial values of both sequences
73
+ to zero for each of the following examples:
74
+
75
+ >>> test.inits = [(states.watervolume, 0.0),
76
+ ... (logs.loggedadjustedevaporation, 0.0)]
77
+
78
+ Using method |Model.check_waterbalance| prove that |dam_llake| keeps the water balance
79
+ in each example run requires storing the defined (initial) conditions before performing
80
+ the first simulation run:
81
+
82
+ >>> test.reset_inits()
83
+ >>> conditions = model.conditions
84
+
85
+ |dam_llake| assumes the relationship between |WaterLevel| and |WaterVolume| to be
86
+ constant over time. For simplicity, we define a linear relationship by using |PPoly|:
87
+
88
+ >>> watervolume2waterlevel(PPoly.from_data(xs=[0.0, 1.0], ys=[0.0, 1.0]))
89
+ >>> figure = watervolume2waterlevel.plot(0.0, 1.0)
90
+ >>> from hydpy.core.testtools import save_autofig
91
+ >>> save_autofig("dam_llake_watervolume2waterlevel.png", figure=figure)
92
+
93
+ .. image:: dam_llake_watervolume2waterlevel.png
94
+ :width: 400
95
+
96
+ |dam_llake| uses parameter |WaterLevel2FloodDischarge| (which extends parameter
97
+ |SeasonalInterpolator|) to allow for annual changes in the relationship between
98
+ |FloodDischarge| and |WaterLevel|. Please read the documentation on class
99
+ |SeasonalInterpolator| on how to model seasonal patterns. Here, we keep things as
100
+ simple as possible and define a single linear relationship that applies for the whole
101
+ year:
102
+
103
+ >>> waterlevel2flooddischarge(PPoly.from_data(xs=[0.0, 1.0], ys=[0.0, 10.0]))
104
+ >>> figure = waterlevel2flooddischarge.plot(0.0, 1.0)
105
+ >>> figure = save_autofig("dam_llake_waterlevel2flooddischarge.png", figure=figure)
106
+
107
+ .. image:: dam_llake_waterlevel2flooddischarge.png
108
+ :width: 400
109
+
110
+ The following group of parameters deal with lake precipitation and evaporation. Note
111
+ that, despite |dam_llake|'s ability to calculate the water-level dependent surface area
112
+ (see aide sequence |dam_aides.SurfaceArea|), it always assumes a fixed surface area
113
+ (defined by control parameter |dam_control.SurfaceArea|) for converting precipitation
114
+ and evaporation heights into volumes. Here, we set this fixed surface area to
115
+ 1.44 km²:
116
+
117
+ >>> surfacearea(1.44)
118
+
119
+ We set the correction factors for precipitation and evaporation to 1.2:
120
+
121
+ >>> correctionprecipitation(1.2)
122
+ >>> correctionevaporation(1.2)
123
+
124
+ Given the daily simulation time step, we configure moderate damping and delay of the
125
+ external evaporation values (0.8 is relatively close to 1.0, which would avoid any
126
+ delay and damping, while 0.0 would result in a complete loss of variability):
127
+
128
+ >>> weightevaporation(0.8)
129
+
130
+ |dam_llake| uses the parameter |ThresholdEvaporation| to define the water level around
131
+ which actual evaporation switches from zero to potential evaporation. As usual but not
132
+ mandatory, we set this threshold to 0 m:
133
+
134
+ >>> thresholdevaporation(0.0)
135
+
136
+ Additionally, we set the values of the related smoothing parameters
137
+ |DischargeTolerance| and |ToleranceEvaporation| to 0.1 m³/s and 1 mm (these are values
138
+ we can recommend for many cases -- see the documentation on application model
139
+ |dam_v001| on how to fine-tune such smoothing parameters to your needs):
140
+
141
+ >>> dischargetolerance(0.1)
142
+ >>> toleranceevaporation(0.001)
143
+
144
+ Finally, we define a precipitation series including only a heavy one-day rainfall event
145
+ and a corresponding inflowing flood wave, starting and ending with zero discharge:
146
+
147
+ >>> with model.add_precipmodel_v2("meteo_precip_io") as precipmodel:
148
+ ... precipitationfactor(1.0)
149
+ >>> precipmodel.prepare_inputseries()
150
+ >>> precipmodel.sequences.inputs.precipitation.series = [
151
+ ... 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
152
+ ... 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
153
+ >>> lake.inlets.inflow.sequences.sim.series = [
154
+ ... 0.0, 0.0, 6.0, 12.0, 10.0, 6.0, 3.0, 2.0, 1.0, 0.0,
155
+ ... 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
156
+
157
+ .. _dam_llake_base_scenario:
158
+
159
+ base scenario
160
+ _____________
161
+
162
+ For our first example, we set the allowed water level drop to |numpy.inf|, neglect
163
+ potential evaporation, and set the exchange values to zero to ensure they do not affect
164
+ the calculated lake outflow:
165
+
166
+ >>> allowedwaterleveldrop(inf)
167
+ >>> exchange.sequences.sim.series = 0.0
168
+
169
+ The only purpose of parameter |CatchmentArea| is to automatically determine reasonable
170
+ default values for the parameter |AbsErrorMax|, controlling the accuracy of the
171
+ numerical integration process:
172
+
173
+ >>> catchmentarea(86.4)
174
+ >>> from hydpy import round_
175
+ >>> round_(solver.abserrormax.INIT)
176
+ 0.0001
177
+ >>> parameters.update()
178
+ >>> solver.abserrormax
179
+ abserrormax(0.0001)
180
+
181
+ The following test results show the expected storage retention pattern. The sums of
182
+ inflow and outflow are nearly identical, and the maximum of the outflow graph
183
+ intersects with the falling limb of the inflow graph:
184
+
185
+ .. integration-test::
186
+
187
+ >>> test("dam_llake_base_scenario")
188
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | exchange | flooddischarge | outflow | watervolume | exchange | inflow | outflow |
189
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
190
+ | 01.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
191
+ | 02.01. | 0.057853 | 50.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3304 | 0.3304 | 0.057853 | 0.0 | 0.0 | 0.3304 |
192
+ | 03.01. | 0.3715 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.0 | 0.0 | 2.369831 | 2.369831 | 0.3715 | 0.0 | 6.0 | 2.369831 |
193
+ | 04.01. | 0.85081 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 12.0 | 0.0 | 6.452432 | 6.452432 | 0.85081 | 0.0 | 12.0 | 6.452432 |
194
+ | 05.01. | 0.93712 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 10.0 | 0.0 | 9.001037 | 9.001037 | 0.93712 | 0.0 | 10.0 | 9.001037 |
195
+ | 06.01. | 0.742087 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.0 | 0.0 | 8.257327 | 8.257327 | 0.742087 | 0.0 | 6.0 | 8.257327 |
196
+ | 07.01. | 0.486328 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.0 | 0.0 | 5.960176 | 5.960176 | 0.486328 | 0.0 | 3.0 | 5.960176 |
197
+ | 08.01. | 0.32068 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 0.0 | 3.917227 | 3.917227 | 0.32068 | 0.0 | 2.0 | 3.917227 |
198
+ | 09.01. | 0.193011 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 2.477651 | 2.477651 | 0.193011 | 0.0 | 1.0 | 2.477651 |
199
+ | 10.01. | 0.081349 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.292382 | 1.292382 | 0.081349 | 0.0 | 0.0 | 1.292382 |
200
+ | 11.01. | 0.034286 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.544712 | 0.544712 | 0.034286 | 0.0 | 0.0 | 0.544712 |
201
+ | 12.01. | 0.01445 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.229577 | 0.229577 | 0.01445 | 0.0 | 0.0 | 0.229577 |
202
+ | 13.01. | 0.006091 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.096747 | 0.096747 | 0.006091 | 0.0 | 0.0 | 0.096747 |
203
+ | 14.01. | 0.002568 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.040782 | 0.040782 | 0.002568 | 0.0 | 0.0 | 0.040782 |
204
+ | 15.01. | 0.001082 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.017191 | 0.017191 | 0.001082 | 0.0 | 0.0 | 0.017191 |
205
+ | 16.01. | 0.000456 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.007254 | 0.007254 | 0.000456 | 0.0 | 0.0 | 0.007254 |
206
+ | 17.01. | 0.000192 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.003054 | 0.003054 | 0.000192 | 0.0 | 0.0 | 0.003054 |
207
+ | 18.01. | 0.000082 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.001277 | 0.001277 | 0.000082 | 0.0 | 0.0 | 0.001277 |
208
+ | 19.01. | 0.000035 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.000542 | 0.000542 | 0.000035 | 0.0 | 0.0 | 0.000542 |
209
+ | 20.01. | 0.000014 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.00024 | 0.00024 | 0.000014 | 0.0 | 0.0 | 0.00024 |
210
+
211
+ |dam_llake| achieves this sufficiently high accuracy with 174 calls to its underlying
212
+ system of differential equations, which averages to less than nine calls per day:
213
+
214
+ >>> model.numvars.nmb_calls
215
+ 426
216
+
217
+ There is no indication of an error in the water balance:
218
+
219
+ >>> from hydpy import round_
220
+ >>> round_(model.check_waterbalance(conditions))
221
+ 0.0
222
+
223
+ .. _dam_llake_low_accuracy:
224
+
225
+ low accuracy
226
+ ____________
227
+
228
+ By increasing the numerical tolerance, e.g. setting |AbsErrorMax| to 0.1 m³/s, we gain
229
+ some additional speedups without relevant deteriorations of the results (|dam_llake|
230
+ usually achieves higher accuracies than indicated by the actual tolerance value):
231
+
232
+ .. integration-test::
233
+
234
+ >>> model.numvars.nmb_calls = 0
235
+ >>> solver.abserrormax(0.1)
236
+ >>> test("dam_llake_low_accuracy")
237
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | exchange | flooddischarge | outflow | watervolume | exchange | inflow | outflow |
238
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
239
+ | 01.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
240
+ | 02.01. | 0.057503 | 50.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.334458 | 0.334458 | 0.057503 | 0.0 | 0.0 | 0.334458 |
241
+ | 03.01. | 0.371631 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.0 | 0.0 | 2.36426 | 2.36426 | 0.371631 | 0.0 | 6.0 | 2.36426 |
242
+ | 04.01. | 0.85129 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 12.0 | 0.0 | 6.448386 | 6.448386 | 0.85129 | 0.0 | 12.0 | 6.448386 |
243
+ | 05.01. | 0.936803 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 10.0 | 0.0 | 9.010274 | 9.010274 | 0.936803 | 0.0 | 10.0 | 9.010274 |
244
+ | 06.01. | 0.743132 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.0 | 0.0 | 8.241563 | 8.241563 | 0.743132 | 0.0 | 6.0 | 8.241563 |
245
+ | 07.01. | 0.48654 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.0 | 0.0 | 5.969805 | 5.969805 | 0.48654 | 0.0 | 3.0 | 5.969805 |
246
+ | 08.01. | 0.321772 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 0.0 | 3.907047 | 3.907047 | 0.321772 | 0.0 | 2.0 | 3.907047 |
247
+ | 09.01. | 0.194247 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 2.475983 | 2.475983 | 0.194247 | 0.0 | 1.0 | 2.475983 |
248
+ | 10.01. | 0.082549 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.292793 | 1.292793 | 0.082549 | 0.0 | 0.0 | 1.292793 |
249
+ | 11.01. | 0.035081 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.5494 | 0.5494 | 0.035081 | 0.0 | 0.0 | 0.5494 |
250
+ | 12.01. | 0.014094 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.242907 | 0.242907 | 0.014094 | 0.0 | 0.0 | 0.242907 |
251
+ | 13.01. | 0.007177 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.080053 | 0.080053 | 0.007177 | 0.0 | 0.0 | 0.080053 |
252
+ | 14.01. | 0.003655 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.040767 | 0.040767 | 0.003655 | 0.0 | 0.0 | 0.040767 |
253
+ | 15.01. | 0.001861 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.020761 | 0.020761 | 0.001861 | 0.0 | 0.0 | 0.020761 |
254
+ | 16.01. | 0.000948 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.010572 | 0.010572 | 0.000948 | 0.0 | 0.0 | 0.010572 |
255
+ | 17.01. | 0.000483 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.005384 | 0.005384 | 0.000483 | 0.0 | 0.0 | 0.005384 |
256
+ | 18.01. | 0.000246 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.002742 | 0.002742 | 0.000246 | 0.0 | 0.0 | 0.002742 |
257
+ | 19.01. | 0.000125 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.001396 | 0.001396 | 0.000125 | 0.0 | 0.0 | 0.001396 |
258
+ | 20.01. | 0.000064 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.000711 | 0.000711 | 0.000064 | 0.0 | 0.0 | 0.000711 |
259
+
260
+ >>> model.numvars.nmb_calls
261
+ 104
262
+
263
+ There is no indication of an error in the water balance:
264
+
265
+ >>> round_(model.check_waterbalance(conditions))
266
+ 0.0
267
+
268
+ .. _dam_llake_water_level_drop:
269
+
270
+ water level drop
271
+ ________________
272
+
273
+ When setting |AllowedWaterLevelDrop| to 0.1 m/d, the resulting outflow hydrograph shows
274
+ a plateau in its falling limb. This plateau coincides with little inflow but still
275
+ high potential outflow (|FloodDischarge|) due to large amounts of stored water. In
276
+ agreement with the linear relationship between the water volume and the water level,
277
+ there is a constant decrease in the water volume when the allowed "water level drop"
278
+ limits the outflow:
279
+
280
+ .. integration-test::
281
+
282
+ >>> allowedwaterleveldrop(0.1)
283
+ >>> solver.abserrormax(0.01)
284
+ >>> test("dam_llake_water_level_drop")
285
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | exchange | flooddischarge | outflow | watervolume | exchange | inflow | outflow |
286
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
287
+ | 01.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
288
+ | 02.01. | 0.057904 | 50.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.329814 | 0.329814 | 0.057904 | 0.0 | 0.0 | 0.329814 |
289
+ | 03.01. | 0.371486 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.0 | 0.0 | 2.370574 | 2.370574 | 0.371486 | 0.0 | 6.0 | 2.370574 |
290
+ | 04.01. | 0.850751 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 12.0 | 0.0 | 6.452959 | 6.452959 | 0.850751 | 0.0 | 12.0 | 6.452959 |
291
+ | 05.01. | 0.937172 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 10.0 | 0.0 | 8.999753 | 8.999753 | 0.937172 | 0.0 | 10.0 | 8.999753 |
292
+ | 06.01. | 0.837314 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.0 | 0.0 | 8.87243 | 7.155768 | 0.837314 | 0.0 | 6.0 | 7.155768 |
293
+ | 07.01. | 0.737455 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.0 | 0.0 | 7.873846 | 4.155768 | 0.737455 | 0.0 | 3.0 | 4.155768 |
294
+ | 08.01. | 0.637597 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 0.0 | 6.875262 | 3.155768 | 0.637597 | 0.0 | 2.0 | 3.155768 |
295
+ | 09.01. | 0.537739 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 5.876679 | 2.155768 | 0.537739 | 0.0 | 1.0 | 2.155768 |
296
+ | 10.01. | 0.43788 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.878095 | 1.155768 | 0.43788 | 0.0 | 0.0 | 1.155768 |
297
+ | 11.01. | 0.338022 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.879512 | 1.155768 | 0.338022 | 0.0 | 0.0 | 1.155768 |
298
+ | 12.01. | 0.238164 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.880928 | 1.155768 | 0.238164 | 0.0 | 0.0 | 1.155768 |
299
+ | 13.01. | 0.138316 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.882449 | 1.155647 | 0.138316 | 0.0 | 0.0 | 1.155647 |
300
+ | 14.01. | 0.059782 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.940746 | 0.908959 | 0.059782 | 0.0 | 0.0 | 0.908959 |
301
+ | 15.01. | 0.025166 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.400649 | 0.400648 | 0.025166 | 0.0 | 0.0 | 0.400648 |
302
+ | 16.01. | 0.010695 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.167488 | 0.167488 | 0.010695 | 0.0 | 0.0 | 0.167488 |
303
+ | 17.01. | 0.004545 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.071178 | 0.071178 | 0.004545 | 0.0 | 0.0 | 0.071178 |
304
+ | 18.01. | 0.001826 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.03147 | 0.03147 | 0.001826 | 0.0 | 0.0 | 0.03147 |
305
+ | 19.01. | 0.00093 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.010371 | 0.010371 | 0.00093 | 0.0 | 0.0 | 0.010371 |
306
+ | 20.01. | 0.000474 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.005282 | 0.005282 | 0.000474 | 0.0 | 0.0 | 0.005282 |
307
+
308
+ There is no indication of an error in the water balance:
309
+
310
+ >>> round_(model.check_waterbalance(conditions))
311
+ 0.0
312
+
313
+ .. _dam_llake_evaporation:
314
+
315
+ evaporation
316
+ ___________
317
+
318
+ In this example, we add an |evap_ret_io| submodel and set its (unadjusted) potential
319
+ evaporation to 1 mm/d for the first ten days and 5 mm/d for the last ten days. The
320
+ adjusted evaporation follows the given potential evaporation with a short delay. When
321
+ the water volume reaches zero, actual evaporation is nearly zero, but due to the
322
+ defined smoothing, it is not precisely zero. Hence, slightly negative water volumes
323
+ result (which do not cause negative outflow):
324
+
325
+ .. integration-test::
326
+
327
+ >>> with model.add_pemodel_v1("evap_ret_io") as pemodel:
328
+ ... evapotranspirationfactor(1.0)
329
+ >>> pemodel.prepare_inputseries()
330
+ >>> pemodel.sequences.inputs.referenceevapotranspiration.series = 10 * [1.0] + 10 * [5.0]
331
+ >>> test("dam_llake_evaporation")
332
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | exchange | flooddischarge | outflow | watervolume | exchange | inflow | outflow |
333
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
334
+ | 01.01. | -0.000373 | 0.0 | 0.0 | 1.0 | 0.016 | 0.004321 | 0.0 | 0.0 | -0.003456 | 0.0 | -0.000373 | 0.0 | 0.0 | 0.0 |
335
+ | 02.01. | 0.056654 | 50.0 | 1.0 | 1.0 | 0.0192 | 0.018386 | 0.0 | 0.0 | 0.321392 | 0.321579 | 0.056654 | 0.0 | 0.0 | 0.321579 |
336
+ | 03.01. | 0.369812 | 0.0 | 0.0 | 1.0 | 0.01984 | 0.01984 | 6.0 | 0.0 | 2.355646 | 2.355646 | 0.369812 | 0.0 | 6.0 | 2.355646 |
337
+ | 04.01. | 0.84889 | 0.0 | 0.0 | 1.0 | 0.019968 | 0.019968 | 12.0 | 0.0 | 6.435147 | 6.435147 | 0.84889 | 0.0 | 12.0 | 6.435147 |
338
+ | 05.01. | 0.935231 | 0.0 | 0.0 | 1.0 | 0.019994 | 0.019994 | 10.0 | 0.0 | 8.980686 | 8.980686 | 0.935231 | 0.0 | 10.0 | 8.980686 |
339
+ | 06.01. | 0.835373 | 0.0 | 0.0 | 1.0 | 0.019999 | 0.019999 | 6.0 | 0.0 | 8.853018 | 7.135769 | 0.835373 | 0.0 | 6.0 | 7.135769 |
340
+ | 07.01. | 0.735514 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 3.0 | 0.0 | 7.854435 | 4.135768 | 0.735514 | 0.0 | 3.0 | 4.135768 |
341
+ | 08.01. | 0.635656 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 2.0 | 0.0 | 6.855851 | 3.135768 | 0.635656 | 0.0 | 2.0 | 3.135768 |
342
+ | 09.01. | 0.535798 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 1.0 | 0.0 | 5.857267 | 2.135768 | 0.535798 | 0.0 | 1.0 | 2.135768 |
343
+ | 10.01. | 0.435939 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 0.0 | 0.0 | 4.858684 | 1.135768 | 0.435939 | 0.0 | 0.0 | 1.135768 |
344
+ | 11.01. | 0.336081 | 0.0 | 0.0 | 5.0 | 0.084 | 0.084 | 0.0 | 0.0 | 3.8601 | 1.071768 | 0.336081 | 0.0 | 0.0 | 1.071768 |
345
+ | 12.01. | 0.236222 | 0.0 | 0.0 | 5.0 | 0.0968 | 0.0968 | 0.0 | 0.0 | 2.861517 | 1.058968 | 0.236222 | 0.0 | 0.0 | 1.058968 |
346
+ | 13.01. | 0.136367 | 0.0 | 0.0 | 5.0 | 0.09936 | 0.09936 | 0.0 | 0.0 | 1.862958 | 1.056379 | 0.136367 | 0.0 | 0.0 | 1.056379 |
347
+ | 14.01. | 0.05408 | 0.0 | 0.0 | 5.0 | 0.099872 | 0.099872 | 0.0 | 0.0 | 0.906509 | 0.852516 | 0.05408 | 0.0 | 0.0 | 0.852516 |
348
+ | 15.01. | 0.016936 | 0.0 | 0.0 | 5.0 | 0.099974 | 0.099974 | 0.0 | 0.0 | 0.329933 | 0.329932 | 0.016936 | 0.0 | 0.0 | 0.329932 |
349
+ | 16.01. | 0.001323 | 0.0 | 0.0 | 5.0 | 0.099995 | 0.099992 | 0.0 | 0.0 | 0.080723 | 0.080723 | 0.001323 | 0.0 | 0.0 | 0.080723 |
350
+ | 17.01. | -0.000756 | 0.0 | 0.0 | 5.0 | 0.099999 | 0.022768 | 0.0 | 0.0 | -0.004582 | 0.001295 | -0.000756 | 0.0 | 0.0 | 0.001295 |
351
+ | 18.01. | -0.000926 | 0.0 | 0.0 | 5.0 | 0.1 | 0.001966 | 0.0 | 0.0 | -0.00886 | 0.0 | -0.000926 | 0.0 | 0.0 | 0.0 |
352
+ | 19.01. | -0.001022 | 0.0 | 0.0 | 5.0 | 0.1 | 0.001102 | 0.0 | 0.0 | -0.009866 | 0.0 | -0.001022 | 0.0 | 0.0 | 0.0 |
353
+ | 20.01. | -0.001088 | 0.0 | 0.0 | 5.0 | 0.1 | 0.000771 | 0.0 | 0.0 | -0.010607 | 0.0 | -0.001088 | 0.0 | 0.0 | 0.0 |
354
+
355
+ There is no indication of an error in the water balance:
356
+
357
+ >>> round_(model.check_waterbalance(conditions))
358
+ 0.0
359
+
360
+ .. _dam_llake_exchange:
361
+
362
+ exchange
363
+ ________
364
+
365
+ The water exchange functionality of |dam_llake| is optional insofar as one does not
366
+ need to connect the inlet sequence |E| to any nodes. If there is a connection to one
367
+ or multiple nodes, they can add and subtract water, indicated by positive or negative
368
+ values. This mechanism allows bidirectional water exchange between different
369
+ |dam_llake| (see the documentation |exch_weir_hbv96| for further information).
370
+
371
+ |dam_llake| handles the water exchange strictly as input, meaning it always includes it
372
+ in its water balance without any modification. Hence, other models calculating the
373
+ water exchange must ensure that it does not bring |dam_llake| into an unrealistic
374
+ state. For demonstration, we set the water exchange to 0.5 m³/s in the first half of
375
+ the simulation period and -0.5 m³/s in the second half, which causes highly negative
376
+ water volumes at the end of the simulation period:
377
+
378
+ .. integration-test::
379
+
380
+ >>> exchange.sequences.sim.series = 10 * [0.5] + 10 * [-0.5]
381
+ >>> test("dam_llake_exchange")
382
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | exchange | flooddischarge | outflow | watervolume | exchange | inflow | outflow |
383
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
384
+ | 01.01. | 0.028037 | 0.0 | 0.0 | 1.0 | 0.016 | 0.0156 | 0.0 | 0.5 | 0.159893 | 0.159893 | 0.028037 | 0.5 | 0.0 | 0.159893 |
385
+ | 02.01. | 0.097547 | 50.0 | 1.0 | 1.0 | 0.0192 | 0.0192 | 0.0 | 0.5 | 0.676291 | 0.676291 | 0.097547 | 0.5 | 0.0 | 0.676291 |
386
+ | 03.01. | 0.415973 | 0.0 | 0.0 | 1.0 | 0.01984 | 0.01984 | 6.0 | 0.5 | 2.794675 | 2.794675 | 0.415973 | 0.5 | 6.0 | 2.794675 |
387
+ | 04.01. | 0.897272 | 0.0 | 0.0 | 1.0 | 0.019968 | 0.019968 | 12.0 | 0.5 | 6.909446 | 6.909446 | 0.897272 | 0.5 | 12.0 | 6.909446 |
388
+ | 05.01. | 0.98455 | 0.0 | 0.0 | 1.0 | 0.019994 | 0.019994 | 10.0 | 0.5 | 9.469841 | 9.469841 | 0.98455 | 0.5 | 10.0 | 9.469841 |
389
+ | 06.01. | 0.884691 | 0.0 | 0.0 | 1.0 | 0.019999 | 0.019999 | 6.0 | 0.5 | 9.346206 | 7.635769 | 0.884691 | 0.5 | 6.0 | 7.635769 |
390
+ | 07.01. | 0.784833 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 3.0 | 0.5 | 8.347623 | 4.635768 | 0.784833 | 0.5 | 3.0 | 4.635768 |
391
+ | 08.01. | 0.684975 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 2.0 | 0.5 | 7.349039 | 3.635768 | 0.684975 | 0.5 | 2.0 | 3.635768 |
392
+ | 09.01. | 0.585116 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 1.0 | 0.5 | 6.350455 | 2.635768 | 0.585116 | 0.5 | 1.0 | 2.635768 |
393
+ | 10.01. | 0.485258 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 0.0 | 0.5 | 5.351872 | 1.635768 | 0.485258 | 0.5 | 0.0 | 1.635768 |
394
+ | 11.01. | 0.3854 | 0.0 | 0.0 | 5.0 | 0.084 | 0.084 | 0.0 | -0.5 | 4.353288 | 0.571768 | 0.3854 | -0.5 | 0.0 | 0.571768 |
395
+ | 12.01. | 0.285541 | 0.0 | 0.0 | 5.0 | 0.0968 | 0.0968 | 0.0 | -0.5 | 3.354705 | 0.558968 | 0.285541 | -0.5 | 0.0 | 0.558968 |
396
+ | 13.01. | 0.185683 | 0.0 | 0.0 | 5.0 | 0.09936 | 0.09936 | 0.0 | -0.5 | 2.356121 | 0.556408 | 0.185683 | -0.5 | 0.0 | 0.556408 |
397
+ | 14.01. | 0.085827 | 0.0 | 0.0 | 5.0 | 0.099872 | 0.099872 | 0.0 | -0.5 | 1.357564 | 0.555865 | 0.085827 | -0.5 | 0.0 | 0.555865 |
398
+ | 15.01. | 0.003815 | 0.0 | 0.0 | 5.0 | 0.099974 | 0.099974 | 0.0 | -0.5 | 0.401743 | 0.349246 | 0.003815 | -0.5 | 0.0 | 0.349246 |
399
+ | 16.01. | -0.039982 | 0.0 | 0.0 | 5.0 | 0.099995 | 0.005 | 0.0 | -0.5 | -0.1878 | 0.001907 | -0.039982 | -0.5 | 0.0 | 0.001907 |
400
+ | 17.01. | -0.083182 | 0.0 | 0.0 | 5.0 | 0.099999 | 0.0 | 0.0 | -0.5 | -0.615821 | 0.0 | -0.083182 | -0.5 | 0.0 | 0.0 |
401
+ | 18.01. | -0.126382 | 0.0 | 0.0 | 5.0 | 0.1 | 0.0 | 0.0 | -0.5 | -1.047821 | 0.0 | -0.126382 | -0.5 | 0.0 | 0.0 |
402
+ | 19.01. | -0.169582 | 0.0 | 0.0 | 5.0 | 0.1 | 0.0 | 0.0 | -0.5 | -1.479821 | 0.0 | -0.169582 | -0.5 | 0.0 | 0.0 |
403
+ | 20.01. | -0.212782 | 0.0 | 0.0 | 5.0 | 0.1 | 0.0 | 0.0 | -0.5 | -1.911821 | 0.0 | -0.212782 | -0.5 | 0.0 | 0.0 |
404
+
405
+ >>> round_(model.check_waterbalance(conditions))
406
+ 0.0
407
+ """
408
+ # import...
409
+ # ...from HydPy
410
+ import hydpy
411
+ from hydpy.auxs.anntools import ANN # pylint: disable=unused-import
412
+ from hydpy.auxs.ppolytools import Poly, PPoly # pylint: disable=unused-import
413
+ from hydpy.core import modeltools
414
+ from hydpy.core.typingtools import *
415
+ from hydpy.interfaces import petinterfaces
416
+ from hydpy.interfaces import precipinterfaces
417
+ from hydpy.exe.modelimports import *
418
+
419
+ # ...from dam
420
+ from hydpy.models.dam import dam_model
421
+ from hydpy.models.dam import dam_solver
422
+
423
+
424
+ class Model(dam_model.Main_PrecipModel_V2, dam_model.Main_PEModel_V1):
425
+ """|dam_llake.DOCNAME.complete|."""
426
+
427
+ DOCNAME = modeltools.DocName(
428
+ short="Dam-L-Lake", description="controlled lake model adopted from LARSIM"
429
+ )
430
+ __HYDPY_ROOTMODEL__ = True
431
+
432
+ SOLVERPARAMETERS = (
433
+ dam_solver.AbsErrorMax,
434
+ dam_solver.RelErrorMax,
435
+ dam_solver.RelDTMin,
436
+ dam_solver.RelDTMax,
437
+ )
438
+ SOLVERSEQUENCES = ()
439
+ INLET_METHODS = (
440
+ dam_model.Calc_Precipitation_V1,
441
+ dam_model.Calc_PotentialEvaporation_V1,
442
+ dam_model.Calc_AdjustedEvaporation_V1,
443
+ )
444
+ RECEIVER_METHODS = ()
445
+ ADD_METHODS = (dam_model.Fix_Min1_V1,)
446
+ PART_ODE_METHODS = (
447
+ dam_model.Calc_AdjustedPrecipitation_V1,
448
+ dam_model.Pic_Inflow_V1,
449
+ dam_model.Pic_Exchange_V1,
450
+ dam_model.Calc_WaterLevel_V1,
451
+ dam_model.Calc_ActualEvaporation_V1,
452
+ dam_model.Calc_SurfaceArea_V1,
453
+ dam_model.Calc_FloodDischarge_V1,
454
+ dam_model.Calc_AllowedDischarge_V1,
455
+ dam_model.Calc_Outflow_V2,
456
+ )
457
+ FULL_ODE_METHODS = (dam_model.Update_WaterVolume_V4,)
458
+ OUTLET_METHODS = (dam_model.Calc_WaterLevel_V1, dam_model.Pass_Outflow_V1)
459
+ SENDER_METHODS = ()
460
+ SUBMODELINTERFACES = (precipinterfaces.PrecipModel_V2, petinterfaces.PETModel_V1)
461
+ SUBMODELS = ()
462
+
463
+ precipmodel = modeltools.SubmodelProperty(
464
+ precipinterfaces.PrecipModel_V2, optional=True
465
+ )
466
+ pemodel = modeltools.SubmodelProperty(petinterfaces.PETModel_V1, optional=True)
467
+
468
+ def check_waterbalance(self, initial_conditions: ConditionsModel) -> float:
469
+ r"""Determine the water balance error of the previous simulation run in million
470
+ m³.
471
+
472
+ Method |Model.check_waterbalance| calculates the balance error as follows:
473
+
474
+ :math:`Seconds \cdot 10^{-6} \cdot \sum_{t=t0}^{t1}
475
+ \big( AdjustedPrecipitation_t - ActualEvaporation_t +
476
+ Inflow_t - Outflow_t + Exchange_t \big)
477
+ + \big( WaterVolume_{t0}^k - WaterVolume_{t1}^k \big)`
478
+
479
+ The returned error should always be in scale with numerical precision so
480
+ that it does not affect the simulation results in any relevant manner.
481
+
482
+ Pick the required initial conditions before starting the simulation run via
483
+ property |Sequences.conditions|. See the integration tests of the application
484
+ model |dam_llake| for some examples.
485
+ """
486
+ fluxes = self.sequences.fluxes
487
+ first = initial_conditions["model"]["states"]
488
+ last = self.sequences.states
489
+ return (hydpy.pub.timegrids.stepsize.seconds / 1e6) * (
490
+ sum(fluxes.adjustedprecipitation.series)
491
+ - sum(fluxes.actualevaporation.series)
492
+ + sum(fluxes.inflow.series)
493
+ - sum(fluxes.outflow.series)
494
+ + sum(fluxes.exchange.series)
495
+ ) - (last.watervolume - first["watervolume"])
496
+
497
+
498
+ tester = Tester()
499
+ cythonizer = Cythonizer()