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,724 @@
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
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
128
+ cdef numpy.int64_t k
129
+ if self._waterlevel_diskflag_writing:
130
+ self._waterlevel_ncarray[0] = self.waterlevel
131
+ if self._waterlevel_ramflag:
132
+ self._waterlevel_array[idx] = self.waterlevel
133
+ if self._outerwaterlevel_diskflag_writing:
134
+ self._outerwaterlevel_ncarray[0] = self.outerwaterlevel
135
+ if self._outerwaterlevel_ramflag:
136
+ self._outerwaterlevel_array[idx] = self.outerwaterlevel
137
+ if self._remotewaterlevel_diskflag_writing:
138
+ self._remotewaterlevel_ncarray[0] = self.remotewaterlevel
139
+ if self._remotewaterlevel_ramflag:
140
+ self._remotewaterlevel_array[idx] = self.remotewaterlevel
141
+ if self._waterleveldifference_diskflag_writing:
142
+ self._waterleveldifference_ncarray[0] = self.waterleveldifference
143
+ if self._waterleveldifference_ramflag:
144
+ self._waterleveldifference_array[idx] = self.waterleveldifference
145
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
146
+ if name == "waterlevel":
147
+ self._waterlevel_outputpointer = value.p_value
148
+ if name == "outerwaterlevel":
149
+ self._outerwaterlevel_outputpointer = value.p_value
150
+ if name == "remotewaterlevel":
151
+ self._remotewaterlevel_outputpointer = value.p_value
152
+ if name == "waterleveldifference":
153
+ self._waterleveldifference_outputpointer = value.p_value
154
+ cpdef inline void update_outputs(self) noexcept nogil:
155
+ if self._waterlevel_outputflag:
156
+ self._waterlevel_outputpointer[0] = self.waterlevel
157
+ if self._outerwaterlevel_outputflag:
158
+ self._outerwaterlevel_outputpointer[0] = self.outerwaterlevel
159
+ if self._remotewaterlevel_outputflag:
160
+ self._remotewaterlevel_outputpointer[0] = self.remotewaterlevel
161
+ if self._waterleveldifference_outputflag:
162
+ self._waterleveldifference_outputpointer[0] = self.waterleveldifference
163
+ @cython.final
164
+ cdef class FluxSequences:
165
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
166
+ cdef numpy.int64_t k
167
+ if self._precipitation_diskflag_reading:
168
+ self.precipitation = self._precipitation_ncarray[0]
169
+ elif self._precipitation_ramflag:
170
+ self.precipitation = self._precipitation_array[idx]
171
+ if self._adjustedprecipitation_diskflag_reading:
172
+ self.adjustedprecipitation = self._adjustedprecipitation_ncarray[0]
173
+ elif self._adjustedprecipitation_ramflag:
174
+ self.adjustedprecipitation = self._adjustedprecipitation_array[idx]
175
+ if self._potentialevaporation_diskflag_reading:
176
+ self.potentialevaporation = self._potentialevaporation_ncarray[0]
177
+ elif self._potentialevaporation_ramflag:
178
+ self.potentialevaporation = self._potentialevaporation_array[idx]
179
+ if self._adjustedevaporation_diskflag_reading:
180
+ self.adjustedevaporation = self._adjustedevaporation_ncarray[0]
181
+ elif self._adjustedevaporation_ramflag:
182
+ self.adjustedevaporation = self._adjustedevaporation_array[idx]
183
+ if self._actualevaporation_diskflag_reading:
184
+ self.actualevaporation = self._actualevaporation_ncarray[0]
185
+ elif self._actualevaporation_ramflag:
186
+ self.actualevaporation = self._actualevaporation_array[idx]
187
+ if self._inflow_diskflag_reading:
188
+ self.inflow = self._inflow_ncarray[0]
189
+ elif self._inflow_ramflag:
190
+ self.inflow = self._inflow_array[idx]
191
+ if self._maxforceddischarge_diskflag_reading:
192
+ self.maxforceddischarge = self._maxforceddischarge_ncarray[0]
193
+ elif self._maxforceddischarge_ramflag:
194
+ self.maxforceddischarge = self._maxforceddischarge_array[idx]
195
+ if self._forceddischarge_diskflag_reading:
196
+ self.forceddischarge = self._forceddischarge_ncarray[0]
197
+ elif self._forceddischarge_ramflag:
198
+ self.forceddischarge = self._forceddischarge_array[idx]
199
+ if self._outflow_diskflag_reading:
200
+ self.outflow = self._outflow_ncarray[0]
201
+ elif self._outflow_ramflag:
202
+ self.outflow = self._outflow_array[idx]
203
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
204
+ cdef numpy.int64_t k
205
+ if self._precipitation_diskflag_writing:
206
+ self._precipitation_ncarray[0] = self.precipitation
207
+ if self._precipitation_ramflag:
208
+ self._precipitation_array[idx] = self.precipitation
209
+ if self._adjustedprecipitation_diskflag_writing:
210
+ self._adjustedprecipitation_ncarray[0] = self.adjustedprecipitation
211
+ if self._adjustedprecipitation_ramflag:
212
+ self._adjustedprecipitation_array[idx] = self.adjustedprecipitation
213
+ if self._potentialevaporation_diskflag_writing:
214
+ self._potentialevaporation_ncarray[0] = self.potentialevaporation
215
+ if self._potentialevaporation_ramflag:
216
+ self._potentialevaporation_array[idx] = self.potentialevaporation
217
+ if self._adjustedevaporation_diskflag_writing:
218
+ self._adjustedevaporation_ncarray[0] = self.adjustedevaporation
219
+ if self._adjustedevaporation_ramflag:
220
+ self._adjustedevaporation_array[idx] = self.adjustedevaporation
221
+ if self._actualevaporation_diskflag_writing:
222
+ self._actualevaporation_ncarray[0] = self.actualevaporation
223
+ if self._actualevaporation_ramflag:
224
+ self._actualevaporation_array[idx] = self.actualevaporation
225
+ if self._inflow_diskflag_writing:
226
+ self._inflow_ncarray[0] = self.inflow
227
+ if self._inflow_ramflag:
228
+ self._inflow_array[idx] = self.inflow
229
+ if self._maxforceddischarge_diskflag_writing:
230
+ self._maxforceddischarge_ncarray[0] = self.maxforceddischarge
231
+ if self._maxforceddischarge_ramflag:
232
+ self._maxforceddischarge_array[idx] = self.maxforceddischarge
233
+ if self._forceddischarge_diskflag_writing:
234
+ self._forceddischarge_ncarray[0] = self.forceddischarge
235
+ if self._forceddischarge_ramflag:
236
+ self._forceddischarge_array[idx] = self.forceddischarge
237
+ if self._outflow_diskflag_writing:
238
+ self._outflow_ncarray[0] = self.outflow
239
+ if self._outflow_ramflag:
240
+ self._outflow_array[idx] = self.outflow
241
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
242
+ if name == "precipitation":
243
+ self._precipitation_outputpointer = value.p_value
244
+ if name == "adjustedprecipitation":
245
+ self._adjustedprecipitation_outputpointer = value.p_value
246
+ if name == "potentialevaporation":
247
+ self._potentialevaporation_outputpointer = value.p_value
248
+ if name == "adjustedevaporation":
249
+ self._adjustedevaporation_outputpointer = value.p_value
250
+ if name == "actualevaporation":
251
+ self._actualevaporation_outputpointer = value.p_value
252
+ if name == "inflow":
253
+ self._inflow_outputpointer = value.p_value
254
+ if name == "maxforceddischarge":
255
+ self._maxforceddischarge_outputpointer = value.p_value
256
+ if name == "forceddischarge":
257
+ self._forceddischarge_outputpointer = value.p_value
258
+ if name == "outflow":
259
+ self._outflow_outputpointer = value.p_value
260
+ cpdef inline void update_outputs(self) noexcept nogil:
261
+ if self._precipitation_outputflag:
262
+ self._precipitation_outputpointer[0] = self.precipitation
263
+ if self._adjustedprecipitation_outputflag:
264
+ self._adjustedprecipitation_outputpointer[0] = self.adjustedprecipitation
265
+ if self._potentialevaporation_outputflag:
266
+ self._potentialevaporation_outputpointer[0] = self.potentialevaporation
267
+ if self._adjustedevaporation_outputflag:
268
+ self._adjustedevaporation_outputpointer[0] = self.adjustedevaporation
269
+ if self._actualevaporation_outputflag:
270
+ self._actualevaporation_outputpointer[0] = self.actualevaporation
271
+ if self._inflow_outputflag:
272
+ self._inflow_outputpointer[0] = self.inflow
273
+ if self._maxforceddischarge_outputflag:
274
+ self._maxforceddischarge_outputpointer[0] = self.maxforceddischarge
275
+ if self._forceddischarge_outputflag:
276
+ self._forceddischarge_outputpointer[0] = self.forceddischarge
277
+ if self._outflow_outputflag:
278
+ self._outflow_outputpointer[0] = self.outflow
279
+ @cython.final
280
+ cdef class StateSequences:
281
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
282
+ cdef numpy.int64_t k
283
+ if self._watervolume_diskflag_reading:
284
+ self.watervolume = self._watervolume_ncarray[0]
285
+ elif self._watervolume_ramflag:
286
+ self.watervolume = self._watervolume_array[idx]
287
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
288
+ cdef numpy.int64_t k
289
+ if self._watervolume_diskflag_writing:
290
+ self._watervolume_ncarray[0] = self.watervolume
291
+ if self._watervolume_ramflag:
292
+ self._watervolume_array[idx] = self.watervolume
293
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
294
+ if name == "watervolume":
295
+ self._watervolume_outputpointer = value.p_value
296
+ cpdef inline void update_outputs(self) noexcept nogil:
297
+ if self._watervolume_outputflag:
298
+ self._watervolume_outputpointer[0] = self.watervolume
299
+ @cython.final
300
+ cdef class LogSequences:
301
+ pass
302
+ @cython.final
303
+ cdef class OutletSequences:
304
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
305
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
306
+ if name == "q":
307
+ self.q = pointer.p_value
308
+ cpdef get_value(self, str name):
309
+ cdef numpy.int64_t idx
310
+ if name == "q":
311
+ return self.q[0]
312
+ cpdef set_value(self, str name, value):
313
+ if name == "q":
314
+ self.q[0] = value
315
+ @cython.final
316
+ cdef class NumConsts:
317
+ pass
318
+ @cython.final
319
+ cdef class NumVars:
320
+ pass
321
+ @cython.final
322
+ cdef class Model:
323
+ def __init__(self):
324
+ super().__init__()
325
+ self.pemodel = None
326
+ self.pemodel_is_mainmodel = False
327
+ self.precipmodel = None
328
+ self.precipmodel_is_mainmodel = False
329
+ def get_pemodel(self) -> masterinterface.MasterInterface | None:
330
+ return self.pemodel
331
+ def set_pemodel(self, pemodel: masterinterface.MasterInterface | None) -> None:
332
+ self.pemodel = pemodel
333
+ def get_precipmodel(self) -> masterinterface.MasterInterface | None:
334
+ return self.precipmodel
335
+ def set_precipmodel(self, precipmodel: masterinterface.MasterInterface | None) -> None:
336
+ self.precipmodel = precipmodel
337
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
338
+ self.idx_sim = idx
339
+ self.reset_reuseflags()
340
+ self.load_data(idx)
341
+ self.update_inlets()
342
+ self.solve()
343
+ self.update_outlets()
344
+ self.update_outputs()
345
+ cpdef void reset_reuseflags(self) noexcept nogil:
346
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
347
+ self.pemodel.reset_reuseflags()
348
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
349
+ self.precipmodel.reset_reuseflags()
350
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
351
+ self.idx_sim = idx
352
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
353
+ self.pemodel.load_data(idx)
354
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
355
+ self.precipmodel.load_data(idx)
356
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
357
+ self.idx_sim = idx
358
+ self.sequences.factors.save_data(idx)
359
+ self.sequences.fluxes.save_data(idx)
360
+ self.sequences.states.save_data(idx)
361
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
362
+ self.pemodel.save_data(idx)
363
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
364
+ self.precipmodel.save_data(idx)
365
+ cpdef void new2old(self) noexcept nogil:
366
+ self.sequences.old_states.watervolume = self.sequences.new_states.watervolume
367
+ if (self.pemodel is not None) and not self.pemodel_is_mainmodel:
368
+ self.pemodel.new2old()
369
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
370
+ self.precipmodel.new2old()
371
+ cpdef inline void update_inlets(self) noexcept nogil:
372
+ self.calc_precipitation_v1()
373
+ self.calc_potentialevaporation_v1()
374
+ self.calc_adjustedevaporation_v1()
375
+ cpdef inline void update_outlets(self) noexcept nogil:
376
+ self.calc_waterlevel_v1()
377
+ self.calc_outerwaterlevel_v1()
378
+ self.calc_remotewaterlevel_v1()
379
+ self.pass_outflow_v1()
380
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
381
+ self.idx_sim = idx
382
+ self.pick_loggedouterwaterlevel_v1()
383
+ self.pick_loggedremotewaterlevel_v1()
384
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
385
+ self.idx_sim = idx
386
+ pass
387
+ cpdef inline void update_outputs(self) noexcept nogil:
388
+ self.sequences.factors.update_outputs()
389
+ self.sequences.fluxes.update_outputs()
390
+ self.sequences.states.update_outputs()
391
+ cpdef inline void solve(self) noexcept nogil:
392
+ cdef numpy.int64_t decrease_dt
393
+ self.numvars.use_relerror = not isnan( self.parameters.solver.relerrormax )
394
+ self.numvars.t0, self.numvars.t1 = 0.0, 1.0
395
+ self.numvars.dt_est = 1.0 * self.parameters.solver.reldtmax
396
+ self.numvars.f0_ready = False
397
+ self.reset_sum_fluxes()
398
+ while self.numvars.t0 < self.numvars.t1 - 1e-14:
399
+ self.numvars.last_abserror = inf
400
+ self.numvars.last_relerror = inf
401
+ 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), )
402
+ if not self.numvars.f0_ready:
403
+ self.calculate_single_terms()
404
+ self.numvars.idx_method = 0
405
+ self.numvars.idx_stage = 0
406
+ self.set_point_fluxes()
407
+ self.set_point_states()
408
+ self.set_result_states()
409
+ for self.numvars.idx_method in range(1, self.numconsts.nmb_methods + 1):
410
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method):
411
+ self.get_point_states()
412
+ self.calculate_single_terms()
413
+ self.set_point_fluxes()
414
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method + 1):
415
+ self.integrate_fluxes()
416
+ self.calculate_full_terms()
417
+ self.set_point_states()
418
+ self.set_result_fluxes()
419
+ self.set_result_states()
420
+ self.calculate_error()
421
+ self.extrapolate_error()
422
+ if self.numvars.idx_method == 1:
423
+ continue
424
+ if (self.numvars.abserror <= self.parameters.solver.abserrormax) or ( self.numvars.relerror <= self.parameters.solver.relerrormax ):
425
+ self.numvars.dt_est = self.numconsts.dt_increase * self.numvars.dt
426
+ self.numvars.f0_ready = False
427
+ self.addup_fluxes()
428
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
429
+ self.new2old()
430
+ break
431
+ decrease_dt = self.numvars.dt > self.parameters.solver.reldtmin
432
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_abserror > self.parameters.solver.abserrormax )
433
+ if self.numvars.use_relerror:
434
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_relerror > self.parameters.solver.relerrormax )
435
+ if decrease_dt:
436
+ self.numvars.f0_ready = True
437
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
438
+ break
439
+ self.numvars.last_abserror = self.numvars.abserror
440
+ self.numvars.last_relerror = self.numvars.relerror
441
+ self.numvars.f0_ready = True
442
+ else:
443
+ if self.numvars.dt <= self.parameters.solver.reldtmin:
444
+ self.numvars.f0_ready = False
445
+ self.addup_fluxes()
446
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
447
+ self.new2old()
448
+ else:
449
+ self.numvars.f0_ready = True
450
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
451
+ self.get_sum_fluxes()
452
+ cpdef inline void calculate_single_terms(self) noexcept nogil:
453
+ self.numvars.nmb_calls = self.numvars.nmb_calls + 1
454
+ self.calc_adjustedprecipitation_v1()
455
+ self.pic_inflow_v1()
456
+ self.calc_waterlevel_v1()
457
+ self.calc_outerwaterlevel_v1()
458
+ self.calc_remotewaterlevel_v1()
459
+ self.calc_waterleveldifference_v1()
460
+ self.calc_maxforceddischarge_v1()
461
+ self.calc_forceddischarge_v1()
462
+ self.calc_actualevaporation_v1()
463
+ self.calc_outflow_v3()
464
+ cpdef inline void calculate_full_terms(self) noexcept nogil:
465
+ self.update_watervolume_v1()
466
+ cpdef inline void get_point_states(self) noexcept nogil:
467
+ self.sequences.states.watervolume = self.sequences.states._watervolume_points[self.numvars.idx_stage]
468
+ cpdef inline void set_point_states(self) noexcept nogil:
469
+ self.sequences.states._watervolume_points[self.numvars.idx_stage] = self.sequences.states.watervolume
470
+ cpdef inline void set_result_states(self) noexcept nogil:
471
+ self.sequences.states._watervolume_results[self.numvars.idx_method] = self.sequences.states.watervolume
472
+ cpdef inline void get_sum_fluxes(self) noexcept nogil:
473
+ self.sequences.fluxes.adjustedprecipitation = self.sequences.fluxes._adjustedprecipitation_sum
474
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes._actualevaporation_sum
475
+ self.sequences.fluxes.inflow = self.sequences.fluxes._inflow_sum
476
+ self.sequences.fluxes.maxforceddischarge = self.sequences.fluxes._maxforceddischarge_sum
477
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes._forceddischarge_sum
478
+ self.sequences.fluxes.outflow = self.sequences.fluxes._outflow_sum
479
+ cpdef inline void set_point_fluxes(self) noexcept nogil:
480
+ self.sequences.fluxes._adjustedprecipitation_points[self.numvars.idx_stage] = self.sequences.fluxes.adjustedprecipitation
481
+ self.sequences.fluxes._actualevaporation_points[self.numvars.idx_stage] = self.sequences.fluxes.actualevaporation
482
+ self.sequences.fluxes._inflow_points[self.numvars.idx_stage] = self.sequences.fluxes.inflow
483
+ self.sequences.fluxes._maxforceddischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.maxforceddischarge
484
+ self.sequences.fluxes._forceddischarge_points[self.numvars.idx_stage] = self.sequences.fluxes.forceddischarge
485
+ self.sequences.fluxes._outflow_points[self.numvars.idx_stage] = self.sequences.fluxes.outflow
486
+ cpdef inline void set_result_fluxes(self) noexcept nogil:
487
+ self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method] = self.sequences.fluxes.adjustedprecipitation
488
+ self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method] = self.sequences.fluxes.actualevaporation
489
+ self.sequences.fluxes._inflow_results[self.numvars.idx_method] = self.sequences.fluxes.inflow
490
+ self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method] = self.sequences.fluxes.maxforceddischarge
491
+ self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method] = self.sequences.fluxes.forceddischarge
492
+ self.sequences.fluxes._outflow_results[self.numvars.idx_method] = self.sequences.fluxes.outflow
493
+ cpdef inline void integrate_fluxes(self) noexcept nogil:
494
+ cdef numpy.int64_t jdx
495
+ self.sequences.fluxes.adjustedprecipitation = 0.
496
+ for jdx in range(self.numvars.idx_method):
497
+ 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]
498
+ self.sequences.fluxes.actualevaporation = 0.
499
+ for jdx in range(self.numvars.idx_method):
500
+ 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]
501
+ self.sequences.fluxes.inflow = 0.
502
+ for jdx in range(self.numvars.idx_method):
503
+ 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]
504
+ self.sequences.fluxes.maxforceddischarge = 0.
505
+ for jdx in range(self.numvars.idx_method):
506
+ 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]
507
+ self.sequences.fluxes.forceddischarge = 0.
508
+ for jdx in range(self.numvars.idx_method):
509
+ 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]
510
+ self.sequences.fluxes.outflow = 0.
511
+ for jdx in range(self.numvars.idx_method):
512
+ 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]
513
+ cpdef inline void reset_sum_fluxes(self) noexcept nogil:
514
+ self.sequences.fluxes._adjustedprecipitation_sum = 0.
515
+ self.sequences.fluxes._actualevaporation_sum = 0.
516
+ self.sequences.fluxes._inflow_sum = 0.
517
+ self.sequences.fluxes._maxforceddischarge_sum = 0.
518
+ self.sequences.fluxes._forceddischarge_sum = 0.
519
+ self.sequences.fluxes._outflow_sum = 0.
520
+ cpdef inline void addup_fluxes(self) noexcept nogil:
521
+ self.sequences.fluxes._adjustedprecipitation_sum = self.sequences.fluxes._adjustedprecipitation_sum + self.sequences.fluxes.adjustedprecipitation
522
+ self.sequences.fluxes._actualevaporation_sum = self.sequences.fluxes._actualevaporation_sum + self.sequences.fluxes.actualevaporation
523
+ self.sequences.fluxes._inflow_sum = self.sequences.fluxes._inflow_sum + self.sequences.fluxes.inflow
524
+ self.sequences.fluxes._maxforceddischarge_sum = self.sequences.fluxes._maxforceddischarge_sum + self.sequences.fluxes.maxforceddischarge
525
+ self.sequences.fluxes._forceddischarge_sum = self.sequences.fluxes._forceddischarge_sum + self.sequences.fluxes.forceddischarge
526
+ self.sequences.fluxes._outflow_sum = self.sequences.fluxes._outflow_sum + self.sequences.fluxes.outflow
527
+ cpdef inline void calculate_error(self) noexcept nogil:
528
+ cdef double abserror
529
+ self.numvars.abserror = 0.
530
+ if self.numvars.use_relerror:
531
+ self.numvars.relerror = 0.
532
+ else:
533
+ self.numvars.relerror = inf
534
+ abserror = fabs(self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method]-self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method-1])
535
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
536
+ if self.numvars.use_relerror:
537
+ if self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method] == 0.:
538
+ self.numvars.relerror = inf
539
+ else:
540
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._adjustedprecipitation_results[self.numvars.idx_method]))
541
+ abserror = fabs(self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method]-self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method-1])
542
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
543
+ if self.numvars.use_relerror:
544
+ if self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method] == 0.:
545
+ self.numvars.relerror = inf
546
+ else:
547
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._actualevaporation_results[self.numvars.idx_method]))
548
+ abserror = fabs(self.sequences.fluxes._inflow_results[self.numvars.idx_method]-self.sequences.fluxes._inflow_results[self.numvars.idx_method-1])
549
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
550
+ if self.numvars.use_relerror:
551
+ if self.sequences.fluxes._inflow_results[self.numvars.idx_method] == 0.:
552
+ self.numvars.relerror = inf
553
+ else:
554
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._inflow_results[self.numvars.idx_method]))
555
+ abserror = fabs(self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method]-self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method-1])
556
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
557
+ if self.numvars.use_relerror:
558
+ if self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method] == 0.:
559
+ self.numvars.relerror = inf
560
+ else:
561
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._maxforceddischarge_results[self.numvars.idx_method]))
562
+ abserror = fabs(self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method]-self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method-1])
563
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
564
+ if self.numvars.use_relerror:
565
+ if self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method] == 0.:
566
+ self.numvars.relerror = inf
567
+ else:
568
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._forceddischarge_results[self.numvars.idx_method]))
569
+ abserror = fabs(self.sequences.fluxes._outflow_results[self.numvars.idx_method]-self.sequences.fluxes._outflow_results[self.numvars.idx_method-1])
570
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
571
+ if self.numvars.use_relerror:
572
+ if self.sequences.fluxes._outflow_results[self.numvars.idx_method] == 0.:
573
+ self.numvars.relerror = inf
574
+ else:
575
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._outflow_results[self.numvars.idx_method]))
576
+ cpdef inline void extrapolate_error(self) noexcept nogil:
577
+ if self.numvars.abserror <= 0.0:
578
+ self.numvars.extrapolated_abserror = 0.0
579
+ self.numvars.extrapolated_relerror = 0.0
580
+ else:
581
+ if self.numvars.idx_method > 2:
582
+ 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) )
583
+ else:
584
+ self.numvars.extrapolated_abserror = -999.9
585
+ if self.numvars.use_relerror:
586
+ if self.numvars.idx_method > 2:
587
+ if isinf(self.numvars.relerror):
588
+ self.numvars.extrapolated_relerror = inf
589
+ else:
590
+ 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) )
591
+ else:
592
+ self.numvars.extrapolated_relerror = -999.9
593
+ else:
594
+ self.numvars.extrapolated_relerror = inf
595
+ cpdef inline void pick_loggedouterwaterlevel_v1(self) noexcept nogil:
596
+ self.sequences.logs.loggedouterwaterlevel[0] = self.sequences.receivers.owl[0]
597
+ cpdef inline void pick_loggedremotewaterlevel_v1(self) noexcept nogil:
598
+ self.sequences.logs.loggedremotewaterlevel[0] = self.sequences.receivers.rwl[0]
599
+ cpdef inline void calc_precipitation_v1(self) noexcept nogil:
600
+ if self.precipmodel is None:
601
+ self.sequences.fluxes.precipitation = 0.0
602
+ elif self.precipmodel_typeid == 2:
603
+ (<masterinterface.MasterInterface>self.precipmodel).determine_precipitation()
604
+ self.sequences.fluxes.precipitation = (<masterinterface.MasterInterface>self.precipmodel).get_precipitation(0)
605
+ cpdef inline void calc_potentialevaporation_v1(self) noexcept nogil:
606
+ if self.pemodel is None:
607
+ self.sequences.fluxes.potentialevaporation = 0.0
608
+ elif self.pemodel_typeid == 1:
609
+ (<masterinterface.MasterInterface>self.pemodel).determine_potentialevapotranspiration()
610
+ self.sequences.fluxes.potentialevaporation = (<masterinterface.MasterInterface>self.pemodel).get_potentialevapotranspiration(0)
611
+ cpdef inline void calc_adjustedevaporation_v1(self) noexcept nogil:
612
+ cdef double d_old
613
+ cdef double d_new
614
+ cdef double d_weight
615
+ d_weight = self.parameters.control.weightevaporation
616
+ d_new = self.parameters.derived.inputfactor * self.parameters.control.correctionevaporation * self.sequences.fluxes.potentialevaporation
617
+ d_old = self.sequences.logs.loggedadjustedevaporation[0]
618
+ self.sequences.fluxes.adjustedevaporation = d_weight * d_new + (1.0 - d_weight) * d_old
619
+ self.sequences.logs.loggedadjustedevaporation[0] = self.sequences.fluxes.adjustedevaporation
620
+ cpdef inline void calc_adjustedprecipitation_v1(self) noexcept nogil:
621
+ self.sequences.fluxes.adjustedprecipitation = ( self.parameters.derived.inputfactor * self.parameters.control.correctionprecipitation * self.sequences.fluxes.precipitation )
622
+ cpdef inline void pic_inflow_v1(self) noexcept nogil:
623
+ cdef numpy.int64_t idx
624
+ self.sequences.fluxes.inflow = 0.0
625
+ for idx in range(self.sequences.inlets.len_q):
626
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.q[idx][0])
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_outerwaterlevel_v1(self) noexcept nogil:
632
+ self.sequences.factors.outerwaterlevel = self.sequences.logs.loggedouterwaterlevel[0]
633
+ cpdef inline void calc_remotewaterlevel_v1(self) noexcept nogil:
634
+ self.sequences.factors.remotewaterlevel = self.sequences.logs.loggedremotewaterlevel[0]
635
+ cpdef inline void calc_waterleveldifference_v1(self) noexcept nogil:
636
+ self.sequences.factors.waterleveldifference = self.sequences.factors.waterlevel - self.sequences.factors.outerwaterlevel
637
+ cpdef inline void calc_maxforceddischarge_v1(self) noexcept nogil:
638
+ cdef numpy.int64_t toy
639
+ self.parameters.control.waterleveldifference2maxforceddischarge.inputs[0] = self.sequences.factors.waterleveldifference
640
+ toy: int = self.parameters.derived.toy[self.idx_sim]
641
+ self.parameters.control.waterleveldifference2maxforceddischarge.calculate_values(toy)
642
+ self.sequences.fluxes.maxforceddischarge = self.parameters.control.waterleveldifference2maxforceddischarge.outputs[0]
643
+ cpdef inline void calc_forceddischarge_v1(self) noexcept nogil:
644
+ cdef double r2
645
+ cdef double r1
646
+ r1 = smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelmaximumthreshold, self.parameters.derived.waterlevelmaximumsmoothpar, )
647
+ r2 = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
648
+ if self.sequences.fluxes.maxforceddischarge >= 0.0:
649
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * r1 * (1.0 - r2)
650
+ else:
651
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * (1.0 - r1) * r2
652
+ cpdef inline void calc_actualevaporation_v1(self) noexcept nogil:
653
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.adjustedevaporation * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.thresholdevaporation, self.parameters.derived.smoothparevaporation )
654
+ cpdef inline void calc_outflow_v3(self) noexcept nogil:
655
+ self.sequences.fluxes.outflow = self.sequences.fluxes.forceddischarge
656
+ cpdef inline void update_watervolume_v1(self) noexcept nogil:
657
+ 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 )
658
+ cpdef inline void pass_outflow_v1(self) noexcept nogil:
659
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.outflow)
660
+ cpdef inline void pick_loggedouterwaterlevel(self) noexcept nogil:
661
+ self.sequences.logs.loggedouterwaterlevel[0] = self.sequences.receivers.owl[0]
662
+ cpdef inline void pick_loggedremotewaterlevel(self) noexcept nogil:
663
+ self.sequences.logs.loggedremotewaterlevel[0] = self.sequences.receivers.rwl[0]
664
+ cpdef inline void calc_precipitation(self) noexcept nogil:
665
+ if self.precipmodel is None:
666
+ self.sequences.fluxes.precipitation = 0.0
667
+ elif self.precipmodel_typeid == 2:
668
+ (<masterinterface.MasterInterface>self.precipmodel).determine_precipitation()
669
+ self.sequences.fluxes.precipitation = (<masterinterface.MasterInterface>self.precipmodel).get_precipitation(0)
670
+ cpdef inline void calc_potentialevaporation(self) noexcept nogil:
671
+ if self.pemodel is None:
672
+ self.sequences.fluxes.potentialevaporation = 0.0
673
+ elif self.pemodel_typeid == 1:
674
+ (<masterinterface.MasterInterface>self.pemodel).determine_potentialevapotranspiration()
675
+ self.sequences.fluxes.potentialevaporation = (<masterinterface.MasterInterface>self.pemodel).get_potentialevapotranspiration(0)
676
+ cpdef inline void calc_adjustedevaporation(self) noexcept nogil:
677
+ cdef double d_old
678
+ cdef double d_new
679
+ cdef double d_weight
680
+ d_weight = self.parameters.control.weightevaporation
681
+ d_new = self.parameters.derived.inputfactor * self.parameters.control.correctionevaporation * self.sequences.fluxes.potentialevaporation
682
+ d_old = self.sequences.logs.loggedadjustedevaporation[0]
683
+ self.sequences.fluxes.adjustedevaporation = d_weight * d_new + (1.0 - d_weight) * d_old
684
+ self.sequences.logs.loggedadjustedevaporation[0] = self.sequences.fluxes.adjustedevaporation
685
+ cpdef inline void calc_adjustedprecipitation(self) noexcept nogil:
686
+ self.sequences.fluxes.adjustedprecipitation = ( self.parameters.derived.inputfactor * self.parameters.control.correctionprecipitation * self.sequences.fluxes.precipitation )
687
+ cpdef inline void pic_inflow(self) noexcept nogil:
688
+ cdef numpy.int64_t idx
689
+ self.sequences.fluxes.inflow = 0.0
690
+ for idx in range(self.sequences.inlets.len_q):
691
+ self.sequences.fluxes.inflow = self.sequences.fluxes.inflow + (self.sequences.inlets.q[idx][0])
692
+ cpdef inline void calc_waterlevel(self) noexcept nogil:
693
+ self.parameters.control.watervolume2waterlevel.inputs[0] = self.sequences.new_states.watervolume
694
+ self.parameters.control.watervolume2waterlevel.calculate_values()
695
+ self.sequences.factors.waterlevel = self.parameters.control.watervolume2waterlevel.outputs[0]
696
+ cpdef inline void calc_outerwaterlevel(self) noexcept nogil:
697
+ self.sequences.factors.outerwaterlevel = self.sequences.logs.loggedouterwaterlevel[0]
698
+ cpdef inline void calc_remotewaterlevel(self) noexcept nogil:
699
+ self.sequences.factors.remotewaterlevel = self.sequences.logs.loggedremotewaterlevel[0]
700
+ cpdef inline void calc_waterleveldifference(self) noexcept nogil:
701
+ self.sequences.factors.waterleveldifference = self.sequences.factors.waterlevel - self.sequences.factors.outerwaterlevel
702
+ cpdef inline void calc_maxforceddischarge(self) noexcept nogil:
703
+ cdef numpy.int64_t toy
704
+ self.parameters.control.waterleveldifference2maxforceddischarge.inputs[0] = self.sequences.factors.waterleveldifference
705
+ toy: int = self.parameters.derived.toy[self.idx_sim]
706
+ self.parameters.control.waterleveldifference2maxforceddischarge.calculate_values(toy)
707
+ self.sequences.fluxes.maxforceddischarge = self.parameters.control.waterleveldifference2maxforceddischarge.outputs[0]
708
+ cpdef inline void calc_forceddischarge(self) noexcept nogil:
709
+ cdef double r2
710
+ cdef double r1
711
+ r1 = smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.waterlevelmaximumthreshold, self.parameters.derived.waterlevelmaximumsmoothpar, )
712
+ r2 = smoothutils.smooth_logistic1( self.sequences.factors.remotewaterlevel - self.parameters.control.remotewaterlevelmaximumthreshold, self.parameters.derived.remotewaterlevelmaximumsmoothpar, )
713
+ if self.sequences.fluxes.maxforceddischarge >= 0.0:
714
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * r1 * (1.0 - r2)
715
+ else:
716
+ self.sequences.fluxes.forceddischarge = self.sequences.fluxes.maxforceddischarge * (1.0 - r1) * r2
717
+ cpdef inline void calc_actualevaporation(self) noexcept nogil:
718
+ self.sequences.fluxes.actualevaporation = self.sequences.fluxes.adjustedevaporation * smoothutils.smooth_logistic1( self.sequences.factors.waterlevel - self.parameters.control.thresholdevaporation, self.parameters.derived.smoothparevaporation )
719
+ cpdef inline void calc_outflow(self) noexcept nogil:
720
+ self.sequences.fluxes.outflow = self.sequences.fluxes.forceddischarge
721
+ cpdef inline void update_watervolume(self) noexcept nogil:
722
+ 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 )
723
+ cpdef inline void pass_outflow(self) noexcept nogil:
724
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.outflow)