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