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,1263 @@
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
+
44
+ cpdef void init_gateheight_callback(self):
45
+ self.gateheight_callback = do_nothing
46
+ cdef CallbackWrapper wrapper = CallbackWrapper()
47
+ wrapper.callback = do_nothing
48
+ self._gateheight_wrapper = wrapper
49
+
50
+ cpdef CallbackWrapper get_gateheight_callback(self):
51
+ return self._gateheight_wrapper
52
+
53
+ cpdef void set_gateheight_callback(self, CallbackWrapper wrapper):
54
+ self.gateheight_callback = wrapper.callback
55
+ self._gateheight_wrapper = wrapper
56
+
57
+ @cython.final
58
+ cdef class DerivedParameters:
59
+ pass
60
+ @cython.final
61
+ cdef class FixedParameters:
62
+ pass
63
+ @cython.final
64
+ cdef class Sequences:
65
+ pass
66
+ @cython.final
67
+ cdef class InletSequences:
68
+ cpdef inline alloc(self, name, numpy.int64_t length):
69
+ if name == "longq":
70
+ self._longq_length_0 = length
71
+ self._longq_ready = numpy.full(length, 0, dtype=numpy.int64)
72
+ self.longq = <double**> PyMem_Malloc(length * sizeof(double*))
73
+ if name == "latq":
74
+ self._latq_length_0 = length
75
+ self._latq_ready = numpy.full(length, 0, dtype=numpy.int64)
76
+ self.latq = <double**> PyMem_Malloc(length * sizeof(double*))
77
+ cpdef inline dealloc(self, name):
78
+ if name == "longq":
79
+ PyMem_Free(self.longq)
80
+ if name == "latq":
81
+ PyMem_Free(self.latq)
82
+ cpdef inline set_pointer1d(self, str name, pointerutils.Double value, numpy.int64_t idx):
83
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
84
+ if name == "longq":
85
+ self.longq[idx] = pointer.p_value
86
+ self._longq_ready[idx] = 1
87
+ if name == "latq":
88
+ self.latq[idx] = pointer.p_value
89
+ self._latq_ready[idx] = 1
90
+ cpdef get_value(self, str name):
91
+ cdef numpy.int64_t idx
92
+ if name == "longq":
93
+ values = numpy.empty(self.len_longq)
94
+ for idx in range(self.len_longq):
95
+ pointerutils.check0(self._longq_length_0)
96
+ if self._longq_ready[idx] == 0:
97
+ pointerutils.check1(self._longq_length_0, idx)
98
+ pointerutils.check2(self._longq_ready, idx)
99
+ values[idx] = self.longq[idx][0]
100
+ return values
101
+ if name == "latq":
102
+ values = numpy.empty(self.len_latq)
103
+ for idx in range(self.len_latq):
104
+ pointerutils.check0(self._latq_length_0)
105
+ if self._latq_ready[idx] == 0:
106
+ pointerutils.check1(self._latq_length_0, idx)
107
+ pointerutils.check2(self._latq_ready, idx)
108
+ values[idx] = self.latq[idx][0]
109
+ return values
110
+ cpdef set_value(self, str name, value):
111
+ if name == "longq":
112
+ for idx in range(self.len_longq):
113
+ pointerutils.check0(self._longq_length_0)
114
+ if self._longq_ready[idx] == 0:
115
+ pointerutils.check1(self._longq_length_0, idx)
116
+ pointerutils.check2(self._longq_ready, idx)
117
+ self.longq[idx][0] = value[idx]
118
+ if name == "latq":
119
+ for idx in range(self.len_latq):
120
+ pointerutils.check0(self._latq_length_0)
121
+ if self._latq_ready[idx] == 0:
122
+ pointerutils.check1(self._latq_length_0, idx)
123
+ pointerutils.check2(self._latq_ready, idx)
124
+ self.latq[idx][0] = value[idx]
125
+ @cython.final
126
+ cdef class ReceiverSequences:
127
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
128
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
129
+ if name == "waterlevel":
130
+ self.waterlevel = pointer.p_value
131
+ cpdef get_value(self, str name):
132
+ cdef numpy.int64_t idx
133
+ if name == "waterlevel":
134
+ return self.waterlevel[0]
135
+ cpdef set_value(self, str name, value):
136
+ if name == "waterlevel":
137
+ self.waterlevel[0] = value
138
+ @cython.final
139
+ cdef class FactorSequences:
140
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
141
+ cdef numpy.int64_t jdx0
142
+ cdef numpy.int64_t k
143
+ if self._maxtimestep_diskflag_reading:
144
+ self.maxtimestep = self._maxtimestep_ncarray[0]
145
+ elif self._maxtimestep_ramflag:
146
+ self.maxtimestep = self._maxtimestep_array[idx]
147
+ if self._timestep_diskflag_reading:
148
+ self.timestep = self._timestep_ncarray[0]
149
+ elif self._timestep_ramflag:
150
+ self.timestep = self._timestep_array[idx]
151
+ if self._waterdepth_diskflag_reading:
152
+ self.waterdepth = self._waterdepth_ncarray[0]
153
+ elif self._waterdepth_ramflag:
154
+ self.waterdepth = self._waterdepth_array[idx]
155
+ if self._waterlevel_diskflag_reading:
156
+ self.waterlevel = self._waterlevel_ncarray[0]
157
+ elif self._waterlevel_ramflag:
158
+ self.waterlevel = self._waterlevel_array[idx]
159
+ if self._waterlevels_diskflag_reading:
160
+ k = 0
161
+ for jdx0 in range(self._waterlevels_length_0):
162
+ self.waterlevels[jdx0] = self._waterlevels_ncarray[k]
163
+ k += 1
164
+ elif self._waterlevels_ramflag:
165
+ for jdx0 in range(self._waterlevels_length_0):
166
+ self.waterlevels[jdx0] = self._waterlevels_array[idx, jdx0]
167
+ if self._waterlevelupstream_diskflag_reading:
168
+ self.waterlevelupstream = self._waterlevelupstream_ncarray[0]
169
+ elif self._waterlevelupstream_ramflag:
170
+ self.waterlevelupstream = self._waterlevelupstream_array[idx]
171
+ if self._waterleveldownstream_diskflag_reading:
172
+ self.waterleveldownstream = self._waterleveldownstream_ncarray[0]
173
+ elif self._waterleveldownstream_ramflag:
174
+ self.waterleveldownstream = self._waterleveldownstream_array[idx]
175
+ if self._watervolumeupstream_diskflag_reading:
176
+ self.watervolumeupstream = self._watervolumeupstream_ncarray[0]
177
+ elif self._watervolumeupstream_ramflag:
178
+ self.watervolumeupstream = self._watervolumeupstream_array[idx]
179
+ if self._watervolumedownstream_diskflag_reading:
180
+ self.watervolumedownstream = self._watervolumedownstream_ncarray[0]
181
+ elif self._watervolumedownstream_ramflag:
182
+ self.watervolumedownstream = self._watervolumedownstream_array[idx]
183
+ if self._wettedarea_diskflag_reading:
184
+ self.wettedarea = self._wettedarea_ncarray[0]
185
+ elif self._wettedarea_ramflag:
186
+ self.wettedarea = self._wettedarea_array[idx]
187
+ if self._wettedperimeter_diskflag_reading:
188
+ self.wettedperimeter = self._wettedperimeter_ncarray[0]
189
+ elif self._wettedperimeter_ramflag:
190
+ self.wettedperimeter = self._wettedperimeter_array[idx]
191
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
192
+ cdef numpy.int64_t jdx0
193
+ cdef numpy.int64_t k
194
+ if self._maxtimestep_diskflag_writing:
195
+ self._maxtimestep_ncarray[0] = self.maxtimestep
196
+ if self._maxtimestep_ramflag:
197
+ self._maxtimestep_array[idx] = self.maxtimestep
198
+ if self._timestep_diskflag_writing:
199
+ self._timestep_ncarray[0] = self.timestep
200
+ if self._timestep_ramflag:
201
+ self._timestep_array[idx] = self.timestep
202
+ if self._waterdepth_diskflag_writing:
203
+ self._waterdepth_ncarray[0] = self.waterdepth
204
+ if self._waterdepth_ramflag:
205
+ self._waterdepth_array[idx] = self.waterdepth
206
+ if self._waterlevel_diskflag_writing:
207
+ self._waterlevel_ncarray[0] = self.waterlevel
208
+ if self._waterlevel_ramflag:
209
+ self._waterlevel_array[idx] = self.waterlevel
210
+ if self._waterlevels_diskflag_writing:
211
+ k = 0
212
+ for jdx0 in range(self._waterlevels_length_0):
213
+ self._waterlevels_ncarray[k] = self.waterlevels[jdx0]
214
+ k += 1
215
+ if self._waterlevels_ramflag:
216
+ for jdx0 in range(self._waterlevels_length_0):
217
+ self._waterlevels_array[idx, jdx0] = self.waterlevels[jdx0]
218
+ if self._waterlevelupstream_diskflag_writing:
219
+ self._waterlevelupstream_ncarray[0] = self.waterlevelupstream
220
+ if self._waterlevelupstream_ramflag:
221
+ self._waterlevelupstream_array[idx] = self.waterlevelupstream
222
+ if self._waterleveldownstream_diskflag_writing:
223
+ self._waterleveldownstream_ncarray[0] = self.waterleveldownstream
224
+ if self._waterleveldownstream_ramflag:
225
+ self._waterleveldownstream_array[idx] = self.waterleveldownstream
226
+ if self._watervolumeupstream_diskflag_writing:
227
+ self._watervolumeupstream_ncarray[0] = self.watervolumeupstream
228
+ if self._watervolumeupstream_ramflag:
229
+ self._watervolumeupstream_array[idx] = self.watervolumeupstream
230
+ if self._watervolumedownstream_diskflag_writing:
231
+ self._watervolumedownstream_ncarray[0] = self.watervolumedownstream
232
+ if self._watervolumedownstream_ramflag:
233
+ self._watervolumedownstream_array[idx] = self.watervolumedownstream
234
+ if self._wettedarea_diskflag_writing:
235
+ self._wettedarea_ncarray[0] = self.wettedarea
236
+ if self._wettedarea_ramflag:
237
+ self._wettedarea_array[idx] = self.wettedarea
238
+ if self._wettedperimeter_diskflag_writing:
239
+ self._wettedperimeter_ncarray[0] = self.wettedperimeter
240
+ if self._wettedperimeter_ramflag:
241
+ self._wettedperimeter_array[idx] = self.wettedperimeter
242
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
243
+ if name == "maxtimestep":
244
+ self._maxtimestep_outputpointer = value.p_value
245
+ if name == "timestep":
246
+ self._timestep_outputpointer = value.p_value
247
+ if name == "waterdepth":
248
+ self._waterdepth_outputpointer = value.p_value
249
+ if name == "waterlevel":
250
+ self._waterlevel_outputpointer = value.p_value
251
+ if name == "waterlevelupstream":
252
+ self._waterlevelupstream_outputpointer = value.p_value
253
+ if name == "waterleveldownstream":
254
+ self._waterleveldownstream_outputpointer = value.p_value
255
+ if name == "watervolumeupstream":
256
+ self._watervolumeupstream_outputpointer = value.p_value
257
+ if name == "watervolumedownstream":
258
+ self._watervolumedownstream_outputpointer = value.p_value
259
+ if name == "wettedarea":
260
+ self._wettedarea_outputpointer = value.p_value
261
+ if name == "wettedperimeter":
262
+ self._wettedperimeter_outputpointer = value.p_value
263
+ cpdef inline void update_outputs(self) noexcept nogil:
264
+ if self._maxtimestep_outputflag:
265
+ self._maxtimestep_outputpointer[0] = self.maxtimestep
266
+ if self._timestep_outputflag:
267
+ self._timestep_outputpointer[0] = self.timestep
268
+ if self._waterdepth_outputflag:
269
+ self._waterdepth_outputpointer[0] = self.waterdepth
270
+ if self._waterlevel_outputflag:
271
+ self._waterlevel_outputpointer[0] = self.waterlevel
272
+ if self._waterlevelupstream_outputflag:
273
+ self._waterlevelupstream_outputpointer[0] = self.waterlevelupstream
274
+ if self._waterleveldownstream_outputflag:
275
+ self._waterleveldownstream_outputpointer[0] = self.waterleveldownstream
276
+ if self._watervolumeupstream_outputflag:
277
+ self._watervolumeupstream_outputpointer[0] = self.watervolumeupstream
278
+ if self._watervolumedownstream_outputflag:
279
+ self._watervolumedownstream_outputpointer[0] = self.watervolumedownstream
280
+ if self._wettedarea_outputflag:
281
+ self._wettedarea_outputpointer[0] = self.wettedarea
282
+ if self._wettedperimeter_outputflag:
283
+ self._wettedperimeter_outputpointer[0] = self.wettedperimeter
284
+ @cython.final
285
+ cdef class FluxSequences:
286
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
287
+ cdef numpy.int64_t jdx0
288
+ cdef numpy.int64_t k
289
+ if self._inflow_diskflag_reading:
290
+ self.inflow = self._inflow_ncarray[0]
291
+ elif self._inflow_ramflag:
292
+ self.inflow = self._inflow_array[idx]
293
+ if self._outflow_diskflag_reading:
294
+ self.outflow = self._outflow_ncarray[0]
295
+ elif self._outflow_ramflag:
296
+ self.outflow = self._outflow_array[idx]
297
+ if self._lateralflow_diskflag_reading:
298
+ self.lateralflow = self._lateralflow_ncarray[0]
299
+ elif self._lateralflow_ramflag:
300
+ self.lateralflow = self._lateralflow_array[idx]
301
+ if self._netinflow_diskflag_reading:
302
+ self.netinflow = self._netinflow_ncarray[0]
303
+ elif self._netinflow_ramflag:
304
+ self.netinflow = self._netinflow_array[idx]
305
+ if self._dischargeupstream_diskflag_reading:
306
+ self.dischargeupstream = self._dischargeupstream_ncarray[0]
307
+ elif self._dischargeupstream_ramflag:
308
+ self.dischargeupstream = self._dischargeupstream_array[idx]
309
+ if self._dischargedownstream_diskflag_reading:
310
+ self.dischargedownstream = self._dischargedownstream_ncarray[0]
311
+ elif self._dischargedownstream_ramflag:
312
+ self.dischargedownstream = self._dischargedownstream_array[idx]
313
+ if self._dischargevolume_diskflag_reading:
314
+ self.dischargevolume = self._dischargevolume_ncarray[0]
315
+ elif self._dischargevolume_ramflag:
316
+ self.dischargevolume = self._dischargevolume_array[idx]
317
+ if self._discharges_diskflag_reading:
318
+ k = 0
319
+ for jdx0 in range(self._discharges_length_0):
320
+ self.discharges[jdx0] = self._discharges_ncarray[k]
321
+ k += 1
322
+ elif self._discharges_ramflag:
323
+ for jdx0 in range(self._discharges_length_0):
324
+ self.discharges[jdx0] = self._discharges_array[idx, jdx0]
325
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
326
+ cdef numpy.int64_t jdx0
327
+ cdef numpy.int64_t k
328
+ if self._inflow_diskflag_writing:
329
+ self._inflow_ncarray[0] = self.inflow
330
+ if self._inflow_ramflag:
331
+ self._inflow_array[idx] = self.inflow
332
+ if self._outflow_diskflag_writing:
333
+ self._outflow_ncarray[0] = self.outflow
334
+ if self._outflow_ramflag:
335
+ self._outflow_array[idx] = self.outflow
336
+ if self._lateralflow_diskflag_writing:
337
+ self._lateralflow_ncarray[0] = self.lateralflow
338
+ if self._lateralflow_ramflag:
339
+ self._lateralflow_array[idx] = self.lateralflow
340
+ if self._netinflow_diskflag_writing:
341
+ self._netinflow_ncarray[0] = self.netinflow
342
+ if self._netinflow_ramflag:
343
+ self._netinflow_array[idx] = self.netinflow
344
+ if self._dischargeupstream_diskflag_writing:
345
+ self._dischargeupstream_ncarray[0] = self.dischargeupstream
346
+ if self._dischargeupstream_ramflag:
347
+ self._dischargeupstream_array[idx] = self.dischargeupstream
348
+ if self._dischargedownstream_diskflag_writing:
349
+ self._dischargedownstream_ncarray[0] = self.dischargedownstream
350
+ if self._dischargedownstream_ramflag:
351
+ self._dischargedownstream_array[idx] = self.dischargedownstream
352
+ if self._dischargevolume_diskflag_writing:
353
+ self._dischargevolume_ncarray[0] = self.dischargevolume
354
+ if self._dischargevolume_ramflag:
355
+ self._dischargevolume_array[idx] = self.dischargevolume
356
+ if self._discharges_diskflag_writing:
357
+ k = 0
358
+ for jdx0 in range(self._discharges_length_0):
359
+ self._discharges_ncarray[k] = self.discharges[jdx0]
360
+ k += 1
361
+ if self._discharges_ramflag:
362
+ for jdx0 in range(self._discharges_length_0):
363
+ self._discharges_array[idx, jdx0] = self.discharges[jdx0]
364
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
365
+ if name == "inflow":
366
+ self._inflow_outputpointer = value.p_value
367
+ if name == "outflow":
368
+ self._outflow_outputpointer = value.p_value
369
+ if name == "lateralflow":
370
+ self._lateralflow_outputpointer = value.p_value
371
+ if name == "netinflow":
372
+ self._netinflow_outputpointer = value.p_value
373
+ if name == "dischargeupstream":
374
+ self._dischargeupstream_outputpointer = value.p_value
375
+ if name == "dischargedownstream":
376
+ self._dischargedownstream_outputpointer = value.p_value
377
+ if name == "dischargevolume":
378
+ self._dischargevolume_outputpointer = value.p_value
379
+ cpdef inline void update_outputs(self) noexcept nogil:
380
+ if self._inflow_outputflag:
381
+ self._inflow_outputpointer[0] = self.inflow
382
+ if self._outflow_outputflag:
383
+ self._outflow_outputpointer[0] = self.outflow
384
+ if self._lateralflow_outputflag:
385
+ self._lateralflow_outputpointer[0] = self.lateralflow
386
+ if self._netinflow_outputflag:
387
+ self._netinflow_outputpointer[0] = self.netinflow
388
+ if self._dischargeupstream_outputflag:
389
+ self._dischargeupstream_outputpointer[0] = self.dischargeupstream
390
+ if self._dischargedownstream_outputflag:
391
+ self._dischargedownstream_outputpointer[0] = self.dischargedownstream
392
+ if self._dischargevolume_outputflag:
393
+ self._dischargevolume_outputpointer[0] = self.dischargevolume
394
+ @cython.final
395
+ cdef class StateSequences:
396
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
397
+ cdef numpy.int64_t k
398
+ if self._watervolume_diskflag_reading:
399
+ self.watervolume = self._watervolume_ncarray[0]
400
+ elif self._watervolume_ramflag:
401
+ self.watervolume = self._watervolume_array[idx]
402
+ if self._discharge_diskflag_reading:
403
+ self.discharge = self._discharge_ncarray[0]
404
+ elif self._discharge_ramflag:
405
+ self.discharge = self._discharge_array[idx]
406
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
407
+ cdef numpy.int64_t k
408
+ if self._watervolume_diskflag_writing:
409
+ self._watervolume_ncarray[0] = self.watervolume
410
+ if self._watervolume_ramflag:
411
+ self._watervolume_array[idx] = self.watervolume
412
+ if self._discharge_diskflag_writing:
413
+ self._discharge_ncarray[0] = self.discharge
414
+ if self._discharge_ramflag:
415
+ self._discharge_array[idx] = self.discharge
416
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
417
+ if name == "watervolume":
418
+ self._watervolume_outputpointer = value.p_value
419
+ if name == "discharge":
420
+ self._discharge_outputpointer = value.p_value
421
+ cpdef inline void update_outputs(self) noexcept nogil:
422
+ if self._watervolume_outputflag:
423
+ self._watervolume_outputpointer[0] = self.watervolume
424
+ if self._discharge_outputflag:
425
+ self._discharge_outputpointer[0] = self.discharge
426
+ @cython.final
427
+ cdef class OutletSequences:
428
+ cpdef inline alloc(self, name, numpy.int64_t length):
429
+ if name == "longq":
430
+ self._longq_length_0 = length
431
+ self._longq_ready = numpy.full(length, 0, dtype=numpy.int64)
432
+ self.longq = <double**> PyMem_Malloc(length * sizeof(double*))
433
+ cpdef inline dealloc(self, name):
434
+ if name == "longq":
435
+ PyMem_Free(self.longq)
436
+ cpdef inline set_pointer1d(self, str name, pointerutils.Double value, numpy.int64_t idx):
437
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
438
+ if name == "longq":
439
+ self.longq[idx] = pointer.p_value
440
+ self._longq_ready[idx] = 1
441
+ cpdef get_value(self, str name):
442
+ cdef numpy.int64_t idx
443
+ if name == "longq":
444
+ values = numpy.empty(self.len_longq)
445
+ for idx in range(self.len_longq):
446
+ pointerutils.check0(self._longq_length_0)
447
+ if self._longq_ready[idx] == 0:
448
+ pointerutils.check1(self._longq_length_0, idx)
449
+ pointerutils.check2(self._longq_ready, idx)
450
+ values[idx] = self.longq[idx][0]
451
+ return values
452
+ cpdef set_value(self, str name, value):
453
+ if name == "longq":
454
+ for idx in range(self.len_longq):
455
+ pointerutils.check0(self._longq_length_0)
456
+ if self._longq_ready[idx] == 0:
457
+ pointerutils.check1(self._longq_length_0, idx)
458
+ pointerutils.check2(self._longq_ready, idx)
459
+ self.longq[idx][0] = value[idx]
460
+ @cython.final
461
+ cdef class SenderSequences:
462
+ cpdef inline alloc(self, name, numpy.int64_t length):
463
+ if name == "waterlevel":
464
+ self._waterlevel_length_0 = length
465
+ self._waterlevel_ready = numpy.full(length, 0, dtype=numpy.int64)
466
+ self.waterlevel = <double**> PyMem_Malloc(length * sizeof(double*))
467
+ cpdef inline dealloc(self, name):
468
+ if name == "waterlevel":
469
+ PyMem_Free(self.waterlevel)
470
+ cpdef inline set_pointer1d(self, str name, pointerutils.Double value, numpy.int64_t idx):
471
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
472
+ if name == "waterlevel":
473
+ self.waterlevel[idx] = pointer.p_value
474
+ self._waterlevel_ready[idx] = 1
475
+ cpdef get_value(self, str name):
476
+ cdef numpy.int64_t idx
477
+ if name == "waterlevel":
478
+ values = numpy.empty(self.len_waterlevel)
479
+ for idx in range(self.len_waterlevel):
480
+ pointerutils.check0(self._waterlevel_length_0)
481
+ if self._waterlevel_ready[idx] == 0:
482
+ pointerutils.check1(self._waterlevel_length_0, idx)
483
+ pointerutils.check2(self._waterlevel_ready, idx)
484
+ values[idx] = self.waterlevel[idx][0]
485
+ return values
486
+ cpdef set_value(self, str name, value):
487
+ if name == "waterlevel":
488
+ for idx in range(self.len_waterlevel):
489
+ pointerutils.check0(self._waterlevel_length_0)
490
+ if self._waterlevel_ready[idx] == 0:
491
+ pointerutils.check1(self._waterlevel_length_0, idx)
492
+ pointerutils.check2(self._waterlevel_ready, idx)
493
+ self.waterlevel[idx][0] = value[idx]
494
+ @cython.final
495
+ cdef class Model:
496
+ def __init__(self):
497
+ super().__init__()
498
+ self.channelmodels = interfaceutils.SubmodelsProperty()
499
+ self.crosssection = None
500
+ self.crosssection_is_mainmodel = False
501
+ self.routingmodels = interfaceutils.SubmodelsProperty()
502
+ self.routingmodelsdownstream = interfaceutils.SubmodelsProperty()
503
+ self.routingmodelsupstream = interfaceutils.SubmodelsProperty()
504
+ self.storagemodeldownstream = None
505
+ self.storagemodeldownstream_is_mainmodel = False
506
+ self.storagemodels = interfaceutils.SubmodelsProperty()
507
+ self.storagemodelupstream = None
508
+ self.storagemodelupstream_is_mainmodel = False
509
+ def get_crosssection(self) -> masterinterface.MasterInterface | None:
510
+ return self.crosssection
511
+ def set_crosssection(self, crosssection: masterinterface.MasterInterface | None) -> None:
512
+ self.crosssection = crosssection
513
+ def get_storagemodeldownstream(self) -> masterinterface.MasterInterface | None:
514
+ return self.storagemodeldownstream
515
+ def set_storagemodeldownstream(self, storagemodeldownstream: masterinterface.MasterInterface | None) -> None:
516
+ self.storagemodeldownstream = storagemodeldownstream
517
+ def get_storagemodelupstream(self) -> masterinterface.MasterInterface | None:
518
+ return self.storagemodelupstream
519
+ def set_storagemodelupstream(self, storagemodelupstream: masterinterface.MasterInterface | None) -> None:
520
+ self.storagemodelupstream = storagemodelupstream
521
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
522
+ self.idx_sim = idx
523
+ self.reset_reuseflags()
524
+ self.load_data(idx)
525
+ self.update_inlets()
526
+ self.run()
527
+ self.new2old()
528
+ self.update_outlets()
529
+ self.update_outputs()
530
+ cpdef void reset_reuseflags(self) noexcept nogil:
531
+ cdef numpy.int64_t i_submodel
532
+ for i_submodel in range(self.channelmodels.number):
533
+ if self.channelmodels.typeids[i_submodel] > 0:
534
+ (<masterinterface.MasterInterface>self.channelmodels.submodels[i_submodel]).reset_reuseflags()
535
+ if (self.crosssection is not None) and not self.crosssection_is_mainmodel:
536
+ self.crosssection.reset_reuseflags()
537
+ for i_submodel in range(self.routingmodels.number):
538
+ if self.routingmodels.typeids[i_submodel] > 0:
539
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i_submodel]).reset_reuseflags()
540
+ if (self.storagemodeldownstream is not None) and not self.storagemodeldownstream_is_mainmodel:
541
+ self.storagemodeldownstream.reset_reuseflags()
542
+ for i_submodel in range(self.storagemodels.number):
543
+ if self.storagemodels.typeids[i_submodel] > 0:
544
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i_submodel]).reset_reuseflags()
545
+ if (self.storagemodelupstream is not None) and not self.storagemodelupstream_is_mainmodel:
546
+ self.storagemodelupstream.reset_reuseflags()
547
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
548
+ self.idx_sim = idx
549
+ cdef numpy.int64_t i_submodel
550
+ for i_submodel in range(self.channelmodels.number):
551
+ if self.channelmodels.typeids[i_submodel] > 0:
552
+ (<masterinterface.MasterInterface>self.channelmodels.submodels[i_submodel]).load_data(idx)
553
+ if (self.crosssection is not None) and not self.crosssection_is_mainmodel:
554
+ self.crosssection.load_data(idx)
555
+ for i_submodel in range(self.routingmodels.number):
556
+ if self.routingmodels.typeids[i_submodel] > 0:
557
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i_submodel]).load_data(idx)
558
+ if (self.storagemodeldownstream is not None) and not self.storagemodeldownstream_is_mainmodel:
559
+ self.storagemodeldownstream.load_data(idx)
560
+ for i_submodel in range(self.storagemodels.number):
561
+ if self.storagemodels.typeids[i_submodel] > 0:
562
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i_submodel]).load_data(idx)
563
+ if (self.storagemodelupstream is not None) and not self.storagemodelupstream_is_mainmodel:
564
+ self.storagemodelupstream.load_data(idx)
565
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
566
+ self.idx_sim = idx
567
+ self.sequences.factors.save_data(idx)
568
+ self.sequences.fluxes.save_data(idx)
569
+ self.sequences.states.save_data(idx)
570
+ cdef numpy.int64_t i_submodel
571
+ for i_submodel in range(self.channelmodels.number):
572
+ if self.channelmodels.typeids[i_submodel] > 0:
573
+ (<masterinterface.MasterInterface>self.channelmodels.submodels[i_submodel]).save_data(idx)
574
+ if (self.crosssection is not None) and not self.crosssection_is_mainmodel:
575
+ self.crosssection.save_data(idx)
576
+ for i_submodel in range(self.routingmodels.number):
577
+ if self.routingmodels.typeids[i_submodel] > 0:
578
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i_submodel]).save_data(idx)
579
+ if (self.storagemodeldownstream is not None) and not self.storagemodeldownstream_is_mainmodel:
580
+ self.storagemodeldownstream.save_data(idx)
581
+ for i_submodel in range(self.storagemodels.number):
582
+ if self.storagemodels.typeids[i_submodel] > 0:
583
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i_submodel]).save_data(idx)
584
+ if (self.storagemodelupstream is not None) and not self.storagemodelupstream_is_mainmodel:
585
+ self.storagemodelupstream.save_data(idx)
586
+ cpdef void new2old(self) noexcept nogil:
587
+ self.sequences.old_states.watervolume = self.sequences.new_states.watervolume
588
+ self.sequences.old_states.discharge = self.sequences.new_states.discharge
589
+ cdef numpy.int64_t i_submodel
590
+ for i_submodel in range(self.channelmodels.number):
591
+ if self.channelmodels.typeids[i_submodel] > 0:
592
+ (<masterinterface.MasterInterface>self.channelmodels.submodels[i_submodel]).new2old()
593
+ if (self.crosssection is not None) and not self.crosssection_is_mainmodel:
594
+ self.crosssection.new2old()
595
+ for i_submodel in range(self.routingmodels.number):
596
+ if self.routingmodels.typeids[i_submodel] > 0:
597
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i_submodel]).new2old()
598
+ if (self.storagemodeldownstream is not None) and not self.storagemodeldownstream_is_mainmodel:
599
+ self.storagemodeldownstream.new2old()
600
+ for i_submodel in range(self.storagemodels.number):
601
+ if self.storagemodels.typeids[i_submodel] > 0:
602
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i_submodel]).new2old()
603
+ if (self.storagemodelupstream is not None) and not self.storagemodelupstream_is_mainmodel:
604
+ self.storagemodelupstream.new2old()
605
+ cpdef inline void run(self) noexcept nogil:
606
+ self.timeleft = self.parameters.derived.seconds
607
+ while True:
608
+ self.calc_maxtimesteps_v1()
609
+ self.calc_timestep_v1()
610
+ self.send_timestep_v1()
611
+ self.calc_discharges_v1()
612
+ self.update_storages_v1()
613
+ self.query_waterlevels_v1()
614
+ if self.timeleft <= 0.0:
615
+ break
616
+ self.new2old()
617
+ cpdef inline void update_inlets(self) noexcept nogil:
618
+ self.pick_inflow_v1()
619
+ self.pick_outflow_v1()
620
+ self.pick_lateralflow_v1()
621
+ self.pick_waterleveldownstream_v1()
622
+ self.trigger_preprocessing_v1()
623
+ cpdef inline void update_outlets(self) noexcept nogil:
624
+ self.pass_discharge_v1()
625
+ self.pass_waterlevel_v1()
626
+ self.trigger_postprocessing_v1()
627
+ self.calc_discharges_v2()
628
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
629
+ self.idx_sim = idx
630
+ pass
631
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
632
+ self.idx_sim = idx
633
+ pass
634
+ cpdef inline void update_outputs(self) noexcept nogil:
635
+ self.sequences.factors.update_outputs()
636
+ self.sequences.fluxes.update_outputs()
637
+ self.sequences.states.update_outputs()
638
+ cpdef inline void pick_inflow_v1(self) noexcept nogil:
639
+ cdef numpy.int64_t i
640
+ self.sequences.fluxes.inflow = 0.0
641
+ for i in range(self.sequences.inlets.len_longq):
642
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.longq[i][0])
643
+ cpdef inline void pick_outflow_v1(self) noexcept nogil:
644
+ cdef numpy.int64_t i
645
+ self.sequences.fluxes.outflow = 0.0
646
+ for i in range(self.sequences.outlets.len_longq):
647
+ self.sequences.fluxes.outflow = self.sequences.fluxes.outflow + (self.sequences.outlets.longq[i][0])
648
+ cpdef inline void pick_lateralflow_v1(self) noexcept nogil:
649
+ cdef numpy.int64_t i
650
+ self.sequences.fluxes.lateralflow = 0.0
651
+ for i in range(self.sequences.inlets.len_latq):
652
+ self.sequences.fluxes.lateralflow = self.sequences.fluxes.lateralflow + (self.sequences.inlets.latq[i][0])
653
+ cpdef inline void pick_waterleveldownstream_v1(self) noexcept nogil:
654
+ self.sequences.factors.waterleveldownstream = self.sequences.receivers.waterlevel[0]
655
+ cpdef inline void trigger_preprocessing_v1(self) noexcept nogil:
656
+ cdef numpy.int64_t i
657
+ for i in range(self.routingmodels.number):
658
+ if self.routingmodels.typeids[i] in (1, 2, 3):
659
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).perform_preprocessing()
660
+ for i in range(self.storagemodels.number):
661
+ if self.storagemodels.typeids[i] == 1:
662
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).perform_preprocessing()
663
+ cpdef inline void calc_maxtimesteps_v1(self) noexcept nogil:
664
+ cdef numpy.int64_t i
665
+ for i in range(self.routingmodels.number):
666
+ if self.routingmodels.typeids[i] in (1, 2, 3):
667
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).determine_maxtimestep()
668
+ cpdef inline void calc_timestep_v1(self) noexcept nogil:
669
+ cdef double timestep
670
+ cdef numpy.int64_t i
671
+ self.sequences.factors.timestep = inf
672
+ for i in range(self.routingmodels.number):
673
+ if self.routingmodels.typeids[i] in (1, 2, 3):
674
+ timestep = (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).get_maxtimestep()
675
+ self.sequences.factors.timestep = min(self.sequences.factors.timestep, timestep)
676
+ if self.sequences.factors.timestep < self.timeleft:
677
+ self.timeleft = self.timeleft - (self.sequences.factors.timestep)
678
+ else:
679
+ self.sequences.factors.timestep = self.timeleft
680
+ self.timeleft = 0.0
681
+ cpdef inline void send_timestep_v1(self) noexcept nogil:
682
+ cdef numpy.int64_t i
683
+ for i in range(self.routingmodels.number):
684
+ if self.routingmodels.typeids[i] in (1, 2, 3):
685
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).set_timestep(self.sequences.factors.timestep)
686
+ for i in range(self.storagemodels.number):
687
+ if self.storagemodels.typeids[i] == 1:
688
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).set_timestep(self.sequences.factors.timestep)
689
+ cpdef inline void calc_discharges_v1(self) noexcept nogil:
690
+ cdef numpy.int64_t i
691
+ for i in range(self.routingmodels.number):
692
+ if self.routingmodels.typeids[i] in (1, 2, 3):
693
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).determine_discharge()
694
+ cpdef inline void update_storages_v1(self) noexcept nogil:
695
+ cdef numpy.int64_t i
696
+ for i in range(self.storagemodels.number):
697
+ if self.storagemodels.typeids[i] == 1:
698
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).update_storage()
699
+ cpdef inline void query_waterlevels_v1(self) noexcept nogil:
700
+ cdef numpy.int64_t i
701
+ for i in range(self.storagemodels.number):
702
+ if self.storagemodels.typeids[i] == 1:
703
+ self.sequences.factors.waterlevels[i] = (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).get_waterlevel()
704
+ cpdef void determine_discharge_v2(self) noexcept nogil:
705
+ self.sequences.states.discharge = self.sequences.fluxes.inflow
706
+ cpdef void determine_discharge_v4(self) noexcept nogil:
707
+ self.sequences.states.discharge = self.sequences.fluxes.outflow
708
+ cpdef double get_watervolume_v1(self) noexcept nogil:
709
+ return self.sequences.states.watervolume
710
+ cpdef double get_waterlevel_v1(self) noexcept nogil:
711
+ return self.sequences.factors.waterlevel
712
+ cpdef double get_discharge_v1(self) noexcept nogil:
713
+ return self.sequences.states.discharge
714
+ cpdef double get_dischargevolume_v1(self) noexcept nogil:
715
+ return self.sequences.fluxes.dischargevolume
716
+ cpdef double get_maxtimestep_v1(self) noexcept nogil:
717
+ return self.sequences.factors.maxtimestep
718
+ cpdef void set_timestep_v1(self, double timestep) noexcept nogil:
719
+ self.sequences.factors.timestep = timestep
720
+ cpdef double get_partialdischargeupstream_v1(self, double clientdischarge) noexcept nogil:
721
+ cdef numpy.int64_t i
722
+ cdef double dischargedownstream
723
+ dischargedownstream = 0.0
724
+ for i in range(self.routingmodelsdownstream.number):
725
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
726
+ dischargedownstream = dischargedownstream + (fabs( (<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_discharge() ))
727
+ if dischargedownstream == 0.0:
728
+ return 0.0
729
+ return fabs(self.sequences.states.discharge) * clientdischarge / dischargedownstream
730
+ cpdef double get_partialdischargedownstream_v1(self, double clientdischarge) noexcept nogil:
731
+ cdef numpy.int64_t i
732
+ cdef double dischargeupstream
733
+ dischargeupstream = 0.0
734
+ for i in range(self.routingmodelsupstream.number):
735
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
736
+ dischargeupstream = dischargeupstream + (fabs( (<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_discharge() ))
737
+ if dischargeupstream == 0.0:
738
+ return 0.0
739
+ return fabs(self.sequences.states.discharge) * clientdischarge / dischargeupstream
740
+ cpdef inline void calc_maxtimestep_v1(self) noexcept nogil:
741
+ if self.sequences.factors.waterdepth > 0.0:
742
+ self.sequences.factors.maxtimestep = (self.parameters.control.timestepfactor * 1000.0 * self.parameters.derived.lengthmin) / ( self.parameters.fixed.gravitationalacceleration * self.sequences.factors.waterdepth ) ** 0.5
743
+ else:
744
+ self.sequences.factors.maxtimestep = inf
745
+ cpdef inline void calc_maxtimestep_v2(self) noexcept nogil:
746
+ cdef double cel
747
+ if (self.sequences.fluxes.inflow != 0.0) and (self.sequences.factors.wettedarea > 0.0):
748
+ cel = fabs(5.0 / 3.0 * self.sequences.fluxes.inflow / self.sequences.factors.wettedarea)
749
+ self.sequences.factors.maxtimestep = self.parameters.control.timestepfactor * 1000.0 * self.parameters.control.lengthdownstream / cel
750
+ else:
751
+ self.sequences.factors.maxtimestep = inf
752
+ cpdef inline void calc_maxtimestep_v3(self) noexcept nogil:
753
+ cdef double cel
754
+ cdef double g
755
+ cdef double c
756
+ cdef double h
757
+ h = self.sequences.factors.waterlevel - self.parameters.control.crestheight
758
+ if h > 0.0:
759
+ c = self.parameters.control.flowcoefficient
760
+ g = self.parameters.fixed.gravitationalacceleration
761
+ cel = c * (2.0 * g * h) ** 0.5
762
+ self.sequences.factors.maxtimestep = self.parameters.control.timestepfactor * 1000.0 * self.parameters.control.lengthupstream / cel
763
+ else:
764
+ self.sequences.factors.maxtimestep = inf
765
+ cpdef inline void calc_maxtimestep_v4(self) noexcept nogil:
766
+ cdef double cel
767
+ if (self.sequences.fluxes.outflow != 0.0) and (self.sequences.factors.wettedarea > 0.0):
768
+ cel = fabs(5.0 / 3.0 * self.sequences.fluxes.outflow / self.sequences.factors.wettedarea)
769
+ self.sequences.factors.maxtimestep = self.parameters.control.timestepfactor * 1000.0 * self.parameters.control.lengthupstream / cel
770
+ else:
771
+ self.sequences.factors.maxtimestep = inf
772
+ cpdef inline void calc_maxtimestep_v5(self) noexcept nogil:
773
+ cdef double cel
774
+ cdef double ld
775
+ cdef double lu
776
+ cdef double g
777
+ cdef double c
778
+ cdef double h
779
+ self.parameters.control.gateheight_callback(self)
780
+ h = min(self.parameters.control.gateheight, self.sequences.factors.waterlevel) - self.parameters.control.bottomlevel
781
+ if h > 0.0:
782
+ c = self.parameters.control.flowcoefficient
783
+ g = self.parameters.fixed.gravitationalacceleration
784
+ lu = self.sequences.factors.waterlevelupstream
785
+ ld = self.sequences.factors.waterleveldownstream
786
+ cel = c * h * (2.0 * g * fabs(lu - ld)) ** 0.5
787
+ self.sequences.factors.maxtimestep = self.parameters.control.timestepfactor * 1000.0 * self.parameters.control.lengthupstream / cel
788
+ else:
789
+ self.sequences.factors.maxtimestep = inf
790
+ cpdef inline void calc_maxtimestep_v6(self) noexcept nogil:
791
+ cdef double cel
792
+ if (self.sequences.states.discharge != 0.0) and (self.sequences.factors.wettedarea > 0.0):
793
+ cel = fabs(5.0 / 3.0 * self.sequences.states.discharge / self.sequences.factors.wettedarea)
794
+ self.sequences.factors.maxtimestep = self.parameters.control.timestepfactor * 1000.0 * self.parameters.derived.lengthmin / cel
795
+ else:
796
+ self.sequences.factors.maxtimestep = inf
797
+ cpdef inline void calc_watervolumeupstream_v1(self) noexcept nogil:
798
+ if self.storagemodelupstream_typeid == 1:
799
+ self.sequences.factors.watervolumeupstream = (<masterinterface.MasterInterface>self.storagemodelupstream).get_watervolume()
800
+ cpdef inline void calc_watervolumedownstream_v1(self) noexcept nogil:
801
+ if self.storagemodeldownstream_typeid == 1:
802
+ self.sequences.factors.watervolumedownstream = (<masterinterface.MasterInterface>self.storagemodeldownstream).get_watervolume()
803
+ cpdef inline void calc_waterlevelupstream_v1(self) noexcept nogil:
804
+ if self.storagemodelupstream_typeid == 1:
805
+ self.sequences.factors.waterlevelupstream = (<masterinterface.MasterInterface>self.storagemodelupstream).get_waterlevel()
806
+ cpdef inline void calc_waterleveldownstream_v1(self) noexcept nogil:
807
+ if self.storagemodeldownstream_typeid == 1:
808
+ self.sequences.factors.waterleveldownstream = (<masterinterface.MasterInterface>self.storagemodeldownstream).get_waterlevel()
809
+ cpdef inline void calc_waterlevel_v1(self) noexcept nogil:
810
+ cdef double w
811
+ w = self.parameters.derived.weightupstream
812
+ self.sequences.factors.waterlevel = ( w * self.sequences.factors.waterlevelupstream + (1.0 - w) * self.sequences.factors.waterleveldownstream )
813
+ cpdef inline void calc_waterlevel_v2(self) noexcept nogil:
814
+ self.sequences.factors.waterlevel = self.sequences.factors.waterleveldownstream
815
+ cpdef inline void calc_waterlevel_v3(self) noexcept nogil:
816
+ self.sequences.factors.waterlevel = self.sequences.factors.waterlevelupstream
817
+ cpdef inline void calc_waterlevel_v4(self) noexcept nogil:
818
+ self.sequences.factors.waterlevel = (self.sequences.factors.waterlevelupstream + self.sequences.factors.waterleveldownstream) / 2.0
819
+ cpdef inline void calc_waterdepth_waterlevel_crosssectionmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
820
+ submodel.use_wettedarea(self.sequences.states.watervolume / self.parameters.control.length)
821
+ self.sequences.factors.waterdepth = submodel.get_waterdepth()
822
+ self.sequences.factors.waterlevel = submodel.get_waterlevel()
823
+ cpdef inline void calc_waterdepth_waterlevel_v1(self) noexcept nogil:
824
+ if self.crosssection_typeid == 2:
825
+ self.calc_waterdepth_waterlevel_crosssectionmodel_v2( (<masterinterface.MasterInterface>self.crosssection) )
826
+ cpdef inline void calc_waterdepth_wettedarea_crosssectionmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
827
+ submodel.use_waterlevel(self.sequences.factors.waterlevel)
828
+ self.sequences.factors.waterdepth = submodel.get_waterdepth()
829
+ self.sequences.factors.wettedarea = submodel.get_wettedarea()
830
+ cpdef inline void calc_waterdepth_wettedarea_v1(self) noexcept nogil:
831
+ if self.crosssection_typeid == 2:
832
+ self.calc_waterdepth_wettedarea_crosssectionmodel_v2( (<masterinterface.MasterInterface>self.crosssection) )
833
+ cpdef inline void calc_waterdepth_wettedarea_wettedperimeter_crosssectionmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
834
+ submodel.use_waterlevel(self.sequences.factors.waterlevel)
835
+ self.sequences.factors.waterdepth = submodel.get_waterdepth()
836
+ self.sequences.factors.wettedarea = submodel.get_wettedarea()
837
+ self.sequences.factors.wettedperimeter = submodel.get_wettedperimeter()
838
+ cpdef inline void calc_waterdepth_wettedarea_wettedperimeter_v1(self) noexcept nogil:
839
+ if self.crosssection_typeid == 2:
840
+ self.calc_waterdepth_wettedarea_wettedperimeter_crosssectionmodel_v2( (<masterinterface.MasterInterface>self.crosssection) )
841
+ cpdef inline void calc_dischargeupstream_v1(self) noexcept nogil:
842
+ cdef numpy.int64_t i
843
+ self.sequences.fluxes.dischargeupstream = 0.0
844
+ for i in range(self.routingmodelsupstream.number):
845
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
846
+ self.sequences.fluxes.dischargeupstream = self.sequences.fluxes.dischargeupstream + ((<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_partialdischargeupstream(self.sequences.states.discharge))
847
+ cpdef inline void calc_dischargedownstream_v1(self) noexcept nogil:
848
+ cdef numpy.int64_t i
849
+ self.sequences.fluxes.dischargedownstream = 0.0
850
+ for i in range(self.routingmodelsdownstream.number):
851
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
852
+ self.sequences.fluxes.dischargedownstream = self.sequences.fluxes.dischargedownstream + ((<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_partialdischargedownstream(self.sequences.states.discharge))
853
+ cpdef inline void calc_discharge_v1(self) noexcept nogil:
854
+ cdef double denominator
855
+ cdef double nominator2
856
+ cdef double nominator1
857
+ cdef double w
858
+ if self.sequences.factors.wettedarea > 0.0:
859
+ w = self.parameters.control.diffusionfactor
860
+ nominator1 = (1.0 - w) * self.sequences.states.discharge + w / 2.0 * ( self.sequences.fluxes.dischargeupstream + self.sequences.fluxes.dischargedownstream )
861
+ nominator2 = ( self.parameters.fixed.gravitationalacceleration * self.sequences.factors.wettedarea * self.sequences.factors.timestep * (self.sequences.factors.waterlevelupstream - self.sequences.factors.waterleveldownstream) / (1000.0 * self.parameters.derived.lengthmean) )
862
+ denominator = 1.0 + ( self.parameters.fixed.gravitationalacceleration * self.sequences.factors.timestep / self.parameters.control.stricklercoefficient**2.0 * fabs(self.sequences.states.discharge) * self.sequences.factors.wettedperimeter ** (4.0 / 3.0) / self.sequences.factors.wettedarea ** (7.0 / 3.0) )
863
+ self.sequences.states.discharge = (nominator1 + nominator2) / denominator
864
+ else:
865
+ self.sequences.states.discharge = 0.0
866
+ cpdef inline void calc_discharge_v2(self) noexcept nogil:
867
+ cdef double g
868
+ cdef double c
869
+ cdef double w
870
+ cdef double h
871
+ h = self.sequences.factors.waterlevel - self.parameters.control.crestheight
872
+ if h > 0.0:
873
+ w = self.parameters.control.crestwidth
874
+ c = self.parameters.control.flowcoefficient
875
+ g = self.parameters.fixed.gravitationalacceleration
876
+ self.sequences.states.discharge = w * 2.0 / 3.0 * c * (2.0 * g) ** 0.5 * h ** (3.0 / 2.0)
877
+ else:
878
+ self.sequences.states.discharge = 0.0
879
+ cpdef inline void calc_discharge_v3(self) noexcept nogil:
880
+ cdef double ld
881
+ cdef double lu
882
+ cdef double g
883
+ cdef double c
884
+ cdef double w
885
+ cdef double h
886
+ self.parameters.control.gateheight_callback(self)
887
+ h = min(self.parameters.control.gateheight, self.sequences.factors.waterlevel) - self.parameters.control.bottomlevel
888
+ if h > 0.0:
889
+ w = self.parameters.control.gatewidth
890
+ c = self.parameters.control.flowcoefficient
891
+ g = self.parameters.fixed.gravitationalacceleration
892
+ lu = self.sequences.factors.waterlevelupstream
893
+ ld = self.sequences.factors.waterleveldownstream
894
+ if ld < lu:
895
+ self.sequences.states.discharge = w * c * h * (2.0 * g * (lu - ld)) ** 0.5
896
+ else:
897
+ self.sequences.states.discharge = -w * c * h * (2.0 * g * (ld - lu)) ** 0.5
898
+ self.sequences.states.discharge = self.sequences.states.discharge * (1.0 - smoothutils.filter_norm(lu, ld, self.parameters.control.dampingradius))
899
+ else:
900
+ self.sequences.states.discharge = 0.0
901
+ cpdef inline void calc_discharge_v4(self) noexcept nogil:
902
+ cdef double t2
903
+ cdef double t1
904
+ cdef double hd
905
+ cdef double hu
906
+ hu = self.sequences.factors.waterlevelupstream
907
+ hd = self.sequences.factors.waterleveldownstream
908
+ t1 = self.parameters.control.targetwaterlevel1
909
+ t2 = self.parameters.control.targetwaterlevel2
910
+ if hu < t1:
911
+ self.sequences.states.discharge = 0.0
912
+ else:
913
+ self.parameters.control.gradient2pumpingrate.inputs[0] = hu - hd
914
+ self.parameters.control.gradient2pumpingrate.calculate_values()
915
+ self.sequences.states.discharge = max(self.parameters.control.gradient2pumpingrate.outputs[0], 0.0)
916
+ if hu < t2:
917
+ self.sequences.states.discharge = self.sequences.states.discharge * ((hu - t1) / (t2 - t1))
918
+ cpdef inline void update_discharge_v1(self) noexcept nogil:
919
+ cdef double q_min
920
+ cdef double q_max
921
+ if self.sequences.states.discharge > 0.0:
922
+ q_max = 1000.0 * max(self.sequences.factors.watervolumeupstream, 0.0) / self.sequences.factors.timestep
923
+ self.sequences.states.discharge = min(self.sequences.states.discharge, q_max)
924
+ elif self.sequences.states.discharge < 0.0:
925
+ q_min = -1000.0 * max(self.sequences.factors.watervolumedownstream, 0.0) / self.sequences.factors.timestep
926
+ self.sequences.states.discharge = max(self.sequences.states.discharge, q_min)
927
+ cpdef inline void update_discharge_v2(self) noexcept nogil:
928
+ cdef double state_free
929
+ cdef double state_sluice
930
+ cdef double state_closed
931
+ cdef double ht2
932
+ cdef double ht1
933
+ cdef double lt2
934
+ cdef double lt1
935
+ cdef numpy.int64_t toy
936
+ cdef double hd
937
+ cdef double hu
938
+ hu = self.sequences.factors.waterlevelupstream
939
+ hd = self.sequences.factors.waterleveldownstream
940
+ toy = self.parameters.derived.toy[self.idx_sim]
941
+ lt1 = self.parameters.control.bottomlowwaterthreshold[toy]
942
+ lt2 = self.parameters.control.upperlowwaterthreshold[toy]
943
+ ht1 = self.parameters.control.bottomhighwaterthreshold[toy]
944
+ ht2 = self.parameters.control.upperhighwaterthreshold[toy]
945
+ if hu < lt1:
946
+ state_closed = 1.0
947
+ elif hu < lt2:
948
+ state_closed = 1.0 - (hu - lt1) / (lt2 - lt1)
949
+ else:
950
+ state_closed = 0.0
951
+ if hu < ht1:
952
+ state_sluice = 0.0
953
+ elif hu < ht2:
954
+ state_sluice = (hu - ht1) / (ht2 - ht1)
955
+ else:
956
+ state_sluice = 1.0
957
+ state_free = 1.0 - state_closed - state_sluice
958
+ self.sequences.states.discharge = self.sequences.states.discharge * (state_free + (state_sluice if hu > hd else 0.0))
959
+ cpdef inline void reset_dischargevolume_v1(self) noexcept nogil:
960
+ self.sequences.fluxes.dischargevolume = 0.0
961
+ cpdef inline void update_dischargevolume_v1(self) noexcept nogil:
962
+ self.sequences.fluxes.dischargevolume = self.sequences.fluxes.dischargevolume + (self.sequences.factors.timestep * self.sequences.states.discharge)
963
+ cpdef inline void calc_dischargevolume_v1(self) noexcept nogil:
964
+ self.sequences.fluxes.dischargevolume = self.parameters.derived.seconds * self.sequences.fluxes.inflow
965
+ cpdef inline void calc_dischargevolume_v2(self) noexcept nogil:
966
+ self.sequences.fluxes.dischargevolume = self.parameters.derived.seconds * self.sequences.fluxes.outflow
967
+ cpdef inline void calc_netinflow_v1(self) noexcept nogil:
968
+ cdef numpy.int64_t i
969
+ self.sequences.fluxes.netinflow = self.sequences.fluxes.lateralflow
970
+ for i in range(self.routingmodelsupstream.number):
971
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
972
+ self.sequences.fluxes.netinflow = self.sequences.fluxes.netinflow + ((<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_discharge())
973
+ for i in range(self.routingmodelsdownstream.number):
974
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
975
+ self.sequences.fluxes.netinflow = self.sequences.fluxes.netinflow - ((<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_discharge())
976
+ self.sequences.fluxes.netinflow = self.sequences.fluxes.netinflow * (self.sequences.factors.timestep / 1e3)
977
+ cpdef inline void update_watervolume_v1(self) noexcept nogil:
978
+ self.sequences.states.watervolume = self.sequences.states.watervolume + (self.sequences.fluxes.netinflow)
979
+ cpdef inline void pass_discharge_v1(self) noexcept nogil:
980
+ cdef numpy.int64_t i
981
+ cdef double discharge
982
+ discharge = self.sequences.fluxes.dischargevolume / self.parameters.derived.seconds
983
+ for i in range(self.sequences.inlets.len_longq):
984
+ self.sequences.inlets.longq[i][0] = self.sequences.inlets.longq[i][0] + (discharge)
985
+ for i in range(self.sequences.outlets.len_longq):
986
+ self.sequences.outlets.longq[i][0] = self.sequences.outlets.longq[i][0] + (discharge)
987
+ cpdef inline void pass_waterlevel_v1(self) noexcept nogil:
988
+ cdef numpy.int64_t i
989
+ for i in range(self.sequences.senders.len_waterlevel):
990
+ self.sequences.senders.waterlevel[i][0] = self.sequences.factors.waterlevel
991
+ cpdef inline void trigger_postprocessing_v1(self) noexcept nogil:
992
+ cdef numpy.int64_t i
993
+ for i in range(self.routingmodels.number):
994
+ if self.routingmodels.typeids[i] in (1, 2, 3):
995
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).perform_postprocessing()
996
+ for i in range(self.storagemodels.number):
997
+ if self.storagemodels.typeids[i] == 1:
998
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).perform_postprocessing()
999
+ cpdef inline void calc_discharges_v2(self) noexcept nogil:
1000
+ cdef numpy.int64_t i
1001
+ for i in range(self.routingmodels.number):
1002
+ if self.routingmodels.typeids[i] in (1, 2, 3):
1003
+ self.sequences.fluxes.discharges[i] = ( (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).get_dischargevolume() / self.parameters.derived.seconds )
1004
+ else:
1005
+ self.sequences.fluxes.discharges[i] = 0.0
1006
+ cpdef inline void pick_inflow(self) noexcept nogil:
1007
+ cdef numpy.int64_t i
1008
+ self.sequences.fluxes.inflow = 0.0
1009
+ for i in range(self.sequences.inlets.len_longq):
1010
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.longq[i][0])
1011
+ cpdef inline void pick_outflow(self) noexcept nogil:
1012
+ cdef numpy.int64_t i
1013
+ self.sequences.fluxes.outflow = 0.0
1014
+ for i in range(self.sequences.outlets.len_longq):
1015
+ self.sequences.fluxes.outflow = self.sequences.fluxes.outflow + (self.sequences.outlets.longq[i][0])
1016
+ cpdef inline void pick_lateralflow(self) noexcept nogil:
1017
+ cdef numpy.int64_t i
1018
+ self.sequences.fluxes.lateralflow = 0.0
1019
+ for i in range(self.sequences.inlets.len_latq):
1020
+ self.sequences.fluxes.lateralflow = self.sequences.fluxes.lateralflow + (self.sequences.inlets.latq[i][0])
1021
+ cpdef inline void pick_waterleveldownstream(self) noexcept nogil:
1022
+ self.sequences.factors.waterleveldownstream = self.sequences.receivers.waterlevel[0]
1023
+ cpdef inline void trigger_preprocessing(self) noexcept nogil:
1024
+ cdef numpy.int64_t i
1025
+ for i in range(self.routingmodels.number):
1026
+ if self.routingmodels.typeids[i] in (1, 2, 3):
1027
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).perform_preprocessing()
1028
+ for i in range(self.storagemodels.number):
1029
+ if self.storagemodels.typeids[i] == 1:
1030
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).perform_preprocessing()
1031
+ cpdef inline void calc_maxtimesteps(self) noexcept nogil:
1032
+ cdef numpy.int64_t i
1033
+ for i in range(self.routingmodels.number):
1034
+ if self.routingmodels.typeids[i] in (1, 2, 3):
1035
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).determine_maxtimestep()
1036
+ cpdef inline void calc_timestep(self) noexcept nogil:
1037
+ cdef double timestep
1038
+ cdef numpy.int64_t i
1039
+ self.sequences.factors.timestep = inf
1040
+ for i in range(self.routingmodels.number):
1041
+ if self.routingmodels.typeids[i] in (1, 2, 3):
1042
+ timestep = (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).get_maxtimestep()
1043
+ self.sequences.factors.timestep = min(self.sequences.factors.timestep, timestep)
1044
+ if self.sequences.factors.timestep < self.timeleft:
1045
+ self.timeleft = self.timeleft - (self.sequences.factors.timestep)
1046
+ else:
1047
+ self.sequences.factors.timestep = self.timeleft
1048
+ self.timeleft = 0.0
1049
+ cpdef inline void send_timestep(self) noexcept nogil:
1050
+ cdef numpy.int64_t i
1051
+ for i in range(self.routingmodels.number):
1052
+ if self.routingmodels.typeids[i] in (1, 2, 3):
1053
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).set_timestep(self.sequences.factors.timestep)
1054
+ for i in range(self.storagemodels.number):
1055
+ if self.storagemodels.typeids[i] == 1:
1056
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).set_timestep(self.sequences.factors.timestep)
1057
+ cpdef inline void update_storages(self) noexcept nogil:
1058
+ cdef numpy.int64_t i
1059
+ for i in range(self.storagemodels.number):
1060
+ if self.storagemodels.typeids[i] == 1:
1061
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).update_storage()
1062
+ cpdef inline void query_waterlevels(self) noexcept nogil:
1063
+ cdef numpy.int64_t i
1064
+ for i in range(self.storagemodels.number):
1065
+ if self.storagemodels.typeids[i] == 1:
1066
+ self.sequences.factors.waterlevels[i] = (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).get_waterlevel()
1067
+ cpdef double get_watervolume(self) noexcept nogil:
1068
+ return self.sequences.states.watervolume
1069
+ cpdef double get_waterlevel(self) noexcept nogil:
1070
+ return self.sequences.factors.waterlevel
1071
+ cpdef double get_discharge(self) noexcept nogil:
1072
+ return self.sequences.states.discharge
1073
+ cpdef double get_dischargevolume(self) noexcept nogil:
1074
+ return self.sequences.fluxes.dischargevolume
1075
+ cpdef double get_maxtimestep(self) noexcept nogil:
1076
+ return self.sequences.factors.maxtimestep
1077
+ cpdef void set_timestep(self, double timestep) noexcept nogil:
1078
+ self.sequences.factors.timestep = timestep
1079
+ cpdef double get_partialdischargeupstream(self, double clientdischarge) noexcept nogil:
1080
+ cdef numpy.int64_t i
1081
+ cdef double dischargedownstream
1082
+ dischargedownstream = 0.0
1083
+ for i in range(self.routingmodelsdownstream.number):
1084
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
1085
+ dischargedownstream = dischargedownstream + (fabs( (<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_discharge() ))
1086
+ if dischargedownstream == 0.0:
1087
+ return 0.0
1088
+ return fabs(self.sequences.states.discharge) * clientdischarge / dischargedownstream
1089
+ cpdef double get_partialdischargedownstream(self, double clientdischarge) noexcept nogil:
1090
+ cdef numpy.int64_t i
1091
+ cdef double dischargeupstream
1092
+ dischargeupstream = 0.0
1093
+ for i in range(self.routingmodelsupstream.number):
1094
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
1095
+ dischargeupstream = dischargeupstream + (fabs( (<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_discharge() ))
1096
+ if dischargeupstream == 0.0:
1097
+ return 0.0
1098
+ return fabs(self.sequences.states.discharge) * clientdischarge / dischargeupstream
1099
+ cpdef inline void calc_watervolumeupstream(self) noexcept nogil:
1100
+ if self.storagemodelupstream_typeid == 1:
1101
+ self.sequences.factors.watervolumeupstream = (<masterinterface.MasterInterface>self.storagemodelupstream).get_watervolume()
1102
+ cpdef inline void calc_watervolumedownstream(self) noexcept nogil:
1103
+ if self.storagemodeldownstream_typeid == 1:
1104
+ self.sequences.factors.watervolumedownstream = (<masterinterface.MasterInterface>self.storagemodeldownstream).get_watervolume()
1105
+ cpdef inline void calc_waterlevelupstream(self) noexcept nogil:
1106
+ if self.storagemodelupstream_typeid == 1:
1107
+ self.sequences.factors.waterlevelupstream = (<masterinterface.MasterInterface>self.storagemodelupstream).get_waterlevel()
1108
+ cpdef inline void calc_waterleveldownstream(self) noexcept nogil:
1109
+ if self.storagemodeldownstream_typeid == 1:
1110
+ self.sequences.factors.waterleveldownstream = (<masterinterface.MasterInterface>self.storagemodeldownstream).get_waterlevel()
1111
+ cpdef inline void calc_waterdepth_waterlevel_crosssectionmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
1112
+ submodel.use_wettedarea(self.sequences.states.watervolume / self.parameters.control.length)
1113
+ self.sequences.factors.waterdepth = submodel.get_waterdepth()
1114
+ self.sequences.factors.waterlevel = submodel.get_waterlevel()
1115
+ cpdef inline void calc_waterdepth_waterlevel(self) noexcept nogil:
1116
+ if self.crosssection_typeid == 2:
1117
+ self.calc_waterdepth_waterlevel_crosssectionmodel_v2( (<masterinterface.MasterInterface>self.crosssection) )
1118
+ cpdef inline void calc_waterdepth_wettedarea_crosssectionmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
1119
+ submodel.use_waterlevel(self.sequences.factors.waterlevel)
1120
+ self.sequences.factors.waterdepth = submodel.get_waterdepth()
1121
+ self.sequences.factors.wettedarea = submodel.get_wettedarea()
1122
+ cpdef inline void calc_waterdepth_wettedarea(self) noexcept nogil:
1123
+ if self.crosssection_typeid == 2:
1124
+ self.calc_waterdepth_wettedarea_crosssectionmodel_v2( (<masterinterface.MasterInterface>self.crosssection) )
1125
+ cpdef inline void calc_waterdepth_wettedarea_wettedperimeter_crosssectionmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
1126
+ submodel.use_waterlevel(self.sequences.factors.waterlevel)
1127
+ self.sequences.factors.waterdepth = submodel.get_waterdepth()
1128
+ self.sequences.factors.wettedarea = submodel.get_wettedarea()
1129
+ self.sequences.factors.wettedperimeter = submodel.get_wettedperimeter()
1130
+ cpdef inline void calc_waterdepth_wettedarea_wettedperimeter(self) noexcept nogil:
1131
+ if self.crosssection_typeid == 2:
1132
+ self.calc_waterdepth_wettedarea_wettedperimeter_crosssectionmodel_v2( (<masterinterface.MasterInterface>self.crosssection) )
1133
+ cpdef inline void calc_dischargeupstream(self) noexcept nogil:
1134
+ cdef numpy.int64_t i
1135
+ self.sequences.fluxes.dischargeupstream = 0.0
1136
+ for i in range(self.routingmodelsupstream.number):
1137
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
1138
+ self.sequences.fluxes.dischargeupstream = self.sequences.fluxes.dischargeupstream + ((<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_partialdischargeupstream(self.sequences.states.discharge))
1139
+ cpdef inline void calc_dischargedownstream(self) noexcept nogil:
1140
+ cdef numpy.int64_t i
1141
+ self.sequences.fluxes.dischargedownstream = 0.0
1142
+ for i in range(self.routingmodelsdownstream.number):
1143
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
1144
+ self.sequences.fluxes.dischargedownstream = self.sequences.fluxes.dischargedownstream + ((<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_partialdischargedownstream(self.sequences.states.discharge))
1145
+ cpdef inline void reset_dischargevolume(self) noexcept nogil:
1146
+ self.sequences.fluxes.dischargevolume = 0.0
1147
+ cpdef inline void update_dischargevolume(self) noexcept nogil:
1148
+ self.sequences.fluxes.dischargevolume = self.sequences.fluxes.dischargevolume + (self.sequences.factors.timestep * self.sequences.states.discharge)
1149
+ cpdef inline void calc_netinflow(self) noexcept nogil:
1150
+ cdef numpy.int64_t i
1151
+ self.sequences.fluxes.netinflow = self.sequences.fluxes.lateralflow
1152
+ for i in range(self.routingmodelsupstream.number):
1153
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
1154
+ self.sequences.fluxes.netinflow = self.sequences.fluxes.netinflow + ((<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_discharge())
1155
+ for i in range(self.routingmodelsdownstream.number):
1156
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
1157
+ self.sequences.fluxes.netinflow = self.sequences.fluxes.netinflow - ((<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_discharge())
1158
+ self.sequences.fluxes.netinflow = self.sequences.fluxes.netinflow * (self.sequences.factors.timestep / 1e3)
1159
+ cpdef inline void update_watervolume(self) noexcept nogil:
1160
+ self.sequences.states.watervolume = self.sequences.states.watervolume + (self.sequences.fluxes.netinflow)
1161
+ cpdef inline void pass_discharge(self) noexcept nogil:
1162
+ cdef numpy.int64_t i
1163
+ cdef double discharge
1164
+ discharge = self.sequences.fluxes.dischargevolume / self.parameters.derived.seconds
1165
+ for i in range(self.sequences.inlets.len_longq):
1166
+ self.sequences.inlets.longq[i][0] = self.sequences.inlets.longq[i][0] + (discharge)
1167
+ for i in range(self.sequences.outlets.len_longq):
1168
+ self.sequences.outlets.longq[i][0] = self.sequences.outlets.longq[i][0] + (discharge)
1169
+ cpdef inline void pass_waterlevel(self) noexcept nogil:
1170
+ cdef numpy.int64_t i
1171
+ for i in range(self.sequences.senders.len_waterlevel):
1172
+ self.sequences.senders.waterlevel[i][0] = self.sequences.factors.waterlevel
1173
+ cpdef inline void trigger_postprocessing(self) noexcept nogil:
1174
+ cdef numpy.int64_t i
1175
+ for i in range(self.routingmodels.number):
1176
+ if self.routingmodels.typeids[i] in (1, 2, 3):
1177
+ (<masterinterface.MasterInterface>self.routingmodels.submodels[i]).perform_postprocessing()
1178
+ for i in range(self.storagemodels.number):
1179
+ if self.storagemodels.typeids[i] == 1:
1180
+ (<masterinterface.MasterInterface>self.storagemodels.submodels[i]).perform_postprocessing()
1181
+ cpdef void perform_preprocessing_v1(self) noexcept nogil:
1182
+ self.pick_inflow_v1()
1183
+ cpdef void perform_preprocessing_v2(self) noexcept nogil:
1184
+ self.reset_dischargevolume_v1()
1185
+ cpdef void perform_preprocessing_v3(self) noexcept nogil:
1186
+ self.pick_lateralflow_v1()
1187
+ self.calc_waterdepth_waterlevel_v1()
1188
+ cpdef void perform_preprocessing_v4(self) noexcept nogil:
1189
+ self.pick_outflow_v1()
1190
+ cpdef void perform_preprocessing_v5(self) noexcept nogil:
1191
+ self.pick_waterleveldownstream_v1()
1192
+ self.reset_dischargevolume_v1()
1193
+ cpdef void perform_postprocessing_v1(self) noexcept nogil:
1194
+ self.calc_dischargevolume_v1()
1195
+ cpdef void perform_postprocessing_v2(self) noexcept nogil:
1196
+ self.pass_discharge_v1()
1197
+ cpdef void perform_postprocessing_v3(self) noexcept nogil:
1198
+ self.pass_waterlevel_v1()
1199
+ cpdef void perform_postprocessing_v4(self) noexcept nogil:
1200
+ self.calc_dischargevolume_v2()
1201
+ cpdef void determine_maxtimestep_v1(self) noexcept nogil:
1202
+ self.calc_waterlevelupstream_v1()
1203
+ self.calc_waterleveldownstream_v1()
1204
+ self.calc_waterlevel_v1()
1205
+ self.calc_waterdepth_wettedarea_wettedperimeter_v1()
1206
+ self.calc_dischargeupstream_v1()
1207
+ self.calc_dischargedownstream_v1()
1208
+ self.calc_maxtimestep_v1()
1209
+ cpdef void determine_maxtimestep_v2(self) noexcept nogil:
1210
+ self.calc_waterleveldownstream_v1()
1211
+ self.calc_waterlevel_v2()
1212
+ self.calc_waterdepth_wettedarea_v1()
1213
+ self.calc_maxtimestep_v2()
1214
+ cpdef void determine_maxtimestep_v3(self) noexcept nogil:
1215
+ self.calc_waterlevelupstream_v1()
1216
+ self.calc_waterlevel_v3()
1217
+ self.calc_maxtimestep_v3()
1218
+ cpdef void determine_maxtimestep_v4(self) noexcept nogil:
1219
+ self.calc_waterlevelupstream_v1()
1220
+ self.calc_waterlevel_v3()
1221
+ self.calc_waterdepth_wettedarea_v1()
1222
+ self.calc_maxtimestep_v4()
1223
+ cpdef void determine_maxtimestep_v5(self) noexcept nogil:
1224
+ self.calc_waterlevelupstream_v1()
1225
+ self.calc_waterlevel_v4()
1226
+ self.calc_maxtimestep_v5()
1227
+ cpdef void determine_maxtimestep_v6(self) noexcept nogil:
1228
+ self.calc_waterlevelupstream_v1()
1229
+ self.calc_waterleveldownstream_v1()
1230
+ self.calc_waterlevel_v1()
1231
+ self.calc_waterdepth_wettedarea_v1()
1232
+ self.calc_maxtimestep_v6()
1233
+ cpdef void determine_discharge_v1(self) noexcept nogil:
1234
+ self.calc_watervolumeupstream_v1()
1235
+ self.calc_watervolumedownstream_v1()
1236
+ self.calc_discharge_v1()
1237
+ self.update_discharge_v1()
1238
+ self.update_dischargevolume_v1()
1239
+ cpdef void determine_discharge_v3(self) noexcept nogil:
1240
+ self.calc_discharge_v2()
1241
+ self.update_dischargevolume_v1()
1242
+ cpdef void determine_discharge_v5(self) noexcept nogil:
1243
+ self.calc_watervolumeupstream_v1()
1244
+ self.calc_watervolumedownstream_v1()
1245
+ self.calc_discharge_v1()
1246
+ self.update_discharge_v1()
1247
+ self.update_discharge_v2()
1248
+ self.update_dischargevolume_v1()
1249
+ cpdef void determine_discharge_v6(self) noexcept nogil:
1250
+ self.calc_discharge_v3()
1251
+ self.update_dischargevolume_v1()
1252
+ cpdef void determine_discharge_v7(self) noexcept nogil:
1253
+ self.calc_waterlevel_v3()
1254
+ self.calc_discharge_v4()
1255
+ self.update_dischargevolume_v1()
1256
+ cpdef void update_storage_v1(self) noexcept nogil:
1257
+ self.calc_netinflow_v1()
1258
+ self.update_watervolume_v1()
1259
+ self.calc_waterdepth_waterlevel_v1()
1260
+ cpdef void update_storage(self) noexcept nogil:
1261
+ self.calc_netinflow_v1()
1262
+ self.update_watervolume_v1()
1263
+ self.calc_waterdepth_waterlevel_v1()