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