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,982 @@
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
+ cdef public numpy.int64_t GRASS = 1
40
+ cdef public numpy.int64_t DECIDUOUS = 2
41
+ cdef public numpy.int64_t CORN = 3
42
+ cdef public numpy.int64_t CONIFER = 4
43
+ cdef public numpy.int64_t SPRINGWHEAT = 5
44
+ cdef public numpy.int64_t WINTERWHEAT = 6
45
+ cdef public numpy.int64_t SUGARBEETS = 7
46
+ cdef public numpy.int64_t SEALED = 8
47
+ cdef public numpy.int64_t WATER = 9
48
+ cdef public numpy.int64_t SAND = 10
49
+ cdef public numpy.int64_t SAND_COHESIVE = 11
50
+ cdef public numpy.int64_t LOAM = 12
51
+ cdef public numpy.int64_t CLAY = 13
52
+ cdef public numpy.int64_t SILT = 14
53
+ cdef public numpy.int64_t PEAT = 15
54
+ cdef public numpy.int64_t NONE = 16
55
+ @cython.final
56
+ cdef class Parameters:
57
+ pass
58
+ @cython.final
59
+ cdef class ControlParameters:
60
+ pass
61
+ @cython.final
62
+ cdef class DerivedParameters:
63
+ pass
64
+ @cython.final
65
+ cdef class Sequences:
66
+ pass
67
+ @cython.final
68
+ cdef class InputSequences:
69
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
70
+ cdef numpy.int64_t k
71
+ if self._precipitation_inputflag:
72
+ self.precipitation = self._precipitation_inputpointer[0]
73
+ elif self._precipitation_diskflag_reading:
74
+ self.precipitation = self._precipitation_ncarray[0]
75
+ elif self._precipitation_ramflag:
76
+ self.precipitation = self._precipitation_array[idx]
77
+ if self._temperature_inputflag:
78
+ self.temperature = self._temperature_inputpointer[0]
79
+ elif self._temperature_diskflag_reading:
80
+ self.temperature = self._temperature_ncarray[0]
81
+ elif self._temperature_ramflag:
82
+ self.temperature = self._temperature_array[idx]
83
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
84
+ cdef numpy.int64_t k
85
+ if self._precipitation_diskflag_writing:
86
+ self._precipitation_ncarray[0] = self.precipitation
87
+ if self._precipitation_ramflag:
88
+ self._precipitation_array[idx] = self.precipitation
89
+ if self._temperature_diskflag_writing:
90
+ self._temperature_ncarray[0] = self.temperature
91
+ if self._temperature_ramflag:
92
+ self._temperature_array[idx] = self.temperature
93
+ cpdef inline set_pointerinput(self, str name, pointerutils.PDouble value):
94
+ if name == "precipitation":
95
+ self._precipitation_inputpointer = value.p_value
96
+ if name == "temperature":
97
+ self._temperature_inputpointer = value.p_value
98
+ @cython.final
99
+ cdef class FactorSequences:
100
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
101
+ cdef numpy.int64_t jdx0
102
+ cdef numpy.int64_t k
103
+ if self._relativesoilmoisture_diskflag_reading:
104
+ k = 0
105
+ for jdx0 in range(self._relativesoilmoisture_length_0):
106
+ self.relativesoilmoisture[jdx0] = self._relativesoilmoisture_ncarray[k]
107
+ k += 1
108
+ elif self._relativesoilmoisture_ramflag:
109
+ for jdx0 in range(self._relativesoilmoisture_length_0):
110
+ self.relativesoilmoisture[jdx0] = self._relativesoilmoisture_array[idx, jdx0]
111
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
112
+ cdef numpy.int64_t jdx0
113
+ cdef numpy.int64_t k
114
+ if self._relativesoilmoisture_diskflag_writing:
115
+ k = 0
116
+ for jdx0 in range(self._relativesoilmoisture_length_0):
117
+ self._relativesoilmoisture_ncarray[k] = self.relativesoilmoisture[jdx0]
118
+ k += 1
119
+ if self._relativesoilmoisture_ramflag:
120
+ for jdx0 in range(self._relativesoilmoisture_length_0):
121
+ self._relativesoilmoisture_array[idx, jdx0] = self.relativesoilmoisture[jdx0]
122
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
123
+ pass
124
+ cpdef inline void update_outputs(self) noexcept nogil:
125
+ pass
126
+ @cython.final
127
+ cdef class FluxSequences:
128
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
129
+ cdef numpy.int64_t jdx0
130
+ cdef numpy.int64_t k
131
+ if self._interceptionevaporation_diskflag_reading:
132
+ k = 0
133
+ for jdx0 in range(self._interceptionevaporation_length_0):
134
+ self.interceptionevaporation[jdx0] = self._interceptionevaporation_ncarray[k]
135
+ k += 1
136
+ elif self._interceptionevaporation_ramflag:
137
+ for jdx0 in range(self._interceptionevaporation_length_0):
138
+ self.interceptionevaporation[jdx0] = self._interceptionevaporation_array[idx, jdx0]
139
+ if self._throughfall_diskflag_reading:
140
+ k = 0
141
+ for jdx0 in range(self._throughfall_length_0):
142
+ self.throughfall[jdx0] = self._throughfall_ncarray[k]
143
+ k += 1
144
+ elif self._throughfall_ramflag:
145
+ for jdx0 in range(self._throughfall_length_0):
146
+ self.throughfall[jdx0] = self._throughfall_array[idx, jdx0]
147
+ if self._potentialsnowmelt_diskflag_reading:
148
+ k = 0
149
+ for jdx0 in range(self._potentialsnowmelt_length_0):
150
+ self.potentialsnowmelt[jdx0] = self._potentialsnowmelt_ncarray[k]
151
+ k += 1
152
+ elif self._potentialsnowmelt_ramflag:
153
+ for jdx0 in range(self._potentialsnowmelt_length_0):
154
+ self.potentialsnowmelt[jdx0] = self._potentialsnowmelt_array[idx, jdx0]
155
+ if self._snowmelt_diskflag_reading:
156
+ k = 0
157
+ for jdx0 in range(self._snowmelt_length_0):
158
+ self.snowmelt[jdx0] = self._snowmelt_ncarray[k]
159
+ k += 1
160
+ elif self._snowmelt_ramflag:
161
+ for jdx0 in range(self._snowmelt_length_0):
162
+ self.snowmelt[jdx0] = self._snowmelt_array[idx, jdx0]
163
+ if self._ponding_diskflag_reading:
164
+ k = 0
165
+ for jdx0 in range(self._ponding_length_0):
166
+ self.ponding[jdx0] = self._ponding_ncarray[k]
167
+ k += 1
168
+ elif self._ponding_ramflag:
169
+ for jdx0 in range(self._ponding_length_0):
170
+ self.ponding[jdx0] = self._ponding_array[idx, jdx0]
171
+ if self._surfacerunoff_diskflag_reading:
172
+ k = 0
173
+ for jdx0 in range(self._surfacerunoff_length_0):
174
+ self.surfacerunoff[jdx0] = self._surfacerunoff_ncarray[k]
175
+ k += 1
176
+ elif self._surfacerunoff_ramflag:
177
+ for jdx0 in range(self._surfacerunoff_length_0):
178
+ self.surfacerunoff[jdx0] = self._surfacerunoff_array[idx, jdx0]
179
+ if self._percolation_diskflag_reading:
180
+ k = 0
181
+ for jdx0 in range(self._percolation_length_0):
182
+ self.percolation[jdx0] = self._percolation_ncarray[k]
183
+ k += 1
184
+ elif self._percolation_ramflag:
185
+ for jdx0 in range(self._percolation_length_0):
186
+ self.percolation[jdx0] = self._percolation_array[idx, jdx0]
187
+ if self._soilevapotranspiration_diskflag_reading:
188
+ k = 0
189
+ for jdx0 in range(self._soilevapotranspiration_length_0):
190
+ self.soilevapotranspiration[jdx0] = self._soilevapotranspiration_ncarray[k]
191
+ k += 1
192
+ elif self._soilevapotranspiration_ramflag:
193
+ for jdx0 in range(self._soilevapotranspiration_length_0):
194
+ self.soilevapotranspiration[jdx0] = self._soilevapotranspiration_array[idx, jdx0]
195
+ if self._lakeevaporation_diskflag_reading:
196
+ k = 0
197
+ for jdx0 in range(self._lakeevaporation_length_0):
198
+ self.lakeevaporation[jdx0] = self._lakeevaporation_ncarray[k]
199
+ k += 1
200
+ elif self._lakeevaporation_ramflag:
201
+ for jdx0 in range(self._lakeevaporation_length_0):
202
+ self.lakeevaporation[jdx0] = self._lakeevaporation_array[idx, jdx0]
203
+ if self._totalevapotranspiration_diskflag_reading:
204
+ k = 0
205
+ for jdx0 in range(self._totalevapotranspiration_length_0):
206
+ self.totalevapotranspiration[jdx0] = self._totalevapotranspiration_ncarray[k]
207
+ k += 1
208
+ elif self._totalevapotranspiration_ramflag:
209
+ for jdx0 in range(self._totalevapotranspiration_length_0):
210
+ self.totalevapotranspiration[jdx0] = self._totalevapotranspiration_array[idx, jdx0]
211
+ if self._capillaryrise_diskflag_reading:
212
+ k = 0
213
+ for jdx0 in range(self._capillaryrise_length_0):
214
+ self.capillaryrise[jdx0] = self._capillaryrise_ncarray[k]
215
+ k += 1
216
+ elif self._capillaryrise_ramflag:
217
+ for jdx0 in range(self._capillaryrise_length_0):
218
+ self.capillaryrise[jdx0] = self._capillaryrise_array[idx, jdx0]
219
+ if self._requiredirrigation_diskflag_reading:
220
+ k = 0
221
+ for jdx0 in range(self._requiredirrigation_length_0):
222
+ self.requiredirrigation[jdx0] = self._requiredirrigation_ncarray[k]
223
+ k += 1
224
+ elif self._requiredirrigation_ramflag:
225
+ for jdx0 in range(self._requiredirrigation_length_0):
226
+ self.requiredirrigation[jdx0] = self._requiredirrigation_array[idx, jdx0]
227
+ if self._externalirrigation_diskflag_reading:
228
+ k = 0
229
+ for jdx0 in range(self._externalirrigation_length_0):
230
+ self.externalirrigation[jdx0] = self._externalirrigation_ncarray[k]
231
+ k += 1
232
+ elif self._externalirrigation_ramflag:
233
+ for jdx0 in range(self._externalirrigation_length_0):
234
+ self.externalirrigation[jdx0] = self._externalirrigation_array[idx, jdx0]
235
+ if self._potentialrecharge_diskflag_reading:
236
+ k = 0
237
+ for jdx0 in range(self._potentialrecharge_length_0):
238
+ self.potentialrecharge[jdx0] = self._potentialrecharge_ncarray[k]
239
+ k += 1
240
+ elif self._potentialrecharge_ramflag:
241
+ for jdx0 in range(self._potentialrecharge_length_0):
242
+ self.potentialrecharge[jdx0] = self._potentialrecharge_array[idx, jdx0]
243
+ if self._baseflow_diskflag_reading:
244
+ k = 0
245
+ for jdx0 in range(self._baseflow_length_0):
246
+ self.baseflow[jdx0] = self._baseflow_ncarray[k]
247
+ k += 1
248
+ elif self._baseflow_ramflag:
249
+ for jdx0 in range(self._baseflow_length_0):
250
+ self.baseflow[jdx0] = self._baseflow_array[idx, jdx0]
251
+ if self._actualrecharge_diskflag_reading:
252
+ self.actualrecharge = self._actualrecharge_ncarray[0]
253
+ elif self._actualrecharge_ramflag:
254
+ self.actualrecharge = self._actualrecharge_array[idx]
255
+ if self._delayedrecharge_diskflag_reading:
256
+ self.delayedrecharge = self._delayedrecharge_ncarray[0]
257
+ elif self._delayedrecharge_ramflag:
258
+ self.delayedrecharge = self._delayedrecharge_array[idx]
259
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
260
+ cdef numpy.int64_t jdx0
261
+ cdef numpy.int64_t k
262
+ if self._interceptionevaporation_diskflag_writing:
263
+ k = 0
264
+ for jdx0 in range(self._interceptionevaporation_length_0):
265
+ self._interceptionevaporation_ncarray[k] = self.interceptionevaporation[jdx0]
266
+ k += 1
267
+ if self._interceptionevaporation_ramflag:
268
+ for jdx0 in range(self._interceptionevaporation_length_0):
269
+ self._interceptionevaporation_array[idx, jdx0] = self.interceptionevaporation[jdx0]
270
+ if self._throughfall_diskflag_writing:
271
+ k = 0
272
+ for jdx0 in range(self._throughfall_length_0):
273
+ self._throughfall_ncarray[k] = self.throughfall[jdx0]
274
+ k += 1
275
+ if self._throughfall_ramflag:
276
+ for jdx0 in range(self._throughfall_length_0):
277
+ self._throughfall_array[idx, jdx0] = self.throughfall[jdx0]
278
+ if self._potentialsnowmelt_diskflag_writing:
279
+ k = 0
280
+ for jdx0 in range(self._potentialsnowmelt_length_0):
281
+ self._potentialsnowmelt_ncarray[k] = self.potentialsnowmelt[jdx0]
282
+ k += 1
283
+ if self._potentialsnowmelt_ramflag:
284
+ for jdx0 in range(self._potentialsnowmelt_length_0):
285
+ self._potentialsnowmelt_array[idx, jdx0] = self.potentialsnowmelt[jdx0]
286
+ if self._snowmelt_diskflag_writing:
287
+ k = 0
288
+ for jdx0 in range(self._snowmelt_length_0):
289
+ self._snowmelt_ncarray[k] = self.snowmelt[jdx0]
290
+ k += 1
291
+ if self._snowmelt_ramflag:
292
+ for jdx0 in range(self._snowmelt_length_0):
293
+ self._snowmelt_array[idx, jdx0] = self.snowmelt[jdx0]
294
+ if self._ponding_diskflag_writing:
295
+ k = 0
296
+ for jdx0 in range(self._ponding_length_0):
297
+ self._ponding_ncarray[k] = self.ponding[jdx0]
298
+ k += 1
299
+ if self._ponding_ramflag:
300
+ for jdx0 in range(self._ponding_length_0):
301
+ self._ponding_array[idx, jdx0] = self.ponding[jdx0]
302
+ if self._surfacerunoff_diskflag_writing:
303
+ k = 0
304
+ for jdx0 in range(self._surfacerunoff_length_0):
305
+ self._surfacerunoff_ncarray[k] = self.surfacerunoff[jdx0]
306
+ k += 1
307
+ if self._surfacerunoff_ramflag:
308
+ for jdx0 in range(self._surfacerunoff_length_0):
309
+ self._surfacerunoff_array[idx, jdx0] = self.surfacerunoff[jdx0]
310
+ if self._percolation_diskflag_writing:
311
+ k = 0
312
+ for jdx0 in range(self._percolation_length_0):
313
+ self._percolation_ncarray[k] = self.percolation[jdx0]
314
+ k += 1
315
+ if self._percolation_ramflag:
316
+ for jdx0 in range(self._percolation_length_0):
317
+ self._percolation_array[idx, jdx0] = self.percolation[jdx0]
318
+ if self._soilevapotranspiration_diskflag_writing:
319
+ k = 0
320
+ for jdx0 in range(self._soilevapotranspiration_length_0):
321
+ self._soilevapotranspiration_ncarray[k] = self.soilevapotranspiration[jdx0]
322
+ k += 1
323
+ if self._soilevapotranspiration_ramflag:
324
+ for jdx0 in range(self._soilevapotranspiration_length_0):
325
+ self._soilevapotranspiration_array[idx, jdx0] = self.soilevapotranspiration[jdx0]
326
+ if self._lakeevaporation_diskflag_writing:
327
+ k = 0
328
+ for jdx0 in range(self._lakeevaporation_length_0):
329
+ self._lakeevaporation_ncarray[k] = self.lakeevaporation[jdx0]
330
+ k += 1
331
+ if self._lakeevaporation_ramflag:
332
+ for jdx0 in range(self._lakeevaporation_length_0):
333
+ self._lakeevaporation_array[idx, jdx0] = self.lakeevaporation[jdx0]
334
+ if self._totalevapotranspiration_diskflag_writing:
335
+ k = 0
336
+ for jdx0 in range(self._totalevapotranspiration_length_0):
337
+ self._totalevapotranspiration_ncarray[k] = self.totalevapotranspiration[jdx0]
338
+ k += 1
339
+ if self._totalevapotranspiration_ramflag:
340
+ for jdx0 in range(self._totalevapotranspiration_length_0):
341
+ self._totalevapotranspiration_array[idx, jdx0] = self.totalevapotranspiration[jdx0]
342
+ if self._capillaryrise_diskflag_writing:
343
+ k = 0
344
+ for jdx0 in range(self._capillaryrise_length_0):
345
+ self._capillaryrise_ncarray[k] = self.capillaryrise[jdx0]
346
+ k += 1
347
+ if self._capillaryrise_ramflag:
348
+ for jdx0 in range(self._capillaryrise_length_0):
349
+ self._capillaryrise_array[idx, jdx0] = self.capillaryrise[jdx0]
350
+ if self._requiredirrigation_diskflag_writing:
351
+ k = 0
352
+ for jdx0 in range(self._requiredirrigation_length_0):
353
+ self._requiredirrigation_ncarray[k] = self.requiredirrigation[jdx0]
354
+ k += 1
355
+ if self._requiredirrigation_ramflag:
356
+ for jdx0 in range(self._requiredirrigation_length_0):
357
+ self._requiredirrigation_array[idx, jdx0] = self.requiredirrigation[jdx0]
358
+ if self._externalirrigation_diskflag_writing:
359
+ k = 0
360
+ for jdx0 in range(self._externalirrigation_length_0):
361
+ self._externalirrigation_ncarray[k] = self.externalirrigation[jdx0]
362
+ k += 1
363
+ if self._externalirrigation_ramflag:
364
+ for jdx0 in range(self._externalirrigation_length_0):
365
+ self._externalirrigation_array[idx, jdx0] = self.externalirrigation[jdx0]
366
+ if self._potentialrecharge_diskflag_writing:
367
+ k = 0
368
+ for jdx0 in range(self._potentialrecharge_length_0):
369
+ self._potentialrecharge_ncarray[k] = self.potentialrecharge[jdx0]
370
+ k += 1
371
+ if self._potentialrecharge_ramflag:
372
+ for jdx0 in range(self._potentialrecharge_length_0):
373
+ self._potentialrecharge_array[idx, jdx0] = self.potentialrecharge[jdx0]
374
+ if self._baseflow_diskflag_writing:
375
+ k = 0
376
+ for jdx0 in range(self._baseflow_length_0):
377
+ self._baseflow_ncarray[k] = self.baseflow[jdx0]
378
+ k += 1
379
+ if self._baseflow_ramflag:
380
+ for jdx0 in range(self._baseflow_length_0):
381
+ self._baseflow_array[idx, jdx0] = self.baseflow[jdx0]
382
+ if self._actualrecharge_diskflag_writing:
383
+ self._actualrecharge_ncarray[0] = self.actualrecharge
384
+ if self._actualrecharge_ramflag:
385
+ self._actualrecharge_array[idx] = self.actualrecharge
386
+ if self._delayedrecharge_diskflag_writing:
387
+ self._delayedrecharge_ncarray[0] = self.delayedrecharge
388
+ if self._delayedrecharge_ramflag:
389
+ self._delayedrecharge_array[idx] = self.delayedrecharge
390
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
391
+ if name == "actualrecharge":
392
+ self._actualrecharge_outputpointer = value.p_value
393
+ if name == "delayedrecharge":
394
+ self._delayedrecharge_outputpointer = value.p_value
395
+ cpdef inline void update_outputs(self) noexcept nogil:
396
+ if self._actualrecharge_outputflag:
397
+ self._actualrecharge_outputpointer[0] = self.actualrecharge
398
+ if self._delayedrecharge_outputflag:
399
+ self._delayedrecharge_outputpointer[0] = self.delayedrecharge
400
+ @cython.final
401
+ cdef class StateSequences:
402
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
403
+ cdef numpy.int64_t jdx0
404
+ cdef numpy.int64_t k
405
+ if self._interceptedwater_diskflag_reading:
406
+ k = 0
407
+ for jdx0 in range(self._interceptedwater_length_0):
408
+ self.interceptedwater[jdx0] = self._interceptedwater_ncarray[k]
409
+ k += 1
410
+ elif self._interceptedwater_ramflag:
411
+ for jdx0 in range(self._interceptedwater_length_0):
412
+ self.interceptedwater[jdx0] = self._interceptedwater_array[idx, jdx0]
413
+ if self._snowpack_diskflag_reading:
414
+ k = 0
415
+ for jdx0 in range(self._snowpack_length_0):
416
+ self.snowpack[jdx0] = self._snowpack_ncarray[k]
417
+ k += 1
418
+ elif self._snowpack_ramflag:
419
+ for jdx0 in range(self._snowpack_length_0):
420
+ self.snowpack[jdx0] = self._snowpack_array[idx, jdx0]
421
+ if self._soilmoisture_diskflag_reading:
422
+ k = 0
423
+ for jdx0 in range(self._soilmoisture_length_0):
424
+ self.soilmoisture[jdx0] = self._soilmoisture_ncarray[k]
425
+ k += 1
426
+ elif self._soilmoisture_ramflag:
427
+ for jdx0 in range(self._soilmoisture_length_0):
428
+ self.soilmoisture[jdx0] = self._soilmoisture_array[idx, jdx0]
429
+ if self._deepwater_diskflag_reading:
430
+ self.deepwater = self._deepwater_ncarray[0]
431
+ elif self._deepwater_ramflag:
432
+ self.deepwater = self._deepwater_array[idx]
433
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
434
+ cdef numpy.int64_t jdx0
435
+ cdef numpy.int64_t k
436
+ if self._interceptedwater_diskflag_writing:
437
+ k = 0
438
+ for jdx0 in range(self._interceptedwater_length_0):
439
+ self._interceptedwater_ncarray[k] = self.interceptedwater[jdx0]
440
+ k += 1
441
+ if self._interceptedwater_ramflag:
442
+ for jdx0 in range(self._interceptedwater_length_0):
443
+ self._interceptedwater_array[idx, jdx0] = self.interceptedwater[jdx0]
444
+ if self._snowpack_diskflag_writing:
445
+ k = 0
446
+ for jdx0 in range(self._snowpack_length_0):
447
+ self._snowpack_ncarray[k] = self.snowpack[jdx0]
448
+ k += 1
449
+ if self._snowpack_ramflag:
450
+ for jdx0 in range(self._snowpack_length_0):
451
+ self._snowpack_array[idx, jdx0] = self.snowpack[jdx0]
452
+ if self._soilmoisture_diskflag_writing:
453
+ k = 0
454
+ for jdx0 in range(self._soilmoisture_length_0):
455
+ self._soilmoisture_ncarray[k] = self.soilmoisture[jdx0]
456
+ k += 1
457
+ if self._soilmoisture_ramflag:
458
+ for jdx0 in range(self._soilmoisture_length_0):
459
+ self._soilmoisture_array[idx, jdx0] = self.soilmoisture[jdx0]
460
+ if self._deepwater_diskflag_writing:
461
+ self._deepwater_ncarray[0] = self.deepwater
462
+ if self._deepwater_ramflag:
463
+ self._deepwater_array[idx] = self.deepwater
464
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
465
+ if name == "deepwater":
466
+ self._deepwater_outputpointer = value.p_value
467
+ cpdef inline void update_outputs(self) noexcept nogil:
468
+ if self._deepwater_outputflag:
469
+ self._deepwater_outputpointer[0] = self.deepwater
470
+ @cython.final
471
+ cdef class Model(masterinterface.MasterInterface):
472
+ def __init__(self):
473
+ super().__init__()
474
+ self.aetmodel = None
475
+ self.aetmodel_is_mainmodel = False
476
+ def get_aetmodel(self) -> masterinterface.MasterInterface | None:
477
+ return self.aetmodel
478
+ def set_aetmodel(self, aetmodel: masterinterface.MasterInterface | None) -> None:
479
+ self.aetmodel = aetmodel
480
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
481
+ self.idx_sim = idx
482
+ self.reset_reuseflags()
483
+ self.load_data(idx)
484
+ self.run()
485
+ self.new2old()
486
+ self.update_outputs()
487
+ cpdef void reset_reuseflags(self) noexcept nogil:
488
+ if (self.aetmodel is not None) and not self.aetmodel_is_mainmodel:
489
+ self.aetmodel.reset_reuseflags()
490
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
491
+ self.idx_sim = idx
492
+ self.sequences.inputs.load_data(idx)
493
+ if (self.aetmodel is not None) and not self.aetmodel_is_mainmodel:
494
+ self.aetmodel.load_data(idx)
495
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
496
+ self.idx_sim = idx
497
+ self.sequences.inputs.save_data(idx)
498
+ self.sequences.factors.save_data(idx)
499
+ self.sequences.fluxes.save_data(idx)
500
+ self.sequences.states.save_data(idx)
501
+ if (self.aetmodel is not None) and not self.aetmodel_is_mainmodel:
502
+ self.aetmodel.save_data(idx)
503
+ cpdef void new2old(self) noexcept nogil:
504
+ cdef numpy.int64_t jdx0
505
+ for jdx0 in range(self.sequences.states._interceptedwater_length_0):
506
+ self.sequences.old_states.interceptedwater[jdx0] = self.sequences.new_states.interceptedwater[jdx0]
507
+ for jdx0 in range(self.sequences.states._snowpack_length_0):
508
+ self.sequences.old_states.snowpack[jdx0] = self.sequences.new_states.snowpack[jdx0]
509
+ for jdx0 in range(self.sequences.states._soilmoisture_length_0):
510
+ self.sequences.old_states.soilmoisture[jdx0] = self.sequences.new_states.soilmoisture[jdx0]
511
+ self.sequences.old_states.deepwater = self.sequences.new_states.deepwater
512
+ if (self.aetmodel is not None) and not self.aetmodel_is_mainmodel:
513
+ self.aetmodel.new2old()
514
+ cpdef inline void run(self) noexcept nogil:
515
+ self.calc_throughfall_interceptedwater_v1()
516
+ self.calc_interceptionevaporation_interceptedwater_v1()
517
+ self.calc_lakeevaporation_v1()
518
+ self.calc_potentialsnowmelt_v1()
519
+ self.calc_snowmelt_snowpack_v1()
520
+ self.calc_ponding_v1()
521
+ self.calc_surfacerunoff_v1()
522
+ self.calc_relativesoilmoisture_v1()
523
+ self.calc_percolation_v1()
524
+ self.calc_soilevapotranspiration_v1()
525
+ self.calc_totalevapotranspiration_v1()
526
+ self.calc_capillaryrise_v1()
527
+ self.calc_soilmoisture_v1()
528
+ self.calc_relativesoilmoisture_v1()
529
+ self.calc_requiredirrigation_v1()
530
+ self.calc_externalirrigation_soilmoisture_v1()
531
+ self.calc_relativesoilmoisture_v1()
532
+ self.calc_potentialrecharge_v1()
533
+ self.calc_baseflow_v1()
534
+ self.calc_actualrecharge_v1()
535
+ self.calc_delayedrecharge_deepwater_v1()
536
+ cpdef inline void update_inlets(self) noexcept nogil:
537
+ pass
538
+ cpdef inline void update_outlets(self) noexcept nogil:
539
+ pass
540
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
541
+ self.idx_sim = idx
542
+ pass
543
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
544
+ self.idx_sim = idx
545
+ pass
546
+ cpdef inline void update_outputs(self) noexcept nogil:
547
+ self.sequences.fluxes.update_outputs()
548
+ self.sequences.states.update_outputs()
549
+ cpdef inline void calc_throughfall_interceptedwater_v1(self) noexcept nogil:
550
+ cdef double ic
551
+ cdef numpy.int64_t k
552
+ cdef numpy.int64_t month
553
+ month = self.parameters.derived.moy[self.idx_sim]
554
+ for k in range(self.parameters.control.nmbzones):
555
+ if self.parameters.control.landtype[k] == WATER:
556
+ self.sequences.states.interceptedwater[k] = 0.0
557
+ self.sequences.fluxes.throughfall[k] = 0.0
558
+ else:
559
+ ic = self.parameters.control.interceptioncapacity[self.parameters.control.landtype[k] - 1, month]
560
+ self.sequences.fluxes.throughfall[k] = max( self.sequences.inputs.precipitation + self.sequences.states.interceptedwater[k] - ic, 0.0 )
561
+ self.sequences.states.interceptedwater[k] = self.sequences.states.interceptedwater[k] + (self.sequences.inputs.precipitation - self.sequences.fluxes.throughfall[k])
562
+ cpdef inline void calc_interceptionevaporation_interceptedwater_v1(self) noexcept nogil:
563
+ if self.aetmodel_typeid == 1:
564
+ self.calc_interceptionevaporation_interceptedwater_aetmodel_v1( (<masterinterface.MasterInterface>self.aetmodel) )
565
+ cpdef inline void calc_lakeevaporation_v1(self) noexcept nogil:
566
+ if self.aetmodel_typeid == 1:
567
+ self.calc_lakeevaporation_aetmodel_v1( (<masterinterface.MasterInterface>self.aetmodel) )
568
+ cpdef inline void calc_potentialsnowmelt_v1(self) noexcept nogil:
569
+ cdef numpy.int64_t k
570
+ for k in range(self.parameters.control.nmbzones):
571
+ if (self.parameters.control.landtype[k] == WATER) or (self.sequences.inputs.temperature <= 0.0):
572
+ self.sequences.fluxes.potentialsnowmelt[k] = 0.0
573
+ else:
574
+ self.sequences.fluxes.potentialsnowmelt[k] = self.parameters.control.degreedayfactor[k] * self.sequences.inputs.temperature
575
+ cpdef inline void calc_snowmelt_snowpack_v1(self) noexcept nogil:
576
+ cdef numpy.int64_t k
577
+ for k in range(self.parameters.control.nmbzones):
578
+ if self.parameters.control.landtype[k] == WATER:
579
+ self.sequences.fluxes.snowmelt[k] = 0.0
580
+ self.sequences.states.snowpack[k] = 0.0
581
+ elif self.sequences.inputs.temperature <= 0.0:
582
+ self.sequences.fluxes.snowmelt[k] = 0.0
583
+ self.sequences.states.snowpack[k] = self.sequences.states.snowpack[k] + (self.sequences.fluxes.throughfall[k])
584
+ elif self.sequences.fluxes.potentialsnowmelt[k] < self.sequences.states.snowpack[k]:
585
+ self.sequences.fluxes.snowmelt[k] = self.sequences.fluxes.potentialsnowmelt[k]
586
+ self.sequences.states.snowpack[k] = self.sequences.states.snowpack[k] - (self.sequences.fluxes.snowmelt[k])
587
+ else:
588
+ self.sequences.fluxes.snowmelt[k] = self.sequences.states.snowpack[k]
589
+ self.sequences.states.snowpack[k] = 0.0
590
+ cpdef inline void calc_ponding_v1(self) noexcept nogil:
591
+ cdef numpy.int64_t k
592
+ for k in range(self.parameters.control.nmbzones):
593
+ if (self.parameters.control.landtype[k] == WATER) or (self.sequences.inputs.temperature <= 0.0):
594
+ self.sequences.fluxes.ponding[k] = 0.0
595
+ else:
596
+ self.sequences.fluxes.ponding[k] = self.sequences.fluxes.throughfall[k] + self.sequences.fluxes.snowmelt[k]
597
+ cpdef inline void calc_surfacerunoff_v1(self) noexcept nogil:
598
+ cdef numpy.int64_t k
599
+ for k in range(self.parameters.control.nmbzones):
600
+ if self.parameters.control.landtype[k] == SEALED:
601
+ self.sequences.fluxes.surfacerunoff[k] = self.sequences.fluxes.ponding[k]
602
+ else:
603
+ self.sequences.fluxes.surfacerunoff[k] = 0.0
604
+ cpdef inline void calc_relativesoilmoisture_v1(self) noexcept nogil:
605
+ cdef numpy.int64_t k
606
+ for k in range(self.parameters.control.nmbzones):
607
+ if (self.parameters.control.soiltype[k] == NONE) or (self.parameters.derived.maxsoilwater[k] <= 0.0):
608
+ self.sequences.factors.relativesoilmoisture[k] = 0.0
609
+ else:
610
+ self.sequences.factors.relativesoilmoisture[k] = self.sequences.states.soilmoisture[k] / self.parameters.derived.maxsoilwater[k]
611
+ cpdef inline void calc_percolation_v1(self) noexcept nogil:
612
+ cdef numpy.int64_t k
613
+ for k in range(self.parameters.control.nmbzones):
614
+ if self.parameters.control.soiltype[k] == NONE:
615
+ self.sequences.fluxes.percolation[k] = 0.0
616
+ else:
617
+ self.sequences.fluxes.percolation[k] = ( self.sequences.fluxes.ponding[k] * self.sequences.factors.relativesoilmoisture[k] ** self.parameters.derived.beta[k] )
618
+ cpdef inline void calc_soilevapotranspiration_v1(self) noexcept nogil:
619
+ if self.aetmodel_typeid == 1:
620
+ self.calc_soilevapotranspiration_aetmodel_v1( (<masterinterface.MasterInterface>self.aetmodel) )
621
+ cpdef inline void calc_totalevapotranspiration_v1(self) noexcept nogil:
622
+ cdef numpy.int64_t k
623
+ for k in range(self.parameters.control.nmbzones):
624
+ if self.parameters.control.landtype[k] == WATER:
625
+ self.sequences.fluxes.totalevapotranspiration[k] = self.sequences.fluxes.lakeevaporation[k]
626
+ else:
627
+ self.sequences.fluxes.totalevapotranspiration[k] = self.sequences.fluxes.interceptionevaporation[k]
628
+ if self.parameters.control.soiltype[k] != NONE:
629
+ self.sequences.fluxes.totalevapotranspiration[k] = self.sequences.fluxes.totalevapotranspiration[k] + (self.sequences.fluxes.soilevapotranspiration[k])
630
+ cpdef inline void calc_capillaryrise_v1(self) noexcept nogil:
631
+ cdef numpy.int64_t k
632
+ for k in range(self.parameters.control.nmbzones):
633
+ if (self.parameters.control.soiltype[k] == NONE) or not self.parameters.control.withcapillaryrise:
634
+ self.sequences.fluxes.capillaryrise[k] = 0.0
635
+ else:
636
+ self.sequences.fluxes.capillaryrise[k] = ( self.parameters.derived.potentialcapillaryrise[k] * (1.0 - self.sequences.factors.relativesoilmoisture[k]) ** 3 )
637
+ cpdef inline void calc_soilmoisture_v1(self) noexcept nogil:
638
+ cdef double delta
639
+ cdef double factor
640
+ cdef double decrease
641
+ cdef double increase
642
+ cdef numpy.int64_t k
643
+ for k in range(self.parameters.control.nmbzones):
644
+ if self.parameters.control.soiltype[k] == NONE:
645
+ self.sequences.new_states.soilmoisture[k] = 0.0
646
+ self.sequences.fluxes.percolation[k] = 0.0
647
+ self.sequences.fluxes.capillaryrise[k] = 0.0
648
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
649
+ else:
650
+ increase = self.sequences.fluxes.ponding[k] + self.sequences.fluxes.capillaryrise[k]
651
+ decrease = self.sequences.fluxes.percolation[k]
652
+ if self.sequences.fluxes.soilevapotranspiration[k] < 0.0:
653
+ increase = increase - (self.sequences.fluxes.soilevapotranspiration[k])
654
+ else:
655
+ decrease = decrease + (self.sequences.fluxes.soilevapotranspiration[k])
656
+ self.sequences.new_states.soilmoisture[k] = self.sequences.old_states.soilmoisture[k] + increase - decrease
657
+ if self.sequences.new_states.soilmoisture[k] < 0.0:
658
+ factor = (self.sequences.old_states.soilmoisture[k] + increase) / decrease
659
+ self.sequences.fluxes.percolation[k] = self.sequences.fluxes.percolation[k] * (factor)
660
+ if self.sequences.fluxes.soilevapotranspiration[k] >= 0.0:
661
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.soilevapotranspiration[k] * (factor)
662
+ self.sequences.new_states.soilmoisture[k] = 0.0
663
+ elif self.sequences.new_states.soilmoisture[k] > self.parameters.derived.maxsoilwater[k]:
664
+ delta = self.sequences.new_states.soilmoisture[k] - self.parameters.derived.maxsoilwater[k]
665
+ if self.sequences.fluxes.capillaryrise[k] >= delta:
666
+ self.sequences.fluxes.capillaryrise[k] = self.sequences.fluxes.capillaryrise[k] - (delta)
667
+ self.sequences.new_states.soilmoisture[k] = self.parameters.derived.maxsoilwater[k]
668
+ else:
669
+ self.sequences.new_states.soilmoisture[k] = self.sequences.new_states.soilmoisture[k] - (self.sequences.fluxes.capillaryrise[k])
670
+ self.sequences.fluxes.capillaryrise[k] = 0.0
671
+ self.sequences.fluxes.percolation[k] = self.sequences.fluxes.percolation[k] + (self.sequences.new_states.soilmoisture[k] - self.parameters.derived.maxsoilwater[k])
672
+ self.sequences.new_states.soilmoisture[k] = self.parameters.derived.maxsoilwater[k]
673
+ cpdef inline void calc_requiredirrigation_v1(self) noexcept nogil:
674
+ cdef double sm
675
+ cdef numpy.int64_t l
676
+ cdef numpy.int64_t k
677
+ cdef numpy.int64_t m
678
+ m = self.parameters.derived.moy[self.idx_sim]
679
+ for k in range(self.parameters.control.nmbzones):
680
+ l = self.parameters.control.landtype[k] - 1
681
+ sm = self.sequences.factors.relativesoilmoisture[k]
682
+ if (self.parameters.control.soiltype[k] == NONE) or (sm >= self.parameters.control.irrigationtrigger[l, m]):
683
+ self.sequences.fluxes.requiredirrigation[k] = 0.0
684
+ else:
685
+ self.sequences.fluxes.requiredirrigation[k] = self.parameters.derived.maxsoilwater[k] * ( self.parameters.control.irrigationtarget[l, m] - sm )
686
+ cpdef inline void calc_externalirrigation_soilmoisture_v1(self) noexcept nogil:
687
+ cdef numpy.int64_t k
688
+ for k in range(self.parameters.control.nmbzones):
689
+ if self.parameters.control.soiltype[k] == NONE:
690
+ self.sequences.states.soilmoisture[k] = 0.0
691
+ self.sequences.fluxes.externalirrigation[k] = 0.0
692
+ elif self.parameters.control.withexternalirrigation:
693
+ self.sequences.fluxes.externalirrigation[k] = self.sequences.fluxes.requiredirrigation[k]
694
+ self.sequences.states.soilmoisture[k] = self.sequences.states.soilmoisture[k] + (self.sequences.fluxes.externalirrigation[k])
695
+ else:
696
+ self.sequences.fluxes.externalirrigation[k] = 0.0
697
+ cpdef inline void calc_potentialrecharge_v1(self) noexcept nogil:
698
+ cdef numpy.int64_t k
699
+ for k in range(self.parameters.control.nmbzones):
700
+ if self.parameters.control.landtype[k] == SEALED:
701
+ self.sequences.fluxes.potentialrecharge[k] = 0.0
702
+ elif self.parameters.control.landtype[k] == WATER:
703
+ self.sequences.fluxes.potentialrecharge[k] = self.sequences.inputs.precipitation - self.sequences.fluxes.lakeevaporation[k]
704
+ else:
705
+ self.sequences.fluxes.potentialrecharge[k] = self.sequences.fluxes.percolation[k] - self.sequences.fluxes.capillaryrise[k]
706
+ cpdef inline void calc_baseflow_v1(self) noexcept nogil:
707
+ cdef numpy.int64_t k
708
+ for k in range(self.parameters.control.nmbzones):
709
+ if self.parameters.control.landtype[k] == SEALED:
710
+ self.sequences.fluxes.baseflow[k] = 0.0
711
+ else:
712
+ self.sequences.fluxes.baseflow[k] = (1.0 - self.parameters.control.baseflowindex[k]) * max( self.sequences.fluxes.potentialrecharge[k], 0.0 )
713
+ cpdef inline void calc_actualrecharge_v1(self) noexcept nogil:
714
+ cdef numpy.int64_t k
715
+ self.sequences.fluxes.actualrecharge = 0.0
716
+ for k in range(self.parameters.control.nmbzones):
717
+ if self.parameters.control.landtype[k] != SEALED:
718
+ self.sequences.fluxes.actualrecharge = self.sequences.fluxes.actualrecharge + (self.parameters.derived.zoneratio[k] * ( self.sequences.fluxes.potentialrecharge[k] - self.sequences.fluxes.baseflow[k] ))
719
+ cpdef inline void calc_delayedrecharge_deepwater_v1(self) noexcept nogil:
720
+ if self.parameters.control.rechargedelay > 0.0:
721
+ self.sequences.new_states.deepwater = (self.sequences.fluxes.actualrecharge + self.sequences.old_states.deepwater) * exp( -1.0 / self.parameters.control.rechargedelay )
722
+ self.sequences.fluxes.delayedrecharge = self.sequences.fluxes.actualrecharge + self.sequences.old_states.deepwater - self.sequences.new_states.deepwater
723
+ else:
724
+ self.sequences.fluxes.delayedrecharge = self.sequences.old_states.deepwater + self.sequences.fluxes.actualrecharge
725
+ self.sequences.new_states.deepwater = 0.0
726
+ cpdef double get_temperature_v1(self, numpy.int64_t s) noexcept nogil:
727
+ return self.sequences.inputs.temperature
728
+ cpdef double get_meantemperature_v1(self) noexcept nogil:
729
+ return self.sequences.inputs.temperature
730
+ cpdef double get_precipitation_v1(self, numpy.int64_t s) noexcept nogil:
731
+ return self.sequences.inputs.precipitation
732
+ cpdef double get_interceptedwater_v1(self, numpy.int64_t k) noexcept nogil:
733
+ return self.sequences.states.interceptedwater[k]
734
+ cpdef double get_soilwater_v1(self, numpy.int64_t k) noexcept nogil:
735
+ return self.sequences.states.soilmoisture[k]
736
+ cpdef double get_snowcover_v1(self, numpy.int64_t k) noexcept nogil:
737
+ if self.sequences.states.snowpack[k] > 0.0:
738
+ return 1.0
739
+ return 0.0
740
+ cpdef inline void calc_interceptionevaporation_interceptedwater_aetmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
741
+ cdef numpy.int64_t k
742
+ submodel.determine_interceptionevaporation()
743
+ for k in range(self.parameters.control.nmbzones):
744
+ if self.parameters.control.landtype[k] == WATER:
745
+ self.sequences.fluxes.interceptionevaporation[k] = 0.0
746
+ self.sequences.states.interceptedwater[k] = 0.0
747
+ else:
748
+ self.sequences.fluxes.interceptionevaporation[k] = min( submodel.get_interceptionevaporation(k), self.sequences.states.interceptedwater[k] )
749
+ self.sequences.states.interceptedwater[k] = self.sequences.states.interceptedwater[k] - (self.sequences.fluxes.interceptionevaporation[k])
750
+ cpdef inline void calc_lakeevaporation_aetmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
751
+ cdef numpy.int64_t k
752
+ submodel.determine_waterevaporation()
753
+ for k in range(self.parameters.control.nmbzones):
754
+ if self.parameters.control.landtype[k] == WATER:
755
+ self.sequences.fluxes.lakeevaporation[k] = submodel.get_waterevaporation(k)
756
+ else:
757
+ self.sequences.fluxes.lakeevaporation[k] = 0.0
758
+ cpdef inline void calc_soilevapotranspiration_aetmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
759
+ cdef numpy.int64_t k
760
+ submodel.determine_soilevapotranspiration()
761
+ for k in range(self.parameters.control.nmbzones):
762
+ if self.parameters.control.soiltype[k] == NONE:
763
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
764
+ else:
765
+ self.sequences.fluxes.soilevapotranspiration[k] = submodel.get_soilevapotranspiration(k)
766
+ cpdef inline void calc_throughfall_interceptedwater(self) noexcept nogil:
767
+ cdef double ic
768
+ cdef numpy.int64_t k
769
+ cdef numpy.int64_t month
770
+ month = self.parameters.derived.moy[self.idx_sim]
771
+ for k in range(self.parameters.control.nmbzones):
772
+ if self.parameters.control.landtype[k] == WATER:
773
+ self.sequences.states.interceptedwater[k] = 0.0
774
+ self.sequences.fluxes.throughfall[k] = 0.0
775
+ else:
776
+ ic = self.parameters.control.interceptioncapacity[self.parameters.control.landtype[k] - 1, month]
777
+ self.sequences.fluxes.throughfall[k] = max( self.sequences.inputs.precipitation + self.sequences.states.interceptedwater[k] - ic, 0.0 )
778
+ self.sequences.states.interceptedwater[k] = self.sequences.states.interceptedwater[k] + (self.sequences.inputs.precipitation - self.sequences.fluxes.throughfall[k])
779
+ cpdef inline void calc_interceptionevaporation_interceptedwater(self) noexcept nogil:
780
+ if self.aetmodel_typeid == 1:
781
+ self.calc_interceptionevaporation_interceptedwater_aetmodel_v1( (<masterinterface.MasterInterface>self.aetmodel) )
782
+ cpdef inline void calc_lakeevaporation(self) noexcept nogil:
783
+ if self.aetmodel_typeid == 1:
784
+ self.calc_lakeevaporation_aetmodel_v1( (<masterinterface.MasterInterface>self.aetmodel) )
785
+ cpdef inline void calc_potentialsnowmelt(self) noexcept nogil:
786
+ cdef numpy.int64_t k
787
+ for k in range(self.parameters.control.nmbzones):
788
+ if (self.parameters.control.landtype[k] == WATER) or (self.sequences.inputs.temperature <= 0.0):
789
+ self.sequences.fluxes.potentialsnowmelt[k] = 0.0
790
+ else:
791
+ self.sequences.fluxes.potentialsnowmelt[k] = self.parameters.control.degreedayfactor[k] * self.sequences.inputs.temperature
792
+ cpdef inline void calc_snowmelt_snowpack(self) noexcept nogil:
793
+ cdef numpy.int64_t k
794
+ for k in range(self.parameters.control.nmbzones):
795
+ if self.parameters.control.landtype[k] == WATER:
796
+ self.sequences.fluxes.snowmelt[k] = 0.0
797
+ self.sequences.states.snowpack[k] = 0.0
798
+ elif self.sequences.inputs.temperature <= 0.0:
799
+ self.sequences.fluxes.snowmelt[k] = 0.0
800
+ self.sequences.states.snowpack[k] = self.sequences.states.snowpack[k] + (self.sequences.fluxes.throughfall[k])
801
+ elif self.sequences.fluxes.potentialsnowmelt[k] < self.sequences.states.snowpack[k]:
802
+ self.sequences.fluxes.snowmelt[k] = self.sequences.fluxes.potentialsnowmelt[k]
803
+ self.sequences.states.snowpack[k] = self.sequences.states.snowpack[k] - (self.sequences.fluxes.snowmelt[k])
804
+ else:
805
+ self.sequences.fluxes.snowmelt[k] = self.sequences.states.snowpack[k]
806
+ self.sequences.states.snowpack[k] = 0.0
807
+ cpdef inline void calc_ponding(self) noexcept nogil:
808
+ cdef numpy.int64_t k
809
+ for k in range(self.parameters.control.nmbzones):
810
+ if (self.parameters.control.landtype[k] == WATER) or (self.sequences.inputs.temperature <= 0.0):
811
+ self.sequences.fluxes.ponding[k] = 0.0
812
+ else:
813
+ self.sequences.fluxes.ponding[k] = self.sequences.fluxes.throughfall[k] + self.sequences.fluxes.snowmelt[k]
814
+ cpdef inline void calc_surfacerunoff(self) noexcept nogil:
815
+ cdef numpy.int64_t k
816
+ for k in range(self.parameters.control.nmbzones):
817
+ if self.parameters.control.landtype[k] == SEALED:
818
+ self.sequences.fluxes.surfacerunoff[k] = self.sequences.fluxes.ponding[k]
819
+ else:
820
+ self.sequences.fluxes.surfacerunoff[k] = 0.0
821
+ cpdef inline void calc_relativesoilmoisture(self) noexcept nogil:
822
+ cdef numpy.int64_t k
823
+ for k in range(self.parameters.control.nmbzones):
824
+ if (self.parameters.control.soiltype[k] == NONE) or (self.parameters.derived.maxsoilwater[k] <= 0.0):
825
+ self.sequences.factors.relativesoilmoisture[k] = 0.0
826
+ else:
827
+ self.sequences.factors.relativesoilmoisture[k] = self.sequences.states.soilmoisture[k] / self.parameters.derived.maxsoilwater[k]
828
+ cpdef inline void calc_percolation(self) noexcept nogil:
829
+ cdef numpy.int64_t k
830
+ for k in range(self.parameters.control.nmbzones):
831
+ if self.parameters.control.soiltype[k] == NONE:
832
+ self.sequences.fluxes.percolation[k] = 0.0
833
+ else:
834
+ self.sequences.fluxes.percolation[k] = ( self.sequences.fluxes.ponding[k] * self.sequences.factors.relativesoilmoisture[k] ** self.parameters.derived.beta[k] )
835
+ cpdef inline void calc_soilevapotranspiration(self) noexcept nogil:
836
+ if self.aetmodel_typeid == 1:
837
+ self.calc_soilevapotranspiration_aetmodel_v1( (<masterinterface.MasterInterface>self.aetmodel) )
838
+ cpdef inline void calc_totalevapotranspiration(self) noexcept nogil:
839
+ cdef numpy.int64_t k
840
+ for k in range(self.parameters.control.nmbzones):
841
+ if self.parameters.control.landtype[k] == WATER:
842
+ self.sequences.fluxes.totalevapotranspiration[k] = self.sequences.fluxes.lakeevaporation[k]
843
+ else:
844
+ self.sequences.fluxes.totalevapotranspiration[k] = self.sequences.fluxes.interceptionevaporation[k]
845
+ if self.parameters.control.soiltype[k] != NONE:
846
+ self.sequences.fluxes.totalevapotranspiration[k] = self.sequences.fluxes.totalevapotranspiration[k] + (self.sequences.fluxes.soilevapotranspiration[k])
847
+ cpdef inline void calc_capillaryrise(self) noexcept nogil:
848
+ cdef numpy.int64_t k
849
+ for k in range(self.parameters.control.nmbzones):
850
+ if (self.parameters.control.soiltype[k] == NONE) or not self.parameters.control.withcapillaryrise:
851
+ self.sequences.fluxes.capillaryrise[k] = 0.0
852
+ else:
853
+ self.sequences.fluxes.capillaryrise[k] = ( self.parameters.derived.potentialcapillaryrise[k] * (1.0 - self.sequences.factors.relativesoilmoisture[k]) ** 3 )
854
+ cpdef inline void calc_soilmoisture(self) noexcept nogil:
855
+ cdef double delta
856
+ cdef double factor
857
+ cdef double decrease
858
+ cdef double increase
859
+ cdef numpy.int64_t k
860
+ for k in range(self.parameters.control.nmbzones):
861
+ if self.parameters.control.soiltype[k] == NONE:
862
+ self.sequences.new_states.soilmoisture[k] = 0.0
863
+ self.sequences.fluxes.percolation[k] = 0.0
864
+ self.sequences.fluxes.capillaryrise[k] = 0.0
865
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
866
+ else:
867
+ increase = self.sequences.fluxes.ponding[k] + self.sequences.fluxes.capillaryrise[k]
868
+ decrease = self.sequences.fluxes.percolation[k]
869
+ if self.sequences.fluxes.soilevapotranspiration[k] < 0.0:
870
+ increase = increase - (self.sequences.fluxes.soilevapotranspiration[k])
871
+ else:
872
+ decrease = decrease + (self.sequences.fluxes.soilevapotranspiration[k])
873
+ self.sequences.new_states.soilmoisture[k] = self.sequences.old_states.soilmoisture[k] + increase - decrease
874
+ if self.sequences.new_states.soilmoisture[k] < 0.0:
875
+ factor = (self.sequences.old_states.soilmoisture[k] + increase) / decrease
876
+ self.sequences.fluxes.percolation[k] = self.sequences.fluxes.percolation[k] * (factor)
877
+ if self.sequences.fluxes.soilevapotranspiration[k] >= 0.0:
878
+ self.sequences.fluxes.soilevapotranspiration[k] = self.sequences.fluxes.soilevapotranspiration[k] * (factor)
879
+ self.sequences.new_states.soilmoisture[k] = 0.0
880
+ elif self.sequences.new_states.soilmoisture[k] > self.parameters.derived.maxsoilwater[k]:
881
+ delta = self.sequences.new_states.soilmoisture[k] - self.parameters.derived.maxsoilwater[k]
882
+ if self.sequences.fluxes.capillaryrise[k] >= delta:
883
+ self.sequences.fluxes.capillaryrise[k] = self.sequences.fluxes.capillaryrise[k] - (delta)
884
+ self.sequences.new_states.soilmoisture[k] = self.parameters.derived.maxsoilwater[k]
885
+ else:
886
+ self.sequences.new_states.soilmoisture[k] = self.sequences.new_states.soilmoisture[k] - (self.sequences.fluxes.capillaryrise[k])
887
+ self.sequences.fluxes.capillaryrise[k] = 0.0
888
+ self.sequences.fluxes.percolation[k] = self.sequences.fluxes.percolation[k] + (self.sequences.new_states.soilmoisture[k] - self.parameters.derived.maxsoilwater[k])
889
+ self.sequences.new_states.soilmoisture[k] = self.parameters.derived.maxsoilwater[k]
890
+ cpdef inline void calc_requiredirrigation(self) noexcept nogil:
891
+ cdef double sm
892
+ cdef numpy.int64_t l
893
+ cdef numpy.int64_t k
894
+ cdef numpy.int64_t m
895
+ m = self.parameters.derived.moy[self.idx_sim]
896
+ for k in range(self.parameters.control.nmbzones):
897
+ l = self.parameters.control.landtype[k] - 1
898
+ sm = self.sequences.factors.relativesoilmoisture[k]
899
+ if (self.parameters.control.soiltype[k] == NONE) or (sm >= self.parameters.control.irrigationtrigger[l, m]):
900
+ self.sequences.fluxes.requiredirrigation[k] = 0.0
901
+ else:
902
+ self.sequences.fluxes.requiredirrigation[k] = self.parameters.derived.maxsoilwater[k] * ( self.parameters.control.irrigationtarget[l, m] - sm )
903
+ cpdef inline void calc_externalirrigation_soilmoisture(self) noexcept nogil:
904
+ cdef numpy.int64_t k
905
+ for k in range(self.parameters.control.nmbzones):
906
+ if self.parameters.control.soiltype[k] == NONE:
907
+ self.sequences.states.soilmoisture[k] = 0.0
908
+ self.sequences.fluxes.externalirrigation[k] = 0.0
909
+ elif self.parameters.control.withexternalirrigation:
910
+ self.sequences.fluxes.externalirrigation[k] = self.sequences.fluxes.requiredirrigation[k]
911
+ self.sequences.states.soilmoisture[k] = self.sequences.states.soilmoisture[k] + (self.sequences.fluxes.externalirrigation[k])
912
+ else:
913
+ self.sequences.fluxes.externalirrigation[k] = 0.0
914
+ cpdef inline void calc_potentialrecharge(self) noexcept nogil:
915
+ cdef numpy.int64_t k
916
+ for k in range(self.parameters.control.nmbzones):
917
+ if self.parameters.control.landtype[k] == SEALED:
918
+ self.sequences.fluxes.potentialrecharge[k] = 0.0
919
+ elif self.parameters.control.landtype[k] == WATER:
920
+ self.sequences.fluxes.potentialrecharge[k] = self.sequences.inputs.precipitation - self.sequences.fluxes.lakeevaporation[k]
921
+ else:
922
+ self.sequences.fluxes.potentialrecharge[k] = self.sequences.fluxes.percolation[k] - self.sequences.fluxes.capillaryrise[k]
923
+ cpdef inline void calc_baseflow(self) noexcept nogil:
924
+ cdef numpy.int64_t k
925
+ for k in range(self.parameters.control.nmbzones):
926
+ if self.parameters.control.landtype[k] == SEALED:
927
+ self.sequences.fluxes.baseflow[k] = 0.0
928
+ else:
929
+ self.sequences.fluxes.baseflow[k] = (1.0 - self.parameters.control.baseflowindex[k]) * max( self.sequences.fluxes.potentialrecharge[k], 0.0 )
930
+ cpdef inline void calc_actualrecharge(self) noexcept nogil:
931
+ cdef numpy.int64_t k
932
+ self.sequences.fluxes.actualrecharge = 0.0
933
+ for k in range(self.parameters.control.nmbzones):
934
+ if self.parameters.control.landtype[k] != SEALED:
935
+ self.sequences.fluxes.actualrecharge = self.sequences.fluxes.actualrecharge + (self.parameters.derived.zoneratio[k] * ( self.sequences.fluxes.potentialrecharge[k] - self.sequences.fluxes.baseflow[k] ))
936
+ cpdef inline void calc_delayedrecharge_deepwater(self) noexcept nogil:
937
+ if self.parameters.control.rechargedelay > 0.0:
938
+ self.sequences.new_states.deepwater = (self.sequences.fluxes.actualrecharge + self.sequences.old_states.deepwater) * exp( -1.0 / self.parameters.control.rechargedelay )
939
+ self.sequences.fluxes.delayedrecharge = self.sequences.fluxes.actualrecharge + self.sequences.old_states.deepwater - self.sequences.new_states.deepwater
940
+ else:
941
+ self.sequences.fluxes.delayedrecharge = self.sequences.old_states.deepwater + self.sequences.fluxes.actualrecharge
942
+ self.sequences.new_states.deepwater = 0.0
943
+ cpdef double get_temperature(self, numpy.int64_t s) noexcept nogil:
944
+ return self.sequences.inputs.temperature
945
+ cpdef double get_meantemperature(self) noexcept nogil:
946
+ return self.sequences.inputs.temperature
947
+ cpdef double get_precipitation(self, numpy.int64_t s) noexcept nogil:
948
+ return self.sequences.inputs.precipitation
949
+ cpdef double get_interceptedwater(self, numpy.int64_t k) noexcept nogil:
950
+ return self.sequences.states.interceptedwater[k]
951
+ cpdef double get_soilwater(self, numpy.int64_t k) noexcept nogil:
952
+ return self.sequences.states.soilmoisture[k]
953
+ cpdef double get_snowcover(self, numpy.int64_t k) noexcept nogil:
954
+ if self.sequences.states.snowpack[k] > 0.0:
955
+ return 1.0
956
+ return 0.0
957
+ cpdef inline void calc_interceptionevaporation_interceptedwater_aetmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
958
+ cdef numpy.int64_t k
959
+ submodel.determine_interceptionevaporation()
960
+ for k in range(self.parameters.control.nmbzones):
961
+ if self.parameters.control.landtype[k] == WATER:
962
+ self.sequences.fluxes.interceptionevaporation[k] = 0.0
963
+ self.sequences.states.interceptedwater[k] = 0.0
964
+ else:
965
+ self.sequences.fluxes.interceptionevaporation[k] = min( submodel.get_interceptionevaporation(k), self.sequences.states.interceptedwater[k] )
966
+ self.sequences.states.interceptedwater[k] = self.sequences.states.interceptedwater[k] - (self.sequences.fluxes.interceptionevaporation[k])
967
+ cpdef inline void calc_lakeevaporation_aetmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
968
+ cdef numpy.int64_t k
969
+ submodel.determine_waterevaporation()
970
+ for k in range(self.parameters.control.nmbzones):
971
+ if self.parameters.control.landtype[k] == WATER:
972
+ self.sequences.fluxes.lakeevaporation[k] = submodel.get_waterevaporation(k)
973
+ else:
974
+ self.sequences.fluxes.lakeevaporation[k] = 0.0
975
+ cpdef inline void calc_soilevapotranspiration_aetmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
976
+ cdef numpy.int64_t k
977
+ submodel.determine_soilevapotranspiration()
978
+ for k in range(self.parameters.control.nmbzones):
979
+ if self.parameters.control.soiltype[k] == NONE:
980
+ self.sequences.fluxes.soilevapotranspiration[k] = 0.0
981
+ else:
982
+ self.sequences.fluxes.soilevapotranspiration[k] = submodel.get_soilevapotranspiration(k)