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,1719 @@
1
+ #!python
2
+ # distutils: define_macros=NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
3
+ # cython: language_level=3
4
+ # cython: cpow=True
5
+ # cython: boundscheck=False
6
+ # cython: wraparound=False
7
+ # cython: initializedcheck=False
8
+ # cython: cdivision=True
9
+ from typing import Optional
10
+ import numpy
11
+ cimport numpy
12
+ from libc.math cimport exp, fabs, log, sin, cos, tan, tanh, asin, acos, atan, isnan, isinf
13
+ from libc.math cimport NAN as nan
14
+ from libc.math cimport INFINITY as inf
15
+ import cython
16
+ from cpython.mem cimport PyMem_Malloc
17
+ from cpython.mem cimport PyMem_Realloc
18
+ from cpython.mem cimport PyMem_Free
19
+ from hydpy.cythons.autogen cimport configutils
20
+ from hydpy.cythons.autogen cimport interfaceutils
21
+ from hydpy.cythons.autogen cimport interputils
22
+ from hydpy.cythons.autogen import pointerutils
23
+ from hydpy.cythons.autogen cimport pointerutils
24
+ from hydpy.cythons.autogen cimport quadutils
25
+ from hydpy.cythons.autogen cimport rootutils
26
+ from hydpy.cythons.autogen cimport smoothutils
27
+ from hydpy.cythons.autogen cimport masterinterface
28
+
29
+
30
+ cdef void do_nothing(Model model) noexcept nogil:
31
+ pass
32
+
33
+ cpdef get_wrapper():
34
+ cdef CallbackWrapper wrapper = CallbackWrapper()
35
+ wrapper.callback = do_nothing
36
+ return wrapper
37
+
38
+ cdef public numpy.npy_bool TYPE_CHECKING = False
39
+ cdef public numpy.int64_t SIED_D = 1
40
+ cdef public numpy.int64_t SIED_L = 2
41
+ cdef public numpy.int64_t VERS = 3
42
+ cdef public numpy.int64_t ACKER = 4
43
+ cdef public numpy.int64_t WEINB = 5
44
+ cdef public numpy.int64_t OBSTB = 6
45
+ cdef public numpy.int64_t BODEN = 7
46
+ cdef public numpy.int64_t GLETS = 8
47
+ cdef public numpy.int64_t GRUE_I = 9
48
+ cdef public numpy.int64_t FEUCHT = 10
49
+ cdef public numpy.int64_t GRUE_E = 11
50
+ cdef public numpy.int64_t BAUMB = 12
51
+ cdef public numpy.int64_t NADELW = 13
52
+ cdef public numpy.int64_t LAUBW = 14
53
+ cdef public numpy.int64_t MISCHW = 15
54
+ cdef public numpy.int64_t WASSER = 16
55
+ cdef public numpy.int64_t FLUSS = 17
56
+ cdef public numpy.int64_t SEE = 18
57
+ @cython.final
58
+ cdef class Parameters:
59
+ pass
60
+ @cython.final
61
+ cdef class ControlParameters:
62
+ pass
63
+ @cython.final
64
+ cdef class DerivedParameters:
65
+ pass
66
+ @cython.final
67
+ cdef class FixedParameters:
68
+ pass
69
+ @cython.final
70
+ cdef class Sequences:
71
+ pass
72
+ @cython.final
73
+ cdef class InletSequences:
74
+ cpdef inline alloc(self, name, numpy.int64_t length):
75
+ if name == "q":
76
+ self._q_length_0 = length
77
+ self._q_ready = numpy.full(length, 0, dtype=numpy.int64)
78
+ self.q = <double**> PyMem_Malloc(length * sizeof(double*))
79
+ cpdef inline dealloc(self, name):
80
+ if name == "q":
81
+ PyMem_Free(self.q)
82
+ cpdef inline set_pointer1d(self, str name, pointerutils.Double value, numpy.int64_t idx):
83
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
84
+ if name == "q":
85
+ self.q[idx] = pointer.p_value
86
+ self._q_ready[idx] = 1
87
+ cpdef get_value(self, str name):
88
+ cdef numpy.int64_t idx
89
+ if name == "q":
90
+ values = numpy.empty(self.len_q)
91
+ for idx in range(self.len_q):
92
+ pointerutils.check0(self._q_length_0)
93
+ if self._q_ready[idx] == 0:
94
+ pointerutils.check1(self._q_length_0, idx)
95
+ pointerutils.check2(self._q_ready, idx)
96
+ values[idx] = self.q[idx][0]
97
+ return values
98
+ cpdef set_value(self, str name, value):
99
+ if name == "q":
100
+ for idx in range(self.len_q):
101
+ pointerutils.check0(self._q_length_0)
102
+ if self._q_ready[idx] == 0:
103
+ pointerutils.check1(self._q_length_0, idx)
104
+ pointerutils.check2(self._q_ready, idx)
105
+ self.q[idx][0] = value[idx]
106
+ @cython.final
107
+ cdef class InputSequences:
108
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
109
+ cdef numpy.int64_t k
110
+ if self._nied_inputflag:
111
+ self.nied = self._nied_inputpointer[0]
112
+ elif self._nied_diskflag_reading:
113
+ self.nied = self._nied_ncarray[0]
114
+ elif self._nied_ramflag:
115
+ self.nied = self._nied_array[idx]
116
+ if self._teml_inputflag:
117
+ self.teml = self._teml_inputpointer[0]
118
+ elif self._teml_diskflag_reading:
119
+ self.teml = self._teml_ncarray[0]
120
+ elif self._teml_ramflag:
121
+ self.teml = self._teml_array[idx]
122
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
123
+ cdef numpy.int64_t k
124
+ if self._nied_diskflag_writing:
125
+ self._nied_ncarray[0] = self.nied
126
+ if self._nied_ramflag:
127
+ self._nied_array[idx] = self.nied
128
+ if self._teml_diskflag_writing:
129
+ self._teml_ncarray[0] = self.teml
130
+ if self._teml_ramflag:
131
+ self._teml_array[idx] = self.teml
132
+ cpdef inline set_pointerinput(self, str name, pointerutils.PDouble value):
133
+ if name == "nied":
134
+ self._nied_inputpointer = value.p_value
135
+ if name == "teml":
136
+ self._teml_inputpointer = value.p_value
137
+ @cython.final
138
+ cdef class FluxSequences:
139
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
140
+ cdef numpy.int64_t jdx0
141
+ cdef numpy.int64_t k
142
+ if self._qz_diskflag_reading:
143
+ self.qz = self._qz_ncarray[0]
144
+ elif self._qz_ramflag:
145
+ self.qz = self._qz_array[idx]
146
+ if self._qzh_diskflag_reading:
147
+ self.qzh = self._qzh_ncarray[0]
148
+ elif self._qzh_ramflag:
149
+ self.qzh = self._qzh_array[idx]
150
+ if self._nkor_diskflag_reading:
151
+ k = 0
152
+ for jdx0 in range(self._nkor_length_0):
153
+ self.nkor[jdx0] = self._nkor_ncarray[k]
154
+ k += 1
155
+ elif self._nkor_ramflag:
156
+ for jdx0 in range(self._nkor_length_0):
157
+ self.nkor[jdx0] = self._nkor_array[idx, jdx0]
158
+ if self._tkor_diskflag_reading:
159
+ k = 0
160
+ for jdx0 in range(self._tkor_length_0):
161
+ self.tkor[jdx0] = self._tkor_ncarray[k]
162
+ k += 1
163
+ elif self._tkor_ramflag:
164
+ for jdx0 in range(self._tkor_length_0):
165
+ self.tkor[jdx0] = self._tkor_array[idx, jdx0]
166
+ if self._nbes_diskflag_reading:
167
+ k = 0
168
+ for jdx0 in range(self._nbes_length_0):
169
+ self.nbes[jdx0] = self._nbes_ncarray[k]
170
+ k += 1
171
+ elif self._nbes_ramflag:
172
+ for jdx0 in range(self._nbes_length_0):
173
+ self.nbes[jdx0] = self._nbes_array[idx, jdx0]
174
+ if self._sbes_diskflag_reading:
175
+ k = 0
176
+ for jdx0 in range(self._sbes_length_0):
177
+ self.sbes[jdx0] = self._sbes_ncarray[k]
178
+ k += 1
179
+ elif self._sbes_ramflag:
180
+ for jdx0 in range(self._sbes_length_0):
181
+ self.sbes[jdx0] = self._sbes_array[idx, jdx0]
182
+ if self._evi_diskflag_reading:
183
+ k = 0
184
+ for jdx0 in range(self._evi_length_0):
185
+ self.evi[jdx0] = self._evi_ncarray[k]
186
+ k += 1
187
+ elif self._evi_ramflag:
188
+ for jdx0 in range(self._evi_length_0):
189
+ self.evi[jdx0] = self._evi_array[idx, jdx0]
190
+ if self._evb_diskflag_reading:
191
+ k = 0
192
+ for jdx0 in range(self._evb_length_0):
193
+ self.evb[jdx0] = self._evb_ncarray[k]
194
+ k += 1
195
+ elif self._evb_ramflag:
196
+ for jdx0 in range(self._evb_length_0):
197
+ self.evb[jdx0] = self._evb_array[idx, jdx0]
198
+ if self._wgtf_diskflag_reading:
199
+ k = 0
200
+ for jdx0 in range(self._wgtf_length_0):
201
+ self.wgtf[jdx0] = self._wgtf_ncarray[k]
202
+ k += 1
203
+ elif self._wgtf_ramflag:
204
+ for jdx0 in range(self._wgtf_length_0):
205
+ self.wgtf[jdx0] = self._wgtf_array[idx, jdx0]
206
+ if self._wnied_diskflag_reading:
207
+ k = 0
208
+ for jdx0 in range(self._wnied_length_0):
209
+ self.wnied[jdx0] = self._wnied_ncarray[k]
210
+ k += 1
211
+ elif self._wnied_ramflag:
212
+ for jdx0 in range(self._wnied_length_0):
213
+ self.wnied[jdx0] = self._wnied_array[idx, jdx0]
214
+ if self._schmpot_diskflag_reading:
215
+ k = 0
216
+ for jdx0 in range(self._schmpot_length_0):
217
+ self.schmpot[jdx0] = self._schmpot_ncarray[k]
218
+ k += 1
219
+ elif self._schmpot_ramflag:
220
+ for jdx0 in range(self._schmpot_length_0):
221
+ self.schmpot[jdx0] = self._schmpot_array[idx, jdx0]
222
+ if self._schm_diskflag_reading:
223
+ k = 0
224
+ for jdx0 in range(self._schm_length_0):
225
+ self.schm[jdx0] = self._schm_ncarray[k]
226
+ k += 1
227
+ elif self._schm_ramflag:
228
+ for jdx0 in range(self._schm_length_0):
229
+ self.schm[jdx0] = self._schm_array[idx, jdx0]
230
+ if self._wada_diskflag_reading:
231
+ k = 0
232
+ for jdx0 in range(self._wada_length_0):
233
+ self.wada[jdx0] = self._wada_ncarray[k]
234
+ k += 1
235
+ elif self._wada_ramflag:
236
+ for jdx0 in range(self._wada_length_0):
237
+ self.wada[jdx0] = self._wada_array[idx, jdx0]
238
+ if self._qdb_diskflag_reading:
239
+ k = 0
240
+ for jdx0 in range(self._qdb_length_0):
241
+ self.qdb[jdx0] = self._qdb_ncarray[k]
242
+ k += 1
243
+ elif self._qdb_ramflag:
244
+ for jdx0 in range(self._qdb_length_0):
245
+ self.qdb[jdx0] = self._qdb_array[idx, jdx0]
246
+ if self._qib1_diskflag_reading:
247
+ k = 0
248
+ for jdx0 in range(self._qib1_length_0):
249
+ self.qib1[jdx0] = self._qib1_ncarray[k]
250
+ k += 1
251
+ elif self._qib1_ramflag:
252
+ for jdx0 in range(self._qib1_length_0):
253
+ self.qib1[jdx0] = self._qib1_array[idx, jdx0]
254
+ if self._qib2_diskflag_reading:
255
+ k = 0
256
+ for jdx0 in range(self._qib2_length_0):
257
+ self.qib2[jdx0] = self._qib2_ncarray[k]
258
+ k += 1
259
+ elif self._qib2_ramflag:
260
+ for jdx0 in range(self._qib2_length_0):
261
+ self.qib2[jdx0] = self._qib2_array[idx, jdx0]
262
+ if self._qbb_diskflag_reading:
263
+ k = 0
264
+ for jdx0 in range(self._qbb_length_0):
265
+ self.qbb[jdx0] = self._qbb_ncarray[k]
266
+ k += 1
267
+ elif self._qbb_ramflag:
268
+ for jdx0 in range(self._qbb_length_0):
269
+ self.qbb[jdx0] = self._qbb_array[idx, jdx0]
270
+ if self._qkap_diskflag_reading:
271
+ k = 0
272
+ for jdx0 in range(self._qkap_length_0):
273
+ self.qkap[jdx0] = self._qkap_ncarray[k]
274
+ k += 1
275
+ elif self._qkap_ramflag:
276
+ for jdx0 in range(self._qkap_length_0):
277
+ self.qkap[jdx0] = self._qkap_array[idx, jdx0]
278
+ if self._qdgz_diskflag_reading:
279
+ self.qdgz = self._qdgz_ncarray[0]
280
+ elif self._qdgz_ramflag:
281
+ self.qdgz = self._qdgz_array[idx]
282
+ if self._qdgz1_diskflag_reading:
283
+ self.qdgz1 = self._qdgz1_ncarray[0]
284
+ elif self._qdgz1_ramflag:
285
+ self.qdgz1 = self._qdgz1_array[idx]
286
+ if self._qdgz2_diskflag_reading:
287
+ self.qdgz2 = self._qdgz2_ncarray[0]
288
+ elif self._qdgz2_ramflag:
289
+ self.qdgz2 = self._qdgz2_array[idx]
290
+ if self._qigz1_diskflag_reading:
291
+ self.qigz1 = self._qigz1_ncarray[0]
292
+ elif self._qigz1_ramflag:
293
+ self.qigz1 = self._qigz1_array[idx]
294
+ if self._qigz2_diskflag_reading:
295
+ self.qigz2 = self._qigz2_ncarray[0]
296
+ elif self._qigz2_ramflag:
297
+ self.qigz2 = self._qigz2_array[idx]
298
+ if self._qbgz_diskflag_reading:
299
+ self.qbgz = self._qbgz_ncarray[0]
300
+ elif self._qbgz_ramflag:
301
+ self.qbgz = self._qbgz_array[idx]
302
+ if self._qdga1_diskflag_reading:
303
+ self.qdga1 = self._qdga1_ncarray[0]
304
+ elif self._qdga1_ramflag:
305
+ self.qdga1 = self._qdga1_array[idx]
306
+ if self._qdga2_diskflag_reading:
307
+ self.qdga2 = self._qdga2_ncarray[0]
308
+ elif self._qdga2_ramflag:
309
+ self.qdga2 = self._qdga2_array[idx]
310
+ if self._qiga1_diskflag_reading:
311
+ self.qiga1 = self._qiga1_ncarray[0]
312
+ elif self._qiga1_ramflag:
313
+ self.qiga1 = self._qiga1_array[idx]
314
+ if self._qiga2_diskflag_reading:
315
+ self.qiga2 = self._qiga2_ncarray[0]
316
+ elif self._qiga2_ramflag:
317
+ self.qiga2 = self._qiga2_array[idx]
318
+ if self._qbga_diskflag_reading:
319
+ self.qbga = self._qbga_ncarray[0]
320
+ elif self._qbga_ramflag:
321
+ self.qbga = self._qbga_array[idx]
322
+ if self._qah_diskflag_reading:
323
+ self.qah = self._qah_ncarray[0]
324
+ elif self._qah_ramflag:
325
+ self.qah = self._qah_array[idx]
326
+ if self._qa_diskflag_reading:
327
+ self.qa = self._qa_ncarray[0]
328
+ elif self._qa_ramflag:
329
+ self.qa = self._qa_array[idx]
330
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
331
+ cdef numpy.int64_t jdx0
332
+ cdef numpy.int64_t k
333
+ if self._qz_diskflag_writing:
334
+ self._qz_ncarray[0] = self.qz
335
+ if self._qz_ramflag:
336
+ self._qz_array[idx] = self.qz
337
+ if self._qzh_diskflag_writing:
338
+ self._qzh_ncarray[0] = self.qzh
339
+ if self._qzh_ramflag:
340
+ self._qzh_array[idx] = self.qzh
341
+ if self._nkor_diskflag_writing:
342
+ k = 0
343
+ for jdx0 in range(self._nkor_length_0):
344
+ self._nkor_ncarray[k] = self.nkor[jdx0]
345
+ k += 1
346
+ if self._nkor_ramflag:
347
+ for jdx0 in range(self._nkor_length_0):
348
+ self._nkor_array[idx, jdx0] = self.nkor[jdx0]
349
+ if self._tkor_diskflag_writing:
350
+ k = 0
351
+ for jdx0 in range(self._tkor_length_0):
352
+ self._tkor_ncarray[k] = self.tkor[jdx0]
353
+ k += 1
354
+ if self._tkor_ramflag:
355
+ for jdx0 in range(self._tkor_length_0):
356
+ self._tkor_array[idx, jdx0] = self.tkor[jdx0]
357
+ if self._nbes_diskflag_writing:
358
+ k = 0
359
+ for jdx0 in range(self._nbes_length_0):
360
+ self._nbes_ncarray[k] = self.nbes[jdx0]
361
+ k += 1
362
+ if self._nbes_ramflag:
363
+ for jdx0 in range(self._nbes_length_0):
364
+ self._nbes_array[idx, jdx0] = self.nbes[jdx0]
365
+ if self._sbes_diskflag_writing:
366
+ k = 0
367
+ for jdx0 in range(self._sbes_length_0):
368
+ self._sbes_ncarray[k] = self.sbes[jdx0]
369
+ k += 1
370
+ if self._sbes_ramflag:
371
+ for jdx0 in range(self._sbes_length_0):
372
+ self._sbes_array[idx, jdx0] = self.sbes[jdx0]
373
+ if self._evi_diskflag_writing:
374
+ k = 0
375
+ for jdx0 in range(self._evi_length_0):
376
+ self._evi_ncarray[k] = self.evi[jdx0]
377
+ k += 1
378
+ if self._evi_ramflag:
379
+ for jdx0 in range(self._evi_length_0):
380
+ self._evi_array[idx, jdx0] = self.evi[jdx0]
381
+ if self._evb_diskflag_writing:
382
+ k = 0
383
+ for jdx0 in range(self._evb_length_0):
384
+ self._evb_ncarray[k] = self.evb[jdx0]
385
+ k += 1
386
+ if self._evb_ramflag:
387
+ for jdx0 in range(self._evb_length_0):
388
+ self._evb_array[idx, jdx0] = self.evb[jdx0]
389
+ if self._wgtf_diskflag_writing:
390
+ k = 0
391
+ for jdx0 in range(self._wgtf_length_0):
392
+ self._wgtf_ncarray[k] = self.wgtf[jdx0]
393
+ k += 1
394
+ if self._wgtf_ramflag:
395
+ for jdx0 in range(self._wgtf_length_0):
396
+ self._wgtf_array[idx, jdx0] = self.wgtf[jdx0]
397
+ if self._wnied_diskflag_writing:
398
+ k = 0
399
+ for jdx0 in range(self._wnied_length_0):
400
+ self._wnied_ncarray[k] = self.wnied[jdx0]
401
+ k += 1
402
+ if self._wnied_ramflag:
403
+ for jdx0 in range(self._wnied_length_0):
404
+ self._wnied_array[idx, jdx0] = self.wnied[jdx0]
405
+ if self._schmpot_diskflag_writing:
406
+ k = 0
407
+ for jdx0 in range(self._schmpot_length_0):
408
+ self._schmpot_ncarray[k] = self.schmpot[jdx0]
409
+ k += 1
410
+ if self._schmpot_ramflag:
411
+ for jdx0 in range(self._schmpot_length_0):
412
+ self._schmpot_array[idx, jdx0] = self.schmpot[jdx0]
413
+ if self._schm_diskflag_writing:
414
+ k = 0
415
+ for jdx0 in range(self._schm_length_0):
416
+ self._schm_ncarray[k] = self.schm[jdx0]
417
+ k += 1
418
+ if self._schm_ramflag:
419
+ for jdx0 in range(self._schm_length_0):
420
+ self._schm_array[idx, jdx0] = self.schm[jdx0]
421
+ if self._wada_diskflag_writing:
422
+ k = 0
423
+ for jdx0 in range(self._wada_length_0):
424
+ self._wada_ncarray[k] = self.wada[jdx0]
425
+ k += 1
426
+ if self._wada_ramflag:
427
+ for jdx0 in range(self._wada_length_0):
428
+ self._wada_array[idx, jdx0] = self.wada[jdx0]
429
+ if self._qdb_diskflag_writing:
430
+ k = 0
431
+ for jdx0 in range(self._qdb_length_0):
432
+ self._qdb_ncarray[k] = self.qdb[jdx0]
433
+ k += 1
434
+ if self._qdb_ramflag:
435
+ for jdx0 in range(self._qdb_length_0):
436
+ self._qdb_array[idx, jdx0] = self.qdb[jdx0]
437
+ if self._qib1_diskflag_writing:
438
+ k = 0
439
+ for jdx0 in range(self._qib1_length_0):
440
+ self._qib1_ncarray[k] = self.qib1[jdx0]
441
+ k += 1
442
+ if self._qib1_ramflag:
443
+ for jdx0 in range(self._qib1_length_0):
444
+ self._qib1_array[idx, jdx0] = self.qib1[jdx0]
445
+ if self._qib2_diskflag_writing:
446
+ k = 0
447
+ for jdx0 in range(self._qib2_length_0):
448
+ self._qib2_ncarray[k] = self.qib2[jdx0]
449
+ k += 1
450
+ if self._qib2_ramflag:
451
+ for jdx0 in range(self._qib2_length_0):
452
+ self._qib2_array[idx, jdx0] = self.qib2[jdx0]
453
+ if self._qbb_diskflag_writing:
454
+ k = 0
455
+ for jdx0 in range(self._qbb_length_0):
456
+ self._qbb_ncarray[k] = self.qbb[jdx0]
457
+ k += 1
458
+ if self._qbb_ramflag:
459
+ for jdx0 in range(self._qbb_length_0):
460
+ self._qbb_array[idx, jdx0] = self.qbb[jdx0]
461
+ if self._qkap_diskflag_writing:
462
+ k = 0
463
+ for jdx0 in range(self._qkap_length_0):
464
+ self._qkap_ncarray[k] = self.qkap[jdx0]
465
+ k += 1
466
+ if self._qkap_ramflag:
467
+ for jdx0 in range(self._qkap_length_0):
468
+ self._qkap_array[idx, jdx0] = self.qkap[jdx0]
469
+ if self._qdgz_diskflag_writing:
470
+ self._qdgz_ncarray[0] = self.qdgz
471
+ if self._qdgz_ramflag:
472
+ self._qdgz_array[idx] = self.qdgz
473
+ if self._qdgz1_diskflag_writing:
474
+ self._qdgz1_ncarray[0] = self.qdgz1
475
+ if self._qdgz1_ramflag:
476
+ self._qdgz1_array[idx] = self.qdgz1
477
+ if self._qdgz2_diskflag_writing:
478
+ self._qdgz2_ncarray[0] = self.qdgz2
479
+ if self._qdgz2_ramflag:
480
+ self._qdgz2_array[idx] = self.qdgz2
481
+ if self._qigz1_diskflag_writing:
482
+ self._qigz1_ncarray[0] = self.qigz1
483
+ if self._qigz1_ramflag:
484
+ self._qigz1_array[idx] = self.qigz1
485
+ if self._qigz2_diskflag_writing:
486
+ self._qigz2_ncarray[0] = self.qigz2
487
+ if self._qigz2_ramflag:
488
+ self._qigz2_array[idx] = self.qigz2
489
+ if self._qbgz_diskflag_writing:
490
+ self._qbgz_ncarray[0] = self.qbgz
491
+ if self._qbgz_ramflag:
492
+ self._qbgz_array[idx] = self.qbgz
493
+ if self._qdga1_diskflag_writing:
494
+ self._qdga1_ncarray[0] = self.qdga1
495
+ if self._qdga1_ramflag:
496
+ self._qdga1_array[idx] = self.qdga1
497
+ if self._qdga2_diskflag_writing:
498
+ self._qdga2_ncarray[0] = self.qdga2
499
+ if self._qdga2_ramflag:
500
+ self._qdga2_array[idx] = self.qdga2
501
+ if self._qiga1_diskflag_writing:
502
+ self._qiga1_ncarray[0] = self.qiga1
503
+ if self._qiga1_ramflag:
504
+ self._qiga1_array[idx] = self.qiga1
505
+ if self._qiga2_diskflag_writing:
506
+ self._qiga2_ncarray[0] = self.qiga2
507
+ if self._qiga2_ramflag:
508
+ self._qiga2_array[idx] = self.qiga2
509
+ if self._qbga_diskflag_writing:
510
+ self._qbga_ncarray[0] = self.qbga
511
+ if self._qbga_ramflag:
512
+ self._qbga_array[idx] = self.qbga
513
+ if self._qah_diskflag_writing:
514
+ self._qah_ncarray[0] = self.qah
515
+ if self._qah_ramflag:
516
+ self._qah_array[idx] = self.qah
517
+ if self._qa_diskflag_writing:
518
+ self._qa_ncarray[0] = self.qa
519
+ if self._qa_ramflag:
520
+ self._qa_array[idx] = self.qa
521
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
522
+ if name == "qz":
523
+ self._qz_outputpointer = value.p_value
524
+ if name == "qzh":
525
+ self._qzh_outputpointer = value.p_value
526
+ if name == "qdgz":
527
+ self._qdgz_outputpointer = value.p_value
528
+ if name == "qdgz1":
529
+ self._qdgz1_outputpointer = value.p_value
530
+ if name == "qdgz2":
531
+ self._qdgz2_outputpointer = value.p_value
532
+ if name == "qigz1":
533
+ self._qigz1_outputpointer = value.p_value
534
+ if name == "qigz2":
535
+ self._qigz2_outputpointer = value.p_value
536
+ if name == "qbgz":
537
+ self._qbgz_outputpointer = value.p_value
538
+ if name == "qdga1":
539
+ self._qdga1_outputpointer = value.p_value
540
+ if name == "qdga2":
541
+ self._qdga2_outputpointer = value.p_value
542
+ if name == "qiga1":
543
+ self._qiga1_outputpointer = value.p_value
544
+ if name == "qiga2":
545
+ self._qiga2_outputpointer = value.p_value
546
+ if name == "qbga":
547
+ self._qbga_outputpointer = value.p_value
548
+ if name == "qah":
549
+ self._qah_outputpointer = value.p_value
550
+ if name == "qa":
551
+ self._qa_outputpointer = value.p_value
552
+ cpdef inline void update_outputs(self) noexcept nogil:
553
+ if self._qz_outputflag:
554
+ self._qz_outputpointer[0] = self.qz
555
+ if self._qzh_outputflag:
556
+ self._qzh_outputpointer[0] = self.qzh
557
+ if self._qdgz_outputflag:
558
+ self._qdgz_outputpointer[0] = self.qdgz
559
+ if self._qdgz1_outputflag:
560
+ self._qdgz1_outputpointer[0] = self.qdgz1
561
+ if self._qdgz2_outputflag:
562
+ self._qdgz2_outputpointer[0] = self.qdgz2
563
+ if self._qigz1_outputflag:
564
+ self._qigz1_outputpointer[0] = self.qigz1
565
+ if self._qigz2_outputflag:
566
+ self._qigz2_outputpointer[0] = self.qigz2
567
+ if self._qbgz_outputflag:
568
+ self._qbgz_outputpointer[0] = self.qbgz
569
+ if self._qdga1_outputflag:
570
+ self._qdga1_outputpointer[0] = self.qdga1
571
+ if self._qdga2_outputflag:
572
+ self._qdga2_outputpointer[0] = self.qdga2
573
+ if self._qiga1_outputflag:
574
+ self._qiga1_outputpointer[0] = self.qiga1
575
+ if self._qiga2_outputflag:
576
+ self._qiga2_outputpointer[0] = self.qiga2
577
+ if self._qbga_outputflag:
578
+ self._qbga_outputpointer[0] = self.qbga
579
+ if self._qah_outputflag:
580
+ self._qah_outputpointer[0] = self.qah
581
+ if self._qa_outputflag:
582
+ self._qa_outputpointer[0] = self.qa
583
+ @cython.final
584
+ cdef class StateSequences:
585
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
586
+ cdef numpy.int64_t jdx0
587
+ cdef numpy.int64_t k
588
+ if self._inzp_diskflag_reading:
589
+ k = 0
590
+ for jdx0 in range(self._inzp_length_0):
591
+ self.inzp[jdx0] = self._inzp_ncarray[k]
592
+ k += 1
593
+ elif self._inzp_ramflag:
594
+ for jdx0 in range(self._inzp_length_0):
595
+ self.inzp[jdx0] = self._inzp_array[idx, jdx0]
596
+ if self._wats_diskflag_reading:
597
+ k = 0
598
+ for jdx0 in range(self._wats_length_0):
599
+ self.wats[jdx0] = self._wats_ncarray[k]
600
+ k += 1
601
+ elif self._wats_ramflag:
602
+ for jdx0 in range(self._wats_length_0):
603
+ self.wats[jdx0] = self._wats_array[idx, jdx0]
604
+ if self._waes_diskflag_reading:
605
+ k = 0
606
+ for jdx0 in range(self._waes_length_0):
607
+ self.waes[jdx0] = self._waes_ncarray[k]
608
+ k += 1
609
+ elif self._waes_ramflag:
610
+ for jdx0 in range(self._waes_length_0):
611
+ self.waes[jdx0] = self._waes_array[idx, jdx0]
612
+ if self._bowa_diskflag_reading:
613
+ k = 0
614
+ for jdx0 in range(self._bowa_length_0):
615
+ self.bowa[jdx0] = self._bowa_ncarray[k]
616
+ k += 1
617
+ elif self._bowa_ramflag:
618
+ for jdx0 in range(self._bowa_length_0):
619
+ self.bowa[jdx0] = self._bowa_array[idx, jdx0]
620
+ if self._sdg1_diskflag_reading:
621
+ self.sdg1 = self._sdg1_ncarray[0]
622
+ elif self._sdg1_ramflag:
623
+ self.sdg1 = self._sdg1_array[idx]
624
+ if self._sdg2_diskflag_reading:
625
+ self.sdg2 = self._sdg2_ncarray[0]
626
+ elif self._sdg2_ramflag:
627
+ self.sdg2 = self._sdg2_array[idx]
628
+ if self._sig1_diskflag_reading:
629
+ self.sig1 = self._sig1_ncarray[0]
630
+ elif self._sig1_ramflag:
631
+ self.sig1 = self._sig1_array[idx]
632
+ if self._sig2_diskflag_reading:
633
+ self.sig2 = self._sig2_ncarray[0]
634
+ elif self._sig2_ramflag:
635
+ self.sig2 = self._sig2_array[idx]
636
+ if self._sbg_diskflag_reading:
637
+ self.sbg = self._sbg_ncarray[0]
638
+ elif self._sbg_ramflag:
639
+ self.sbg = self._sbg_array[idx]
640
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
641
+ cdef numpy.int64_t jdx0
642
+ cdef numpy.int64_t k
643
+ if self._inzp_diskflag_writing:
644
+ k = 0
645
+ for jdx0 in range(self._inzp_length_0):
646
+ self._inzp_ncarray[k] = self.inzp[jdx0]
647
+ k += 1
648
+ if self._inzp_ramflag:
649
+ for jdx0 in range(self._inzp_length_0):
650
+ self._inzp_array[idx, jdx0] = self.inzp[jdx0]
651
+ if self._wats_diskflag_writing:
652
+ k = 0
653
+ for jdx0 in range(self._wats_length_0):
654
+ self._wats_ncarray[k] = self.wats[jdx0]
655
+ k += 1
656
+ if self._wats_ramflag:
657
+ for jdx0 in range(self._wats_length_0):
658
+ self._wats_array[idx, jdx0] = self.wats[jdx0]
659
+ if self._waes_diskflag_writing:
660
+ k = 0
661
+ for jdx0 in range(self._waes_length_0):
662
+ self._waes_ncarray[k] = self.waes[jdx0]
663
+ k += 1
664
+ if self._waes_ramflag:
665
+ for jdx0 in range(self._waes_length_0):
666
+ self._waes_array[idx, jdx0] = self.waes[jdx0]
667
+ if self._bowa_diskflag_writing:
668
+ k = 0
669
+ for jdx0 in range(self._bowa_length_0):
670
+ self._bowa_ncarray[k] = self.bowa[jdx0]
671
+ k += 1
672
+ if self._bowa_ramflag:
673
+ for jdx0 in range(self._bowa_length_0):
674
+ self._bowa_array[idx, jdx0] = self.bowa[jdx0]
675
+ if self._sdg1_diskflag_writing:
676
+ self._sdg1_ncarray[0] = self.sdg1
677
+ if self._sdg1_ramflag:
678
+ self._sdg1_array[idx] = self.sdg1
679
+ if self._sdg2_diskflag_writing:
680
+ self._sdg2_ncarray[0] = self.sdg2
681
+ if self._sdg2_ramflag:
682
+ self._sdg2_array[idx] = self.sdg2
683
+ if self._sig1_diskflag_writing:
684
+ self._sig1_ncarray[0] = self.sig1
685
+ if self._sig1_ramflag:
686
+ self._sig1_array[idx] = self.sig1
687
+ if self._sig2_diskflag_writing:
688
+ self._sig2_ncarray[0] = self.sig2
689
+ if self._sig2_ramflag:
690
+ self._sig2_array[idx] = self.sig2
691
+ if self._sbg_diskflag_writing:
692
+ self._sbg_ncarray[0] = self.sbg
693
+ if self._sbg_ramflag:
694
+ self._sbg_array[idx] = self.sbg
695
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
696
+ if name == "sdg1":
697
+ self._sdg1_outputpointer = value.p_value
698
+ if name == "sdg2":
699
+ self._sdg2_outputpointer = value.p_value
700
+ if name == "sig1":
701
+ self._sig1_outputpointer = value.p_value
702
+ if name == "sig2":
703
+ self._sig2_outputpointer = value.p_value
704
+ if name == "sbg":
705
+ self._sbg_outputpointer = value.p_value
706
+ cpdef inline void update_outputs(self) noexcept nogil:
707
+ if self._sdg1_outputflag:
708
+ self._sdg1_outputpointer[0] = self.sdg1
709
+ if self._sdg2_outputflag:
710
+ self._sdg2_outputpointer[0] = self.sdg2
711
+ if self._sig1_outputflag:
712
+ self._sig1_outputpointer[0] = self.sig1
713
+ if self._sig2_outputflag:
714
+ self._sig2_outputpointer[0] = self.sig2
715
+ if self._sbg_outputflag:
716
+ self._sbg_outputpointer[0] = self.sbg
717
+ @cython.final
718
+ cdef class AideSequences:
719
+ pass
720
+ @cython.final
721
+ cdef class OutletSequences:
722
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
723
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
724
+ if name == "q":
725
+ self.q = pointer.p_value
726
+ cpdef get_value(self, str name):
727
+ cdef numpy.int64_t idx
728
+ if name == "q":
729
+ return self.q[0]
730
+ cpdef set_value(self, str name, value):
731
+ if name == "q":
732
+ self.q[0] = value
733
+ @cython.final
734
+ cdef class Model(masterinterface.MasterInterface):
735
+ def __init__(self):
736
+ super().__init__()
737
+ self.aetmodel = None
738
+ self.aetmodel_is_mainmodel = False
739
+ self.soilmodel = None
740
+ self.soilmodel_is_mainmodel = False
741
+ def get_aetmodel(self) -> masterinterface.MasterInterface | None:
742
+ return self.aetmodel
743
+ def set_aetmodel(self, aetmodel: masterinterface.MasterInterface | None) -> None:
744
+ self.aetmodel = aetmodel
745
+ def get_soilmodel(self) -> masterinterface.MasterInterface | None:
746
+ return self.soilmodel
747
+ def set_soilmodel(self, soilmodel: masterinterface.MasterInterface | None) -> None:
748
+ self.soilmodel = soilmodel
749
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
750
+ self.idx_sim = idx
751
+ self.reset_reuseflags()
752
+ self.load_data(idx)
753
+ self.update_inlets()
754
+ self.run()
755
+ self.new2old()
756
+ self.update_outlets()
757
+ self.update_outputs()
758
+ cpdef void reset_reuseflags(self) noexcept nogil:
759
+ if (self.aetmodel is not None) and not self.aetmodel_is_mainmodel:
760
+ self.aetmodel.reset_reuseflags()
761
+ if (self.soilmodel is not None) and not self.soilmodel_is_mainmodel:
762
+ self.soilmodel.reset_reuseflags()
763
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
764
+ self.idx_sim = idx
765
+ self.sequences.inputs.load_data(idx)
766
+ if (self.aetmodel is not None) and not self.aetmodel_is_mainmodel:
767
+ self.aetmodel.load_data(idx)
768
+ if (self.soilmodel is not None) and not self.soilmodel_is_mainmodel:
769
+ self.soilmodel.load_data(idx)
770
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
771
+ self.idx_sim = idx
772
+ self.sequences.inputs.save_data(idx)
773
+ self.sequences.fluxes.save_data(idx)
774
+ self.sequences.states.save_data(idx)
775
+ if (self.aetmodel is not None) and not self.aetmodel_is_mainmodel:
776
+ self.aetmodel.save_data(idx)
777
+ if (self.soilmodel is not None) and not self.soilmodel_is_mainmodel:
778
+ self.soilmodel.save_data(idx)
779
+ cpdef void new2old(self) noexcept nogil:
780
+ cdef numpy.int64_t jdx0
781
+ for jdx0 in range(self.sequences.states._inzp_length_0):
782
+ self.sequences.old_states.inzp[jdx0] = self.sequences.new_states.inzp[jdx0]
783
+ for jdx0 in range(self.sequences.states._wats_length_0):
784
+ self.sequences.old_states.wats[jdx0] = self.sequences.new_states.wats[jdx0]
785
+ for jdx0 in range(self.sequences.states._waes_length_0):
786
+ self.sequences.old_states.waes[jdx0] = self.sequences.new_states.waes[jdx0]
787
+ for jdx0 in range(self.sequences.states._bowa_length_0):
788
+ self.sequences.old_states.bowa[jdx0] = self.sequences.new_states.bowa[jdx0]
789
+ self.sequences.old_states.sdg1 = self.sequences.new_states.sdg1
790
+ self.sequences.old_states.sdg2 = self.sequences.new_states.sdg2
791
+ self.sequences.old_states.sig1 = self.sequences.new_states.sig1
792
+ self.sequences.old_states.sig2 = self.sequences.new_states.sig2
793
+ self.sequences.old_states.sbg = self.sequences.new_states.sbg
794
+ if (self.aetmodel is not None) and not self.aetmodel_is_mainmodel:
795
+ self.aetmodel.new2old()
796
+ if (self.soilmodel is not None) and not self.soilmodel_is_mainmodel:
797
+ self.soilmodel.new2old()
798
+ cpdef inline void run(self) noexcept nogil:
799
+ self.calc_qzh_v1()
800
+ self.calc_nkor_v1()
801
+ self.calc_tkor_v1()
802
+ self.calc_nbes_inzp_v1()
803
+ self.calc_snratio_v1()
804
+ self.calc_sbes_v1()
805
+ self.calc_wats_v1()
806
+ self.calc_wgtf_v1()
807
+ self.calc_wnied_v1()
808
+ self.calc_schmpot_v1()
809
+ self.calc_schm_wats_v1()
810
+ self.calc_wada_waes_v1()
811
+ self.calc_evi_inzp_v1()
812
+ self.calc_evb_v1()
813
+ self.calc_qkap_v1()
814
+ self.calc_qbb_v1()
815
+ self.calc_qib1_v1()
816
+ self.calc_qib2_v1()
817
+ self.calc_qdb_v1()
818
+ self.calc_bowa_v1()
819
+ self.calc_qbgz_v1()
820
+ self.calc_qigz1_v1()
821
+ self.calc_qigz2_v1()
822
+ self.calc_qdgz_v1()
823
+ self.calc_qbga_sbg_qbgz_qdgz_v1()
824
+ self.calc_qiga1_sig1_v1()
825
+ self.calc_qiga2_sig2_v1()
826
+ self.calc_qdgz1_qdgz2_v1()
827
+ self.calc_qdga1_sdg1_v1()
828
+ self.calc_qdga2_sdg2_v1()
829
+ self.calc_qah_v1()
830
+ self.calc_qa_v1()
831
+ cpdef inline void update_inlets(self) noexcept nogil:
832
+ self.pick_qz_v1()
833
+ cpdef inline void update_outlets(self) noexcept nogil:
834
+ self.pass_qa_v1()
835
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
836
+ self.idx_sim = idx
837
+ pass
838
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
839
+ self.idx_sim = idx
840
+ pass
841
+ cpdef inline void update_outputs(self) noexcept nogil:
842
+ self.sequences.fluxes.update_outputs()
843
+ self.sequences.states.update_outputs()
844
+ cpdef inline void pick_qz_v1(self) noexcept nogil:
845
+ cdef numpy.int64_t idx
846
+ self.sequences.fluxes.qz = 0.0
847
+ for idx in range(self.sequences.inlets.len_q):
848
+ self.sequences.fluxes.qz = self.sequences.fluxes.qz + (self.sequences.inlets.q[idx][0])
849
+ cpdef inline void calc_qzh_v1(self) noexcept nogil:
850
+ self.sequences.fluxes.qzh = self.sequences.fluxes.qz / self.parameters.derived.qfactor
851
+ cpdef inline void calc_nkor_v1(self) noexcept nogil:
852
+ cdef numpy.int64_t k
853
+ for k in range(self.parameters.control.nhru):
854
+ self.sequences.fluxes.nkor[k] = self.parameters.control.kg[k] * self.sequences.inputs.nied
855
+ cpdef inline void calc_tkor_v1(self) noexcept nogil:
856
+ cdef numpy.int64_t k
857
+ for k in range(self.parameters.control.nhru):
858
+ self.sequences.fluxes.tkor[k] = self.parameters.control.kt[k] + self.sequences.inputs.teml
859
+ cpdef inline void calc_nbes_inzp_v1(self) noexcept nogil:
860
+ cdef numpy.int64_t k
861
+ for k in range(self.parameters.control.nhru):
862
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
863
+ self.sequences.fluxes.nbes[k] = 0.0
864
+ self.sequences.states.inzp[k] = 0.0
865
+ else:
866
+ self.sequences.fluxes.nbes[k] = max( self.sequences.fluxes.nkor[k] + self.sequences.states.inzp[k] - self.parameters.derived.kinz[self.parameters.control.lnk[k] - 1, self.parameters.derived.moy[self.idx_sim]], 0.0, )
867
+ self.sequences.states.inzp[k] = self.sequences.states.inzp[k] + (self.sequences.fluxes.nkor[k] - self.sequences.fluxes.nbes[k])
868
+ cpdef inline void calc_snratio_v1(self) noexcept nogil:
869
+ cdef numpy.int64_t k
870
+ for k in range(self.parameters.control.nhru):
871
+ if self.sequences.fluxes.tkor[k] >= (self.parameters.control.tgr[k] + self.parameters.control.tsp[k] / 2.0):
872
+ self.sequences.aides.snratio[k] = 0.0
873
+ elif self.sequences.fluxes.tkor[k] <= (self.parameters.control.tgr[k] - self.parameters.control.tsp[k] / 2.0):
874
+ self.sequences.aides.snratio[k] = 1.0
875
+ else:
876
+ self.sequences.aides.snratio[k] = ( (self.parameters.control.tgr[k] + self.parameters.control.tsp[k] / 2.0) - self.sequences.fluxes.tkor[k] ) / self.parameters.control.tsp[k]
877
+ cpdef inline void calc_sbes_v1(self) noexcept nogil:
878
+ cdef numpy.int64_t k
879
+ for k in range(self.parameters.control.nhru):
880
+ self.sequences.fluxes.sbes[k] = self.sequences.aides.snratio[k] * self.sequences.fluxes.nbes[k]
881
+ cpdef inline void calc_wats_v1(self) noexcept nogil:
882
+ cdef numpy.int64_t k
883
+ for k in range(self.parameters.control.nhru):
884
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
885
+ self.sequences.states.wats[k] = 0.0
886
+ else:
887
+ self.sequences.states.wats[k] = self.sequences.states.wats[k] + (self.sequences.fluxes.sbes[k])
888
+ cpdef inline void calc_wgtf_v1(self) noexcept nogil:
889
+ cdef numpy.int64_t k
890
+ for k in range(self.parameters.control.nhru):
891
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
892
+ self.sequences.fluxes.wgtf[k] = 0.0
893
+ else:
894
+ self.sequences.fluxes.wgtf[k] = self.parameters.control.gtf[k] * (self.sequences.fluxes.tkor[k] - self.parameters.control.treft[k]) * self.parameters.fixed.rschmelz
895
+ cpdef inline void calc_wnied_v1(self) noexcept nogil:
896
+ cdef double d_water
897
+ cdef double d_ice
898
+ cdef numpy.int64_t k
899
+ for k in range(self.parameters.control.nhru):
900
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
901
+ self.sequences.fluxes.wnied[k] = 0.0
902
+ else:
903
+ d_ice = self.parameters.fixed.cpeis * self.sequences.fluxes.sbes[k]
904
+ d_water = self.parameters.fixed.cpwasser * (self.sequences.fluxes.nbes[k] - self.sequences.fluxes.sbes[k])
905
+ self.sequences.fluxes.wnied[k] = (self.sequences.fluxes.tkor[k] - self.parameters.control.trefn[k]) * (d_ice + d_water)
906
+ cpdef inline void calc_schmpot_v1(self) noexcept nogil:
907
+ cdef numpy.int64_t k
908
+ for k in range(self.parameters.control.nhru):
909
+ self.sequences.fluxes.schmpot[k] = max((self.sequences.fluxes.wgtf[k] + self.sequences.fluxes.wnied[k]) / self.parameters.fixed.rschmelz, 0.0)
910
+ cpdef inline void calc_schm_wats_v1(self) noexcept nogil:
911
+ cdef numpy.int64_t k
912
+ for k in range(self.parameters.control.nhru):
913
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
914
+ self.sequences.fluxes.schm[k] = 0.0
915
+ else:
916
+ self.sequences.fluxes.schm[k] = min(self.sequences.fluxes.schmpot[k], self.sequences.states.wats[k])
917
+ self.sequences.states.wats[k] = self.sequences.states.wats[k] - (self.sequences.fluxes.schm[k])
918
+ cpdef inline void calc_wada_waes_v1(self) noexcept nogil:
919
+ cdef numpy.int64_t k
920
+ for k in range(self.parameters.control.nhru):
921
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
922
+ self.sequences.states.waes[k] = 0.0
923
+ self.sequences.fluxes.wada[k] = self.sequences.fluxes.nbes[k]
924
+ else:
925
+ self.sequences.states.waes[k] = self.sequences.states.waes[k] + (self.sequences.fluxes.nbes[k])
926
+ self.sequences.fluxes.wada[k] = max(self.sequences.states.waes[k] - self.parameters.control.pwmax[k] * self.sequences.states.wats[k], 0.0)
927
+ self.sequences.states.waes[k] = self.sequences.states.waes[k] - (self.sequences.fluxes.wada[k])
928
+ cpdef inline void calc_evi_inzp_v1(self) noexcept nogil:
929
+ if self.aetmodel_typeid == 1:
930
+ self.calc_evi_inzp_aetmodel_v1( (<masterinterface.MasterInterface>self.aetmodel) )
931
+ cpdef inline void calc_evb_v1(self) noexcept nogil:
932
+ if self.aetmodel_typeid == 1:
933
+ self.calc_evb_aetmodel_v1((<masterinterface.MasterInterface>self.aetmodel))
934
+ cpdef inline void calc_qkap_v1(self) noexcept nogil:
935
+ cdef numpy.int64_t k
936
+ for k in range(self.parameters.control.nhru):
937
+ if (self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE)) or (self.parameters.control.wmax[k] <= 0.0):
938
+ self.sequences.fluxes.qkap[k] = 0.0
939
+ elif self.sequences.states.bowa[k] <= self.parameters.control.kapgrenz[k, 0]:
940
+ self.sequences.fluxes.qkap[k] = self.parameters.control.kapmax[k]
941
+ elif self.sequences.states.bowa[k] <= self.parameters.control.kapgrenz[k, 1]:
942
+ self.sequences.fluxes.qkap[k] = self.parameters.control.kapmax[k] * ( 1.0 - (self.sequences.states.bowa[k] - self.parameters.control.kapgrenz[k, 0]) / (self.parameters.control.kapgrenz[k, 1] - self.parameters.control.kapgrenz[k, 0]) )
943
+ else:
944
+ self.sequences.fluxes.qkap[k] = 0
945
+ cpdef inline void calc_qbb_v1(self) noexcept nogil:
946
+ cdef numpy.int64_t k
947
+ for k in range(self.parameters.control.nhru):
948
+ if ( (self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE)) or (self.sequences.states.bowa[k] <= self.parameters.control.pwp[k]) or (self.parameters.control.wmax[k] <= 0.0) ):
949
+ self.sequences.fluxes.qbb[k] = 0.0
950
+ elif self.sequences.states.bowa[k] <= self.parameters.control.fk[k]:
951
+ if self.parameters.control.rbeta:
952
+ self.sequences.fluxes.qbb[k] = 0.0
953
+ else:
954
+ self.sequences.fluxes.qbb[k] = self.parameters.control.beta[k] * (self.sequences.states.bowa[k] - self.parameters.control.pwp[k])
955
+ else:
956
+ self.sequences.fluxes.qbb[k] = ( self.parameters.control.beta[k] * (self.sequences.states.bowa[k] - self.parameters.control.pwp[k]) * ( 1.0 + (self.parameters.control.fbeta[k] - 1.0) * (self.sequences.states.bowa[k] - self.parameters.control.fk[k]) / (self.parameters.control.wmax[k] - self.parameters.control.fk[k]) ) )
957
+ cpdef inline void calc_qib1_v1(self) noexcept nogil:
958
+ cdef numpy.int64_t k
959
+ for k in range(self.parameters.control.nhru):
960
+ if (self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE)) or ( self.sequences.states.bowa[k] <= self.parameters.control.pwp[k] ):
961
+ self.sequences.fluxes.qib1[k] = 0.0
962
+ else:
963
+ self.sequences.fluxes.qib1[k] = self.parameters.control.dmin[k] * (self.sequences.states.bowa[k] / self.parameters.control.wmax[k])
964
+ cpdef inline void calc_qib2_v1(self) noexcept nogil:
965
+ cdef numpy.int64_t k
966
+ for k in range(self.parameters.control.nhru):
967
+ if ( (self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE)) or (self.sequences.states.bowa[k] <= self.parameters.control.fk[k]) or (self.parameters.control.wmax[k] <= self.parameters.control.fk[k]) ):
968
+ self.sequences.fluxes.qib2[k] = 0.0
969
+ else:
970
+ self.sequences.fluxes.qib2[k] = (self.parameters.control.dmax[k] - self.parameters.control.dmin[k]) * ( (self.sequences.states.bowa[k] - self.parameters.control.fk[k]) / (self.parameters.control.wmax[k] - self.parameters.control.fk[k]) ) ** 1.5
971
+ cpdef inline void calc_qdb_v1(self) noexcept nogil:
972
+ cdef double d_exz
973
+ cdef double d_sfa
974
+ cdef numpy.int64_t k
975
+ for k in range(self.parameters.control.nhru):
976
+ if self.parameters.control.lnk[k] == WASSER:
977
+ self.sequences.fluxes.qdb[k] = 0.0
978
+ elif (self.parameters.control.lnk[k] in (VERS, FLUSS, SEE)) or (self.parameters.control.wmax[k] <= 0.0):
979
+ self.sequences.fluxes.qdb[k] = self.sequences.fluxes.wada[k]
980
+ else:
981
+ if self.sequences.states.bowa[k] < self.parameters.control.wmax[k]:
982
+ d_sfa = (1.0 - self.sequences.states.bowa[k] / self.parameters.control.wmax[k]) ** ( 1.0 / (self.parameters.control.bsf[k] + 1.0) ) - (self.sequences.fluxes.wada[k] / ((self.parameters.control.bsf[k] + 1.0) * self.parameters.control.wmax[k]))
983
+ else:
984
+ d_sfa = 0.0
985
+ d_exz = self.sequences.states.bowa[k] + self.sequences.fluxes.wada[k] - self.parameters.control.wmax[k]
986
+ self.sequences.fluxes.qdb[k] = d_exz
987
+ if d_sfa > 0.0:
988
+ self.sequences.fluxes.qdb[k] = self.sequences.fluxes.qdb[k] + (d_sfa ** (self.parameters.control.bsf[k] + 1.0) * self.parameters.control.wmax[k])
989
+ self.sequences.fluxes.qdb[k] = max(self.sequences.fluxes.qdb[k], 0.0)
990
+ cpdef inline void calc_bowa_v1(self) noexcept nogil:
991
+ if self.soilmodel is None:
992
+ self.calc_bowa_default_v1()
993
+ elif self.soilmodel_typeid == 1:
994
+ self.calc_bowa_soilmodel_v1( (<masterinterface.MasterInterface>self.soilmodel) )
995
+ cpdef inline void calc_qbgz_v1(self) noexcept nogil:
996
+ cdef numpy.int64_t k
997
+ self.sequences.fluxes.qbgz = 0.0
998
+ for k in range(self.parameters.control.nhru):
999
+ if self.parameters.control.lnk[k] == SEE:
1000
+ self.sequences.fluxes.qbgz = self.sequences.fluxes.qbgz + (self.parameters.control.fhru[k] * (self.sequences.fluxes.nkor[k] - self.sequences.fluxes.evi[k]))
1001
+ elif self.parameters.control.lnk[k] not in (WASSER, FLUSS, VERS):
1002
+ self.sequences.fluxes.qbgz = self.sequences.fluxes.qbgz + (self.parameters.control.fhru[k] * (self.sequences.fluxes.qbb[k] - self.sequences.fluxes.qkap[k]))
1003
+ cpdef inline void calc_qigz1_v1(self) noexcept nogil:
1004
+ cdef numpy.int64_t k
1005
+ self.sequences.fluxes.qigz1 = 0.0
1006
+ for k in range(self.parameters.control.nhru):
1007
+ self.sequences.fluxes.qigz1 = self.sequences.fluxes.qigz1 + (self.parameters.control.fhru[k] * self.sequences.fluxes.qib1[k])
1008
+ cpdef inline void calc_qigz2_v1(self) noexcept nogil:
1009
+ cdef numpy.int64_t k
1010
+ self.sequences.fluxes.qigz2 = 0.0
1011
+ for k in range(self.parameters.control.nhru):
1012
+ self.sequences.fluxes.qigz2 = self.sequences.fluxes.qigz2 + (self.parameters.control.fhru[k] * self.sequences.fluxes.qib2[k])
1013
+ cpdef inline void calc_qdgz_v1(self) noexcept nogil:
1014
+ cdef numpy.int64_t k
1015
+ self.sequences.fluxes.qdgz = 0.0
1016
+ for k in range(self.parameters.control.nhru):
1017
+ if self.parameters.control.lnk[k] == FLUSS:
1018
+ self.sequences.fluxes.qdgz = self.sequences.fluxes.qdgz + (self.parameters.control.fhru[k] * (self.sequences.fluxes.nkor[k] - self.sequences.fluxes.evi[k]))
1019
+ elif self.parameters.control.lnk[k] not in (WASSER, SEE):
1020
+ self.sequences.fluxes.qdgz = self.sequences.fluxes.qdgz + (self.parameters.control.fhru[k] * self.sequences.fluxes.qdb[k])
1021
+ cpdef inline void calc_qbga_sbg_qbgz_qdgz_v1(self) noexcept nogil:
1022
+ cdef double qbgz
1023
+ cdef double tt
1024
+ cdef double c2
1025
+ cdef double c1
1026
+ cdef double st
1027
+ cdef double fraction
1028
+ cdef double t
1029
+ cdef double excess
1030
+ cdef double z
1031
+ cdef double s0
1032
+ cdef double g2
1033
+ cdef double g1
1034
+ cdef double sm
1035
+ cdef double k
1036
+ k = self.parameters.derived.kb
1037
+ sm = self.parameters.control.gsbmax * self.parameters.control.volbmax
1038
+ g1 = self.parameters.control.gsbgrad1
1039
+ g2 = self.parameters.control.gsbgrad2
1040
+ s0 = self.sequences.old_states.sbg
1041
+ z = self.sequences.fluxes.qbgz
1042
+ if s0 > sm:
1043
+ excess = s0 - sm
1044
+ s0 = sm
1045
+ else:
1046
+ excess = 0.0
1047
+ if k == 0.0:
1048
+ self.sequences.new_states.sbg = 0.0
1049
+ self.sequences.fluxes.qbga = s0 + self.sequences.fluxes.qbgz
1050
+ elif z - s0 / k <= g1:
1051
+ if isinf(k):
1052
+ self.sequences.new_states.sbg = min(s0 + z, sm)
1053
+ self.sequences.fluxes.qbga = 0.0
1054
+ else:
1055
+ if isinf(sm):
1056
+ t = 1.0
1057
+ else:
1058
+ fraction = (k * z - sm) / (k * z - s0)
1059
+ if fraction > 0.0:
1060
+ t = -k * log(fraction)
1061
+ else:
1062
+ t = 1.0
1063
+ if t < 1.0:
1064
+ self.sequences.new_states.sbg = sm
1065
+ self.sequences.fluxes.qbga = s0 - sm + t * self.sequences.fluxes.qbgz
1066
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + ((1.0 - t) * sm / k)
1067
+ else:
1068
+ self.sequences.new_states.sbg = self.return_sg_v1(k, s0, z, 1.0)
1069
+ self.sequences.fluxes.qbga = s0 - self.sequences.new_states.sbg + self.sequences.fluxes.qbgz
1070
+ elif g2 == 0.0:
1071
+ self.sequences.fluxes.qbga = s0 / k
1072
+ self.sequences.new_states.sbg = s0
1073
+ else:
1074
+ if isinf(k) and (g2 > g1):
1075
+ self.sequences.fluxes.qbga = 0.0
1076
+ self.sequences.new_states.sbg = s0 + g2 / ((g2 - g1) / z + 1.0)
1077
+ else:
1078
+ st = min(k * (z - g1), sm)
1079
+ if g1 == g2:
1080
+ t = min((st - s0) / g1, 1.0)
1081
+ self.sequences.fluxes.qbga = t * (g1 * t + 2.0 * s0) / (2.0 * k)
1082
+ else:
1083
+ c1 = (g2 - g1) / (g1 - g2 - z)
1084
+ c2 = (g2 * k * z) / (g1 - g2)
1085
+ t = min(k / c1 * log((st + c2) / (s0 + c2)), 1.0)
1086
+ self.sequences.fluxes.qbga = (s0 + c2) * ( exp(c1 * t / k) - 1.0 ) / c1 - c2 * t / k
1087
+ if t < 1.0:
1088
+ if st == sm:
1089
+ self.sequences.new_states.sbg = sm
1090
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + ((1.0 - t) * sm / k)
1091
+ else:
1092
+ fraction = (k * z - sm) / (k * z - st)
1093
+ if fraction > 0.0:
1094
+ tt = -k * log(fraction)
1095
+ else:
1096
+ tt = 1.0
1097
+ if t + tt < 1.0:
1098
+ self.sequences.new_states.sbg = sm
1099
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + (st - sm + tt * self.sequences.fluxes.qbgz)
1100
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + ((1.0 - t - tt) * sm / k)
1101
+ else:
1102
+ self.sequences.new_states.sbg = self.return_sg_v1(k, st, z, 1.0 - t)
1103
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + (st - self.sequences.new_states.sbg + (1.0 - t) * self.sequences.fluxes.qbgz)
1104
+ elif g1 == g2:
1105
+ self.sequences.new_states.sbg = s0 + g1
1106
+ else:
1107
+ self.sequences.new_states.sbg = (s0 + c2) * exp(1.0 / k * c1) - c2
1108
+ qbgz = self.sequences.fluxes.qbgz
1109
+ self.sequences.fluxes.qbgz = self.sequences.new_states.sbg - s0 + self.sequences.fluxes.qbga
1110
+ self.sequences.fluxes.qdgz = self.sequences.fluxes.qdgz + (qbgz - self.sequences.fluxes.qbgz)
1111
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + (excess)
1112
+ cpdef inline void calc_qiga1_sig1_v1(self) noexcept nogil:
1113
+ self.sequences.new_states.sig1 = self.return_sg_v1(self.parameters.derived.ki1, self.sequences.old_states.sig1, self.sequences.fluxes.qigz1, 1.0)
1114
+ self.sequences.fluxes.qiga1 = self.sequences.old_states.sig1 - self.sequences.new_states.sig1 + self.sequences.fluxes.qigz1
1115
+ cpdef inline void calc_qiga2_sig2_v1(self) noexcept nogil:
1116
+ self.sequences.new_states.sig2 = self.return_sg_v1(self.parameters.derived.ki2, self.sequences.old_states.sig2, self.sequences.fluxes.qigz2, 1.0)
1117
+ self.sequences.fluxes.qiga2 = self.sequences.old_states.sig2 - self.sequences.new_states.sig2 + self.sequences.fluxes.qigz2
1118
+ cpdef inline void calc_qdgz1_qdgz2_v1(self) noexcept nogil:
1119
+ if self.sequences.fluxes.qdgz > self.parameters.control.a2:
1120
+ self.sequences.fluxes.qdgz2 = (self.sequences.fluxes.qdgz - self.parameters.control.a2) ** 2 / (self.sequences.fluxes.qdgz + self.parameters.control.a1 - self.parameters.control.a2)
1121
+ self.sequences.fluxes.qdgz1 = self.sequences.fluxes.qdgz - self.sequences.fluxes.qdgz2
1122
+ else:
1123
+ self.sequences.fluxes.qdgz2 = 0.0
1124
+ self.sequences.fluxes.qdgz1 = self.sequences.fluxes.qdgz
1125
+ cpdef inline void calc_qdga1_sdg1_v1(self) noexcept nogil:
1126
+ self.sequences.new_states.sdg1 = self.return_sg_v1(self.parameters.derived.kd1, self.sequences.old_states.sdg1, self.sequences.fluxes.qdgz1, 1.0)
1127
+ self.sequences.fluxes.qdga1 = self.sequences.old_states.sdg1 - self.sequences.new_states.sdg1 + self.sequences.fluxes.qdgz1
1128
+ cpdef inline void calc_qdga2_sdg2_v1(self) noexcept nogil:
1129
+ self.sequences.new_states.sdg2 = self.return_sg_v1(self.parameters.derived.kd2, self.sequences.old_states.sdg2, self.sequences.fluxes.qdgz2, 1.0)
1130
+ self.sequences.fluxes.qdga2 = self.sequences.old_states.sdg2 - self.sequences.new_states.sdg2 + self.sequences.fluxes.qdgz2
1131
+ cpdef inline void calc_qah_v1(self) noexcept nogil:
1132
+ cdef double d_epw
1133
+ cdef numpy.int64_t k
1134
+ cdef double d_area
1135
+ self.sequences.fluxes.qah = self.sequences.fluxes.qzh + self.sequences.fluxes.qbga + self.sequences.fluxes.qiga1 + self.sequences.fluxes.qiga2 + self.sequences.fluxes.qdga1 + self.sequences.fluxes.qdga2
1136
+ if (not self.parameters.control.negq) and (self.sequences.fluxes.qah < 0.0):
1137
+ d_area = 0.0
1138
+ for k in range(self.parameters.control.nhru):
1139
+ if self.parameters.control.lnk[k] in (FLUSS, SEE):
1140
+ d_area = d_area + (self.parameters.control.fhru[k])
1141
+ if d_area > 0.0:
1142
+ for k in range(self.parameters.control.nhru):
1143
+ if self.parameters.control.lnk[k] in (FLUSS, SEE):
1144
+ self.sequences.fluxes.evi[k] = self.sequences.fluxes.evi[k] + (self.sequences.fluxes.qah / d_area)
1145
+ self.sequences.fluxes.qah = 0.0
1146
+ d_epw = 0.0
1147
+ for k in range(self.parameters.control.nhru):
1148
+ if self.parameters.control.lnk[k] == WASSER:
1149
+ self.sequences.fluxes.qah = self.sequences.fluxes.qah + (self.parameters.control.fhru[k] * self.sequences.fluxes.nkor[k])
1150
+ d_epw = d_epw + (self.parameters.control.fhru[k] * self.sequences.fluxes.evi[k])
1151
+ if (self.sequences.fluxes.qah > d_epw) or self.parameters.control.negq:
1152
+ self.sequences.fluxes.qah = self.sequences.fluxes.qah - (d_epw)
1153
+ elif d_epw > 0.0:
1154
+ for k in range(self.parameters.control.nhru):
1155
+ if self.parameters.control.lnk[k] == WASSER:
1156
+ self.sequences.fluxes.evi[k] = self.sequences.fluxes.evi[k] * (self.sequences.fluxes.qah / d_epw)
1157
+ self.sequences.fluxes.qah = 0.0
1158
+ cpdef inline void calc_qa_v1(self) noexcept nogil:
1159
+ self.sequences.fluxes.qa = self.parameters.derived.qfactor * self.sequences.fluxes.qah
1160
+ cpdef double get_temperature_v1(self, numpy.int64_t s) noexcept nogil:
1161
+ return self.sequences.fluxes.tkor[s]
1162
+ cpdef double get_meantemperature_v1(self) noexcept nogil:
1163
+ return self.sequences.inputs.teml
1164
+ cpdef double get_precipitation_v1(self, numpy.int64_t s) noexcept nogil:
1165
+ return self.sequences.fluxes.nkor[s]
1166
+ cpdef double get_interceptedwater_v1(self, numpy.int64_t k) noexcept nogil:
1167
+ return self.sequences.states.inzp[k]
1168
+ cpdef double get_soilwater_v1(self, numpy.int64_t k) noexcept nogil:
1169
+ return self.sequences.states.bowa[k]
1170
+ cpdef double get_snowcover_v1(self, numpy.int64_t k) noexcept nogil:
1171
+ if self.sequences.states.wats[k] > 0.0:
1172
+ return 1.0
1173
+ return 0.0
1174
+ cpdef inline void calc_evi_inzp_aetmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
1175
+ cdef numpy.int64_t k
1176
+ submodel.determine_interceptionevaporation()
1177
+ submodel.determine_waterevaporation()
1178
+ for k in range(self.parameters.control.nhru):
1179
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
1180
+ self.sequences.fluxes.evi[k] = submodel.get_waterevaporation(k)
1181
+ self.sequences.states.inzp[k] = 0.0
1182
+ else:
1183
+ self.sequences.fluxes.evi[k] = min(submodel.get_interceptionevaporation(k), self.sequences.states.inzp[k])
1184
+ self.sequences.states.inzp[k] = self.sequences.states.inzp[k] - (self.sequences.fluxes.evi[k])
1185
+ cpdef inline void calc_evb_aetmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
1186
+ cdef numpy.int64_t k
1187
+ submodel.determine_soilevapotranspiration()
1188
+ for k in range(self.parameters.control.nhru):
1189
+ if self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE):
1190
+ self.sequences.fluxes.evb[k] = 0.0
1191
+ else:
1192
+ self.sequences.fluxes.evb[k] = submodel.get_soilevapotranspiration(k)
1193
+ cpdef inline double return_sg_v1(self, double k, double s, double qz, double dt) noexcept nogil:
1194
+ if k <= 0.0:
1195
+ return 0.0
1196
+ if isinf(k):
1197
+ return s + qz
1198
+ return k * qz - (k * qz - s) * exp(-dt / k)
1199
+ cpdef inline void calc_bowa_default_v1(self) noexcept nogil:
1200
+ cdef double d_factor
1201
+ cdef double d_rvl
1202
+ cdef double d_incr
1203
+ cdef double d_decr
1204
+ cdef numpy.int64_t k
1205
+ for k in range(self.parameters.control.nhru):
1206
+ if self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE):
1207
+ self.sequences.states.bowa[k] = 0.0
1208
+ else:
1209
+ d_decr = self.sequences.fluxes.qbb[k] + self.sequences.fluxes.qib1[k] + self.sequences.fluxes.qib2[k] + self.sequences.fluxes.qdb[k]
1210
+ d_incr = self.sequences.fluxes.wada[k] + self.sequences.fluxes.qkap[k]
1211
+ if self.sequences.fluxes.evb[k] > 0.0:
1212
+ d_decr = d_decr + (self.sequences.fluxes.evb[k])
1213
+ else:
1214
+ d_incr = d_incr - (self.sequences.fluxes.evb[k])
1215
+ if d_decr > self.sequences.states.bowa[k] + d_incr:
1216
+ d_rvl = (self.sequences.states.bowa[k] + d_incr) / d_decr
1217
+ if self.sequences.fluxes.evb[k] > 0.0:
1218
+ self.sequences.fluxes.evb[k] = self.sequences.fluxes.evb[k] * (d_rvl)
1219
+ self.sequences.fluxes.qbb[k] = self.sequences.fluxes.qbb[k] * (d_rvl)
1220
+ self.sequences.fluxes.qib1[k] = self.sequences.fluxes.qib1[k] * (d_rvl)
1221
+ self.sequences.fluxes.qib2[k] = self.sequences.fluxes.qib2[k] * (d_rvl)
1222
+ self.sequences.fluxes.qdb[k] = self.sequences.fluxes.qdb[k] * (d_rvl)
1223
+ self.sequences.states.bowa[k] = 0.0
1224
+ else:
1225
+ self.sequences.states.bowa[k] = (self.sequences.states.bowa[k] + d_incr) - d_decr
1226
+ if self.sequences.states.bowa[k] > self.parameters.control.wmax[k]:
1227
+ d_factor = (self.sequences.states.bowa[k] - self.parameters.control.wmax[k]) / d_incr
1228
+ if self.sequences.fluxes.evb[k] < 0.0:
1229
+ self.sequences.fluxes.evb[k] = self.sequences.fluxes.evb[k] * (d_factor)
1230
+ self.sequences.fluxes.wada[k] = self.sequences.fluxes.wada[k] * (d_factor)
1231
+ self.sequences.fluxes.qkap[k] = self.sequences.fluxes.qkap[k] * (d_factor)
1232
+ self.sequences.states.bowa[k] = self.parameters.control.wmax[k]
1233
+ cpdef inline void calc_bowa_soilmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
1234
+ cdef double removal
1235
+ cdef double demand
1236
+ cdef double factor
1237
+ cdef double addition
1238
+ cdef double supply
1239
+ cdef double qbb_soilmodel
1240
+ cdef double infiltration
1241
+ cdef numpy.int64_t k
1242
+ for k in range(self.parameters.control.nhru):
1243
+ if self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE):
1244
+ self.sequences.states.bowa[k] = 0.0
1245
+ else:
1246
+ submodel.set_initialsurfacewater(k, self.sequences.fluxes.wada[k])
1247
+ submodel.set_actualsurfacewater(k, self.sequences.fluxes.wada[k] - self.sequences.fluxes.qdb[k])
1248
+ submodel.set_soilwatersupply(k, 0.0)
1249
+ submodel.set_soilwaterdemand(k, 0.0)
1250
+ submodel.execute_infiltration(k)
1251
+ infiltration = submodel.get_infiltration(k)
1252
+ self.sequences.fluxes.qdb[k] = self.sequences.fluxes.qdb[k] + ((self.sequences.fluxes.wada[k] - self.sequences.fluxes.qdb[k]) - infiltration)
1253
+ qbb_soilmodel = submodel.get_percolation(k)
1254
+ supply = self.sequences.fluxes.qkap[k]
1255
+ if self.sequences.fluxes.evb[k] < 0.0:
1256
+ supply = supply - (self.sequences.fluxes.evb[k])
1257
+ submodel.set_soilwatersupply(k, supply)
1258
+ submodel.add_soilwater(k)
1259
+ addition = submodel.get_soilwateraddition(k)
1260
+ if addition < supply:
1261
+ factor = addition / supply
1262
+ self.sequences.fluxes.qkap[k] = self.sequences.fluxes.qkap[k] * (factor)
1263
+ if self.sequences.fluxes.evb[k] < 0.0:
1264
+ self.sequences.fluxes.evb[k] = self.sequences.fluxes.evb[k] * (factor)
1265
+ demand = self.sequences.fluxes.qbb[k] + self.sequences.fluxes.qib1[k] + self.sequences.fluxes.qib2[k]
1266
+ if self.sequences.fluxes.evb[k] > 0.0:
1267
+ demand = demand + (self.sequences.fluxes.evb[k])
1268
+ submodel.set_soilwaterdemand(k, demand)
1269
+ submodel.remove_soilwater(k)
1270
+ removal = submodel.get_soilwaterremoval(k)
1271
+ if removal < demand:
1272
+ factor = removal / demand
1273
+ self.sequences.fluxes.qbb[k] = self.sequences.fluxes.qbb[k] * (factor)
1274
+ self.sequences.fluxes.qib1[k] = self.sequences.fluxes.qib1[k] * (factor)
1275
+ self.sequences.fluxes.qib2[k] = self.sequences.fluxes.qib2[k] * (factor)
1276
+ if self.sequences.fluxes.evb[k] > 0.0:
1277
+ self.sequences.fluxes.evb[k] = self.sequences.fluxes.evb[k] * (factor)
1278
+ self.sequences.states.bowa[k] = submodel.get_soilwatercontent(k)
1279
+ self.sequences.fluxes.qbb[k] = self.sequences.fluxes.qbb[k] + (qbb_soilmodel)
1280
+ cpdef inline void pass_qa_v1(self) noexcept nogil:
1281
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.qa)
1282
+ cpdef inline void pick_qz(self) noexcept nogil:
1283
+ cdef numpy.int64_t idx
1284
+ self.sequences.fluxes.qz = 0.0
1285
+ for idx in range(self.sequences.inlets.len_q):
1286
+ self.sequences.fluxes.qz = self.sequences.fluxes.qz + (self.sequences.inlets.q[idx][0])
1287
+ cpdef inline void calc_qzh(self) noexcept nogil:
1288
+ self.sequences.fluxes.qzh = self.sequences.fluxes.qz / self.parameters.derived.qfactor
1289
+ cpdef inline void calc_nkor(self) noexcept nogil:
1290
+ cdef numpy.int64_t k
1291
+ for k in range(self.parameters.control.nhru):
1292
+ self.sequences.fluxes.nkor[k] = self.parameters.control.kg[k] * self.sequences.inputs.nied
1293
+ cpdef inline void calc_tkor(self) noexcept nogil:
1294
+ cdef numpy.int64_t k
1295
+ for k in range(self.parameters.control.nhru):
1296
+ self.sequences.fluxes.tkor[k] = self.parameters.control.kt[k] + self.sequences.inputs.teml
1297
+ cpdef inline void calc_nbes_inzp(self) noexcept nogil:
1298
+ cdef numpy.int64_t k
1299
+ for k in range(self.parameters.control.nhru):
1300
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
1301
+ self.sequences.fluxes.nbes[k] = 0.0
1302
+ self.sequences.states.inzp[k] = 0.0
1303
+ else:
1304
+ self.sequences.fluxes.nbes[k] = max( self.sequences.fluxes.nkor[k] + self.sequences.states.inzp[k] - self.parameters.derived.kinz[self.parameters.control.lnk[k] - 1, self.parameters.derived.moy[self.idx_sim]], 0.0, )
1305
+ self.sequences.states.inzp[k] = self.sequences.states.inzp[k] + (self.sequences.fluxes.nkor[k] - self.sequences.fluxes.nbes[k])
1306
+ cpdef inline void calc_snratio(self) noexcept nogil:
1307
+ cdef numpy.int64_t k
1308
+ for k in range(self.parameters.control.nhru):
1309
+ if self.sequences.fluxes.tkor[k] >= (self.parameters.control.tgr[k] + self.parameters.control.tsp[k] / 2.0):
1310
+ self.sequences.aides.snratio[k] = 0.0
1311
+ elif self.sequences.fluxes.tkor[k] <= (self.parameters.control.tgr[k] - self.parameters.control.tsp[k] / 2.0):
1312
+ self.sequences.aides.snratio[k] = 1.0
1313
+ else:
1314
+ self.sequences.aides.snratio[k] = ( (self.parameters.control.tgr[k] + self.parameters.control.tsp[k] / 2.0) - self.sequences.fluxes.tkor[k] ) / self.parameters.control.tsp[k]
1315
+ cpdef inline void calc_sbes(self) noexcept nogil:
1316
+ cdef numpy.int64_t k
1317
+ for k in range(self.parameters.control.nhru):
1318
+ self.sequences.fluxes.sbes[k] = self.sequences.aides.snratio[k] * self.sequences.fluxes.nbes[k]
1319
+ cpdef inline void calc_wats(self) noexcept nogil:
1320
+ cdef numpy.int64_t k
1321
+ for k in range(self.parameters.control.nhru):
1322
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
1323
+ self.sequences.states.wats[k] = 0.0
1324
+ else:
1325
+ self.sequences.states.wats[k] = self.sequences.states.wats[k] + (self.sequences.fluxes.sbes[k])
1326
+ cpdef inline void calc_wgtf(self) noexcept nogil:
1327
+ cdef numpy.int64_t k
1328
+ for k in range(self.parameters.control.nhru):
1329
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
1330
+ self.sequences.fluxes.wgtf[k] = 0.0
1331
+ else:
1332
+ self.sequences.fluxes.wgtf[k] = self.parameters.control.gtf[k] * (self.sequences.fluxes.tkor[k] - self.parameters.control.treft[k]) * self.parameters.fixed.rschmelz
1333
+ cpdef inline void calc_wnied(self) noexcept nogil:
1334
+ cdef double d_water
1335
+ cdef double d_ice
1336
+ cdef numpy.int64_t k
1337
+ for k in range(self.parameters.control.nhru):
1338
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
1339
+ self.sequences.fluxes.wnied[k] = 0.0
1340
+ else:
1341
+ d_ice = self.parameters.fixed.cpeis * self.sequences.fluxes.sbes[k]
1342
+ d_water = self.parameters.fixed.cpwasser * (self.sequences.fluxes.nbes[k] - self.sequences.fluxes.sbes[k])
1343
+ self.sequences.fluxes.wnied[k] = (self.sequences.fluxes.tkor[k] - self.parameters.control.trefn[k]) * (d_ice + d_water)
1344
+ cpdef inline void calc_schmpot(self) noexcept nogil:
1345
+ cdef numpy.int64_t k
1346
+ for k in range(self.parameters.control.nhru):
1347
+ self.sequences.fluxes.schmpot[k] = max((self.sequences.fluxes.wgtf[k] + self.sequences.fluxes.wnied[k]) / self.parameters.fixed.rschmelz, 0.0)
1348
+ cpdef inline void calc_schm_wats(self) noexcept nogil:
1349
+ cdef numpy.int64_t k
1350
+ for k in range(self.parameters.control.nhru):
1351
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
1352
+ self.sequences.fluxes.schm[k] = 0.0
1353
+ else:
1354
+ self.sequences.fluxes.schm[k] = min(self.sequences.fluxes.schmpot[k], self.sequences.states.wats[k])
1355
+ self.sequences.states.wats[k] = self.sequences.states.wats[k] - (self.sequences.fluxes.schm[k])
1356
+ cpdef inline void calc_wada_waes(self) noexcept nogil:
1357
+ cdef numpy.int64_t k
1358
+ for k in range(self.parameters.control.nhru):
1359
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
1360
+ self.sequences.states.waes[k] = 0.0
1361
+ self.sequences.fluxes.wada[k] = self.sequences.fluxes.nbes[k]
1362
+ else:
1363
+ self.sequences.states.waes[k] = self.sequences.states.waes[k] + (self.sequences.fluxes.nbes[k])
1364
+ self.sequences.fluxes.wada[k] = max(self.sequences.states.waes[k] - self.parameters.control.pwmax[k] * self.sequences.states.wats[k], 0.0)
1365
+ self.sequences.states.waes[k] = self.sequences.states.waes[k] - (self.sequences.fluxes.wada[k])
1366
+ cpdef inline void calc_evi_inzp(self) noexcept nogil:
1367
+ if self.aetmodel_typeid == 1:
1368
+ self.calc_evi_inzp_aetmodel_v1( (<masterinterface.MasterInterface>self.aetmodel) )
1369
+ cpdef inline void calc_evb(self) noexcept nogil:
1370
+ if self.aetmodel_typeid == 1:
1371
+ self.calc_evb_aetmodel_v1((<masterinterface.MasterInterface>self.aetmodel))
1372
+ cpdef inline void calc_qkap(self) noexcept nogil:
1373
+ cdef numpy.int64_t k
1374
+ for k in range(self.parameters.control.nhru):
1375
+ if (self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE)) or (self.parameters.control.wmax[k] <= 0.0):
1376
+ self.sequences.fluxes.qkap[k] = 0.0
1377
+ elif self.sequences.states.bowa[k] <= self.parameters.control.kapgrenz[k, 0]:
1378
+ self.sequences.fluxes.qkap[k] = self.parameters.control.kapmax[k]
1379
+ elif self.sequences.states.bowa[k] <= self.parameters.control.kapgrenz[k, 1]:
1380
+ self.sequences.fluxes.qkap[k] = self.parameters.control.kapmax[k] * ( 1.0 - (self.sequences.states.bowa[k] - self.parameters.control.kapgrenz[k, 0]) / (self.parameters.control.kapgrenz[k, 1] - self.parameters.control.kapgrenz[k, 0]) )
1381
+ else:
1382
+ self.sequences.fluxes.qkap[k] = 0
1383
+ cpdef inline void calc_qbb(self) noexcept nogil:
1384
+ cdef numpy.int64_t k
1385
+ for k in range(self.parameters.control.nhru):
1386
+ if ( (self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE)) or (self.sequences.states.bowa[k] <= self.parameters.control.pwp[k]) or (self.parameters.control.wmax[k] <= 0.0) ):
1387
+ self.sequences.fluxes.qbb[k] = 0.0
1388
+ elif self.sequences.states.bowa[k] <= self.parameters.control.fk[k]:
1389
+ if self.parameters.control.rbeta:
1390
+ self.sequences.fluxes.qbb[k] = 0.0
1391
+ else:
1392
+ self.sequences.fluxes.qbb[k] = self.parameters.control.beta[k] * (self.sequences.states.bowa[k] - self.parameters.control.pwp[k])
1393
+ else:
1394
+ self.sequences.fluxes.qbb[k] = ( self.parameters.control.beta[k] * (self.sequences.states.bowa[k] - self.parameters.control.pwp[k]) * ( 1.0 + (self.parameters.control.fbeta[k] - 1.0) * (self.sequences.states.bowa[k] - self.parameters.control.fk[k]) / (self.parameters.control.wmax[k] - self.parameters.control.fk[k]) ) )
1395
+ cpdef inline void calc_qib1(self) noexcept nogil:
1396
+ cdef numpy.int64_t k
1397
+ for k in range(self.parameters.control.nhru):
1398
+ if (self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE)) or ( self.sequences.states.bowa[k] <= self.parameters.control.pwp[k] ):
1399
+ self.sequences.fluxes.qib1[k] = 0.0
1400
+ else:
1401
+ self.sequences.fluxes.qib1[k] = self.parameters.control.dmin[k] * (self.sequences.states.bowa[k] / self.parameters.control.wmax[k])
1402
+ cpdef inline void calc_qib2(self) noexcept nogil:
1403
+ cdef numpy.int64_t k
1404
+ for k in range(self.parameters.control.nhru):
1405
+ if ( (self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE)) or (self.sequences.states.bowa[k] <= self.parameters.control.fk[k]) or (self.parameters.control.wmax[k] <= self.parameters.control.fk[k]) ):
1406
+ self.sequences.fluxes.qib2[k] = 0.0
1407
+ else:
1408
+ self.sequences.fluxes.qib2[k] = (self.parameters.control.dmax[k] - self.parameters.control.dmin[k]) * ( (self.sequences.states.bowa[k] - self.parameters.control.fk[k]) / (self.parameters.control.wmax[k] - self.parameters.control.fk[k]) ) ** 1.5
1409
+ cpdef inline void calc_qdb(self) noexcept nogil:
1410
+ cdef double d_exz
1411
+ cdef double d_sfa
1412
+ cdef numpy.int64_t k
1413
+ for k in range(self.parameters.control.nhru):
1414
+ if self.parameters.control.lnk[k] == WASSER:
1415
+ self.sequences.fluxes.qdb[k] = 0.0
1416
+ elif (self.parameters.control.lnk[k] in (VERS, FLUSS, SEE)) or (self.parameters.control.wmax[k] <= 0.0):
1417
+ self.sequences.fluxes.qdb[k] = self.sequences.fluxes.wada[k]
1418
+ else:
1419
+ if self.sequences.states.bowa[k] < self.parameters.control.wmax[k]:
1420
+ d_sfa = (1.0 - self.sequences.states.bowa[k] / self.parameters.control.wmax[k]) ** ( 1.0 / (self.parameters.control.bsf[k] + 1.0) ) - (self.sequences.fluxes.wada[k] / ((self.parameters.control.bsf[k] + 1.0) * self.parameters.control.wmax[k]))
1421
+ else:
1422
+ d_sfa = 0.0
1423
+ d_exz = self.sequences.states.bowa[k] + self.sequences.fluxes.wada[k] - self.parameters.control.wmax[k]
1424
+ self.sequences.fluxes.qdb[k] = d_exz
1425
+ if d_sfa > 0.0:
1426
+ self.sequences.fluxes.qdb[k] = self.sequences.fluxes.qdb[k] + (d_sfa ** (self.parameters.control.bsf[k] + 1.0) * self.parameters.control.wmax[k])
1427
+ self.sequences.fluxes.qdb[k] = max(self.sequences.fluxes.qdb[k], 0.0)
1428
+ cpdef inline void calc_bowa(self) noexcept nogil:
1429
+ if self.soilmodel is None:
1430
+ self.calc_bowa_default_v1()
1431
+ elif self.soilmodel_typeid == 1:
1432
+ self.calc_bowa_soilmodel_v1( (<masterinterface.MasterInterface>self.soilmodel) )
1433
+ cpdef inline void calc_qbgz(self) noexcept nogil:
1434
+ cdef numpy.int64_t k
1435
+ self.sequences.fluxes.qbgz = 0.0
1436
+ for k in range(self.parameters.control.nhru):
1437
+ if self.parameters.control.lnk[k] == SEE:
1438
+ self.sequences.fluxes.qbgz = self.sequences.fluxes.qbgz + (self.parameters.control.fhru[k] * (self.sequences.fluxes.nkor[k] - self.sequences.fluxes.evi[k]))
1439
+ elif self.parameters.control.lnk[k] not in (WASSER, FLUSS, VERS):
1440
+ self.sequences.fluxes.qbgz = self.sequences.fluxes.qbgz + (self.parameters.control.fhru[k] * (self.sequences.fluxes.qbb[k] - self.sequences.fluxes.qkap[k]))
1441
+ cpdef inline void calc_qigz1(self) noexcept nogil:
1442
+ cdef numpy.int64_t k
1443
+ self.sequences.fluxes.qigz1 = 0.0
1444
+ for k in range(self.parameters.control.nhru):
1445
+ self.sequences.fluxes.qigz1 = self.sequences.fluxes.qigz1 + (self.parameters.control.fhru[k] * self.sequences.fluxes.qib1[k])
1446
+ cpdef inline void calc_qigz2(self) noexcept nogil:
1447
+ cdef numpy.int64_t k
1448
+ self.sequences.fluxes.qigz2 = 0.0
1449
+ for k in range(self.parameters.control.nhru):
1450
+ self.sequences.fluxes.qigz2 = self.sequences.fluxes.qigz2 + (self.parameters.control.fhru[k] * self.sequences.fluxes.qib2[k])
1451
+ cpdef inline void calc_qdgz(self) noexcept nogil:
1452
+ cdef numpy.int64_t k
1453
+ self.sequences.fluxes.qdgz = 0.0
1454
+ for k in range(self.parameters.control.nhru):
1455
+ if self.parameters.control.lnk[k] == FLUSS:
1456
+ self.sequences.fluxes.qdgz = self.sequences.fluxes.qdgz + (self.parameters.control.fhru[k] * (self.sequences.fluxes.nkor[k] - self.sequences.fluxes.evi[k]))
1457
+ elif self.parameters.control.lnk[k] not in (WASSER, SEE):
1458
+ self.sequences.fluxes.qdgz = self.sequences.fluxes.qdgz + (self.parameters.control.fhru[k] * self.sequences.fluxes.qdb[k])
1459
+ cpdef inline void calc_qbga_sbg_qbgz_qdgz(self) noexcept nogil:
1460
+ cdef double qbgz
1461
+ cdef double tt
1462
+ cdef double c2
1463
+ cdef double c1
1464
+ cdef double st
1465
+ cdef double fraction
1466
+ cdef double t
1467
+ cdef double excess
1468
+ cdef double z
1469
+ cdef double s0
1470
+ cdef double g2
1471
+ cdef double g1
1472
+ cdef double sm
1473
+ cdef double k
1474
+ k = self.parameters.derived.kb
1475
+ sm = self.parameters.control.gsbmax * self.parameters.control.volbmax
1476
+ g1 = self.parameters.control.gsbgrad1
1477
+ g2 = self.parameters.control.gsbgrad2
1478
+ s0 = self.sequences.old_states.sbg
1479
+ z = self.sequences.fluxes.qbgz
1480
+ if s0 > sm:
1481
+ excess = s0 - sm
1482
+ s0 = sm
1483
+ else:
1484
+ excess = 0.0
1485
+ if k == 0.0:
1486
+ self.sequences.new_states.sbg = 0.0
1487
+ self.sequences.fluxes.qbga = s0 + self.sequences.fluxes.qbgz
1488
+ elif z - s0 / k <= g1:
1489
+ if isinf(k):
1490
+ self.sequences.new_states.sbg = min(s0 + z, sm)
1491
+ self.sequences.fluxes.qbga = 0.0
1492
+ else:
1493
+ if isinf(sm):
1494
+ t = 1.0
1495
+ else:
1496
+ fraction = (k * z - sm) / (k * z - s0)
1497
+ if fraction > 0.0:
1498
+ t = -k * log(fraction)
1499
+ else:
1500
+ t = 1.0
1501
+ if t < 1.0:
1502
+ self.sequences.new_states.sbg = sm
1503
+ self.sequences.fluxes.qbga = s0 - sm + t * self.sequences.fluxes.qbgz
1504
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + ((1.0 - t) * sm / k)
1505
+ else:
1506
+ self.sequences.new_states.sbg = self.return_sg_v1(k, s0, z, 1.0)
1507
+ self.sequences.fluxes.qbga = s0 - self.sequences.new_states.sbg + self.sequences.fluxes.qbgz
1508
+ elif g2 == 0.0:
1509
+ self.sequences.fluxes.qbga = s0 / k
1510
+ self.sequences.new_states.sbg = s0
1511
+ else:
1512
+ if isinf(k) and (g2 > g1):
1513
+ self.sequences.fluxes.qbga = 0.0
1514
+ self.sequences.new_states.sbg = s0 + g2 / ((g2 - g1) / z + 1.0)
1515
+ else:
1516
+ st = min(k * (z - g1), sm)
1517
+ if g1 == g2:
1518
+ t = min((st - s0) / g1, 1.0)
1519
+ self.sequences.fluxes.qbga = t * (g1 * t + 2.0 * s0) / (2.0 * k)
1520
+ else:
1521
+ c1 = (g2 - g1) / (g1 - g2 - z)
1522
+ c2 = (g2 * k * z) / (g1 - g2)
1523
+ t = min(k / c1 * log((st + c2) / (s0 + c2)), 1.0)
1524
+ self.sequences.fluxes.qbga = (s0 + c2) * ( exp(c1 * t / k) - 1.0 ) / c1 - c2 * t / k
1525
+ if t < 1.0:
1526
+ if st == sm:
1527
+ self.sequences.new_states.sbg = sm
1528
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + ((1.0 - t) * sm / k)
1529
+ else:
1530
+ fraction = (k * z - sm) / (k * z - st)
1531
+ if fraction > 0.0:
1532
+ tt = -k * log(fraction)
1533
+ else:
1534
+ tt = 1.0
1535
+ if t + tt < 1.0:
1536
+ self.sequences.new_states.sbg = sm
1537
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + (st - sm + tt * self.sequences.fluxes.qbgz)
1538
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + ((1.0 - t - tt) * sm / k)
1539
+ else:
1540
+ self.sequences.new_states.sbg = self.return_sg_v1(k, st, z, 1.0 - t)
1541
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + (st - self.sequences.new_states.sbg + (1.0 - t) * self.sequences.fluxes.qbgz)
1542
+ elif g1 == g2:
1543
+ self.sequences.new_states.sbg = s0 + g1
1544
+ else:
1545
+ self.sequences.new_states.sbg = (s0 + c2) * exp(1.0 / k * c1) - c2
1546
+ qbgz = self.sequences.fluxes.qbgz
1547
+ self.sequences.fluxes.qbgz = self.sequences.new_states.sbg - s0 + self.sequences.fluxes.qbga
1548
+ self.sequences.fluxes.qdgz = self.sequences.fluxes.qdgz + (qbgz - self.sequences.fluxes.qbgz)
1549
+ self.sequences.fluxes.qbga = self.sequences.fluxes.qbga + (excess)
1550
+ cpdef inline void calc_qiga1_sig1(self) noexcept nogil:
1551
+ self.sequences.new_states.sig1 = self.return_sg_v1(self.parameters.derived.ki1, self.sequences.old_states.sig1, self.sequences.fluxes.qigz1, 1.0)
1552
+ self.sequences.fluxes.qiga1 = self.sequences.old_states.sig1 - self.sequences.new_states.sig1 + self.sequences.fluxes.qigz1
1553
+ cpdef inline void calc_qiga2_sig2(self) noexcept nogil:
1554
+ self.sequences.new_states.sig2 = self.return_sg_v1(self.parameters.derived.ki2, self.sequences.old_states.sig2, self.sequences.fluxes.qigz2, 1.0)
1555
+ self.sequences.fluxes.qiga2 = self.sequences.old_states.sig2 - self.sequences.new_states.sig2 + self.sequences.fluxes.qigz2
1556
+ cpdef inline void calc_qdgz1_qdgz2(self) noexcept nogil:
1557
+ if self.sequences.fluxes.qdgz > self.parameters.control.a2:
1558
+ self.sequences.fluxes.qdgz2 = (self.sequences.fluxes.qdgz - self.parameters.control.a2) ** 2 / (self.sequences.fluxes.qdgz + self.parameters.control.a1 - self.parameters.control.a2)
1559
+ self.sequences.fluxes.qdgz1 = self.sequences.fluxes.qdgz - self.sequences.fluxes.qdgz2
1560
+ else:
1561
+ self.sequences.fluxes.qdgz2 = 0.0
1562
+ self.sequences.fluxes.qdgz1 = self.sequences.fluxes.qdgz
1563
+ cpdef inline void calc_qdga1_sdg1(self) noexcept nogil:
1564
+ self.sequences.new_states.sdg1 = self.return_sg_v1(self.parameters.derived.kd1, self.sequences.old_states.sdg1, self.sequences.fluxes.qdgz1, 1.0)
1565
+ self.sequences.fluxes.qdga1 = self.sequences.old_states.sdg1 - self.sequences.new_states.sdg1 + self.sequences.fluxes.qdgz1
1566
+ cpdef inline void calc_qdga2_sdg2(self) noexcept nogil:
1567
+ self.sequences.new_states.sdg2 = self.return_sg_v1(self.parameters.derived.kd2, self.sequences.old_states.sdg2, self.sequences.fluxes.qdgz2, 1.0)
1568
+ self.sequences.fluxes.qdga2 = self.sequences.old_states.sdg2 - self.sequences.new_states.sdg2 + self.sequences.fluxes.qdgz2
1569
+ cpdef inline void calc_qah(self) noexcept nogil:
1570
+ cdef double d_epw
1571
+ cdef numpy.int64_t k
1572
+ cdef double d_area
1573
+ self.sequences.fluxes.qah = self.sequences.fluxes.qzh + self.sequences.fluxes.qbga + self.sequences.fluxes.qiga1 + self.sequences.fluxes.qiga2 + self.sequences.fluxes.qdga1 + self.sequences.fluxes.qdga2
1574
+ if (not self.parameters.control.negq) and (self.sequences.fluxes.qah < 0.0):
1575
+ d_area = 0.0
1576
+ for k in range(self.parameters.control.nhru):
1577
+ if self.parameters.control.lnk[k] in (FLUSS, SEE):
1578
+ d_area = d_area + (self.parameters.control.fhru[k])
1579
+ if d_area > 0.0:
1580
+ for k in range(self.parameters.control.nhru):
1581
+ if self.parameters.control.lnk[k] in (FLUSS, SEE):
1582
+ self.sequences.fluxes.evi[k] = self.sequences.fluxes.evi[k] + (self.sequences.fluxes.qah / d_area)
1583
+ self.sequences.fluxes.qah = 0.0
1584
+ d_epw = 0.0
1585
+ for k in range(self.parameters.control.nhru):
1586
+ if self.parameters.control.lnk[k] == WASSER:
1587
+ self.sequences.fluxes.qah = self.sequences.fluxes.qah + (self.parameters.control.fhru[k] * self.sequences.fluxes.nkor[k])
1588
+ d_epw = d_epw + (self.parameters.control.fhru[k] * self.sequences.fluxes.evi[k])
1589
+ if (self.sequences.fluxes.qah > d_epw) or self.parameters.control.negq:
1590
+ self.sequences.fluxes.qah = self.sequences.fluxes.qah - (d_epw)
1591
+ elif d_epw > 0.0:
1592
+ for k in range(self.parameters.control.nhru):
1593
+ if self.parameters.control.lnk[k] == WASSER:
1594
+ self.sequences.fluxes.evi[k] = self.sequences.fluxes.evi[k] * (self.sequences.fluxes.qah / d_epw)
1595
+ self.sequences.fluxes.qah = 0.0
1596
+ cpdef inline void calc_qa(self) noexcept nogil:
1597
+ self.sequences.fluxes.qa = self.parameters.derived.qfactor * self.sequences.fluxes.qah
1598
+ cpdef double get_temperature(self, numpy.int64_t s) noexcept nogil:
1599
+ return self.sequences.fluxes.tkor[s]
1600
+ cpdef double get_meantemperature(self) noexcept nogil:
1601
+ return self.sequences.inputs.teml
1602
+ cpdef double get_precipitation(self, numpy.int64_t s) noexcept nogil:
1603
+ return self.sequences.fluxes.nkor[s]
1604
+ cpdef double get_interceptedwater(self, numpy.int64_t k) noexcept nogil:
1605
+ return self.sequences.states.inzp[k]
1606
+ cpdef double get_soilwater(self, numpy.int64_t k) noexcept nogil:
1607
+ return self.sequences.states.bowa[k]
1608
+ cpdef double get_snowcover(self, numpy.int64_t k) noexcept nogil:
1609
+ if self.sequences.states.wats[k] > 0.0:
1610
+ return 1.0
1611
+ return 0.0
1612
+ cpdef inline void calc_evi_inzp_aetmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
1613
+ cdef numpy.int64_t k
1614
+ submodel.determine_interceptionevaporation()
1615
+ submodel.determine_waterevaporation()
1616
+ for k in range(self.parameters.control.nhru):
1617
+ if self.parameters.control.lnk[k] in (WASSER, FLUSS, SEE):
1618
+ self.sequences.fluxes.evi[k] = submodel.get_waterevaporation(k)
1619
+ self.sequences.states.inzp[k] = 0.0
1620
+ else:
1621
+ self.sequences.fluxes.evi[k] = min(submodel.get_interceptionevaporation(k), self.sequences.states.inzp[k])
1622
+ self.sequences.states.inzp[k] = self.sequences.states.inzp[k] - (self.sequences.fluxes.evi[k])
1623
+ cpdef inline void calc_evb_aetmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
1624
+ cdef numpy.int64_t k
1625
+ submodel.determine_soilevapotranspiration()
1626
+ for k in range(self.parameters.control.nhru):
1627
+ if self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE):
1628
+ self.sequences.fluxes.evb[k] = 0.0
1629
+ else:
1630
+ self.sequences.fluxes.evb[k] = submodel.get_soilevapotranspiration(k)
1631
+ cpdef inline double return_sg(self, double k, double s, double qz, double dt) noexcept nogil:
1632
+ if k <= 0.0:
1633
+ return 0.0
1634
+ if isinf(k):
1635
+ return s + qz
1636
+ return k * qz - (k * qz - s) * exp(-dt / k)
1637
+ cpdef inline void calc_bowa_default(self) noexcept nogil:
1638
+ cdef double d_factor
1639
+ cdef double d_rvl
1640
+ cdef double d_incr
1641
+ cdef double d_decr
1642
+ cdef numpy.int64_t k
1643
+ for k in range(self.parameters.control.nhru):
1644
+ if self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE):
1645
+ self.sequences.states.bowa[k] = 0.0
1646
+ else:
1647
+ d_decr = self.sequences.fluxes.qbb[k] + self.sequences.fluxes.qib1[k] + self.sequences.fluxes.qib2[k] + self.sequences.fluxes.qdb[k]
1648
+ d_incr = self.sequences.fluxes.wada[k] + self.sequences.fluxes.qkap[k]
1649
+ if self.sequences.fluxes.evb[k] > 0.0:
1650
+ d_decr = d_decr + (self.sequences.fluxes.evb[k])
1651
+ else:
1652
+ d_incr = d_incr - (self.sequences.fluxes.evb[k])
1653
+ if d_decr > self.sequences.states.bowa[k] + d_incr:
1654
+ d_rvl = (self.sequences.states.bowa[k] + d_incr) / d_decr
1655
+ if self.sequences.fluxes.evb[k] > 0.0:
1656
+ self.sequences.fluxes.evb[k] = self.sequences.fluxes.evb[k] * (d_rvl)
1657
+ self.sequences.fluxes.qbb[k] = self.sequences.fluxes.qbb[k] * (d_rvl)
1658
+ self.sequences.fluxes.qib1[k] = self.sequences.fluxes.qib1[k] * (d_rvl)
1659
+ self.sequences.fluxes.qib2[k] = self.sequences.fluxes.qib2[k] * (d_rvl)
1660
+ self.sequences.fluxes.qdb[k] = self.sequences.fluxes.qdb[k] * (d_rvl)
1661
+ self.sequences.states.bowa[k] = 0.0
1662
+ else:
1663
+ self.sequences.states.bowa[k] = (self.sequences.states.bowa[k] + d_incr) - d_decr
1664
+ if self.sequences.states.bowa[k] > self.parameters.control.wmax[k]:
1665
+ d_factor = (self.sequences.states.bowa[k] - self.parameters.control.wmax[k]) / d_incr
1666
+ if self.sequences.fluxes.evb[k] < 0.0:
1667
+ self.sequences.fluxes.evb[k] = self.sequences.fluxes.evb[k] * (d_factor)
1668
+ self.sequences.fluxes.wada[k] = self.sequences.fluxes.wada[k] * (d_factor)
1669
+ self.sequences.fluxes.qkap[k] = self.sequences.fluxes.qkap[k] * (d_factor)
1670
+ self.sequences.states.bowa[k] = self.parameters.control.wmax[k]
1671
+ cpdef inline void calc_bowa_soilmodel(self, masterinterface.MasterInterface submodel) noexcept nogil:
1672
+ cdef double removal
1673
+ cdef double demand
1674
+ cdef double factor
1675
+ cdef double addition
1676
+ cdef double supply
1677
+ cdef double qbb_soilmodel
1678
+ cdef double infiltration
1679
+ cdef numpy.int64_t k
1680
+ for k in range(self.parameters.control.nhru):
1681
+ if self.parameters.control.lnk[k] in (VERS, WASSER, FLUSS, SEE):
1682
+ self.sequences.states.bowa[k] = 0.0
1683
+ else:
1684
+ submodel.set_initialsurfacewater(k, self.sequences.fluxes.wada[k])
1685
+ submodel.set_actualsurfacewater(k, self.sequences.fluxes.wada[k] - self.sequences.fluxes.qdb[k])
1686
+ submodel.set_soilwatersupply(k, 0.0)
1687
+ submodel.set_soilwaterdemand(k, 0.0)
1688
+ submodel.execute_infiltration(k)
1689
+ infiltration = submodel.get_infiltration(k)
1690
+ self.sequences.fluxes.qdb[k] = self.sequences.fluxes.qdb[k] + ((self.sequences.fluxes.wada[k] - self.sequences.fluxes.qdb[k]) - infiltration)
1691
+ qbb_soilmodel = submodel.get_percolation(k)
1692
+ supply = self.sequences.fluxes.qkap[k]
1693
+ if self.sequences.fluxes.evb[k] < 0.0:
1694
+ supply = supply - (self.sequences.fluxes.evb[k])
1695
+ submodel.set_soilwatersupply(k, supply)
1696
+ submodel.add_soilwater(k)
1697
+ addition = submodel.get_soilwateraddition(k)
1698
+ if addition < supply:
1699
+ factor = addition / supply
1700
+ self.sequences.fluxes.qkap[k] = self.sequences.fluxes.qkap[k] * (factor)
1701
+ if self.sequences.fluxes.evb[k] < 0.0:
1702
+ self.sequences.fluxes.evb[k] = self.sequences.fluxes.evb[k] * (factor)
1703
+ demand = self.sequences.fluxes.qbb[k] + self.sequences.fluxes.qib1[k] + self.sequences.fluxes.qib2[k]
1704
+ if self.sequences.fluxes.evb[k] > 0.0:
1705
+ demand = demand + (self.sequences.fluxes.evb[k])
1706
+ submodel.set_soilwaterdemand(k, demand)
1707
+ submodel.remove_soilwater(k)
1708
+ removal = submodel.get_soilwaterremoval(k)
1709
+ if removal < demand:
1710
+ factor = removal / demand
1711
+ self.sequences.fluxes.qbb[k] = self.sequences.fluxes.qbb[k] * (factor)
1712
+ self.sequences.fluxes.qib1[k] = self.sequences.fluxes.qib1[k] * (factor)
1713
+ self.sequences.fluxes.qib2[k] = self.sequences.fluxes.qib2[k] * (factor)
1714
+ if self.sequences.fluxes.evb[k] > 0.0:
1715
+ self.sequences.fluxes.evb[k] = self.sequences.fluxes.evb[k] * (factor)
1716
+ self.sequences.states.bowa[k] = submodel.get_soilwatercontent(k)
1717
+ self.sequences.fluxes.qbb[k] = self.sequences.fluxes.qbb[k] + (qbb_soilmodel)
1718
+ cpdef inline void pass_qa(self) noexcept nogil:
1719
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.qa)