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,829 @@
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
+ cdef public numpy.npy_bool TYPE_CHECKING = False
39
+ @cython.final
40
+ cdef class Parameters:
41
+ pass
42
+ @cython.final
43
+ cdef class ControlParameters:
44
+ pass
45
+ @cython.final
46
+ cdef class DerivedParameters:
47
+ pass
48
+ @cython.final
49
+ cdef class SolverParameters:
50
+ pass
51
+ @cython.final
52
+ cdef class Sequences:
53
+ pass
54
+ @cython.final
55
+ cdef class InletSequences:
56
+ cpdef inline alloc(self, name, numpy.int64_t length):
57
+ if name == "q":
58
+ self._q_length_0 = length
59
+ self._q_ready = numpy.full(length, 0, dtype=numpy.int64)
60
+ self.q = <double**> PyMem_Malloc(length * sizeof(double*))
61
+ cpdef inline dealloc(self, name):
62
+ if name == "q":
63
+ PyMem_Free(self.q)
64
+ cpdef inline set_pointer1d(self, str name, pointerutils.Double value, numpy.int64_t idx):
65
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
66
+ if name == "q":
67
+ self.q[idx] = pointer.p_value
68
+ self._q_ready[idx] = 1
69
+ cpdef get_value(self, str name):
70
+ cdef numpy.int64_t idx
71
+ if name == "q":
72
+ values = numpy.empty(self.len_q)
73
+ for idx in range(self.len_q):
74
+ pointerutils.check0(self._q_length_0)
75
+ if self._q_ready[idx] == 0:
76
+ pointerutils.check1(self._q_length_0, idx)
77
+ pointerutils.check2(self._q_ready, idx)
78
+ values[idx] = self.q[idx][0]
79
+ return values
80
+ cpdef set_value(self, str name, value):
81
+ if name == "q":
82
+ for idx in range(self.len_q):
83
+ pointerutils.check0(self._q_length_0)
84
+ if self._q_ready[idx] == 0:
85
+ pointerutils.check1(self._q_length_0, idx)
86
+ pointerutils.check2(self._q_ready, idx)
87
+ self.q[idx][0] = value[idx]
88
+ @cython.final
89
+ cdef class ReceiverSequences:
90
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
91
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
92
+ if name == "owl":
93
+ self.owl = pointer.p_value
94
+ if name == "rwl":
95
+ self.rwl = pointer.p_value
96
+ cpdef get_value(self, str name):
97
+ cdef numpy.int64_t idx
98
+ if name == "owl":
99
+ return self.owl[0]
100
+ if name == "rwl":
101
+ return self.rwl[0]
102
+ cpdef set_value(self, str name, value):
103
+ if name == "owl":
104
+ self.owl[0] = value
105
+ if name == "rwl":
106
+ self.rwl[0] = value
107
+ @cython.final
108
+ cdef class FactorSequences:
109
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
110
+ cdef numpy.int64_t k
111
+ if self._waterlevel_diskflag_reading:
112
+ self.waterlevel = self._waterlevel_ncarray[0]
113
+ elif self._waterlevel_ramflag:
114
+ self.waterlevel = self._waterlevel_array[idx]
115
+ if self._outerwaterlevel_diskflag_reading:
116
+ self.outerwaterlevel = self._outerwaterlevel_ncarray[0]
117
+ elif self._outerwaterlevel_ramflag:
118
+ self.outerwaterlevel = self._outerwaterlevel_array[idx]
119
+ if self._remotewaterlevel_diskflag_reading:
120
+ self.remotewaterlevel = self._remotewaterlevel_ncarray[0]
121
+ elif self._remotewaterlevel_ramflag:
122
+ self.remotewaterlevel = self._remotewaterlevel_array[idx]
123
+ if self._waterleveldifference_diskflag_reading:
124
+ self.waterleveldifference = self._waterleveldifference_ncarray[0]
125
+ elif self._waterleveldifference_ramflag:
126
+ self.waterleveldifference = self._waterleveldifference_array[idx]
127
+ if self._effectivewaterleveldifference_diskflag_reading:
128
+ self.effectivewaterleveldifference = self._effectivewaterleveldifference_ncarray[0]
129
+ elif self._effectivewaterleveldifference_ramflag:
130
+ self.effectivewaterleveldifference = self._effectivewaterleveldifference_array[idx]
131
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
132
+ cdef numpy.int64_t k
133
+ if self._waterlevel_diskflag_writing:
134
+ self._waterlevel_ncarray[0] = self.waterlevel
135
+ if self._waterlevel_ramflag:
136
+ self._waterlevel_array[idx] = self.waterlevel
137
+ if self._outerwaterlevel_diskflag_writing:
138
+ self._outerwaterlevel_ncarray[0] = self.outerwaterlevel
139
+ if self._outerwaterlevel_ramflag:
140
+ self._outerwaterlevel_array[idx] = self.outerwaterlevel
141
+ if self._remotewaterlevel_diskflag_writing:
142
+ self._remotewaterlevel_ncarray[0] = self.remotewaterlevel
143
+ if self._remotewaterlevel_ramflag:
144
+ self._remotewaterlevel_array[idx] = self.remotewaterlevel
145
+ if self._waterleveldifference_diskflag_writing:
146
+ self._waterleveldifference_ncarray[0] = self.waterleveldifference
147
+ if self._waterleveldifference_ramflag:
148
+ self._waterleveldifference_array[idx] = self.waterleveldifference
149
+ if self._effectivewaterleveldifference_diskflag_writing:
150
+ self._effectivewaterleveldifference_ncarray[0] = self.effectivewaterleveldifference
151
+ if self._effectivewaterleveldifference_ramflag:
152
+ self._effectivewaterleveldifference_array[idx] = self.effectivewaterleveldifference
153
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
154
+ if name == "waterlevel":
155
+ self._waterlevel_outputpointer = value.p_value
156
+ if name == "outerwaterlevel":
157
+ self._outerwaterlevel_outputpointer = value.p_value
158
+ if name == "remotewaterlevel":
159
+ self._remotewaterlevel_outputpointer = value.p_value
160
+ if name == "waterleveldifference":
161
+ self._waterleveldifference_outputpointer = value.p_value
162
+ if name == "effectivewaterleveldifference":
163
+ self._effectivewaterleveldifference_outputpointer = value.p_value
164
+ cpdef inline void update_outputs(self) noexcept nogil:
165
+ if self._waterlevel_outputflag:
166
+ self._waterlevel_outputpointer[0] = self.waterlevel
167
+ if self._outerwaterlevel_outputflag:
168
+ self._outerwaterlevel_outputpointer[0] = self.outerwaterlevel
169
+ if self._remotewaterlevel_outputflag:
170
+ self._remotewaterlevel_outputpointer[0] = self.remotewaterlevel
171
+ if self._waterleveldifference_outputflag:
172
+ self._waterleveldifference_outputpointer[0] = self.waterleveldifference
173
+ if self._effectivewaterleveldifference_outputflag:
174
+ self._effectivewaterleveldifference_outputpointer[0] = self.effectivewaterleveldifference
175
+ @cython.final
176
+ cdef class FluxSequences:
177
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
178
+ cdef numpy.int64_t k
179
+ if self._precipitation_diskflag_reading:
180
+ self.precipitation = self._precipitation_ncarray[0]
181
+ elif self._precipitation_ramflag:
182
+ self.precipitation = self._precipitation_array[idx]
183
+ if self._adjustedprecipitation_diskflag_reading:
184
+ self.adjustedprecipitation = self._adjustedprecipitation_ncarray[0]
185
+ elif self._adjustedprecipitation_ramflag:
186
+ self.adjustedprecipitation = self._adjustedprecipitation_array[idx]
187
+ if self._potentialevaporation_diskflag_reading:
188
+ self.potentialevaporation = self._potentialevaporation_ncarray[0]
189
+ elif self._potentialevaporation_ramflag:
190
+ self.potentialevaporation = self._potentialevaporation_array[idx]
191
+ if self._adjustedevaporation_diskflag_reading:
192
+ self.adjustedevaporation = self._adjustedevaporation_ncarray[0]
193
+ elif self._adjustedevaporation_ramflag:
194
+ self.adjustedevaporation = self._adjustedevaporation_array[idx]
195
+ if self._actualevaporation_diskflag_reading:
196
+ self.actualevaporation = self._actualevaporation_ncarray[0]
197
+ elif self._actualevaporation_ramflag:
198
+ self.actualevaporation = self._actualevaporation_array[idx]
199
+ if self._inflow_diskflag_reading:
200
+ self.inflow = self._inflow_ncarray[0]
201
+ elif self._inflow_ramflag:
202
+ self.inflow = self._inflow_array[idx]
203
+ if self._freedischarge_diskflag_reading:
204
+ self.freedischarge = self._freedischarge_ncarray[0]
205
+ elif self._freedischarge_ramflag:
206
+ self.freedischarge = self._freedischarge_array[idx]
207
+ if self._maxforceddischarge_diskflag_reading:
208
+ self.maxforceddischarge = self._maxforceddischarge_ncarray[0]
209
+ elif self._maxforceddischarge_ramflag:
210
+ self.maxforceddischarge = self._maxforceddischarge_array[idx]
211
+ if self._maxfreedischarge_diskflag_reading:
212
+ self.maxfreedischarge = self._maxfreedischarge_ncarray[0]
213
+ elif self._maxfreedischarge_ramflag:
214
+ self.maxfreedischarge = self._maxfreedischarge_array[idx]
215
+ if self._forceddischarge_diskflag_reading:
216
+ self.forceddischarge = self._forceddischarge_ncarray[0]
217
+ elif self._forceddischarge_ramflag:
218
+ self.forceddischarge = self._forceddischarge_array[idx]
219
+ if self._outflow_diskflag_reading:
220
+ self.outflow = self._outflow_ncarray[0]
221
+ elif self._outflow_ramflag:
222
+ self.outflow = self._outflow_array[idx]
223
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
224
+ cdef numpy.int64_t k
225
+ if self._precipitation_diskflag_writing:
226
+ self._precipitation_ncarray[0] = self.precipitation
227
+ if self._precipitation_ramflag:
228
+ self._precipitation_array[idx] = self.precipitation
229
+ if self._adjustedprecipitation_diskflag_writing:
230
+ self._adjustedprecipitation_ncarray[0] = self.adjustedprecipitation
231
+ if self._adjustedprecipitation_ramflag:
232
+ self._adjustedprecipitation_array[idx] = self.adjustedprecipitation
233
+ if self._potentialevaporation_diskflag_writing:
234
+ self._potentialevaporation_ncarray[0] = self.potentialevaporation
235
+ if self._potentialevaporation_ramflag:
236
+ self._potentialevaporation_array[idx] = self.potentialevaporation
237
+ if self._adjustedevaporation_diskflag_writing:
238
+ self._adjustedevaporation_ncarray[0] = self.adjustedevaporation
239
+ if self._adjustedevaporation_ramflag:
240
+ self._adjustedevaporation_array[idx] = self.adjustedevaporation
241
+ if self._actualevaporation_diskflag_writing:
242
+ self._actualevaporation_ncarray[0] = self.actualevaporation
243
+ if self._actualevaporation_ramflag:
244
+ self._actualevaporation_array[idx] = self.actualevaporation
245
+ if self._inflow_diskflag_writing:
246
+ self._inflow_ncarray[0] = self.inflow
247
+ if self._inflow_ramflag:
248
+ self._inflow_array[idx] = self.inflow
249
+ if self._freedischarge_diskflag_writing:
250
+ self._freedischarge_ncarray[0] = self.freedischarge
251
+ if self._freedischarge_ramflag:
252
+ self._freedischarge_array[idx] = self.freedischarge
253
+ if self._maxforceddischarge_diskflag_writing:
254
+ self._maxforceddischarge_ncarray[0] = self.maxforceddischarge
255
+ if self._maxforceddischarge_ramflag:
256
+ self._maxforceddischarge_array[idx] = self.maxforceddischarge
257
+ if self._maxfreedischarge_diskflag_writing:
258
+ self._maxfreedischarge_ncarray[0] = self.maxfreedischarge
259
+ if self._maxfreedischarge_ramflag:
260
+ self._maxfreedischarge_array[idx] = self.maxfreedischarge
261
+ if self._forceddischarge_diskflag_writing:
262
+ self._forceddischarge_ncarray[0] = self.forceddischarge
263
+ if self._forceddischarge_ramflag:
264
+ self._forceddischarge_array[idx] = self.forceddischarge
265
+ if self._outflow_diskflag_writing:
266
+ self._outflow_ncarray[0] = self.outflow
267
+ if self._outflow_ramflag:
268
+ self._outflow_array[idx] = self.outflow
269
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
270
+ if name == "precipitation":
271
+ self._precipitation_outputpointer = value.p_value
272
+ if name == "adjustedprecipitation":
273
+ self._adjustedprecipitation_outputpointer = value.p_value
274
+ if name == "potentialevaporation":
275
+ self._potentialevaporation_outputpointer = value.p_value
276
+ if name == "adjustedevaporation":
277
+ self._adjustedevaporation_outputpointer = value.p_value
278
+ if name == "actualevaporation":
279
+ self._actualevaporation_outputpointer = value.p_value
280
+ if name == "inflow":
281
+ self._inflow_outputpointer = value.p_value
282
+ if name == "freedischarge":
283
+ self._freedischarge_outputpointer = value.p_value
284
+ if name == "maxforceddischarge":
285
+ self._maxforceddischarge_outputpointer = value.p_value
286
+ if name == "maxfreedischarge":
287
+ self._maxfreedischarge_outputpointer = value.p_value
288
+ if name == "forceddischarge":
289
+ self._forceddischarge_outputpointer = value.p_value
290
+ if name == "outflow":
291
+ self._outflow_outputpointer = value.p_value
292
+ cpdef inline void update_outputs(self) noexcept nogil:
293
+ if self._precipitation_outputflag:
294
+ self._precipitation_outputpointer[0] = self.precipitation
295
+ if self._adjustedprecipitation_outputflag:
296
+ self._adjustedprecipitation_outputpointer[0] = self.adjustedprecipitation
297
+ if self._potentialevaporation_outputflag:
298
+ self._potentialevaporation_outputpointer[0] = self.potentialevaporation
299
+ if self._adjustedevaporation_outputflag:
300
+ self._adjustedevaporation_outputpointer[0] = self.adjustedevaporation
301
+ if self._actualevaporation_outputflag:
302
+ self._actualevaporation_outputpointer[0] = self.actualevaporation
303
+ if self._inflow_outputflag:
304
+ self._inflow_outputpointer[0] = self.inflow
305
+ if self._freedischarge_outputflag:
306
+ self._freedischarge_outputpointer[0] = self.freedischarge
307
+ if self._maxforceddischarge_outputflag:
308
+ self._maxforceddischarge_outputpointer[0] = self.maxforceddischarge
309
+ if self._maxfreedischarge_outputflag:
310
+ self._maxfreedischarge_outputpointer[0] = self.maxfreedischarge
311
+ if self._forceddischarge_outputflag:
312
+ self._forceddischarge_outputpointer[0] = self.forceddischarge
313
+ if self._outflow_outputflag:
314
+ self._outflow_outputpointer[0] = self.outflow
315
+ @cython.final
316
+ cdef class StateSequences:
317
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
318
+ cdef numpy.int64_t k
319
+ if self._watervolume_diskflag_reading:
320
+ self.watervolume = self._watervolume_ncarray[0]
321
+ elif self._watervolume_ramflag:
322
+ self.watervolume = self._watervolume_array[idx]
323
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
324
+ cdef numpy.int64_t k
325
+ if self._watervolume_diskflag_writing:
326
+ self._watervolume_ncarray[0] = self.watervolume
327
+ if self._watervolume_ramflag:
328
+ self._watervolume_array[idx] = self.watervolume
329
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
330
+ if name == "watervolume":
331
+ self._watervolume_outputpointer = value.p_value
332
+ cpdef inline void update_outputs(self) noexcept nogil:
333
+ if self._watervolume_outputflag:
334
+ self._watervolume_outputpointer[0] = self.watervolume
335
+ @cython.final
336
+ cdef class LogSequences:
337
+ pass
338
+ @cython.final
339
+ cdef class OutletSequences:
340
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
341
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
342
+ if name == "q":
343
+ self.q = pointer.p_value
344
+ cpdef get_value(self, str name):
345
+ cdef numpy.int64_t idx
346
+ if name == "q":
347
+ return self.q[0]
348
+ cpdef set_value(self, str name, value):
349
+ if name == "q":
350
+ self.q[0] = value
351
+ @cython.final
352
+ cdef class NumConsts:
353
+ pass
354
+ @cython.final
355
+ cdef class NumVars:
356
+ pass
357
+ @cython.final
358
+ cdef class Model:
359
+ def __init__(self):
360
+ super().__init__()
361
+ self.pemodel = None
362
+ self.pemodel_is_mainmodel = False
363
+ self.precipmodel = None
364
+ self.precipmodel_is_mainmodel = False
365
+ def get_pemodel(self) -> masterinterface.MasterInterface | None:
366
+ return self.pemodel
367
+ def set_pemodel(self, pemodel: masterinterface.MasterInterface | None) -> None:
368
+ self.pemodel = pemodel
369
+ def get_precipmodel(self) -> masterinterface.MasterInterface | None:
370
+ return self.precipmodel
371
+ def set_precipmodel(self, precipmodel: masterinterface.MasterInterface | None) -> None:
372
+ self.precipmodel = precipmodel
373
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
374
+ self.idx_sim = idx
375
+ self.reset_reuseflags()
376
+ self.load_data(idx)
377
+ self.update_inlets()
378
+ self.solve()
379
+ self.update_outlets()
380
+ self.update_outputs()
381
+ cpdef void reset_reuseflags(self) noexcept nogil:
382
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
383
+ self.pemodel.reset_reuseflags()
384
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
385
+ self.precipmodel.reset_reuseflags()
386
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
387
+ self.idx_sim = idx
388
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
389
+ self.pemodel.load_data(idx)
390
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
391
+ self.precipmodel.load_data(idx)
392
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
393
+ self.idx_sim = idx
394
+ self.sequences.factors.save_data(idx)
395
+ self.sequences.fluxes.save_data(idx)
396
+ self.sequences.states.save_data(idx)
397
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
398
+ self.pemodel.save_data(idx)
399
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
400
+ self.precipmodel.save_data(idx)
401
+ cpdef void new2old(self) noexcept nogil:
402
+ self.sequences.old_states.watervolume = self.sequences.new_states.watervolume
403
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
404
+ self.pemodel.new2old()
405
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
406
+ self.precipmodel.new2old()
407
+ cpdef inline void update_inlets(self) noexcept nogil:
408
+ self.calc_precipitation_v1()
409
+ self.calc_potentialevaporation_v1()
410
+ self.calc_adjustedevaporation_v1()
411
+ cpdef inline void update_outlets(self) noexcept nogil:
412
+ self.calc_waterlevel_v1()
413
+ self.calc_outerwaterlevel_v1()
414
+ self.calc_remotewaterlevel_v1()
415
+ self.pass_outflow_v1()
416
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
417
+ self.idx_sim = idx
418
+ self.pick_loggedouterwaterlevel_v1()
419
+ self.pick_loggedremotewaterlevel_v1()
420
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
421
+ self.idx_sim = idx
422
+ pass
423
+ cpdef inline void update_outputs(self) noexcept nogil:
424
+ self.sequences.factors.update_outputs()
425
+ self.sequences.fluxes.update_outputs()
426
+ self.sequences.states.update_outputs()
427
+ cpdef inline void solve(self) noexcept nogil:
428
+ cdef numpy.int64_t decrease_dt
429
+ self.numvars.use_relerror = not isnan( self.parameters.solver.relerrormax )
430
+ self.numvars.t0, self.numvars.t1 = 0.0, 1.0
431
+ self.numvars.dt_est = 1.0 * self.parameters.solver.reldtmax
432
+ self.numvars.f0_ready = False
433
+ self.reset_sum_fluxes()
434
+ while self.numvars.t0 < self.numvars.t1 - 1e-14:
435
+ self.numvars.last_abserror = inf
436
+ self.numvars.last_relerror = inf
437
+ 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), )
438
+ if not self.numvars.f0_ready:
439
+ self.calculate_single_terms()
440
+ self.numvars.idx_method = 0
441
+ self.numvars.idx_stage = 0
442
+ self.set_point_fluxes()
443
+ self.set_point_states()
444
+ self.set_result_states()
445
+ for self.numvars.idx_method in range(1, self.numconsts.nmb_methods + 1):
446
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method):
447
+ self.get_point_states()
448
+ self.calculate_single_terms()
449
+ self.set_point_fluxes()
450
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method + 1):
451
+ self.integrate_fluxes()
452
+ self.calculate_full_terms()
453
+ self.set_point_states()
454
+ self.set_result_fluxes()
455
+ self.set_result_states()
456
+ self.calculate_error()
457
+ self.extrapolate_error()
458
+ if self.numvars.idx_method == 1:
459
+ continue
460
+ if (self.numvars.abserror <= self.parameters.solver.abserrormax) or ( self.numvars.relerror <= self.parameters.solver.relerrormax ):
461
+ self.numvars.dt_est = self.numconsts.dt_increase * self.numvars.dt
462
+ self.numvars.f0_ready = False
463
+ self.addup_fluxes()
464
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
465
+ self.new2old()
466
+ break
467
+ decrease_dt = self.numvars.dt > self.parameters.solver.reldtmin
468
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_abserror > self.parameters.solver.abserrormax )
469
+ if self.numvars.use_relerror:
470
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_relerror > self.parameters.solver.relerrormax )
471
+ if decrease_dt:
472
+ self.numvars.f0_ready = True
473
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
474
+ break
475
+ self.numvars.last_abserror = self.numvars.abserror
476
+ self.numvars.last_relerror = self.numvars.relerror
477
+ self.numvars.f0_ready = True
478
+ else:
479
+ if self.numvars.dt <= self.parameters.solver.reldtmin:
480
+ self.numvars.f0_ready = False
481
+ self.addup_fluxes()
482
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
483
+ self.new2old()
484
+ else:
485
+ self.numvars.f0_ready = True
486
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
487
+ self.get_sum_fluxes()
488
+ cpdef inline void calculate_single_terms(self) noexcept nogil:
489
+ self.numvars.nmb_calls = self.numvars.nmb_calls + 1
490
+ self.calc_adjustedprecipitation_v1()
491
+ self.pic_inflow_v1()
492
+ self.calc_waterlevel_v1()
493
+ self.calc_outerwaterlevel_v1()
494
+ self.calc_remotewaterlevel_v1()
495
+ self.calc_waterleveldifference_v1()
496
+ self.calc_effectivewaterleveldifference_v1()
497
+ self.calc_maxforceddischarge_v1()
498
+ self.calc_maxfreedischarge_v1()
499
+ self.calc_forceddischarge_v1()
500
+ self.calc_freedischarge_v1()
501
+ self.calc_actualevaporation_v1()
502
+ self.calc_outflow_v5()
503
+ cpdef inline void calculate_full_terms(self) noexcept nogil:
504
+ self.update_watervolume_v1()
505
+ cpdef inline void get_point_states(self) noexcept nogil:
506
+ self.sequences.states.watervolume = self.sequences.states._watervolume_points[self.numvars.idx_stage]
507
+ cpdef inline void set_point_states(self) noexcept nogil:
508
+ self.sequences.states._watervolume_points[self.numvars.idx_stage] = self.sequences.states.watervolume
509
+ cpdef inline void set_result_states(self) noexcept nogil:
510
+ self.sequences.states._watervolume_results[self.numvars.idx_method] = self.sequences.states.watervolume
511
+ cpdef inline void get_sum_fluxes(self) noexcept nogil:
512
+ self.sequences.fluxes.adjustedprecipitation = self.sequences.fluxes._adjustedprecipitation_sum
513
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes._actualevaporation_sum
514
+ self.sequences.fluxes.inflow = self.sequences.fluxes._inflow_sum
515
+ self.sequences.fluxes.freedischarge = self.sequences.fluxes._freedischarge_sum
516
+ self.sequences.fluxes.maxforceddischarge = self.sequences.fluxes._maxforceddischarge_sum
517
+ self.sequences.fluxes.maxfreedischarge = self.sequences.fluxes._maxfreedischarge_sum
518
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes._forceddischarge_sum
519
+ self.sequences.fluxes.outflow = self.sequences.fluxes._outflow_sum
520
+ cpdef inline void set_point_fluxes(self) noexcept nogil:
521
+ self.sequences.fluxes._adjustedprecipitation_points[self.numvars.idx_stage] = self.sequences.fluxes.adjustedprecipitation
522
+ self.sequences.fluxes._actualevaporation_points[self.numvars.idx_stage] = self.sequences.fluxes.actualevaporation
523
+ self.sequences.fluxes._inflow_points[self.numvars.idx_stage] = self.sequences.fluxes.inflow
524
+ self.sequences.fluxes._freedischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.freedischarge
525
+ self.sequences.fluxes._maxforceddischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.maxforceddischarge
526
+ self.sequences.fluxes._maxfreedischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.maxfreedischarge
527
+ self.sequences.fluxes._forceddischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.forceddischarge
528
+ self.sequences.fluxes._outflow_points[self.numvars.idx_stage] = self.sequences.fluxes.outflow
529
+ cpdef inline void set_result_fluxes(self) noexcept nogil:
530
+ self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method] = self.sequences.fluxes.adjustedprecipitation
531
+ self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method] = self.sequences.fluxes.actualevaporation
532
+ self.sequences.fluxes._inflow_results[self.numvars.idx_method] = self.sequences.fluxes.inflow
533
+ self.sequences.fluxes._freedischarge_results[self.numvars.idx_method] = self.sequences.fluxes.freedischarge
534
+ self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method] = self.sequences.fluxes.maxforceddischarge
535
+ self.sequences.fluxes._maxfreedischarge_results[self.numvars.idx_method] = self.sequences.fluxes.maxfreedischarge
536
+ self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method] = self.sequences.fluxes.forceddischarge
537
+ self.sequences.fluxes._outflow_results[self.numvars.idx_method] = self.sequences.fluxes.outflow
538
+ cpdef inline void integrate_fluxes(self) noexcept nogil:
539
+ cdef numpy.int64_t jdx
540
+ self.sequences.fluxes.adjustedprecipitation = 0.
541
+ for jdx in range(self.numvars.idx_method):
542
+ 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]
543
+ self.sequences.fluxes.actualevaporation = 0.
544
+ for jdx in range(self.numvars.idx_method):
545
+ 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]
546
+ self.sequences.fluxes.inflow = 0.
547
+ for jdx in range(self.numvars.idx_method):
548
+ 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]
549
+ self.sequences.fluxes.freedischarge = 0.
550
+ for jdx in range(self.numvars.idx_method):
551
+ self.sequences.fluxes.freedischarge = self.sequences.fluxes.freedischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._freedischarge_points[jdx]
552
+ self.sequences.fluxes.maxforceddischarge = 0.
553
+ for jdx in range(self.numvars.idx_method):
554
+ self.sequences.fluxes.maxforceddischarge = self.sequences.fluxes.maxforceddischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._maxforceddischarge_points[jdx]
555
+ self.sequences.fluxes.maxfreedischarge = 0.
556
+ for jdx in range(self.numvars.idx_method):
557
+ self.sequences.fluxes.maxfreedischarge = self.sequences.fluxes.maxfreedischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._maxfreedischarge_points[jdx]
558
+ self.sequences.fluxes.forceddischarge = 0.
559
+ for jdx in range(self.numvars.idx_method):
560
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.forceddischarge +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._forceddischarge_points[jdx]
561
+ self.sequences.fluxes.outflow = 0.
562
+ for jdx in range(self.numvars.idx_method):
563
+ 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]
564
+ cpdef inline void reset_sum_fluxes(self) noexcept nogil:
565
+ self.sequences.fluxes._adjustedprecipitation_sum = 0.
566
+ self.sequences.fluxes._actualevaporation_sum = 0.
567
+ self.sequences.fluxes._inflow_sum = 0.
568
+ self.sequences.fluxes._freedischarge_sum = 0.
569
+ self.sequences.fluxes._maxforceddischarge_sum = 0.
570
+ self.sequences.fluxes._maxfreedischarge_sum = 0.
571
+ self.sequences.fluxes._forceddischarge_sum = 0.
572
+ self.sequences.fluxes._outflow_sum = 0.
573
+ cpdef inline void addup_fluxes(self) noexcept nogil:
574
+ self.sequences.fluxes._adjustedprecipitation_sum = self.sequences.fluxes._adjustedprecipitation_sum + self.sequences.fluxes.adjustedprecipitation
575
+ self.sequences.fluxes._actualevaporation_sum = self.sequences.fluxes._actualevaporation_sum + self.sequences.fluxes.actualevaporation
576
+ self.sequences.fluxes._inflow_sum = self.sequences.fluxes._inflow_sum + self.sequences.fluxes.inflow
577
+ self.sequences.fluxes._freedischarge_sum = self.sequences.fluxes._freedischarge_sum + self.sequences.fluxes.freedischarge
578
+ self.sequences.fluxes._maxforceddischarge_sum = self.sequences.fluxes._maxforceddischarge_sum + self.sequences.fluxes.maxforceddischarge
579
+ self.sequences.fluxes._maxfreedischarge_sum = self.sequences.fluxes._maxfreedischarge_sum + self.sequences.fluxes.maxfreedischarge
580
+ self.sequences.fluxes._forceddischarge_sum = self.sequences.fluxes._forceddischarge_sum + self.sequences.fluxes.forceddischarge
581
+ self.sequences.fluxes._outflow_sum = self.sequences.fluxes._outflow_sum + self.sequences.fluxes.outflow
582
+ cpdef inline void calculate_error(self) noexcept nogil:
583
+ cdef double abserror
584
+ self.numvars.abserror = 0.
585
+ if self.numvars.use_relerror:
586
+ self.numvars.relerror = 0.
587
+ else:
588
+ self.numvars.relerror = inf
589
+ abserror = fabs(self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method]-self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method-1])
590
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
591
+ if self.numvars.use_relerror:
592
+ if self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method] == 0.:
593
+ self.numvars.relerror = inf
594
+ else:
595
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method]))
596
+ abserror = fabs(self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method]-self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method-1])
597
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
598
+ if self.numvars.use_relerror:
599
+ if self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method] == 0.:
600
+ self.numvars.relerror = inf
601
+ else:
602
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method]))
603
+ abserror = fabs(self.sequences.fluxes._inflow_results[self.numvars.idx_method]-self.sequences.fluxes._inflow_results[self.numvars.idx_method-1])
604
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
605
+ if self.numvars.use_relerror:
606
+ if self.sequences.fluxes._inflow_results[self.numvars.idx_method] == 0.:
607
+ self.numvars.relerror = inf
608
+ else:
609
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._inflow_results[self.numvars.idx_method]))
610
+ abserror = fabs(self.sequences.fluxes._freedischarge_results[self.numvars.idx_method]-self.sequences.fluxes._freedischarge_results[self.numvars.idx_method-1])
611
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
612
+ if self.numvars.use_relerror:
613
+ if self.sequences.fluxes._freedischarge_results[self.numvars.idx_method] == 0.:
614
+ self.numvars.relerror = inf
615
+ else:
616
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._freedischarge_results[self.numvars.idx_method]))
617
+ abserror = fabs(self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method]-self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method-1])
618
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
619
+ if self.numvars.use_relerror:
620
+ if self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method] == 0.:
621
+ self.numvars.relerror = inf
622
+ else:
623
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method]))
624
+ abserror = fabs(self.sequences.fluxes._maxfreedischarge_results[self.numvars.idx_method]-self.sequences.fluxes._maxfreedischarge_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._maxfreedischarge_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._maxfreedischarge_results[self.numvars.idx_method]))
631
+ abserror = fabs(self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method]-self.sequences.fluxes._forceddischarge_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._forceddischarge_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._forceddischarge_results[self.numvars.idx_method]))
638
+ abserror = fabs(self.sequences.fluxes._outflow_results[self.numvars.idx_method]-self.sequences.fluxes._outflow_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._outflow_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._outflow_results[self.numvars.idx_method]))
645
+ cpdef inline void extrapolate_error(self) noexcept nogil:
646
+ if self.numvars.abserror <= 0.0:
647
+ self.numvars.extrapolated_abserror = 0.0
648
+ self.numvars.extrapolated_relerror = 0.0
649
+ else:
650
+ if self.numvars.idx_method > 2:
651
+ 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) )
652
+ else:
653
+ self.numvars.extrapolated_abserror = -999.9
654
+ if self.numvars.use_relerror:
655
+ if self.numvars.idx_method > 2:
656
+ if isinf(self.numvars.relerror):
657
+ self.numvars.extrapolated_relerror = inf
658
+ else:
659
+ 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) )
660
+ else:
661
+ self.numvars.extrapolated_relerror = -999.9
662
+ else:
663
+ self.numvars.extrapolated_relerror = inf
664
+ cpdef inline void pick_loggedouterwaterlevel_v1(self) noexcept nogil:
665
+ self.sequences.logs.loggedouterwaterlevel[0] = self.sequences.receivers.owl[0]
666
+ cpdef inline void pick_loggedremotewaterlevel_v1(self) noexcept nogil:
667
+ self.sequences.logs.loggedremotewaterlevel[0] = self.sequences.receivers.rwl[0]
668
+ cpdef inline void calc_precipitation_v1(self) noexcept nogil:
669
+ if self.precipmodel is None:
670
+ self.sequences.fluxes.precipitation = 0.0
671
+ elif self.precipmodel_typeid == 2:
672
+ (<masterinterface.MasterInterface>self.precipmodel).determine_precipitation()
673
+ self.sequences.fluxes.precipitation = (<masterinterface.MasterInterface>self.precipmodel).get_precipitation(0)
674
+ cpdef inline void calc_potentialevaporation_v1(self) noexcept nogil:
675
+ if self.pemodel is None:
676
+ self.sequences.fluxes.potentialevaporation = 0.0
677
+ elif self.pemodel_typeid == 1:
678
+ (<masterinterface.MasterInterface>self.pemodel).determine_potentialevapotranspiration()
679
+ self.sequences.fluxes.potentialevaporation = (<masterinterface.MasterInterface>self.pemodel).get_potentialevapotranspiration(0)
680
+ cpdef inline void calc_adjustedevaporation_v1(self) noexcept nogil:
681
+ cdef double d_old
682
+ cdef double d_new
683
+ cdef double d_weight
684
+ d_weight = self.parameters.control.weightevaporation
685
+ d_new = self.parameters.derived.inputfactor * self.parameters.control.correctionevaporation * self.sequences.fluxes.potentialevaporation
686
+ d_old = self.sequences.logs.loggedadjustedevaporation[0]
687
+ self.sequences.fluxes.adjustedevaporation = d_weight * d_new + (1.0 - d_weight) * d_old
688
+ self.sequences.logs.loggedadjustedevaporation[0] = self.sequences.fluxes.adjustedevaporation
689
+ cpdef inline void calc_adjustedprecipitation_v1(self) noexcept nogil:
690
+ self.sequences.fluxes.adjustedprecipitation = ( self.parameters.derived.inputfactor * self.parameters.control.correctionprecipitation * self.sequences.fluxes.precipitation )
691
+ cpdef inline void pic_inflow_v1(self) noexcept nogil:
692
+ cdef numpy.int64_t idx
693
+ self.sequences.fluxes.inflow = 0.0
694
+ for idx in range(self.sequences.inlets.len_q):
695
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.q[idx][0])
696
+ cpdef inline void calc_waterlevel_v1(self) noexcept nogil:
697
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
698
+ self.parameters.control.watervolume2waterlevel.calculate_values()
699
+ self.sequences.factors.waterlevel = self.parameters.control.watervolume2waterlevel.outputs[0]
700
+ cpdef inline void calc_outerwaterlevel_v1(self) noexcept nogil:
701
+ self.sequences.factors.outerwaterlevel = self.sequences.logs.loggedouterwaterlevel[0]
702
+ cpdef inline void calc_remotewaterlevel_v1(self) noexcept nogil:
703
+ self.sequences.factors.remotewaterlevel = self.sequences.logs.loggedremotewaterlevel[0]
704
+ cpdef inline void calc_waterleveldifference_v1(self) noexcept nogil:
705
+ self.sequences.factors.waterleveldifference = self.sequences.factors.waterlevel - self.sequences.factors.outerwaterlevel
706
+ cpdef inline void calc_effectivewaterleveldifference_v1(self) noexcept nogil:
707
+ cdef double ho
708
+ cdef double hi
709
+ hi = smoothutils.smooth_max1( self.sequences.factors.waterlevel, self.parameters.control.crestlevel, self.parameters.derived.crestlevelsmoothpar )
710
+ ho = smoothutils.smooth_max1( self.sequences.factors.outerwaterlevel, self.parameters.control.crestlevel, self.parameters.derived.crestlevelsmoothpar )
711
+ self.sequences.factors.effectivewaterleveldifference = hi - ho
712
+ cpdef inline void calc_maxforceddischarge_v1(self) noexcept nogil:
713
+ cdef numpy.int64_t toy
714
+ self.parameters.control.waterleveldifference2maxforceddischarge.inputs[0] = self.sequences.factors.waterleveldifference
715
+ toy: int = self.parameters.derived.toy[self.idx_sim]
716
+ self.parameters.control.waterleveldifference2maxforceddischarge.calculate_values(toy)
717
+ self.sequences.fluxes.maxforceddischarge = self.parameters.control.waterleveldifference2maxforceddischarge.outputs[0]
718
+ cpdef inline void calc_maxfreedischarge_v1(self) noexcept nogil:
719
+ cdef numpy.int64_t toy
720
+ self.parameters.control.waterleveldifference2maxfreedischarge.inputs[0] = ( self.sequences.factors.effectivewaterleveldifference )
721
+ toy: int = self.parameters.derived.toy[self.idx_sim]
722
+ self.parameters.control.waterleveldifference2maxfreedischarge.calculate_values(toy)
723
+ self.sequences.fluxes.maxfreedischarge = self.parameters.control.waterleveldifference2maxfreedischarge.outputs[0]
724
+ cpdef inline void calc_forceddischarge_v1(self) noexcept nogil:
725
+ cdef double r2
726
+ cdef double r1
727
+ r1 = smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelmaximumthreshold, self.parameters.derived.waterlevelmaximumsmoothpar, )
728
+ r2 = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
729
+ if self.sequences.fluxes.maxforceddischarge >= 0.0:
730
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * r1 * (1.0 - r2)
731
+ else:
732
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * (1.0 - r1) * r2
733
+ cpdef inline void calc_freedischarge_v1(self) noexcept nogil:
734
+ cdef double q_trimmed
735
+ cdef double w
736
+ w = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
737
+ q_trimmed = -smoothutils.smooth_logistic2( -self.sequences.fluxes.maxfreedischarge, self.parameters.derived.dischargesmoothpar )
738
+ self.sequences.fluxes.freedischarge = w * q_trimmed + (1.0 - w) * self.sequences.fluxes.maxfreedischarge
739
+ cpdef inline void calc_actualevaporation_v1(self) noexcept nogil:
740
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.adjustedevaporation * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.thresholdevaporation, self.parameters.derived.smoothparevaporation )
741
+ cpdef inline void calc_outflow_v5(self) noexcept nogil:
742
+ self.sequences.fluxes.outflow = self.sequences.fluxes.freedischarge + self.sequences.fluxes.forceddischarge
743
+ cpdef inline void update_watervolume_v1(self) noexcept nogil:
744
+ 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 )
745
+ cpdef inline void pass_outflow_v1(self) noexcept nogil:
746
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.outflow)
747
+ cpdef inline void pick_loggedouterwaterlevel(self) noexcept nogil:
748
+ self.sequences.logs.loggedouterwaterlevel[0] = self.sequences.receivers.owl[0]
749
+ cpdef inline void pick_loggedremotewaterlevel(self) noexcept nogil:
750
+ self.sequences.logs.loggedremotewaterlevel[0] = self.sequences.receivers.rwl[0]
751
+ cpdef inline void calc_precipitation(self) noexcept nogil:
752
+ if self.precipmodel is None:
753
+ self.sequences.fluxes.precipitation = 0.0
754
+ elif self.precipmodel_typeid == 2:
755
+ (<masterinterface.MasterInterface>self.precipmodel).determine_precipitation()
756
+ self.sequences.fluxes.precipitation = (<masterinterface.MasterInterface>self.precipmodel).get_precipitation(0)
757
+ cpdef inline void calc_potentialevaporation(self) noexcept nogil:
758
+ if self.pemodel is None:
759
+ self.sequences.fluxes.potentialevaporation = 0.0
760
+ elif self.pemodel_typeid == 1:
761
+ (<masterinterface.MasterInterface>self.pemodel).determine_potentialevapotranspiration()
762
+ self.sequences.fluxes.potentialevaporation = (<masterinterface.MasterInterface>self.pemodel).get_potentialevapotranspiration(0)
763
+ cpdef inline void calc_adjustedevaporation(self) noexcept nogil:
764
+ cdef double d_old
765
+ cdef double d_new
766
+ cdef double d_weight
767
+ d_weight = self.parameters.control.weightevaporation
768
+ d_new = self.parameters.derived.inputfactor * self.parameters.control.correctionevaporation * self.sequences.fluxes.potentialevaporation
769
+ d_old = self.sequences.logs.loggedadjustedevaporation[0]
770
+ self.sequences.fluxes.adjustedevaporation = d_weight * d_new + (1.0 - d_weight) * d_old
771
+ self.sequences.logs.loggedadjustedevaporation[0] = self.sequences.fluxes.adjustedevaporation
772
+ cpdef inline void calc_adjustedprecipitation(self) noexcept nogil:
773
+ self.sequences.fluxes.adjustedprecipitation = ( self.parameters.derived.inputfactor * self.parameters.control.correctionprecipitation * self.sequences.fluxes.precipitation )
774
+ cpdef inline void pic_inflow(self) noexcept nogil:
775
+ cdef numpy.int64_t idx
776
+ self.sequences.fluxes.inflow = 0.0
777
+ for idx in range(self.sequences.inlets.len_q):
778
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.q[idx][0])
779
+ cpdef inline void calc_waterlevel(self) noexcept nogil:
780
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
781
+ self.parameters.control.watervolume2waterlevel.calculate_values()
782
+ self.sequences.factors.waterlevel = self.parameters.control.watervolume2waterlevel.outputs[0]
783
+ cpdef inline void calc_outerwaterlevel(self) noexcept nogil:
784
+ self.sequences.factors.outerwaterlevel = self.sequences.logs.loggedouterwaterlevel[0]
785
+ cpdef inline void calc_remotewaterlevel(self) noexcept nogil:
786
+ self.sequences.factors.remotewaterlevel = self.sequences.logs.loggedremotewaterlevel[0]
787
+ cpdef inline void calc_waterleveldifference(self) noexcept nogil:
788
+ self.sequences.factors.waterleveldifference = self.sequences.factors.waterlevel - self.sequences.factors.outerwaterlevel
789
+ cpdef inline void calc_effectivewaterleveldifference(self) noexcept nogil:
790
+ cdef double ho
791
+ cdef double hi
792
+ hi = smoothutils.smooth_max1( self.sequences.factors.waterlevel, self.parameters.control.crestlevel, self.parameters.derived.crestlevelsmoothpar )
793
+ ho = smoothutils.smooth_max1( self.sequences.factors.outerwaterlevel, self.parameters.control.crestlevel, self.parameters.derived.crestlevelsmoothpar )
794
+ self.sequences.factors.effectivewaterleveldifference = hi - ho
795
+ cpdef inline void calc_maxforceddischarge(self) noexcept nogil:
796
+ cdef numpy.int64_t toy
797
+ self.parameters.control.waterleveldifference2maxforceddischarge.inputs[0] = self.sequences.factors.waterleveldifference
798
+ toy: int = self.parameters.derived.toy[self.idx_sim]
799
+ self.parameters.control.waterleveldifference2maxforceddischarge.calculate_values(toy)
800
+ self.sequences.fluxes.maxforceddischarge = self.parameters.control.waterleveldifference2maxforceddischarge.outputs[0]
801
+ cpdef inline void calc_maxfreedischarge(self) noexcept nogil:
802
+ cdef numpy.int64_t toy
803
+ self.parameters.control.waterleveldifference2maxfreedischarge.inputs[0] = ( self.sequences.factors.effectivewaterleveldifference )
804
+ toy: int = self.parameters.derived.toy[self.idx_sim]
805
+ self.parameters.control.waterleveldifference2maxfreedischarge.calculate_values(toy)
806
+ self.sequences.fluxes.maxfreedischarge = self.parameters.control.waterleveldifference2maxfreedischarge.outputs[0]
807
+ cpdef inline void calc_forceddischarge(self) noexcept nogil:
808
+ cdef double r2
809
+ cdef double r1
810
+ r1 = smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelmaximumthreshold, self.parameters.derived.waterlevelmaximumsmoothpar, )
811
+ r2 = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
812
+ if self.sequences.fluxes.maxforceddischarge >= 0.0:
813
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * r1 * (1.0 - r2)
814
+ else:
815
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * (1.0 - r1) * r2
816
+ cpdef inline void calc_freedischarge(self) noexcept nogil:
817
+ cdef double q_trimmed
818
+ cdef double w
819
+ w = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
820
+ q_trimmed = -smoothutils.smooth_logistic2( -self.sequences.fluxes.maxfreedischarge, self.parameters.derived.dischargesmoothpar )
821
+ self.sequences.fluxes.freedischarge = w * q_trimmed + (1.0 - w) * self.sequences.fluxes.maxfreedischarge
822
+ cpdef inline void calc_actualevaporation(self) noexcept nogil:
823
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.adjustedevaporation * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.thresholdevaporation, self.parameters.derived.smoothparevaporation )
824
+ cpdef inline void calc_outflow(self) noexcept nogil:
825
+ self.sequences.fluxes.outflow = self.sequences.fluxes.freedischarge + self.sequences.fluxes.forceddischarge
826
+ cpdef inline void update_watervolume(self) noexcept nogil:
827
+ 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 )
828
+ cpdef inline void pass_outflow(self) noexcept nogil:
829
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.outflow)