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,816 @@
1
+ #!python
2
+ # distutils: define_macros=NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
3
+ # cython: language_level=3
4
+ # cython: cpow=True
5
+ # cython: boundscheck=False
6
+ # cython: wraparound=False
7
+ # cython: initializedcheck=False
8
+ # cython: cdivision=True
9
+ from typing import Optional
10
+ import numpy
11
+ cimport numpy
12
+ from libc.math cimport exp, fabs, log, sin, cos, tan, tanh, asin, acos, atan, isnan, isinf
13
+ from libc.math cimport NAN as nan
14
+ from libc.math cimport INFINITY as inf
15
+ import cython
16
+ from cpython.mem cimport PyMem_Malloc
17
+ from cpython.mem cimport PyMem_Realloc
18
+ from cpython.mem cimport PyMem_Free
19
+ from hydpy.cythons.autogen cimport configutils
20
+ from hydpy.cythons.autogen cimport interfaceutils
21
+ from hydpy.cythons.autogen cimport interputils
22
+ from hydpy.cythons.autogen import pointerutils
23
+ from hydpy.cythons.autogen cimport pointerutils
24
+ from hydpy.cythons.autogen cimport quadutils
25
+ from hydpy.cythons.autogen cimport rootutils
26
+ from hydpy.cythons.autogen cimport smoothutils
27
+ from hydpy.cythons.autogen cimport masterinterface
28
+
29
+
30
+ cdef void do_nothing(Model model) noexcept nogil:
31
+ pass
32
+
33
+ cpdef get_wrapper():
34
+ cdef CallbackWrapper wrapper = CallbackWrapper()
35
+ wrapper.callback = do_nothing
36
+ return wrapper
37
+
38
+ @cython.final
39
+ cdef class Parameters:
40
+ pass
41
+ @cython.final
42
+ cdef class ControlParameters:
43
+ pass
44
+ @cython.final
45
+ cdef class DerivedParameters:
46
+ pass
47
+ @cython.final
48
+ cdef class SolverParameters:
49
+ pass
50
+ @cython.final
51
+ cdef class Sequences:
52
+ pass
53
+ @cython.final
54
+ cdef class InletSequences:
55
+ cpdef inline alloc(self, name, numpy.int64_t length):
56
+ if name == "q":
57
+ self._q_length_0 = length
58
+ self._q_ready = numpy.full(length, 0, dtype=numpy.int64)
59
+ self.q = <double**> PyMem_Malloc(length * sizeof(double*))
60
+ cpdef inline dealloc(self, name):
61
+ if name == "q":
62
+ PyMem_Free(self.q)
63
+ cpdef inline set_pointer1d(self, str name, pointerutils.Double value, numpy.int64_t idx):
64
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
65
+ if name == "q":
66
+ self.q[idx] = pointer.p_value
67
+ self._q_ready[idx] = 1
68
+ cpdef get_value(self, str name):
69
+ cdef numpy.int64_t idx
70
+ if name == "q":
71
+ values = numpy.empty(self.len_q)
72
+ for idx in range(self.len_q):
73
+ pointerutils.check0(self._q_length_0)
74
+ if self._q_ready[idx] == 0:
75
+ pointerutils.check1(self._q_length_0, idx)
76
+ pointerutils.check2(self._q_ready, idx)
77
+ values[idx] = self.q[idx][0]
78
+ return values
79
+ cpdef set_value(self, str name, value):
80
+ if name == "q":
81
+ for idx in range(self.len_q):
82
+ pointerutils.check0(self._q_length_0)
83
+ if self._q_ready[idx] == 0:
84
+ pointerutils.check1(self._q_length_0, idx)
85
+ pointerutils.check2(self._q_ready, idx)
86
+ self.q[idx][0] = value[idx]
87
+ @cython.final
88
+ cdef class ReceiverSequences:
89
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
90
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
91
+ if name == "q":
92
+ self.q = pointer.p_value
93
+ cpdef get_value(self, str name):
94
+ cdef numpy.int64_t idx
95
+ if name == "q":
96
+ return self.q[0]
97
+ cpdef set_value(self, str name, value):
98
+ if name == "q":
99
+ self.q[0] = value
100
+ @cython.final
101
+ cdef class FactorSequences:
102
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
103
+ cdef numpy.int64_t k
104
+ if self._waterlevel_diskflag_reading:
105
+ self.waterlevel = self._waterlevel_ncarray[0]
106
+ elif self._waterlevel_ramflag:
107
+ self.waterlevel = self._waterlevel_array[idx]
108
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
109
+ cdef numpy.int64_t k
110
+ if self._waterlevel_diskflag_writing:
111
+ self._waterlevel_ncarray[0] = self.waterlevel
112
+ if self._waterlevel_ramflag:
113
+ self._waterlevel_array[idx] = self.waterlevel
114
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
115
+ if name == "waterlevel":
116
+ self._waterlevel_outputpointer = value.p_value
117
+ cpdef inline void update_outputs(self) noexcept nogil:
118
+ if self._waterlevel_outputflag:
119
+ self._waterlevel_outputpointer[0] = self.waterlevel
120
+ @cython.final
121
+ cdef class FluxSequences:
122
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
123
+ cdef numpy.int64_t k
124
+ if self._precipitation_diskflag_reading:
125
+ self.precipitation = self._precipitation_ncarray[0]
126
+ elif self._precipitation_ramflag:
127
+ self.precipitation = self._precipitation_array[idx]
128
+ if self._adjustedprecipitation_diskflag_reading:
129
+ self.adjustedprecipitation = self._adjustedprecipitation_ncarray[0]
130
+ elif self._adjustedprecipitation_ramflag:
131
+ self.adjustedprecipitation = self._adjustedprecipitation_array[idx]
132
+ if self._potentialevaporation_diskflag_reading:
133
+ self.potentialevaporation = self._potentialevaporation_ncarray[0]
134
+ elif self._potentialevaporation_ramflag:
135
+ self.potentialevaporation = self._potentialevaporation_array[idx]
136
+ if self._adjustedevaporation_diskflag_reading:
137
+ self.adjustedevaporation = self._adjustedevaporation_ncarray[0]
138
+ elif self._adjustedevaporation_ramflag:
139
+ self.adjustedevaporation = self._adjustedevaporation_array[idx]
140
+ if self._actualevaporation_diskflag_reading:
141
+ self.actualevaporation = self._actualevaporation_ncarray[0]
142
+ elif self._actualevaporation_ramflag:
143
+ self.actualevaporation = self._actualevaporation_array[idx]
144
+ if self._inflow_diskflag_reading:
145
+ self.inflow = self._inflow_ncarray[0]
146
+ elif self._inflow_ramflag:
147
+ self.inflow = self._inflow_array[idx]
148
+ if self._totalremotedischarge_diskflag_reading:
149
+ self.totalremotedischarge = self._totalremotedischarge_ncarray[0]
150
+ elif self._totalremotedischarge_ramflag:
151
+ self.totalremotedischarge = self._totalremotedischarge_array[idx]
152
+ if self._naturalremotedischarge_diskflag_reading:
153
+ self.naturalremotedischarge = self._naturalremotedischarge_ncarray[0]
154
+ elif self._naturalremotedischarge_ramflag:
155
+ self.naturalremotedischarge = self._naturalremotedischarge_array[idx]
156
+ if self._remotedemand_diskflag_reading:
157
+ self.remotedemand = self._remotedemand_ncarray[0]
158
+ elif self._remotedemand_ramflag:
159
+ self.remotedemand = self._remotedemand_array[idx]
160
+ if self._remotefailure_diskflag_reading:
161
+ self.remotefailure = self._remotefailure_ncarray[0]
162
+ elif self._remotefailure_ramflag:
163
+ self.remotefailure = self._remotefailure_array[idx]
164
+ if self._requiredremoterelease_diskflag_reading:
165
+ self.requiredremoterelease = self._requiredremoterelease_ncarray[0]
166
+ elif self._requiredremoterelease_ramflag:
167
+ self.requiredremoterelease = self._requiredremoterelease_array[idx]
168
+ if self._requiredrelease_diskflag_reading:
169
+ self.requiredrelease = self._requiredrelease_ncarray[0]
170
+ elif self._requiredrelease_ramflag:
171
+ self.requiredrelease = self._requiredrelease_array[idx]
172
+ if self._targetedrelease_diskflag_reading:
173
+ self.targetedrelease = self._targetedrelease_ncarray[0]
174
+ elif self._targetedrelease_ramflag:
175
+ self.targetedrelease = self._targetedrelease_array[idx]
176
+ if self._actualrelease_diskflag_reading:
177
+ self.actualrelease = self._actualrelease_ncarray[0]
178
+ elif self._actualrelease_ramflag:
179
+ self.actualrelease = self._actualrelease_array[idx]
180
+ if self._flooddischarge_diskflag_reading:
181
+ self.flooddischarge = self._flooddischarge_ncarray[0]
182
+ elif self._flooddischarge_ramflag:
183
+ self.flooddischarge = self._flooddischarge_array[idx]
184
+ if self._outflow_diskflag_reading:
185
+ self.outflow = self._outflow_ncarray[0]
186
+ elif self._outflow_ramflag:
187
+ self.outflow = self._outflow_array[idx]
188
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
189
+ cdef numpy.int64_t k
190
+ if self._precipitation_diskflag_writing:
191
+ self._precipitation_ncarray[0] = self.precipitation
192
+ if self._precipitation_ramflag:
193
+ self._precipitation_array[idx] = self.precipitation
194
+ if self._adjustedprecipitation_diskflag_writing:
195
+ self._adjustedprecipitation_ncarray[0] = self.adjustedprecipitation
196
+ if self._adjustedprecipitation_ramflag:
197
+ self._adjustedprecipitation_array[idx] = self.adjustedprecipitation
198
+ if self._potentialevaporation_diskflag_writing:
199
+ self._potentialevaporation_ncarray[0] = self.potentialevaporation
200
+ if self._potentialevaporation_ramflag:
201
+ self._potentialevaporation_array[idx] = self.potentialevaporation
202
+ if self._adjustedevaporation_diskflag_writing:
203
+ self._adjustedevaporation_ncarray[0] = self.adjustedevaporation
204
+ if self._adjustedevaporation_ramflag:
205
+ self._adjustedevaporation_array[idx] = self.adjustedevaporation
206
+ if self._actualevaporation_diskflag_writing:
207
+ self._actualevaporation_ncarray[0] = self.actualevaporation
208
+ if self._actualevaporation_ramflag:
209
+ self._actualevaporation_array[idx] = self.actualevaporation
210
+ if self._inflow_diskflag_writing:
211
+ self._inflow_ncarray[0] = self.inflow
212
+ if self._inflow_ramflag:
213
+ self._inflow_array[idx] = self.inflow
214
+ if self._totalremotedischarge_diskflag_writing:
215
+ self._totalremotedischarge_ncarray[0] = self.totalremotedischarge
216
+ if self._totalremotedischarge_ramflag:
217
+ self._totalremotedischarge_array[idx] = self.totalremotedischarge
218
+ if self._naturalremotedischarge_diskflag_writing:
219
+ self._naturalremotedischarge_ncarray[0] = self.naturalremotedischarge
220
+ if self._naturalremotedischarge_ramflag:
221
+ self._naturalremotedischarge_array[idx] = self.naturalremotedischarge
222
+ if self._remotedemand_diskflag_writing:
223
+ self._remotedemand_ncarray[0] = self.remotedemand
224
+ if self._remotedemand_ramflag:
225
+ self._remotedemand_array[idx] = self.remotedemand
226
+ if self._remotefailure_diskflag_writing:
227
+ self._remotefailure_ncarray[0] = self.remotefailure
228
+ if self._remotefailure_ramflag:
229
+ self._remotefailure_array[idx] = self.remotefailure
230
+ if self._requiredremoterelease_diskflag_writing:
231
+ self._requiredremoterelease_ncarray[0] = self.requiredremoterelease
232
+ if self._requiredremoterelease_ramflag:
233
+ self._requiredremoterelease_array[idx] = self.requiredremoterelease
234
+ if self._requiredrelease_diskflag_writing:
235
+ self._requiredrelease_ncarray[0] = self.requiredrelease
236
+ if self._requiredrelease_ramflag:
237
+ self._requiredrelease_array[idx] = self.requiredrelease
238
+ if self._targetedrelease_diskflag_writing:
239
+ self._targetedrelease_ncarray[0] = self.targetedrelease
240
+ if self._targetedrelease_ramflag:
241
+ self._targetedrelease_array[idx] = self.targetedrelease
242
+ if self._actualrelease_diskflag_writing:
243
+ self._actualrelease_ncarray[0] = self.actualrelease
244
+ if self._actualrelease_ramflag:
245
+ self._actualrelease_array[idx] = self.actualrelease
246
+ if self._flooddischarge_diskflag_writing:
247
+ self._flooddischarge_ncarray[0] = self.flooddischarge
248
+ if self._flooddischarge_ramflag:
249
+ self._flooddischarge_array[idx] = self.flooddischarge
250
+ if self._outflow_diskflag_writing:
251
+ self._outflow_ncarray[0] = self.outflow
252
+ if self._outflow_ramflag:
253
+ self._outflow_array[idx] = self.outflow
254
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
255
+ if name == "precipitation":
256
+ self._precipitation_outputpointer = value.p_value
257
+ if name == "adjustedprecipitation":
258
+ self._adjustedprecipitation_outputpointer = value.p_value
259
+ if name == "potentialevaporation":
260
+ self._potentialevaporation_outputpointer = value.p_value
261
+ if name == "adjustedevaporation":
262
+ self._adjustedevaporation_outputpointer = value.p_value
263
+ if name == "actualevaporation":
264
+ self._actualevaporation_outputpointer = value.p_value
265
+ if name == "inflow":
266
+ self._inflow_outputpointer = value.p_value
267
+ if name == "totalremotedischarge":
268
+ self._totalremotedischarge_outputpointer = value.p_value
269
+ if name == "naturalremotedischarge":
270
+ self._naturalremotedischarge_outputpointer = value.p_value
271
+ if name == "remotedemand":
272
+ self._remotedemand_outputpointer = value.p_value
273
+ if name == "remotefailure":
274
+ self._remotefailure_outputpointer = value.p_value
275
+ if name == "requiredremoterelease":
276
+ self._requiredremoterelease_outputpointer = value.p_value
277
+ if name == "requiredrelease":
278
+ self._requiredrelease_outputpointer = value.p_value
279
+ if name == "targetedrelease":
280
+ self._targetedrelease_outputpointer = value.p_value
281
+ if name == "actualrelease":
282
+ self._actualrelease_outputpointer = value.p_value
283
+ if name == "flooddischarge":
284
+ self._flooddischarge_outputpointer = value.p_value
285
+ if name == "outflow":
286
+ self._outflow_outputpointer = value.p_value
287
+ cpdef inline void update_outputs(self) noexcept nogil:
288
+ if self._precipitation_outputflag:
289
+ self._precipitation_outputpointer[0] = self.precipitation
290
+ if self._adjustedprecipitation_outputflag:
291
+ self._adjustedprecipitation_outputpointer[0] = self.adjustedprecipitation
292
+ if self._potentialevaporation_outputflag:
293
+ self._potentialevaporation_outputpointer[0] = self.potentialevaporation
294
+ if self._adjustedevaporation_outputflag:
295
+ self._adjustedevaporation_outputpointer[0] = self.adjustedevaporation
296
+ if self._actualevaporation_outputflag:
297
+ self._actualevaporation_outputpointer[0] = self.actualevaporation
298
+ if self._inflow_outputflag:
299
+ self._inflow_outputpointer[0] = self.inflow
300
+ if self._totalremotedischarge_outputflag:
301
+ self._totalremotedischarge_outputpointer[0] = self.totalremotedischarge
302
+ if self._naturalremotedischarge_outputflag:
303
+ self._naturalremotedischarge_outputpointer[0] = self.naturalremotedischarge
304
+ if self._remotedemand_outputflag:
305
+ self._remotedemand_outputpointer[0] = self.remotedemand
306
+ if self._remotefailure_outputflag:
307
+ self._remotefailure_outputpointer[0] = self.remotefailure
308
+ if self._requiredremoterelease_outputflag:
309
+ self._requiredremoterelease_outputpointer[0] = self.requiredremoterelease
310
+ if self._requiredrelease_outputflag:
311
+ self._requiredrelease_outputpointer[0] = self.requiredrelease
312
+ if self._targetedrelease_outputflag:
313
+ self._targetedrelease_outputpointer[0] = self.targetedrelease
314
+ if self._actualrelease_outputflag:
315
+ self._actualrelease_outputpointer[0] = self.actualrelease
316
+ if self._flooddischarge_outputflag:
317
+ self._flooddischarge_outputpointer[0] = self.flooddischarge
318
+ if self._outflow_outputflag:
319
+ self._outflow_outputpointer[0] = self.outflow
320
+ @cython.final
321
+ cdef class StateSequences:
322
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
323
+ cdef numpy.int64_t k
324
+ if self._watervolume_diskflag_reading:
325
+ self.watervolume = self._watervolume_ncarray[0]
326
+ elif self._watervolume_ramflag:
327
+ self.watervolume = self._watervolume_array[idx]
328
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
329
+ cdef numpy.int64_t k
330
+ if self._watervolume_diskflag_writing:
331
+ self._watervolume_ncarray[0] = self.watervolume
332
+ if self._watervolume_ramflag:
333
+ self._watervolume_array[idx] = self.watervolume
334
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
335
+ if name == "watervolume":
336
+ self._watervolume_outputpointer = value.p_value
337
+ cpdef inline void update_outputs(self) noexcept nogil:
338
+ if self._watervolume_outputflag:
339
+ self._watervolume_outputpointer[0] = self.watervolume
340
+ @cython.final
341
+ cdef class LogSequences:
342
+ pass
343
+ @cython.final
344
+ cdef class OutletSequences:
345
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
346
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
347
+ if name == "q":
348
+ self.q = pointer.p_value
349
+ cpdef get_value(self, str name):
350
+ cdef numpy.int64_t idx
351
+ if name == "q":
352
+ return self.q[0]
353
+ cpdef set_value(self, str name, value):
354
+ if name == "q":
355
+ self.q[0] = value
356
+ @cython.final
357
+ cdef class NumConsts:
358
+ pass
359
+ @cython.final
360
+ cdef class NumVars:
361
+ pass
362
+ @cython.final
363
+ cdef class Model:
364
+ def __init__(self):
365
+ super().__init__()
366
+ self.pemodel = None
367
+ self.pemodel_is_mainmodel = False
368
+ self.precipmodel = None
369
+ self.precipmodel_is_mainmodel = False
370
+ def get_pemodel(self) -> masterinterface.MasterInterface | None:
371
+ return self.pemodel
372
+ def set_pemodel(self, pemodel: masterinterface.MasterInterface | None) -> None:
373
+ self.pemodel = pemodel
374
+ def get_precipmodel(self) -> masterinterface.MasterInterface | None:
375
+ return self.precipmodel
376
+ def set_precipmodel(self, precipmodel: masterinterface.MasterInterface | None) -> None:
377
+ self.precipmodel = precipmodel
378
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
379
+ self.idx_sim = idx
380
+ self.reset_reuseflags()
381
+ self.load_data(idx)
382
+ self.update_inlets()
383
+ self.solve()
384
+ self.update_outlets()
385
+ self.update_outputs()
386
+ cpdef void reset_reuseflags(self) noexcept nogil:
387
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
388
+ self.pemodel.reset_reuseflags()
389
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
390
+ self.precipmodel.reset_reuseflags()
391
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
392
+ self.idx_sim = idx
393
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
394
+ self.pemodel.load_data(idx)
395
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
396
+ self.precipmodel.load_data(idx)
397
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
398
+ self.idx_sim = idx
399
+ self.sequences.factors.save_data(idx)
400
+ self.sequences.fluxes.save_data(idx)
401
+ self.sequences.states.save_data(idx)
402
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
403
+ self.pemodel.save_data(idx)
404
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
405
+ self.precipmodel.save_data(idx)
406
+ cpdef void new2old(self) noexcept nogil:
407
+ self.sequences.old_states.watervolume = self.sequences.new_states.watervolume
408
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
409
+ self.pemodel.new2old()
410
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
411
+ self.precipmodel.new2old()
412
+ cpdef inline void update_inlets(self) noexcept nogil:
413
+ self.calc_precipitation_v1()
414
+ self.calc_potentialevaporation_v1()
415
+ self.calc_adjustedevaporation_v1()
416
+ self.pic_inflow_v1()
417
+ self.calc_naturalremotedischarge_v1()
418
+ self.calc_remotedemand_v1()
419
+ self.calc_remotefailure_v1()
420
+ self.calc_requiredremoterelease_v1()
421
+ self.calc_requiredrelease_v1()
422
+ self.calc_targetedrelease_v1()
423
+ cpdef inline void update_outlets(self) noexcept nogil:
424
+ self.calc_waterlevel_v1()
425
+ self.pass_outflow_v1()
426
+ self.update_loggedoutflow_v1()
427
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
428
+ self.idx_sim = idx
429
+ self.pic_totalremotedischarge_v1()
430
+ self.update_loggedtotalremotedischarge_v1()
431
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
432
+ self.idx_sim = idx
433
+ pass
434
+ cpdef inline void update_outputs(self) noexcept nogil:
435
+ self.sequences.factors.update_outputs()
436
+ self.sequences.fluxes.update_outputs()
437
+ self.sequences.states.update_outputs()
438
+ cpdef inline void solve(self) noexcept nogil:
439
+ cdef numpy.int64_t decrease_dt
440
+ self.numvars.use_relerror = not isnan( self.parameters.solver.relerrormax )
441
+ self.numvars.t0, self.numvars.t1 = 0.0, 1.0
442
+ self.numvars.dt_est = 1.0 * self.parameters.solver.reldtmax
443
+ self.numvars.f0_ready = False
444
+ self.reset_sum_fluxes()
445
+ while self.numvars.t0 < self.numvars.t1 - 1e-14:
446
+ self.numvars.last_abserror = inf
447
+ self.numvars.last_relerror = inf
448
+ self.numvars.dt = min( self.numvars.t1 - self.numvars.t0, 1.0 * self.parameters.solver.reldtmax, max(self.numvars.dt_est, self.parameters.solver.reldtmin), )
449
+ if not self.numvars.f0_ready:
450
+ self.calculate_single_terms()
451
+ self.numvars.idx_method = 0
452
+ self.numvars.idx_stage = 0
453
+ self.set_point_fluxes()
454
+ self.set_point_states()
455
+ self.set_result_states()
456
+ for self.numvars.idx_method in range(1, self.numconsts.nmb_methods + 1):
457
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method):
458
+ self.get_point_states()
459
+ self.calculate_single_terms()
460
+ self.set_point_fluxes()
461
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method + 1):
462
+ self.integrate_fluxes()
463
+ self.calculate_full_terms()
464
+ self.set_point_states()
465
+ self.set_result_fluxes()
466
+ self.set_result_states()
467
+ self.calculate_error()
468
+ self.extrapolate_error()
469
+ if self.numvars.idx_method == 1:
470
+ continue
471
+ if (self.numvars.abserror <= self.parameters.solver.abserrormax) or ( self.numvars.relerror <= self.parameters.solver.relerrormax ):
472
+ self.numvars.dt_est = self.numconsts.dt_increase * self.numvars.dt
473
+ self.numvars.f0_ready = False
474
+ self.addup_fluxes()
475
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
476
+ self.new2old()
477
+ break
478
+ decrease_dt = self.numvars.dt > self.parameters.solver.reldtmin
479
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_abserror > self.parameters.solver.abserrormax )
480
+ if self.numvars.use_relerror:
481
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_relerror > self.parameters.solver.relerrormax )
482
+ if decrease_dt:
483
+ self.numvars.f0_ready = True
484
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
485
+ break
486
+ self.numvars.last_abserror = self.numvars.abserror
487
+ self.numvars.last_relerror = self.numvars.relerror
488
+ self.numvars.f0_ready = True
489
+ else:
490
+ if self.numvars.dt <= self.parameters.solver.reldtmin:
491
+ self.numvars.f0_ready = False
492
+ self.addup_fluxes()
493
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
494
+ self.new2old()
495
+ else:
496
+ self.numvars.f0_ready = True
497
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
498
+ self.get_sum_fluxes()
499
+ cpdef inline void calculate_single_terms(self) noexcept nogil:
500
+ self.numvars.nmb_calls = self.numvars.nmb_calls + 1
501
+ self.calc_adjustedprecipitation_v1()
502
+ self.pic_inflow_v1()
503
+ self.calc_waterlevel_v1()
504
+ self.calc_actualevaporation_v1()
505
+ self.calc_actualrelease_v1()
506
+ self.calc_flooddischarge_v1()
507
+ self.calc_outflow_v1()
508
+ cpdef inline void calculate_full_terms(self) noexcept nogil:
509
+ self.update_watervolume_v1()
510
+ cpdef inline void get_point_states(self) noexcept nogil:
511
+ self.sequences.states.watervolume = self.sequences.states._watervolume_points[self.numvars.idx_stage]
512
+ cpdef inline void set_point_states(self) noexcept nogil:
513
+ self.sequences.states._watervolume_points[self.numvars.idx_stage] = self.sequences.states.watervolume
514
+ cpdef inline void set_result_states(self) noexcept nogil:
515
+ self.sequences.states._watervolume_results[self.numvars.idx_method] = self.sequences.states.watervolume
516
+ cpdef inline void get_sum_fluxes(self) noexcept nogil:
517
+ self.sequences.fluxes.adjustedprecipitation = self.sequences.fluxes._adjustedprecipitation_sum
518
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes._actualevaporation_sum
519
+ self.sequences.fluxes.inflow = self.sequences.fluxes._inflow_sum
520
+ self.sequences.fluxes.actualrelease = self.sequences.fluxes._actualrelease_sum
521
+ self.sequences.fluxes.flooddischarge = self.sequences.fluxes._flooddischarge_sum
522
+ self.sequences.fluxes.outflow = self.sequences.fluxes._outflow_sum
523
+ cpdef inline void set_point_fluxes(self) noexcept nogil:
524
+ self.sequences.fluxes._adjustedprecipitation_points[self.numvars.idx_stage] = self.sequences.fluxes.adjustedprecipitation
525
+ self.sequences.fluxes._actualevaporation_points[self.numvars.idx_stage] = self.sequences.fluxes.actualevaporation
526
+ self.sequences.fluxes._inflow_points[self.numvars.idx_stage] = self.sequences.fluxes.inflow
527
+ self.sequences.fluxes._actualrelease_points[self.numvars.idx_stage] = self.sequences.fluxes.actualrelease
528
+ self.sequences.fluxes._flooddischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.flooddischarge
529
+ self.sequences.fluxes._outflow_points[self.numvars.idx_stage] = self.sequences.fluxes.outflow
530
+ cpdef inline void set_result_fluxes(self) noexcept nogil:
531
+ self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method] = self.sequences.fluxes.adjustedprecipitation
532
+ self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method] = self.sequences.fluxes.actualevaporation
533
+ self.sequences.fluxes._inflow_results[self.numvars.idx_method] = self.sequences.fluxes.inflow
534
+ self.sequences.fluxes._actualrelease_results[self.numvars.idx_method] = self.sequences.fluxes.actualrelease
535
+ self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method] = self.sequences.fluxes.flooddischarge
536
+ self.sequences.fluxes._outflow_results[self.numvars.idx_method] = self.sequences.fluxes.outflow
537
+ cpdef inline void integrate_fluxes(self) noexcept nogil:
538
+ cdef numpy.int64_t jdx
539
+ self.sequences.fluxes.adjustedprecipitation = 0.
540
+ for jdx in range(self.numvars.idx_method):
541
+ self.sequences.fluxes.adjustedprecipitation = self.sequences.fluxes.adjustedprecipitation +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._adjustedprecipitation_points[jdx]
542
+ self.sequences.fluxes.actualevaporation = 0.
543
+ for jdx in range(self.numvars.idx_method):
544
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.actualevaporation +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._actualevaporation_points[jdx]
545
+ self.sequences.fluxes.inflow = 0.
546
+ for jdx in range(self.numvars.idx_method):
547
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._inflow_points[jdx]
548
+ self.sequences.fluxes.actualrelease = 0.
549
+ for jdx in range(self.numvars.idx_method):
550
+ self.sequences.fluxes.actualrelease = self.sequences.fluxes.actualrelease +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._actualrelease_points[jdx]
551
+ self.sequences.fluxes.flooddischarge = 0.
552
+ for jdx in range(self.numvars.idx_method):
553
+ self.sequences.fluxes.flooddischarge = self.sequences.fluxes.flooddischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._flooddischarge_points[jdx]
554
+ self.sequences.fluxes.outflow = 0.
555
+ for jdx in range(self.numvars.idx_method):
556
+ self.sequences.fluxes.outflow = self.sequences.fluxes.outflow +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._outflow_points[jdx]
557
+ cpdef inline void reset_sum_fluxes(self) noexcept nogil:
558
+ self.sequences.fluxes._adjustedprecipitation_sum = 0.
559
+ self.sequences.fluxes._actualevaporation_sum = 0.
560
+ self.sequences.fluxes._inflow_sum = 0.
561
+ self.sequences.fluxes._actualrelease_sum = 0.
562
+ self.sequences.fluxes._flooddischarge_sum = 0.
563
+ self.sequences.fluxes._outflow_sum = 0.
564
+ cpdef inline void addup_fluxes(self) noexcept nogil:
565
+ self.sequences.fluxes._adjustedprecipitation_sum = self.sequences.fluxes._adjustedprecipitation_sum + self.sequences.fluxes.adjustedprecipitation
566
+ self.sequences.fluxes._actualevaporation_sum = self.sequences.fluxes._actualevaporation_sum + self.sequences.fluxes.actualevaporation
567
+ self.sequences.fluxes._inflow_sum = self.sequences.fluxes._inflow_sum + self.sequences.fluxes.inflow
568
+ self.sequences.fluxes._actualrelease_sum = self.sequences.fluxes._actualrelease_sum + self.sequences.fluxes.actualrelease
569
+ self.sequences.fluxes._flooddischarge_sum = self.sequences.fluxes._flooddischarge_sum + self.sequences.fluxes.flooddischarge
570
+ self.sequences.fluxes._outflow_sum = self.sequences.fluxes._outflow_sum + self.sequences.fluxes.outflow
571
+ cpdef inline void calculate_error(self) noexcept nogil:
572
+ cdef double abserror
573
+ self.numvars.abserror = 0.
574
+ if self.numvars.use_relerror:
575
+ self.numvars.relerror = 0.
576
+ else:
577
+ self.numvars.relerror = inf
578
+ abserror = fabs(self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method]-self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method-1])
579
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
580
+ if self.numvars.use_relerror:
581
+ if self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method] == 0.:
582
+ self.numvars.relerror = inf
583
+ else:
584
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method]))
585
+ abserror = fabs(self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method]-self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method-1])
586
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
587
+ if self.numvars.use_relerror:
588
+ if self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method] == 0.:
589
+ self.numvars.relerror = inf
590
+ else:
591
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method]))
592
+ abserror = fabs(self.sequences.fluxes._inflow_results[self.numvars.idx_method]-self.sequences.fluxes._inflow_results[self.numvars.idx_method-1])
593
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
594
+ if self.numvars.use_relerror:
595
+ if self.sequences.fluxes._inflow_results[self.numvars.idx_method] == 0.:
596
+ self.numvars.relerror = inf
597
+ else:
598
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._inflow_results[self.numvars.idx_method]))
599
+ abserror = fabs(self.sequences.fluxes._actualrelease_results[self.numvars.idx_method]-self.sequences.fluxes._actualrelease_results[self.numvars.idx_method-1])
600
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
601
+ if self.numvars.use_relerror:
602
+ if self.sequences.fluxes._actualrelease_results[self.numvars.idx_method] == 0.:
603
+ self.numvars.relerror = inf
604
+ else:
605
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._actualrelease_results[self.numvars.idx_method]))
606
+ abserror = fabs(self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method]-self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method-1])
607
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
608
+ if self.numvars.use_relerror:
609
+ if self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method] == 0.:
610
+ self.numvars.relerror = inf
611
+ else:
612
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method]))
613
+ abserror = fabs(self.sequences.fluxes._outflow_results[self.numvars.idx_method]-self.sequences.fluxes._outflow_results[self.numvars.idx_method-1])
614
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
615
+ if self.numvars.use_relerror:
616
+ if self.sequences.fluxes._outflow_results[self.numvars.idx_method] == 0.:
617
+ self.numvars.relerror = inf
618
+ else:
619
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._outflow_results[self.numvars.idx_method]))
620
+ cpdef inline void extrapolate_error(self) noexcept nogil:
621
+ if self.numvars.abserror <= 0.0:
622
+ self.numvars.extrapolated_abserror = 0.0
623
+ self.numvars.extrapolated_relerror = 0.0
624
+ else:
625
+ if self.numvars.idx_method > 2:
626
+ self.numvars.extrapolated_abserror = exp( log(self.numvars.abserror) + ( log(self.numvars.abserror) - log(self.numvars.last_abserror) ) * (self.numconsts.nmb_methods - self.numvars.idx_method) )
627
+ else:
628
+ self.numvars.extrapolated_abserror = -999.9
629
+ if self.numvars.use_relerror:
630
+ if self.numvars.idx_method > 2:
631
+ if isinf(self.numvars.relerror):
632
+ self.numvars.extrapolated_relerror = inf
633
+ else:
634
+ self.numvars.extrapolated_relerror = exp( log(self.numvars.relerror) + ( log(self.numvars.relerror) - log(self.numvars.last_relerror) ) * (self.numconsts.nmb_methods - self.numvars.idx_method) )
635
+ else:
636
+ self.numvars.extrapolated_relerror = -999.9
637
+ else:
638
+ self.numvars.extrapolated_relerror = inf
639
+ cpdef inline void pic_totalremotedischarge_v1(self) noexcept nogil:
640
+ self.sequences.fluxes.totalremotedischarge = self.sequences.receivers.q[0]
641
+ cpdef inline void update_loggedtotalremotedischarge_v1(self) noexcept nogil:
642
+ cdef numpy.int64_t i
643
+ for i in range(self.parameters.control.nmblogentries - 1, 0, -1):
644
+ self.sequences.logs.loggedtotalremotedischarge[i] = self.sequences.logs.loggedtotalremotedischarge[i - 1]
645
+ self.sequences.logs.loggedtotalremotedischarge[0] = self.sequences.fluxes.totalremotedischarge
646
+ cpdef inline void calc_precipitation_v1(self) noexcept nogil:
647
+ if self.precipmodel is None:
648
+ self.sequences.fluxes.precipitation = 0.0
649
+ elif self.precipmodel_typeid == 2:
650
+ (<masterinterface.MasterInterface>self.precipmodel).determine_precipitation()
651
+ self.sequences.fluxes.precipitation = (<masterinterface.MasterInterface>self.precipmodel).get_precipitation(0)
652
+ cpdef inline void calc_potentialevaporation_v1(self) noexcept nogil:
653
+ if self.pemodel is None:
654
+ self.sequences.fluxes.potentialevaporation = 0.0
655
+ elif self.pemodel_typeid == 1:
656
+ (<masterinterface.MasterInterface>self.pemodel).determine_potentialevapotranspiration()
657
+ self.sequences.fluxes.potentialevaporation = (<masterinterface.MasterInterface>self.pemodel).get_potentialevapotranspiration(0)
658
+ cpdef inline void calc_adjustedevaporation_v1(self) noexcept nogil:
659
+ cdef double d_old
660
+ cdef double d_new
661
+ cdef double d_weight
662
+ d_weight = self.parameters.control.weightevaporation
663
+ d_new = self.parameters.derived.inputfactor * self.parameters.control.correctionevaporation * self.sequences.fluxes.potentialevaporation
664
+ d_old = self.sequences.logs.loggedadjustedevaporation[0]
665
+ self.sequences.fluxes.adjustedevaporation = d_weight * d_new + (1.0 - d_weight) * d_old
666
+ self.sequences.logs.loggedadjustedevaporation[0] = self.sequences.fluxes.adjustedevaporation
667
+ cpdef inline void pic_inflow_v1(self) noexcept nogil:
668
+ cdef numpy.int64_t idx
669
+ self.sequences.fluxes.inflow = 0.0
670
+ for idx in range(self.sequences.inlets.len_q):
671
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.q[idx][0])
672
+ cpdef inline void calc_naturalremotedischarge_v1(self) noexcept nogil:
673
+ cdef numpy.int64_t idx
674
+ self.sequences.fluxes.naturalremotedischarge = 0.0
675
+ for idx in range(self.parameters.control.nmblogentries):
676
+ self.sequences.fluxes.naturalremotedischarge = self.sequences.fluxes.naturalremotedischarge + (( self.sequences.logs.loggedtotalremotedischarge[idx] - self.sequences.logs.loggedoutflow[idx] ))
677
+ if self.sequences.fluxes.naturalremotedischarge > 0.0:
678
+ self.sequences.fluxes.naturalremotedischarge = self.sequences.fluxes.naturalremotedischarge / (self.parameters.control.nmblogentries)
679
+ else:
680
+ self.sequences.fluxes.naturalremotedischarge = 0.0
681
+ cpdef inline void calc_remotedemand_v1(self) noexcept nogil:
682
+ cdef double d_rdm
683
+ d_rdm = self.parameters.control.remotedischargeminimum[self.parameters.derived.toy[self.idx_sim]]
684
+ self.sequences.fluxes.remotedemand = max(d_rdm - self.sequences.fluxes.naturalremotedischarge, 0.0)
685
+ cpdef inline void calc_remotefailure_v1(self) noexcept nogil:
686
+ cdef numpy.int64_t idx
687
+ self.sequences.fluxes.remotefailure = 0
688
+ for idx in range(self.parameters.control.nmblogentries):
689
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure - (self.sequences.logs.loggedtotalremotedischarge[idx])
690
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure / (self.parameters.control.nmblogentries)
691
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure + (self.parameters.control.remotedischargeminimum[self.parameters.derived.toy[self.idx_sim]])
692
+ cpdef inline void calc_requiredremoterelease_v1(self) noexcept nogil:
693
+ self.sequences.fluxes.requiredremoterelease = self.sequences.fluxes.remotedemand + ( smoothutils.smooth_logistic1( self.sequences.fluxes.remotefailure, self.parameters.derived.remotedischargesmoothpar[self.parameters.derived.toy[self.idx_sim]] ) * self.parameters.control.remotedischargesafety[self.parameters.derived.toy[self.idx_sim]] )
694
+ cpdef inline void calc_requiredrelease_v1(self) noexcept nogil:
695
+ self.sequences.fluxes.requiredrelease = self.parameters.control.neardischargeminimumthreshold[self.parameters.derived.toy[self.idx_sim]]
696
+ self.sequences.fluxes.requiredrelease = self.sequences.fluxes.requiredrelease + smoothutils.smooth_logistic2( self.sequences.fluxes.requiredremoterelease - self.sequences.fluxes.requiredrelease, self.parameters.derived.neardischargeminimumsmoothpar2[self.parameters.derived.toy[self.idx_sim]], )
697
+ cpdef inline void calc_targetedrelease_v1(self) noexcept nogil:
698
+ if self.parameters.control.restricttargetedrelease:
699
+ self.sequences.fluxes.targetedrelease = smoothutils.smooth_logistic1( self.sequences.fluxes.inflow - self.parameters.control.neardischargeminimumthreshold[self.parameters.derived.toy[self.idx_sim]], self.parameters.derived.neardischargeminimumsmoothpar1[self.parameters.derived.toy[self.idx_sim]], )
700
+ self.sequences.fluxes.targetedrelease = ( self.sequences.fluxes.targetedrelease * self.sequences.fluxes.requiredrelease + (1.0 - self.sequences.fluxes.targetedrelease) * self.sequences.fluxes.inflow )
701
+ else:
702
+ self.sequences.fluxes.targetedrelease = self.sequences.fluxes.requiredrelease
703
+ cpdef inline void calc_adjustedprecipitation_v1(self) noexcept nogil:
704
+ self.sequences.fluxes.adjustedprecipitation = ( self.parameters.derived.inputfactor * self.parameters.control.correctionprecipitation * self.sequences.fluxes.precipitation )
705
+ cpdef inline void calc_waterlevel_v1(self) noexcept nogil:
706
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
707
+ self.parameters.control.watervolume2waterlevel.calculate_values()
708
+ self.sequences.factors.waterlevel = self.parameters.control.watervolume2waterlevel.outputs[0]
709
+ cpdef inline void calc_actualevaporation_v1(self) noexcept nogil:
710
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.adjustedevaporation * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.thresholdevaporation, self.parameters.derived.smoothparevaporation )
711
+ cpdef inline void calc_actualrelease_v1(self) noexcept nogil:
712
+ self.sequences.fluxes.actualrelease = self.sequences.fluxes.targetedrelease * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelminimumthreshold, self.parameters.derived.waterlevelminimumsmoothpar, )
713
+ cpdef inline void calc_flooddischarge_v1(self) noexcept nogil:
714
+ self.parameters.control.waterlevel2flooddischarge.inputs[0] = self.sequences.factors.waterlevel
715
+ self.parameters.control.waterlevel2flooddischarge.calculate_values(self.parameters.derived.toy[self.idx_sim])
716
+ self.sequences.fluxes.flooddischarge = self.parameters.control.waterlevel2flooddischarge.outputs[0]
717
+ cpdef inline void calc_outflow_v1(self) noexcept nogil:
718
+ self.sequences.fluxes.outflow = max(self.sequences.fluxes.actualrelease + self.sequences.fluxes.flooddischarge, 0.0)
719
+ cpdef inline void update_watervolume_v1(self) noexcept nogil:
720
+ self.sequences.new_states.watervolume = self.sequences.old_states.watervolume + self.parameters.derived.seconds / 1e6 * ( self.sequences.fluxes.adjustedprecipitation - self.sequences.fluxes.actualevaporation + self.sequences.fluxes.inflow - self.sequences.fluxes.outflow )
721
+ cpdef inline void pass_outflow_v1(self) noexcept nogil:
722
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.outflow)
723
+ cpdef inline void update_loggedoutflow_v1(self) noexcept nogil:
724
+ cdef numpy.int64_t idx
725
+ for idx in range(self.parameters.control.nmblogentries - 1, 0, -1):
726
+ self.sequences.logs.loggedoutflow[idx] = self.sequences.logs.loggedoutflow[idx - 1]
727
+ self.sequences.logs.loggedoutflow[0] = self.sequences.fluxes.outflow
728
+ cpdef inline void pic_totalremotedischarge(self) noexcept nogil:
729
+ self.sequences.fluxes.totalremotedischarge = self.sequences.receivers.q[0]
730
+ cpdef inline void update_loggedtotalremotedischarge(self) noexcept nogil:
731
+ cdef numpy.int64_t i
732
+ for i in range(self.parameters.control.nmblogentries - 1, 0, -1):
733
+ self.sequences.logs.loggedtotalremotedischarge[i] = self.sequences.logs.loggedtotalremotedischarge[i - 1]
734
+ self.sequences.logs.loggedtotalremotedischarge[0] = self.sequences.fluxes.totalremotedischarge
735
+ cpdef inline void calc_precipitation(self) noexcept nogil:
736
+ if self.precipmodel is None:
737
+ self.sequences.fluxes.precipitation = 0.0
738
+ elif self.precipmodel_typeid == 2:
739
+ (<masterinterface.MasterInterface>self.precipmodel).determine_precipitation()
740
+ self.sequences.fluxes.precipitation = (<masterinterface.MasterInterface>self.precipmodel).get_precipitation(0)
741
+ cpdef inline void calc_potentialevaporation(self) noexcept nogil:
742
+ if self.pemodel is None:
743
+ self.sequences.fluxes.potentialevaporation = 0.0
744
+ elif self.pemodel_typeid == 1:
745
+ (<masterinterface.MasterInterface>self.pemodel).determine_potentialevapotranspiration()
746
+ self.sequences.fluxes.potentialevaporation = (<masterinterface.MasterInterface>self.pemodel).get_potentialevapotranspiration(0)
747
+ cpdef inline void calc_adjustedevaporation(self) noexcept nogil:
748
+ cdef double d_old
749
+ cdef double d_new
750
+ cdef double d_weight
751
+ d_weight = self.parameters.control.weightevaporation
752
+ d_new = self.parameters.derived.inputfactor * self.parameters.control.correctionevaporation * self.sequences.fluxes.potentialevaporation
753
+ d_old = self.sequences.logs.loggedadjustedevaporation[0]
754
+ self.sequences.fluxes.adjustedevaporation = d_weight * d_new + (1.0 - d_weight) * d_old
755
+ self.sequences.logs.loggedadjustedevaporation[0] = self.sequences.fluxes.adjustedevaporation
756
+ cpdef inline void pic_inflow(self) noexcept nogil:
757
+ cdef numpy.int64_t idx
758
+ self.sequences.fluxes.inflow = 0.0
759
+ for idx in range(self.sequences.inlets.len_q):
760
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.q[idx][0])
761
+ cpdef inline void calc_naturalremotedischarge(self) noexcept nogil:
762
+ cdef numpy.int64_t idx
763
+ self.sequences.fluxes.naturalremotedischarge = 0.0
764
+ for idx in range(self.parameters.control.nmblogentries):
765
+ self.sequences.fluxes.naturalremotedischarge = self.sequences.fluxes.naturalremotedischarge + (( self.sequences.logs.loggedtotalremotedischarge[idx] - self.sequences.logs.loggedoutflow[idx] ))
766
+ if self.sequences.fluxes.naturalremotedischarge > 0.0:
767
+ self.sequences.fluxes.naturalremotedischarge = self.sequences.fluxes.naturalremotedischarge / (self.parameters.control.nmblogentries)
768
+ else:
769
+ self.sequences.fluxes.naturalremotedischarge = 0.0
770
+ cpdef inline void calc_remotedemand(self) noexcept nogil:
771
+ cdef double d_rdm
772
+ d_rdm = self.parameters.control.remotedischargeminimum[self.parameters.derived.toy[self.idx_sim]]
773
+ self.sequences.fluxes.remotedemand = max(d_rdm - self.sequences.fluxes.naturalremotedischarge, 0.0)
774
+ cpdef inline void calc_remotefailure(self) noexcept nogil:
775
+ cdef numpy.int64_t idx
776
+ self.sequences.fluxes.remotefailure = 0
777
+ for idx in range(self.parameters.control.nmblogentries):
778
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure - (self.sequences.logs.loggedtotalremotedischarge[idx])
779
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure / (self.parameters.control.nmblogentries)
780
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure + (self.parameters.control.remotedischargeminimum[self.parameters.derived.toy[self.idx_sim]])
781
+ cpdef inline void calc_requiredremoterelease(self) noexcept nogil:
782
+ self.sequences.fluxes.requiredremoterelease = self.sequences.fluxes.remotedemand + ( smoothutils.smooth_logistic1( self.sequences.fluxes.remotefailure, self.parameters.derived.remotedischargesmoothpar[self.parameters.derived.toy[self.idx_sim]] ) * self.parameters.control.remotedischargesafety[self.parameters.derived.toy[self.idx_sim]] )
783
+ cpdef inline void calc_requiredrelease(self) noexcept nogil:
784
+ self.sequences.fluxes.requiredrelease = self.parameters.control.neardischargeminimumthreshold[self.parameters.derived.toy[self.idx_sim]]
785
+ self.sequences.fluxes.requiredrelease = self.sequences.fluxes.requiredrelease + smoothutils.smooth_logistic2( self.sequences.fluxes.requiredremoterelease - self.sequences.fluxes.requiredrelease, self.parameters.derived.neardischargeminimumsmoothpar2[self.parameters.derived.toy[self.idx_sim]], )
786
+ cpdef inline void calc_targetedrelease(self) noexcept nogil:
787
+ if self.parameters.control.restricttargetedrelease:
788
+ self.sequences.fluxes.targetedrelease = smoothutils.smooth_logistic1( self.sequences.fluxes.inflow - self.parameters.control.neardischargeminimumthreshold[self.parameters.derived.toy[self.idx_sim]], self.parameters.derived.neardischargeminimumsmoothpar1[self.parameters.derived.toy[self.idx_sim]], )
789
+ self.sequences.fluxes.targetedrelease = ( self.sequences.fluxes.targetedrelease * self.sequences.fluxes.requiredrelease + (1.0 - self.sequences.fluxes.targetedrelease) * self.sequences.fluxes.inflow )
790
+ else:
791
+ self.sequences.fluxes.targetedrelease = self.sequences.fluxes.requiredrelease
792
+ cpdef inline void calc_adjustedprecipitation(self) noexcept nogil:
793
+ self.sequences.fluxes.adjustedprecipitation = ( self.parameters.derived.inputfactor * self.parameters.control.correctionprecipitation * self.sequences.fluxes.precipitation )
794
+ cpdef inline void calc_waterlevel(self) noexcept nogil:
795
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
796
+ self.parameters.control.watervolume2waterlevel.calculate_values()
797
+ self.sequences.factors.waterlevel = self.parameters.control.watervolume2waterlevel.outputs[0]
798
+ cpdef inline void calc_actualevaporation(self) noexcept nogil:
799
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.adjustedevaporation * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.thresholdevaporation, self.parameters.derived.smoothparevaporation )
800
+ cpdef inline void calc_actualrelease(self) noexcept nogil:
801
+ self.sequences.fluxes.actualrelease = self.sequences.fluxes.targetedrelease * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelminimumthreshold, self.parameters.derived.waterlevelminimumsmoothpar, )
802
+ cpdef inline void calc_flooddischarge(self) noexcept nogil:
803
+ self.parameters.control.waterlevel2flooddischarge.inputs[0] = self.sequences.factors.waterlevel
804
+ self.parameters.control.waterlevel2flooddischarge.calculate_values(self.parameters.derived.toy[self.idx_sim])
805
+ self.sequences.fluxes.flooddischarge = self.parameters.control.waterlevel2flooddischarge.outputs[0]
806
+ cpdef inline void calc_outflow(self) noexcept nogil:
807
+ self.sequences.fluxes.outflow = max(self.sequences.fluxes.actualrelease + self.sequences.fluxes.flooddischarge, 0.0)
808
+ cpdef inline void update_watervolume(self) noexcept nogil:
809
+ self.sequences.new_states.watervolume = self.sequences.old_states.watervolume + self.parameters.derived.seconds / 1e6 * ( self.sequences.fluxes.adjustedprecipitation - self.sequences.fluxes.actualevaporation + self.sequences.fluxes.inflow - self.sequences.fluxes.outflow )
810
+ cpdef inline void pass_outflow(self) noexcept nogil:
811
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.outflow)
812
+ cpdef inline void update_loggedoutflow(self) noexcept nogil:
813
+ cdef numpy.int64_t idx
814
+ for idx in range(self.parameters.control.nmblogentries - 1, 0, -1):
815
+ self.sequences.logs.loggedoutflow[idx] = self.sequences.logs.loggedoutflow[idx - 1]
816
+ self.sequences.logs.loggedoutflow[0] = self.sequences.fluxes.outflow