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