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,1127 @@
1
+ # pylint: disable=line-too-long, unused-wildcard-import
2
+ """
3
+ |dam_v001| is supposed to represent a dam with an "active" low water control scheme and
4
+ a "passive" high water control scheme.
5
+
6
+ During low flow conditions, |dam_v001| tries to increase low runoff values immediately
7
+ downstream the of dam and at a more remote location in the downstream river channel.
8
+ The latter requires that |dam_v001| receives information from downstream via a
9
+ "receiver node". To achieve reliable drought control, |dam_v001| stores some low-flow
10
+ related information for several simulation steps.
11
+
12
+ During high flow conditions, |dam_v001| is controlled by two relationships: one between
13
+ water volume and water level, and the other between discharge and water level. While
14
+ the first one is stationary, the second one can vary seasonally. In both cases, one
15
+ defines these relationships via interpolators. See the documentation on the classes
16
+ |PPoly| and |ANN|, which explains how to configure stepwise linear, spline, or neural
17
+ network-based interpolations.
18
+
19
+ |dam_v001| solves its differential equation with an adaptive Runge-Kutta method that
20
+ only works well on continuous equations. Hence, we defined most threshold-based
21
+ low-flow equations in a "smoothable" manner. However, defining realistic and
22
+ computationally efficient configurations of the related smoothing parameters requires
23
+ some experience. Therefore, it seems advisable to investigate the functioning of each
24
+ new model parameterisation on several synthetic or measured drought events.
25
+
26
+ The applied solver is an explicit Runge-Kutta method unsuitable for stiff initial value
27
+ problems. Its adaptive order and stepsize control prevent inaccurate results caused by
28
+ stability issues. But for very responsive dams, increased computation times are
29
+ possible. We come back to this point at the end of this section.
30
+
31
+ By default, |dam_v001| neither takes precipitation nor evaporation into account, but
32
+ you can add submodels that comply with the |PrecipModel_V2| or |PETModel_V1| interface
33
+ that supply this information.
34
+
35
+ Integration tests
36
+ =================
37
+
38
+ .. how_to_understand_integration_tests::
39
+
40
+ We perform all of the following examples over 20 days:
41
+
42
+ >>> from hydpy import pub
43
+ >>> pub.timegrids = "01.01.2000", "21.01.2000", "1d"
44
+
45
+ The first examples demonstrate how |dam_v001| reduces drought events at a cross-section
46
+ far downstream under different configurations. In real cases, this requires taking the
47
+ travel time of the released water into account. Therefore, we will use the
48
+ |arma_rimorido| application model to route the dam's outflow to the cross-section under
49
+ investigation. Furthermore, we add some "natural" discharge to the cross-section,
50
+ reflecting the influence of the subcatchment between the dam and the cross-section.
51
+
52
+ We define four |Node| objects:
53
+
54
+ * Node 'inflow' passes the inflow into the dam.
55
+ * Node 'natural' handles the subcatchment's additional discharge.
56
+ * Node 'outflow' receives the dam's (unmodified) outflow.
57
+ * Node 'remote' receives the dam's routed outflow and the subcatchment's additional
58
+ discharge.
59
+
60
+ >>> from hydpy import Node
61
+ >>> inflow = Node("inflow")
62
+ >>> outflow = Node("outflow")
63
+ >>> natural = Node("natural")
64
+ >>> remote = Node("remote")
65
+
66
+ We use these nodes to connect the following three elements:
67
+
68
+ * Element `dam` handles the tested |dam_v001| model instance.
69
+ * Element `stream1` uses one |arma_rimorido| model instance to route the dam's outflow
70
+ with significant delay.
71
+ * Element `stream2` uses another |arma_rimorido| model instance to pass the
72
+ subcatchment's additional discharge without delay.
73
+
74
+ >>> from hydpy import Element
75
+ >>> dam = Element("dam", inlets=inflow, outlets=outflow, receivers=remote)
76
+ >>> stream1 = Element("stream1", inlets=outflow, outlets=remote)
77
+ >>> stream2 = Element("stream2", inlets=natural, outlets=remote)
78
+
79
+ Next, we prepare the three model instances. We begin with the `stream2` model.
80
+ Setting the |arma_control.Responses| parameter in the following manner defines a pure
81
+ Moving Average model that neither results in translation nor retention:
82
+
83
+ >>> from hydpy import prepare_model
84
+ >>> stream2.model = prepare_model("arma_rimorido")
85
+ >>> stream2.model.parameters.control.responses(((), (1.0,)))
86
+ >>> stream2.model.parameters.update()
87
+
88
+ `stream2` also works like a pure Moving Average model but causes a time delay of
89
+ 1.8 days:
90
+
91
+ >>> stream1.model = prepare_model("arma_rimorido")
92
+ >>> stream1.model.parameters.control.responses(((), (0.2, 0.4, 0.3, 0.1)))
93
+ >>> stream1.model.parameters.update()
94
+
95
+ Last but not least, we initialise the |dam_v001| instance and hand it to its element
96
+ (we will define distinct parameter sets for the examples below):
97
+
98
+ >>> from hydpy.models.dam_v001 import *
99
+ >>> parameterstep("1d")
100
+ >>> dam.model = model
101
+
102
+ The |IntegrationTest| object `test` serves to execute the following examples
103
+ conveniently:
104
+
105
+ >>> from hydpy import IntegrationTest
106
+ >>> test = IntegrationTest(dam)
107
+ >>> test.inits=((states.watervolume, 0.0),
108
+ ... (logs.loggedadjustedevaporation, 0.0),
109
+ ... (logs.loggedtotalremotedischarge, 1.9),
110
+ ... (logs.loggedoutflow, 0.0),
111
+ ... (stream1.model.sequences.logs.login, 0.0))
112
+ >>> test.dateformat = "%d.%m."
113
+ >>> test.plotting_options.axis1 = fluxes.inflow, fluxes.outflow
114
+ >>> test.plotting_options.axis2 = states.watervolume
115
+
116
+
117
+ Next, we create a drought event. The natural discharge of the subcatchment decreases
118
+ for nine days, stays at a constant level of 1 m³/s for four days, and increases again:
119
+
120
+ >>> natural.sequences.sim.series = [1.8, 1.7, 1.6, 1.5, 1.4, 1.3, 1.2, 1.1, 1.0, 1.0,
121
+ ... 1.0, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8]
122
+
123
+ The inflow into the dam remains constant for the whole simulation period:
124
+
125
+ >>> inflow.sequences.sim.series = 1.0
126
+
127
+ For the sake of simplicity, we define a linear relationship between the stored water
128
+ volume and the water level. One can accomplish this most easily via method
129
+ |PPoly.from_data| of class |PPoly|:
130
+
131
+ >>> watervolume2waterlevel(PPoly.from_data(xs=[0.0, 1.0], ys=[0.0, 0.25]))
132
+
133
+ The following figure confirms the linearity of the defined relationship:
134
+
135
+ >>> figure = watervolume2waterlevel.plot(0.0, 100.0)
136
+ >>> from hydpy.core.testtools import save_autofig
137
+ >>> save_autofig("dam_v001_watervolume2waterlevel.png", figure=figure)
138
+
139
+ .. image:: dam_v001_watervolume2waterlevel.png
140
+ :width: 400
141
+
142
+ To focus on the drought-related algorithms only, we turn off the flood-related
143
+ processes. Therefore, we let parameter |WaterLevel2FloodDischarge| return zero for all
144
+ possible input values:
145
+
146
+ >>> waterlevel2flooddischarge(PPoly.from_data(xs=[0.0], ys=[0.0]))
147
+ >>> figure = waterlevel2flooddischarge.plot(0.0, 25.0)
148
+ >>> save_autofig("dam_v001_waterlevel2flooddischarge_1.png", figure=figure)
149
+
150
+ .. image:: dam_v001_waterlevel2flooddischarge_1.png
151
+ :width: 400
152
+
153
+ The exact values of the following parameters are relevant only for those examples where
154
+ we take precipitation or evaporation into account. Please see the documentation on the
155
+ simple lake model |dam_llake|, which discusses these parameters in detail:
156
+
157
+ >>> surfacearea(1.44)
158
+ >>> correctionprecipitation(1.2)
159
+ >>> correctionevaporation(1.2)
160
+ >>> weightevaporation(0.8)
161
+ >>> thresholdevaporation(0.0)
162
+ >>> toleranceevaporation(0.001)
163
+
164
+ We must define the catchment area draining into the dam. |dam_v001| requires this
165
+ information to adjust the numerical local truncation error. For a catchment area of
166
+ 86.4 km², the general local truncation error (in mm per simulation step) is identical
167
+ to the applied site-specific local truncation error (in m³/s):
168
+
169
+ >>> catchmentarea(86.4)
170
+ >>> from hydpy import round_
171
+ >>> round_(solver.abserrormax.INIT)
172
+ 0.0001
173
+ >>> derived.seconds.update()
174
+ >>> solver.abserrormax.update()
175
+ >>> solver.abserrormax
176
+ abserrormax(0.0001)
177
+
178
+ If you require higher accuracy or can live with lower accuracy, override this default
179
+ mechanism by setting any other tolerance value (possible within any control file; see
180
+ the :ref:`dam_v001_accuracy_drought` and the :ref:`dam_v001_accuracy_flood` examples
181
+ for further information).
182
+
183
+ We enable the |RestrictTargetedRelease| option flag in the following examples if not
184
+ stated otherwise:
185
+
186
+ >>> restricttargetedrelease(True)
187
+
188
+ .. _dam_v001_no_outflow:
189
+
190
+ no outflow
191
+ __________
192
+
193
+ We temporarily turn off the drought-related functionalities to confirm the proper
194
+ arrangement of the whole scenario.
195
+
196
+ >>> nmblogentries(1)
197
+ >>> remotedischargeminimum(0.0)
198
+ >>> remotedischargesafety(0.0)
199
+ >>> neardischargeminimumthreshold(0.0)
200
+ >>> neardischargeminimumtolerance(0.0)
201
+ >>> waterlevelminimumthreshold(0.0)
202
+ >>> waterlevelminimumtolerance(0.0)
203
+
204
+ The following table confirms that |dam_v001| does not release any discharge (the column
205
+ "outflow" contains zero values only). Hence, the downstream cross-section's discharge
206
+ (column "remote") and the subcatchment's discharge (column "natural") are identical:
207
+
208
+ .. integration-test::
209
+
210
+ >>> test("dam_v001_no_outflow")
211
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
212
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
213
+ | 01.01. | 0.0216 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.8 | 1.9 | 0.0 | -1.9 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0864 | 1.0 | 1.8 | 0.0 | 1.8 |
214
+ | 02.01. | 0.0432 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7 | 1.8 | 0.0 | -1.8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1728 | 1.0 | 1.7 | 0.0 | 1.7 |
215
+ | 03.01. | 0.0648 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.7 | 0.0 | -1.7 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.2592 | 1.0 | 1.6 | 0.0 | 1.6 |
216
+ | 04.01. | 0.0864 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.5 | 1.6 | 0.0 | -1.6 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3456 | 1.0 | 1.5 | 0.0 | 1.5 |
217
+ | 05.01. | 0.108 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.4 | 1.5 | 0.0 | -1.5 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.432 | 1.0 | 1.4 | 0.0 | 1.4 |
218
+ | 06.01. | 0.1296 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.3 | 1.4 | 0.0 | -1.4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.5184 | 1.0 | 1.3 | 0.0 | 1.3 |
219
+ | 07.01. | 0.1512 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.2 | 1.3 | 0.0 | -1.3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.6048 | 1.0 | 1.2 | 0.0 | 1.2 |
220
+ | 08.01. | 0.1728 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.1 | 1.2 | 0.0 | -1.2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.6912 | 1.0 | 1.1 | 0.0 | 1.1 |
221
+ | 09.01. | 0.1944 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 1.1 | 0.0 | -1.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.7776 | 1.0 | 1.0 | 0.0 | 1.0 |
222
+ | 10.01. | 0.216 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.864 | 1.0 | 1.0 | 0.0 | 1.0 |
223
+ | 11.01. | 0.2376 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.9504 | 1.0 | 1.0 | 0.0 | 1.0 |
224
+ | 12.01. | 0.2592 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0368 | 1.0 | 1.0 | 0.0 | 1.0 |
225
+ | 13.01. | 0.2808 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.1 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.1232 | 1.0 | 1.1 | 0.0 | 1.1 |
226
+ | 14.01. | 0.3024 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.2 | 1.1 | 0.0 | -1.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.2096 | 1.0 | 1.2 | 0.0 | 1.2 |
227
+ | 15.01. | 0.324 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.3 | 1.2 | 0.0 | -1.2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.296 | 1.0 | 1.3 | 0.0 | 1.3 |
228
+ | 16.01. | 0.3456 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.4 | 1.3 | 0.0 | -1.3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.3824 | 1.0 | 1.4 | 0.0 | 1.4 |
229
+ | 17.01. | 0.3672 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.5 | 1.4 | 0.0 | -1.4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.4688 | 1.0 | 1.5 | 0.0 | 1.5 |
230
+ | 18.01. | 0.3888 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.5 | 0.0 | -1.5 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.5552 | 1.0 | 1.6 | 0.0 | 1.6 |
231
+ | 19.01. | 0.4104 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7 | 1.6 | 0.0 | -1.6 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.6416 | 1.0 | 1.7 | 0.0 | 1.7 |
232
+ | 20.01. | 0.432 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.8 | 1.7 | 0.0 | -1.7 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.728 | 1.0 | 1.8 | 0.0 | 1.8 |
233
+
234
+ .. _dam_v001_exact_remote_minimum:
235
+
236
+ exact remote minimum
237
+ ____________________
238
+
239
+ Now, we set the discharge to be not undercut at the cross-section downstream to
240
+ 1.4 m³/s:
241
+
242
+ >>> remotedischargeminimum(1.4)
243
+
244
+ Principally, the dam model attenuates the drought. However, it is not very successful
245
+ in doing so. In the event's first half, the cross-section's lowest discharge increases
246
+ from 1.0 m³/s to approximately 1.2 m³/s, which is still below the threshold value of
247
+ 1.4 m³/s. Furthermore, in the event's second half, |dam_v001| works too eagerly,
248
+ resulting in a discharge of approximately 1.6 m³/s instead of 1.4 m³/s on January 12:
249
+
250
+ .. integration-test::
251
+
252
+ >>> test("dam_v001_exact_remote_minimum")
253
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
254
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
255
+ | 01.01. | 0.0216 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.8 | 1.9 | 0.0 | -0.5 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0864 | 1.0 | 1.8 | 0.0 | 1.8 |
256
+ | 02.01. | 0.0432 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7 | 1.8 | 0.0 | -0.4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1728 | 1.0 | 1.7 | 0.0 | 1.7 |
257
+ | 03.01. | 0.0648 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.7 | 0.0 | -0.3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.2592 | 1.0 | 1.6 | 0.0 | 1.6 |
258
+ | 04.01. | 0.0864 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.5 | 1.6 | 0.0 | -0.2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3456 | 1.0 | 1.5 | 0.0 | 1.5 |
259
+ | 05.01. | 0.108 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.4 | 1.5 | 0.0 | -0.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.432 | 1.0 | 1.4 | 0.0 | 1.4 |
260
+ | 06.01. | 0.1296 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.3 | 1.4 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.5184 | 1.0 | 1.3 | 0.0 | 1.3 |
261
+ | 07.01. | 0.14904 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.22 | 1.3 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.0 | 0.1 | 0.59616 | 1.0 | 1.2 | 0.1 | 1.22 |
262
+ | 08.01. | 0.164592 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.196 | 1.12 | 0.28 | 0.18 | 0.28 | 0.28 | 0.28 | 0.28 | 0.0 | 0.28 | 0.658368 | 1.0 | 1.1 | 0.28 | 1.196 |
263
+ | 09.01. | 0.175738 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.2388 | 0.916 | 0.484 | 0.204 | 0.484 | 0.484 | 0.484 | 0.484 | 0.0 | 0.484 | 0.70295 | 1.0 | 1.0 | 0.484 | 1.2388 |
264
+ | 10.01. | 0.183401 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.41664 | 0.7548 | 0.6452 | 0.1612 | 0.6452 | 0.6452 | 0.6452 | 0.6452 | 0.0 | 0.6452 | 0.733605 | 1.0 | 1.0 | 0.6452 | 1.41664 |
265
+ | 11.01. | 0.191424 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.556992 | 0.77144 | 0.62856 | -0.01664 | 0.62856 | 0.62856 | 0.62856 | 0.62856 | 0.0 | 0.62856 | 0.765698 | 1.0 | 1.0 | 0.62856 | 1.556992 |
266
+ | 12.01. | 0.202839 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.587698 | 0.928432 | 0.471568 | -0.156992 | 0.471568 | 0.471568 | 0.471568 | 0.471568 | 0.0 | 0.471568 | 0.811354 | 1.0 | 1.0 | 0.471568 | 1.587698 |
267
+ | 13.01. | 0.218307 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.598489 | 1.11613 | 0.28387 | -0.187698 | 0.28387 | 0.28387 | 0.28387 | 0.28387 | 0.0 | 0.28387 | 0.873228 | 1.0 | 1.1 | 0.28387 | 1.598489 |
268
+ | 14.01. | 0.238063 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.534951 | 1.314619 | 0.085381 | -0.198489 | 0.085381 | 0.085381 | 0.085381 | 0.085381 | 0.0 | 0.085381 | 0.952251 | 1.0 | 1.2 | 0.085381 | 1.534951 |
269
+ | 15.01. | 0.259663 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.46647 | 1.44957 | 0.0 | -0.134951 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.038651 | 1.0 | 1.3 | 0.0 | 1.46647 |
270
+ | 16.01. | 0.281263 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.454001 | 1.46647 | 0.0 | -0.06647 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.125051 | 1.0 | 1.4 | 0.0 | 1.454001 |
271
+ | 17.01. | 0.302863 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.508538 | 1.454001 | 0.0 | -0.054001 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.211451 | 1.0 | 1.5 | 0.0 | 1.508538 |
272
+ | 18.01. | 0.324463 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.508538 | 0.0 | -0.108538 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.297851 | 1.0 | 1.6 | 0.0 | 1.6 |
273
+ | 19.01. | 0.346063 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7 | 1.6 | 0.0 | -0.2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.384251 | 1.0 | 1.7 | 0.0 | 1.7 |
274
+ | 20.01. | 0.367663 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.8 | 1.7 | 0.0 | -0.3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.470651 | 1.0 | 1.8 | 0.0 | 1.8 |
275
+
276
+ .. _dam_v001_increased_remote_minimum:
277
+
278
+ increased remote minimum
279
+ ________________________
280
+
281
+ The qualified success in the example above is partly due to the time delay of the
282
+ information flow from the cross-section to the dam, but the more important factor is
283
+ the travel time of the released discharge. A simple strategy to increase reliability
284
+ is to set a higher value for parameter |RemoteDischargeMinimum|. When defining a value
285
+ of 1.6 m/s, only minor violations of the actual threshold value remain:
286
+
287
+ .. integration-test::
288
+
289
+ >>> remotedischargeminimum(1.6)
290
+ >>> test("dam_v001_increased_remote_minimum")
291
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
292
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
293
+ | 01.01. | 0.0216 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.8 | 1.9 | 0.0 | -0.3 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0864 | 1.0 | 1.8 | 0.0 | 1.8 |
294
+ | 02.01. | 0.0432 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7 | 1.8 | 0.0 | -0.2 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1728 | 1.0 | 1.7 | 0.0 | 1.7 |
295
+ | 03.01. | 0.0648 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.7 | 0.0 | -0.1 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.2592 | 1.0 | 1.6 | 0.0 | 1.6 |
296
+ | 04.01. | 0.0864 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.5 | 1.6 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3456 | 1.0 | 1.5 | 0.0 | 1.5 |
297
+ | 05.01. | 0.10584 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.42 | 1.5 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.1 | 0.0 | 0.1 | 0.42336 | 1.0 | 1.4 | 0.1 | 1.42 |
298
+ | 06.01. | 0.121392 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.396 | 1.32 | 0.28 | 0.18 | 0.28 | 0.28 | 0.28 | 0.28 | 0.0 | 0.28 | 0.485568 | 1.0 | 1.3 | 0.28 | 1.396 |
299
+ | 07.01. | 0.132538 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.4388 | 1.116 | 0.484 | 0.204 | 0.484 | 0.484 | 0.484 | 0.484 | 0.0 | 0.484 | 0.53015 | 1.0 | 1.2 | 0.484 | 1.4388 |
300
+ | 08.01. | 0.140201 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.51664 | 0.9548 | 0.6452 | 0.1612 | 0.6452 | 0.6452 | 0.6452 | 0.6452 | 0.0 | 0.6452 | 0.560805 | 1.0 | 1.1 | 0.6452 | 1.51664 |
301
+ | 09.01. | 0.146064 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.576992 | 0.87144 | 0.72856 | 0.08336 | 0.72856 | 0.72856 | 0.72856 | 0.72856 | 0.0 | 0.72856 | 0.584258 | 1.0 | 1.0 | 0.72856 | 1.576992 |
302
+ | 10.01. | 0.151431 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.683698 | 0.848432 | 0.751568 | 0.023008 | 0.751568 | 0.751568 | 0.751568 | 0.751568 | 0.0 | 0.751568 | 0.605722 | 1.0 | 1.0 | 0.751568 | 1.683698 |
303
+ | 11.01. | 0.158605 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.717289 | 0.93213 | 0.66787 | -0.083698 | 0.66787 | 0.66787 | 0.66787 | 0.66787 | 0.0 | 0.66787 | 0.634418 | 1.0 | 1.0 | 0.66787 | 1.717289 |
304
+ | 12.01. | 0.168312 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.675591 | 1.049419 | 0.550581 | -0.117289 | 0.550581 | 0.550581 | 0.550581 | 0.550581 | 0.0 | 0.550581 | 0.673248 | 1.0 | 1.0 | 0.550581 | 1.675591 |
305
+ | 13.01. | 0.179652 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.690748 | 1.12501 | 0.47499 | -0.075591 | 0.47499 | 0.47499 | 0.47499 | 0.47499 | 0.0 | 0.47499 | 0.718609 | 1.0 | 1.1 | 0.47499 | 1.690748 |
306
+ | 14.01. | 0.192953 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.698806 | 1.215758 | 0.384242 | -0.090748 | 0.384242 | 0.384242 | 0.384242 | 0.384242 | 0.0 | 0.384242 | 0.77181 | 1.0 | 1.2 | 0.384242 | 1.698806 |
307
+ | 15.01. | 0.208387 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.708339 | 1.314564 | 0.285436 | -0.098806 | 0.285436 | 0.285436 | 0.285436 | 0.285436 | 0.0 | 0.285436 | 0.833549 | 1.0 | 1.3 | 0.285436 | 1.708339 |
308
+ | 16.01. | 0.226162 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.712365 | 1.422903 | 0.177097 | -0.108339 | 0.177097 | 0.177097 | 0.177097 | 0.177097 | 0.0 | 0.177097 | 0.904647 | 1.0 | 1.4 | 0.177097 | 1.712365 |
309
+ | 17.01. | 0.246364 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.70784 | 1.535269 | 0.064731 | -0.112365 | 0.064731 | 0.064731 | 0.064731 | 0.064731 | 0.0 | 0.064731 | 0.985455 | 1.0 | 1.5 | 0.064731 | 1.70784 |
310
+ | 18.01. | 0.267964 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.707565 | 1.643109 | 0.0 | -0.10784 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.071855 | 1.0 | 1.6 | 0.0 | 1.707565 |
311
+ | 19.01. | 0.289564 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.737129 | 1.707565 | 0.0 | -0.107565 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.158255 | 1.0 | 1.7 | 0.0 | 1.737129 |
312
+ | 20.01. | 0.311164 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.806473 | 1.737129 | 0.0 | -0.137129 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.244655 | 1.0 | 1.8 | 0.0 | 1.806473 |
313
+
314
+ .. _dam_v001_remote_safety:
315
+
316
+ remote safety
317
+ _____________
318
+
319
+ While increasing parameter |RemoteDischargeMinimum| is always possible, it is often
320
+ advisable to modify parameter |RemoteDischargeSafety| instead:
321
+
322
+ >>> remotedischargeminimum(1.4)
323
+ >>> remotedischargesafety(0.5)
324
+
325
+ For the new configuration, the cross-section's discharge exceeds the threshold value at
326
+ each simulation time step. Additionally, the dam's final storage content is about 4 %
327
+ higher than in the last example, indicating more efficient water usage:
328
+
329
+ .. integration-test::
330
+
331
+ >>> test("dam_v001_remote_safety")
332
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
333
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
334
+ | 01.01. | 0.021495 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.800975 | 1.9 | 0.0 | -0.5 | 0.005 | 0.005 | 0.005 | 0.004875 | 0.0 | 0.004875 | 0.085979 | 1.0 | 1.8 | 0.004875 | 1.800975 |
335
+ | 02.01. | 0.04283 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.704398 | 1.7961 | 0.0 | -0.400975 | 0.012241 | 0.012241 | 0.012241 | 0.012241 | 0.0 | 0.012241 | 0.171321 | 1.0 | 1.7 | 0.012241 | 1.704398 |
336
+ | 03.01. | 0.06381 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.612105 | 1.692157 | 0.0 | -0.304398 | 0.02873 | 0.02873 | 0.02873 | 0.02873 | 0.0 | 0.02873 | 0.255239 | 1.0 | 1.6 | 0.02873 | 1.612105 |
337
+ | 04.01. | 0.084064 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.528115 | 1.583375 | 0.0 | -0.212105 | 0.062315 | 0.062315 | 0.062315 | 0.062315 | 0.0 | 0.062315 | 0.336255 | 1.0 | 1.5 | 0.062315 | 1.528115 |
338
+ | 05.01. | 0.10312 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.458321 | 1.4658 | 0.0 | -0.128115 | 0.11776 | 0.11776 | 0.11776 | 0.11776 | 0.0 | 0.11776 | 0.41248 | 1.0 | 1.4 | 0.11776 | 1.458321 |
339
+ | 06.01. | 0.11945 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.417471 | 1.340561 | 0.059439 | -0.058321 | 0.244 | 0.244 | 0.244 | 0.244 | 0.0 | 0.244 | 0.477799 | 1.0 | 1.3 | 0.244 | 1.417471 |
340
+ | 07.01. | 0.131189 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.430459 | 1.173472 | 0.226528 | -0.017471 | 0.456501 | 0.456501 | 0.456501 | 0.456501 | 0.0 | 0.456501 | 0.524757 | 1.0 | 1.2 | 0.456501 | 1.430459 |
341
+ | 08.01. | 0.138938 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.495831 | 0.973959 | 0.426041 | -0.030459 | 0.641277 | 0.641277 | 0.641277 | 0.641277 | 0.0 | 0.641277 | 0.555751 | 1.0 | 1.1 | 0.641277 | 1.495831 |
342
+ | 09.01. | 0.145591 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.556253 | 0.854555 | 0.545445 | -0.095831 | 0.69196 | 0.69196 | 0.69196 | 0.69196 | 0.0 | 0.69196 | 0.582366 | 1.0 | 1.0 | 0.69196 | 1.556253 |
343
+ | 10.01. | 0.153545 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.641175 | 0.864293 | 0.535707 | -0.156253 | 0.63179 | 0.63179 | 0.63179 | 0.63179 | 0.0 | 0.63179 | 0.614179 | 1.0 | 1.0 | 0.63179 | 1.641175 |
344
+ | 11.01. | 0.165646 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.612383 | 1.009385 | 0.390615 | -0.241175 | 0.439756 | 0.439756 | 0.439756 | 0.439756 | 0.0 | 0.439756 | 0.662584 | 1.0 | 1.0 | 0.439756 | 1.612383 |
345
+ | 12.01. | 0.180992 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.492545 | 1.172627 | 0.227373 | -0.212383 | 0.289549 | 0.289549 | 0.289549 | 0.289549 | 0.0 | 0.289549 | 0.723967 | 1.0 | 1.0 | 0.289549 | 1.492545 |
346
+ | 13.01. | 0.195104 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.480259 | 1.202996 | 0.197004 | -0.092545 | 0.346666 | 0.346666 | 0.346666 | 0.346666 | 0.0 | 0.346666 | 0.780415 | 1.0 | 1.1 | 0.346666 | 1.480259 |
347
+ | 14.01. | 0.207455 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.555141 | 1.133592 | 0.266408 | -0.080259 | 0.428173 | 0.428173 | 0.428173 | 0.428173 | 0.0 | 0.428173 | 0.829821 | 1.0 | 1.2 | 0.428173 | 1.555141 |
348
+ | 15.01. | 0.221065 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.678206 | 1.126968 | 0.273032 | -0.155141 | 0.36991 | 0.36991 | 0.36991 | 0.36991 | 0.0 | 0.36991 | 0.884261 | 1.0 | 1.3 | 0.36991 | 1.678206 |
349
+ | 16.01. | 0.239907 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.73662 | 1.308296 | 0.091704 | -0.278206 | 0.12769 | 0.12769 | 0.12769 | 0.12769 | 0.0 | 0.12769 | 0.959628 | 1.0 | 1.4 | 0.12769 | 1.73662 |
350
+ | 17.01. | 0.261039 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.709203 | 1.608931 | 0.0 | -0.33662 | 0.021686 | 0.021686 | 0.021686 | 0.021686 | 0.0 | 0.021686 | 1.044155 | 1.0 | 1.5 | 0.021686 | 1.709203 |
351
+ | 18.01. | 0.282043 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.689484 | 1.687518 | 0.0 | -0.309203 | 0.027557 | 0.027557 | 0.027557 | 0.027557 | 0.0 | 0.027557 | 1.128174 | 1.0 | 1.6 | 0.027557 | 1.689484 |
352
+ | 19.01. | 0.302938 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.736832 | 1.661926 | 0.0 | -0.289484 | 0.032675 | 0.032675 | 0.032675 | 0.032675 | 0.0 | 0.032675 | 1.211751 | 1.0 | 1.7 | 0.032675 | 1.736832 |
353
+ | 20.01. | 0.32407 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.827835 | 1.704158 | 0.0 | -0.336832 | 0.021645 | 0.021645 | 0.021645 | 0.021645 | 0.0 | 0.021645 | 1.29628 | 1.0 | 1.8 | 0.021645 | 1.827835 |
354
+
355
+ .. _dam_v001_sharp_near_minimum:
356
+
357
+ sharp near minimum
358
+ __________________
359
+
360
+ Building upon the last example, we subsequently increase the model's complexity. Next,
361
+ we introduce a local minimum water release of 0.2 m³/s:
362
+
363
+ >>> neardischargeminimumthreshold(0.2)
364
+
365
+ Consequently, |dam_v001| now releases discharge that is not required at the
366
+ cross-section downstream:
367
+
368
+ .. integration-test::
369
+
370
+ >>> test("dam_v001_sharp_near_minimum")
371
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
372
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
373
+ | 01.01. | 0.017282 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.839983 | 1.9 | 0.0 | -0.5 | 0.005 | 0.2 | 0.2 | 0.199917 | 0.0 | 0.199917 | 0.069127 | 1.0 | 1.8 | 0.199917 | 1.839983 |
374
+ | 02.01. | 0.034562 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.819967 | 1.640067 | 0.0 | -0.439983 | 0.008616 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.138247 | 1.0 | 1.7 | 0.2 | 1.819967 |
375
+ | 03.01. | 0.051842 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.779975 | 1.619967 | 0.0 | -0.419967 | 0.010321 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.207367 | 1.0 | 1.6 | 0.2 | 1.779975 |
376
+ | 04.01. | 0.069122 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.699992 | 1.579975 | 0.0 | -0.379975 | 0.014769 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.276487 | 1.0 | 1.5 | 0.2 | 1.699992 |
377
+ | 05.01. | 0.086402 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.499992 | 0.0 | -0.299992 | 0.029846 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.345607 | 1.0 | 1.4 | 0.2 | 1.6 |
378
+ | 06.01. | 0.103682 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.5 | 1.4 | 0.0 | -0.2 | 0.068641 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.414727 | 1.0 | 1.3 | 0.2 | 1.5 |
379
+ | 07.01. | 0.120042 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.408516 | 1.3 | 0.1 | -0.1 | 0.242578 | 0.242578 | 0.242578 | 0.242578 | 0.0 | 0.242578 | 0.480168 | 1.0 | 1.2 | 0.242578 | 1.408516 |
380
+ | 08.01. | 0.131398 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.371888 | 1.165937 | 0.234063 | -0.008516 | 0.474285 | 0.474285 | 0.474285 | 0.474285 | 0.0 | 0.474285 | 0.52559 | 1.0 | 1.1 | 0.474285 | 1.371888 |
381
+ | 09.01. | 0.136052 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.43939 | 0.897603 | 0.502397 | 0.028112 | 0.784512 | 0.784512 | 0.784512 | 0.784512 | 0.0 | 0.784512 | 0.544208 | 1.0 | 1.0 | 0.784512 | 1.43939 |
382
+ | 10.01. | 0.137124 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.67042 | 0.654878 | 0.745122 | -0.03939 | 0.95036 | 0.95036 | 0.95036 | 0.95036 | 0.0 | 0.95036 | 0.548497 | 1.0 | 1.0 | 0.95036 | 1.67042 |
383
+ | 11.01. | 0.143207 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.806604 | 0.720061 | 0.679939 | -0.27042 | 0.71839 | 0.71839 | 0.71839 | 0.71839 | 0.0 | 0.71839 | 0.572828 | 1.0 | 1.0 | 0.71839 | 1.806604 |
384
+ | 12.01. | 0.157821 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7156 | 1.088214 | 0.311786 | -0.406604 | 0.323424 | 0.323424 | 0.323424 | 0.323424 | 0.0 | 0.323424 | 0.631285 | 1.0 | 1.0 | 0.323424 | 1.7156 |
385
+ | 13.01. | 0.175101 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.579922 | 1.392176 | 0.007824 | -0.3156 | 0.03389 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.700405 | 1.0 | 1.1 | 0.2 | 1.579922 |
386
+ | 14.01. | 0.192381 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.488866 | 1.379922 | 0.020078 | -0.179922 | 0.100394 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.769525 | 1.0 | 1.2 | 0.2 | 1.488866 |
387
+ | 15.01. | 0.208271 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.525216 | 1.288866 | 0.111134 | -0.088866 | 0.264366 | 0.264366 | 0.264366 | 0.264366 | 0.0 | 0.264366 | 0.833083 | 1.0 | 1.3 | 0.264366 | 1.525216 |
388
+ | 16.01. | 0.224269 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.637612 | 1.260849 | 0.139151 | -0.125216 | 0.259326 | 0.259326 | 0.259326 | 0.259326 | 0.0 | 0.259326 | 0.897078 | 1.0 | 1.4 | 0.259326 | 1.637612 |
389
+ | 17.01. | 0.241549 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.74304 | 1.378286 | 0.021714 | -0.237612 | 0.072326 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.966198 | 1.0 | 1.5 | 0.2 | 1.74304 |
390
+ | 18.01. | 0.258829 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.824234 | 1.54304 | 0.0 | -0.34304 | 0.020494 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 1.035318 | 1.0 | 1.6 | 0.2 | 1.824234 |
391
+ | 19.01. | 0.276109 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.905933 | 1.624234 | 0.0 | -0.424234 | 0.009932 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 1.104438 | 1.0 | 1.7 | 0.2 | 1.905933 |
392
+ | 20.01. | 0.293389 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.0 | 1.705933 | 0.0 | -0.505933 | 0.004737 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 1.173558 | 1.0 | 1.8 | 0.2 | 2.0 |
393
+
394
+ .. _dam_v001_accuracy_drought:
395
+
396
+ accuracy drought
397
+ ________________
398
+
399
+ One may have noted that the water release is only 0.19 m³/s instead of 0.2 m³/s on
400
+ January 1. This deviation is due to the low local truncation error of 0.01 m³/s in
401
+ combination with the simulation starting with a completely dry dam. To confirm this
402
+ assertion, we increase the required numerical accuracy temporarily:
403
+
404
+ >>> solver.abserrormax(1e-6)
405
+
406
+ Now, there is only a tiny deviation left in the last shown decimal place:
407
+
408
+ .. integration-test::
409
+
410
+ >>> test("dam_v001_accuracy_drought")
411
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
412
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
413
+ | 01.01. | 0.01728 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.84 | 1.9 | 0.0 | -0.5 | 0.005 | 0.2 | 0.2 | 0.199998 | 0.0 | 0.199998 | 0.06912 | 1.0 | 1.8 | 0.199998 | 1.84 |
414
+ | 02.01. | 0.03456 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.819999 | 1.640002 | 0.0 | -0.44 | 0.008615 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.13824 | 1.0 | 1.7 | 0.2 | 1.819999 |
415
+ | 03.01. | 0.05184 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.779999 | 1.619999 | 0.0 | -0.419999 | 0.010318 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.20736 | 1.0 | 1.6 | 0.2 | 1.779999 |
416
+ | 04.01. | 0.06912 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7 | 1.579999 | 0.0 | -0.379999 | 0.014766 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.27648 | 1.0 | 1.5 | 0.2 | 1.7 |
417
+ | 05.01. | 0.0864 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.5 | 0.0 | -0.3 | 0.029844 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.3456 | 1.0 | 1.4 | 0.2 | 1.6 |
418
+ | 06.01. | 0.10368 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.5 | 1.4 | 0.0 | -0.2 | 0.068641 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.41472 | 1.0 | 1.3 | 0.2 | 1.5 |
419
+ | 07.01. | 0.12004 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.408516 | 1.3 | 0.1 | -0.1 | 0.242578 | 0.242578 | 0.242578 | 0.242578 | 0.0 | 0.242578 | 0.480161 | 1.0 | 1.2 | 0.242578 | 1.408516 |
420
+ | 08.01. | 0.131396 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.371888 | 1.165937 | 0.234063 | -0.008516 | 0.474285 | 0.474285 | 0.474285 | 0.474285 | 0.0 | 0.474285 | 0.525583 | 1.0 | 1.1 | 0.474285 | 1.371888 |
421
+ | 09.01. | 0.13605 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.43939 | 0.897603 | 0.502397 | 0.028112 | 0.784512 | 0.784512 | 0.784512 | 0.784512 | 0.0 | 0.784512 | 0.544201 | 1.0 | 1.0 | 0.784512 | 1.43939 |
422
+ | 10.01. | 0.137123 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.67042 | 0.654878 | 0.745122 | -0.03939 | 0.95036 | 0.95036 | 0.95036 | 0.95036 | 0.0 | 0.95036 | 0.54849 | 1.0 | 1.0 | 0.95036 | 1.67042 |
423
+ | 11.01. | 0.143205 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.806604 | 0.720061 | 0.679939 | -0.27042 | 0.71839 | 0.71839 | 0.71839 | 0.71839 | 0.0 | 0.71839 | 0.572821 | 1.0 | 1.0 | 0.71839 | 1.806604 |
424
+ | 12.01. | 0.157819 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7156 | 1.088214 | 0.311786 | -0.406604 | 0.323424 | 0.323424 | 0.323424 | 0.323424 | 0.0 | 0.323424 | 0.631278 | 1.0 | 1.0 | 0.323424 | 1.7156 |
425
+ | 13.01. | 0.175099 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.579922 | 1.392176 | 0.007824 | -0.3156 | 0.03389 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.700398 | 1.0 | 1.1 | 0.2 | 1.579922 |
426
+ | 14.01. | 0.192379 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.488866 | 1.379922 | 0.020078 | -0.179922 | 0.100394 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.769518 | 1.0 | 1.2 | 0.2 | 1.488866 |
427
+ | 15.01. | 0.208269 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.525216 | 1.288866 | 0.111134 | -0.088866 | 0.264366 | 0.264366 | 0.264366 | 0.264366 | 0.0 | 0.264366 | 0.833076 | 1.0 | 1.3 | 0.264366 | 1.525216 |
428
+ | 16.01. | 0.224268 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.637612 | 1.260849 | 0.139151 | -0.125216 | 0.259326 | 0.259326 | 0.259326 | 0.259326 | 0.0 | 0.259326 | 0.897071 | 1.0 | 1.4 | 0.259326 | 1.637612 |
429
+ | 17.01. | 0.241548 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.74304 | 1.378286 | 0.021714 | -0.237612 | 0.072326 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.966191 | 1.0 | 1.5 | 0.2 | 1.74304 |
430
+ | 18.01. | 0.258828 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.824234 | 1.54304 | 0.0 | -0.34304 | 0.020494 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 1.035311 | 1.0 | 1.6 | 0.2 | 1.824234 |
431
+ | 19.01. | 0.276108 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.905933 | 1.624234 | 0.0 | -0.424234 | 0.009932 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 1.104431 | 1.0 | 1.7 | 0.2 | 1.905933 |
432
+ | 20.01. | 0.293388 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.0 | 1.705933 | 0.0 | -0.505933 | 0.004737 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 1.173551 | 1.0 | 1.8 | 0.2 | 2.0 |
433
+
434
+ >>> solver.abserrormax(1e-2)
435
+
436
+ .. _dam_v001_smooth_near_minimum:
437
+
438
+ smooth near minimum
439
+ ___________________
440
+
441
+ To allow for a smooth transition of the water release in periods where the highest
442
+ demand switches from "remote" to "near" or the other way around, one can increase the
443
+ value of the |NearDischargeMinimumTolerance| parameter:
444
+
445
+ >>> neardischargeminimumtolerance(0.2)
446
+
447
+ It is easiest to inspect this "smooth switch" effect by comparing the "required
448
+ release" column of this and the last example:
449
+
450
+ .. integration-test::
451
+
452
+ >>> test("dam_v001_smooth_near_minimum")
453
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
454
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
455
+ | 01.01. | 0.017242 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.840351 | 1.9 | 0.0 | -0.5 | 0.005 | 0.210526 | 0.210526 | 0.201754 | 0.0 | 0.201754 | 0.068968 | 1.0 | 1.8 | 0.201754 | 1.840351 |
456
+ | 02.01. | 0.034286 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.822886 | 1.638597 | 0.0 | -0.440351 | 0.008588 | 0.21092 | 0.21092 | 0.21092 | 0.0 | 0.21092 | 0.137145 | 1.0 | 1.7 | 0.21092 | 1.822886 |
457
+ | 03.01. | 0.051327 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.787111 | 1.611966 | 0.0 | -0.422886 | 0.010053 | 0.211084 | 0.211084 | 0.211084 | 0.0 | 0.211084 | 0.205307 | 1.0 | 1.6 | 0.211084 | 1.787111 |
458
+ | 04.01. | 0.068358 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.71019 | 1.576027 | 0.0 | -0.387111 | 0.013858 | 0.211523 | 0.211523 | 0.211523 | 0.0 | 0.211523 | 0.273432 | 1.0 | 1.5 | 0.211523 | 1.71019 |
459
+ | 05.01. | 0.085353 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.611668 | 1.498667 | 0.0 | -0.31019 | 0.027322 | 0.213209 | 0.213209 | 0.213209 | 0.0 | 0.213209 | 0.34141 | 1.0 | 1.4 | 0.213209 | 1.611668 |
460
+ | 06.01. | 0.102221 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.513658 | 1.398459 | 0.001541 | -0.211668 | 0.064075 | 0.219043 | 0.219043 | 0.219043 | 0.0 | 0.219043 | 0.408885 | 1.0 | 1.3 | 0.219043 | 1.513658 |
461
+ | 07.01. | 0.117699 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.429416 | 1.294615 | 0.105385 | -0.113658 | 0.235523 | 0.283419 | 0.283419 | 0.283419 | 0.0 | 0.283419 | 0.470798 | 1.0 | 1.2 | 0.283419 | 1.429416 |
462
+ | 08.01. | 0.129035 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.395444 | 1.145997 | 0.254003 | -0.029416 | 0.470414 | 0.475212 | 0.475212 | 0.475212 | 0.0 | 0.475212 | 0.516139 | 1.0 | 1.1 | 0.475212 | 1.395444 |
463
+ | 09.01. | 0.134753 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.444071 | 0.920232 | 0.479768 | 0.004556 | 0.735001 | 0.735281 | 0.735281 | 0.735281 | 0.0 | 0.735281 | 0.539011 | 1.0 | 1.0 | 0.735281 | 1.444071 |
464
+ | 10.01. | 0.1371 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.643281 | 0.70879 | 0.69121 | -0.044071 | 0.891263 | 0.891315 | 0.891315 | 0.891315 | 0.0 | 0.891315 | 0.548402 | 1.0 | 1.0 | 0.891315 | 1.643281 |
465
+ | 11.01. | 0.143651 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.763981 | 0.751966 | 0.648034 | -0.243281 | 0.696325 | 0.696749 | 0.696749 | 0.696749 | 0.0 | 0.696749 | 0.574602 | 1.0 | 1.0 | 0.696749 | 1.763981 |
466
+ | 12.01. | 0.157336 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.692903 | 1.067232 | 0.332768 | -0.363981 | 0.349797 | 0.366406 | 0.366406 | 0.366406 | 0.0 | 0.366406 | 0.629345 | 1.0 | 1.0 | 0.366406 | 1.692903 |
467
+ | 13.01. | 0.174006 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.590367 | 1.326497 | 0.073503 | -0.292903 | 0.105231 | 0.228241 | 0.228241 | 0.228241 | 0.0 | 0.228241 | 0.696025 | 1.0 | 1.1 | 0.228241 | 1.590367 |
468
+ | 14.01. | 0.190637 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.516904 | 1.362126 | 0.037874 | -0.190367 | 0.111928 | 0.230054 | 0.230054 | 0.230054 | 0.0 | 0.230054 | 0.762548 | 1.0 | 1.2 | 0.230054 | 1.516904 |
469
+ | 15.01. | 0.206051 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.554409 | 1.28685 | 0.11315 | -0.116904 | 0.240436 | 0.286374 | 0.286374 | 0.286374 | 0.0 | 0.286374 | 0.824205 | 1.0 | 1.3 | 0.286374 | 1.554409 |
470
+ | 16.01. | 0.221608 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.662351 | 1.268035 | 0.131965 | -0.154409 | 0.229369 | 0.279807 | 0.279807 | 0.279807 | 0.0 | 0.279807 | 0.88643 | 1.0 | 1.4 | 0.279807 | 1.662351 |
471
+ | 17.01. | 0.238498 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.764451 | 1.382544 | 0.017456 | -0.262351 | 0.058622 | 0.21805 | 0.21805 | 0.21805 | 0.0 | 0.21805 | 0.953991 | 1.0 | 1.5 | 0.21805 | 1.764451 |
472
+ | 18.01. | 0.255521 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.842178 | 1.5464 | 0.0 | -0.364451 | 0.016958 | 0.211892 | 0.211892 | 0.211892 | 0.0 | 0.211892 | 1.022083 | 1.0 | 1.6 | 0.211892 | 1.842178 |
473
+ | 19.01. | 0.272565 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.920334 | 1.630286 | 0.0 | -0.442178 | 0.008447 | 0.210904 | 0.210904 | 0.210904 | 0.0 | 0.210904 | 1.090261 | 1.0 | 1.7 | 0.210904 | 1.920334 |
474
+ | 20.01. | 0.28962 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.011822 | 1.709429 | 0.0 | -0.520334 | 0.004155 | 0.210435 | 0.210435 | 0.210435 | 0.0 | 0.210435 | 1.158479 | 1.0 | 1.8 | 0.210435 | 2.011822 |
475
+
476
+ .. _dam_v001_restriction_enabled:
477
+
478
+ restriction enabled
479
+ ___________________
480
+
481
+ |dam_v001| is forced to keep a certain degree of low flow variability when the option
482
+ flag |RestrictTargetedRelease| is enabled. Then, it is not allowed to release an
483
+ arbitrary amount of water when the inflow falls below the required minimum water
484
+ release. We show this by decreasing the inflow in the second half of the simulation
485
+ period to 0.1 m³/s:
486
+
487
+ >>> inflow.sequences.sim.series[10:] = 0.1
488
+
489
+ We maintain the value of parameter |NearDischargeMinimumThreshold| (0.2 m³/s) but
490
+ change |NearDischargeMinimumTolerance| to 0 m³/s for better comprehensibility:
491
+
492
+ >>> neardischargeminimumtolerance(0.0)
493
+
494
+ As expected, the actual release drops to 0.1 m³/s on January 11. But due to the delay
495
+ of the discharge released earlier, the strongest violation of the threshold value
496
+ occurs on January 13:
497
+
498
+ .. integration-test::
499
+
500
+ >>> test("dam_v001_restriction_enabled")
501
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
502
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
503
+ | 01.01. | 0.01746 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.838333 | 1.9 | 0.0 | -0.5 | 0.005 | 0.2 | 0.2 | 0.191667 | 0.0 | 0.191667 | 0.06984 | 1.0 | 1.8 | 0.191667 | 1.838333 |
504
+ | 02.01. | 0.03474 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.816667 | 1.646667 | 0.0 | -0.438333 | 0.008746 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.13896 | 1.0 | 1.7 | 0.2 | 1.816667 |
505
+ | 03.01. | 0.05202 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7775 | 1.616667 | 0.0 | -0.416667 | 0.010632 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.20808 | 1.0 | 1.6 | 0.2 | 1.7775 |
506
+ | 04.01. | 0.0693 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.699167 | 1.5775 | 0.0 | -0.3775 | 0.015099 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.2772 | 1.0 | 1.5 | 0.2 | 1.699167 |
507
+ | 05.01. | 0.08658 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.499167 | 0.0 | -0.299167 | 0.03006 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.34632 | 1.0 | 1.4 | 0.2 | 1.6 |
508
+ | 06.01. | 0.10386 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.5 | 1.4 | 0.0 | -0.2 | 0.068641 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.41544 | 1.0 | 1.3 | 0.2 | 1.5 |
509
+ | 07.01. | 0.12022 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.408516 | 1.3 | 0.1 | -0.1 | 0.242578 | 0.242578 | 0.242578 | 0.242578 | 0.0 | 0.242578 | 0.480881 | 1.0 | 1.2 | 0.242578 | 1.408516 |
510
+ | 08.01. | 0.131576 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.371888 | 1.165937 | 0.234063 | -0.008516 | 0.474285 | 0.474285 | 0.474285 | 0.474285 | 0.0 | 0.474285 | 0.526303 | 1.0 | 1.1 | 0.474285 | 1.371888 |
511
+ | 09.01. | 0.13623 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.43939 | 0.897603 | 0.502397 | 0.028112 | 0.784512 | 0.784512 | 0.784512 | 0.784512 | 0.0 | 0.784512 | 0.544921 | 1.0 | 1.0 | 0.784512 | 1.43939 |
512
+ | 10.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.67042 | 0.654878 | 0.745122 | -0.03939 | 0.95036 | 0.95036 | 0.95036 | 0.95036 | 0.0 | 0.95036 | 0.54921 | 1.0 | 1.0 | 0.95036 | 1.67042 |
513
+ | 11.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.682926 | 0.720061 | 0.679939 | -0.27042 | 0.71839 | 0.71839 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.0 | 0.1 | 1.682926 |
514
+ | 12.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.423559 | 1.582926 | 0.0 | -0.282926 | 0.034564 | 0.2 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.0 | 0.1 | 1.423559 |
515
+ | 13.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.285036 | 1.323559 | 0.076441 | -0.023559 | 0.299482 | 0.299482 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.1 | 0.1 | 1.285036 |
516
+ | 14.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.3 | 1.185036 | 0.214964 | 0.114964 | 0.585979 | 0.585979 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.2 | 0.1 | 1.3 |
517
+ | 15.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.4 | 1.2 | 0.2 | 0.1 | 0.557422 | 0.557422 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.3 | 0.1 | 1.4 |
518
+ | 16.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.5 | 1.3 | 0.1 | 0.0 | 0.35 | 0.35 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.4 | 0.1 | 1.5 |
519
+ | 17.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.6 | 1.4 | 0.0 | -0.1 | 0.142578 | 0.2 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.5 | 0.1 | 1.6 |
520
+ | 18.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.7 | 1.5 | 0.0 | -0.2 | 0.068641 | 0.2 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.6 | 0.1 | 1.7 |
521
+ | 19.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.8 | 1.6 | 0.0 | -0.3 | 0.029844 | 0.2 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.7 | 0.1 | 1.8 |
522
+ | 20.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.9 | 1.7 | 0.0 | -0.4 | 0.012348 | 0.2 | 0.1 | 0.1 | 0.0 | 0.1 | 0.54921 | 0.1 | 1.8 | 0.1 | 1.9 |
523
+
524
+ .. _dam_v001_restriction_disabled:
525
+
526
+ restriction disabled
527
+ ____________________
528
+
529
+ This modification of the last example shows that with |RestrictTargetedRelease| being
530
+ disabled, water release can always exceed the current inflow:
531
+
532
+ .. integration-test::
533
+
534
+ >>> restricttargetedrelease(False)
535
+ >>> test("dam_v001_restriction_disabled")
536
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
537
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
538
+ | 01.01. | 0.01746 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.838333 | 1.9 | 0.0 | -0.5 | 0.005 | 0.2 | 0.2 | 0.191667 | 0.0 | 0.191667 | 0.06984 | 1.0 | 1.8 | 0.191667 | 1.838333 |
539
+ | 02.01. | 0.03474 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.816667 | 1.646667 | 0.0 | -0.438333 | 0.008746 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.13896 | 1.0 | 1.7 | 0.2 | 1.816667 |
540
+ | 03.01. | 0.05202 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.7775 | 1.616667 | 0.0 | -0.416667 | 0.010632 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.20808 | 1.0 | 1.6 | 0.2 | 1.7775 |
541
+ | 04.01. | 0.0693 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.699167 | 1.5775 | 0.0 | -0.3775 | 0.015099 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.2772 | 1.0 | 1.5 | 0.2 | 1.699167 |
542
+ | 05.01. | 0.08658 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.6 | 1.499167 | 0.0 | -0.299167 | 0.03006 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.34632 | 1.0 | 1.4 | 0.2 | 1.6 |
543
+ | 06.01. | 0.10386 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.5 | 1.4 | 0.0 | -0.2 | 0.068641 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.41544 | 1.0 | 1.3 | 0.2 | 1.5 |
544
+ | 07.01. | 0.12022 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.408516 | 1.3 | 0.1 | -0.1 | 0.242578 | 0.242578 | 0.242578 | 0.242578 | 0.0 | 0.242578 | 0.480881 | 1.0 | 1.2 | 0.242578 | 1.408516 |
545
+ | 08.01. | 0.131576 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.371888 | 1.165937 | 0.234063 | -0.008516 | 0.474285 | 0.474285 | 0.474285 | 0.474285 | 0.0 | 0.474285 | 0.526303 | 1.0 | 1.1 | 0.474285 | 1.371888 |
546
+ | 09.01. | 0.13623 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.43939 | 0.897603 | 0.502397 | 0.028112 | 0.784512 | 0.784512 | 0.784512 | 0.784512 | 0.0 | 0.784512 | 0.544921 | 1.0 | 1.0 | 0.784512 | 1.43939 |
547
+ | 10.01. | 0.137303 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.67042 | 0.654878 | 0.745122 | -0.03939 | 0.95036 | 0.95036 | 0.95036 | 0.95036 | 0.0 | 0.95036 | 0.54921 | 1.0 | 1.0 | 0.95036 | 1.67042 |
548
+ | 11.01. | 0.123945 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.806604 | 0.720061 | 0.679939 | -0.27042 | 0.71839 | 0.71839 | 0.71839 | 0.71839 | 0.0 | 0.71839 | 0.495781 | 0.1 | 1.0 | 0.71839 | 1.806604 |
549
+ | 12.01. | 0.119119 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.7156 | 1.088214 | 0.311786 | -0.406604 | 0.323424 | 0.323424 | 0.323424 | 0.323424 | 0.0 | 0.323424 | 0.476477 | 0.1 | 1.0 | 0.323424 | 1.7156 |
550
+ | 13.01. | 0.116959 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.579922 | 1.392176 | 0.007824 | -0.3156 | 0.03389 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.467837 | 0.1 | 1.1 | 0.2 | 1.579922 |
551
+ | 14.01. | 0.114799 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.488866 | 1.379922 | 0.020078 | -0.179922 | 0.100394 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.459197 | 0.1 | 1.2 | 0.2 | 1.488866 |
552
+ | 15.01. | 0.111249 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.525216 | 1.288866 | 0.111134 | -0.088866 | 0.264366 | 0.264366 | 0.264366 | 0.264366 | 0.0 | 0.264366 | 0.444996 | 0.1 | 1.3 | 0.264366 | 1.525216 |
553
+ | 16.01. | 0.107808 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.637612 | 1.260849 | 0.139151 | -0.125216 | 0.259326 | 0.259326 | 0.259326 | 0.259326 | 0.0 | 0.259326 | 0.43123 | 0.1 | 1.4 | 0.259326 | 1.637612 |
554
+ | 17.01. | 0.105648 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.74304 | 1.378286 | 0.021714 | -0.237612 | 0.072326 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.42259 | 0.1 | 1.5 | 0.2 | 1.74304 |
555
+ | 18.01. | 0.103488 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.824234 | 1.54304 | 0.0 | -0.34304 | 0.020494 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.41395 | 0.1 | 1.6 | 0.2 | 1.824234 |
556
+ | 19.01. | 0.101328 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 1.905933 | 1.624234 | 0.0 | -0.424234 | 0.009932 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.40531 | 0.1 | 1.7 | 0.2 | 1.905933 |
557
+ | 20.01. | 0.099168 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 | 2.0 | 1.705933 | 0.0 | -0.505933 | 0.004737 | 0.2 | 0.2 | 0.2 | 0.0 | 0.2 | 0.39667 | 0.1 | 1.8 | 0.2 | 2.0 |
558
+
559
+ >>> restricttargetedrelease(True)
560
+
561
+ .. _dam_v001_sharp_stage_minimum:
562
+
563
+ sharp stage minimum
564
+ ___________________
565
+
566
+ Another issue relevant to the simulation of drought events is the possible restriction
567
+ of water release due to limited water availability. To focus on this, we reset the
568
+ parameter |NearDischargeMinimumThreshold| to 0 m³/s and define smaller inflow values
569
+ that constantly decrease from 0.2 m³/s to 0.0 m³/s:
570
+
571
+ >>> neardischargeminimumthreshold(0.0)
572
+ >>> inflow.sequences.sim.series = numpy.linspace(0.2, 0.0, 20)
573
+
574
+ Now, the storage content increases only until January 5. Afterwards, the dam starts to
575
+ run dry. On January 11, it is virtually empty, but there are some fluctuations in the
576
+ water volume around 0 m³. The strongest negative deviation from the "normal empty
577
+ value" of 0 m³ occurs at the end of January 12, where the storage volume is -666 m³:
578
+
579
+ .. integration-test::
580
+
581
+ >>> test("dam_v001_sharp_stage_minimum")
582
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
583
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
584
+ | 01.01. | 0.004239 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.2 | 1.80075 | 1.9 | 0.0 | -0.5 | 0.005 | 0.005 | 0.005 | 0.00375 | 0.0 | 0.00375 | 0.016956 | 0.2 | 1.8 | 0.00375 | 1.80075 |
585
+ | 02.01. | 0.008067 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.189474 | 1.703953 | 1.797 | 0.0 | -0.40075 | 0.012265 | 0.012265 | 0.012265 | 0.012265 | 0.0 | 0.012265 | 0.032267 | 0.189474 | 1.7 | 0.012265 | 1.703953 |
586
+ | 03.01. | 0.011309 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.178947 | 1.611799 | 1.691688 | 0.0 | -0.303953 | 0.028841 | 0.028841 | 0.028841 | 0.028841 | 0.0 | 0.028841 | 0.045236 | 0.178947 | 1.6 | 0.028841 | 1.611799 |
587
+ | 04.01. | 0.013598 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.168421 | 1.528085 | 1.582958 | 0.0 | -0.211799 | 0.062468 | 0.062468 | 0.062468 | 0.062468 | 0.0 | 0.062468 | 0.05439 | 0.168421 | 1.5 | 0.062468 | 1.528085 |
588
+ | 05.01. | 0.014464 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.157895 | 1.458423 | 1.465616 | 0.0 | -0.128085 | 0.117784 | 0.117784 | 0.117784 | 0.117784 | 0.0 | 0.117784 | 0.057856 | 0.157895 | 1.4 | 0.117784 | 1.458423 |
589
+ | 06.01. | 0.012381 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.147368 | 1.417501 | 1.340639 | 0.059361 | -0.058423 | 0.243813 | 0.243813 | 0.243813 | 0.243813 | 0.0 | 0.243813 | 0.049523 | 0.147368 | 1.3 | 0.243813 | 1.417501 |
590
+ | 07.01. | 0.005482 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.136842 | 1.430358 | 1.173688 | 0.226312 | -0.017501 | 0.456251 | 0.456251 | 0.456251 | 0.456251 | 0.0 | 0.456251 | 0.021926 | 0.136842 | 1.2 | 0.456251 | 1.430358 |
591
+ | 08.01. | -0.00006 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.126316 | 1.443995 | 0.974107 | 0.425893 | -0.030358 | 0.641243 | 0.641243 | 0.641243 | 0.382861 | 0.0 | 0.382861 | -0.000239 | 0.126316 | 1.1 | 0.382861 | 1.443995 |
592
+ | 09.01. | -0.000053 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.115789 | 1.337495 | 1.061134 | 0.338866 | -0.043995 | 0.539003 | 0.539003 | 0.539003 | 0.11547 | 0.0 | 0.11547 | -0.000212 | 0.115789 | 1.0 | 0.11547 | 1.337495 |
593
+ | 10.01. | -0.00012 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.105263 | 1.228344 | 1.222025 | 0.177975 | 0.062505 | 0.497868 | 0.497868 | 0.497868 | 0.108362 | 0.0 | 0.108362 | -0.00048 | 0.105263 | 1.0 | 0.108362 | 1.228344 |
594
+ | 11.01. | -0.000004 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.094737 | 1.134148 | 1.119981 | 0.280019 | 0.171656 | 0.694448 | 0.694448 | 0.694448 | 0.089381 | 0.0 | 0.089381 | -0.000017 | 0.094737 | 1.0 | 0.089381 | 1.134148 |
595
+ | 12.01. | -0.000166 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.084211 | 1.098152 | 1.044768 | 0.355232 | 0.265852 | 0.815265 | 0.815265 | 0.815265 | 0.091721 | 0.0 | 0.091721 | -0.000666 | 0.084211 | 1.0 | 0.091721 | 1.098152 |
596
+ | 13.01. | -0.000042 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.073684 | 1.18792 | 1.006431 | 0.393569 | 0.301848 | 0.864198 | 0.864198 | 0.864198 | 0.067904 | 0.0 | 0.067904 | -0.000166 | 0.073684 | 1.1 | 0.067904 | 1.18792 |
597
+ | 14.01. | -0.000135 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.063158 | 1.277116 | 1.120015 | 0.279985 | 0.21208 | 0.717657 | 0.717657 | 0.717657 | 0.067501 | 0.0 | 0.067501 | -0.000542 | 0.063158 | 1.2 | 0.067501 | 1.277116 |
598
+ | 15.01. | -0.000004 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.052632 | 1.365852 | 1.209616 | 0.190384 | 0.122884 | 0.568242 | 0.568242 | 0.568242 | 0.046544 | 0.0 | 0.046544 | -0.000016 | 0.052632 | 1.3 | 0.046544 | 1.365852 |
599
+ | 16.01. | -0.000133 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.042105 | 1.455275 | 1.319309 | 0.080691 | 0.034148 | 0.369601 | 0.369601 | 0.369601 | 0.048083 | 0.0 | 0.048083 | -0.000532 | 0.042105 | 1.4 | 0.048083 | 1.455275 |
600
+ | 17.01. | -0.000038 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.031579 | 1.54538 | 1.407192 | 0.0 | -0.055275 | 0.187833 | 0.187833 | 0.187833 | 0.027168 | 0.0 | 0.027168 | -0.000151 | 0.031579 | 1.5 | 0.027168 | 1.54538 |
601
+ | 18.01. | -0.000052 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.021053 | 1.634293 | 1.518212 | 0.0 | -0.14538 | 0.104078 | 0.104078 | 0.104078 | 0.021731 | 0.0 | 0.021731 | -0.00021 | 0.021053 | 1.6 | 0.021731 | 1.634293 |
602
+ | 19.01. | -0.000106 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.010526 | 1.724252 | 1.612561 | 0.0 | -0.234293 | 0.052016 | 0.052016 | 0.052016 | 0.013004 | 0.0 | 0.013004 | -0.000424 | 0.010526 | 1.7 | 0.013004 | 1.724252 |
603
+ | 20.01. | -0.000106 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.814438 | 1.711248 | 0.0 | -0.324252 | 0.02417 | 0.02417 | 0.012085 | 0.0 | 0.0 | 0.0 | -0.000424 | 0.0 | 1.8 | 0.0 | 1.814438 |
604
+
605
+ The fluctuation is due to the discontinuous configuration of the equation underlying
606
+ method |Calc_ActualRelease_V1| around |WaterLevelMinimumThreshold| and the limited
607
+ accuracy of the applied numerical integration algorithm. Theoretically, we could
608
+ decrease |dam_solver.AbsErrorMax| to reduce this problem significantly. However,
609
+ this could result in huge computation times, as the implemented Runge-Kutta method is
610
+ generally incapable of handling discontinuities. Hence, the algorithm would have to
611
+ substantially decrease the internal calculation time step.
612
+
613
+ .. _dam_v001_smooth_stage_minimum:
614
+
615
+ smooth stage minimum
616
+ ____________________
617
+
618
+ To solve the discussed problem more efficiently than by decreasing
619
+ |dam_solver.AbsErrorMax|, we can increase |NearDischargeMinimumTolerance|, which is a
620
+ smoothing parameter responsible for smoothing all water level-related discontinuities
621
+ around |WaterLevelMinimumThreshold|:
622
+
623
+ >>> waterlevelminimumtolerance(0.01)
624
+
625
+ One must also slightly increase |WaterLevelMinimumThreshold| to avoid the fluctuation
626
+ and negative water volumes:
627
+
628
+ >>> waterlevelminimumthreshold(0.005)
629
+
630
+ Now the dam empties without any fluctuations. The lowest storage content of 541 m³
631
+ occurs on January 14. After that date, the dam refills to a certain degree due to the
632
+ decreasing remote demand. Note that we can circumvent negative water volumes in this
633
+ example, but this would not happen if the low flow period were prolonged:
634
+
635
+ .. integration-test::
636
+
637
+ >>> test("dam_v001_smooth_stage_minimum")
638
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
639
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
640
+ | 01.01. | 0.004292 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.2 | 1.800256 | 1.9 | 0.0 | -0.5 | 0.005 | 0.005 | 0.005 | 0.001282 | 0.0 | 0.001282 | 0.017169 | 0.2 | 1.8 | 0.001282 | 1.800256 |
641
+ | 02.01. | 0.00822 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.189474 | 1.702037 | 1.798975 | 0.0 | -0.400256 | 0.01232 | 0.01232 | 0.01232 | 0.007624 | 0.0 | 0.007624 | 0.032881 | 0.189474 | 1.7 | 0.007624 | 1.702037 |
642
+ | 03.01. | 0.011526 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.178947 | 1.608618 | 1.694414 | 0.0 | -0.302037 | 0.029323 | 0.029323 | 0.029323 | 0.025921 | 0.0 | 0.025921 | 0.046103 | 0.178947 | 1.6 | 0.025921 | 1.608618 |
643
+ | 04.01. | 0.013824 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.168421 | 1.525188 | 1.582697 | 0.0 | -0.208618 | 0.064084 | 0.064084 | 0.064084 | 0.062022 | 0.0 | 0.062022 | 0.055296 | 0.168421 | 1.5 | 0.062022 | 1.525188 |
644
+ | 05.01. | 0.014675 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.157895 | 1.457043 | 1.463166 | 0.0 | -0.125188 | 0.120198 | 0.120198 | 0.120198 | 0.118479 | 0.0 | 0.118479 | 0.058701 | 0.157895 | 1.4 | 0.118479 | 1.457043 |
645
+ | 06.01. | 0.012626 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.147368 | 1.417039 | 1.338564 | 0.061436 | -0.057043 | 0.247367 | 0.247367 | 0.247367 | 0.242243 | 0.0 | 0.242243 | 0.050504 | 0.147368 | 1.3 | 0.242243 | 1.417039 |
646
+ | 07.01. | 0.006999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.136842 | 1.418109 | 1.174796 | 0.225204 | -0.017039 | 0.45567 | 0.45567 | 0.45567 | 0.397328 | 0.0 | 0.397328 | 0.027998 | 0.136842 | 1.2 | 0.397328 | 1.418109 |
647
+ | 08.01. | 0.003447 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.126316 | 1.401604 | 1.020781 | 0.379219 | -0.018109 | 0.608464 | 0.608464 | 0.608464 | 0.290761 | 0.0 | 0.290761 | 0.01379 | 0.126316 | 1.1 | 0.290761 | 1.401604 |
648
+ | 09.01. | 0.002616 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.115789 | 1.290584 | 1.110843 | 0.289157 | -0.001604 | 0.537314 | 0.537314 | 0.537314 | 0.154283 | 0.0 | 0.154283 | 0.010464 | 0.115789 | 1.0 | 0.154283 | 1.290584 |
649
+ | 10.01. | 0.001898 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.105263 | 1.216378 | 1.136301 | 0.263699 | 0.109416 | 0.629775 | 0.629775 | 0.629775 | 0.138519 | 0.0 | 0.138519 | 0.007591 | 0.105263 | 1.0 | 0.138519 | 1.216378 |
650
+ | 11.01. | 0.001218 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.094737 | 1.15601 | 1.077859 | 0.322141 | 0.183622 | 0.744091 | 0.744091 | 0.744091 | 0.126207 | 0.0 | 0.126207 | 0.004871 | 0.094737 | 1.0 | 0.126207 | 1.15601 |
651
+ | 12.01. | 0.000667 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.084211 | 1.129412 | 1.029803 | 0.370197 | 0.24399 | 0.82219 | 0.82219 | 0.82219 | 0.109723 | 0.0 | 0.109723 | 0.002667 | 0.084211 | 1.0 | 0.109723 | 1.129412 |
652
+ | 13.01. | 0.000257 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.073684 | 1.214132 | 1.019689 | 0.380311 | 0.270588 | 0.841916 | 0.841916 | 0.841916 | 0.092645 | 0.0 | 0.092645 | 0.001029 | 0.073684 | 1.1 | 0.092645 | 1.214132 |
653
+ | 14.01. | 0.000135 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.063158 | 1.296357 | 1.121487 | 0.278513 | 0.185868 | 0.701812 | 0.701812 | 0.701812 | 0.068806 | 0.0 | 0.068806 | 0.000541 | 0.063158 | 1.2 | 0.068806 | 1.296357 |
654
+ | 15.01. | 0.000154 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.052632 | 1.376644 | 1.227551 | 0.172449 | 0.103643 | 0.533258 | 0.533258 | 0.533258 | 0.051779 | 0.0 | 0.051779 | 0.000615 | 0.052632 | 1.3 | 0.051779 | 1.376644 |
655
+ | 16.01. | 0.000296 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.042105 | 1.457718 | 1.324865 | 0.075135 | 0.023356 | 0.351863 | 0.351863 | 0.351863 | 0.035499 | 0.0 | 0.035499 | 0.001185 | 0.042105 | 1.4 | 0.035499 | 1.457718 |
656
+ | 17.01. | 0.000541 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.031579 | 1.540662 | 1.422218 | 0.0 | -0.057718 | 0.185207 | 0.185207 | 0.185207 | 0.02024 | 0.0 | 0.02024 | 0.002165 | 0.031579 | 1.5 | 0.02024 | 1.540662 |
657
+ | 18.01. | 0.00072 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.021053 | 1.626481 | 1.520422 | 0.0 | -0.140662 | 0.107697 | 0.107697 | 0.107697 | 0.012785 | 0.0 | 0.012785 | 0.002879 | 0.021053 | 1.6 | 0.012785 | 1.626481 |
658
+ | 19.01. | 0.000798 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.010526 | 1.71612 | 1.613695 | 0.0 | -0.226481 | 0.055458 | 0.055458 | 0.055458 | 0.006918 | 0.0 | 0.006918 | 0.003191 | 0.010526 | 1.7 | 0.006918 | 1.71612 |
659
+ | 20.01. | 0.000763 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.808953 | 1.709201 | 0.0 | -0.31612 | 0.025948 | 0.025948 | 0.012974 | 0.001631 | 0.0 | 0.001631 | 0.00305 | 0.0 | 1.8 | 0.001631 | 1.808953 |
660
+
661
+ There is still some inaccuracy in the results. For example, the last outflow value is
662
+ smaller than |dam_solver.AbsErrorMax|. However, smoothing the discontinuous
663
+ relationship would now allow defining a smaller local truncation error without
664
+ increasing computation times too much.
665
+
666
+ .. _dam_v001_evaporation:
667
+
668
+ evaporation
669
+ ___________
670
+
671
+ In agreement with the :ref:`evaporation example <dam_llake_evaporation>` of application
672
+ model |dam_llake|, we add an |evap_ret_io| submodel and set the (unadjusted) potential
673
+ evaporation to 1 mm/d for the first ten days and 5 mm/d for the last ten days:
674
+
675
+ >>> with model.add_pemodel_v1("evap_ret_io") as pemodel:
676
+ ... evapotranspirationfactor(1.0)
677
+ >>> pemodel.prepare_inputseries()
678
+ >>> pemodel.sequences.inputs.referenceevapotranspiration.series = 10 * [1.0] + 10 * [5.0]
679
+
680
+ The adjusted evaporation follows the given potential evaporation with a short delay.
681
+ The increase in evaporation results in a faster decline in the stored water volume.
682
+ Soon after, actual evaporation drops to zero due to the dam running dry:
683
+
684
+ .. integration-test::
685
+
686
+ >>> test("dam_v001_evaporation")
687
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
688
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
689
+ | 01.01. | 0.004034 | 0.0 | 0.0 | 1.0 | 0.016 | 0.012 | 0.2 | 1.800247 | 1.9 | 0.0 | -0.5 | 0.005 | 0.005 | 0.005 | 0.001234 | 0.0 | 0.001234 | 0.016137 | 0.2 | 1.8 | 0.001234 | 1.800247 |
690
+ | 02.01. | 0.007558 | 0.0 | 0.0 | 1.0 | 0.0192 | 0.0192 | 0.189474 | 1.701922 | 1.799013 | 0.0 | -0.400247 | 0.012321 | 0.012321 | 0.012321 | 0.00714 | 0.0 | 0.00714 | 0.030231 | 0.189474 | 1.7 | 0.00714 | 1.701922 |
691
+ | 03.01. | 0.010459 | 0.0 | 0.0 | 1.0 | 0.01984 | 0.01984 | 0.178947 | 1.608188 | 1.694781 | 0.0 | -0.301922 | 0.029352 | 0.029352 | 0.029352 | 0.02481 | 0.0 | 0.02481 | 0.041835 | 0.178947 | 1.6 | 0.02481 | 1.608188 |
692
+ | 04.01. | 0.012351 | 0.0 | 0.0 | 1.0 | 0.019968 | 0.019968 | 0.168421 | 1.524357 | 1.583379 | 0.0 | -0.208188 | 0.064305 | 0.064305 | 0.064305 | 0.060838 | 0.0 | 0.060838 | 0.049405 | 0.168421 | 1.5 | 0.060838 | 1.524357 |
693
+ | 05.01. | 0.012797 | 0.0 | 0.0 | 1.0 | 0.019994 | 0.019994 | 0.157895 | 1.455947 | 1.463519 | 0.0 | -0.124357 | 0.120897 | 0.120897 | 0.120897 | 0.117273 | 0.0 | 0.117273 | 0.051187 | 0.157895 | 1.4 | 0.117273 | 1.455947 |
694
+ | 06.01. | 0.010468 | 0.0 | 0.0 | 1.0 | 0.019999 | 0.019999 | 0.147368 | 1.414679 | 1.338674 | 0.061326 | -0.055947 | 0.248435 | 0.248435 | 0.248435 | 0.235187 | 0.0 | 0.235187 | 0.041871 | 0.147368 | 1.3 | 0.235187 | 1.414679 |
695
+ | 07.01. | 0.005562 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 0.136842 | 1.404136 | 1.179492 | 0.220508 | -0.014679 | 0.453671 | 0.453671 | 0.453671 | 0.343975 | 0.0 | 0.343975 | 0.022247 | 0.136842 | 1.2 | 0.343975 | 1.404136 |
696
+ | 08.01. | 0.002981 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 0.126316 | 1.36503 | 1.06016 | 0.33984 | -0.004136 | 0.585089 | 0.585089 | 0.585089 | 0.225783 | 0.0 | 0.225783 | 0.011925 | 0.126316 | 1.1 | 0.225783 | 1.36503 |
697
+ | 09.01. | 0.002144 | 0.0 | 0.0 | 1.0 | 0.02 | 0.02 | 0.115789 | 1.243934 | 1.139247 | 0.260753 | 0.03497 | 0.550583 | 0.550583 | 0.550583 | 0.134548 | 0.0 | 0.134548 | 0.008576 | 0.115789 | 1.0 | 0.134548 | 1.243934 |
698
+ | 10.01. | 0.001291 | 0.0 | 0.0 | 1.0 | 0.02 | 0.019988 | 0.105263 | 1.180908 | 1.109386 | 0.290614 | 0.156066 | 0.694398 | 0.694398 | 0.694398 | 0.124783 | 0.0 | 0.124783 | 0.005163 | 0.105263 | 1.0 | 0.124783 | 1.180908 |
699
+ | 11.01. | 0.000063 | 0.0 | 0.0 | 5.0 | 0.084 | 0.063974 | 0.094737 | 1.130378 | 1.056125 | 0.343875 | 0.219092 | 0.784979 | 0.784979 | 0.784979 | 0.08761 | 0.0 | 0.08761 | 0.000251 | 0.094737 | 1.0 | 0.08761 | 1.130378 |
700
+ | 12.01. | -0.000321 | 0.0 | 0.0 | 5.0 | 0.0968 | 0.032045 | 0.084211 | 1.099925 | 1.042768 | 0.357232 | 0.269622 | 0.81852 | 0.81852 | 0.81852 | 0.069957 | 0.0 | 0.069957 | -0.001286 | 0.084211 | 1.0 | 0.069957 | 1.099925 |
701
+ | 13.01. | -0.000374 | 0.0 | 0.0 | 5.0 | 0.09936 | 0.012511 | 0.073684 | 1.179462 | 1.029968 | 0.370032 | 0.300075 | 0.840207 | 0.840207 | 0.840207 | 0.063591 | 0.0 | 0.063591 | -0.001495 | 0.073684 | 1.1 | 0.063591 | 1.179462 |
702
+ | 14.01. | -0.000426 | 0.0 | 0.0 | 5.0 | 0.099872 | 0.011118 | 0.063158 | 1.26608 | 1.115871 | 0.284129 | 0.220538 | 0.72592 | 0.72592 | 0.72592 | 0.054477 | 0.0 | 0.054477 | -0.001705 | 0.063158 | 1.2 | 0.054477 | 1.26608 |
703
+ | 15.01. | -0.000452 | 0.0 | 0.0 | 5.0 | 0.099974 | 0.010651 | 0.052632 | 1.356502 | 1.211603 | 0.188397 | 0.13392 | 0.575373 | 0.575373 | 0.575373 | 0.043191 | 0.0 | 0.043191 | -0.00181 | 0.052632 | 1.3 | 0.043191 | 1.356502 |
704
+ | 16.01. | -0.000439 | 0.0 | 0.0 | 5.0 | 0.099995 | 0.012092 | 0.042105 | 1.445855 | 1.313311 | 0.086689 | 0.043498 | 0.386003 | 0.386003 | 0.386003 | 0.029384 | 0.0 | 0.029384 | -0.001756 | 0.042105 | 1.4 | 0.029384 | 1.445855 |
705
+ | 17.01. | -0.000406 | 0.0 | 0.0 | 5.0 | 0.099999 | 0.014695 | 0.031579 | 1.533233 | 1.416471 | 0.0 | -0.045855 | 0.198088 | 0.198088 | 0.198088 | 0.015375 | 0.0 | 0.015375 | -0.001625 | 0.031579 | 1.5 | 0.015375 | 1.533233 |
706
+ | 18.01. | -0.000416 | 0.0 | 0.0 | 5.0 | 0.1 | 0.012793 | 0.021053 | 1.621024 | 1.517859 | 0.0 | -0.133233 | 0.113577 | 0.113577 | 0.113577 | 0.008699 | 0.0 | 0.008699 | -0.001663 | 0.021053 | 1.6 | 0.008699 | 1.621024 |
707
+ | 19.01. | -0.000496 | 0.0 | 0.0 | 5.0 | 0.1 | 0.009947 | 0.010526 | 1.711892 | 1.612325 | 0.0 | -0.221024 | 0.05798 | 0.05798 | 0.05798 | 0.00431 | 0.0 | 0.00431 | -0.001985 | 0.010526 | 1.7 | 0.00431 | 1.711892 |
708
+ | 20.01. | -0.000655 | 0.0 | 0.0 | 5.0 | 0.1 | 0.006415 | 0.0 | 1.806062 | 1.707582 | 0.0 | -0.311892 | 0.026921 | 0.026921 | 0.01346 | 0.000952 | 0.0 | 0.000952 | -0.002622 | 0.0 | 1.8 | 0.000952 | 1.806062 |
709
+
710
+ There are, again, negative water volumes. This time, they are due to smoothing the
711
+ water level-related threshold |ThresholdEvaporation| via |ToleranceEvaporation|. The
712
+ explanations of the examples :ref:`dam_v001_sharp_stage_minimum` and
713
+ :ref:`dam_v001_smooth_stage_minimum` regarding the functionally similar parameters
714
+ |WaterLevelMinimumThreshold| and |WaterLevelMinimumTolerance| also apply to the case
715
+ at hand.
716
+
717
+ >>> del model.pemodel
718
+
719
+ .. _dam_v001_short_memory:
720
+
721
+ short memory
722
+ ____________
723
+
724
+ The last "drought control" parameter we did not vary so far is |NmbLogEntries|. In the
725
+ examples above, its value is always one, meaning that each estimate of the
726
+ subcatchment's "natural" discharge is based only on the latest observation. Using only
727
+ the newest available observation offers the advantage of quick adjustments. But there
728
+ is a risk of reacting too eagerly, which could result in cyclically fluctuating
729
+ releases.
730
+
731
+ We define a series of extreme fluctuations by repeating the natural discharge values of
732
+ 1.5 m³/s and 0.5 m³/s ten times:
733
+
734
+ >>> natural.sequences.sim.series = 10 * [1.5, 0.5]
735
+
736
+ We increase the inflow to 1 m³/s again to ensure the dam can release as much water as
737
+ it estimates to be required:
738
+
739
+ >>> inflow.sequences.sim.series = 1.0
740
+
741
+ Furthermore, we assume no relevant time delay between the dam's outlet and the
742
+ cross-section downstream:
743
+
744
+ >>> stream1.model.parameters.control.responses(((), (1.0,)))
745
+ >>> stream1.model.parameters.update()
746
+
747
+ The example is a little artificial but reveals a general problem that might occur in
748
+ different forms. Due to the time delay of the information flow from the cross-section
749
+ to the dam, the dam wastes much water by increasing the high flows without increasing
750
+ the low flows:
751
+
752
+ .. integration-test::
753
+
754
+ >>> test("dam_v001_short_memory")
755
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
756
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
757
+ | 01.01. | 0.021541 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.502727 | 1.9 | 0.0 | -0.5 | 0.005 | 0.005 | 0.005 | 0.002727 | 0.0 | 0.002727 | 0.086164 | 1.0 | 1.5 | 0.002727 | 1.502727 |
758
+ | 02.01. | 0.040117 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.640003 | 1.5 | 0.0 | -0.102727 | 0.140038 | 0.140038 | 0.140038 | 0.140003 | 0.0 | 0.140003 | 0.160468 | 1.0 | 0.5 | 0.140003 | 0.640003 |
759
+ | 03.01. | 0.031487 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899534 | 0.5 | 0.9 | 0.759997 | 1.399537 | 1.399537 | 1.399537 | 1.399534 | 0.0 | 1.399534 | 0.125948 | 1.0 | 1.5 | 1.399534 | 2.899534 |
760
+ | 04.01. | 0.053087 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499534 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.212348 | 1.0 | 0.5 | 0.000001 | 0.500001 |
761
+ | 05.01. | 0.04445 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899872 | 0.5 | 0.9 | 0.899999 | 1.399872 | 1.399872 | 1.399872 | 1.399872 | 0.0 | 1.399872 | 0.177799 | 1.0 | 1.5 | 1.399872 | 2.899872 |
762
+ | 06.01. | 0.06605 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499872 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.264199 | 1.0 | 0.5 | 0.000001 | 0.500001 |
763
+ | 07.01. | 0.057413 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899872 | 0.5 | 0.9 | 0.899999 | 1.399872 | 1.399872 | 1.399872 | 1.399872 | 0.0 | 1.399872 | 0.22965 | 1.0 | 1.5 | 1.399872 | 2.899872 |
764
+ | 08.01. | 0.079013 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499872 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.31605 | 1.0 | 0.5 | 0.000001 | 0.500001 |
765
+ | 09.01. | 0.070375 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899872 | 0.5 | 0.9 | 0.899999 | 1.399872 | 1.399872 | 1.399872 | 1.399872 | 0.0 | 1.399872 | 0.281501 | 1.0 | 1.5 | 1.399872 | 2.899872 |
766
+ | 10.01. | 0.091975 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499872 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.367901 | 1.0 | 0.5 | 0.000001 | 0.500001 |
767
+ | 11.01. | 0.083338 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899872 | 0.5 | 0.9 | 0.899999 | 1.399872 | 1.399872 | 1.399872 | 1.399872 | 0.0 | 1.399872 | 0.333352 | 1.0 | 1.5 | 1.399872 | 2.899872 |
768
+ | 12.01. | 0.104938 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499872 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.419752 | 1.0 | 0.5 | 0.000001 | 0.500001 |
769
+ | 13.01. | 0.096301 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899872 | 0.5 | 0.9 | 0.899999 | 1.399872 | 1.399872 | 1.399872 | 1.399872 | 0.0 | 1.399872 | 0.385203 | 1.0 | 1.5 | 1.399872 | 2.899872 |
770
+ | 14.01. | 0.117901 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499872 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.471603 | 1.0 | 0.5 | 0.000001 | 0.500001 |
771
+ | 15.01. | 0.109264 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899872 | 0.5 | 0.9 | 0.899999 | 1.399872 | 1.399872 | 1.399872 | 1.399872 | 0.0 | 1.399872 | 0.437054 | 1.0 | 1.5 | 1.399872 | 2.899872 |
772
+ | 16.01. | 0.130864 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499872 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.523454 | 1.0 | 0.5 | 0.000001 | 0.500001 |
773
+ | 17.01. | 0.122226 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899872 | 0.5 | 0.9 | 0.899999 | 1.399872 | 1.399872 | 1.399872 | 1.399872 | 0.0 | 1.399872 | 0.488905 | 1.0 | 1.5 | 1.399872 | 2.899872 |
774
+ | 18.01. | 0.143826 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499872 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.575305 | 1.0 | 0.5 | 0.000001 | 0.500001 |
775
+ | 19.01. | 0.135189 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.899872 | 0.5 | 0.9 | 0.899999 | 1.399872 | 1.399872 | 1.399872 | 1.399872 | 0.0 | 1.399872 | 0.540756 | 1.0 | 1.5 | 1.399872 | 2.899872 |
776
+ | 20.01. | 0.156789 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.500001 | 1.5 | 0.0 | -1.499872 | 0.000001 | 0.000001 | 0.000001 | 0.000001 | 0.0 | 0.000001 | 0.627156 | 1.0 | 0.5 | 0.000001 | 0.500001 |
777
+
778
+ .. _dam_v001_long_memory:
779
+
780
+ long memory
781
+ ___________
782
+
783
+ It seems advisable to increase the number of observations for estimating and using a
784
+ more long-term natural discharge at the cross-section. For this purpose, we set
785
+ |NmbLogEntries| to two:
786
+
787
+ >>> nmblogentries(2)
788
+
789
+ Now, the water release remains relatively constant. This strategy does not completely
790
+ solve wasting water during peak flows and violating the low flow threshold, but it
791
+ significantly reduces these problems:
792
+
793
+ .. integration-test::
794
+
795
+ >>> test("dam_v001_long_memory")
796
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
797
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
798
+ | 01.01. | 0.021541 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.502727 | 1.9 | 0.0 | -0.5 | 0.005 | 0.005 | 0.005 | 0.002727 | 0.0 | 0.002727 | 0.086164 | 1.0 | 1.5 | 0.002727 | 1.502727 |
799
+ | 02.01. | 0.042504 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.529487 | 1.7 | 0.0 | -0.301364 | 0.029495 | 0.029495 | 0.029495 | 0.029487 | 0.0 | 0.029487 | 0.170017 | 1.0 | 0.5 | 0.029487 | 0.529487 |
800
+ | 03.01. | 0.044972 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.385738 | 1.0 | 0.4 | 0.383893 | 0.885738 | 0.885738 | 0.885738 | 0.885738 | 0.0 | 0.885738 | 0.179889 | 1.0 | 1.5 | 0.885738 | 2.385738 |
801
+ | 04.01. | 0.053929 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.08532 | 1.0 | 0.4 | -0.057613 | 0.58532 | 0.58532 | 0.58532 | 0.58532 | 0.0 | 0.58532 | 0.215717 | 1.0 | 0.5 | 0.58532 | 1.08532 |
802
+ | 05.01. | 0.066416 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.921895 | 1.0 | 0.4 | -0.335529 | 0.421895 | 0.421895 | 0.421895 | 0.421895 | 0.0 | 0.421895 | 0.265666 | 1.0 | 1.5 | 0.421895 | 1.921895 |
803
+ | 06.01. | 0.076369 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.039224 | 1.0 | 0.4 | -0.103607 | 0.539224 | 0.539224 | 0.539224 | 0.539224 | 0.0 | 0.539224 | 0.305477 | 1.0 | 0.5 | 0.539224 | 1.039224 |
804
+ | 07.01. | 0.085842 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.061463 | 1.0 | 0.4 | -0.080559 | 0.561463 | 0.561463 | 0.561463 | 0.561463 | 0.0 | 0.561463 | 0.343366 | 1.0 | 1.5 | 0.561463 | 2.061463 |
805
+ | 08.01. | 0.096634 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.000369 | 1.0 | 0.4 | -0.150343 | 0.500369 | 0.500369 | 0.500369 | 0.500369 | 0.0 | 0.500369 | 0.386534 | 1.0 | 0.5 | 0.500369 | 1.000369 |
806
+ | 09.01. | 0.1071 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.015458 | 1.0 | 0.4 | -0.130916 | 0.515458 | 0.515458 | 0.515458 | 0.515458 | 0.0 | 0.515458 | 0.428399 | 1.0 | 1.5 | 0.515458 | 2.015458 |
807
+ | 10.01. | 0.117138 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.035283 | 1.0 | 0.4 | -0.107913 | 0.535283 | 0.535283 | 0.535283 | 0.535283 | 0.0 | 0.535283 | 0.46855 | 1.0 | 0.5 | 0.535283 | 1.035283 |
808
+ | 11.01. | 0.127505 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.020045 | 1.0 | 0.4 | -0.125371 | 0.520045 | 0.520045 | 0.520045 | 0.520045 | 0.0 | 0.520045 | 0.510018 | 1.0 | 1.5 | 0.520045 | 2.020045 |
809
+ | 12.01. | 0.137913 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.018133 | 1.0 | 0.4 | -0.127664 | 0.518133 | 0.518133 | 0.518133 | 0.518133 | 0.0 | 0.518133 | 0.551652 | 1.0 | 0.5 | 0.518133 | 1.018133 |
810
+ | 13.01. | 0.148165 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.02539 | 1.0 | 0.4 | -0.119089 | 0.52539 | 0.52539 | 0.52539 | 0.52539 | 0.0 | 0.52539 | 0.592658 | 1.0 | 1.5 | 0.52539 | 2.02539 |
811
+ | 14.01. | 0.158466 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.023097 | 1.0 | 0.4 | -0.121761 | 0.523097 | 0.523097 | 0.523097 | 0.523097 | 0.0 | 0.523097 | 0.633863 | 1.0 | 0.5 | 0.523097 | 1.023097 |
812
+ | 15.01. | 0.168812 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.020992 | 1.0 | 0.4 | -0.124244 | 0.520992 | 0.520992 | 0.520992 | 0.520992 | 0.0 | 0.520992 | 0.675249 | 1.0 | 1.5 | 0.520992 | 2.020992 |
813
+ | 16.01. | 0.179119 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.022855 | 1.0 | 0.4 | -0.122045 | 0.522855 | 0.522855 | 0.522855 | 0.522855 | 0.0 | 0.522855 | 0.716474 | 1.0 | 0.5 | 0.522855 | 1.022855 |
814
+ | 17.01. | 0.189423 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.022958 | 1.0 | 0.4 | -0.121924 | 0.522958 | 0.522958 | 0.522958 | 0.522958 | 0.0 | 0.522958 | 0.75769 | 1.0 | 1.5 | 0.522958 | 2.022958 |
815
+ | 18.01. | 0.199745 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.022123 | 1.0 | 0.4 | -0.122907 | 0.522123 | 0.522123 | 0.522123 | 0.522123 | 0.0 | 0.522123 | 0.798979 | 1.0 | 0.5 | 0.522123 | 1.022123 |
816
+ | 19.01. | 0.21006 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.022434 | 1.0 | 0.4 | -0.12254 | 0.522434 | 0.522434 | 0.522434 | 0.522434 | 0.0 | 0.522434 | 0.840241 | 1.0 | 1.5 | 0.522434 | 2.022434 |
817
+ | 20.01. | 0.220371 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.022657 | 1.0 | 0.4 | -0.122278 | 0.522657 | 0.522657 | 0.522657 | 0.522657 | 0.0 | 0.522657 | 0.881483 | 1.0 | 0.5 | 0.522657 | 1.022657 |
818
+
819
+ We cannot circumvent the general problem of a time delay of one simulation step for the
820
+ information flow from the cross-section to the dam. To solve it, we would have to
821
+ simultaneouslyh andle the differential equations of all models involved, which is
822
+ currently not supported by *HydPy* and is impossible for most implemented models.
823
+ However, due to the low dynamics of drought events, the resulting inaccuracies should
824
+ rarely be substantial.
825
+
826
+ .. _dam_v001_flood_retention:
827
+
828
+ flood retention
829
+ _______________
830
+
831
+ This example and the following ones demonstrate the proper implementation of the flood
832
+ retention functionalities. For simplicity, we deactivate all parameters related to
833
+ low water calculations:
834
+
835
+ >>> nmblogentries(1)
836
+ >>> remotedischargeminimum(0.0)
837
+ >>> remotedischargesafety(0.0)
838
+ >>> neardischargeminimumthreshold(0.0)
839
+ >>> neardischargeminimumtolerance(0.0)
840
+ >>> waterlevelminimumthreshold(0.0)
841
+ >>> waterlevelminimumtolerance(0.0)
842
+
843
+ We define a linear storage retention process to compare the following numerical results
844
+ of |dam_v001| with an analytical solution. The relationship between water volume and
845
+ level is already linear, and we adjust the relationship between water level and flood
846
+ discharge accordingly:
847
+
848
+ >>> waterlevel2flooddischarge(PPoly.from_data(xs=[0.0, 1.0], ys= [0.0, 2.5]))
849
+ >>> figure = waterlevel2flooddischarge.plot(0.0, 25.0)
850
+ >>> save_autofig("dam_v001_waterlevel2flooddischarge_2.png", figure=figure)
851
+
852
+ .. image:: dam_v001_waterlevel2flooddischarge_2.png
853
+ :width: 400
854
+
855
+ The linear storage coefficient for the given simulation step size is approximately
856
+ 0.054/d.
857
+
858
+ Now, we add a |meteo_precip_io| submodel and define a precipitation series including
859
+ only a heavy one-day rainfall event and a corresponding inflowing flood wave, starting
860
+ and ending with zero discharge:
861
+
862
+ >>> with model.add_precipmodel_v2("meteo_precip_io") as precipmodel:
863
+ ... precipitationfactor(1.0)
864
+ >>> precipmodel.prepare_inputseries()
865
+ >>> precipmodel.sequences.inputs.precipitation.series = [
866
+ ... 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
867
+ ... 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
868
+ >>> inflow.sequences.sim.series = [0.0, 0.0, 5.0, 9.0, 8.0, 5.0, 3.0, 2.0, 1.0, 0.0,
869
+ ... 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
870
+
871
+ For the sake of simplicity, we assume a constant "natural" discharge of 1 m³/s of the
872
+ subcatchment:
873
+
874
+ >>> test.inits.loggedtotalremotedischarge = 1.0
875
+ >>> natural.sequences.sim.series = 1.0
876
+
877
+ In this example, we use the default accuracy of 0.01 m³/s, which should be sufficient
878
+ for most flood simulations for large dams:
879
+
880
+ >>> solver.abserrormax
881
+ abserrormax(0.01)
882
+
883
+ When discussing the simulation of flood events, we should examine numerical stability
884
+ and accuracy and their relation to computation time more closely. We use the number of
885
+ calls of the differential equations as an indicator for computation time. To do so, we
886
+ first set the corresponding counter to zero:
887
+
888
+ >>> model.numvars.nmb_calls = 0
889
+
890
+ The following graph shows that |dam_v001| works like the linear storage approach under
891
+ the given configuration:
892
+
893
+ .. integration-test::
894
+
895
+ >>> test("dam_v001_flood_retention")
896
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
897
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
898
+ | 01.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 1.0 |
899
+ | 02.01. | 0.021027 | 50.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.026514 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.026514 | 0.026514 | 0.084109 | 0.0 | 1.0 | 0.026514 | 1.026514 |
900
+ | 03.01. | 0.125058 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.0 | 1.183744 | 1.0 | 0.0 | -1.026514 | 0.0 | 0.0 | 0.0 | 0.0 | 0.183744 | 0.183744 | 0.500234 | 5.0 | 1.0 | 0.183744 | 1.183744 |
901
+ | 04.01. | 0.30773 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.0 | 1.542983 | 1.0 | 0.0 | -1.183744 | 0.0 | 0.0 | 0.0 | 0.0 | 0.542983 | 0.542983 | 1.23092 | 9.0 | 1.0 | 0.542983 | 1.542983 |
902
+ | 05.01. | 0.459772 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 8.0 | 1.961039 | 1.0 | 0.0 | -1.542983 | 0.0 | 0.0 | 0.0 | 0.0 | 0.961039 | 0.961039 | 1.839086 | 8.0 | 1.0 | 0.961039 | 1.961039 |
903
+ | 06.01. | 0.540739 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.0 | 2.251523 | 1.0 | 0.0 | -1.961039 | 0.0 | 0.0 | 0.0 | 0.0 | 1.251523 | 1.251523 | 2.162955 | 5.0 | 1.0 | 1.251523 | 2.251523 |
904
+ | 07.01. | 0.575395 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.0 | 2.395546 | 1.0 | 0.0 | -2.251523 | 0.0 | 0.0 | 0.0 | 0.0 | 1.395546 | 1.395546 | 2.301579 | 3.0 | 1.0 | 1.395546 | 2.395546 |
905
+ | 08.01. | 0.587202 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 2.453375 | 1.0 | 0.0 | -2.395546 | 0.0 | 0.0 | 0.0 | 0.0 | 1.453375 | 1.453375 | 2.348808 | 2.0 | 1.0 | 1.453375 | 2.453375 |
906
+ | 09.01. | 0.577361 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.455596 | 1.0 | 0.0 | -2.453375 | 0.0 | 0.0 | 0.0 | 0.0 | 1.455596 | 1.455596 | 2.309444 | 1.0 | 1.0 | 1.455596 | 2.455596 |
907
+ | 10.01. | 0.54701 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.405132 | 1.0 | 0.0 | -2.455596 | 0.0 | 0.0 | 0.0 | 0.0 | 1.405132 | 1.405132 | 2.188041 | 0.0 | 1.0 | 1.405132 | 2.405132 |
908
+ | 11.01. | 0.518255 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.331267 | 1.0 | 0.0 | -2.405132 | 0.0 | 0.0 | 0.0 | 0.0 | 1.331267 | 1.331267 | 2.073019 | 0.0 | 1.0 | 1.331267 | 2.331267 |
909
+ | 12.01. | 0.491011 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.261285 | 1.0 | 0.0 | -2.331267 | 0.0 | 0.0 | 0.0 | 0.0 | 1.261285 | 1.261285 | 1.964044 | 0.0 | 1.0 | 1.261285 | 2.261285 |
910
+ | 13.01. | 0.4652 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.194981 | 1.0 | 0.0 | -2.261285 | 0.0 | 0.0 | 0.0 | 0.0 | 1.194981 | 1.194981 | 1.860798 | 0.0 | 1.0 | 1.194981 | 2.194981 |
911
+ | 14.01. | 0.440745 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.132163 | 1.0 | 0.0 | -2.194981 | 0.0 | 0.0 | 0.0 | 0.0 | 1.132163 | 1.132163 | 1.762979 | 0.0 | 1.0 | 1.132163 | 2.132163 |
912
+ | 15.01. | 0.417576 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.072647 | 1.0 | 0.0 | -2.132163 | 0.0 | 0.0 | 0.0 | 0.0 | 1.072647 | 1.072647 | 1.670302 | 0.0 | 1.0 | 1.072647 | 2.072647 |
913
+ | 16.01. | 0.395624 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.01626 | 1.0 | 0.0 | -2.072647 | 0.0 | 0.0 | 0.0 | 0.0 | 1.01626 | 1.01626 | 1.582498 | 0.0 | 1.0 | 1.01626 | 2.01626 |
914
+ | 17.01. | 0.374827 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.962837 | 1.0 | 0.0 | -2.01626 | 0.0 | 0.0 | 0.0 | 0.0 | 0.962837 | 0.962837 | 1.499308 | 0.0 | 1.0 | 0.962837 | 1.962837 |
915
+ | 18.01. | 0.355123 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.912222 | 1.0 | 0.0 | -1.962837 | 0.0 | 0.0 | 0.0 | 0.0 | 0.912222 | 0.912222 | 1.420492 | 0.0 | 1.0 | 0.912222 | 1.912222 |
916
+ | 19.01. | 0.336455 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.864268 | 1.0 | 0.0 | -1.912222 | 0.0 | 0.0 | 0.0 | 0.0 | 0.864268 | 0.864268 | 1.34582 | 0.0 | 1.0 | 0.864268 | 1.864268 |
917
+ | 20.01. | 0.318768 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.818835 | 1.0 | 0.0 | -1.864268 | 0.0 | 0.0 | 0.0 | 0.0 | 0.818835 | 0.818835 | 1.275072 | 0.0 | 1.0 | 0.818835 | 1.818835 |
918
+
919
+ For a more precise evaluation, you can compare the dam's outflow with the following
920
+ results of the linear storage cascade with a single bucket:
921
+
922
+ >>> from hydpy.auxs.iuhtools import LinearStorageCascade
923
+ >>> lsc = LinearStorageCascade(n=1, k=1.0/0.054)
924
+ >>> inflow = fluxes.adjustedprecipitation.series + inflow.sequences.sim.series
925
+ >>> outflow = numpy.convolve(lsc.ma.coefs, inflow)
926
+ >>> from hydpy import print_vector
927
+ >>> print_vector(outflow[:20])
928
+ 0.0, 0.02652, 0.183776, 0.543037, 0.961081, 1.251541, 1.395548,
929
+ 1.453371, 1.455585, 1.405116, 1.331252, 1.261271, 1.194968, 1.132151,
930
+ 1.072636, 1.01625, 0.962828, 0.912214, 0.864261, 0.818829
931
+
932
+ The largest difference occurs on January 1. But this difference of 0.000054 m³/s is way
933
+ below the required accuracy of 0.01 m³/s. There is no guarantee that the actual
934
+ numerical error will always fall below the defined tolerance value, but if everything
935
+ works well, we have good reason to hope this happens in many cases. At least for
936
+ sufficiently smooth problems, the actual error should be better than the error estimate
937
+ by one order. However, one can never rule out the risk of error accumulations over
938
+ multiple simulation steps.
939
+
940
+ |dam_v001| required about four calls per simulation step on average:
941
+
942
+ >>> model.numvars.nmb_calls
943
+ 78
944
+ >>> model.numvars.nmb_calls = 0
945
+
946
+ .. _dam_v001_accuracy_flood:
947
+
948
+ accuracy flood
949
+ ______________
950
+
951
+ If we set the tolerance value to 1e-6 m³/s, the six decimal places in the following
952
+ table show no deviation from the analytical solution of the linear storage equation:
953
+
954
+ .. integration-test::
955
+
956
+ >>> solver.abserrormax(1e-6)
957
+ >>> test("dam_v001_accuracy_flood")
958
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
959
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
960
+ | 01.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 1.0 |
961
+ | 02.01. | 0.021027 | 50.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.02652 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.02652 | 0.02652 | 0.084109 | 0.0 | 1.0 | 0.02652 | 1.02652 |
962
+ | 03.01. | 0.125058 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.0 | 1.183776 | 1.0 | 0.0 | -1.02652 | 0.0 | 0.0 | 0.0 | 0.0 | 0.183776 | 0.183776 | 0.50023 | 5.0 | 1.0 | 0.183776 | 1.183776 |
963
+ | 04.01. | 0.307728 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.0 | 1.543037 | 1.0 | 0.0 | -1.183776 | 0.0 | 0.0 | 0.0 | 0.0 | 0.543037 | 0.543037 | 1.230912 | 9.0 | 1.0 | 0.543037 | 1.543037 |
964
+ | 05.01. | 0.459769 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 8.0 | 1.961081 | 1.0 | 0.0 | -1.543037 | 0.0 | 0.0 | 0.0 | 0.0 | 0.961081 | 0.961081 | 1.839075 | 8.0 | 1.0 | 0.961081 | 1.961081 |
965
+ | 06.01. | 0.540735 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.0 | 2.251541 | 1.0 | 0.0 | -1.961081 | 0.0 | 0.0 | 0.0 | 0.0 | 1.251541 | 1.251541 | 2.162941 | 5.0 | 1.0 | 1.251541 | 2.251541 |
966
+ | 07.01. | 0.575392 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.0 | 2.395548 | 1.0 | 0.0 | -2.251541 | 0.0 | 0.0 | 0.0 | 0.0 | 1.395548 | 1.395548 | 2.301566 | 3.0 | 1.0 | 1.395548 | 2.395548 |
967
+ | 08.01. | 0.587199 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 2.453371 | 1.0 | 0.0 | -2.395548 | 0.0 | 0.0 | 0.0 | 0.0 | 1.453371 | 1.453371 | 2.348795 | 2.0 | 1.0 | 1.453371 | 2.453371 |
968
+ | 09.01. | 0.577358 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.455585 | 1.0 | 0.0 | -2.453371 | 0.0 | 0.0 | 0.0 | 0.0 | 1.455585 | 1.455585 | 2.309432 | 1.0 | 1.0 | 1.455585 | 2.455585 |
969
+ | 10.01. | 0.547008 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.405116 | 1.0 | 0.0 | -2.455585 | 0.0 | 0.0 | 0.0 | 0.0 | 1.405116 | 1.405116 | 2.18803 | 0.0 | 1.0 | 1.405116 | 2.405116 |
970
+ | 11.01. | 0.518253 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.331252 | 1.0 | 0.0 | -2.405116 | 0.0 | 0.0 | 0.0 | 0.0 | 1.331252 | 1.331252 | 2.07301 | 0.0 | 1.0 | 1.331252 | 2.331252 |
971
+ | 12.01. | 0.491009 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.261271 | 1.0 | 0.0 | -2.331252 | 0.0 | 0.0 | 0.0 | 0.0 | 1.261271 | 1.261271 | 1.964036 | 0.0 | 1.0 | 1.261271 | 2.261271 |
972
+ | 13.01. | 0.465198 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.194968 | 1.0 | 0.0 | -2.261271 | 0.0 | 0.0 | 0.0 | 0.0 | 1.194968 | 1.194968 | 1.860791 | 0.0 | 1.0 | 1.194968 | 2.194968 |
973
+ | 14.01. | 0.440743 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.132151 | 1.0 | 0.0 | -2.194968 | 0.0 | 0.0 | 0.0 | 0.0 | 1.132151 | 1.132151 | 1.762973 | 0.0 | 1.0 | 1.132151 | 2.132151 |
974
+ | 15.01. | 0.417574 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.072636 | 1.0 | 0.0 | -2.132151 | 0.0 | 0.0 | 0.0 | 0.0 | 1.072636 | 1.072636 | 1.670297 | 0.0 | 1.0 | 1.072636 | 2.072636 |
975
+ | 16.01. | 0.395623 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.01625 | 1.0 | 0.0 | -2.072636 | 0.0 | 0.0 | 0.0 | 0.0 | 1.01625 | 1.01625 | 1.582493 | 0.0 | 1.0 | 1.01625 | 2.01625 |
976
+ | 17.01. | 0.374826 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.962828 | 1.0 | 0.0 | -2.01625 | 0.0 | 0.0 | 0.0 | 0.0 | 0.962828 | 0.962828 | 1.499305 | 0.0 | 1.0 | 0.962828 | 1.962828 |
977
+ | 18.01. | 0.355122 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.912214 | 1.0 | 0.0 | -1.962828 | 0.0 | 0.0 | 0.0 | 0.0 | 0.912214 | 0.912214 | 1.42049 | 0.0 | 1.0 | 0.912214 | 1.912214 |
978
+ | 19.01. | 0.336454 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.864261 | 1.0 | 0.0 | -1.912214 | 0.0 | 0.0 | 0.0 | 0.0 | 0.864261 | 0.864261 | 1.345818 | 0.0 | 1.0 | 0.864261 | 1.864261 |
979
+ | 20.01. | 0.318768 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.818829 | 1.0 | 0.0 | -1.864261 | 0.0 | 0.0 | 0.0 | 0.0 | 0.818829 | 0.818829 | 1.275071 | 0.0 | 1.0 | 0.818829 | 1.818829 |
980
+
981
+ This improvement in accuracy comes with a significant increase in computation time.
982
+ |dam_v001| required 10.5 calls on average:
983
+
984
+ >>> model.numvars.nmb_calls
985
+ 211
986
+ >>> model.numvars.nmb_calls = 0
987
+
988
+ .. _dam_v001_stiffness:
989
+
990
+ stiffness
991
+ _________
992
+
993
+ We reset the local error tolerance to the more practical value but configure the
994
+ |WaterLevel2FloodDischarge| parameter in a highly dynamic manner:
995
+
996
+ >>> solver.abserrormax(0.01)
997
+ >>> waterlevel2flooddischarge(PPoly.from_data(xs=[0.0, 1.0], ys=[0.0, 250.0]))
998
+ >>> figure = waterlevel2flooddischarge.plot(0.0, 25.0)
999
+ >>> save_autofig("dam_v001_waterlevel2flooddischarge_3.png", figure=figure)
1000
+
1001
+ .. image:: dam_v001_waterlevel2flooddischarge_3.png
1002
+ :width: 400
1003
+
1004
+ Due to the high linear storage coefficient of approximately 5.4 per day, the following
1005
+ test results show virtually no retention effects:
1006
+
1007
+ .. integration-test::
1008
+
1009
+ >>> test("dam_v001_stiffness")
1010
+ | date | waterlevel | precipitation | adjustedprecipitation | potentialevaporation | adjustedevaporation | actualevaporation | inflow | totalremotedischarge | naturalremotedischarge | remotedemand | remotefailure | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | flooddischarge | outflow | watervolume | inflow | natural | outflow | remote |
1011
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1012
+ | 01.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 1.0 |
1013
+ | 02.01. | 0.003916 | 50.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.818699 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.818699 | 0.818699 | 0.015664 | 0.0 | 1.0 | 0.818699 | 1.818699 |
1014
+ | 03.01. | 0.01994 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.0 | 5.25814 | 1.0 | 0.0 | -1.818699 | 0.0 | 0.0 | 0.0 | 0.0 | 4.25814 | 4.25814 | 0.079761 | 5.0 | 1.0 | 4.25814 | 5.25814 |
1015
+ | 04.01. | 0.03594 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.0 | 9.259255 | 1.0 | 0.0 | -5.25814 | 0.0 | 0.0 | 0.0 | 0.0 | 8.259255 | 8.259255 | 0.143761 | 9.0 | 1.0 | 8.259255 | 9.259255 |
1016
+ | 05.01. | 0.032083 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 8.0 | 9.178598 | 1.0 | 0.0 | -9.259255 | 0.0 | 0.0 | 0.0 | 0.0 | 8.178598 | 8.178598 | 0.128331 | 8.0 | 1.0 | 8.178598 | 9.178598 |
1017
+ | 06.01. | 0.020085 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.0 | 6.555424 | 1.0 | 0.0 | -9.178598 | 0.0 | 0.0 | 0.0 | 0.0 | 5.555424 | 5.555424 | 0.080342 | 5.0 | 1.0 | 5.555424 | 6.555424 |
1018
+ | 07.01. | 0.012057 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.0 | 4.371696 | 1.0 | 0.0 | -6.555424 | 0.0 | 0.0 | 0.0 | 0.0 | 3.371696 | 3.371696 | 0.048227 | 3.0 | 1.0 | 3.371696 | 4.371696 |
1019
+ | 08.01. | 0.008085 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 3.183878 | 1.0 | 0.0 | -4.371696 | 0.0 | 0.0 | 0.0 | 0.0 | 2.183878 | 2.183878 | 0.03234 | 2.0 | 1.0 | 2.183878 | 3.183878 |
1020
+ | 09.01. | 0.004086 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 2.185158 | 1.0 | 0.0 | -3.183878 | 0.0 | 0.0 | 0.0 | 0.0 | 1.185158 | 1.185158 | 0.016343 | 1.0 | 1.0 | 1.185158 | 2.185158 |
1021
+ | 10.01. | 0.000011 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.188656 | 1.0 | 0.0 | -2.185158 | 0.0 | 0.0 | 0.0 | 0.0 | 0.187346 | 0.188656 | 0.000043 | 0.0 | 1.0 | 0.188656 | 1.188656 |
1022
+ | 11.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.001338 | 1.0 | 0.0 | -1.188656 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.001338 | -0.000073 | 0.0 | 1.0 | 0.001338 | 1.001338 |
1023
+ | 12.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.001338 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1024
+ | 13.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1025
+ | 14.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1026
+ | 15.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1027
+ | 16.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1028
+ | 17.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1029
+ | 18.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1030
+ | 19.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1031
+ | 20.01. | -0.000018 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | -1.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.00455 | 0.0 | -0.000073 | 0.0 | 1.0 | 0.0 | 1.0 |
1032
+
1033
+ The following comparative calculation shows that |dam_v001| reaches the desired
1034
+ numerical accuracy for this extreme parameterisation:
1035
+
1036
+ >>> lsc.k = 1.0/5.4
1037
+ >>> print_vector(numpy.convolve(lsc.ma.coefs, inflow)[:20])
1038
+ 0.0, 0.815651, 4.261772, 8.259271, 8.181003, 5.553864, 3.371199,
1039
+ 2.186025, 1.185189, 0.185185, 0.000836, 0.000004, 0.0, 0.0, 0.0, 0.0,
1040
+ 0.0, 0.0, 0.0, 0.0
1041
+
1042
+ However, stability issues required dividing the simulation steps into shorter internal
1043
+ substeps, which increased the average number of calls per simulation step to 19.
1044
+
1045
+ >>> model.numvars.nmb_calls
1046
+ 358
1047
+ >>> model.numvars.nmb_calls = 0
1048
+
1049
+ Also, note that the final water volume is negative due to the limited numerical
1050
+ accuracy of the results.
1051
+
1052
+ This stability issue should seldom be relevant for typical simulations of dam retention
1053
+ processes. But one should keep it in mind when playing around with parameters, for
1054
+ example, during model calibration. Otherwise, unexpectedly long simulation durations
1055
+ might occur.
1056
+ """
1057
+ # import...
1058
+ # ...from HydPy
1059
+ from hydpy.auxs.anntools import ANN # pylint: disable=unused-import
1060
+ from hydpy.auxs.ppolytools import Poly, PPoly # pylint: disable=unused-import
1061
+ from hydpy.core import modeltools
1062
+ from hydpy.exe.modelimports import *
1063
+ from hydpy.interfaces import petinterfaces
1064
+ from hydpy.interfaces import precipinterfaces
1065
+
1066
+ # ...from dam
1067
+ from hydpy.models.dam import dam_model
1068
+ from hydpy.models.dam import dam_solver
1069
+
1070
+
1071
+ class Model(dam_model.Main_PrecipModel_V2, dam_model.Main_PEModel_V1):
1072
+ """|dam_v001.DOCNAME.complete|."""
1073
+
1074
+ DOCNAME = modeltools.DocName(short="Dam-V1", description="dam model, version 1")
1075
+ __HYDPY_ROOTMODEL__ = True
1076
+
1077
+ SOLVERPARAMETERS = (
1078
+ dam_solver.AbsErrorMax,
1079
+ dam_solver.RelErrorMax,
1080
+ dam_solver.RelDTMin,
1081
+ dam_solver.RelDTMax,
1082
+ )
1083
+ SOLVERSEQUENCES = ()
1084
+ INLET_METHODS = (
1085
+ dam_model.Calc_Precipitation_V1,
1086
+ dam_model.Calc_PotentialEvaporation_V1,
1087
+ dam_model.Calc_AdjustedEvaporation_V1,
1088
+ dam_model.Pic_Inflow_V1,
1089
+ dam_model.Calc_NaturalRemoteDischarge_V1,
1090
+ dam_model.Calc_RemoteDemand_V1,
1091
+ dam_model.Calc_RemoteFailure_V1,
1092
+ dam_model.Calc_RequiredRemoteRelease_V1,
1093
+ dam_model.Calc_RequiredRelease_V1,
1094
+ dam_model.Calc_TargetedRelease_V1,
1095
+ )
1096
+ RECEIVER_METHODS = (
1097
+ dam_model.Pic_TotalRemoteDischarge_V1,
1098
+ dam_model.Update_LoggedTotalRemoteDischarge_V1,
1099
+ )
1100
+ ADD_METHODS = ()
1101
+ PART_ODE_METHODS = (
1102
+ dam_model.Calc_AdjustedPrecipitation_V1,
1103
+ dam_model.Pic_Inflow_V1,
1104
+ dam_model.Calc_WaterLevel_V1,
1105
+ dam_model.Calc_ActualEvaporation_V1,
1106
+ dam_model.Calc_ActualRelease_V1,
1107
+ dam_model.Calc_FloodDischarge_V1,
1108
+ dam_model.Calc_Outflow_V1,
1109
+ )
1110
+ FULL_ODE_METHODS = (dam_model.Update_WaterVolume_V1,)
1111
+ OUTLET_METHODS = (
1112
+ dam_model.Calc_WaterLevel_V1,
1113
+ dam_model.Pass_Outflow_V1,
1114
+ dam_model.Update_LoggedOutflow_V1,
1115
+ )
1116
+ SENDER_METHODS = ()
1117
+ SUBMODELINTERFACES = (precipinterfaces.PrecipModel_V2, petinterfaces.PETModel_V1)
1118
+ SUBMODELS = ()
1119
+
1120
+ precipmodel = modeltools.SubmodelProperty(
1121
+ precipinterfaces.PrecipModel_V2, optional=True
1122
+ )
1123
+ pemodel = modeltools.SubmodelProperty(petinterfaces.PETModel_V1, optional=True)
1124
+
1125
+
1126
+ tester = Tester()
1127
+ cythonizer = Cythonizer()