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,584 @@
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 Sequences:
46
+ pass
47
+ @cython.final
48
+ cdef class FactorSequences:
49
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
50
+ cdef numpy.int64_t jdx0
51
+ cdef numpy.int64_t k
52
+ if self._airtemperature_diskflag_reading:
53
+ k = 0
54
+ for jdx0 in range(self._airtemperature_length_0):
55
+ self.airtemperature[jdx0] = self._airtemperature_ncarray[k]
56
+ k += 1
57
+ elif self._airtemperature_ramflag:
58
+ for jdx0 in range(self._airtemperature_length_0):
59
+ self.airtemperature[jdx0] = self._airtemperature_array[idx, jdx0]
60
+ if self._interceptedwater_diskflag_reading:
61
+ k = 0
62
+ for jdx0 in range(self._interceptedwater_length_0):
63
+ self.interceptedwater[jdx0] = self._interceptedwater_ncarray[k]
64
+ k += 1
65
+ elif self._interceptedwater_ramflag:
66
+ for jdx0 in range(self._interceptedwater_length_0):
67
+ self.interceptedwater[jdx0] = self._interceptedwater_array[idx, jdx0]
68
+ if self._soilwater_diskflag_reading:
69
+ k = 0
70
+ for jdx0 in range(self._soilwater_length_0):
71
+ self.soilwater[jdx0] = self._soilwater_ncarray[k]
72
+ k += 1
73
+ elif self._soilwater_ramflag:
74
+ for jdx0 in range(self._soilwater_length_0):
75
+ self.soilwater[jdx0] = self._soilwater_array[idx, jdx0]
76
+ if self._snowcover_diskflag_reading:
77
+ k = 0
78
+ for jdx0 in range(self._snowcover_length_0):
79
+ self.snowcover[jdx0] = self._snowcover_ncarray[k]
80
+ k += 1
81
+ elif self._snowcover_ramflag:
82
+ for jdx0 in range(self._snowcover_length_0):
83
+ self.snowcover[jdx0] = self._snowcover_array[idx, jdx0]
84
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
85
+ cdef numpy.int64_t jdx0
86
+ cdef numpy.int64_t k
87
+ if self._airtemperature_diskflag_writing:
88
+ k = 0
89
+ for jdx0 in range(self._airtemperature_length_0):
90
+ self._airtemperature_ncarray[k] = self.airtemperature[jdx0]
91
+ k += 1
92
+ if self._airtemperature_ramflag:
93
+ for jdx0 in range(self._airtemperature_length_0):
94
+ self._airtemperature_array[idx, jdx0] = self.airtemperature[jdx0]
95
+ if self._interceptedwater_diskflag_writing:
96
+ k = 0
97
+ for jdx0 in range(self._interceptedwater_length_0):
98
+ self._interceptedwater_ncarray[k] = self.interceptedwater[jdx0]
99
+ k += 1
100
+ if self._interceptedwater_ramflag:
101
+ for jdx0 in range(self._interceptedwater_length_0):
102
+ self._interceptedwater_array[idx, jdx0] = self.interceptedwater[jdx0]
103
+ if self._soilwater_diskflag_writing:
104
+ k = 0
105
+ for jdx0 in range(self._soilwater_length_0):
106
+ self._soilwater_ncarray[k] = self.soilwater[jdx0]
107
+ k += 1
108
+ if self._soilwater_ramflag:
109
+ for jdx0 in range(self._soilwater_length_0):
110
+ self._soilwater_array[idx, jdx0] = self.soilwater[jdx0]
111
+ if self._snowcover_diskflag_writing:
112
+ k = 0
113
+ for jdx0 in range(self._snowcover_length_0):
114
+ self._snowcover_ncarray[k] = self.snowcover[jdx0]
115
+ k += 1
116
+ if self._snowcover_ramflag:
117
+ for jdx0 in range(self._snowcover_length_0):
118
+ self._snowcover_array[idx, jdx0] = self.snowcover[jdx0]
119
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
120
+ pass
121
+ cpdef inline void update_outputs(self) noexcept nogil:
122
+ pass
123
+ @cython.final
124
+ cdef class FluxSequences:
125
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
126
+ cdef numpy.int64_t jdx0
127
+ cdef numpy.int64_t k
128
+ if self._potentialinterceptionevaporation_diskflag_reading:
129
+ k = 0
130
+ for jdx0 in range(self._potentialinterceptionevaporation_length_0):
131
+ self.potentialinterceptionevaporation[jdx0] = self._potentialinterceptionevaporation_ncarray[k]
132
+ k += 1
133
+ elif self._potentialinterceptionevaporation_ramflag:
134
+ for jdx0 in range(self._potentialinterceptionevaporation_length_0):
135
+ self.potentialinterceptionevaporation[jdx0] = self._potentialinterceptionevaporation_array[idx, jdx0]
136
+ if self._potentialsoilevapotranspiration_diskflag_reading:
137
+ k = 0
138
+ for jdx0 in range(self._potentialsoilevapotranspiration_length_0):
139
+ self.potentialsoilevapotranspiration[jdx0] = self._potentialsoilevapotranspiration_ncarray[k]
140
+ k += 1
141
+ elif self._potentialsoilevapotranspiration_ramflag:
142
+ for jdx0 in range(self._potentialsoilevapotranspiration_length_0):
143
+ self.potentialsoilevapotranspiration[jdx0] = self._potentialsoilevapotranspiration_array[idx, jdx0]
144
+ if self._potentialwaterevaporation_diskflag_reading:
145
+ k = 0
146
+ for jdx0 in range(self._potentialwaterevaporation_length_0):
147
+ self.potentialwaterevaporation[jdx0] = self._potentialwaterevaporation_ncarray[k]
148
+ k += 1
149
+ elif self._potentialwaterevaporation_ramflag:
150
+ for jdx0 in range(self._potentialwaterevaporation_length_0):
151
+ self.potentialwaterevaporation[jdx0] = self._potentialwaterevaporation_array[idx, jdx0]
152
+ if self._waterevaporation_diskflag_reading:
153
+ k = 0
154
+ for jdx0 in range(self._waterevaporation_length_0):
155
+ self.waterevaporation[jdx0] = self._waterevaporation_ncarray[k]
156
+ k += 1
157
+ elif self._waterevaporation_ramflag:
158
+ for jdx0 in range(self._waterevaporation_length_0):
159
+ self.waterevaporation[jdx0] = self._waterevaporation_array[idx, jdx0]
160
+ if self._interceptionevaporation_diskflag_reading:
161
+ k = 0
162
+ for jdx0 in range(self._interceptionevaporation_length_0):
163
+ self.interceptionevaporation[jdx0] = self._interceptionevaporation_ncarray[k]
164
+ k += 1
165
+ elif self._interceptionevaporation_ramflag:
166
+ for jdx0 in range(self._interceptionevaporation_length_0):
167
+ self.interceptionevaporation[jdx0] = self._interceptionevaporation_array[idx, jdx0]
168
+ if self._soilevapotranspiration_diskflag_reading:
169
+ k = 0
170
+ for jdx0 in range(self._soilevapotranspiration_length_0):
171
+ self.soilevapotranspiration[jdx0] = self._soilevapotranspiration_ncarray[k]
172
+ k += 1
173
+ elif self._soilevapotranspiration_ramflag:
174
+ for jdx0 in range(self._soilevapotranspiration_length_0):
175
+ self.soilevapotranspiration[jdx0] = self._soilevapotranspiration_array[idx, jdx0]
176
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
177
+ cdef numpy.int64_t jdx0
178
+ cdef numpy.int64_t k
179
+ if self._potentialinterceptionevaporation_diskflag_writing:
180
+ k = 0
181
+ for jdx0 in range(self._potentialinterceptionevaporation_length_0):
182
+ self._potentialinterceptionevaporation_ncarray[k] = self.potentialinterceptionevaporation[jdx0]
183
+ k += 1
184
+ if self._potentialinterceptionevaporation_ramflag:
185
+ for jdx0 in range(self._potentialinterceptionevaporation_length_0):
186
+ self._potentialinterceptionevaporation_array[idx, jdx0] = self.potentialinterceptionevaporation[jdx0]
187
+ if self._potentialsoilevapotranspiration_diskflag_writing:
188
+ k = 0
189
+ for jdx0 in range(self._potentialsoilevapotranspiration_length_0):
190
+ self._potentialsoilevapotranspiration_ncarray[k] = self.potentialsoilevapotranspiration[jdx0]
191
+ k += 1
192
+ if self._potentialsoilevapotranspiration_ramflag:
193
+ for jdx0 in range(self._potentialsoilevapotranspiration_length_0):
194
+ self._potentialsoilevapotranspiration_array[idx, jdx0] = self.potentialsoilevapotranspiration[jdx0]
195
+ if self._potentialwaterevaporation_diskflag_writing:
196
+ k = 0
197
+ for jdx0 in range(self._potentialwaterevaporation_length_0):
198
+ self._potentialwaterevaporation_ncarray[k] = self.potentialwaterevaporation[jdx0]
199
+ k += 1
200
+ if self._potentialwaterevaporation_ramflag:
201
+ for jdx0 in range(self._potentialwaterevaporation_length_0):
202
+ self._potentialwaterevaporation_array[idx, jdx0] = self.potentialwaterevaporation[jdx0]
203
+ if self._waterevaporation_diskflag_writing:
204
+ k = 0
205
+ for jdx0 in range(self._waterevaporation_length_0):
206
+ self._waterevaporation_ncarray[k] = self.waterevaporation[jdx0]
207
+ k += 1
208
+ if self._waterevaporation_ramflag:
209
+ for jdx0 in range(self._waterevaporation_length_0):
210
+ self._waterevaporation_array[idx, jdx0] = self.waterevaporation[jdx0]
211
+ if self._interceptionevaporation_diskflag_writing:
212
+ k = 0
213
+ for jdx0 in range(self._interceptionevaporation_length_0):
214
+ self._interceptionevaporation_ncarray[k] = self.interceptionevaporation[jdx0]
215
+ k += 1
216
+ if self._interceptionevaporation_ramflag:
217
+ for jdx0 in range(self._interceptionevaporation_length_0):
218
+ self._interceptionevaporation_array[idx, jdx0] = self.interceptionevaporation[jdx0]
219
+ if self._soilevapotranspiration_diskflag_writing:
220
+ k = 0
221
+ for jdx0 in range(self._soilevapotranspiration_length_0):
222
+ self._soilevapotranspiration_ncarray[k] = self.soilevapotranspiration[jdx0]
223
+ k += 1
224
+ if self._soilevapotranspiration_ramflag:
225
+ for jdx0 in range(self._soilevapotranspiration_length_0):
226
+ self._soilevapotranspiration_array[idx, jdx0] = self.soilevapotranspiration[jdx0]
227
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
228
+ pass
229
+ cpdef inline void update_outputs(self) noexcept nogil:
230
+ pass
231
+ @cython.final
232
+ cdef class Model(masterinterface.MasterInterface):
233
+ def __init__(self):
234
+ super().__init__()
235
+ self.intercmodel = None
236
+ self.intercmodel_is_mainmodel = False
237
+ self.petmodel = None
238
+ self.petmodel_is_mainmodel = False
239
+ self.snowcovermodel = None
240
+ self.snowcovermodel_is_mainmodel = False
241
+ self.soilwatermodel = None
242
+ self.soilwatermodel_is_mainmodel = False
243
+ self.tempmodel = None
244
+ self.tempmodel_is_mainmodel = False
245
+ def get_intercmodel(self) -> masterinterface.MasterInterface | None:
246
+ return self.intercmodel
247
+ def set_intercmodel(self, intercmodel: masterinterface.MasterInterface | None) -> None:
248
+ self.intercmodel = intercmodel
249
+ def get_petmodel(self) -> masterinterface.MasterInterface | None:
250
+ return self.petmodel
251
+ def set_petmodel(self, petmodel: masterinterface.MasterInterface | None) -> None:
252
+ self.petmodel = petmodel
253
+ def get_snowcovermodel(self) -> masterinterface.MasterInterface | None:
254
+ return self.snowcovermodel
255
+ def set_snowcovermodel(self, snowcovermodel: masterinterface.MasterInterface | None) -> None:
256
+ self.snowcovermodel = snowcovermodel
257
+ def get_soilwatermodel(self) -> masterinterface.MasterInterface | None:
258
+ return self.soilwatermodel
259
+ def set_soilwatermodel(self, soilwatermodel: masterinterface.MasterInterface | None) -> None:
260
+ self.soilwatermodel = soilwatermodel
261
+ def get_tempmodel(self) -> masterinterface.MasterInterface | None:
262
+ return self.tempmodel
263
+ def set_tempmodel(self, tempmodel: masterinterface.MasterInterface | None) -> None:
264
+ self.tempmodel = tempmodel
265
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
266
+ self.idx_sim = idx
267
+ self.reset_reuseflags()
268
+ self.load_data(idx)
269
+ self.run()
270
+ self.update_outputs()
271
+ cpdef void reset_reuseflags(self) noexcept nogil:
272
+ if (self.intercmodel is not None) and not self.intercmodel_is_mainmodel:
273
+ self.intercmodel.reset_reuseflags()
274
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
275
+ self.petmodel.reset_reuseflags()
276
+ if (self.snowcovermodel is not None) and not self.snowcovermodel_is_mainmodel:
277
+ self.snowcovermodel.reset_reuseflags()
278
+ if (self.soilwatermodel is not None) and not self.soilwatermodel_is_mainmodel:
279
+ self.soilwatermodel.reset_reuseflags()
280
+ if (self.tempmodel is not None) and not self.tempmodel_is_mainmodel:
281
+ self.tempmodel.reset_reuseflags()
282
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
283
+ self.idx_sim = idx
284
+ if (self.intercmodel is not None) and not self.intercmodel_is_mainmodel:
285
+ self.intercmodel.load_data(idx)
286
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
287
+ self.petmodel.load_data(idx)
288
+ if (self.snowcovermodel is not None) and not self.snowcovermodel_is_mainmodel:
289
+ self.snowcovermodel.load_data(idx)
290
+ if (self.soilwatermodel is not None) and not self.soilwatermodel_is_mainmodel:
291
+ self.soilwatermodel.load_data(idx)
292
+ if (self.tempmodel is not None) and not self.tempmodel_is_mainmodel:
293
+ self.tempmodel.load_data(idx)
294
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
295
+ self.idx_sim = idx
296
+ self.sequences.factors.save_data(idx)
297
+ self.sequences.fluxes.save_data(idx)
298
+ if (self.intercmodel is not None) and not self.intercmodel_is_mainmodel:
299
+ self.intercmodel.save_data(idx)
300
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
301
+ self.petmodel.save_data(idx)
302
+ if (self.snowcovermodel is not None) and not self.snowcovermodel_is_mainmodel:
303
+ self.snowcovermodel.save_data(idx)
304
+ if (self.soilwatermodel is not None) and not self.soilwatermodel_is_mainmodel:
305
+ self.soilwatermodel.save_data(idx)
306
+ if (self.tempmodel is not None) and not self.tempmodel_is_mainmodel:
307
+ self.tempmodel.save_data(idx)
308
+ cpdef void new2old(self) noexcept nogil:
309
+ if (self.intercmodel is not None) and not self.intercmodel_is_mainmodel:
310
+ self.intercmodel.new2old()
311
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
312
+ self.petmodel.new2old()
313
+ if (self.snowcovermodel is not None) and not self.snowcovermodel_is_mainmodel:
314
+ self.snowcovermodel.new2old()
315
+ if (self.soilwatermodel is not None) and not self.soilwatermodel_is_mainmodel:
316
+ self.soilwatermodel.new2old()
317
+ if (self.tempmodel is not None) and not self.tempmodel_is_mainmodel:
318
+ self.tempmodel.new2old()
319
+ cpdef inline void run(self) noexcept nogil:
320
+ self.determine_interceptionevaporation_v1()
321
+ self.determine_soilevapotranspiration_v1()
322
+ self.determine_waterevaporation_v1()
323
+ cpdef inline void update_inlets(self) noexcept nogil:
324
+ pass
325
+ cpdef inline void update_outlets(self) noexcept nogil:
326
+ pass
327
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
328
+ self.idx_sim = idx
329
+ pass
330
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
331
+ self.idx_sim = idx
332
+ pass
333
+ cpdef inline void update_outputs(self) noexcept nogil:
334
+ pass
335
+ cpdef double get_waterevaporation_v1(self, numpy.int64_t k) noexcept nogil:
336
+ return self.sequences.fluxes.waterevaporation[k]
337
+ cpdef double get_interceptionevaporation_v1(self, numpy.int64_t k) noexcept nogil:
338
+ return self.sequences.fluxes.interceptionevaporation[k]
339
+ cpdef double get_soilevapotranspiration_v1(self, numpy.int64_t k) noexcept nogil:
340
+ return self.sequences.fluxes.soilevapotranspiration[k]
341
+ cpdef inline void calc_airtemperature_v1(self) noexcept nogil:
342
+ if self.tempmodel_typeid == 1:
343
+ self.calc_airtemperature_tempmodel_v1( (<masterinterface.MasterInterface>self.tempmodel) )
344
+ elif self.tempmodel_typeid == 2:
345
+ self.calc_airtemperature_tempmodel_v2( (<masterinterface.MasterInterface>self.tempmodel) )
346
+ cpdef inline void calc_potentialinterceptionevaporation_petmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
347
+ cdef numpy.int64_t k
348
+ submodel.determine_potentialevapotranspiration()
349
+ for k in range(self.parameters.control.nmbhru):
350
+ self.sequences.fluxes.potentialinterceptionevaporation[k] = ( submodel.get_potentialevapotranspiration(k) )
351
+ cpdef inline void calc_potentialinterceptionevaporation_petmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
352
+ cdef numpy.int64_t k
353
+ submodel.determine_potentialinterceptionevaporation()
354
+ for k in range(self.parameters.control.nmbhru):
355
+ self.sequences.fluxes.potentialinterceptionevaporation[k] = ( submodel.get_potentialinterceptionevaporation(k) )
356
+ cpdef inline void calc_potentialinterceptionevaporation_v3(self) noexcept nogil:
357
+ if self.petmodel_typeid == 1:
358
+ self.calc_potentialinterceptionevaporation_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
359
+ elif self.petmodel_typeid == 2:
360
+ self.calc_potentialinterceptionevaporation_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
361
+ cpdef inline void calc_potentialwaterevaporation_petmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
362
+ cdef numpy.int64_t k
363
+ for k in range(self.parameters.control.nmbhru):
364
+ self.sequences.fluxes.potentialwaterevaporation[k] = submodel.get_potentialevapotranspiration( k )
365
+ cpdef inline void calc_potentialwaterevaporation_petmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
366
+ cdef numpy.int64_t k
367
+ submodel.determine_potentialwaterevaporation()
368
+ for k in range(self.parameters.control.nmbhru):
369
+ self.sequences.fluxes.potentialwaterevaporation[k] = submodel.get_potentialwaterevaporation(k)
370
+ cpdef inline void calc_potentialwaterevaporation_v1(self) noexcept nogil:
371
+ if self.petmodel_typeid == 1:
372
+ self.calc_potentialwaterevaporation_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
373
+ elif self.petmodel_typeid == 2:
374
+ self.calc_potentialwaterevaporation_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
375
+ cpdef inline void calc_waterevaporation_v1(self) noexcept nogil:
376
+ cdef numpy.int64_t k
377
+ for k in range(self.parameters.control.nmbhru):
378
+ if self.parameters.control.water[k] and self.sequences.factors.airtemperature[k] > self.parameters.control.temperaturethresholdice[k]:
379
+ self.sequences.fluxes.waterevaporation[k] = self.sequences.fluxes.potentialwaterevaporation[k]
380
+ else:
381
+ self.sequences.fluxes.waterevaporation[k] = 0.0
382
+ cpdef inline void calc_interceptedwater_v1(self) noexcept nogil:
383
+ if self.intercmodel_typeid == 1:
384
+ self.calc_interceptedwater_intercmodel_v1( (<masterinterface.MasterInterface>self.intercmodel) )
385
+ cpdef inline void calc_interceptionevaporation_v1(self) noexcept nogil:
386
+ cdef numpy.int64_t k
387
+ for k in range(self.parameters.control.nmbhru):
388
+ if self.parameters.control.interception[k]:
389
+ self.sequences.fluxes.interceptionevaporation[k] = min( self.sequences.fluxes.potentialinterceptionevaporation[k], self.sequences.factors.interceptedwater[k] )
390
+ else:
391
+ self.sequences.fluxes.interceptionevaporation[k] = 0.0
392
+ cpdef inline void calc_soilwater_v1(self) noexcept nogil:
393
+ if self.soilwatermodel_typeid == 1:
394
+ self.calc_soilwater_soilwatermodel_v1( (<masterinterface.MasterInterface>self.soilwatermodel) )
395
+ cpdef inline void calc_snowcover_v1(self) noexcept nogil:
396
+ if self.snowcovermodel_typeid == 1:
397
+ self.calc_snowcover_snowcovermodel_v1( (<masterinterface.MasterInterface>self.snowcovermodel) )
398
+ cpdef inline void calc_potentialsoilevapotranspiration_petmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
399
+ cdef numpy.int64_t k
400
+ for k in range(self.parameters.control.nmbhru):
401
+ self.sequences.fluxes.potentialsoilevapotranspiration[k] = ( submodel.get_potentialevapotranspiration(k) )
402
+ cpdef inline void calc_potentialsoilevapotranspiration_petmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
403
+ cdef numpy.int64_t k
404
+ submodel.determine_potentialsoilevapotranspiration()
405
+ for k in range(self.parameters.control.nmbhru):
406
+ self.sequences.fluxes.potentialsoilevapotranspiration[k] = ( submodel.get_potentialsoilevapotranspiration(k) )
407
+ cpdef inline void calc_potentialsoilevapotranspiration_v2(self) noexcept nogil:
408
+ if self.petmodel_typeid == 1:
409
+ self.calc_potentialsoilevapotranspiration_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
410
+ elif self.petmodel_typeid == 2:
411
+ self.calc_potentialsoilevapotranspiration_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
412
+ cpdef inline void calc_soilevapotranspiration_v1(self) noexcept nogil:
413
+ cdef double thresh
414
+ cdef numpy.int64_t k
415
+ for k in range(self.parameters.control.nmbhru):
416
+ if self.parameters.control.soil[k]:
417
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.potentialsoilevapotranspiration[k]
418
+ if self.sequences.fluxes.soilevapotranspiration[k] > 0.0:
419
+ if self.sequences.factors.soilwater[k] < 0.0:
420
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
421
+ else:
422
+ thresh = self.parameters.control.soilmoisturelimit[k] * self.parameters.control.maxsoilwater[k]
423
+ if self.sequences.factors.soilwater[k] < thresh:
424
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.soilevapotranspiration[k] * (self.sequences.factors.soilwater[k] / thresh)
425
+ else:
426
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
427
+ cpdef inline void update_soilevapotranspiration_v1(self) noexcept nogil:
428
+ cdef double excess
429
+ cdef double ei
430
+ cdef double ets
431
+ cdef double pet
432
+ cdef double pets
433
+ cdef double pei
434
+ cdef double r
435
+ cdef numpy.int64_t k
436
+ for k in range(self.parameters.control.nmbhru):
437
+ if self.parameters.control.soil[k]:
438
+ r = self.parameters.control.excessreduction[k]
439
+ pei = self.sequences.fluxes.potentialinterceptionevaporation[k]
440
+ pets = self.sequences.fluxes.potentialsoilevapotranspiration[k]
441
+ pet = r * pei + (1.0 - r) * (pei + pets) / 2.0
442
+ ets = self.sequences.fluxes.soilevapotranspiration[k]
443
+ ei = self.sequences.fluxes.interceptionevaporation[k]
444
+ excess = ets + ei - pet
445
+ if (pet >= 0.0) and (excess > 0.0):
446
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.soilevapotranspiration[k] - (r * excess)
447
+ elif (pet < 0.0) and (excess < 0.0):
448
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.soilevapotranspiration[k] - (r * excess)
449
+ else:
450
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
451
+ cpdef inline void update_soilevapotranspiration_v2(self) noexcept nogil:
452
+ cdef numpy.int64_t k
453
+ for k in range(self.parameters.control.nmbhru):
454
+ if self.parameters.control.soil[k] and (self.sequences.factors.snowcover[k] < 1.0):
455
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.soilevapotranspiration[k] * (1.0 - self.sequences.factors.snowcover[k])
456
+ else:
457
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
458
+ cpdef inline void calc_airtemperature_tempmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
459
+ cdef numpy.int64_t k
460
+ for k in range(self.parameters.control.nmbhru):
461
+ self.sequences.factors.airtemperature[k] = submodel.get_temperature(k)
462
+ cpdef inline void calc_airtemperature_tempmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
463
+ cdef numpy.int64_t k
464
+ submodel.determine_temperature()
465
+ for k in range(self.parameters.control.nmbhru):
466
+ self.sequences.factors.airtemperature[k] = submodel.get_temperature(k)
467
+ cpdef inline void calc_interceptedwater_intercmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
468
+ cdef numpy.int64_t k
469
+ for k in range(self.parameters.control.nmbhru):
470
+ self.sequences.factors.interceptedwater[k] = submodel.get_interceptedwater(k)
471
+ cpdef inline void calc_soilwater_soilwatermodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
472
+ cdef numpy.int64_t k
473
+ for k in range(self.parameters.control.nmbhru):
474
+ self.sequences.factors.soilwater[k] = submodel.get_soilwater(k)
475
+ cpdef inline void calc_snowcover_snowcovermodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
476
+ cdef numpy.int64_t k
477
+ for k in range(self.parameters.control.nmbhru):
478
+ self.sequences.factors.snowcover[k] = submodel.get_snowcover(k)
479
+ cpdef double get_waterevaporation(self, numpy.int64_t k) noexcept nogil:
480
+ return self.sequences.fluxes.waterevaporation[k]
481
+ cpdef double get_interceptionevaporation(self, numpy.int64_t k) noexcept nogil:
482
+ return self.sequences.fluxes.interceptionevaporation[k]
483
+ cpdef double get_soilevapotranspiration(self, numpy.int64_t k) noexcept nogil:
484
+ return self.sequences.fluxes.soilevapotranspiration[k]
485
+ cpdef inline void calc_airtemperature(self) noexcept nogil:
486
+ if self.tempmodel_typeid == 1:
487
+ self.calc_airtemperature_tempmodel_v1( (<masterinterface.MasterInterface>self.tempmodel) )
488
+ elif self.tempmodel_typeid == 2:
489
+ self.calc_airtemperature_tempmodel_v2( (<masterinterface.MasterInterface>self.tempmodel) )
490
+ cpdef inline void calc_potentialinterceptionevaporation(self) noexcept nogil:
491
+ if self.petmodel_typeid == 1:
492
+ self.calc_potentialinterceptionevaporation_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
493
+ elif self.petmodel_typeid == 2:
494
+ self.calc_potentialinterceptionevaporation_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
495
+ cpdef inline void calc_potentialwaterevaporation(self) noexcept nogil:
496
+ if self.petmodel_typeid == 1:
497
+ self.calc_potentialwaterevaporation_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
498
+ elif self.petmodel_typeid == 2:
499
+ self.calc_potentialwaterevaporation_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
500
+ cpdef inline void calc_waterevaporation(self) noexcept nogil:
501
+ cdef numpy.int64_t k
502
+ for k in range(self.parameters.control.nmbhru):
503
+ if self.parameters.control.water[k] and self.sequences.factors.airtemperature[k] > self.parameters.control.temperaturethresholdice[k]:
504
+ self.sequences.fluxes.waterevaporation[k] = self.sequences.fluxes.potentialwaterevaporation[k]
505
+ else:
506
+ self.sequences.fluxes.waterevaporation[k] = 0.0
507
+ cpdef inline void calc_interceptedwater(self) noexcept nogil:
508
+ if self.intercmodel_typeid == 1:
509
+ self.calc_interceptedwater_intercmodel_v1( (<masterinterface.MasterInterface>self.intercmodel) )
510
+ cpdef inline void calc_interceptionevaporation(self) noexcept nogil:
511
+ cdef numpy.int64_t k
512
+ for k in range(self.parameters.control.nmbhru):
513
+ if self.parameters.control.interception[k]:
514
+ self.sequences.fluxes.interceptionevaporation[k] = min( self.sequences.fluxes.potentialinterceptionevaporation[k], self.sequences.factors.interceptedwater[k] )
515
+ else:
516
+ self.sequences.fluxes.interceptionevaporation[k] = 0.0
517
+ cpdef inline void calc_soilwater(self) noexcept nogil:
518
+ if self.soilwatermodel_typeid == 1:
519
+ self.calc_soilwater_soilwatermodel_v1( (<masterinterface.MasterInterface>self.soilwatermodel) )
520
+ cpdef inline void calc_snowcover(self) noexcept nogil:
521
+ if self.snowcovermodel_typeid == 1:
522
+ self.calc_snowcover_snowcovermodel_v1( (<masterinterface.MasterInterface>self.snowcovermodel) )
523
+ cpdef inline void calc_potentialsoilevapotranspiration(self) noexcept nogil:
524
+ if self.petmodel_typeid == 1:
525
+ self.calc_potentialsoilevapotranspiration_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
526
+ elif self.petmodel_typeid == 2:
527
+ self.calc_potentialsoilevapotranspiration_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
528
+ cpdef inline void calc_soilevapotranspiration(self) noexcept nogil:
529
+ cdef double thresh
530
+ cdef numpy.int64_t k
531
+ for k in range(self.parameters.control.nmbhru):
532
+ if self.parameters.control.soil[k]:
533
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.potentialsoilevapotranspiration[k]
534
+ if self.sequences.fluxes.soilevapotranspiration[k] > 0.0:
535
+ if self.sequences.factors.soilwater[k] < 0.0:
536
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
537
+ else:
538
+ thresh = self.parameters.control.soilmoisturelimit[k] * self.parameters.control.maxsoilwater[k]
539
+ if self.sequences.factors.soilwater[k] < thresh:
540
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.soilevapotranspiration[k] * (self.sequences.factors.soilwater[k] / thresh)
541
+ else:
542
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
543
+ cpdef inline void calc_interceptedwater_intercmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
544
+ cdef numpy.int64_t k
545
+ for k in range(self.parameters.control.nmbhru):
546
+ self.sequences.factors.interceptedwater[k] = submodel.get_interceptedwater(k)
547
+ cpdef inline void calc_soilwater_soilwatermodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
548
+ cdef numpy.int64_t k
549
+ for k in range(self.parameters.control.nmbhru):
550
+ self.sequences.factors.soilwater[k] = submodel.get_soilwater(k)
551
+ cpdef inline void calc_snowcover_snowcovermodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
552
+ cdef numpy.int64_t k
553
+ for k in range(self.parameters.control.nmbhru):
554
+ self.sequences.factors.snowcover[k] = submodel.get_snowcover(k)
555
+ cpdef void determine_interceptionevaporation_v1(self) noexcept nogil:
556
+ self.calc_potentialinterceptionevaporation_v3()
557
+ self.calc_interceptedwater_v1()
558
+ self.calc_interceptionevaporation_v1()
559
+ cpdef void determine_soilevapotranspiration_v1(self) noexcept nogil:
560
+ self.calc_soilwater_v1()
561
+ self.calc_snowcover_v1()
562
+ self.calc_potentialsoilevapotranspiration_v2()
563
+ self.calc_soilevapotranspiration_v1()
564
+ self.update_soilevapotranspiration_v1()
565
+ self.update_soilevapotranspiration_v2()
566
+ cpdef void determine_waterevaporation_v1(self) noexcept nogil:
567
+ self.calc_airtemperature_v1()
568
+ self.calc_potentialwaterevaporation_v1()
569
+ self.calc_waterevaporation_v1()
570
+ cpdef void determine_interceptionevaporation(self) noexcept nogil:
571
+ self.calc_potentialinterceptionevaporation_v3()
572
+ self.calc_interceptedwater_v1()
573
+ self.calc_interceptionevaporation_v1()
574
+ cpdef void determine_soilevapotranspiration(self) noexcept nogil:
575
+ self.calc_soilwater_v1()
576
+ self.calc_snowcover_v1()
577
+ self.calc_potentialsoilevapotranspiration_v2()
578
+ self.calc_soilevapotranspiration_v1()
579
+ self.update_soilevapotranspiration_v1()
580
+ self.update_soilevapotranspiration_v2()
581
+ cpdef void determine_waterevaporation(self) noexcept nogil:
582
+ self.calc_airtemperature_v1()
583
+ self.calc_potentialwaterevaporation_v1()
584
+ self.calc_waterevaporation_v1()