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,1477 @@
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
+ if name == "d":
108
+ self.d = pointer.p_value
109
+ if name == "s":
110
+ self.s = pointer.p_value
111
+ if name == "r":
112
+ self.r = pointer.p_value
113
+ if name == "owl":
114
+ self.owl = pointer.p_value
115
+ if name == "rwl":
116
+ self.rwl = pointer.p_value
117
+ cpdef get_value(self, str name):
118
+ cdef numpy.int64_t idx
119
+ if name == "q":
120
+ return self.q[0]
121
+ if name == "d":
122
+ return self.d[0]
123
+ if name == "s":
124
+ return self.s[0]
125
+ if name == "r":
126
+ return self.r[0]
127
+ if name == "owl":
128
+ return self.owl[0]
129
+ if name == "rwl":
130
+ return self.rwl[0]
131
+ cpdef set_value(self, str name, value):
132
+ if name == "q":
133
+ self.q[0] = value
134
+ if name == "d":
135
+ self.d[0] = value
136
+ if name == "s":
137
+ self.s[0] = value
138
+ if name == "r":
139
+ self.r[0] = value
140
+ if name == "owl":
141
+ self.owl[0] = value
142
+ if name == "rwl":
143
+ self.rwl[0] = value
144
+ @cython.final
145
+ cdef class FactorSequences:
146
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
147
+ cdef numpy.int64_t k
148
+ if self._waterlevel_diskflag_reading:
149
+ self.waterlevel = self._waterlevel_ncarray[0]
150
+ elif self._waterlevel_ramflag:
151
+ self.waterlevel = self._waterlevel_array[idx]
152
+ if self._outerwaterlevel_diskflag_reading:
153
+ self.outerwaterlevel = self._outerwaterlevel_ncarray[0]
154
+ elif self._outerwaterlevel_ramflag:
155
+ self.outerwaterlevel = self._outerwaterlevel_array[idx]
156
+ if self._remotewaterlevel_diskflag_reading:
157
+ self.remotewaterlevel = self._remotewaterlevel_ncarray[0]
158
+ elif self._remotewaterlevel_ramflag:
159
+ self.remotewaterlevel = self._remotewaterlevel_array[idx]
160
+ if self._waterleveldifference_diskflag_reading:
161
+ self.waterleveldifference = self._waterleveldifference_ncarray[0]
162
+ elif self._waterleveldifference_ramflag:
163
+ self.waterleveldifference = self._waterleveldifference_array[idx]
164
+ if self._effectivewaterleveldifference_diskflag_reading:
165
+ self.effectivewaterleveldifference = self._effectivewaterleveldifference_ncarray[0]
166
+ elif self._effectivewaterleveldifference_ramflag:
167
+ self.effectivewaterleveldifference = self._effectivewaterleveldifference_array[idx]
168
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
169
+ cdef numpy.int64_t k
170
+ if self._waterlevel_diskflag_writing:
171
+ self._waterlevel_ncarray[0] = self.waterlevel
172
+ if self._waterlevel_ramflag:
173
+ self._waterlevel_array[idx] = self.waterlevel
174
+ if self._outerwaterlevel_diskflag_writing:
175
+ self._outerwaterlevel_ncarray[0] = self.outerwaterlevel
176
+ if self._outerwaterlevel_ramflag:
177
+ self._outerwaterlevel_array[idx] = self.outerwaterlevel
178
+ if self._remotewaterlevel_diskflag_writing:
179
+ self._remotewaterlevel_ncarray[0] = self.remotewaterlevel
180
+ if self._remotewaterlevel_ramflag:
181
+ self._remotewaterlevel_array[idx] = self.remotewaterlevel
182
+ if self._waterleveldifference_diskflag_writing:
183
+ self._waterleveldifference_ncarray[0] = self.waterleveldifference
184
+ if self._waterleveldifference_ramflag:
185
+ self._waterleveldifference_array[idx] = self.waterleveldifference
186
+ if self._effectivewaterleveldifference_diskflag_writing:
187
+ self._effectivewaterleveldifference_ncarray[0] = self.effectivewaterleveldifference
188
+ if self._effectivewaterleveldifference_ramflag:
189
+ self._effectivewaterleveldifference_array[idx] = self.effectivewaterleveldifference
190
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
191
+ if name == "waterlevel":
192
+ self._waterlevel_outputpointer = value.p_value
193
+ if name == "outerwaterlevel":
194
+ self._outerwaterlevel_outputpointer = value.p_value
195
+ if name == "remotewaterlevel":
196
+ self._remotewaterlevel_outputpointer = value.p_value
197
+ if name == "waterleveldifference":
198
+ self._waterleveldifference_outputpointer = value.p_value
199
+ if name == "effectivewaterleveldifference":
200
+ self._effectivewaterleveldifference_outputpointer = value.p_value
201
+ cpdef inline void update_outputs(self) noexcept nogil:
202
+ if self._waterlevel_outputflag:
203
+ self._waterlevel_outputpointer[0] = self.waterlevel
204
+ if self._outerwaterlevel_outputflag:
205
+ self._outerwaterlevel_outputpointer[0] = self.outerwaterlevel
206
+ if self._remotewaterlevel_outputflag:
207
+ self._remotewaterlevel_outputpointer[0] = self.remotewaterlevel
208
+ if self._waterleveldifference_outputflag:
209
+ self._waterleveldifference_outputpointer[0] = self.waterleveldifference
210
+ if self._effectivewaterleveldifference_outputflag:
211
+ self._effectivewaterleveldifference_outputpointer[0] = self.effectivewaterleveldifference
212
+ @cython.final
213
+ cdef class FluxSequences:
214
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
215
+ cdef numpy.int64_t k
216
+ if self._precipitation_diskflag_reading:
217
+ self.precipitation = self._precipitation_ncarray[0]
218
+ elif self._precipitation_ramflag:
219
+ self.precipitation = self._precipitation_array[idx]
220
+ if self._adjustedprecipitation_diskflag_reading:
221
+ self.adjustedprecipitation = self._adjustedprecipitation_ncarray[0]
222
+ elif self._adjustedprecipitation_ramflag:
223
+ self.adjustedprecipitation = self._adjustedprecipitation_array[idx]
224
+ if self._potentialevaporation_diskflag_reading:
225
+ self.potentialevaporation = self._potentialevaporation_ncarray[0]
226
+ elif self._potentialevaporation_ramflag:
227
+ self.potentialevaporation = self._potentialevaporation_array[idx]
228
+ if self._adjustedevaporation_diskflag_reading:
229
+ self.adjustedevaporation = self._adjustedevaporation_ncarray[0]
230
+ elif self._adjustedevaporation_ramflag:
231
+ self.adjustedevaporation = self._adjustedevaporation_array[idx]
232
+ if self._actualevaporation_diskflag_reading:
233
+ self.actualevaporation = self._actualevaporation_ncarray[0]
234
+ elif self._actualevaporation_ramflag:
235
+ self.actualevaporation = self._actualevaporation_array[idx]
236
+ if self._inflow_diskflag_reading:
237
+ self.inflow = self._inflow_ncarray[0]
238
+ elif self._inflow_ramflag:
239
+ self.inflow = self._inflow_array[idx]
240
+ if self._exchange_diskflag_reading:
241
+ self.exchange = self._exchange_ncarray[0]
242
+ elif self._exchange_ramflag:
243
+ self.exchange = self._exchange_array[idx]
244
+ if self._totalremotedischarge_diskflag_reading:
245
+ self.totalremotedischarge = self._totalremotedischarge_ncarray[0]
246
+ elif self._totalremotedischarge_ramflag:
247
+ self.totalremotedischarge = self._totalremotedischarge_array[idx]
248
+ if self._naturalremotedischarge_diskflag_reading:
249
+ self.naturalremotedischarge = self._naturalremotedischarge_ncarray[0]
250
+ elif self._naturalremotedischarge_ramflag:
251
+ self.naturalremotedischarge = self._naturalremotedischarge_array[idx]
252
+ if self._remotedemand_diskflag_reading:
253
+ self.remotedemand = self._remotedemand_ncarray[0]
254
+ elif self._remotedemand_ramflag:
255
+ self.remotedemand = self._remotedemand_array[idx]
256
+ if self._remotefailure_diskflag_reading:
257
+ self.remotefailure = self._remotefailure_ncarray[0]
258
+ elif self._remotefailure_ramflag:
259
+ self.remotefailure = self._remotefailure_array[idx]
260
+ if self._requiredremoterelease_diskflag_reading:
261
+ self.requiredremoterelease = self._requiredremoterelease_ncarray[0]
262
+ elif self._requiredremoterelease_ramflag:
263
+ self.requiredremoterelease = self._requiredremoterelease_array[idx]
264
+ if self._allowedremoterelief_diskflag_reading:
265
+ self.allowedremoterelief = self._allowedremoterelief_ncarray[0]
266
+ elif self._allowedremoterelief_ramflag:
267
+ self.allowedremoterelief = self._allowedremoterelief_array[idx]
268
+ if self._requiredremotesupply_diskflag_reading:
269
+ self.requiredremotesupply = self._requiredremotesupply_ncarray[0]
270
+ elif self._requiredremotesupply_ramflag:
271
+ self.requiredremotesupply = self._requiredremotesupply_array[idx]
272
+ if self._possibleremoterelief_diskflag_reading:
273
+ self.possibleremoterelief = self._possibleremoterelief_ncarray[0]
274
+ elif self._possibleremoterelief_ramflag:
275
+ self.possibleremoterelief = self._possibleremoterelief_array[idx]
276
+ if self._actualremoterelief_diskflag_reading:
277
+ self.actualremoterelief = self._actualremoterelief_ncarray[0]
278
+ elif self._actualremoterelief_ramflag:
279
+ self.actualremoterelief = self._actualremoterelief_array[idx]
280
+ if self._requiredrelease_diskflag_reading:
281
+ self.requiredrelease = self._requiredrelease_ncarray[0]
282
+ elif self._requiredrelease_ramflag:
283
+ self.requiredrelease = self._requiredrelease_array[idx]
284
+ if self._targetedrelease_diskflag_reading:
285
+ self.targetedrelease = self._targetedrelease_ncarray[0]
286
+ elif self._targetedrelease_ramflag:
287
+ self.targetedrelease = self._targetedrelease_array[idx]
288
+ if self._actualrelease_diskflag_reading:
289
+ self.actualrelease = self._actualrelease_ncarray[0]
290
+ elif self._actualrelease_ramflag:
291
+ self.actualrelease = self._actualrelease_array[idx]
292
+ if self._missingremoterelease_diskflag_reading:
293
+ self.missingremoterelease = self._missingremoterelease_ncarray[0]
294
+ elif self._missingremoterelease_ramflag:
295
+ self.missingremoterelease = self._missingremoterelease_array[idx]
296
+ if self._actualremoterelease_diskflag_reading:
297
+ self.actualremoterelease = self._actualremoterelease_ncarray[0]
298
+ elif self._actualremoterelease_ramflag:
299
+ self.actualremoterelease = self._actualremoterelease_array[idx]
300
+ if self._flooddischarge_diskflag_reading:
301
+ self.flooddischarge = self._flooddischarge_ncarray[0]
302
+ elif self._flooddischarge_ramflag:
303
+ self.flooddischarge = self._flooddischarge_array[idx]
304
+ if self._freedischarge_diskflag_reading:
305
+ self.freedischarge = self._freedischarge_ncarray[0]
306
+ elif self._freedischarge_ramflag:
307
+ self.freedischarge = self._freedischarge_array[idx]
308
+ if self._maxforceddischarge_diskflag_reading:
309
+ self.maxforceddischarge = self._maxforceddischarge_ncarray[0]
310
+ elif self._maxforceddischarge_ramflag:
311
+ self.maxforceddischarge = self._maxforceddischarge_array[idx]
312
+ if self._maxfreedischarge_diskflag_reading:
313
+ self.maxfreedischarge = self._maxfreedischarge_ncarray[0]
314
+ elif self._maxfreedischarge_ramflag:
315
+ self.maxfreedischarge = self._maxfreedischarge_array[idx]
316
+ if self._forceddischarge_diskflag_reading:
317
+ self.forceddischarge = self._forceddischarge_ncarray[0]
318
+ elif self._forceddischarge_ramflag:
319
+ self.forceddischarge = self._forceddischarge_array[idx]
320
+ if self._outflow_diskflag_reading:
321
+ self.outflow = self._outflow_ncarray[0]
322
+ elif self._outflow_ramflag:
323
+ self.outflow = self._outflow_array[idx]
324
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
325
+ cdef numpy.int64_t k
326
+ if self._precipitation_diskflag_writing:
327
+ self._precipitation_ncarray[0] = self.precipitation
328
+ if self._precipitation_ramflag:
329
+ self._precipitation_array[idx] = self.precipitation
330
+ if self._adjustedprecipitation_diskflag_writing:
331
+ self._adjustedprecipitation_ncarray[0] = self.adjustedprecipitation
332
+ if self._adjustedprecipitation_ramflag:
333
+ self._adjustedprecipitation_array[idx] = self.adjustedprecipitation
334
+ if self._potentialevaporation_diskflag_writing:
335
+ self._potentialevaporation_ncarray[0] = self.potentialevaporation
336
+ if self._potentialevaporation_ramflag:
337
+ self._potentialevaporation_array[idx] = self.potentialevaporation
338
+ if self._adjustedevaporation_diskflag_writing:
339
+ self._adjustedevaporation_ncarray[0] = self.adjustedevaporation
340
+ if self._adjustedevaporation_ramflag:
341
+ self._adjustedevaporation_array[idx] = self.adjustedevaporation
342
+ if self._actualevaporation_diskflag_writing:
343
+ self._actualevaporation_ncarray[0] = self.actualevaporation
344
+ if self._actualevaporation_ramflag:
345
+ self._actualevaporation_array[idx] = self.actualevaporation
346
+ if self._inflow_diskflag_writing:
347
+ self._inflow_ncarray[0] = self.inflow
348
+ if self._inflow_ramflag:
349
+ self._inflow_array[idx] = self.inflow
350
+ if self._exchange_diskflag_writing:
351
+ self._exchange_ncarray[0] = self.exchange
352
+ if self._exchange_ramflag:
353
+ self._exchange_array[idx] = self.exchange
354
+ if self._totalremotedischarge_diskflag_writing:
355
+ self._totalremotedischarge_ncarray[0] = self.totalremotedischarge
356
+ if self._totalremotedischarge_ramflag:
357
+ self._totalremotedischarge_array[idx] = self.totalremotedischarge
358
+ if self._naturalremotedischarge_diskflag_writing:
359
+ self._naturalremotedischarge_ncarray[0] = self.naturalremotedischarge
360
+ if self._naturalremotedischarge_ramflag:
361
+ self._naturalremotedischarge_array[idx] = self.naturalremotedischarge
362
+ if self._remotedemand_diskflag_writing:
363
+ self._remotedemand_ncarray[0] = self.remotedemand
364
+ if self._remotedemand_ramflag:
365
+ self._remotedemand_array[idx] = self.remotedemand
366
+ if self._remotefailure_diskflag_writing:
367
+ self._remotefailure_ncarray[0] = self.remotefailure
368
+ if self._remotefailure_ramflag:
369
+ self._remotefailure_array[idx] = self.remotefailure
370
+ if self._requiredremoterelease_diskflag_writing:
371
+ self._requiredremoterelease_ncarray[0] = self.requiredremoterelease
372
+ if self._requiredremoterelease_ramflag:
373
+ self._requiredremoterelease_array[idx] = self.requiredremoterelease
374
+ if self._allowedremoterelief_diskflag_writing:
375
+ self._allowedremoterelief_ncarray[0] = self.allowedremoterelief
376
+ if self._allowedremoterelief_ramflag:
377
+ self._allowedremoterelief_array[idx] = self.allowedremoterelief
378
+ if self._requiredremotesupply_diskflag_writing:
379
+ self._requiredremotesupply_ncarray[0] = self.requiredremotesupply
380
+ if self._requiredremotesupply_ramflag:
381
+ self._requiredremotesupply_array[idx] = self.requiredremotesupply
382
+ if self._possibleremoterelief_diskflag_writing:
383
+ self._possibleremoterelief_ncarray[0] = self.possibleremoterelief
384
+ if self._possibleremoterelief_ramflag:
385
+ self._possibleremoterelief_array[idx] = self.possibleremoterelief
386
+ if self._actualremoterelief_diskflag_writing:
387
+ self._actualremoterelief_ncarray[0] = self.actualremoterelief
388
+ if self._actualremoterelief_ramflag:
389
+ self._actualremoterelief_array[idx] = self.actualremoterelief
390
+ if self._requiredrelease_diskflag_writing:
391
+ self._requiredrelease_ncarray[0] = self.requiredrelease
392
+ if self._requiredrelease_ramflag:
393
+ self._requiredrelease_array[idx] = self.requiredrelease
394
+ if self._targetedrelease_diskflag_writing:
395
+ self._targetedrelease_ncarray[0] = self.targetedrelease
396
+ if self._targetedrelease_ramflag:
397
+ self._targetedrelease_array[idx] = self.targetedrelease
398
+ if self._actualrelease_diskflag_writing:
399
+ self._actualrelease_ncarray[0] = self.actualrelease
400
+ if self._actualrelease_ramflag:
401
+ self._actualrelease_array[idx] = self.actualrelease
402
+ if self._missingremoterelease_diskflag_writing:
403
+ self._missingremoterelease_ncarray[0] = self.missingremoterelease
404
+ if self._missingremoterelease_ramflag:
405
+ self._missingremoterelease_array[idx] = self.missingremoterelease
406
+ if self._actualremoterelease_diskflag_writing:
407
+ self._actualremoterelease_ncarray[0] = self.actualremoterelease
408
+ if self._actualremoterelease_ramflag:
409
+ self._actualremoterelease_array[idx] = self.actualremoterelease
410
+ if self._flooddischarge_diskflag_writing:
411
+ self._flooddischarge_ncarray[0] = self.flooddischarge
412
+ if self._flooddischarge_ramflag:
413
+ self._flooddischarge_array[idx] = self.flooddischarge
414
+ if self._freedischarge_diskflag_writing:
415
+ self._freedischarge_ncarray[0] = self.freedischarge
416
+ if self._freedischarge_ramflag:
417
+ self._freedischarge_array[idx] = self.freedischarge
418
+ if self._maxforceddischarge_diskflag_writing:
419
+ self._maxforceddischarge_ncarray[0] = self.maxforceddischarge
420
+ if self._maxforceddischarge_ramflag:
421
+ self._maxforceddischarge_array[idx] = self.maxforceddischarge
422
+ if self._maxfreedischarge_diskflag_writing:
423
+ self._maxfreedischarge_ncarray[0] = self.maxfreedischarge
424
+ if self._maxfreedischarge_ramflag:
425
+ self._maxfreedischarge_array[idx] = self.maxfreedischarge
426
+ if self._forceddischarge_diskflag_writing:
427
+ self._forceddischarge_ncarray[0] = self.forceddischarge
428
+ if self._forceddischarge_ramflag:
429
+ self._forceddischarge_array[idx] = self.forceddischarge
430
+ if self._outflow_diskflag_writing:
431
+ self._outflow_ncarray[0] = self.outflow
432
+ if self._outflow_ramflag:
433
+ self._outflow_array[idx] = self.outflow
434
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
435
+ if name == "precipitation":
436
+ self._precipitation_outputpointer = value.p_value
437
+ if name == "adjustedprecipitation":
438
+ self._adjustedprecipitation_outputpointer = value.p_value
439
+ if name == "potentialevaporation":
440
+ self._potentialevaporation_outputpointer = value.p_value
441
+ if name == "adjustedevaporation":
442
+ self._adjustedevaporation_outputpointer = value.p_value
443
+ if name == "actualevaporation":
444
+ self._actualevaporation_outputpointer = value.p_value
445
+ if name == "inflow":
446
+ self._inflow_outputpointer = value.p_value
447
+ if name == "exchange":
448
+ self._exchange_outputpointer = value.p_value
449
+ if name == "totalremotedischarge":
450
+ self._totalremotedischarge_outputpointer = value.p_value
451
+ if name == "naturalremotedischarge":
452
+ self._naturalremotedischarge_outputpointer = value.p_value
453
+ if name == "remotedemand":
454
+ self._remotedemand_outputpointer = value.p_value
455
+ if name == "remotefailure":
456
+ self._remotefailure_outputpointer = value.p_value
457
+ if name == "requiredremoterelease":
458
+ self._requiredremoterelease_outputpointer = value.p_value
459
+ if name == "allowedremoterelief":
460
+ self._allowedremoterelief_outputpointer = value.p_value
461
+ if name == "requiredremotesupply":
462
+ self._requiredremotesupply_outputpointer = value.p_value
463
+ if name == "possibleremoterelief":
464
+ self._possibleremoterelief_outputpointer = value.p_value
465
+ if name == "actualremoterelief":
466
+ self._actualremoterelief_outputpointer = value.p_value
467
+ if name == "requiredrelease":
468
+ self._requiredrelease_outputpointer = value.p_value
469
+ if name == "targetedrelease":
470
+ self._targetedrelease_outputpointer = value.p_value
471
+ if name == "actualrelease":
472
+ self._actualrelease_outputpointer = value.p_value
473
+ if name == "missingremoterelease":
474
+ self._missingremoterelease_outputpointer = value.p_value
475
+ if name == "actualremoterelease":
476
+ self._actualremoterelease_outputpointer = value.p_value
477
+ if name == "flooddischarge":
478
+ self._flooddischarge_outputpointer = value.p_value
479
+ if name == "freedischarge":
480
+ self._freedischarge_outputpointer = value.p_value
481
+ if name == "maxforceddischarge":
482
+ self._maxforceddischarge_outputpointer = value.p_value
483
+ if name == "maxfreedischarge":
484
+ self._maxfreedischarge_outputpointer = value.p_value
485
+ if name == "forceddischarge":
486
+ self._forceddischarge_outputpointer = value.p_value
487
+ if name == "outflow":
488
+ self._outflow_outputpointer = value.p_value
489
+ cpdef inline void update_outputs(self) noexcept nogil:
490
+ if self._precipitation_outputflag:
491
+ self._precipitation_outputpointer[0] = self.precipitation
492
+ if self._adjustedprecipitation_outputflag:
493
+ self._adjustedprecipitation_outputpointer[0] = self.adjustedprecipitation
494
+ if self._potentialevaporation_outputflag:
495
+ self._potentialevaporation_outputpointer[0] = self.potentialevaporation
496
+ if self._adjustedevaporation_outputflag:
497
+ self._adjustedevaporation_outputpointer[0] = self.adjustedevaporation
498
+ if self._actualevaporation_outputflag:
499
+ self._actualevaporation_outputpointer[0] = self.actualevaporation
500
+ if self._inflow_outputflag:
501
+ self._inflow_outputpointer[0] = self.inflow
502
+ if self._exchange_outputflag:
503
+ self._exchange_outputpointer[0] = self.exchange
504
+ if self._totalremotedischarge_outputflag:
505
+ self._totalremotedischarge_outputpointer[0] = self.totalremotedischarge
506
+ if self._naturalremotedischarge_outputflag:
507
+ self._naturalremotedischarge_outputpointer[0] = self.naturalremotedischarge
508
+ if self._remotedemand_outputflag:
509
+ self._remotedemand_outputpointer[0] = self.remotedemand
510
+ if self._remotefailure_outputflag:
511
+ self._remotefailure_outputpointer[0] = self.remotefailure
512
+ if self._requiredremoterelease_outputflag:
513
+ self._requiredremoterelease_outputpointer[0] = self.requiredremoterelease
514
+ if self._allowedremoterelief_outputflag:
515
+ self._allowedremoterelief_outputpointer[0] = self.allowedremoterelief
516
+ if self._requiredremotesupply_outputflag:
517
+ self._requiredremotesupply_outputpointer[0] = self.requiredremotesupply
518
+ if self._possibleremoterelief_outputflag:
519
+ self._possibleremoterelief_outputpointer[0] = self.possibleremoterelief
520
+ if self._actualremoterelief_outputflag:
521
+ self._actualremoterelief_outputpointer[0] = self.actualremoterelief
522
+ if self._requiredrelease_outputflag:
523
+ self._requiredrelease_outputpointer[0] = self.requiredrelease
524
+ if self._targetedrelease_outputflag:
525
+ self._targetedrelease_outputpointer[0] = self.targetedrelease
526
+ if self._actualrelease_outputflag:
527
+ self._actualrelease_outputpointer[0] = self.actualrelease
528
+ if self._missingremoterelease_outputflag:
529
+ self._missingremoterelease_outputpointer[0] = self.missingremoterelease
530
+ if self._actualremoterelease_outputflag:
531
+ self._actualremoterelease_outputpointer[0] = self.actualremoterelease
532
+ if self._flooddischarge_outputflag:
533
+ self._flooddischarge_outputpointer[0] = self.flooddischarge
534
+ if self._freedischarge_outputflag:
535
+ self._freedischarge_outputpointer[0] = self.freedischarge
536
+ if self._maxforceddischarge_outputflag:
537
+ self._maxforceddischarge_outputpointer[0] = self.maxforceddischarge
538
+ if self._maxfreedischarge_outputflag:
539
+ self._maxfreedischarge_outputpointer[0] = self.maxfreedischarge
540
+ if self._forceddischarge_outputflag:
541
+ self._forceddischarge_outputpointer[0] = self.forceddischarge
542
+ if self._outflow_outputflag:
543
+ self._outflow_outputpointer[0] = self.outflow
544
+ @cython.final
545
+ cdef class StateSequences:
546
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
547
+ cdef numpy.int64_t k
548
+ if self._watervolume_diskflag_reading:
549
+ self.watervolume = self._watervolume_ncarray[0]
550
+ elif self._watervolume_ramflag:
551
+ self.watervolume = self._watervolume_array[idx]
552
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
553
+ cdef numpy.int64_t k
554
+ if self._watervolume_diskflag_writing:
555
+ self._watervolume_ncarray[0] = self.watervolume
556
+ if self._watervolume_ramflag:
557
+ self._watervolume_array[idx] = self.watervolume
558
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
559
+ if name == "watervolume":
560
+ self._watervolume_outputpointer = value.p_value
561
+ cpdef inline void update_outputs(self) noexcept nogil:
562
+ if self._watervolume_outputflag:
563
+ self._watervolume_outputpointer[0] = self.watervolume
564
+ @cython.final
565
+ cdef class LogSequences:
566
+ pass
567
+ @cython.final
568
+ cdef class AideSequences:
569
+ pass
570
+ @cython.final
571
+ cdef class OutletSequences:
572
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
573
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
574
+ if name == "q":
575
+ self.q = pointer.p_value
576
+ if name == "s":
577
+ self.s = pointer.p_value
578
+ if name == "r":
579
+ self.r = pointer.p_value
580
+ cpdef get_value(self, str name):
581
+ cdef numpy.int64_t idx
582
+ if name == "q":
583
+ return self.q[0]
584
+ if name == "s":
585
+ return self.s[0]
586
+ if name == "r":
587
+ return self.r[0]
588
+ cpdef set_value(self, str name, value):
589
+ if name == "q":
590
+ self.q[0] = value
591
+ if name == "s":
592
+ self.s[0] = value
593
+ if name == "r":
594
+ self.r[0] = value
595
+ @cython.final
596
+ cdef class SenderSequences:
597
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
598
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
599
+ if name == "d":
600
+ self.d = pointer.p_value
601
+ if name == "s":
602
+ self.s = pointer.p_value
603
+ if name == "r":
604
+ self.r = pointer.p_value
605
+ cpdef get_value(self, str name):
606
+ cdef numpy.int64_t idx
607
+ if name == "d":
608
+ return self.d[0]
609
+ if name == "s":
610
+ return self.s[0]
611
+ if name == "r":
612
+ return self.r[0]
613
+ cpdef set_value(self, str name, value):
614
+ if name == "d":
615
+ self.d[0] = value
616
+ if name == "s":
617
+ self.s[0] = value
618
+ if name == "r":
619
+ self.r[0] = value
620
+ @cython.final
621
+ cdef class NumConsts:
622
+ pass
623
+ @cython.final
624
+ cdef class NumVars:
625
+ pass
626
+ @cython.final
627
+ cdef class Model:
628
+ def __init__(self):
629
+ super().__init__()
630
+ self.pemodel = None
631
+ self.pemodel_is_mainmodel = False
632
+ self.precipmodel = None
633
+ self.precipmodel_is_mainmodel = False
634
+ def get_pemodel(self) -> masterinterface.MasterInterface | None:
635
+ return self.pemodel
636
+ def set_pemodel(self, pemodel: masterinterface.MasterInterface | None) -> None:
637
+ self.pemodel = pemodel
638
+ def get_precipmodel(self) -> masterinterface.MasterInterface | None:
639
+ return self.precipmodel
640
+ def set_precipmodel(self, precipmodel: masterinterface.MasterInterface | None) -> None:
641
+ self.precipmodel = precipmodel
642
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
643
+ self.idx_sim = idx
644
+ self.reset_reuseflags()
645
+ self.update_inlets()
646
+ self.solve()
647
+ self.update_outlets()
648
+ self.update_outputs()
649
+ cpdef void reset_reuseflags(self) noexcept nogil:
650
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
651
+ self.pemodel.reset_reuseflags()
652
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
653
+ self.precipmodel.reset_reuseflags()
654
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
655
+ self.idx_sim = idx
656
+ self.sequences.factors.save_data(idx)
657
+ self.sequences.fluxes.save_data(idx)
658
+ self.sequences.states.save_data(idx)
659
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
660
+ self.pemodel.save_data(idx)
661
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
662
+ self.precipmodel.save_data(idx)
663
+ cpdef void new2old(self) noexcept nogil:
664
+ self.sequences.old_states.watervolume = self.sequences.new_states.watervolume
665
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
666
+ self.pemodel.new2old()
667
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
668
+ self.precipmodel.new2old()
669
+ cpdef inline void update_inlets(self) noexcept nogil:
670
+ self.calc_precipitation_v1()
671
+ self.calc_adjustedprecipitation_v1()
672
+ self.calc_potentialevaporation_v1()
673
+ self.calc_adjustedevaporation_v1()
674
+ self.calc_actualevaporation_v1()
675
+ self.pic_inflow_v1()
676
+ self.pic_inflow_v2()
677
+ self.calc_naturalremotedischarge_v1()
678
+ self.calc_remotedemand_v1()
679
+ self.calc_remotefailure_v1()
680
+ self.calc_requiredremoterelease_v1()
681
+ self.calc_requiredrelease_v1()
682
+ self.calc_requiredrelease_v2()
683
+ self.calc_targetedrelease_v1()
684
+ cpdef inline void update_outlets(self) noexcept nogil:
685
+ self.pass_outflow_v1()
686
+ self.update_loggedoutflow_v1()
687
+ self.pass_actualremoterelease_v1()
688
+ self.pass_actualremoterelief_v1()
689
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
690
+ self.idx_sim = idx
691
+ self.pic_totalremotedischarge_v1()
692
+ self.update_loggedtotalremotedischarge_v1()
693
+ self.pick_loggedouterwaterlevel_v1()
694
+ self.pick_loggedremotewaterlevel_v1()
695
+ self.pic_loggedrequiredremoterelease_v1()
696
+ self.pic_loggedrequiredremoterelease_v2()
697
+ self.calc_requiredremoterelease_v2()
698
+ self.pic_loggedallowedremoterelief_v1()
699
+ self.calc_allowedremoterelief_v1()
700
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
701
+ self.idx_sim = idx
702
+ self.calc_missingremoterelease_v1()
703
+ self.pass_missingremoterelease_v1()
704
+ self.calc_allowedremoterelief_v2()
705
+ self.pass_allowedremoterelief_v1()
706
+ self.calc_requiredremotesupply_v1()
707
+ self.pass_requiredremotesupply_v1()
708
+ cpdef inline void update_outputs(self) noexcept nogil:
709
+ self.sequences.factors.update_outputs()
710
+ self.sequences.fluxes.update_outputs()
711
+ self.sequences.states.update_outputs()
712
+ cpdef inline void solve(self) noexcept nogil:
713
+ cdef numpy.int64_t decrease_dt
714
+ self.numvars.use_relerror = not isnan( self.parameters.solver.relerrormax )
715
+ self.numvars.t0, self.numvars.t1 = 0.0, 1.0
716
+ self.numvars.dt_est = 1.0 * self.parameters.solver.reldtmax
717
+ self.numvars.f0_ready = False
718
+ self.reset_sum_fluxes()
719
+ while self.numvars.t0 < self.numvars.t1 - 1e-14:
720
+ self.numvars.last_abserror = inf
721
+ self.numvars.last_relerror = inf
722
+ 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), )
723
+ if not self.numvars.f0_ready:
724
+ self.calculate_single_terms()
725
+ self.numvars.idx_method = 0
726
+ self.numvars.idx_stage = 0
727
+ self.set_point_fluxes()
728
+ self.set_point_states()
729
+ self.set_result_states()
730
+ for self.numvars.idx_method in range(1, self.numconsts.nmb_methods + 1):
731
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method):
732
+ self.get_point_states()
733
+ self.calculate_single_terms()
734
+ self.set_point_fluxes()
735
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method + 1):
736
+ self.integrate_fluxes()
737
+ self.calculate_full_terms()
738
+ self.set_point_states()
739
+ self.set_result_fluxes()
740
+ self.set_result_states()
741
+ self.calculate_error()
742
+ self.extrapolate_error()
743
+ if self.numvars.idx_method == 1:
744
+ continue
745
+ if (self.numvars.abserror <= self.parameters.solver.abserrormax) or ( self.numvars.relerror <= self.parameters.solver.relerrormax ):
746
+ self.numvars.dt_est = self.numconsts.dt_increase * self.numvars.dt
747
+ self.numvars.f0_ready = False
748
+ self.addup_fluxes()
749
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
750
+ self.new2old()
751
+ break
752
+ decrease_dt = self.numvars.dt > self.parameters.solver.reldtmin
753
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_abserror > self.parameters.solver.abserrormax )
754
+ if self.numvars.use_relerror:
755
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_relerror > self.parameters.solver.relerrormax )
756
+ if decrease_dt:
757
+ self.numvars.f0_ready = True
758
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
759
+ break
760
+ self.numvars.last_abserror = self.numvars.abserror
761
+ self.numvars.last_relerror = self.numvars.relerror
762
+ self.numvars.f0_ready = True
763
+ else:
764
+ if self.numvars.dt <= self.parameters.solver.reldtmin:
765
+ self.numvars.f0_ready = False
766
+ self.addup_fluxes()
767
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
768
+ self.new2old()
769
+ else:
770
+ self.numvars.f0_ready = True
771
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
772
+ self.get_sum_fluxes()
773
+ cpdef inline void calculate_single_terms(self) noexcept nogil:
774
+ self.numvars.nmb_calls = self.numvars.nmb_calls + 1
775
+ self.pic_inflow_v1()
776
+ self.pic_inflow_v2()
777
+ self.calc_waterlevel_v1()
778
+ self.calc_outerwaterlevel_v1()
779
+ self.calc_remotewaterlevel_v1()
780
+ self.calc_waterleveldifference_v1()
781
+ self.calc_effectivewaterleveldifference_v1()
782
+ self.calc_surfacearea_v1()
783
+ self.calc_alloweddischarge_v1()
784
+ self.calc_alloweddischarge_v2()
785
+ self.calc_actualrelease_v1()
786
+ self.calc_actualrelease_v2()
787
+ self.calc_actualrelease_v3()
788
+ self.calc_possibleremoterelief_v1()
789
+ self.calc_actualremoterelief_v1()
790
+ self.calc_actualremoterelease_v1()
791
+ self.update_actualremoterelief_v1()
792
+ self.update_actualremoterelease_v1()
793
+ self.calc_flooddischarge_v1()
794
+ self.calc_maxforceddischarge_v1()
795
+ self.calc_maxfreedischarge_v1()
796
+ self.calc_forceddischarge_v1()
797
+ self.calc_freedischarge_v1()
798
+ self.calc_outflow_v1()
799
+ self.calc_outflow_v2()
800
+ self.calc_outflow_v3()
801
+ self.calc_outflow_v4()
802
+ self.calc_outflow_v5()
803
+ cpdef inline void calculate_full_terms(self) noexcept nogil:
804
+ self.update_watervolume_v1()
805
+ self.update_watervolume_v2()
806
+ self.update_watervolume_v3()
807
+ self.update_watervolume_v4()
808
+ cpdef inline void get_point_states(self) noexcept nogil:
809
+ self.sequences.states.watervolume = self.sequences.states._watervolume_points[self.numvars.idx_stage]
810
+ cpdef inline void set_point_states(self) noexcept nogil:
811
+ self.sequences.states._watervolume_points[self.numvars.idx_stage] = self.sequences.states.watervolume
812
+ cpdef inline void set_result_states(self) noexcept nogil:
813
+ self.sequences.states._watervolume_results[self.numvars.idx_method] = self.sequences.states.watervolume
814
+ cpdef inline void get_sum_fluxes(self) noexcept nogil:
815
+ self.sequences.fluxes.adjustedprecipitation = self.sequences.fluxes._adjustedprecipitation_sum
816
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes._actualevaporation_sum
817
+ self.sequences.fluxes.inflow = self.sequences.fluxes._inflow_sum
818
+ self.sequences.fluxes.exchange = self.sequences.fluxes._exchange_sum
819
+ self.sequences.fluxes.possibleremoterelief = self.sequences.fluxes._possibleremoterelief_sum
820
+ self.sequences.fluxes.actualremoterelief = self.sequences.fluxes._actualremoterelief_sum
821
+ self.sequences.fluxes.actualrelease = self.sequences.fluxes._actualrelease_sum
822
+ self.sequences.fluxes.actualremoterelease = self.sequences.fluxes._actualremoterelease_sum
823
+ self.sequences.fluxes.flooddischarge = self.sequences.fluxes._flooddischarge_sum
824
+ self.sequences.fluxes.freedischarge = self.sequences.fluxes._freedischarge_sum
825
+ self.sequences.fluxes.maxforceddischarge = self.sequences.fluxes._maxforceddischarge_sum
826
+ self.sequences.fluxes.maxfreedischarge = self.sequences.fluxes._maxfreedischarge_sum
827
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes._forceddischarge_sum
828
+ self.sequences.fluxes.outflow = self.sequences.fluxes._outflow_sum
829
+ cpdef inline void set_point_fluxes(self) noexcept nogil:
830
+ self.sequences.fluxes._adjustedprecipitation_points[self.numvars.idx_stage] = self.sequences.fluxes.adjustedprecipitation
831
+ self.sequences.fluxes._actualevaporation_points[self.numvars.idx_stage] = self.sequences.fluxes.actualevaporation
832
+ self.sequences.fluxes._inflow_points[self.numvars.idx_stage] = self.sequences.fluxes.inflow
833
+ self.sequences.fluxes._exchange_points[self.numvars.idx_stage] = self.sequences.fluxes.exchange
834
+ self.sequences.fluxes._possibleremoterelief_points[self.numvars.idx_stage] = self.sequences.fluxes.possibleremoterelief
835
+ self.sequences.fluxes._actualremoterelief_points[self.numvars.idx_stage] = self.sequences.fluxes.actualremoterelief
836
+ self.sequences.fluxes._actualrelease_points[self.numvars.idx_stage] = self.sequences.fluxes.actualrelease
837
+ self.sequences.fluxes._actualremoterelease_points[self.numvars.idx_stage] = self.sequences.fluxes.actualremoterelease
838
+ self.sequences.fluxes._flooddischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.flooddischarge
839
+ self.sequences.fluxes._freedischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.freedischarge
840
+ self.sequences.fluxes._maxforceddischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.maxforceddischarge
841
+ self.sequences.fluxes._maxfreedischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.maxfreedischarge
842
+ self.sequences.fluxes._forceddischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.forceddischarge
843
+ self.sequences.fluxes._outflow_points[self.numvars.idx_stage] = self.sequences.fluxes.outflow
844
+ cpdef inline void set_result_fluxes(self) noexcept nogil:
845
+ self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method] = self.sequences.fluxes.adjustedprecipitation
846
+ self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method] = self.sequences.fluxes.actualevaporation
847
+ self.sequences.fluxes._inflow_results[self.numvars.idx_method] = self.sequences.fluxes.inflow
848
+ self.sequences.fluxes._exchange_results[self.numvars.idx_method] = self.sequences.fluxes.exchange
849
+ self.sequences.fluxes._possibleremoterelief_results[self.numvars.idx_method] = self.sequences.fluxes.possibleremoterelief
850
+ self.sequences.fluxes._actualremoterelief_results[self.numvars.idx_method] = self.sequences.fluxes.actualremoterelief
851
+ self.sequences.fluxes._actualrelease_results[self.numvars.idx_method] = self.sequences.fluxes.actualrelease
852
+ self.sequences.fluxes._actualremoterelease_results[self.numvars.idx_method] = self.sequences.fluxes.actualremoterelease
853
+ self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method] = self.sequences.fluxes.flooddischarge
854
+ self.sequences.fluxes._freedischarge_results[self.numvars.idx_method] = self.sequences.fluxes.freedischarge
855
+ self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method] = self.sequences.fluxes.maxforceddischarge
856
+ self.sequences.fluxes._maxfreedischarge_results[self.numvars.idx_method] = self.sequences.fluxes.maxfreedischarge
857
+ self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method] = self.sequences.fluxes.forceddischarge
858
+ self.sequences.fluxes._outflow_results[self.numvars.idx_method] = self.sequences.fluxes.outflow
859
+ cpdef inline void integrate_fluxes(self) noexcept nogil:
860
+ cdef numpy.int64_t jdx
861
+ self.sequences.fluxes.adjustedprecipitation = 0.
862
+ for jdx in range(self.numvars.idx_method):
863
+ 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]
864
+ self.sequences.fluxes.actualevaporation = 0.
865
+ for jdx in range(self.numvars.idx_method):
866
+ 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]
867
+ self.sequences.fluxes.inflow = 0.
868
+ for jdx in range(self.numvars.idx_method):
869
+ 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]
870
+ self.sequences.fluxes.exchange = 0.
871
+ for jdx in range(self.numvars.idx_method):
872
+ self.sequences.fluxes.exchange = self.sequences.fluxes.exchange +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._exchange_points[jdx]
873
+ self.sequences.fluxes.possibleremoterelief = 0.
874
+ for jdx in range(self.numvars.idx_method):
875
+ self.sequences.fluxes.possibleremoterelief = self.sequences.fluxes.possibleremoterelief +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._possibleremoterelief_points[jdx]
876
+ self.sequences.fluxes.actualremoterelief = 0.
877
+ for jdx in range(self.numvars.idx_method):
878
+ self.sequences.fluxes.actualremoterelief = self.sequences.fluxes.actualremoterelief +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._actualremoterelief_points[jdx]
879
+ self.sequences.fluxes.actualrelease = 0.
880
+ for jdx in range(self.numvars.idx_method):
881
+ 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]
882
+ self.sequences.fluxes.actualremoterelease = 0.
883
+ for jdx in range(self.numvars.idx_method):
884
+ self.sequences.fluxes.actualremoterelease = self.sequences.fluxes.actualremoterelease +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._actualremoterelease_points[jdx]
885
+ self.sequences.fluxes.flooddischarge = 0.
886
+ for jdx in range(self.numvars.idx_method):
887
+ 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]
888
+ self.sequences.fluxes.freedischarge = 0.
889
+ for jdx in range(self.numvars.idx_method):
890
+ self.sequences.fluxes.freedischarge = self.sequences.fluxes.freedischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._freedischarge_points[jdx]
891
+ self.sequences.fluxes.maxforceddischarge = 0.
892
+ for jdx in range(self.numvars.idx_method):
893
+ self.sequences.fluxes.maxforceddischarge = self.sequences.fluxes.maxforceddischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._maxforceddischarge_points[jdx]
894
+ self.sequences.fluxes.maxfreedischarge = 0.
895
+ for jdx in range(self.numvars.idx_method):
896
+ self.sequences.fluxes.maxfreedischarge = self.sequences.fluxes.maxfreedischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._maxfreedischarge_points[jdx]
897
+ self.sequences.fluxes.forceddischarge = 0.
898
+ for jdx in range(self.numvars.idx_method):
899
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.forceddischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._forceddischarge_points[jdx]
900
+ self.sequences.fluxes.outflow = 0.
901
+ for jdx in range(self.numvars.idx_method):
902
+ 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]
903
+ cpdef inline void reset_sum_fluxes(self) noexcept nogil:
904
+ self.sequences.fluxes._adjustedprecipitation_sum = 0.
905
+ self.sequences.fluxes._actualevaporation_sum = 0.
906
+ self.sequences.fluxes._inflow_sum = 0.
907
+ self.sequences.fluxes._exchange_sum = 0.
908
+ self.sequences.fluxes._possibleremoterelief_sum = 0.
909
+ self.sequences.fluxes._actualremoterelief_sum = 0.
910
+ self.sequences.fluxes._actualrelease_sum = 0.
911
+ self.sequences.fluxes._actualremoterelease_sum = 0.
912
+ self.sequences.fluxes._flooddischarge_sum = 0.
913
+ self.sequences.fluxes._freedischarge_sum = 0.
914
+ self.sequences.fluxes._maxforceddischarge_sum = 0.
915
+ self.sequences.fluxes._maxfreedischarge_sum = 0.
916
+ self.sequences.fluxes._forceddischarge_sum = 0.
917
+ self.sequences.fluxes._outflow_sum = 0.
918
+ cpdef inline void addup_fluxes(self) noexcept nogil:
919
+ self.sequences.fluxes._adjustedprecipitation_sum = self.sequences.fluxes._adjustedprecipitation_sum + self.sequences.fluxes.adjustedprecipitation
920
+ self.sequences.fluxes._actualevaporation_sum = self.sequences.fluxes._actualevaporation_sum + self.sequences.fluxes.actualevaporation
921
+ self.sequences.fluxes._inflow_sum = self.sequences.fluxes._inflow_sum + self.sequences.fluxes.inflow
922
+ self.sequences.fluxes._exchange_sum = self.sequences.fluxes._exchange_sum + self.sequences.fluxes.exchange
923
+ self.sequences.fluxes._possibleremoterelief_sum = self.sequences.fluxes._possibleremoterelief_sum + self.sequences.fluxes.possibleremoterelief
924
+ self.sequences.fluxes._actualremoterelief_sum = self.sequences.fluxes._actualremoterelief_sum + self.sequences.fluxes.actualremoterelief
925
+ self.sequences.fluxes._actualrelease_sum = self.sequences.fluxes._actualrelease_sum + self.sequences.fluxes.actualrelease
926
+ self.sequences.fluxes._actualremoterelease_sum = self.sequences.fluxes._actualremoterelease_sum + self.sequences.fluxes.actualremoterelease
927
+ self.sequences.fluxes._flooddischarge_sum = self.sequences.fluxes._flooddischarge_sum + self.sequences.fluxes.flooddischarge
928
+ self.sequences.fluxes._freedischarge_sum = self.sequences.fluxes._freedischarge_sum + self.sequences.fluxes.freedischarge
929
+ self.sequences.fluxes._maxforceddischarge_sum = self.sequences.fluxes._maxforceddischarge_sum + self.sequences.fluxes.maxforceddischarge
930
+ self.sequences.fluxes._maxfreedischarge_sum = self.sequences.fluxes._maxfreedischarge_sum + self.sequences.fluxes.maxfreedischarge
931
+ self.sequences.fluxes._forceddischarge_sum = self.sequences.fluxes._forceddischarge_sum + self.sequences.fluxes.forceddischarge
932
+ self.sequences.fluxes._outflow_sum = self.sequences.fluxes._outflow_sum + self.sequences.fluxes.outflow
933
+ cpdef inline void calculate_error(self) noexcept nogil:
934
+ cdef double abserror
935
+ self.numvars.abserror = 0.
936
+ if self.numvars.use_relerror:
937
+ self.numvars.relerror = 0.
938
+ else:
939
+ self.numvars.relerror = inf
940
+ abserror = fabs(self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method]-self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method-1])
941
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
942
+ if self.numvars.use_relerror:
943
+ if self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method] == 0.:
944
+ self.numvars.relerror = inf
945
+ else:
946
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method]))
947
+ abserror = fabs(self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method]-self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method-1])
948
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
949
+ if self.numvars.use_relerror:
950
+ if self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method] == 0.:
951
+ self.numvars.relerror = inf
952
+ else:
953
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method]))
954
+ abserror = fabs(self.sequences.fluxes._inflow_results[self.numvars.idx_method]-self.sequences.fluxes._inflow_results[self.numvars.idx_method-1])
955
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
956
+ if self.numvars.use_relerror:
957
+ if self.sequences.fluxes._inflow_results[self.numvars.idx_method] == 0.:
958
+ self.numvars.relerror = inf
959
+ else:
960
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._inflow_results[self.numvars.idx_method]))
961
+ abserror = fabs(self.sequences.fluxes._exchange_results[self.numvars.idx_method]-self.sequences.fluxes._exchange_results[self.numvars.idx_method-1])
962
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
963
+ if self.numvars.use_relerror:
964
+ if self.sequences.fluxes._exchange_results[self.numvars.idx_method] == 0.:
965
+ self.numvars.relerror = inf
966
+ else:
967
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._exchange_results[self.numvars.idx_method]))
968
+ abserror = fabs(self.sequences.fluxes._possibleremoterelief_results[self.numvars.idx_method]-self.sequences.fluxes._possibleremoterelief_results[self.numvars.idx_method-1])
969
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
970
+ if self.numvars.use_relerror:
971
+ if self.sequences.fluxes._possibleremoterelief_results[self.numvars.idx_method] == 0.:
972
+ self.numvars.relerror = inf
973
+ else:
974
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._possibleremoterelief_results[self.numvars.idx_method]))
975
+ abserror = fabs(self.sequences.fluxes._actualremoterelief_results[self.numvars.idx_method]-self.sequences.fluxes._actualremoterelief_results[self.numvars.idx_method-1])
976
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
977
+ if self.numvars.use_relerror:
978
+ if self.sequences.fluxes._actualremoterelief_results[self.numvars.idx_method] == 0.:
979
+ self.numvars.relerror = inf
980
+ else:
981
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._actualremoterelief_results[self.numvars.idx_method]))
982
+ abserror = fabs(self.sequences.fluxes._actualrelease_results[self.numvars.idx_method]-self.sequences.fluxes._actualrelease_results[self.numvars.idx_method-1])
983
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
984
+ if self.numvars.use_relerror:
985
+ if self.sequences.fluxes._actualrelease_results[self.numvars.idx_method] == 0.:
986
+ self.numvars.relerror = inf
987
+ else:
988
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._actualrelease_results[self.numvars.idx_method]))
989
+ abserror = fabs(self.sequences.fluxes._actualremoterelease_results[self.numvars.idx_method]-self.sequences.fluxes._actualremoterelease_results[self.numvars.idx_method-1])
990
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
991
+ if self.numvars.use_relerror:
992
+ if self.sequences.fluxes._actualremoterelease_results[self.numvars.idx_method] == 0.:
993
+ self.numvars.relerror = inf
994
+ else:
995
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._actualremoterelease_results[self.numvars.idx_method]))
996
+ abserror = fabs(self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method]-self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method-1])
997
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
998
+ if self.numvars.use_relerror:
999
+ if self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method] == 0.:
1000
+ self.numvars.relerror = inf
1001
+ else:
1002
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._flooddischarge_results[self.numvars.idx_method]))
1003
+ abserror = fabs(self.sequences.fluxes._freedischarge_results[self.numvars.idx_method]-self.sequences.fluxes._freedischarge_results[self.numvars.idx_method-1])
1004
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1005
+ if self.numvars.use_relerror:
1006
+ if self.sequences.fluxes._freedischarge_results[self.numvars.idx_method] == 0.:
1007
+ self.numvars.relerror = inf
1008
+ else:
1009
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._freedischarge_results[self.numvars.idx_method]))
1010
+ abserror = fabs(self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method]-self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method-1])
1011
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1012
+ if self.numvars.use_relerror:
1013
+ if self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method] == 0.:
1014
+ self.numvars.relerror = inf
1015
+ else:
1016
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method]))
1017
+ abserror = fabs(self.sequences.fluxes._maxfreedischarge_results[self.numvars.idx_method]-self.sequences.fluxes._maxfreedischarge_results[self.numvars.idx_method-1])
1018
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1019
+ if self.numvars.use_relerror:
1020
+ if self.sequences.fluxes._maxfreedischarge_results[self.numvars.idx_method] == 0.:
1021
+ self.numvars.relerror = inf
1022
+ else:
1023
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._maxfreedischarge_results[self.numvars.idx_method]))
1024
+ abserror = fabs(self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method]-self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method-1])
1025
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1026
+ if self.numvars.use_relerror:
1027
+ if self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method] == 0.:
1028
+ self.numvars.relerror = inf
1029
+ else:
1030
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method]))
1031
+ abserror = fabs(self.sequences.fluxes._outflow_results[self.numvars.idx_method]-self.sequences.fluxes._outflow_results[self.numvars.idx_method-1])
1032
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1033
+ if self.numvars.use_relerror:
1034
+ if self.sequences.fluxes._outflow_results[self.numvars.idx_method] == 0.:
1035
+ self.numvars.relerror = inf
1036
+ else:
1037
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._outflow_results[self.numvars.idx_method]))
1038
+ cpdef inline void extrapolate_error(self) noexcept nogil:
1039
+ if self.numvars.abserror <= 0.0:
1040
+ self.numvars.extrapolated_abserror = 0.0
1041
+ self.numvars.extrapolated_relerror = 0.0
1042
+ else:
1043
+ if self.numvars.idx_method > 2:
1044
+ 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) )
1045
+ else:
1046
+ self.numvars.extrapolated_abserror = -999.9
1047
+ if self.numvars.use_relerror:
1048
+ if self.numvars.idx_method > 2:
1049
+ if isinf(self.numvars.relerror):
1050
+ self.numvars.extrapolated_relerror = inf
1051
+ else:
1052
+ 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) )
1053
+ else:
1054
+ self.numvars.extrapolated_relerror = -999.9
1055
+ else:
1056
+ self.numvars.extrapolated_relerror = inf
1057
+ cpdef inline void pic_totalremotedischarge_v1(self) noexcept nogil:
1058
+ self.sequences.fluxes.totalremotedischarge = self.sequences.receivers.q[0]
1059
+ cpdef inline void update_loggedtotalremotedischarge_v1(self) noexcept nogil:
1060
+ cdef numpy.int64_t i
1061
+ for i in range(self.parameters.control.nmblogentries - 1, 0, -1):
1062
+ self.sequences.logs.loggedtotalremotedischarge[i] = self.sequences.logs.loggedtotalremotedischarge[i - 1]
1063
+ self.sequences.logs.loggedtotalremotedischarge[0] = self.sequences.fluxes.totalremotedischarge
1064
+ cpdef inline void pick_loggedouterwaterlevel_v1(self) noexcept nogil:
1065
+ self.sequences.logs.loggedouterwaterlevel[0] = self.sequences.receivers.owl[0]
1066
+ cpdef inline void pick_loggedremotewaterlevel_v1(self) noexcept nogil:
1067
+ self.sequences.logs.loggedremotewaterlevel[0] = self.sequences.receivers.rwl[0]
1068
+ cpdef inline void pic_loggedrequiredremoterelease_v1(self) noexcept nogil:
1069
+ self.sequences.logs.loggedrequiredremoterelease[0] = self.sequences.receivers.d[0]
1070
+ cpdef inline void pic_loggedrequiredremoterelease_v2(self) noexcept nogil:
1071
+ self.sequences.logs.loggedrequiredremoterelease[0] = self.sequences.receivers.s[0]
1072
+ cpdef inline void calc_requiredremoterelease_v2(self) noexcept nogil:
1073
+ self.sequences.fluxes.requiredremoterelease = self.sequences.logs.loggedrequiredremoterelease[0]
1074
+ cpdef inline void pic_loggedallowedremoterelief_v1(self) noexcept nogil:
1075
+ self.sequences.logs.loggedallowedremoterelief[0] = self.sequences.receivers.r[0]
1076
+ cpdef inline void calc_allowedremoterelief_v1(self) noexcept nogil:
1077
+ self.sequences.fluxes.allowedremoterelief = self.sequences.logs.loggedallowedremoterelief[0]
1078
+ cpdef inline void calc_precipitation_v1(self) noexcept nogil:
1079
+ if self.precipmodel is None:
1080
+ self.sequences.fluxes.precipitation = 0.0
1081
+ elif self.precipmodel_typeid == 2:
1082
+ (<masterinterface.MasterInterface>self.precipmodel).determine_precipitation()
1083
+ self.sequences.fluxes.precipitation = (<masterinterface.MasterInterface>self.precipmodel).get_precipitation(0)
1084
+ cpdef inline void calc_adjustedprecipitation_v1(self) noexcept nogil:
1085
+ self.sequences.fluxes.adjustedprecipitation = ( self.parameters.derived.inputfactor * self.parameters.control.correctionprecipitation * self.sequences.fluxes.precipitation )
1086
+ cpdef inline void calc_potentialevaporation_v1(self) noexcept nogil:
1087
+ if self.pemodel is None:
1088
+ self.sequences.fluxes.potentialevaporation = 0.0
1089
+ elif self.pemodel_typeid == 1:
1090
+ (<masterinterface.MasterInterface>self.pemodel).determine_potentialevapotranspiration()
1091
+ self.sequences.fluxes.potentialevaporation = (<masterinterface.MasterInterface>self.pemodel).get_potentialevapotranspiration(0)
1092
+ cpdef inline void calc_adjustedevaporation_v1(self) noexcept nogil:
1093
+ cdef double d_old
1094
+ cdef double d_new
1095
+ cdef double d_weight
1096
+ d_weight = self.parameters.control.weightevaporation
1097
+ d_new = self.parameters.derived.inputfactor * self.parameters.control.correctionevaporation * self.sequences.fluxes.potentialevaporation
1098
+ d_old = self.sequences.logs.loggedadjustedevaporation[0]
1099
+ self.sequences.fluxes.adjustedevaporation = d_weight * d_new + (1.0 - d_weight) * d_old
1100
+ self.sequences.logs.loggedadjustedevaporation[0] = self.sequences.fluxes.adjustedevaporation
1101
+ cpdef inline void calc_actualevaporation_v1(self) noexcept nogil:
1102
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.adjustedevaporation * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.thresholdevaporation, self.parameters.derived.smoothparevaporation )
1103
+ cpdef inline void pic_inflow_v1(self) noexcept nogil:
1104
+ cdef numpy.int64_t idx
1105
+ self.sequences.fluxes.inflow = 0.0
1106
+ for idx in range(self.sequences.inlets.len_q):
1107
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.q[idx][0])
1108
+ cpdef inline void pic_inflow_v2(self) noexcept nogil:
1109
+ cdef numpy.int64_t idx
1110
+ self.sequences.fluxes.inflow = self.sequences.inlets.s[0] + self.sequences.inlets.r[0]
1111
+ for idx in range(self.sequences.inlets.len_q):
1112
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.q[idx][0])
1113
+ cpdef inline void calc_naturalremotedischarge_v1(self) noexcept nogil:
1114
+ cdef numpy.int64_t idx
1115
+ self.sequences.fluxes.naturalremotedischarge = 0.0
1116
+ for idx in range(self.parameters.control.nmblogentries):
1117
+ self.sequences.fluxes.naturalremotedischarge = self.sequences.fluxes.naturalremotedischarge + (( self.sequences.logs.loggedtotalremotedischarge[idx] - self.sequences.logs.loggedoutflow[idx] ))
1118
+ if self.sequences.fluxes.naturalremotedischarge > 0.0:
1119
+ self.sequences.fluxes.naturalremotedischarge = self.sequences.fluxes.naturalremotedischarge / (self.parameters.control.nmblogentries)
1120
+ else:
1121
+ self.sequences.fluxes.naturalremotedischarge = 0.0
1122
+ cpdef inline void calc_remotedemand_v1(self) noexcept nogil:
1123
+ cdef double d_rdm
1124
+ d_rdm = self.parameters.control.remotedischargeminimum[self.parameters.derived.toy[self.idx_sim]]
1125
+ self.sequences.fluxes.remotedemand = max(d_rdm - self.sequences.fluxes.naturalremotedischarge, 0.0)
1126
+ cpdef inline void calc_remotefailure_v1(self) noexcept nogil:
1127
+ cdef numpy.int64_t idx
1128
+ self.sequences.fluxes.remotefailure = 0
1129
+ for idx in range(self.parameters.control.nmblogentries):
1130
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure - (self.sequences.logs.loggedtotalremotedischarge[idx])
1131
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure / (self.parameters.control.nmblogentries)
1132
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure + (self.parameters.control.remotedischargeminimum[self.parameters.derived.toy[self.idx_sim]])
1133
+ cpdef inline void calc_requiredremoterelease_v1(self) noexcept nogil:
1134
+ 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]] )
1135
+ cpdef inline void calc_requiredrelease_v1(self) noexcept nogil:
1136
+ self.sequences.fluxes.requiredrelease = self.parameters.control.neardischargeminimumthreshold[self.parameters.derived.toy[self.idx_sim]]
1137
+ 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]], )
1138
+ cpdef inline void calc_requiredrelease_v2(self) noexcept nogil:
1139
+ self.sequences.fluxes.requiredrelease = self.parameters.control.neardischargeminimumthreshold[self.parameters.derived.toy[self.idx_sim]]
1140
+ cpdef inline void calc_targetedrelease_v1(self) noexcept nogil:
1141
+ if self.parameters.control.restricttargetedrelease:
1142
+ 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]], )
1143
+ self.sequences.fluxes.targetedrelease = ( self.sequences.fluxes.targetedrelease * self.sequences.fluxes.requiredrelease + (1.0 - self.sequences.fluxes.targetedrelease) * self.sequences.fluxes.inflow )
1144
+ else:
1145
+ self.sequences.fluxes.targetedrelease = self.sequences.fluxes.requiredrelease
1146
+ cpdef inline void calc_waterlevel_v1(self) noexcept nogil:
1147
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
1148
+ self.parameters.control.watervolume2waterlevel.calculate_values()
1149
+ self.sequences.factors.waterlevel = self.parameters.control.watervolume2waterlevel.outputs[0]
1150
+ cpdef inline void calc_outerwaterlevel_v1(self) noexcept nogil:
1151
+ self.sequences.factors.outerwaterlevel = self.sequences.logs.loggedouterwaterlevel[0]
1152
+ cpdef inline void calc_remotewaterlevel_v1(self) noexcept nogil:
1153
+ self.sequences.factors.remotewaterlevel = self.sequences.logs.loggedremotewaterlevel[0]
1154
+ cpdef inline void calc_waterleveldifference_v1(self) noexcept nogil:
1155
+ self.sequences.factors.waterleveldifference = self.sequences.factors.waterlevel - self.sequences.factors.outerwaterlevel
1156
+ cpdef inline void calc_effectivewaterleveldifference_v1(self) noexcept nogil:
1157
+ cdef double ho
1158
+ cdef double hi
1159
+ hi = smoothutils.smooth_max1( self.sequences.factors.waterlevel, self.parameters.control.crestlevel, self.parameters.derived.crestlevelsmoothpar )
1160
+ ho = smoothutils.smooth_max1( self.sequences.factors.outerwaterlevel, self.parameters.control.crestlevel, self.parameters.derived.crestlevelsmoothpar )
1161
+ self.sequences.factors.effectivewaterleveldifference = hi - ho
1162
+ cpdef inline void calc_surfacearea_v1(self) noexcept nogil:
1163
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
1164
+ self.parameters.control.watervolume2waterlevel.calculate_values()
1165
+ self.parameters.control.watervolume2waterlevel.calculate_derivatives(0)
1166
+ self.sequences.aides.surfacearea = 1.0 / self.parameters.control.watervolume2waterlevel.output_derivatives[0]
1167
+ cpdef inline void calc_alloweddischarge_v1(self) noexcept nogil:
1168
+ self.sequences.aides.alloweddischarge = ( self.parameters.control.allowedwaterleveldrop / self.parameters.derived.seconds * self.sequences.aides.surfacearea * 1e6 + self.sequences.fluxes.adjustedprecipitation + self.sequences.fluxes.inflow - self.sequences.fluxes.actualevaporation + self.sequences.fluxes.exchange )
1169
+ cpdef inline void calc_alloweddischarge_v2(self) noexcept nogil:
1170
+ self.sequences.aides.alloweddischarge = smoothutils.smooth_min1( self.parameters.control.allowedwaterleveldrop / self.parameters.derived.seconds * self.sequences.aides.surfacearea * 1e6 + self.sequences.fluxes.inflow, self.parameters.control.allowedrelease[self.parameters.derived.toy[self.idx_sim]], self.parameters.derived.dischargesmoothpar, )
1171
+ cpdef inline void calc_actualrelease_v1(self) noexcept nogil:
1172
+ self.sequences.fluxes.actualrelease = self.sequences.fluxes.targetedrelease * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelminimumthreshold, self.parameters.derived.waterlevelminimumsmoothpar, )
1173
+ cpdef inline void calc_actualrelease_v2(self) noexcept nogil:
1174
+ self.sequences.fluxes.actualrelease = self.parameters.control.allowedrelease[ self.parameters.derived.toy[self.idx_sim] ] * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelminimumthreshold, self.parameters.derived.waterlevelminimumsmoothpar, )
1175
+ cpdef inline void calc_actualrelease_v3(self) noexcept nogil:
1176
+ cdef double d_weight
1177
+ cdef double d_release2
1178
+ cdef double d_neutral
1179
+ cdef double d_release1
1180
+ cdef double d_upperbound
1181
+ cdef double d_factor
1182
+ cdef double d_qmax
1183
+ cdef double d_qmin
1184
+ cdef double d_range
1185
+ cdef double d_target
1186
+ cdef numpy.int64_t idx_toy
1187
+ idx_toy = self.parameters.derived.toy[self.idx_sim]
1188
+ d_target = self.parameters.control.targetvolume[idx_toy]
1189
+ d_range = max(self.parameters.control.targetrangeabsolute, self.parameters.control.targetrangerelative * d_target)
1190
+ d_range = max(d_range, 1e-6)
1191
+ d_qmin = self.parameters.control.neardischargeminimumthreshold[idx_toy]
1192
+ d_qmax = smoothutils.smooth_max1( d_qmin, self.sequences.aides.alloweddischarge, self.parameters.derived.dischargesmoothpar )
1193
+ d_factor = smoothutils.smooth_logistic3( (self.sequences.new_states.watervolume - d_target + d_range) / d_range, self.parameters.derived.volumesmoothparlog2 )
1194
+ d_upperbound = smoothutils.smooth_min1( d_qmax, self.sequences.fluxes.inflow, self.parameters.derived.dischargesmoothpar )
1195
+ d_release1 = (1.0 - d_factor) * d_qmin + d_factor * smoothutils.smooth_max1( d_qmin, d_upperbound, self.parameters.derived.dischargesmoothpar )
1196
+ d_factor = smoothutils.smooth_logistic3( (d_target + d_range - self.sequences.new_states.watervolume) / d_range, self.parameters.derived.volumesmoothparlog2 )
1197
+ d_neutral = smoothutils.smooth_max1(d_qmin, self.sequences.fluxes.inflow, self.parameters.derived.dischargesmoothpar)
1198
+ d_release2 = (1.0 - d_factor) * d_qmax + d_factor * smoothutils.smooth_min1( d_qmax, d_neutral, self.parameters.derived.dischargesmoothpar )
1199
+ d_weight = smoothutils.smooth_logistic1( d_target - self.sequences.new_states.watervolume, self.parameters.derived.volumesmoothparlog1 )
1200
+ self.sequences.fluxes.actualrelease = d_weight * d_release1 + (1.0 - d_weight) * d_release2
1201
+ if self.parameters.derived.volumesmoothparlog1 > 0.0:
1202
+ d_weight = exp( -(((self.sequences.new_states.watervolume - d_target) / self.parameters.derived.volumesmoothparlog1) ** 2) )
1203
+ else:
1204
+ d_weight = 0.0
1205
+ d_neutral = smoothutils.smooth_max1( d_upperbound, d_qmin, self.parameters.derived.dischargesmoothpar )
1206
+ self.sequences.fluxes.actualrelease = d_weight * d_neutral + (1.0 - d_weight) * self.sequences.fluxes.actualrelease
1207
+ self.sequences.fluxes.actualrelease = smoothutils.smooth_max1( self.sequences.fluxes.actualrelease, 0.0, self.parameters.derived.dischargesmoothpar )
1208
+ self.sequences.fluxes.actualrelease = self.sequences.fluxes.actualrelease * (smoothutils.smooth_logistic1( self.sequences.new_states.watervolume - self.parameters.control.watervolumeminimumthreshold[idx_toy], self.parameters.derived.volumesmoothparlog1, ))
1209
+ cpdef inline void calc_possibleremoterelief_v1(self) noexcept nogil:
1210
+ self.parameters.control.waterlevel2possibleremoterelief.inputs[0] = self.sequences.factors.waterlevel
1211
+ self.parameters.control.waterlevel2possibleremoterelief.calculate_values()
1212
+ self.sequences.fluxes.possibleremoterelief = self.parameters.control.waterlevel2possibleremoterelief.outputs[0]
1213
+ cpdef inline void calc_actualremoterelief_v1(self) noexcept nogil:
1214
+ self.sequences.fluxes.actualremoterelief = self.fix_min1_v1( self.sequences.fluxes.possibleremoterelief, self.sequences.fluxes.allowedremoterelief, self.parameters.control.remoterelieftolerance, True, )
1215
+ cpdef inline void calc_actualremoterelease_v1(self) noexcept nogil:
1216
+ self.sequences.fluxes.actualremoterelease = ( self.sequences.fluxes.requiredremoterelease * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelminimumremotethreshold, self.parameters.derived.waterlevelminimumremotesmoothpar, ) )
1217
+ cpdef inline void update_actualremoterelief_v1(self) noexcept nogil:
1218
+ self.sequences.fluxes.actualremoterelief = self.fix_min1_v1( self.sequences.fluxes.actualremoterelief, self.parameters.control.highestremotedischarge, self.parameters.derived.highestremotesmoothpar, False, )
1219
+ cpdef inline void update_actualremoterelease_v1(self) noexcept nogil:
1220
+ self.sequences.fluxes.actualremoterelease = self.fix_min1_v1( self.sequences.fluxes.actualremoterelease, self.parameters.control.highestremotedischarge - self.sequences.fluxes.actualremoterelief, self.parameters.derived.highestremotesmoothpar, False, )
1221
+ cpdef inline void calc_flooddischarge_v1(self) noexcept nogil:
1222
+ self.parameters.control.waterlevel2flooddischarge.inputs[0] = self.sequences.factors.waterlevel
1223
+ self.parameters.control.waterlevel2flooddischarge.calculate_values(self.parameters.derived.toy[self.idx_sim])
1224
+ self.sequences.fluxes.flooddischarge = self.parameters.control.waterlevel2flooddischarge.outputs[0]
1225
+ cpdef inline void calc_maxforceddischarge_v1(self) noexcept nogil:
1226
+ cdef numpy.int64_t toy
1227
+ self.parameters.control.waterleveldifference2maxforceddischarge.inputs[0] = self.sequences.factors.waterleveldifference
1228
+ toy: int = self.parameters.derived.toy[self.idx_sim]
1229
+ self.parameters.control.waterleveldifference2maxforceddischarge.calculate_values(toy)
1230
+ self.sequences.fluxes.maxforceddischarge = self.parameters.control.waterleveldifference2maxforceddischarge.outputs[0]
1231
+ cpdef inline void calc_maxfreedischarge_v1(self) noexcept nogil:
1232
+ cdef numpy.int64_t toy
1233
+ self.parameters.control.waterleveldifference2maxfreedischarge.inputs[0] = ( self.sequences.factors.effectivewaterleveldifference )
1234
+ toy: int = self.parameters.derived.toy[self.idx_sim]
1235
+ self.parameters.control.waterleveldifference2maxfreedischarge.calculate_values(toy)
1236
+ self.sequences.fluxes.maxfreedischarge = self.parameters.control.waterleveldifference2maxfreedischarge.outputs[0]
1237
+ cpdef inline void calc_forceddischarge_v1(self) noexcept nogil:
1238
+ cdef double r2
1239
+ cdef double r1
1240
+ r1 = smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelmaximumthreshold, self.parameters.derived.waterlevelmaximumsmoothpar, )
1241
+ r2 = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
1242
+ if self.sequences.fluxes.maxforceddischarge >= 0.0:
1243
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * r1 * (1.0 - r2)
1244
+ else:
1245
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * (1.0 - r1) * r2
1246
+ cpdef inline void calc_freedischarge_v1(self) noexcept nogil:
1247
+ cdef double q_trimmed
1248
+ cdef double w
1249
+ w = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
1250
+ q_trimmed = -smoothutils.smooth_logistic2( -self.sequences.fluxes.maxfreedischarge, self.parameters.derived.dischargesmoothpar )
1251
+ self.sequences.fluxes.freedischarge = w * q_trimmed + (1.0 - w) * self.sequences.fluxes.maxfreedischarge
1252
+ cpdef inline void calc_outflow_v1(self) noexcept nogil:
1253
+ self.sequences.fluxes.outflow = max(self.sequences.fluxes.actualrelease + self.sequences.fluxes.flooddischarge, 0.0)
1254
+ cpdef inline void calc_outflow_v2(self) noexcept nogil:
1255
+ self.sequences.fluxes.outflow = self.fix_min1_v1( self.sequences.fluxes.flooddischarge, self.sequences.aides.alloweddischarge, self.parameters.derived.dischargesmoothpar, False )
1256
+ cpdef inline void calc_outflow_v3(self) noexcept nogil:
1257
+ self.sequences.fluxes.outflow = self.sequences.fluxes.forceddischarge
1258
+ cpdef inline void calc_outflow_v4(self) noexcept nogil:
1259
+ self.sequences.fluxes.outflow = self.sequences.fluxes.freedischarge
1260
+ cpdef inline void calc_outflow_v5(self) noexcept nogil:
1261
+ self.sequences.fluxes.outflow = self.sequences.fluxes.freedischarge + self.sequences.fluxes.forceddischarge
1262
+ cpdef inline void update_watervolume_v1(self) noexcept nogil:
1263
+ 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 )
1264
+ cpdef inline void update_watervolume_v2(self) noexcept nogil:
1265
+ 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 - self.sequences.fluxes.actualremoterelease )
1266
+ cpdef inline void update_watervolume_v3(self) noexcept nogil:
1267
+ 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 - self.sequences.fluxes.actualremoterelease - self.sequences.fluxes.actualremoterelief )
1268
+ cpdef inline void update_watervolume_v4(self) noexcept nogil:
1269
+ 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 + self.sequences.fluxes.exchange )
1270
+ cpdef inline double fix_min1_v1(self, double input_, double threshold, double smoothpar, numpy.npy_bool relative) noexcept nogil:
1271
+ cdef numpy.int64_t _
1272
+ cdef double d_result
1273
+ if relative:
1274
+ smoothpar = smoothpar * (threshold)
1275
+ d_result = smoothutils.smooth_min1(input_, threshold, smoothpar)
1276
+ for _ in range(5):
1277
+ smoothpar = smoothpar / (5.0)
1278
+ d_result = smoothutils.smooth_max1(d_result, 0.0, smoothpar)
1279
+ smoothpar = smoothpar / (5.0)
1280
+ if relative:
1281
+ d_result = smoothutils.smooth_min1(d_result, input_, smoothpar)
1282
+ else:
1283
+ d_result = smoothutils.smooth_min1(d_result, threshold, smoothpar)
1284
+ return max(min(d_result, input_, threshold), 0.0)
1285
+ cpdef inline void pass_outflow_v1(self) noexcept nogil:
1286
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.outflow)
1287
+ cpdef inline void update_loggedoutflow_v1(self) noexcept nogil:
1288
+ cdef numpy.int64_t idx
1289
+ for idx in range(self.parameters.control.nmblogentries - 1, 0, -1):
1290
+ self.sequences.logs.loggedoutflow[idx] = self.sequences.logs.loggedoutflow[idx - 1]
1291
+ self.sequences.logs.loggedoutflow[0] = self.sequences.fluxes.outflow
1292
+ cpdef inline void pass_actualremoterelease_v1(self) noexcept nogil:
1293
+ self.sequences.outlets.s[0] = self.sequences.outlets.s[0] + (self.sequences.fluxes.actualremoterelease)
1294
+ cpdef inline void pass_actualremoterelief_v1(self) noexcept nogil:
1295
+ self.sequences.outlets.r[0] = self.sequences.outlets.r[0] + (self.sequences.fluxes.actualremoterelief)
1296
+ cpdef inline void calc_missingremoterelease_v1(self) noexcept nogil:
1297
+ self.sequences.fluxes.missingremoterelease = max( self.sequences.fluxes.requiredremoterelease - self.sequences.fluxes.actualrelease, 0.0 )
1298
+ cpdef inline void pass_missingremoterelease_v1(self) noexcept nogil:
1299
+ self.sequences.senders.d[0] = self.sequences.senders.d[0] + (self.sequences.fluxes.missingremoterelease)
1300
+ cpdef inline void calc_allowedremoterelief_v2(self) noexcept nogil:
1301
+ cdef numpy.int64_t toy
1302
+ toy = self.parameters.derived.toy[self.idx_sim]
1303
+ 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] )
1304
+ cpdef inline void pass_allowedremoterelief_v1(self) noexcept nogil:
1305
+ self.sequences.senders.r[0] = self.sequences.senders.r[0] + (self.sequences.fluxes.allowedremoterelief)
1306
+ cpdef inline void calc_requiredremotesupply_v1(self) noexcept nogil:
1307
+ cdef numpy.int64_t toy
1308
+ toy = self.parameters.derived.toy[self.idx_sim]
1309
+ 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] )
1310
+ cpdef inline void pass_requiredremotesupply_v1(self) noexcept nogil:
1311
+ self.sequences.senders.s[0] = self.sequences.senders.s[0] + (self.sequences.fluxes.requiredremotesupply)
1312
+ cpdef inline void pic_totalremotedischarge(self) noexcept nogil:
1313
+ self.sequences.fluxes.totalremotedischarge = self.sequences.receivers.q[0]
1314
+ cpdef inline void update_loggedtotalremotedischarge(self) noexcept nogil:
1315
+ cdef numpy.int64_t i
1316
+ for i in range(self.parameters.control.nmblogentries - 1, 0, -1):
1317
+ self.sequences.logs.loggedtotalremotedischarge[i] = self.sequences.logs.loggedtotalremotedischarge[i - 1]
1318
+ self.sequences.logs.loggedtotalremotedischarge[0] = self.sequences.fluxes.totalremotedischarge
1319
+ cpdef inline void pick_loggedouterwaterlevel(self) noexcept nogil:
1320
+ self.sequences.logs.loggedouterwaterlevel[0] = self.sequences.receivers.owl[0]
1321
+ cpdef inline void pick_loggedremotewaterlevel(self) noexcept nogil:
1322
+ self.sequences.logs.loggedremotewaterlevel[0] = self.sequences.receivers.rwl[0]
1323
+ cpdef inline void pic_loggedallowedremoterelief(self) noexcept nogil:
1324
+ self.sequences.logs.loggedallowedremoterelief[0] = self.sequences.receivers.r[0]
1325
+ cpdef inline void calc_precipitation(self) noexcept nogil:
1326
+ if self.precipmodel is None:
1327
+ self.sequences.fluxes.precipitation = 0.0
1328
+ elif self.precipmodel_typeid == 2:
1329
+ (<masterinterface.MasterInterface>self.precipmodel).determine_precipitation()
1330
+ self.sequences.fluxes.precipitation = (<masterinterface.MasterInterface>self.precipmodel).get_precipitation(0)
1331
+ cpdef inline void calc_adjustedprecipitation(self) noexcept nogil:
1332
+ self.sequences.fluxes.adjustedprecipitation = ( self.parameters.derived.inputfactor * self.parameters.control.correctionprecipitation * self.sequences.fluxes.precipitation )
1333
+ cpdef inline void calc_potentialevaporation(self) noexcept nogil:
1334
+ if self.pemodel is None:
1335
+ self.sequences.fluxes.potentialevaporation = 0.0
1336
+ elif self.pemodel_typeid == 1:
1337
+ (<masterinterface.MasterInterface>self.pemodel).determine_potentialevapotranspiration()
1338
+ self.sequences.fluxes.potentialevaporation = (<masterinterface.MasterInterface>self.pemodel).get_potentialevapotranspiration(0)
1339
+ cpdef inline void calc_adjustedevaporation(self) noexcept nogil:
1340
+ cdef double d_old
1341
+ cdef double d_new
1342
+ cdef double d_weight
1343
+ d_weight = self.parameters.control.weightevaporation
1344
+ d_new = self.parameters.derived.inputfactor * self.parameters.control.correctionevaporation * self.sequences.fluxes.potentialevaporation
1345
+ d_old = self.sequences.logs.loggedadjustedevaporation[0]
1346
+ self.sequences.fluxes.adjustedevaporation = d_weight * d_new + (1.0 - d_weight) * d_old
1347
+ self.sequences.logs.loggedadjustedevaporation[0] = self.sequences.fluxes.adjustedevaporation
1348
+ cpdef inline void calc_actualevaporation(self) noexcept nogil:
1349
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.adjustedevaporation * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.thresholdevaporation, self.parameters.derived.smoothparevaporation )
1350
+ cpdef inline void calc_naturalremotedischarge(self) noexcept nogil:
1351
+ cdef numpy.int64_t idx
1352
+ self.sequences.fluxes.naturalremotedischarge = 0.0
1353
+ for idx in range(self.parameters.control.nmblogentries):
1354
+ self.sequences.fluxes.naturalremotedischarge = self.sequences.fluxes.naturalremotedischarge + (( self.sequences.logs.loggedtotalremotedischarge[idx] - self.sequences.logs.loggedoutflow[idx] ))
1355
+ if self.sequences.fluxes.naturalremotedischarge > 0.0:
1356
+ self.sequences.fluxes.naturalremotedischarge = self.sequences.fluxes.naturalremotedischarge / (self.parameters.control.nmblogentries)
1357
+ else:
1358
+ self.sequences.fluxes.naturalremotedischarge = 0.0
1359
+ cpdef inline void calc_remotedemand(self) noexcept nogil:
1360
+ cdef double d_rdm
1361
+ d_rdm = self.parameters.control.remotedischargeminimum[self.parameters.derived.toy[self.idx_sim]]
1362
+ self.sequences.fluxes.remotedemand = max(d_rdm - self.sequences.fluxes.naturalremotedischarge, 0.0)
1363
+ cpdef inline void calc_remotefailure(self) noexcept nogil:
1364
+ cdef numpy.int64_t idx
1365
+ self.sequences.fluxes.remotefailure = 0
1366
+ for idx in range(self.parameters.control.nmblogentries):
1367
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure - (self.sequences.logs.loggedtotalremotedischarge[idx])
1368
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure / (self.parameters.control.nmblogentries)
1369
+ self.sequences.fluxes.remotefailure = self.sequences.fluxes.remotefailure + (self.parameters.control.remotedischargeminimum[self.parameters.derived.toy[self.idx_sim]])
1370
+ cpdef inline void calc_targetedrelease(self) noexcept nogil:
1371
+ if self.parameters.control.restricttargetedrelease:
1372
+ 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]], )
1373
+ self.sequences.fluxes.targetedrelease = ( self.sequences.fluxes.targetedrelease * self.sequences.fluxes.requiredrelease + (1.0 - self.sequences.fluxes.targetedrelease) * self.sequences.fluxes.inflow )
1374
+ else:
1375
+ self.sequences.fluxes.targetedrelease = self.sequences.fluxes.requiredrelease
1376
+ cpdef inline void calc_waterlevel(self) noexcept nogil:
1377
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
1378
+ self.parameters.control.watervolume2waterlevel.calculate_values()
1379
+ self.sequences.factors.waterlevel = self.parameters.control.watervolume2waterlevel.outputs[0]
1380
+ cpdef inline void calc_outerwaterlevel(self) noexcept nogil:
1381
+ self.sequences.factors.outerwaterlevel = self.sequences.logs.loggedouterwaterlevel[0]
1382
+ cpdef inline void calc_remotewaterlevel(self) noexcept nogil:
1383
+ self.sequences.factors.remotewaterlevel = self.sequences.logs.loggedremotewaterlevel[0]
1384
+ cpdef inline void calc_waterleveldifference(self) noexcept nogil:
1385
+ self.sequences.factors.waterleveldifference = self.sequences.factors.waterlevel - self.sequences.factors.outerwaterlevel
1386
+ cpdef inline void calc_effectivewaterleveldifference(self) noexcept nogil:
1387
+ cdef double ho
1388
+ cdef double hi
1389
+ hi = smoothutils.smooth_max1( self.sequences.factors.waterlevel, self.parameters.control.crestlevel, self.parameters.derived.crestlevelsmoothpar )
1390
+ ho = smoothutils.smooth_max1( self.sequences.factors.outerwaterlevel, self.parameters.control.crestlevel, self.parameters.derived.crestlevelsmoothpar )
1391
+ self.sequences.factors.effectivewaterleveldifference = hi - ho
1392
+ cpdef inline void calc_surfacearea(self) noexcept nogil:
1393
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
1394
+ self.parameters.control.watervolume2waterlevel.calculate_values()
1395
+ self.parameters.control.watervolume2waterlevel.calculate_derivatives(0)
1396
+ self.sequences.aides.surfacearea = 1.0 / self.parameters.control.watervolume2waterlevel.output_derivatives[0]
1397
+ cpdef inline void calc_possibleremoterelief(self) noexcept nogil:
1398
+ self.parameters.control.waterlevel2possibleremoterelief.inputs[0] = self.sequences.factors.waterlevel
1399
+ self.parameters.control.waterlevel2possibleremoterelief.calculate_values()
1400
+ self.sequences.fluxes.possibleremoterelief = self.parameters.control.waterlevel2possibleremoterelief.outputs[0]
1401
+ cpdef inline void calc_actualremoterelief(self) noexcept nogil:
1402
+ self.sequences.fluxes.actualremoterelief = self.fix_min1_v1( self.sequences.fluxes.possibleremoterelief, self.sequences.fluxes.allowedremoterelief, self.parameters.control.remoterelieftolerance, True, )
1403
+ cpdef inline void calc_actualremoterelease(self) noexcept nogil:
1404
+ self.sequences.fluxes.actualremoterelease = ( self.sequences.fluxes.requiredremoterelease * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelminimumremotethreshold, self.parameters.derived.waterlevelminimumremotesmoothpar, ) )
1405
+ cpdef inline void update_actualremoterelief(self) noexcept nogil:
1406
+ self.sequences.fluxes.actualremoterelief = self.fix_min1_v1( self.sequences.fluxes.actualremoterelief, self.parameters.control.highestremotedischarge, self.parameters.derived.highestremotesmoothpar, False, )
1407
+ cpdef inline void update_actualremoterelease(self) noexcept nogil:
1408
+ self.sequences.fluxes.actualremoterelease = self.fix_min1_v1( self.sequences.fluxes.actualremoterelease, self.parameters.control.highestremotedischarge - self.sequences.fluxes.actualremoterelief, self.parameters.derived.highestremotesmoothpar, False, )
1409
+ cpdef inline void calc_flooddischarge(self) noexcept nogil:
1410
+ self.parameters.control.waterlevel2flooddischarge.inputs[0] = self.sequences.factors.waterlevel
1411
+ self.parameters.control.waterlevel2flooddischarge.calculate_values(self.parameters.derived.toy[self.idx_sim])
1412
+ self.sequences.fluxes.flooddischarge = self.parameters.control.waterlevel2flooddischarge.outputs[0]
1413
+ cpdef inline void calc_maxforceddischarge(self) noexcept nogil:
1414
+ cdef numpy.int64_t toy
1415
+ self.parameters.control.waterleveldifference2maxforceddischarge.inputs[0] = self.sequences.factors.waterleveldifference
1416
+ toy: int = self.parameters.derived.toy[self.idx_sim]
1417
+ self.parameters.control.waterleveldifference2maxforceddischarge.calculate_values(toy)
1418
+ self.sequences.fluxes.maxforceddischarge = self.parameters.control.waterleveldifference2maxforceddischarge.outputs[0]
1419
+ cpdef inline void calc_maxfreedischarge(self) noexcept nogil:
1420
+ cdef numpy.int64_t toy
1421
+ self.parameters.control.waterleveldifference2maxfreedischarge.inputs[0] = ( self.sequences.factors.effectivewaterleveldifference )
1422
+ toy: int = self.parameters.derived.toy[self.idx_sim]
1423
+ self.parameters.control.waterleveldifference2maxfreedischarge.calculate_values(toy)
1424
+ self.sequences.fluxes.maxfreedischarge = self.parameters.control.waterleveldifference2maxfreedischarge.outputs[0]
1425
+ cpdef inline void calc_forceddischarge(self) noexcept nogil:
1426
+ cdef double r2
1427
+ cdef double r1
1428
+ r1 = smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelmaximumthreshold, self.parameters.derived.waterlevelmaximumsmoothpar, )
1429
+ r2 = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
1430
+ if self.sequences.fluxes.maxforceddischarge >= 0.0:
1431
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * r1 * (1.0 - r2)
1432
+ else:
1433
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * (1.0 - r1) * r2
1434
+ cpdef inline void calc_freedischarge(self) noexcept nogil:
1435
+ cdef double q_trimmed
1436
+ cdef double w
1437
+ w = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
1438
+ q_trimmed = -smoothutils.smooth_logistic2( -self.sequences.fluxes.maxfreedischarge, self.parameters.derived.dischargesmoothpar )
1439
+ self.sequences.fluxes.freedischarge = w * q_trimmed + (1.0 - w) * self.sequences.fluxes.maxfreedischarge
1440
+ cpdef inline double fix_min1(self, double input_, double threshold, double smoothpar, numpy.npy_bool relative) noexcept nogil:
1441
+ cdef numpy.int64_t _
1442
+ cdef double d_result
1443
+ if relative:
1444
+ smoothpar = smoothpar * (threshold)
1445
+ d_result = smoothutils.smooth_min1(input_, threshold, smoothpar)
1446
+ for _ in range(5):
1447
+ smoothpar = smoothpar / (5.0)
1448
+ d_result = smoothutils.smooth_max1(d_result, 0.0, smoothpar)
1449
+ smoothpar = smoothpar / (5.0)
1450
+ if relative:
1451
+ d_result = smoothutils.smooth_min1(d_result, input_, smoothpar)
1452
+ else:
1453
+ d_result = smoothutils.smooth_min1(d_result, threshold, smoothpar)
1454
+ return max(min(d_result, input_, threshold), 0.0)
1455
+ cpdef inline void pass_outflow(self) noexcept nogil:
1456
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.outflow)
1457
+ cpdef inline void update_loggedoutflow(self) noexcept nogil:
1458
+ cdef numpy.int64_t idx
1459
+ for idx in range(self.parameters.control.nmblogentries - 1, 0, -1):
1460
+ self.sequences.logs.loggedoutflow[idx] = self.sequences.logs.loggedoutflow[idx - 1]
1461
+ self.sequences.logs.loggedoutflow[0] = self.sequences.fluxes.outflow
1462
+ cpdef inline void pass_actualremoterelease(self) noexcept nogil:
1463
+ self.sequences.outlets.s[0] = self.sequences.outlets.s[0] + (self.sequences.fluxes.actualremoterelease)
1464
+ cpdef inline void pass_actualremoterelief(self) noexcept nogil:
1465
+ self.sequences.outlets.r[0] = self.sequences.outlets.r[0] + (self.sequences.fluxes.actualremoterelief)
1466
+ cpdef inline void calc_missingremoterelease(self) noexcept nogil:
1467
+ self.sequences.fluxes.missingremoterelease = max( self.sequences.fluxes.requiredremoterelease - self.sequences.fluxes.actualrelease, 0.0 )
1468
+ cpdef inline void pass_missingremoterelease(self) noexcept nogil:
1469
+ self.sequences.senders.d[0] = self.sequences.senders.d[0] + (self.sequences.fluxes.missingremoterelease)
1470
+ cpdef inline void pass_allowedremoterelief(self) noexcept nogil:
1471
+ self.sequences.senders.r[0] = self.sequences.senders.r[0] + (self.sequences.fluxes.allowedremoterelief)
1472
+ cpdef inline void calc_requiredremotesupply(self) noexcept nogil:
1473
+ cdef numpy.int64_t toy
1474
+ toy = self.parameters.derived.toy[self.idx_sim]
1475
+ 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] )
1476
+ cpdef inline void pass_requiredremotesupply(self) noexcept nogil:
1477
+ self.sequences.senders.s[0] = self.sequences.senders.s[0] + (self.sequences.fluxes.requiredremotesupply)