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