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