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,619 @@
1
+ #!python
2
+ # distutils: define_macros=NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
3
+ # cython: language_level=3
4
+ # cython: cpow=True
5
+ # cython: boundscheck=False
6
+ # cython: wraparound=False
7
+ # cython: initializedcheck=False
8
+ # cython: cdivision=True
9
+ from typing import Optional
10
+ import numpy
11
+ cimport numpy
12
+ from libc.math cimport exp, fabs, log, sin, cos, tan, tanh, asin, acos, atan, isnan, isinf
13
+ from libc.math cimport NAN as nan
14
+ from libc.math cimport INFINITY as inf
15
+ import cython
16
+ from cpython.mem cimport PyMem_Malloc
17
+ from cpython.mem cimport PyMem_Realloc
18
+ from cpython.mem cimport PyMem_Free
19
+ from hydpy.cythons.autogen cimport configutils
20
+ from hydpy.cythons.autogen cimport interfaceutils
21
+ from hydpy.cythons.autogen cimport interputils
22
+ from hydpy.cythons.autogen import pointerutils
23
+ from hydpy.cythons.autogen cimport pointerutils
24
+ from hydpy.cythons.autogen cimport quadutils
25
+ from hydpy.cythons.autogen cimport rootutils
26
+ from hydpy.cythons.autogen cimport smoothutils
27
+ from hydpy.cythons.autogen cimport masterinterface
28
+
29
+
30
+ cdef void do_nothing(Model model) noexcept nogil:
31
+ pass
32
+
33
+ cpdef get_wrapper():
34
+ cdef CallbackWrapper wrapper = CallbackWrapper()
35
+ wrapper.callback = do_nothing
36
+ return wrapper
37
+
38
+ @cython.final
39
+ cdef class Parameters:
40
+ pass
41
+ @cython.final
42
+ cdef class ControlParameters:
43
+ pass
44
+ @cython.final
45
+ cdef class DerivedParameters:
46
+ pass
47
+ @cython.final
48
+ cdef class FixedParameters:
49
+ pass
50
+ @cython.final
51
+ cdef class Sequences:
52
+ pass
53
+ @cython.final
54
+ cdef class InletSequences:
55
+ cpdef inline alloc(self, name, numpy.int64_t length):
56
+ if name == "longq":
57
+ self._longq_length_0 = length
58
+ self._longq_ready = numpy.full(length, 0, dtype=numpy.int64)
59
+ self.longq = <double**> PyMem_Malloc(length * sizeof(double*))
60
+ cpdef inline dealloc(self, name):
61
+ if name == "longq":
62
+ PyMem_Free(self.longq)
63
+ cpdef inline set_pointer1d(self, str name, pointerutils.Double value, numpy.int64_t idx):
64
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
65
+ if name == "longq":
66
+ self.longq[idx] = pointer.p_value
67
+ self._longq_ready[idx] = 1
68
+ cpdef get_value(self, str name):
69
+ cdef numpy.int64_t idx
70
+ if name == "longq":
71
+ values = numpy.empty(self.len_longq)
72
+ for idx in range(self.len_longq):
73
+ pointerutils.check0(self._longq_length_0)
74
+ if self._longq_ready[idx] == 0:
75
+ pointerutils.check1(self._longq_length_0, idx)
76
+ pointerutils.check2(self._longq_ready, idx)
77
+ values[idx] = self.longq[idx][0]
78
+ return values
79
+ cpdef set_value(self, str name, value):
80
+ if name == "longq":
81
+ for idx in range(self.len_longq):
82
+ pointerutils.check0(self._longq_length_0)
83
+ if self._longq_ready[idx] == 0:
84
+ pointerutils.check1(self._longq_length_0, idx)
85
+ pointerutils.check2(self._longq_ready, idx)
86
+ self.longq[idx][0] = value[idx]
87
+ @cython.final
88
+ cdef class FactorSequences:
89
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
90
+ cdef numpy.int64_t k
91
+ if self._maxtimestep_diskflag_reading:
92
+ self.maxtimestep = self._maxtimestep_ncarray[0]
93
+ elif self._maxtimestep_ramflag:
94
+ self.maxtimestep = self._maxtimestep_array[idx]
95
+ if self._timestep_diskflag_reading:
96
+ self.timestep = self._timestep_ncarray[0]
97
+ elif self._timestep_ramflag:
98
+ self.timestep = self._timestep_array[idx]
99
+ if self._waterdepth_diskflag_reading:
100
+ self.waterdepth = self._waterdepth_ncarray[0]
101
+ elif self._waterdepth_ramflag:
102
+ self.waterdepth = self._waterdepth_array[idx]
103
+ if self._waterlevel_diskflag_reading:
104
+ self.waterlevel = self._waterlevel_ncarray[0]
105
+ elif self._waterlevel_ramflag:
106
+ self.waterlevel = self._waterlevel_array[idx]
107
+ if self._waterlevelupstream_diskflag_reading:
108
+ self.waterlevelupstream = self._waterlevelupstream_ncarray[0]
109
+ elif self._waterlevelupstream_ramflag:
110
+ self.waterlevelupstream = self._waterlevelupstream_array[idx]
111
+ if self._waterleveldownstream_diskflag_reading:
112
+ self.waterleveldownstream = self._waterleveldownstream_ncarray[0]
113
+ elif self._waterleveldownstream_ramflag:
114
+ self.waterleveldownstream = self._waterleveldownstream_array[idx]
115
+ if self._watervolumeupstream_diskflag_reading:
116
+ self.watervolumeupstream = self._watervolumeupstream_ncarray[0]
117
+ elif self._watervolumeupstream_ramflag:
118
+ self.watervolumeupstream = self._watervolumeupstream_array[idx]
119
+ if self._watervolumedownstream_diskflag_reading:
120
+ self.watervolumedownstream = self._watervolumedownstream_ncarray[0]
121
+ elif self._watervolumedownstream_ramflag:
122
+ self.watervolumedownstream = self._watervolumedownstream_array[idx]
123
+ if self._wettedarea_diskflag_reading:
124
+ self.wettedarea = self._wettedarea_ncarray[0]
125
+ elif self._wettedarea_ramflag:
126
+ self.wettedarea = self._wettedarea_array[idx]
127
+ if self._wettedperimeter_diskflag_reading:
128
+ self.wettedperimeter = self._wettedperimeter_ncarray[0]
129
+ elif self._wettedperimeter_ramflag:
130
+ self.wettedperimeter = self._wettedperimeter_array[idx]
131
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
132
+ cdef numpy.int64_t k
133
+ if self._maxtimestep_diskflag_writing:
134
+ self._maxtimestep_ncarray[0] = self.maxtimestep
135
+ if self._maxtimestep_ramflag:
136
+ self._maxtimestep_array[idx] = self.maxtimestep
137
+ if self._timestep_diskflag_writing:
138
+ self._timestep_ncarray[0] = self.timestep
139
+ if self._timestep_ramflag:
140
+ self._timestep_array[idx] = self.timestep
141
+ if self._waterdepth_diskflag_writing:
142
+ self._waterdepth_ncarray[0] = self.waterdepth
143
+ if self._waterdepth_ramflag:
144
+ self._waterdepth_array[idx] = self.waterdepth
145
+ if self._waterlevel_diskflag_writing:
146
+ self._waterlevel_ncarray[0] = self.waterlevel
147
+ if self._waterlevel_ramflag:
148
+ self._waterlevel_array[idx] = self.waterlevel
149
+ if self._waterlevelupstream_diskflag_writing:
150
+ self._waterlevelupstream_ncarray[0] = self.waterlevelupstream
151
+ if self._waterlevelupstream_ramflag:
152
+ self._waterlevelupstream_array[idx] = self.waterlevelupstream
153
+ if self._waterleveldownstream_diskflag_writing:
154
+ self._waterleveldownstream_ncarray[0] = self.waterleveldownstream
155
+ if self._waterleveldownstream_ramflag:
156
+ self._waterleveldownstream_array[idx] = self.waterleveldownstream
157
+ if self._watervolumeupstream_diskflag_writing:
158
+ self._watervolumeupstream_ncarray[0] = self.watervolumeupstream
159
+ if self._watervolumeupstream_ramflag:
160
+ self._watervolumeupstream_array[idx] = self.watervolumeupstream
161
+ if self._watervolumedownstream_diskflag_writing:
162
+ self._watervolumedownstream_ncarray[0] = self.watervolumedownstream
163
+ if self._watervolumedownstream_ramflag:
164
+ self._watervolumedownstream_array[idx] = self.watervolumedownstream
165
+ if self._wettedarea_diskflag_writing:
166
+ self._wettedarea_ncarray[0] = self.wettedarea
167
+ if self._wettedarea_ramflag:
168
+ self._wettedarea_array[idx] = self.wettedarea
169
+ if self._wettedperimeter_diskflag_writing:
170
+ self._wettedperimeter_ncarray[0] = self.wettedperimeter
171
+ if self._wettedperimeter_ramflag:
172
+ self._wettedperimeter_array[idx] = self.wettedperimeter
173
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
174
+ if name == "maxtimestep":
175
+ self._maxtimestep_outputpointer = value.p_value
176
+ if name == "timestep":
177
+ self._timestep_outputpointer = value.p_value
178
+ if name == "waterdepth":
179
+ self._waterdepth_outputpointer = value.p_value
180
+ if name == "waterlevel":
181
+ self._waterlevel_outputpointer = value.p_value
182
+ if name == "waterlevelupstream":
183
+ self._waterlevelupstream_outputpointer = value.p_value
184
+ if name == "waterleveldownstream":
185
+ self._waterleveldownstream_outputpointer = value.p_value
186
+ if name == "watervolumeupstream":
187
+ self._watervolumeupstream_outputpointer = value.p_value
188
+ if name == "watervolumedownstream":
189
+ self._watervolumedownstream_outputpointer = value.p_value
190
+ if name == "wettedarea":
191
+ self._wettedarea_outputpointer = value.p_value
192
+ if name == "wettedperimeter":
193
+ self._wettedperimeter_outputpointer = value.p_value
194
+ cpdef inline void update_outputs(self) noexcept nogil:
195
+ if self._maxtimestep_outputflag:
196
+ self._maxtimestep_outputpointer[0] = self.maxtimestep
197
+ if self._timestep_outputflag:
198
+ self._timestep_outputpointer[0] = self.timestep
199
+ if self._waterdepth_outputflag:
200
+ self._waterdepth_outputpointer[0] = self.waterdepth
201
+ if self._waterlevel_outputflag:
202
+ self._waterlevel_outputpointer[0] = self.waterlevel
203
+ if self._waterlevelupstream_outputflag:
204
+ self._waterlevelupstream_outputpointer[0] = self.waterlevelupstream
205
+ if self._waterleveldownstream_outputflag:
206
+ self._waterleveldownstream_outputpointer[0] = self.waterleveldownstream
207
+ if self._watervolumeupstream_outputflag:
208
+ self._watervolumeupstream_outputpointer[0] = self.watervolumeupstream
209
+ if self._watervolumedownstream_outputflag:
210
+ self._watervolumedownstream_outputpointer[0] = self.watervolumedownstream
211
+ if self._wettedarea_outputflag:
212
+ self._wettedarea_outputpointer[0] = self.wettedarea
213
+ if self._wettedperimeter_outputflag:
214
+ self._wettedperimeter_outputpointer[0] = self.wettedperimeter
215
+ @cython.final
216
+ cdef class FluxSequences:
217
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
218
+ cdef numpy.int64_t k
219
+ if self._dischargeupstream_diskflag_reading:
220
+ self.dischargeupstream = self._dischargeupstream_ncarray[0]
221
+ elif self._dischargeupstream_ramflag:
222
+ self.dischargeupstream = self._dischargeupstream_array[idx]
223
+ if self._dischargedownstream_diskflag_reading:
224
+ self.dischargedownstream = self._dischargedownstream_ncarray[0]
225
+ elif self._dischargedownstream_ramflag:
226
+ self.dischargedownstream = self._dischargedownstream_array[idx]
227
+ if self._dischargevolume_diskflag_reading:
228
+ self.dischargevolume = self._dischargevolume_ncarray[0]
229
+ elif self._dischargevolume_ramflag:
230
+ self.dischargevolume = self._dischargevolume_array[idx]
231
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
232
+ cdef numpy.int64_t k
233
+ if self._dischargeupstream_diskflag_writing:
234
+ self._dischargeupstream_ncarray[0] = self.dischargeupstream
235
+ if self._dischargeupstream_ramflag:
236
+ self._dischargeupstream_array[idx] = self.dischargeupstream
237
+ if self._dischargedownstream_diskflag_writing:
238
+ self._dischargedownstream_ncarray[0] = self.dischargedownstream
239
+ if self._dischargedownstream_ramflag:
240
+ self._dischargedownstream_array[idx] = self.dischargedownstream
241
+ if self._dischargevolume_diskflag_writing:
242
+ self._dischargevolume_ncarray[0] = self.dischargevolume
243
+ if self._dischargevolume_ramflag:
244
+ self._dischargevolume_array[idx] = self.dischargevolume
245
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
246
+ if name == "dischargeupstream":
247
+ self._dischargeupstream_outputpointer = value.p_value
248
+ if name == "dischargedownstream":
249
+ self._dischargedownstream_outputpointer = value.p_value
250
+ if name == "dischargevolume":
251
+ self._dischargevolume_outputpointer = value.p_value
252
+ cpdef inline void update_outputs(self) noexcept nogil:
253
+ if self._dischargeupstream_outputflag:
254
+ self._dischargeupstream_outputpointer[0] = self.dischargeupstream
255
+ if self._dischargedownstream_outputflag:
256
+ self._dischargedownstream_outputpointer[0] = self.dischargedownstream
257
+ if self._dischargevolume_outputflag:
258
+ self._dischargevolume_outputpointer[0] = self.dischargevolume
259
+ @cython.final
260
+ cdef class StateSequences:
261
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
262
+ cdef numpy.int64_t k
263
+ if self._discharge_diskflag_reading:
264
+ self.discharge = self._discharge_ncarray[0]
265
+ elif self._discharge_ramflag:
266
+ self.discharge = self._discharge_array[idx]
267
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
268
+ cdef numpy.int64_t k
269
+ if self._discharge_diskflag_writing:
270
+ self._discharge_ncarray[0] = self.discharge
271
+ if self._discharge_ramflag:
272
+ self._discharge_array[idx] = self.discharge
273
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
274
+ if name == "discharge":
275
+ self._discharge_outputpointer = value.p_value
276
+ cpdef inline void update_outputs(self) noexcept nogil:
277
+ if self._discharge_outputflag:
278
+ self._discharge_outputpointer[0] = self.discharge
279
+ @cython.final
280
+ cdef class OutletSequences:
281
+ cpdef inline alloc(self, name, numpy.int64_t length):
282
+ if name == "longq":
283
+ self._longq_length_0 = length
284
+ self._longq_ready = numpy.full(length, 0, dtype=numpy.int64)
285
+ self.longq = <double**> PyMem_Malloc(length * sizeof(double*))
286
+ cpdef inline dealloc(self, name):
287
+ if name == "longq":
288
+ PyMem_Free(self.longq)
289
+ cpdef inline set_pointer1d(self, str name, pointerutils.Double value, numpy.int64_t idx):
290
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
291
+ if name == "longq":
292
+ self.longq[idx] = pointer.p_value
293
+ self._longq_ready[idx] = 1
294
+ cpdef get_value(self, str name):
295
+ cdef numpy.int64_t idx
296
+ if name == "longq":
297
+ values = numpy.empty(self.len_longq)
298
+ for idx in range(self.len_longq):
299
+ pointerutils.check0(self._longq_length_0)
300
+ if self._longq_ready[idx] == 0:
301
+ pointerutils.check1(self._longq_length_0, idx)
302
+ pointerutils.check2(self._longq_ready, idx)
303
+ values[idx] = self.longq[idx][0]
304
+ return values
305
+ cpdef set_value(self, str name, value):
306
+ if name == "longq":
307
+ for idx in range(self.len_longq):
308
+ pointerutils.check0(self._longq_length_0)
309
+ if self._longq_ready[idx] == 0:
310
+ pointerutils.check1(self._longq_length_0, idx)
311
+ pointerutils.check2(self._longq_ready, idx)
312
+ self.longq[idx][0] = value[idx]
313
+ @cython.final
314
+ cdef class Model(masterinterface.MasterInterface):
315
+ def __init__(self):
316
+ super().__init__()
317
+ self.crosssection = None
318
+ self.crosssection_is_mainmodel = False
319
+ self.routingmodelsdownstream = interfaceutils.SubmodelsProperty()
320
+ self.routingmodelsupstream = interfaceutils.SubmodelsProperty()
321
+ self.storagemodeldownstream = None
322
+ self.storagemodeldownstream_is_mainmodel = False
323
+ self.storagemodelupstream = None
324
+ self.storagemodelupstream_is_mainmodel = False
325
+ def get_crosssection(self) -> masterinterface.MasterInterface | None:
326
+ return self.crosssection
327
+ def set_crosssection(self, crosssection: masterinterface.MasterInterface | None) -> None:
328
+ self.crosssection = crosssection
329
+ def get_storagemodeldownstream(self) -> masterinterface.MasterInterface | None:
330
+ return self.storagemodeldownstream
331
+ def set_storagemodeldownstream(self, storagemodeldownstream: masterinterface.MasterInterface | None) -> None:
332
+ self.storagemodeldownstream = storagemodeldownstream
333
+ def get_storagemodelupstream(self) -> masterinterface.MasterInterface | None:
334
+ return self.storagemodelupstream
335
+ def set_storagemodelupstream(self, storagemodelupstream: masterinterface.MasterInterface | None) -> None:
336
+ self.storagemodelupstream = storagemodelupstream
337
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
338
+ self.idx_sim = idx
339
+ self.reset_reuseflags()
340
+ self.load_data(idx)
341
+ self.run()
342
+ self.new2old()
343
+ self.update_outputs()
344
+ cpdef void reset_reuseflags(self) noexcept nogil:
345
+ if (self.crosssection is not None) and not self.crosssection_is_mainmodel:
346
+ self.crosssection.reset_reuseflags()
347
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
348
+ self.idx_sim = idx
349
+ if (self.crosssection is not None) and not self.crosssection_is_mainmodel:
350
+ self.crosssection.load_data(idx)
351
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
352
+ self.idx_sim = idx
353
+ self.sequences.factors.save_data(idx)
354
+ self.sequences.fluxes.save_data(idx)
355
+ self.sequences.states.save_data(idx)
356
+ if (self.crosssection is not None) and not self.crosssection_is_mainmodel:
357
+ self.crosssection.save_data(idx)
358
+ cpdef void new2old(self) noexcept nogil:
359
+ self.sequences.old_states.discharge = self.sequences.new_states.discharge
360
+ if (self.crosssection is not None) and not self.crosssection_is_mainmodel:
361
+ self.crosssection.new2old()
362
+ cpdef inline void run(self) noexcept nogil:
363
+ pass
364
+ cpdef inline void update_inlets(self) noexcept nogil:
365
+ pass
366
+ cpdef inline void update_outlets(self) noexcept nogil:
367
+ pass
368
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
369
+ self.idx_sim = idx
370
+ pass
371
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
372
+ self.idx_sim = idx
373
+ pass
374
+ cpdef inline void update_outputs(self) noexcept nogil:
375
+ self.sequences.factors.update_outputs()
376
+ self.sequences.fluxes.update_outputs()
377
+ self.sequences.states.update_outputs()
378
+ cpdef double get_maxtimestep_v1(self) noexcept nogil:
379
+ return self.sequences.factors.maxtimestep
380
+ cpdef double get_discharge_v1(self) noexcept nogil:
381
+ return self.sequences.states.discharge
382
+ cpdef double get_partialdischargeupstream_v1(self, double clientdischarge) noexcept nogil:
383
+ cdef numpy.int64_t i
384
+ cdef double dischargedownstream
385
+ dischargedownstream = 0.0
386
+ for i in range(self.routingmodelsdownstream.number):
387
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
388
+ dischargedownstream = dischargedownstream + (fabs( (<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_discharge() ))
389
+ if dischargedownstream == 0.0:
390
+ return 0.0
391
+ return fabs(self.sequences.states.discharge) * clientdischarge / dischargedownstream
392
+ cpdef double get_partialdischargedownstream_v1(self, double clientdischarge) noexcept nogil:
393
+ cdef numpy.int64_t i
394
+ cdef double dischargeupstream
395
+ dischargeupstream = 0.0
396
+ for i in range(self.routingmodelsupstream.number):
397
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
398
+ dischargeupstream = dischargeupstream + (fabs( (<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_discharge() ))
399
+ if dischargeupstream == 0.0:
400
+ return 0.0
401
+ return fabs(self.sequences.states.discharge) * clientdischarge / dischargeupstream
402
+ cpdef double get_dischargevolume_v1(self) noexcept nogil:
403
+ return self.sequences.fluxes.dischargevolume
404
+ cpdef void set_timestep_v1(self, double timestep) noexcept nogil:
405
+ self.sequences.factors.timestep = timestep
406
+ cpdef inline void reset_dischargevolume_v1(self) noexcept nogil:
407
+ self.sequences.fluxes.dischargevolume = 0.0
408
+ cpdef inline void calc_watervolumeupstream_v1(self) noexcept nogil:
409
+ if self.storagemodelupstream_typeid == 1:
410
+ self.sequences.factors.watervolumeupstream = (<masterinterface.MasterInterface>self.storagemodelupstream).get_watervolume()
411
+ cpdef inline void calc_watervolumedownstream_v1(self) noexcept nogil:
412
+ if self.storagemodeldownstream_typeid == 1:
413
+ self.sequences.factors.watervolumedownstream = (<masterinterface.MasterInterface>self.storagemodeldownstream).get_watervolume()
414
+ cpdef inline void calc_waterlevelupstream_v1(self) noexcept nogil:
415
+ if self.storagemodelupstream_typeid == 1:
416
+ self.sequences.factors.waterlevelupstream = (<masterinterface.MasterInterface>self.storagemodelupstream).get_waterlevel()
417
+ cpdef inline void calc_waterleveldownstream_v1(self) noexcept nogil:
418
+ if self.storagemodeldownstream_typeid == 1:
419
+ self.sequences.factors.waterleveldownstream = (<masterinterface.MasterInterface>self.storagemodeldownstream).get_waterlevel()
420
+ cpdef inline void calc_waterlevel_v1(self) noexcept nogil:
421
+ cdef double w
422
+ w = self.parameters.derived.weightupstream
423
+ self.sequences.factors.waterlevel = ( w * self.sequences.factors.waterlevelupstream + (1.0 - w) * self.sequences.factors.waterleveldownstream )
424
+ cpdef inline void calc_waterdepth_wettedarea_wettedperimeter_crosssectionmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
425
+ submodel.use_waterlevel(self.sequences.factors.waterlevel)
426
+ self.sequences.factors.waterdepth = submodel.get_waterdepth()
427
+ self.sequences.factors.wettedarea = submodel.get_wettedarea()
428
+ self.sequences.factors.wettedperimeter = submodel.get_wettedperimeter()
429
+ cpdef inline void calc_waterdepth_wettedarea_wettedperimeter_v1(self) noexcept nogil:
430
+ if self.crosssection_typeid == 2:
431
+ self.calc_waterdepth_wettedarea_wettedperimeter_crosssectionmodel_v2( (<masterinterface.MasterInterface>self.crosssection) )
432
+ cpdef inline void calc_maxtimestep_v1(self) noexcept nogil:
433
+ if self.sequences.factors.waterdepth > 0.0:
434
+ self.sequences.factors.maxtimestep = (self.parameters.control.timestepfactor * 1000.0 * self.parameters.derived.lengthmin) / ( self.parameters.fixed.gravitationalacceleration * self.sequences.factors.waterdepth ) ** 0.5
435
+ else:
436
+ self.sequences.factors.maxtimestep = inf
437
+ cpdef inline void calc_dischargeupstream_v1(self) noexcept nogil:
438
+ cdef numpy.int64_t i
439
+ self.sequences.fluxes.dischargeupstream = 0.0
440
+ for i in range(self.routingmodelsupstream.number):
441
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
442
+ self.sequences.fluxes.dischargeupstream = self.sequences.fluxes.dischargeupstream + ((<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_partialdischargeupstream(self.sequences.states.discharge))
443
+ cpdef inline void calc_dischargedownstream_v1(self) noexcept nogil:
444
+ cdef numpy.int64_t i
445
+ self.sequences.fluxes.dischargedownstream = 0.0
446
+ for i in range(self.routingmodelsdownstream.number):
447
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
448
+ self.sequences.fluxes.dischargedownstream = self.sequences.fluxes.dischargedownstream + ((<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_partialdischargedownstream(self.sequences.states.discharge))
449
+ cpdef inline void calc_discharge_v1(self) noexcept nogil:
450
+ cdef double denominator
451
+ cdef double nominator2
452
+ cdef double nominator1
453
+ cdef double w
454
+ if self.sequences.factors.wettedarea > 0.0:
455
+ w = self.parameters.control.diffusionfactor
456
+ nominator1 = (1.0 - w) * self.sequences.states.discharge + w / 2.0 * ( self.sequences.fluxes.dischargeupstream + self.sequences.fluxes.dischargedownstream )
457
+ 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) )
458
+ 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) )
459
+ self.sequences.states.discharge = (nominator1 + nominator2) / denominator
460
+ else:
461
+ self.sequences.states.discharge = 0.0
462
+ cpdef inline void update_discharge_v1(self) noexcept nogil:
463
+ cdef double q_min
464
+ cdef double q_max
465
+ if self.sequences.states.discharge > 0.0:
466
+ q_max = 1000.0 * max(self.sequences.factors.watervolumeupstream, 0.0) / self.sequences.factors.timestep
467
+ self.sequences.states.discharge = min(self.sequences.states.discharge, q_max)
468
+ elif self.sequences.states.discharge < 0.0:
469
+ q_min = -1000.0 * max(self.sequences.factors.watervolumedownstream, 0.0) / self.sequences.factors.timestep
470
+ self.sequences.states.discharge = max(self.sequences.states.discharge, q_min)
471
+ cpdef inline void update_dischargevolume_v1(self) noexcept nogil:
472
+ self.sequences.fluxes.dischargevolume = self.sequences.fluxes.dischargevolume + (self.sequences.factors.timestep * self.sequences.states.discharge)
473
+ cpdef inline void pass_discharge_v1(self) noexcept nogil:
474
+ cdef numpy.int64_t i
475
+ cdef double discharge
476
+ discharge = self.sequences.fluxes.dischargevolume / self.parameters.derived.seconds
477
+ for i in range(self.sequences.inlets.len_longq):
478
+ self.sequences.inlets.longq[i][0] = self.sequences.inlets.longq[i][0] + (discharge)
479
+ for i in range(self.sequences.outlets.len_longq):
480
+ self.sequences.outlets.longq[i][0] = self.sequences.outlets.longq[i][0] + (discharge)
481
+ cpdef double get_maxtimestep(self) noexcept nogil:
482
+ return self.sequences.factors.maxtimestep
483
+ cpdef double get_discharge(self) noexcept nogil:
484
+ return self.sequences.states.discharge
485
+ cpdef double get_partialdischargeupstream(self, double clientdischarge) noexcept nogil:
486
+ cdef numpy.int64_t i
487
+ cdef double dischargedownstream
488
+ dischargedownstream = 0.0
489
+ for i in range(self.routingmodelsdownstream.number):
490
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
491
+ dischargedownstream = dischargedownstream + (fabs( (<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_discharge() ))
492
+ if dischargedownstream == 0.0:
493
+ return 0.0
494
+ return fabs(self.sequences.states.discharge) * clientdischarge / dischargedownstream
495
+ cpdef double get_partialdischargedownstream(self, double clientdischarge) noexcept nogil:
496
+ cdef numpy.int64_t i
497
+ cdef double dischargeupstream
498
+ dischargeupstream = 0.0
499
+ for i in range(self.routingmodelsupstream.number):
500
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
501
+ dischargeupstream = dischargeupstream + (fabs( (<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_discharge() ))
502
+ if dischargeupstream == 0.0:
503
+ return 0.0
504
+ return fabs(self.sequences.states.discharge) * clientdischarge / dischargeupstream
505
+ cpdef double get_dischargevolume(self) noexcept nogil:
506
+ return self.sequences.fluxes.dischargevolume
507
+ cpdef void set_timestep(self, double timestep) noexcept nogil:
508
+ self.sequences.factors.timestep = timestep
509
+ cpdef inline void reset_dischargevolume(self) noexcept nogil:
510
+ self.sequences.fluxes.dischargevolume = 0.0
511
+ cpdef inline void calc_watervolumeupstream(self) noexcept nogil:
512
+ if self.storagemodelupstream_typeid == 1:
513
+ self.sequences.factors.watervolumeupstream = (<masterinterface.MasterInterface>self.storagemodelupstream).get_watervolume()
514
+ cpdef inline void calc_watervolumedownstream(self) noexcept nogil:
515
+ if self.storagemodeldownstream_typeid == 1:
516
+ self.sequences.factors.watervolumedownstream = (<masterinterface.MasterInterface>self.storagemodeldownstream).get_watervolume()
517
+ cpdef inline void calc_waterlevelupstream(self) noexcept nogil:
518
+ if self.storagemodelupstream_typeid == 1:
519
+ self.sequences.factors.waterlevelupstream = (<masterinterface.MasterInterface>self.storagemodelupstream).get_waterlevel()
520
+ cpdef inline void calc_waterleveldownstream(self) noexcept nogil:
521
+ if self.storagemodeldownstream_typeid == 1:
522
+ self.sequences.factors.waterleveldownstream = (<masterinterface.MasterInterface>self.storagemodeldownstream).get_waterlevel()
523
+ cpdef inline void calc_waterlevel(self) noexcept nogil:
524
+ cdef double w
525
+ w = self.parameters.derived.weightupstream
526
+ self.sequences.factors.waterlevel = ( w * self.sequences.factors.waterlevelupstream + (1.0 - w) * self.sequences.factors.waterleveldownstream )
527
+ cpdef inline void calc_waterdepth_wettedarea_wettedperimeter_crosssectionmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
528
+ submodel.use_waterlevel(self.sequences.factors.waterlevel)
529
+ self.sequences.factors.waterdepth = submodel.get_waterdepth()
530
+ self.sequences.factors.wettedarea = submodel.get_wettedarea()
531
+ self.sequences.factors.wettedperimeter = submodel.get_wettedperimeter()
532
+ cpdef inline void calc_waterdepth_wettedarea_wettedperimeter(self) noexcept nogil:
533
+ if self.crosssection_typeid == 2:
534
+ self.calc_waterdepth_wettedarea_wettedperimeter_crosssectionmodel_v2( (<masterinterface.MasterInterface>self.crosssection) )
535
+ cpdef inline void calc_maxtimestep(self) noexcept nogil:
536
+ if self.sequences.factors.waterdepth > 0.0:
537
+ self.sequences.factors.maxtimestep = (self.parameters.control.timestepfactor * 1000.0 * self.parameters.derived.lengthmin) / ( self.parameters.fixed.gravitationalacceleration * self.sequences.factors.waterdepth ) ** 0.5
538
+ else:
539
+ self.sequences.factors.maxtimestep = inf
540
+ cpdef inline void calc_dischargeupstream(self) noexcept nogil:
541
+ cdef numpy.int64_t i
542
+ self.sequences.fluxes.dischargeupstream = 0.0
543
+ for i in range(self.routingmodelsupstream.number):
544
+ if self.routingmodelsupstream.typeids[i] in (1, 2):
545
+ self.sequences.fluxes.dischargeupstream = self.sequences.fluxes.dischargeupstream + ((<masterinterface.MasterInterface>self.routingmodelsupstream.submodels[i]).get_partialdischargeupstream(self.sequences.states.discharge))
546
+ cpdef inline void calc_dischargedownstream(self) noexcept nogil:
547
+ cdef numpy.int64_t i
548
+ self.sequences.fluxes.dischargedownstream = 0.0
549
+ for i in range(self.routingmodelsdownstream.number):
550
+ if self.routingmodelsdownstream.typeids[i] in (2, 3):
551
+ self.sequences.fluxes.dischargedownstream = self.sequences.fluxes.dischargedownstream + ((<masterinterface.MasterInterface>self.routingmodelsdownstream.submodels[i]).get_partialdischargedownstream(self.sequences.states.discharge))
552
+ cpdef inline void calc_discharge(self) noexcept nogil:
553
+ cdef double denominator
554
+ cdef double nominator2
555
+ cdef double nominator1
556
+ cdef double w
557
+ if self.sequences.factors.wettedarea > 0.0:
558
+ w = self.parameters.control.diffusionfactor
559
+ nominator1 = (1.0 - w) * self.sequences.states.discharge + w / 2.0 * ( self.sequences.fluxes.dischargeupstream + self.sequences.fluxes.dischargedownstream )
560
+ 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) )
561
+ 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) )
562
+ self.sequences.states.discharge = (nominator1 + nominator2) / denominator
563
+ else:
564
+ self.sequences.states.discharge = 0.0
565
+ cpdef inline void update_discharge(self) noexcept nogil:
566
+ cdef double q_min
567
+ cdef double q_max
568
+ if self.sequences.states.discharge > 0.0:
569
+ q_max = 1000.0 * max(self.sequences.factors.watervolumeupstream, 0.0) / self.sequences.factors.timestep
570
+ self.sequences.states.discharge = min(self.sequences.states.discharge, q_max)
571
+ elif self.sequences.states.discharge < 0.0:
572
+ q_min = -1000.0 * max(self.sequences.factors.watervolumedownstream, 0.0) / self.sequences.factors.timestep
573
+ self.sequences.states.discharge = max(self.sequences.states.discharge, q_min)
574
+ cpdef inline void update_dischargevolume(self) noexcept nogil:
575
+ self.sequences.fluxes.dischargevolume = self.sequences.fluxes.dischargevolume + (self.sequences.factors.timestep * self.sequences.states.discharge)
576
+ cpdef inline void pass_discharge(self) noexcept nogil:
577
+ cdef numpy.int64_t i
578
+ cdef double discharge
579
+ discharge = self.sequences.fluxes.dischargevolume / self.parameters.derived.seconds
580
+ for i in range(self.sequences.inlets.len_longq):
581
+ self.sequences.inlets.longq[i][0] = self.sequences.inlets.longq[i][0] + (discharge)
582
+ for i in range(self.sequences.outlets.len_longq):
583
+ self.sequences.outlets.longq[i][0] = self.sequences.outlets.longq[i][0] + (discharge)
584
+ cpdef void perform_preprocessing_v2(self) noexcept nogil:
585
+ self.reset_dischargevolume_v1()
586
+ cpdef void determine_maxtimestep_v1(self) noexcept nogil:
587
+ self.calc_waterlevelupstream_v1()
588
+ self.calc_waterleveldownstream_v1()
589
+ self.calc_waterlevel_v1()
590
+ self.calc_waterdepth_wettedarea_wettedperimeter_v1()
591
+ self.calc_dischargeupstream_v1()
592
+ self.calc_dischargedownstream_v1()
593
+ self.calc_maxtimestep_v1()
594
+ cpdef void determine_discharge_v1(self) noexcept nogil:
595
+ self.calc_watervolumeupstream_v1()
596
+ self.calc_watervolumedownstream_v1()
597
+ self.calc_discharge_v1()
598
+ self.update_discharge_v1()
599
+ self.update_dischargevolume_v1()
600
+ cpdef void perform_postprocessing_v2(self) noexcept nogil:
601
+ self.pass_discharge_v1()
602
+ cpdef void perform_preprocessing(self) noexcept nogil:
603
+ self.reset_dischargevolume_v1()
604
+ cpdef void determine_maxtimestep(self) noexcept nogil:
605
+ self.calc_waterlevelupstream_v1()
606
+ self.calc_waterleveldownstream_v1()
607
+ self.calc_waterlevel_v1()
608
+ self.calc_waterdepth_wettedarea_wettedperimeter_v1()
609
+ self.calc_dischargeupstream_v1()
610
+ self.calc_dischargedownstream_v1()
611
+ self.calc_maxtimestep_v1()
612
+ cpdef void determine_discharge(self) noexcept nogil:
613
+ self.calc_watervolumeupstream_v1()
614
+ self.calc_watervolumedownstream_v1()
615
+ self.calc_discharge_v1()
616
+ self.update_discharge_v1()
617
+ self.update_dischargevolume_v1()
618
+ cpdef void perform_postprocessing(self) noexcept nogil:
619
+ self.pass_discharge_v1()