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,1296 @@
1
+ #!python
2
+ # distutils: define_macros=NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
3
+ # cython: language_level=3
4
+ # cython: cpow=True
5
+ # cython: boundscheck=False
6
+ # cython: wraparound=False
7
+ # cython: initializedcheck=False
8
+ # cython: cdivision=True
9
+ from typing import Optional
10
+ import numpy
11
+ cimport numpy
12
+ from libc.math cimport exp, fabs, log, sin, cos, tan, tanh, asin, acos, atan, isnan, isinf
13
+ from libc.math cimport NAN as nan
14
+ from libc.math cimport INFINITY as inf
15
+ import cython
16
+ from cpython.mem cimport PyMem_Malloc
17
+ from cpython.mem cimport PyMem_Realloc
18
+ from cpython.mem cimport PyMem_Free
19
+ from hydpy.cythons.autogen cimport configutils
20
+ from hydpy.cythons.autogen cimport interfaceutils
21
+ from hydpy.cythons.autogen cimport interputils
22
+ from hydpy.cythons.autogen import pointerutils
23
+ from hydpy.cythons.autogen cimport pointerutils
24
+ from hydpy.cythons.autogen cimport quadutils
25
+ from hydpy.cythons.autogen cimport rootutils
26
+ from hydpy.cythons.autogen cimport smoothutils
27
+ from hydpy.cythons.autogen cimport masterinterface
28
+
29
+
30
+ cdef void do_nothing(Model model) noexcept nogil:
31
+ pass
32
+
33
+ cpdef get_wrapper():
34
+ cdef CallbackWrapper wrapper = CallbackWrapper()
35
+ wrapper.callback = do_nothing
36
+ return wrapper
37
+
38
+ @cython.final
39
+ cdef class Parameters:
40
+ pass
41
+ @cython.final
42
+ cdef class ControlParameters:
43
+ pass
44
+ @cython.final
45
+ cdef class DerivedParameters:
46
+ pass
47
+ @cython.final
48
+ cdef class FixedParameters:
49
+ pass
50
+ @cython.final
51
+ cdef class Sequences:
52
+ pass
53
+ @cython.final
54
+ cdef class InputSequences:
55
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
56
+ cdef numpy.int64_t k
57
+ if self._relativehumidity_inputflag:
58
+ self.relativehumidity = self._relativehumidity_inputpointer[0]
59
+ elif self._relativehumidity_diskflag_reading:
60
+ self.relativehumidity = self._relativehumidity_ncarray[0]
61
+ elif self._relativehumidity_ramflag:
62
+ self.relativehumidity = self._relativehumidity_array[idx]
63
+ if self._windspeed_inputflag:
64
+ self.windspeed = self._windspeed_inputpointer[0]
65
+ elif self._windspeed_diskflag_reading:
66
+ self.windspeed = self._windspeed_ncarray[0]
67
+ elif self._windspeed_ramflag:
68
+ self.windspeed = self._windspeed_array[idx]
69
+ if self._atmosphericpressure_inputflag:
70
+ self.atmosphericpressure = self._atmosphericpressure_inputpointer[0]
71
+ elif self._atmosphericpressure_diskflag_reading:
72
+ self.atmosphericpressure = self._atmosphericpressure_ncarray[0]
73
+ elif self._atmosphericpressure_ramflag:
74
+ self.atmosphericpressure = self._atmosphericpressure_array[idx]
75
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
76
+ cdef numpy.int64_t k
77
+ if self._relativehumidity_diskflag_writing:
78
+ self._relativehumidity_ncarray[0] = self.relativehumidity
79
+ if self._relativehumidity_ramflag:
80
+ self._relativehumidity_array[idx] = self.relativehumidity
81
+ if self._windspeed_diskflag_writing:
82
+ self._windspeed_ncarray[0] = self.windspeed
83
+ if self._windspeed_ramflag:
84
+ self._windspeed_array[idx] = self.windspeed
85
+ if self._atmosphericpressure_diskflag_writing:
86
+ self._atmosphericpressure_ncarray[0] = self.atmosphericpressure
87
+ if self._atmosphericpressure_ramflag:
88
+ self._atmosphericpressure_array[idx] = self.atmosphericpressure
89
+ cpdef inline set_pointerinput(self, str name, pointerutils.PDouble value):
90
+ if name == "relativehumidity":
91
+ self._relativehumidity_inputpointer = value.p_value
92
+ if name == "windspeed":
93
+ self._windspeed_inputpointer = value.p_value
94
+ if name == "atmosphericpressure":
95
+ self._atmosphericpressure_inputpointer = value.p_value
96
+ @cython.final
97
+ cdef class FactorSequences:
98
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
99
+ cdef numpy.int64_t jdx0
100
+ cdef numpy.int64_t k
101
+ if self._airtemperature_diskflag_reading:
102
+ k = 0
103
+ for jdx0 in range(self._airtemperature_length_0):
104
+ self.airtemperature[jdx0] = self._airtemperature_ncarray[k]
105
+ k += 1
106
+ elif self._airtemperature_ramflag:
107
+ for jdx0 in range(self._airtemperature_length_0):
108
+ self.airtemperature[jdx0] = self._airtemperature_array[idx, jdx0]
109
+ if self._windspeed10m_diskflag_reading:
110
+ self.windspeed10m = self._windspeed10m_ncarray[0]
111
+ elif self._windspeed10m_ramflag:
112
+ self.windspeed10m = self._windspeed10m_array[idx]
113
+ if self._sunshineduration_diskflag_reading:
114
+ self.sunshineduration = self._sunshineduration_ncarray[0]
115
+ elif self._sunshineduration_ramflag:
116
+ self.sunshineduration = self._sunshineduration_array[idx]
117
+ if self._possiblesunshineduration_diskflag_reading:
118
+ self.possiblesunshineduration = self._possiblesunshineduration_ncarray[0]
119
+ elif self._possiblesunshineduration_ramflag:
120
+ self.possiblesunshineduration = self._possiblesunshineduration_array[idx]
121
+ if self._saturationvapourpressure_diskflag_reading:
122
+ k = 0
123
+ for jdx0 in range(self._saturationvapourpressure_length_0):
124
+ self.saturationvapourpressure[jdx0] = self._saturationvapourpressure_ncarray[k]
125
+ k += 1
126
+ elif self._saturationvapourpressure_ramflag:
127
+ for jdx0 in range(self._saturationvapourpressure_length_0):
128
+ self.saturationvapourpressure[jdx0] = self._saturationvapourpressure_array[idx, jdx0]
129
+ if self._saturationvapourpressureslope_diskflag_reading:
130
+ k = 0
131
+ for jdx0 in range(self._saturationvapourpressureslope_length_0):
132
+ self.saturationvapourpressureslope[jdx0] = self._saturationvapourpressureslope_ncarray[k]
133
+ k += 1
134
+ elif self._saturationvapourpressureslope_ramflag:
135
+ for jdx0 in range(self._saturationvapourpressureslope_length_0):
136
+ self.saturationvapourpressureslope[jdx0] = self._saturationvapourpressureslope_array[idx, jdx0]
137
+ if self._actualvapourpressure_diskflag_reading:
138
+ k = 0
139
+ for jdx0 in range(self._actualvapourpressure_length_0):
140
+ self.actualvapourpressure[jdx0] = self._actualvapourpressure_ncarray[k]
141
+ k += 1
142
+ elif self._actualvapourpressure_ramflag:
143
+ for jdx0 in range(self._actualvapourpressure_length_0):
144
+ self.actualvapourpressure[jdx0] = self._actualvapourpressure_array[idx, jdx0]
145
+ if self._dryairpressure_diskflag_reading:
146
+ k = 0
147
+ for jdx0 in range(self._dryairpressure_length_0):
148
+ self.dryairpressure[jdx0] = self._dryairpressure_ncarray[k]
149
+ k += 1
150
+ elif self._dryairpressure_ramflag:
151
+ for jdx0 in range(self._dryairpressure_length_0):
152
+ self.dryairpressure[jdx0] = self._dryairpressure_array[idx, jdx0]
153
+ if self._airdensity_diskflag_reading:
154
+ k = 0
155
+ for jdx0 in range(self._airdensity_length_0):
156
+ self.airdensity[jdx0] = self._airdensity_ncarray[k]
157
+ k += 1
158
+ elif self._airdensity_ramflag:
159
+ for jdx0 in range(self._airdensity_length_0):
160
+ self.airdensity[jdx0] = self._airdensity_array[idx, jdx0]
161
+ if self._currentalbedo_diskflag_reading:
162
+ k = 0
163
+ for jdx0 in range(self._currentalbedo_length_0):
164
+ self.currentalbedo[jdx0] = self._currentalbedo_ncarray[k]
165
+ k += 1
166
+ elif self._currentalbedo_ramflag:
167
+ for jdx0 in range(self._currentalbedo_length_0):
168
+ self.currentalbedo[jdx0] = self._currentalbedo_array[idx, jdx0]
169
+ if self._adjustedcloudcoverage_diskflag_reading:
170
+ self.adjustedcloudcoverage = self._adjustedcloudcoverage_ncarray[0]
171
+ elif self._adjustedcloudcoverage_ramflag:
172
+ self.adjustedcloudcoverage = self._adjustedcloudcoverage_array[idx]
173
+ if self._aerodynamicresistance_diskflag_reading:
174
+ k = 0
175
+ for jdx0 in range(self._aerodynamicresistance_length_0):
176
+ self.aerodynamicresistance[jdx0] = self._aerodynamicresistance_ncarray[k]
177
+ k += 1
178
+ elif self._aerodynamicresistance_ramflag:
179
+ for jdx0 in range(self._aerodynamicresistance_length_0):
180
+ self.aerodynamicresistance[jdx0] = self._aerodynamicresistance_array[idx, jdx0]
181
+ if self._actualsurfaceresistance_diskflag_reading:
182
+ k = 0
183
+ for jdx0 in range(self._actualsurfaceresistance_length_0):
184
+ self.actualsurfaceresistance[jdx0] = self._actualsurfaceresistance_ncarray[k]
185
+ k += 1
186
+ elif self._actualsurfaceresistance_ramflag:
187
+ for jdx0 in range(self._actualsurfaceresistance_length_0):
188
+ self.actualsurfaceresistance[jdx0] = self._actualsurfaceresistance_array[idx, jdx0]
189
+ if self._snowcover_diskflag_reading:
190
+ k = 0
191
+ for jdx0 in range(self._snowcover_length_0):
192
+ self.snowcover[jdx0] = self._snowcover_ncarray[k]
193
+ k += 1
194
+ elif self._snowcover_ramflag:
195
+ for jdx0 in range(self._snowcover_length_0):
196
+ self.snowcover[jdx0] = self._snowcover_array[idx, jdx0]
197
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
198
+ cdef numpy.int64_t jdx0
199
+ cdef numpy.int64_t k
200
+ if self._airtemperature_diskflag_writing:
201
+ k = 0
202
+ for jdx0 in range(self._airtemperature_length_0):
203
+ self._airtemperature_ncarray[k] = self.airtemperature[jdx0]
204
+ k += 1
205
+ if self._airtemperature_ramflag:
206
+ for jdx0 in range(self._airtemperature_length_0):
207
+ self._airtemperature_array[idx, jdx0] = self.airtemperature[jdx0]
208
+ if self._windspeed10m_diskflag_writing:
209
+ self._windspeed10m_ncarray[0] = self.windspeed10m
210
+ if self._windspeed10m_ramflag:
211
+ self._windspeed10m_array[idx] = self.windspeed10m
212
+ if self._sunshineduration_diskflag_writing:
213
+ self._sunshineduration_ncarray[0] = self.sunshineduration
214
+ if self._sunshineduration_ramflag:
215
+ self._sunshineduration_array[idx] = self.sunshineduration
216
+ if self._possiblesunshineduration_diskflag_writing:
217
+ self._possiblesunshineduration_ncarray[0] = self.possiblesunshineduration
218
+ if self._possiblesunshineduration_ramflag:
219
+ self._possiblesunshineduration_array[idx] = self.possiblesunshineduration
220
+ if self._saturationvapourpressure_diskflag_writing:
221
+ k = 0
222
+ for jdx0 in range(self._saturationvapourpressure_length_0):
223
+ self._saturationvapourpressure_ncarray[k] = self.saturationvapourpressure[jdx0]
224
+ k += 1
225
+ if self._saturationvapourpressure_ramflag:
226
+ for jdx0 in range(self._saturationvapourpressure_length_0):
227
+ self._saturationvapourpressure_array[idx, jdx0] = self.saturationvapourpressure[jdx0]
228
+ if self._saturationvapourpressureslope_diskflag_writing:
229
+ k = 0
230
+ for jdx0 in range(self._saturationvapourpressureslope_length_0):
231
+ self._saturationvapourpressureslope_ncarray[k] = self.saturationvapourpressureslope[jdx0]
232
+ k += 1
233
+ if self._saturationvapourpressureslope_ramflag:
234
+ for jdx0 in range(self._saturationvapourpressureslope_length_0):
235
+ self._saturationvapourpressureslope_array[idx, jdx0] = self.saturationvapourpressureslope[jdx0]
236
+ if self._actualvapourpressure_diskflag_writing:
237
+ k = 0
238
+ for jdx0 in range(self._actualvapourpressure_length_0):
239
+ self._actualvapourpressure_ncarray[k] = self.actualvapourpressure[jdx0]
240
+ k += 1
241
+ if self._actualvapourpressure_ramflag:
242
+ for jdx0 in range(self._actualvapourpressure_length_0):
243
+ self._actualvapourpressure_array[idx, jdx0] = self.actualvapourpressure[jdx0]
244
+ if self._dryairpressure_diskflag_writing:
245
+ k = 0
246
+ for jdx0 in range(self._dryairpressure_length_0):
247
+ self._dryairpressure_ncarray[k] = self.dryairpressure[jdx0]
248
+ k += 1
249
+ if self._dryairpressure_ramflag:
250
+ for jdx0 in range(self._dryairpressure_length_0):
251
+ self._dryairpressure_array[idx, jdx0] = self.dryairpressure[jdx0]
252
+ if self._airdensity_diskflag_writing:
253
+ k = 0
254
+ for jdx0 in range(self._airdensity_length_0):
255
+ self._airdensity_ncarray[k] = self.airdensity[jdx0]
256
+ k += 1
257
+ if self._airdensity_ramflag:
258
+ for jdx0 in range(self._airdensity_length_0):
259
+ self._airdensity_array[idx, jdx0] = self.airdensity[jdx0]
260
+ if self._currentalbedo_diskflag_writing:
261
+ k = 0
262
+ for jdx0 in range(self._currentalbedo_length_0):
263
+ self._currentalbedo_ncarray[k] = self.currentalbedo[jdx0]
264
+ k += 1
265
+ if self._currentalbedo_ramflag:
266
+ for jdx0 in range(self._currentalbedo_length_0):
267
+ self._currentalbedo_array[idx, jdx0] = self.currentalbedo[jdx0]
268
+ if self._adjustedcloudcoverage_diskflag_writing:
269
+ self._adjustedcloudcoverage_ncarray[0] = self.adjustedcloudcoverage
270
+ if self._adjustedcloudcoverage_ramflag:
271
+ self._adjustedcloudcoverage_array[idx] = self.adjustedcloudcoverage
272
+ if self._aerodynamicresistance_diskflag_writing:
273
+ k = 0
274
+ for jdx0 in range(self._aerodynamicresistance_length_0):
275
+ self._aerodynamicresistance_ncarray[k] = self.aerodynamicresistance[jdx0]
276
+ k += 1
277
+ if self._aerodynamicresistance_ramflag:
278
+ for jdx0 in range(self._aerodynamicresistance_length_0):
279
+ self._aerodynamicresistance_array[idx, jdx0] = self.aerodynamicresistance[jdx0]
280
+ if self._actualsurfaceresistance_diskflag_writing:
281
+ k = 0
282
+ for jdx0 in range(self._actualsurfaceresistance_length_0):
283
+ self._actualsurfaceresistance_ncarray[k] = self.actualsurfaceresistance[jdx0]
284
+ k += 1
285
+ if self._actualsurfaceresistance_ramflag:
286
+ for jdx0 in range(self._actualsurfaceresistance_length_0):
287
+ self._actualsurfaceresistance_array[idx, jdx0] = self.actualsurfaceresistance[jdx0]
288
+ if self._snowcover_diskflag_writing:
289
+ k = 0
290
+ for jdx0 in range(self._snowcover_length_0):
291
+ self._snowcover_ncarray[k] = self.snowcover[jdx0]
292
+ k += 1
293
+ if self._snowcover_ramflag:
294
+ for jdx0 in range(self._snowcover_length_0):
295
+ self._snowcover_array[idx, jdx0] = self.snowcover[jdx0]
296
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
297
+ if name == "windspeed10m":
298
+ self._windspeed10m_outputpointer = value.p_value
299
+ if name == "sunshineduration":
300
+ self._sunshineduration_outputpointer = value.p_value
301
+ if name == "possiblesunshineduration":
302
+ self._possiblesunshineduration_outputpointer = value.p_value
303
+ if name == "adjustedcloudcoverage":
304
+ self._adjustedcloudcoverage_outputpointer = value.p_value
305
+ cpdef inline void update_outputs(self) noexcept nogil:
306
+ if self._windspeed10m_outputflag:
307
+ self._windspeed10m_outputpointer[0] = self.windspeed10m
308
+ if self._sunshineduration_outputflag:
309
+ self._sunshineduration_outputpointer[0] = self.sunshineduration
310
+ if self._possiblesunshineduration_outputflag:
311
+ self._possiblesunshineduration_outputpointer[0] = self.possiblesunshineduration
312
+ if self._adjustedcloudcoverage_outputflag:
313
+ self._adjustedcloudcoverage_outputpointer[0] = self.adjustedcloudcoverage
314
+ @cython.final
315
+ cdef class FluxSequences:
316
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
317
+ cdef numpy.int64_t jdx0
318
+ cdef numpy.int64_t k
319
+ if self._precipitation_diskflag_reading:
320
+ k = 0
321
+ for jdx0 in range(self._precipitation_length_0):
322
+ self.precipitation[jdx0] = self._precipitation_ncarray[k]
323
+ k += 1
324
+ elif self._precipitation_ramflag:
325
+ for jdx0 in range(self._precipitation_length_0):
326
+ self.precipitation[jdx0] = self._precipitation_array[idx, jdx0]
327
+ if self._dailyprecipitation_diskflag_reading:
328
+ k = 0
329
+ for jdx0 in range(self._dailyprecipitation_length_0):
330
+ self.dailyprecipitation[jdx0] = self._dailyprecipitation_ncarray[k]
331
+ k += 1
332
+ elif self._dailyprecipitation_ramflag:
333
+ for jdx0 in range(self._dailyprecipitation_length_0):
334
+ self.dailyprecipitation[jdx0] = self._dailyprecipitation_array[idx, jdx0]
335
+ if self._globalradiation_diskflag_reading:
336
+ self.globalradiation = self._globalradiation_ncarray[0]
337
+ elif self._globalradiation_ramflag:
338
+ self.globalradiation = self._globalradiation_array[idx]
339
+ if self._netshortwaveradiation_diskflag_reading:
340
+ k = 0
341
+ for jdx0 in range(self._netshortwaveradiation_length_0):
342
+ self.netshortwaveradiation[jdx0] = self._netshortwaveradiation_ncarray[k]
343
+ k += 1
344
+ elif self._netshortwaveradiation_ramflag:
345
+ for jdx0 in range(self._netshortwaveradiation_length_0):
346
+ self.netshortwaveradiation[jdx0] = self._netshortwaveradiation_array[idx, jdx0]
347
+ if self._netlongwaveradiation_diskflag_reading:
348
+ k = 0
349
+ for jdx0 in range(self._netlongwaveradiation_length_0):
350
+ self.netlongwaveradiation[jdx0] = self._netlongwaveradiation_ncarray[k]
351
+ k += 1
352
+ elif self._netlongwaveradiation_ramflag:
353
+ for jdx0 in range(self._netlongwaveradiation_length_0):
354
+ self.netlongwaveradiation[jdx0] = self._netlongwaveradiation_array[idx, jdx0]
355
+ if self._netradiation_diskflag_reading:
356
+ k = 0
357
+ for jdx0 in range(self._netradiation_length_0):
358
+ self.netradiation[jdx0] = self._netradiation_ncarray[k]
359
+ k += 1
360
+ elif self._netradiation_ramflag:
361
+ for jdx0 in range(self._netradiation_length_0):
362
+ self.netradiation[jdx0] = self._netradiation_array[idx, jdx0]
363
+ if self._soilheatflux_diskflag_reading:
364
+ k = 0
365
+ for jdx0 in range(self._soilheatflux_length_0):
366
+ self.soilheatflux[jdx0] = self._soilheatflux_ncarray[k]
367
+ k += 1
368
+ elif self._soilheatflux_ramflag:
369
+ for jdx0 in range(self._soilheatflux_length_0):
370
+ self.soilheatflux[jdx0] = self._soilheatflux_array[idx, jdx0]
371
+ if self._potentialinterceptionevaporation_diskflag_reading:
372
+ k = 0
373
+ for jdx0 in range(self._potentialinterceptionevaporation_length_0):
374
+ self.potentialinterceptionevaporation[jdx0] = self._potentialinterceptionevaporation_ncarray[k]
375
+ k += 1
376
+ elif self._potentialinterceptionevaporation_ramflag:
377
+ for jdx0 in range(self._potentialinterceptionevaporation_length_0):
378
+ self.potentialinterceptionevaporation[jdx0] = self._potentialinterceptionevaporation_array[idx, jdx0]
379
+ if self._potentialsoilevapotranspiration_diskflag_reading:
380
+ k = 0
381
+ for jdx0 in range(self._potentialsoilevapotranspiration_length_0):
382
+ self.potentialsoilevapotranspiration[jdx0] = self._potentialsoilevapotranspiration_ncarray[k]
383
+ k += 1
384
+ elif self._potentialsoilevapotranspiration_ramflag:
385
+ for jdx0 in range(self._potentialsoilevapotranspiration_length_0):
386
+ self.potentialsoilevapotranspiration[jdx0] = self._potentialsoilevapotranspiration_array[idx, jdx0]
387
+ if self._dailypotentialsoilevapotranspiration_diskflag_reading:
388
+ k = 0
389
+ for jdx0 in range(self._dailypotentialsoilevapotranspiration_length_0):
390
+ self.dailypotentialsoilevapotranspiration[jdx0] = self._dailypotentialsoilevapotranspiration_ncarray[k]
391
+ k += 1
392
+ elif self._dailypotentialsoilevapotranspiration_ramflag:
393
+ for jdx0 in range(self._dailypotentialsoilevapotranspiration_length_0):
394
+ self.dailypotentialsoilevapotranspiration[jdx0] = self._dailypotentialsoilevapotranspiration_array[idx, jdx0]
395
+ if self._waterevaporation_diskflag_reading:
396
+ k = 0
397
+ for jdx0 in range(self._waterevaporation_length_0):
398
+ self.waterevaporation[jdx0] = self._waterevaporation_ncarray[k]
399
+ k += 1
400
+ elif self._waterevaporation_ramflag:
401
+ for jdx0 in range(self._waterevaporation_length_0):
402
+ self.waterevaporation[jdx0] = self._waterevaporation_array[idx, jdx0]
403
+ if self._dailywaterevaporation_diskflag_reading:
404
+ k = 0
405
+ for jdx0 in range(self._dailywaterevaporation_length_0):
406
+ self.dailywaterevaporation[jdx0] = self._dailywaterevaporation_ncarray[k]
407
+ k += 1
408
+ elif self._dailywaterevaporation_ramflag:
409
+ for jdx0 in range(self._dailywaterevaporation_length_0):
410
+ self.dailywaterevaporation[jdx0] = self._dailywaterevaporation_array[idx, jdx0]
411
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
412
+ cdef numpy.int64_t jdx0
413
+ cdef numpy.int64_t k
414
+ if self._precipitation_diskflag_writing:
415
+ k = 0
416
+ for jdx0 in range(self._precipitation_length_0):
417
+ self._precipitation_ncarray[k] = self.precipitation[jdx0]
418
+ k += 1
419
+ if self._precipitation_ramflag:
420
+ for jdx0 in range(self._precipitation_length_0):
421
+ self._precipitation_array[idx, jdx0] = self.precipitation[jdx0]
422
+ if self._dailyprecipitation_diskflag_writing:
423
+ k = 0
424
+ for jdx0 in range(self._dailyprecipitation_length_0):
425
+ self._dailyprecipitation_ncarray[k] = self.dailyprecipitation[jdx0]
426
+ k += 1
427
+ if self._dailyprecipitation_ramflag:
428
+ for jdx0 in range(self._dailyprecipitation_length_0):
429
+ self._dailyprecipitation_array[idx, jdx0] = self.dailyprecipitation[jdx0]
430
+ if self._globalradiation_diskflag_writing:
431
+ self._globalradiation_ncarray[0] = self.globalradiation
432
+ if self._globalradiation_ramflag:
433
+ self._globalradiation_array[idx] = self.globalradiation
434
+ if self._netshortwaveradiation_diskflag_writing:
435
+ k = 0
436
+ for jdx0 in range(self._netshortwaveradiation_length_0):
437
+ self._netshortwaveradiation_ncarray[k] = self.netshortwaveradiation[jdx0]
438
+ k += 1
439
+ if self._netshortwaveradiation_ramflag:
440
+ for jdx0 in range(self._netshortwaveradiation_length_0):
441
+ self._netshortwaveradiation_array[idx, jdx0] = self.netshortwaveradiation[jdx0]
442
+ if self._netlongwaveradiation_diskflag_writing:
443
+ k = 0
444
+ for jdx0 in range(self._netlongwaveradiation_length_0):
445
+ self._netlongwaveradiation_ncarray[k] = self.netlongwaveradiation[jdx0]
446
+ k += 1
447
+ if self._netlongwaveradiation_ramflag:
448
+ for jdx0 in range(self._netlongwaveradiation_length_0):
449
+ self._netlongwaveradiation_array[idx, jdx0] = self.netlongwaveradiation[jdx0]
450
+ if self._netradiation_diskflag_writing:
451
+ k = 0
452
+ for jdx0 in range(self._netradiation_length_0):
453
+ self._netradiation_ncarray[k] = self.netradiation[jdx0]
454
+ k += 1
455
+ if self._netradiation_ramflag:
456
+ for jdx0 in range(self._netradiation_length_0):
457
+ self._netradiation_array[idx, jdx0] = self.netradiation[jdx0]
458
+ if self._soilheatflux_diskflag_writing:
459
+ k = 0
460
+ for jdx0 in range(self._soilheatflux_length_0):
461
+ self._soilheatflux_ncarray[k] = self.soilheatflux[jdx0]
462
+ k += 1
463
+ if self._soilheatflux_ramflag:
464
+ for jdx0 in range(self._soilheatflux_length_0):
465
+ self._soilheatflux_array[idx, jdx0] = self.soilheatflux[jdx0]
466
+ if self._potentialinterceptionevaporation_diskflag_writing:
467
+ k = 0
468
+ for jdx0 in range(self._potentialinterceptionevaporation_length_0):
469
+ self._potentialinterceptionevaporation_ncarray[k] = self.potentialinterceptionevaporation[jdx0]
470
+ k += 1
471
+ if self._potentialinterceptionevaporation_ramflag:
472
+ for jdx0 in range(self._potentialinterceptionevaporation_length_0):
473
+ self._potentialinterceptionevaporation_array[idx, jdx0] = self.potentialinterceptionevaporation[jdx0]
474
+ if self._potentialsoilevapotranspiration_diskflag_writing:
475
+ k = 0
476
+ for jdx0 in range(self._potentialsoilevapotranspiration_length_0):
477
+ self._potentialsoilevapotranspiration_ncarray[k] = self.potentialsoilevapotranspiration[jdx0]
478
+ k += 1
479
+ if self._potentialsoilevapotranspiration_ramflag:
480
+ for jdx0 in range(self._potentialsoilevapotranspiration_length_0):
481
+ self._potentialsoilevapotranspiration_array[idx, jdx0] = self.potentialsoilevapotranspiration[jdx0]
482
+ if self._dailypotentialsoilevapotranspiration_diskflag_writing:
483
+ k = 0
484
+ for jdx0 in range(self._dailypotentialsoilevapotranspiration_length_0):
485
+ self._dailypotentialsoilevapotranspiration_ncarray[k] = self.dailypotentialsoilevapotranspiration[jdx0]
486
+ k += 1
487
+ if self._dailypotentialsoilevapotranspiration_ramflag:
488
+ for jdx0 in range(self._dailypotentialsoilevapotranspiration_length_0):
489
+ self._dailypotentialsoilevapotranspiration_array[idx, jdx0] = self.dailypotentialsoilevapotranspiration[jdx0]
490
+ if self._waterevaporation_diskflag_writing:
491
+ k = 0
492
+ for jdx0 in range(self._waterevaporation_length_0):
493
+ self._waterevaporation_ncarray[k] = self.waterevaporation[jdx0]
494
+ k += 1
495
+ if self._waterevaporation_ramflag:
496
+ for jdx0 in range(self._waterevaporation_length_0):
497
+ self._waterevaporation_array[idx, jdx0] = self.waterevaporation[jdx0]
498
+ if self._dailywaterevaporation_diskflag_writing:
499
+ k = 0
500
+ for jdx0 in range(self._dailywaterevaporation_length_0):
501
+ self._dailywaterevaporation_ncarray[k] = self.dailywaterevaporation[jdx0]
502
+ k += 1
503
+ if self._dailywaterevaporation_ramflag:
504
+ for jdx0 in range(self._dailywaterevaporation_length_0):
505
+ self._dailywaterevaporation_array[idx, jdx0] = self.dailywaterevaporation[jdx0]
506
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
507
+ if name == "globalradiation":
508
+ self._globalradiation_outputpointer = value.p_value
509
+ cpdef inline void update_outputs(self) noexcept nogil:
510
+ if self._globalradiation_outputflag:
511
+ self._globalradiation_outputpointer[0] = self.globalradiation
512
+ @cython.final
513
+ cdef class StateSequences:
514
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
515
+ cdef numpy.int64_t jdx0
516
+ cdef numpy.int64_t k
517
+ if self._cloudcoverage_diskflag_reading:
518
+ self.cloudcoverage = self._cloudcoverage_ncarray[0]
519
+ elif self._cloudcoverage_ramflag:
520
+ self.cloudcoverage = self._cloudcoverage_array[idx]
521
+ if self._soilresistance_diskflag_reading:
522
+ k = 0
523
+ for jdx0 in range(self._soilresistance_length_0):
524
+ self.soilresistance[jdx0] = self._soilresistance_ncarray[k]
525
+ k += 1
526
+ elif self._soilresistance_ramflag:
527
+ for jdx0 in range(self._soilresistance_length_0):
528
+ self.soilresistance[jdx0] = self._soilresistance_array[idx, jdx0]
529
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
530
+ cdef numpy.int64_t jdx0
531
+ cdef numpy.int64_t k
532
+ if self._cloudcoverage_diskflag_writing:
533
+ self._cloudcoverage_ncarray[0] = self.cloudcoverage
534
+ if self._cloudcoverage_ramflag:
535
+ self._cloudcoverage_array[idx] = self.cloudcoverage
536
+ if self._soilresistance_diskflag_writing:
537
+ k = 0
538
+ for jdx0 in range(self._soilresistance_length_0):
539
+ self._soilresistance_ncarray[k] = self.soilresistance[jdx0]
540
+ k += 1
541
+ if self._soilresistance_ramflag:
542
+ for jdx0 in range(self._soilresistance_length_0):
543
+ self._soilresistance_array[idx, jdx0] = self.soilresistance[jdx0]
544
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
545
+ if name == "cloudcoverage":
546
+ self._cloudcoverage_outputpointer = value.p_value
547
+ cpdef inline void update_outputs(self) noexcept nogil:
548
+ if self._cloudcoverage_outputflag:
549
+ self._cloudcoverage_outputpointer[0] = self.cloudcoverage
550
+ @cython.final
551
+ cdef class LogSequences:
552
+ pass
553
+ @cython.final
554
+ cdef class Model(masterinterface.MasterInterface):
555
+ def __init__(self):
556
+ super().__init__()
557
+ self.precipmodel = None
558
+ self.precipmodel_is_mainmodel = False
559
+ self.radiationmodel = None
560
+ self.radiationmodel_is_mainmodel = False
561
+ self.snowcovermodel = None
562
+ self.snowcovermodel_is_mainmodel = False
563
+ self.tempmodel = None
564
+ self.tempmodel_is_mainmodel = False
565
+ def get_precipmodel(self) -> masterinterface.MasterInterface | None:
566
+ return self.precipmodel
567
+ def set_precipmodel(self, precipmodel: masterinterface.MasterInterface | None) -> None:
568
+ self.precipmodel = precipmodel
569
+ def get_radiationmodel(self) -> masterinterface.MasterInterface | None:
570
+ return self.radiationmodel
571
+ def set_radiationmodel(self, radiationmodel: masterinterface.MasterInterface | None) -> None:
572
+ self.radiationmodel = radiationmodel
573
+ def get_snowcovermodel(self) -> masterinterface.MasterInterface | None:
574
+ return self.snowcovermodel
575
+ def set_snowcovermodel(self, snowcovermodel: masterinterface.MasterInterface | None) -> None:
576
+ self.snowcovermodel = snowcovermodel
577
+ def get_tempmodel(self) -> masterinterface.MasterInterface | None:
578
+ return self.tempmodel
579
+ def set_tempmodel(self, tempmodel: masterinterface.MasterInterface | None) -> None:
580
+ self.tempmodel = tempmodel
581
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
582
+ self.idx_sim = idx
583
+ self.reset_reuseflags()
584
+ self.load_data(idx)
585
+ self.run()
586
+ self.new2old()
587
+ self.update_outputs()
588
+ cpdef void reset_reuseflags(self) noexcept nogil:
589
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
590
+ self.precipmodel.reset_reuseflags()
591
+ if (self.radiationmodel is not None) and not self.radiationmodel_is_mainmodel:
592
+ self.radiationmodel.reset_reuseflags()
593
+ if (self.snowcovermodel is not None) and not self.snowcovermodel_is_mainmodel:
594
+ self.snowcovermodel.reset_reuseflags()
595
+ if (self.tempmodel is not None) and not self.tempmodel_is_mainmodel:
596
+ self.tempmodel.reset_reuseflags()
597
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
598
+ self.idx_sim = idx
599
+ self.sequences.inputs.load_data(idx)
600
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
601
+ self.precipmodel.load_data(idx)
602
+ if (self.radiationmodel is not None) and not self.radiationmodel_is_mainmodel:
603
+ self.radiationmodel.load_data(idx)
604
+ if (self.snowcovermodel is not None) and not self.snowcovermodel_is_mainmodel:
605
+ self.snowcovermodel.load_data(idx)
606
+ if (self.tempmodel is not None) and not self.tempmodel_is_mainmodel:
607
+ self.tempmodel.load_data(idx)
608
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
609
+ self.idx_sim = idx
610
+ self.sequences.inputs.save_data(idx)
611
+ self.sequences.factors.save_data(idx)
612
+ self.sequences.fluxes.save_data(idx)
613
+ self.sequences.states.save_data(idx)
614
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
615
+ self.precipmodel.save_data(idx)
616
+ if (self.radiationmodel is not None) and not self.radiationmodel_is_mainmodel:
617
+ self.radiationmodel.save_data(idx)
618
+ if (self.snowcovermodel is not None) and not self.snowcovermodel_is_mainmodel:
619
+ self.snowcovermodel.save_data(idx)
620
+ if (self.tempmodel is not None) and not self.tempmodel_is_mainmodel:
621
+ self.tempmodel.save_data(idx)
622
+ cpdef void new2old(self) noexcept nogil:
623
+ cdef numpy.int64_t jdx0
624
+ self.sequences.old_states.cloudcoverage = self.sequences.new_states.cloudcoverage
625
+ for jdx0 in range(self.sequences.states._soilresistance_length_0):
626
+ self.sequences.old_states.soilresistance[jdx0] = self.sequences.new_states.soilresistance[jdx0]
627
+ if (self.precipmodel is not None) and not self.precipmodel_is_mainmodel:
628
+ self.precipmodel.new2old()
629
+ if (self.radiationmodel is not None) and not self.radiationmodel_is_mainmodel:
630
+ self.radiationmodel.new2old()
631
+ if (self.snowcovermodel is not None) and not self.snowcovermodel_is_mainmodel:
632
+ self.snowcovermodel.new2old()
633
+ if (self.tempmodel is not None) and not self.tempmodel_is_mainmodel:
634
+ self.tempmodel.new2old()
635
+ cpdef inline void run(self) noexcept nogil:
636
+ self.determine_potentialinterceptionevaporation_v1()
637
+ self.determine_potentialsoilevapotranspiration_v1()
638
+ self.determine_potentialwaterevaporation_v1()
639
+ cpdef inline void update_inlets(self) noexcept nogil:
640
+ pass
641
+ cpdef inline void update_outlets(self) noexcept nogil:
642
+ pass
643
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
644
+ self.idx_sim = idx
645
+ pass
646
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
647
+ self.idx_sim = idx
648
+ pass
649
+ cpdef inline void update_outputs(self) noexcept nogil:
650
+ self.sequences.factors.update_outputs()
651
+ self.sequences.fluxes.update_outputs()
652
+ self.sequences.states.update_outputs()
653
+ cpdef double get_potentialwaterevaporation_v1(self, numpy.int64_t k) noexcept nogil:
654
+ return self.parameters.derived.days * self.sequences.fluxes.dailywaterevaporation[k]
655
+ cpdef double get_potentialinterceptionevaporation_v1(self, numpy.int64_t k) noexcept nogil:
656
+ return self.sequences.fluxes.potentialinterceptionevaporation[k]
657
+ cpdef double get_potentialsoilevapotranspiration_v1(self, numpy.int64_t k) noexcept nogil:
658
+ return self.sequences.fluxes.potentialsoilevapotranspiration[k]
659
+ cpdef inline void process_radiationmodel_v1(self) noexcept nogil:
660
+ if self.radiationmodel_typeid == 1:
661
+ (<masterinterface.MasterInterface>self.radiationmodel).process_radiation()
662
+ cpdef inline void calc_possiblesunshineduration_v1(self) noexcept nogil:
663
+ if self.radiationmodel_typeid == 1:
664
+ self.sequences.factors.possiblesunshineduration = (<masterinterface.MasterInterface>self.radiationmodel).get_possiblesunshineduration()
665
+ elif self.radiationmodel_typeid == 4:
666
+ self.sequences.factors.possiblesunshineduration = (<masterinterface.MasterInterface>self.radiationmodel).get_possiblesunshineduration()
667
+ cpdef inline void calc_sunshineduration_v1(self) noexcept nogil:
668
+ if self.radiationmodel_typeid == 1:
669
+ self.sequences.factors.sunshineduration = (<masterinterface.MasterInterface>self.radiationmodel).get_sunshineduration()
670
+ elif self.radiationmodel_typeid == 4:
671
+ self.sequences.factors.sunshineduration = (<masterinterface.MasterInterface>self.radiationmodel).get_sunshineduration()
672
+ cpdef inline void calc_globalradiation_v1(self) noexcept nogil:
673
+ if self.radiationmodel_typeid == 1:
674
+ self.sequences.fluxes.globalradiation = (<masterinterface.MasterInterface>self.radiationmodel).get_globalradiation()
675
+ elif self.radiationmodel_typeid == 2:
676
+ self.sequences.fluxes.globalradiation = (<masterinterface.MasterInterface>self.radiationmodel).get_globalradiation()
677
+ elif self.radiationmodel_typeid == 3:
678
+ self.sequences.fluxes.globalradiation = (<masterinterface.MasterInterface>self.radiationmodel).get_globalradiation()
679
+ elif self.radiationmodel_typeid == 4:
680
+ self.sequences.fluxes.globalradiation = (<masterinterface.MasterInterface>self.radiationmodel).get_globalradiation()
681
+ cpdef inline void calc_airtemperature_v1(self) noexcept nogil:
682
+ if self.tempmodel_typeid == 1:
683
+ self.calc_airtemperature_tempmodel_v1( (<masterinterface.MasterInterface>self.tempmodel) )
684
+ elif self.tempmodel_typeid == 2:
685
+ self.calc_airtemperature_tempmodel_v2( (<masterinterface.MasterInterface>self.tempmodel) )
686
+ cpdef inline double return_adjustedwindspeed_v1(self, double h) noexcept nogil:
687
+ if h == self.parameters.control.measuringheightwindspeed:
688
+ return self.sequences.inputs.windspeed
689
+ return self.sequences.inputs.windspeed * ( log(h / self.parameters.fixed.roughnesslengthgrass) / log(self.parameters.control.measuringheightwindspeed / self.parameters.fixed.roughnesslengthgrass) )
690
+ cpdef inline void calc_windspeed10m_v1(self) noexcept nogil:
691
+ self.sequences.factors.windspeed10m = self.return_adjustedwindspeed_v1(10.0)
692
+ cpdef inline void calc_saturationvapourpressure_v1(self) noexcept nogil:
693
+ cdef numpy.int64_t k
694
+ for k in range(self.parameters.control.nmbhru):
695
+ self.sequences.factors.saturationvapourpressure[k] = 6.108 * exp( 17.27 * self.sequences.factors.airtemperature[k] / (self.sequences.factors.airtemperature[k] + 237.3) )
696
+ cpdef inline void calc_saturationvapourpressureslope_v1(self) noexcept nogil:
697
+ cdef numpy.int64_t k
698
+ for k in range(self.parameters.control.nmbhru):
699
+ self.sequences.factors.saturationvapourpressureslope[k] = ( 4098.0 * self.sequences.factors.saturationvapourpressure[k] / (self.sequences.factors.airtemperature[k] + 237.3) ** 2 )
700
+ cpdef inline void calc_actualvapourpressure_v1(self) noexcept nogil:
701
+ cdef numpy.int64_t k
702
+ for k in range(self.parameters.control.nmbhru):
703
+ self.sequences.factors.actualvapourpressure[k] = ( self.sequences.factors.saturationvapourpressure[k] * self.sequences.inputs.relativehumidity / 100.0 )
704
+ cpdef inline void calc_dryairpressure_v1(self) noexcept nogil:
705
+ cdef numpy.int64_t k
706
+ for k in range(self.parameters.control.nmbhru):
707
+ self.sequences.factors.dryairpressure[k] = ( self.sequences.inputs.atmosphericpressure - self.sequences.factors.actualvapourpressure[k] )
708
+ cpdef inline void calc_airdensity_v1(self) noexcept nogil:
709
+ cdef numpy.int64_t k
710
+ for k in range(self.parameters.control.nmbhru):
711
+ self.sequences.factors.airdensity[k] = (100.0 / (self.sequences.factors.airtemperature[k] + 273.15)) * ( self.sequences.factors.dryairpressure[k] / self.parameters.fixed.gasconstantdryair + self.sequences.factors.actualvapourpressure[k] / self.parameters.fixed.gasconstantwatervapour )
712
+ cpdef inline void calc_currentalbedo_v2(self) noexcept nogil:
713
+ cdef double lai
714
+ cdef double a_l
715
+ cdef double a_g
716
+ cdef double wetness
717
+ cdef double a_s
718
+ cdef double w
719
+ cdef numpy.int64_t k
720
+ for k in range(self.parameters.control.nmbhru):
721
+ w = self.sequences.factors.snowcover[k]
722
+ a_s = self.parameters.control.groundalbedo[k]
723
+ if self.parameters.control.soil[k]:
724
+ wetness = self.sequences.fluxes.dailyprecipitation[k] / self.parameters.control.wetnessthreshold[k]
725
+ if wetness >= self.sequences.fluxes.dailypotentialsoilevapotranspiration[k]:
726
+ a_s = a_s / (2.0)
727
+ a_g = w * self.parameters.control.groundalbedosnow[k] + (1.0 - w) * a_s
728
+ a_l = w * self.parameters.control.leafalbedosnow[k] + (1.0 - w) * self.parameters.control.leafalbedo[k]
729
+ if self.parameters.control.plant[k]:
730
+ lai = self.parameters.control.leafareaindex[ self.parameters.control.hrutype[k] - self.parameters.control._leafareaindex_rowmin, self.parameters.derived.moy[self.idx_sim] - self.parameters.control._leafareaindex_columnmin, ]
731
+ if lai < 4.0:
732
+ self.sequences.factors.currentalbedo[k] = a_g + 0.25 * (a_l - a_g) * lai
733
+ else:
734
+ self.sequences.factors.currentalbedo[k] = a_l
735
+ else:
736
+ self.sequences.factors.currentalbedo[k] = a_g
737
+ cpdef inline void calc_netshortwaveradiation_v2(self) noexcept nogil:
738
+ cdef numpy.int64_t k
739
+ for k in range(self.parameters.control.nmbhru):
740
+ self.sequences.fluxes.netshortwaveradiation[k] = self.sequences.fluxes.globalradiation * ( 1.0 - self.sequences.factors.currentalbedo[k] )
741
+ cpdef inline void update_cloudcoverage_v1(self) noexcept nogil:
742
+ cdef double p0
743
+ p0 = self.sequences.factors.possiblesunshineduration
744
+ if (self.parameters.derived.days >= 1.0) or (p0 >= self.parameters.derived.hours):
745
+ self.sequences.states.cloudcoverage = min(self.sequences.factors.sunshineduration / p0, 1.0)
746
+ cpdef inline void calc_adjustedcloudcoverage_v1(self) noexcept nogil:
747
+ cdef double n
748
+ cdef double c
749
+ cdef double w
750
+ w = self.sequences.factors.possiblesunshineduration / self.parameters.derived.hours
751
+ c = self.sequences.states.cloudcoverage
752
+ n = self.parameters.control.nightcloudfactor
753
+ self.sequences.factors.adjustedcloudcoverage = w * c + (1.0 - w) * min(n * c, 1.0)
754
+ cpdef inline void calc_netlongwaveradiation_v2(self) noexcept nogil:
755
+ cdef double ra
756
+ cdef double rs
757
+ cdef double a
758
+ cdef double t
759
+ cdef numpy.int64_t k
760
+ cdef double f
761
+ cdef double g
762
+ cdef double s
763
+ s = self.parameters.fixed.stefanboltzmannconstant
764
+ g = self.sequences.fluxes.globalradiation
765
+ f = 1.0 + self.parameters.control.cloudtypefactor * self.sequences.factors.adjustedcloudcoverage**2.0
766
+ for k in range(self.parameters.control.nmbhru):
767
+ t = self.sequences.factors.airtemperature[k]
768
+ a = self.sequences.factors.currentalbedo[k]
769
+ rs = 0.97 * s * (t + 273.1) ** 4.0 + 0.07 * (1.0 - a) * g
770
+ ra = f * ( (1.0 - 0.261 * exp(-0.000777 * t**2.0)) * (s * (t + 273.1) ** 4.0) )
771
+ self.sequences.fluxes.netlongwaveradiation[k] = rs - ra
772
+ cpdef inline void calc_netradiation_v1(self) noexcept nogil:
773
+ cdef numpy.int64_t k
774
+ for k in range(self.parameters.control.nmbhru):
775
+ self.sequences.fluxes.netradiation[k] = ( self.sequences.fluxes.netshortwaveradiation[k] - self.sequences.fluxes.netlongwaveradiation[k] )
776
+ cpdef inline void calc_aerodynamicresistance_v2(self) noexcept nogil:
777
+ cdef double f
778
+ cdef numpy.int64_t k
779
+ if self.sequences.factors.windspeed10m > 0.0:
780
+ for k in range(self.parameters.control.nmbhru):
781
+ f = self.parameters.derived.aerodynamicresistancefactor[ self.parameters.control.hrutype[k] - self.parameters.derived._aerodynamicresistancefactor_rowmin, self.parameters.derived.moy[self.idx_sim] - self.parameters.derived._aerodynamicresistancefactor_columnmin, ]
782
+ self.sequences.factors.aerodynamicresistance[k] = f / self.sequences.factors.windspeed10m
783
+ else:
784
+ for k in range(self.parameters.control.nmbhru):
785
+ self.sequences.factors.aerodynamicresistance[k] = inf
786
+ cpdef inline void calc_dailyprecipitation_v1(self) noexcept nogil:
787
+ cdef numpy.int64_t idx
788
+ cdef numpy.int64_t k
789
+ for k in range(self.parameters.control.nmbhru):
790
+ self.sequences.fluxes.dailyprecipitation[k] = 0.0
791
+ for idx in range(self.parameters.derived.nmblogentries):
792
+ for k in range(self.parameters.control.nmbhru):
793
+ self.sequences.fluxes.dailyprecipitation[k] = self.sequences.fluxes.dailyprecipitation[k] + (self.sequences.logs.loggedprecipitation[idx, k])
794
+ cpdef inline void calc_dailypotentialsoilevapotranspiration_v1(self) noexcept nogil:
795
+ cdef numpy.int64_t idx
796
+ cdef numpy.int64_t k
797
+ for k in range(self.parameters.control.nmbhru):
798
+ self.sequences.fluxes.dailypotentialsoilevapotranspiration[k] = 0.0
799
+ for idx in range(self.parameters.derived.nmblogentries):
800
+ for k in range(self.parameters.control.nmbhru):
801
+ self.sequences.fluxes.dailypotentialsoilevapotranspiration[ k ] = self.sequences.fluxes.dailypotentialsoilevapotranspiration[ k ] + (self.sequences.logs.loggedpotentialsoilevapotranspiration[idx, k])
802
+ cpdef inline void update_soilresistance_v1(self) noexcept nogil:
803
+ cdef double wetness
804
+ cdef numpy.int64_t k
805
+ for k in range(self.parameters.control.nmbhru):
806
+ if self.parameters.control.soil[k]:
807
+ wetness = self.sequences.fluxes.dailyprecipitation[k] / self.parameters.control.wetnessthreshold[k]
808
+ if wetness < self.sequences.fluxes.dailypotentialsoilevapotranspiration[k]:
809
+ self.sequences.states.soilresistance[k] = self.sequences.states.soilresistance[k] + (self.parameters.control.soilresistanceincrease[k])
810
+ else:
811
+ self.sequences.states.soilresistance[k] = self.parameters.control.wetsoilresistance[k]
812
+ else:
813
+ self.sequences.states.soilresistance[k] = nan
814
+ cpdef inline void calc_actualsurfaceresistance_v2(self) noexcept nogil:
815
+ cdef double w_day
816
+ cdef double r_night_inv
817
+ cdef double r_leaf_night
818
+ cdef double r_day_inv
819
+ cdef double r_leaf_day
820
+ cdef double r_soil
821
+ cdef double w_soil
822
+ cdef double lai
823
+ cdef numpy.int64_t k
824
+ for k in range(self.parameters.control.nmbhru):
825
+ if self.parameters.control.plant[k]:
826
+ lai = self.parameters.control.leafareaindex[ self.parameters.control.hrutype[k] - self.parameters.control._leafareaindex_rowmin, self.parameters.derived.moy[self.idx_sim] - self.parameters.control._leafareaindex_columnmin, ]
827
+ w_soil = (0.8 if lai < 1.0 else 0.7) ** lai
828
+ r_soil = self.sequences.states.soilresistance[k]
829
+ r_leaf_day = self.parameters.control.leafresistance[k]
830
+ r_day_inv = w_soil / r_soil + (1.0 - w_soil) / r_leaf_day
831
+ r_leaf_night = 2800.0
832
+ r_night_inv = 1.0 / r_soil + lai / r_leaf_night
833
+ w_day = self.sequences.factors.possiblesunshineduration / self.parameters.derived.hours
834
+ self.sequences.factors.actualsurfaceresistance[k] = 1.0 / ( w_day * r_day_inv + (1.0 - w_day) * r_night_inv )
835
+ elif self.parameters.control.soil[k]:
836
+ self.sequences.factors.actualsurfaceresistance[k] = self.sequences.states.soilresistance[k]
837
+ else:
838
+ self.sequences.factors.actualsurfaceresistance[k] = 0.0
839
+ cpdef inline void calc_potentialsoilevapotranspiration_v1(self) noexcept nogil:
840
+ cdef double pet
841
+ cdef double r
842
+ cdef numpy.int64_t k
843
+ for k in range(self.parameters.control.nmbhru):
844
+ if self.parameters.control.soil[k]:
845
+ r = self.sequences.factors.actualsurfaceresistance[k]
846
+ pet = self.return_evaporation_penmanmonteith_v2(k, r)
847
+ self.sequences.fluxes.potentialsoilevapotranspiration[k] = pet
848
+ else:
849
+ self.sequences.fluxes.potentialsoilevapotranspiration[k] = 0.0
850
+ cpdef inline double return_evaporation_penmanmonteith_v2(self, numpy.int64_t k, double actualsurfaceresistance) noexcept nogil:
851
+ cdef double ar
852
+ ar = min(max(self.sequences.factors.aerodynamicresistance[k], 1e-6), 1e6)
853
+ return ( ( self.sequences.factors.saturationvapourpressureslope[k] * (self.sequences.fluxes.netradiation[k] - self.sequences.fluxes.soilheatflux[k]) + (self.sequences.factors.airdensity[k] * self.parameters.fixed.heatcapacityair) * (self.sequences.factors.saturationvapourpressure[k] - self.sequences.factors.actualvapourpressure[k]) / ar ) / ( self.sequences.factors.saturationvapourpressureslope[k] + self.parameters.fixed.psychrometricconstant * (1.0 + actualsurfaceresistance / ar) ) ) / self.parameters.fixed.heatofcondensation
854
+ cpdef inline void calc_snowcover_v1(self) noexcept nogil:
855
+ if self.snowcovermodel_typeid == 1:
856
+ self.calc_snowcover_snowcovermodel_v1( (<masterinterface.MasterInterface>self.snowcovermodel) )
857
+ cpdef inline void calc_soilheatflux_v4(self) noexcept nogil:
858
+ cdef double lai
859
+ cdef numpy.int64_t k
860
+ cdef double b
861
+ cdef double a
862
+ cdef double w
863
+ w = self.sequences.factors.possiblesunshineduration / self.parameters.derived.hours
864
+ a = w * 0.2 + (1.0 - w) * 0.5
865
+ b = a * 0.03 / 0.2
866
+ for k in range(self.parameters.control.nmbhru):
867
+ if self.parameters.control.water[k]:
868
+ self.sequences.fluxes.soilheatflux[k] = 0.0
869
+ else:
870
+ lai = self.parameters.control.leafareaindex[ self.parameters.control.hrutype[k] - self.parameters.control._leafareaindex_rowmin, self.parameters.derived.moy[self.idx_sim] - self.parameters.control._leafareaindex_columnmin, ]
871
+ self.sequences.fluxes.soilheatflux[k] = max(a - b * lai, 0.0) * self.sequences.fluxes.netradiation[k]
872
+ cpdef inline void calc_waterevaporation_v4(self) noexcept nogil:
873
+ cdef double evap
874
+ cdef numpy.int64_t k
875
+ for k in range(self.parameters.control.nmbhru):
876
+ if self.parameters.control.water[k]:
877
+ evap = self.return_evaporation_penmanmonteith_v2(k, 0.0)
878
+ self.sequences.fluxes.waterevaporation[k] = evap
879
+ else:
880
+ self.sequences.fluxes.waterevaporation[k] = 0.0
881
+ cpdef inline void calc_airtemperature_tempmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
882
+ cdef numpy.int64_t k
883
+ for k in range(self.parameters.control.nmbhru):
884
+ self.sequences.factors.airtemperature[k] = submodel.get_temperature(k)
885
+ cpdef inline void calc_airtemperature_tempmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
886
+ cdef numpy.int64_t k
887
+ submodel.determine_temperature()
888
+ for k in range(self.parameters.control.nmbhru):
889
+ self.sequences.factors.airtemperature[k] = submodel.get_temperature(k)
890
+ cpdef inline void calc_snowcover_snowcovermodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
891
+ cdef numpy.int64_t k
892
+ for k in range(self.parameters.control.nmbhru):
893
+ self.sequences.factors.snowcover[k] = submodel.get_snowcover(k)
894
+ cpdef inline void calc_potentialinterceptionevaporation_v2(self) noexcept nogil:
895
+ cdef double evap
896
+ cdef numpy.int64_t k
897
+ for k in range(self.parameters.control.nmbhru):
898
+ if self.parameters.control.interception[k]:
899
+ evap = self.return_evaporation_penmanmonteith_v2(k, 0.0)
900
+ self.sequences.fluxes.potentialinterceptionevaporation[k] = evap
901
+ else:
902
+ self.sequences.fluxes.potentialinterceptionevaporation[k] = 0.0
903
+ cpdef inline void calc_precipitation_precipmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
904
+ cdef numpy.int64_t k
905
+ for k in range(self.parameters.control.nmbhru):
906
+ self.sequences.fluxes.precipitation[k] = submodel.get_precipitation(k)
907
+ cpdef inline void calc_precipitation_precipmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
908
+ cdef numpy.int64_t k
909
+ submodel.determine_precipitation()
910
+ for k in range(self.parameters.control.nmbhru):
911
+ self.sequences.fluxes.precipitation[k] = submodel.get_precipitation(k)
912
+ cpdef inline void calc_precipitation_v1(self) noexcept nogil:
913
+ if self.precipmodel_typeid == 1:
914
+ self.calc_precipitation_precipmodel_v1( (<masterinterface.MasterInterface>self.precipmodel) )
915
+ elif self.precipmodel_typeid == 2:
916
+ self.calc_precipitation_precipmodel_v2( (<masterinterface.MasterInterface>self.precipmodel) )
917
+ cpdef inline void update_loggedprecipitation_v1(self) noexcept nogil:
918
+ cdef numpy.int64_t k
919
+ cdef numpy.int64_t idx
920
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
921
+ for k in range(self.parameters.control.nmbhru):
922
+ self.sequences.logs.loggedprecipitation[idx, k] = self.sequences.logs.loggedprecipitation[idx - 1, k]
923
+ for k in range(self.parameters.control.nmbhru):
924
+ self.sequences.logs.loggedprecipitation[0, k] = self.sequences.fluxes.precipitation[k]
925
+ cpdef inline void update_loggedpotentialsoilevapotranspiration_v1(self) noexcept nogil:
926
+ cdef numpy.int64_t k
927
+ cdef numpy.int64_t idx
928
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
929
+ for k in range(self.parameters.control.nmbhru):
930
+ self.sequences.logs.loggedpotentialsoilevapotranspiration[idx, k] = ( self.sequences.logs.loggedpotentialsoilevapotranspiration[idx - 1, k] )
931
+ for k in range(self.parameters.control.nmbhru):
932
+ self.sequences.logs.loggedpotentialsoilevapotranspiration[0, k] = ( self.sequences.fluxes.potentialsoilevapotranspiration[k] )
933
+ cpdef inline void update_loggedwaterevaporation_v1(self) noexcept nogil:
934
+ cdef numpy.int64_t k
935
+ cdef numpy.int64_t idx
936
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
937
+ for k in range(self.parameters.control.nmbhru):
938
+ self.sequences.logs.loggedwaterevaporation[idx, k] = self.sequences.logs.loggedwaterevaporation[ idx - 1, k ]
939
+ for k in range(self.parameters.control.nmbhru):
940
+ self.sequences.logs.loggedwaterevaporation[0, k] = self.sequences.fluxes.waterevaporation[k]
941
+ cpdef inline void calc_dailywaterevaporation_v1(self) noexcept nogil:
942
+ cdef numpy.int64_t idx
943
+ cdef numpy.int64_t k
944
+ for k in range(self.parameters.control.nmbhru):
945
+ self.sequences.fluxes.dailywaterevaporation[k] = 0.0
946
+ for idx in range(self.parameters.derived.nmblogentries):
947
+ for k in range(self.parameters.control.nmbhru):
948
+ self.sequences.fluxes.dailywaterevaporation[k] = self.sequences.fluxes.dailywaterevaporation[k] + (self.sequences.logs.loggedwaterevaporation[idx, k])
949
+ cpdef double get_potentialwaterevaporation(self, numpy.int64_t k) noexcept nogil:
950
+ return self.parameters.derived.days * self.sequences.fluxes.dailywaterevaporation[k]
951
+ cpdef double get_potentialinterceptionevaporation(self, numpy.int64_t k) noexcept nogil:
952
+ return self.sequences.fluxes.potentialinterceptionevaporation[k]
953
+ cpdef double get_potentialsoilevapotranspiration(self, numpy.int64_t k) noexcept nogil:
954
+ return self.sequences.fluxes.potentialsoilevapotranspiration[k]
955
+ cpdef inline void process_radiationmodel(self) noexcept nogil:
956
+ if self.radiationmodel_typeid == 1:
957
+ (<masterinterface.MasterInterface>self.radiationmodel).process_radiation()
958
+ cpdef inline void calc_possiblesunshineduration(self) noexcept nogil:
959
+ if self.radiationmodel_typeid == 1:
960
+ self.sequences.factors.possiblesunshineduration = (<masterinterface.MasterInterface>self.radiationmodel).get_possiblesunshineduration()
961
+ elif self.radiationmodel_typeid == 4:
962
+ self.sequences.factors.possiblesunshineduration = (<masterinterface.MasterInterface>self.radiationmodel).get_possiblesunshineduration()
963
+ cpdef inline void calc_sunshineduration(self) noexcept nogil:
964
+ if self.radiationmodel_typeid == 1:
965
+ self.sequences.factors.sunshineduration = (<masterinterface.MasterInterface>self.radiationmodel).get_sunshineduration()
966
+ elif self.radiationmodel_typeid == 4:
967
+ self.sequences.factors.sunshineduration = (<masterinterface.MasterInterface>self.radiationmodel).get_sunshineduration()
968
+ cpdef inline void calc_globalradiation(self) noexcept nogil:
969
+ if self.radiationmodel_typeid == 1:
970
+ self.sequences.fluxes.globalradiation = (<masterinterface.MasterInterface>self.radiationmodel).get_globalradiation()
971
+ elif self.radiationmodel_typeid == 2:
972
+ self.sequences.fluxes.globalradiation = (<masterinterface.MasterInterface>self.radiationmodel).get_globalradiation()
973
+ elif self.radiationmodel_typeid == 3:
974
+ self.sequences.fluxes.globalradiation = (<masterinterface.MasterInterface>self.radiationmodel).get_globalradiation()
975
+ elif self.radiationmodel_typeid == 4:
976
+ self.sequences.fluxes.globalradiation = (<masterinterface.MasterInterface>self.radiationmodel).get_globalradiation()
977
+ cpdef inline void calc_airtemperature(self) noexcept nogil:
978
+ if self.tempmodel_typeid == 1:
979
+ self.calc_airtemperature_tempmodel_v1( (<masterinterface.MasterInterface>self.tempmodel) )
980
+ elif self.tempmodel_typeid == 2:
981
+ self.calc_airtemperature_tempmodel_v2( (<masterinterface.MasterInterface>self.tempmodel) )
982
+ cpdef inline double return_adjustedwindspeed(self, double h) noexcept nogil:
983
+ if h == self.parameters.control.measuringheightwindspeed:
984
+ return self.sequences.inputs.windspeed
985
+ return self.sequences.inputs.windspeed * ( log(h / self.parameters.fixed.roughnesslengthgrass) / log(self.parameters.control.measuringheightwindspeed / self.parameters.fixed.roughnesslengthgrass) )
986
+ cpdef inline void calc_windspeed10m(self) noexcept nogil:
987
+ self.sequences.factors.windspeed10m = self.return_adjustedwindspeed_v1(10.0)
988
+ cpdef inline void calc_saturationvapourpressure(self) noexcept nogil:
989
+ cdef numpy.int64_t k
990
+ for k in range(self.parameters.control.nmbhru):
991
+ self.sequences.factors.saturationvapourpressure[k] = 6.108 * exp( 17.27 * self.sequences.factors.airtemperature[k] / (self.sequences.factors.airtemperature[k] + 237.3) )
992
+ cpdef inline void calc_saturationvapourpressureslope(self) noexcept nogil:
993
+ cdef numpy.int64_t k
994
+ for k in range(self.parameters.control.nmbhru):
995
+ self.sequences.factors.saturationvapourpressureslope[k] = ( 4098.0 * self.sequences.factors.saturationvapourpressure[k] / (self.sequences.factors.airtemperature[k] + 237.3) ** 2 )
996
+ cpdef inline void calc_actualvapourpressure(self) noexcept nogil:
997
+ cdef numpy.int64_t k
998
+ for k in range(self.parameters.control.nmbhru):
999
+ self.sequences.factors.actualvapourpressure[k] = ( self.sequences.factors.saturationvapourpressure[k] * self.sequences.inputs.relativehumidity / 100.0 )
1000
+ cpdef inline void calc_dryairpressure(self) noexcept nogil:
1001
+ cdef numpy.int64_t k
1002
+ for k in range(self.parameters.control.nmbhru):
1003
+ self.sequences.factors.dryairpressure[k] = ( self.sequences.inputs.atmosphericpressure - self.sequences.factors.actualvapourpressure[k] )
1004
+ cpdef inline void calc_airdensity(self) noexcept nogil:
1005
+ cdef numpy.int64_t k
1006
+ for k in range(self.parameters.control.nmbhru):
1007
+ self.sequences.factors.airdensity[k] = (100.0 / (self.sequences.factors.airtemperature[k] + 273.15)) * ( self.sequences.factors.dryairpressure[k] / self.parameters.fixed.gasconstantdryair + self.sequences.factors.actualvapourpressure[k] / self.parameters.fixed.gasconstantwatervapour )
1008
+ cpdef inline void calc_currentalbedo(self) noexcept nogil:
1009
+ cdef double lai
1010
+ cdef double a_l
1011
+ cdef double a_g
1012
+ cdef double wetness
1013
+ cdef double a_s
1014
+ cdef double w
1015
+ cdef numpy.int64_t k
1016
+ for k in range(self.parameters.control.nmbhru):
1017
+ w = self.sequences.factors.snowcover[k]
1018
+ a_s = self.parameters.control.groundalbedo[k]
1019
+ if self.parameters.control.soil[k]:
1020
+ wetness = self.sequences.fluxes.dailyprecipitation[k] / self.parameters.control.wetnessthreshold[k]
1021
+ if wetness >= self.sequences.fluxes.dailypotentialsoilevapotranspiration[k]:
1022
+ a_s = a_s / (2.0)
1023
+ a_g = w * self.parameters.control.groundalbedosnow[k] + (1.0 - w) * a_s
1024
+ a_l = w * self.parameters.control.leafalbedosnow[k] + (1.0 - w) * self.parameters.control.leafalbedo[k]
1025
+ if self.parameters.control.plant[k]:
1026
+ lai = self.parameters.control.leafareaindex[ self.parameters.control.hrutype[k] - self.parameters.control._leafareaindex_rowmin, self.parameters.derived.moy[self.idx_sim] - self.parameters.control._leafareaindex_columnmin, ]
1027
+ if lai < 4.0:
1028
+ self.sequences.factors.currentalbedo[k] = a_g + 0.25 * (a_l - a_g) * lai
1029
+ else:
1030
+ self.sequences.factors.currentalbedo[k] = a_l
1031
+ else:
1032
+ self.sequences.factors.currentalbedo[k] = a_g
1033
+ cpdef inline void calc_netshortwaveradiation(self) noexcept nogil:
1034
+ cdef numpy.int64_t k
1035
+ for k in range(self.parameters.control.nmbhru):
1036
+ self.sequences.fluxes.netshortwaveradiation[k] = self.sequences.fluxes.globalradiation * ( 1.0 - self.sequences.factors.currentalbedo[k] )
1037
+ cpdef inline void update_cloudcoverage(self) noexcept nogil:
1038
+ cdef double p0
1039
+ p0 = self.sequences.factors.possiblesunshineduration
1040
+ if (self.parameters.derived.days >= 1.0) or (p0 >= self.parameters.derived.hours):
1041
+ self.sequences.states.cloudcoverage = min(self.sequences.factors.sunshineduration / p0, 1.0)
1042
+ cpdef inline void calc_adjustedcloudcoverage(self) noexcept nogil:
1043
+ cdef double n
1044
+ cdef double c
1045
+ cdef double w
1046
+ w = self.sequences.factors.possiblesunshineduration / self.parameters.derived.hours
1047
+ c = self.sequences.states.cloudcoverage
1048
+ n = self.parameters.control.nightcloudfactor
1049
+ self.sequences.factors.adjustedcloudcoverage = w * c + (1.0 - w) * min(n * c, 1.0)
1050
+ cpdef inline void calc_netlongwaveradiation(self) noexcept nogil:
1051
+ cdef double ra
1052
+ cdef double rs
1053
+ cdef double a
1054
+ cdef double t
1055
+ cdef numpy.int64_t k
1056
+ cdef double f
1057
+ cdef double g
1058
+ cdef double s
1059
+ s = self.parameters.fixed.stefanboltzmannconstant
1060
+ g = self.sequences.fluxes.globalradiation
1061
+ f = 1.0 + self.parameters.control.cloudtypefactor * self.sequences.factors.adjustedcloudcoverage**2.0
1062
+ for k in range(self.parameters.control.nmbhru):
1063
+ t = self.sequences.factors.airtemperature[k]
1064
+ a = self.sequences.factors.currentalbedo[k]
1065
+ rs = 0.97 * s * (t + 273.1) ** 4.0 + 0.07 * (1.0 - a) * g
1066
+ ra = f * ( (1.0 - 0.261 * exp(-0.000777 * t**2.0)) * (s * (t + 273.1) ** 4.0) )
1067
+ self.sequences.fluxes.netlongwaveradiation[k] = rs - ra
1068
+ cpdef inline void calc_netradiation(self) noexcept nogil:
1069
+ cdef numpy.int64_t k
1070
+ for k in range(self.parameters.control.nmbhru):
1071
+ self.sequences.fluxes.netradiation[k] = ( self.sequences.fluxes.netshortwaveradiation[k] - self.sequences.fluxes.netlongwaveradiation[k] )
1072
+ cpdef inline void calc_aerodynamicresistance(self) noexcept nogil:
1073
+ cdef double f
1074
+ cdef numpy.int64_t k
1075
+ if self.sequences.factors.windspeed10m > 0.0:
1076
+ for k in range(self.parameters.control.nmbhru):
1077
+ f = self.parameters.derived.aerodynamicresistancefactor[ self.parameters.control.hrutype[k] - self.parameters.derived._aerodynamicresistancefactor_rowmin, self.parameters.derived.moy[self.idx_sim] - self.parameters.derived._aerodynamicresistancefactor_columnmin, ]
1078
+ self.sequences.factors.aerodynamicresistance[k] = f / self.sequences.factors.windspeed10m
1079
+ else:
1080
+ for k in range(self.parameters.control.nmbhru):
1081
+ self.sequences.factors.aerodynamicresistance[k] = inf
1082
+ cpdef inline void calc_dailyprecipitation(self) noexcept nogil:
1083
+ cdef numpy.int64_t idx
1084
+ cdef numpy.int64_t k
1085
+ for k in range(self.parameters.control.nmbhru):
1086
+ self.sequences.fluxes.dailyprecipitation[k] = 0.0
1087
+ for idx in range(self.parameters.derived.nmblogentries):
1088
+ for k in range(self.parameters.control.nmbhru):
1089
+ self.sequences.fluxes.dailyprecipitation[k] = self.sequences.fluxes.dailyprecipitation[k] + (self.sequences.logs.loggedprecipitation[idx, k])
1090
+ cpdef inline void calc_dailypotentialsoilevapotranspiration(self) noexcept nogil:
1091
+ cdef numpy.int64_t idx
1092
+ cdef numpy.int64_t k
1093
+ for k in range(self.parameters.control.nmbhru):
1094
+ self.sequences.fluxes.dailypotentialsoilevapotranspiration[k] = 0.0
1095
+ for idx in range(self.parameters.derived.nmblogentries):
1096
+ for k in range(self.parameters.control.nmbhru):
1097
+ self.sequences.fluxes.dailypotentialsoilevapotranspiration[ k ] = self.sequences.fluxes.dailypotentialsoilevapotranspiration[ k ] + (self.sequences.logs.loggedpotentialsoilevapotranspiration[idx, k])
1098
+ cpdef inline void update_soilresistance(self) noexcept nogil:
1099
+ cdef double wetness
1100
+ cdef numpy.int64_t k
1101
+ for k in range(self.parameters.control.nmbhru):
1102
+ if self.parameters.control.soil[k]:
1103
+ wetness = self.sequences.fluxes.dailyprecipitation[k] / self.parameters.control.wetnessthreshold[k]
1104
+ if wetness < self.sequences.fluxes.dailypotentialsoilevapotranspiration[k]:
1105
+ self.sequences.states.soilresistance[k] = self.sequences.states.soilresistance[k] + (self.parameters.control.soilresistanceincrease[k])
1106
+ else:
1107
+ self.sequences.states.soilresistance[k] = self.parameters.control.wetsoilresistance[k]
1108
+ else:
1109
+ self.sequences.states.soilresistance[k] = nan
1110
+ cpdef inline void calc_actualsurfaceresistance(self) noexcept nogil:
1111
+ cdef double w_day
1112
+ cdef double r_night_inv
1113
+ cdef double r_leaf_night
1114
+ cdef double r_day_inv
1115
+ cdef double r_leaf_day
1116
+ cdef double r_soil
1117
+ cdef double w_soil
1118
+ cdef double lai
1119
+ cdef numpy.int64_t k
1120
+ for k in range(self.parameters.control.nmbhru):
1121
+ if self.parameters.control.plant[k]:
1122
+ lai = self.parameters.control.leafareaindex[ self.parameters.control.hrutype[k] - self.parameters.control._leafareaindex_rowmin, self.parameters.derived.moy[self.idx_sim] - self.parameters.control._leafareaindex_columnmin, ]
1123
+ w_soil = (0.8 if lai < 1.0 else 0.7) ** lai
1124
+ r_soil = self.sequences.states.soilresistance[k]
1125
+ r_leaf_day = self.parameters.control.leafresistance[k]
1126
+ r_day_inv = w_soil / r_soil + (1.0 - w_soil) / r_leaf_day
1127
+ r_leaf_night = 2800.0
1128
+ r_night_inv = 1.0 / r_soil + lai / r_leaf_night
1129
+ w_day = self.sequences.factors.possiblesunshineduration / self.parameters.derived.hours
1130
+ self.sequences.factors.actualsurfaceresistance[k] = 1.0 / ( w_day * r_day_inv + (1.0 - w_day) * r_night_inv )
1131
+ elif self.parameters.control.soil[k]:
1132
+ self.sequences.factors.actualsurfaceresistance[k] = self.sequences.states.soilresistance[k]
1133
+ else:
1134
+ self.sequences.factors.actualsurfaceresistance[k] = 0.0
1135
+ cpdef inline void calc_potentialsoilevapotranspiration(self) noexcept nogil:
1136
+ cdef double pet
1137
+ cdef double r
1138
+ cdef numpy.int64_t k
1139
+ for k in range(self.parameters.control.nmbhru):
1140
+ if self.parameters.control.soil[k]:
1141
+ r = self.sequences.factors.actualsurfaceresistance[k]
1142
+ pet = self.return_evaporation_penmanmonteith_v2(k, r)
1143
+ self.sequences.fluxes.potentialsoilevapotranspiration[k] = pet
1144
+ else:
1145
+ self.sequences.fluxes.potentialsoilevapotranspiration[k] = 0.0
1146
+ cpdef inline double return_evaporation_penmanmonteith(self, numpy.int64_t k, double actualsurfaceresistance) noexcept nogil:
1147
+ cdef double ar
1148
+ ar = min(max(self.sequences.factors.aerodynamicresistance[k], 1e-6), 1e6)
1149
+ return ( ( self.sequences.factors.saturationvapourpressureslope[k] * (self.sequences.fluxes.netradiation[k] - self.sequences.fluxes.soilheatflux[k]) + (self.sequences.factors.airdensity[k] * self.parameters.fixed.heatcapacityair) * (self.sequences.factors.saturationvapourpressure[k] - self.sequences.factors.actualvapourpressure[k]) / ar ) / ( self.sequences.factors.saturationvapourpressureslope[k] + self.parameters.fixed.psychrometricconstant * (1.0 + actualsurfaceresistance / ar) ) ) / self.parameters.fixed.heatofcondensation
1150
+ cpdef inline void calc_snowcover(self) noexcept nogil:
1151
+ if self.snowcovermodel_typeid == 1:
1152
+ self.calc_snowcover_snowcovermodel_v1( (<masterinterface.MasterInterface>self.snowcovermodel) )
1153
+ cpdef inline void calc_soilheatflux(self) noexcept nogil:
1154
+ cdef double lai
1155
+ cdef numpy.int64_t k
1156
+ cdef double b
1157
+ cdef double a
1158
+ cdef double w
1159
+ w = self.sequences.factors.possiblesunshineduration / self.parameters.derived.hours
1160
+ a = w * 0.2 + (1.0 - w) * 0.5
1161
+ b = a * 0.03 / 0.2
1162
+ for k in range(self.parameters.control.nmbhru):
1163
+ if self.parameters.control.water[k]:
1164
+ self.sequences.fluxes.soilheatflux[k] = 0.0
1165
+ else:
1166
+ lai = self.parameters.control.leafareaindex[ self.parameters.control.hrutype[k] - self.parameters.control._leafareaindex_rowmin, self.parameters.derived.moy[self.idx_sim] - self.parameters.control._leafareaindex_columnmin, ]
1167
+ self.sequences.fluxes.soilheatflux[k] = max(a - b * lai, 0.0) * self.sequences.fluxes.netradiation[k]
1168
+ cpdef inline void calc_waterevaporation(self) noexcept nogil:
1169
+ cdef double evap
1170
+ cdef numpy.int64_t k
1171
+ for k in range(self.parameters.control.nmbhru):
1172
+ if self.parameters.control.water[k]:
1173
+ evap = self.return_evaporation_penmanmonteith_v2(k, 0.0)
1174
+ self.sequences.fluxes.waterevaporation[k] = evap
1175
+ else:
1176
+ self.sequences.fluxes.waterevaporation[k] = 0.0
1177
+ cpdef inline void calc_snowcover_snowcovermodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
1178
+ cdef numpy.int64_t k
1179
+ for k in range(self.parameters.control.nmbhru):
1180
+ self.sequences.factors.snowcover[k] = submodel.get_snowcover(k)
1181
+ cpdef inline void calc_potentialinterceptionevaporation(self) noexcept nogil:
1182
+ cdef double evap
1183
+ cdef numpy.int64_t k
1184
+ for k in range(self.parameters.control.nmbhru):
1185
+ if self.parameters.control.interception[k]:
1186
+ evap = self.return_evaporation_penmanmonteith_v2(k, 0.0)
1187
+ self.sequences.fluxes.potentialinterceptionevaporation[k] = evap
1188
+ else:
1189
+ self.sequences.fluxes.potentialinterceptionevaporation[k] = 0.0
1190
+ cpdef inline void calc_precipitation(self) noexcept nogil:
1191
+ if self.precipmodel_typeid == 1:
1192
+ self.calc_precipitation_precipmodel_v1( (<masterinterface.MasterInterface>self.precipmodel) )
1193
+ elif self.precipmodel_typeid == 2:
1194
+ self.calc_precipitation_precipmodel_v2( (<masterinterface.MasterInterface>self.precipmodel) )
1195
+ cpdef inline void update_loggedprecipitation(self) noexcept nogil:
1196
+ cdef numpy.int64_t k
1197
+ cdef numpy.int64_t idx
1198
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
1199
+ for k in range(self.parameters.control.nmbhru):
1200
+ self.sequences.logs.loggedprecipitation[idx, k] = self.sequences.logs.loggedprecipitation[idx - 1, k]
1201
+ for k in range(self.parameters.control.nmbhru):
1202
+ self.sequences.logs.loggedprecipitation[0, k] = self.sequences.fluxes.precipitation[k]
1203
+ cpdef inline void update_loggedpotentialsoilevapotranspiration(self) noexcept nogil:
1204
+ cdef numpy.int64_t k
1205
+ cdef numpy.int64_t idx
1206
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
1207
+ for k in range(self.parameters.control.nmbhru):
1208
+ self.sequences.logs.loggedpotentialsoilevapotranspiration[idx, k] = ( self.sequences.logs.loggedpotentialsoilevapotranspiration[idx - 1, k] )
1209
+ for k in range(self.parameters.control.nmbhru):
1210
+ self.sequences.logs.loggedpotentialsoilevapotranspiration[0, k] = ( self.sequences.fluxes.potentialsoilevapotranspiration[k] )
1211
+ cpdef inline void update_loggedwaterevaporation(self) noexcept nogil:
1212
+ cdef numpy.int64_t k
1213
+ cdef numpy.int64_t idx
1214
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
1215
+ for k in range(self.parameters.control.nmbhru):
1216
+ self.sequences.logs.loggedwaterevaporation[idx, k] = self.sequences.logs.loggedwaterevaporation[ idx - 1, k ]
1217
+ for k in range(self.parameters.control.nmbhru):
1218
+ self.sequences.logs.loggedwaterevaporation[0, k] = self.sequences.fluxes.waterevaporation[k]
1219
+ cpdef inline void calc_dailywaterevaporation(self) noexcept nogil:
1220
+ cdef numpy.int64_t idx
1221
+ cdef numpy.int64_t k
1222
+ for k in range(self.parameters.control.nmbhru):
1223
+ self.sequences.fluxes.dailywaterevaporation[k] = 0.0
1224
+ for idx in range(self.parameters.derived.nmblogentries):
1225
+ for k in range(self.parameters.control.nmbhru):
1226
+ self.sequences.fluxes.dailywaterevaporation[k] = self.sequences.fluxes.dailywaterevaporation[k] + (self.sequences.logs.loggedwaterevaporation[idx, k])
1227
+ cpdef void determine_potentialinterceptionevaporation_v1(self) noexcept nogil:
1228
+ self.process_radiationmodel_v1()
1229
+ self.calc_possiblesunshineduration_v1()
1230
+ self.calc_sunshineduration_v1()
1231
+ self.calc_globalradiation_v1()
1232
+ self.calc_airtemperature_v1()
1233
+ self.calc_windspeed10m_v1()
1234
+ self.calc_saturationvapourpressure_v1()
1235
+ self.calc_saturationvapourpressureslope_v1()
1236
+ self.calc_actualvapourpressure_v1()
1237
+ self.calc_dryairpressure_v1()
1238
+ self.calc_airdensity_v1()
1239
+ self.calc_aerodynamicresistance_v2()
1240
+ self.calc_snowcover_v1()
1241
+ self.calc_dailyprecipitation_v1()
1242
+ self.calc_dailypotentialsoilevapotranspiration_v1()
1243
+ self.calc_currentalbedo_v2()
1244
+ self.calc_netshortwaveradiation_v2()
1245
+ self.update_cloudcoverage_v1()
1246
+ self.calc_adjustedcloudcoverage_v1()
1247
+ self.calc_netlongwaveradiation_v2()
1248
+ self.calc_netradiation_v1()
1249
+ self.calc_soilheatflux_v4()
1250
+ self.calc_potentialinterceptionevaporation_v2()
1251
+ cpdef void determine_potentialsoilevapotranspiration_v1(self) noexcept nogil:
1252
+ self.update_soilresistance_v1()
1253
+ self.calc_actualsurfaceresistance_v2()
1254
+ self.calc_potentialsoilevapotranspiration_v1()
1255
+ self.update_loggedpotentialsoilevapotranspiration_v1()
1256
+ self.calc_precipitation_v1()
1257
+ self.update_loggedprecipitation_v1()
1258
+ cpdef void determine_potentialwaterevaporation_v1(self) noexcept nogil:
1259
+ self.calc_waterevaporation_v4()
1260
+ self.update_loggedwaterevaporation_v1()
1261
+ self.calc_dailywaterevaporation_v1()
1262
+ cpdef void determine_potentialinterceptionevaporation(self) noexcept nogil:
1263
+ self.process_radiationmodel_v1()
1264
+ self.calc_possiblesunshineduration_v1()
1265
+ self.calc_sunshineduration_v1()
1266
+ self.calc_globalradiation_v1()
1267
+ self.calc_airtemperature_v1()
1268
+ self.calc_windspeed10m_v1()
1269
+ self.calc_saturationvapourpressure_v1()
1270
+ self.calc_saturationvapourpressureslope_v1()
1271
+ self.calc_actualvapourpressure_v1()
1272
+ self.calc_dryairpressure_v1()
1273
+ self.calc_airdensity_v1()
1274
+ self.calc_aerodynamicresistance_v2()
1275
+ self.calc_snowcover_v1()
1276
+ self.calc_dailyprecipitation_v1()
1277
+ self.calc_dailypotentialsoilevapotranspiration_v1()
1278
+ self.calc_currentalbedo_v2()
1279
+ self.calc_netshortwaveradiation_v2()
1280
+ self.update_cloudcoverage_v1()
1281
+ self.calc_adjustedcloudcoverage_v1()
1282
+ self.calc_netlongwaveradiation_v2()
1283
+ self.calc_netradiation_v1()
1284
+ self.calc_soilheatflux_v4()
1285
+ self.calc_potentialinterceptionevaporation_v2()
1286
+ cpdef void determine_potentialsoilevapotranspiration(self) noexcept nogil:
1287
+ self.update_soilresistance_v1()
1288
+ self.calc_actualsurfaceresistance_v2()
1289
+ self.calc_potentialsoilevapotranspiration_v1()
1290
+ self.update_loggedpotentialsoilevapotranspiration_v1()
1291
+ self.calc_precipitation_v1()
1292
+ self.update_loggedprecipitation_v1()
1293
+ cpdef void determine_potentialwaterevaporation(self) noexcept nogil:
1294
+ self.calc_waterevaporation_v4()
1295
+ self.update_loggedwaterevaporation_v1()
1296
+ self.calc_dailywaterevaporation_v1()