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,1890 @@
1
+ #!python
2
+ # distutils: define_macros=NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
3
+ # cython: language_level=3
4
+ # cython: cpow=True
5
+ # cython: boundscheck=False
6
+ # cython: wraparound=False
7
+ # cython: initializedcheck=False
8
+ # cython: cdivision=True
9
+ from typing import Optional
10
+ import numpy
11
+ cimport numpy
12
+ from libc.math cimport exp, fabs, log, sin, cos, tan, tanh, asin, acos, atan, isnan, isinf
13
+ from libc.math cimport NAN as nan
14
+ from libc.math cimport INFINITY as inf
15
+ import cython
16
+ from cpython.mem cimport PyMem_Malloc
17
+ from cpython.mem cimport PyMem_Realloc
18
+ from cpython.mem cimport PyMem_Free
19
+ from hydpy.cythons.autogen cimport configutils
20
+ from hydpy.cythons.autogen cimport interfaceutils
21
+ from hydpy.cythons.autogen cimport interputils
22
+ from hydpy.cythons.autogen import pointerutils
23
+ from hydpy.cythons.autogen cimport pointerutils
24
+ from hydpy.cythons.autogen cimport quadutils
25
+ from hydpy.cythons.autogen cimport rootutils
26
+ from hydpy.cythons.autogen cimport smoothutils
27
+ from hydpy.cythons.autogen cimport masterinterface
28
+
29
+
30
+ cdef void do_nothing(Model model) noexcept nogil:
31
+ pass
32
+
33
+ cpdef get_wrapper():
34
+ cdef CallbackWrapper wrapper = CallbackWrapper()
35
+ wrapper.callback = do_nothing
36
+ return wrapper
37
+
38
+ cdef public numpy.int64_t SAND = 1
39
+ cdef public numpy.int64_t LOAMY_SAND = 2
40
+ cdef public numpy.int64_t SANDY_LOAM = 3
41
+ cdef public numpy.int64_t SILT_LOAM = 4
42
+ cdef public numpy.int64_t LOAM = 5
43
+ cdef public numpy.int64_t SANDY_CLAY_LOAM = 6
44
+ cdef public numpy.int64_t SILT_CLAY_LOAM = 7
45
+ cdef public numpy.int64_t CLAY_LOAM = 8
46
+ cdef public numpy.int64_t SANDY_CLAY = 9
47
+ cdef public numpy.int64_t SILTY_CLAY = 10
48
+ cdef public numpy.int64_t CLAY = 11
49
+ cdef public numpy.int64_t SEALED = 12
50
+ cdef public numpy.int64_t FIELD = 13
51
+ cdef public numpy.int64_t WINE = 14
52
+ cdef public numpy.int64_t ORCHARD = 15
53
+ cdef public numpy.int64_t SOIL = 16
54
+ cdef public numpy.int64_t PASTURE = 17
55
+ cdef public numpy.int64_t WETLAND = 18
56
+ cdef public numpy.int64_t TREES = 19
57
+ cdef public numpy.int64_t CONIFER = 20
58
+ cdef public numpy.int64_t DECIDIOUS = 21
59
+ cdef public numpy.int64_t MIXED = 22
60
+ cdef public numpy.int64_t WATER = 23
61
+ @cython.final
62
+ cdef class Parameters:
63
+ pass
64
+ @cython.final
65
+ cdef class ControlParameters:
66
+ pass
67
+ @cython.final
68
+ cdef class DerivedParameters:
69
+ pass
70
+ @cython.final
71
+ cdef class FixedParameters:
72
+ pass
73
+ @cython.final
74
+ cdef class SolverParameters:
75
+ pass
76
+ @cython.final
77
+ cdef class Sequences:
78
+ pass
79
+ @cython.final
80
+ cdef class InputSequences:
81
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
82
+ cdef numpy.int64_t k
83
+ if self._t_inputflag:
84
+ self.t = self._t_inputpointer[0]
85
+ elif self._t_diskflag_reading:
86
+ self.t = self._t_ncarray[0]
87
+ elif self._t_ramflag:
88
+ self.t = self._t_array[idx]
89
+ if self._p_inputflag:
90
+ self.p = self._p_inputpointer[0]
91
+ elif self._p_diskflag_reading:
92
+ self.p = self._p_ncarray[0]
93
+ elif self._p_ramflag:
94
+ self.p = self._p_array[idx]
95
+ if self._fxg_inputflag:
96
+ self.fxg = self._fxg_inputpointer[0]
97
+ elif self._fxg_diskflag_reading:
98
+ self.fxg = self._fxg_ncarray[0]
99
+ elif self._fxg_ramflag:
100
+ self.fxg = self._fxg_array[idx]
101
+ if self._fxs_inputflag:
102
+ self.fxs = self._fxs_inputpointer[0]
103
+ elif self._fxs_diskflag_reading:
104
+ self.fxs = self._fxs_ncarray[0]
105
+ elif self._fxs_ramflag:
106
+ self.fxs = self._fxs_array[idx]
107
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
108
+ cdef numpy.int64_t k
109
+ if self._t_diskflag_writing:
110
+ self._t_ncarray[0] = self.t
111
+ if self._t_ramflag:
112
+ self._t_array[idx] = self.t
113
+ if self._p_diskflag_writing:
114
+ self._p_ncarray[0] = self.p
115
+ if self._p_ramflag:
116
+ self._p_array[idx] = self.p
117
+ if self._fxg_diskflag_writing:
118
+ self._fxg_ncarray[0] = self.fxg
119
+ if self._fxg_ramflag:
120
+ self._fxg_array[idx] = self.fxg
121
+ if self._fxs_diskflag_writing:
122
+ self._fxs_ncarray[0] = self.fxs
123
+ if self._fxs_ramflag:
124
+ self._fxs_array[idx] = self.fxs
125
+ cpdef inline set_pointerinput(self, str name, pointerutils.PDouble value):
126
+ if name == "t":
127
+ self._t_inputpointer = value.p_value
128
+ if name == "p":
129
+ self._p_inputpointer = value.p_value
130
+ if name == "fxg":
131
+ self._fxg_inputpointer = value.p_value
132
+ if name == "fxs":
133
+ self._fxs_inputpointer = value.p_value
134
+ @cython.final
135
+ cdef class FactorSequences:
136
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
137
+ cdef numpy.int64_t k
138
+ if self._dhs_diskflag_reading:
139
+ self.dhs = self._dhs_ncarray[0]
140
+ elif self._dhs_ramflag:
141
+ self.dhs = self._dhs_array[idx]
142
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
143
+ cdef numpy.int64_t k
144
+ if self._dhs_diskflag_writing:
145
+ self._dhs_ncarray[0] = self.dhs
146
+ if self._dhs_ramflag:
147
+ self._dhs_array[idx] = self.dhs
148
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
149
+ if name == "dhs":
150
+ self._dhs_outputpointer = value.p_value
151
+ cpdef inline void update_outputs(self) noexcept nogil:
152
+ if self._dhs_outputflag:
153
+ self._dhs_outputpointer[0] = self.dhs
154
+ @cython.final
155
+ cdef class FluxSequences:
156
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
157
+ cdef numpy.int64_t jdx0
158
+ cdef numpy.int64_t k
159
+ if self._pc_diskflag_reading:
160
+ self.pc = self._pc_ncarray[0]
161
+ elif self._pc_ramflag:
162
+ self.pc = self._pc_array[idx]
163
+ if self._pe_diskflag_reading:
164
+ k = 0
165
+ for jdx0 in range(self._pe_length_0):
166
+ self.pe[jdx0] = self._pe_ncarray[k]
167
+ k += 1
168
+ elif self._pe_ramflag:
169
+ for jdx0 in range(self._pe_length_0):
170
+ self.pe[jdx0] = self._pe_array[idx, jdx0]
171
+ if self._pet_diskflag_reading:
172
+ k = 0
173
+ for jdx0 in range(self._pet_length_0):
174
+ self.pet[jdx0] = self._pet_ncarray[k]
175
+ k += 1
176
+ elif self._pet_ramflag:
177
+ for jdx0 in range(self._pet_length_0):
178
+ self.pet[jdx0] = self._pet_array[idx, jdx0]
179
+ if self._tf_diskflag_reading:
180
+ k = 0
181
+ for jdx0 in range(self._tf_length_0):
182
+ self.tf[jdx0] = self._tf_ncarray[k]
183
+ k += 1
184
+ elif self._tf_ramflag:
185
+ for jdx0 in range(self._tf_length_0):
186
+ self.tf[jdx0] = self._tf_array[idx, jdx0]
187
+ if self._ei_diskflag_reading:
188
+ k = 0
189
+ for jdx0 in range(self._ei_length_0):
190
+ self.ei[jdx0] = self._ei_ncarray[k]
191
+ k += 1
192
+ elif self._ei_ramflag:
193
+ for jdx0 in range(self._ei_length_0):
194
+ self.ei[jdx0] = self._ei_array[idx, jdx0]
195
+ if self._rf_diskflag_reading:
196
+ k = 0
197
+ for jdx0 in range(self._rf_length_0):
198
+ self.rf[jdx0] = self._rf_ncarray[k]
199
+ k += 1
200
+ elif self._rf_ramflag:
201
+ for jdx0 in range(self._rf_length_0):
202
+ self.rf[jdx0] = self._rf_array[idx, jdx0]
203
+ if self._sf_diskflag_reading:
204
+ k = 0
205
+ for jdx0 in range(self._sf_length_0):
206
+ self.sf[jdx0] = self._sf_ncarray[k]
207
+ k += 1
208
+ elif self._sf_ramflag:
209
+ for jdx0 in range(self._sf_length_0):
210
+ self.sf[jdx0] = self._sf_array[idx, jdx0]
211
+ if self._pm_diskflag_reading:
212
+ k = 0
213
+ for jdx0 in range(self._pm_length_0):
214
+ self.pm[jdx0] = self._pm_ncarray[k]
215
+ k += 1
216
+ elif self._pm_ramflag:
217
+ for jdx0 in range(self._pm_length_0):
218
+ self.pm[jdx0] = self._pm_array[idx, jdx0]
219
+ if self._am_diskflag_reading:
220
+ k = 0
221
+ for jdx0 in range(self._am_length_0):
222
+ self.am[jdx0] = self._am_ncarray[k]
223
+ k += 1
224
+ elif self._am_ramflag:
225
+ for jdx0 in range(self._am_length_0):
226
+ self.am[jdx0] = self._am_array[idx, jdx0]
227
+ if self._ps_diskflag_reading:
228
+ self.ps = self._ps_ncarray[0]
229
+ elif self._ps_ramflag:
230
+ self.ps = self._ps_array[idx]
231
+ if self._pve_diskflag_reading:
232
+ self.pve = self._pve_ncarray[0]
233
+ elif self._pve_ramflag:
234
+ self.pve = self._pve_array[idx]
235
+ if self._pv_diskflag_reading:
236
+ self.pv = self._pv_ncarray[0]
237
+ elif self._pv_ramflag:
238
+ self.pv = self._pv_array[idx]
239
+ if self._pq_diskflag_reading:
240
+ self.pq = self._pq_ncarray[0]
241
+ elif self._pq_ramflag:
242
+ self.pq = self._pq_array[idx]
243
+ if self._etve_diskflag_reading:
244
+ self.etve = self._etve_ncarray[0]
245
+ elif self._etve_ramflag:
246
+ self.etve = self._etve_array[idx]
247
+ if self._etv_diskflag_reading:
248
+ self.etv = self._etv_ncarray[0]
249
+ elif self._etv_ramflag:
250
+ self.etv = self._etv_array[idx]
251
+ if self._es_diskflag_reading:
252
+ self.es = self._es_ncarray[0]
253
+ elif self._es_ramflag:
254
+ self.es = self._es_array[idx]
255
+ if self._et_diskflag_reading:
256
+ self.et = self._et_ncarray[0]
257
+ elif self._et_ramflag:
258
+ self.et = self._et_array[idx]
259
+ if self._gr_diskflag_reading:
260
+ self.gr = self._gr_ncarray[0]
261
+ elif self._gr_ramflag:
262
+ self.gr = self._gr_array[idx]
263
+ if self._fxs_diskflag_reading:
264
+ self.fxs = self._fxs_ncarray[0]
265
+ elif self._fxs_ramflag:
266
+ self.fxs = self._fxs_array[idx]
267
+ if self._fxg_diskflag_reading:
268
+ self.fxg = self._fxg_ncarray[0]
269
+ elif self._fxg_ramflag:
270
+ self.fxg = self._fxg_array[idx]
271
+ if self._cdg_diskflag_reading:
272
+ self.cdg = self._cdg_ncarray[0]
273
+ elif self._cdg_ramflag:
274
+ self.cdg = self._cdg_array[idx]
275
+ if self._fgse_diskflag_reading:
276
+ self.fgse = self._fgse_ncarray[0]
277
+ elif self._fgse_ramflag:
278
+ self.fgse = self._fgse_array[idx]
279
+ if self._fgs_diskflag_reading:
280
+ self.fgs = self._fgs_ncarray[0]
281
+ elif self._fgs_ramflag:
282
+ self.fgs = self._fgs_array[idx]
283
+ if self._fqs_diskflag_reading:
284
+ self.fqs = self._fqs_ncarray[0]
285
+ elif self._fqs_ramflag:
286
+ self.fqs = self._fqs_array[idx]
287
+ if self._rh_diskflag_reading:
288
+ self.rh = self._rh_ncarray[0]
289
+ elif self._rh_ramflag:
290
+ self.rh = self._rh_array[idx]
291
+ if self._r_diskflag_reading:
292
+ self.r = self._r_ncarray[0]
293
+ elif self._r_ramflag:
294
+ self.r = self._r_array[idx]
295
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
296
+ cdef numpy.int64_t jdx0
297
+ cdef numpy.int64_t k
298
+ if self._pc_diskflag_writing:
299
+ self._pc_ncarray[0] = self.pc
300
+ if self._pc_ramflag:
301
+ self._pc_array[idx] = self.pc
302
+ if self._pe_diskflag_writing:
303
+ k = 0
304
+ for jdx0 in range(self._pe_length_0):
305
+ self._pe_ncarray[k] = self.pe[jdx0]
306
+ k += 1
307
+ if self._pe_ramflag:
308
+ for jdx0 in range(self._pe_length_0):
309
+ self._pe_array[idx, jdx0] = self.pe[jdx0]
310
+ if self._pet_diskflag_writing:
311
+ k = 0
312
+ for jdx0 in range(self._pet_length_0):
313
+ self._pet_ncarray[k] = self.pet[jdx0]
314
+ k += 1
315
+ if self._pet_ramflag:
316
+ for jdx0 in range(self._pet_length_0):
317
+ self._pet_array[idx, jdx0] = self.pet[jdx0]
318
+ if self._tf_diskflag_writing:
319
+ k = 0
320
+ for jdx0 in range(self._tf_length_0):
321
+ self._tf_ncarray[k] = self.tf[jdx0]
322
+ k += 1
323
+ if self._tf_ramflag:
324
+ for jdx0 in range(self._tf_length_0):
325
+ self._tf_array[idx, jdx0] = self.tf[jdx0]
326
+ if self._ei_diskflag_writing:
327
+ k = 0
328
+ for jdx0 in range(self._ei_length_0):
329
+ self._ei_ncarray[k] = self.ei[jdx0]
330
+ k += 1
331
+ if self._ei_ramflag:
332
+ for jdx0 in range(self._ei_length_0):
333
+ self._ei_array[idx, jdx0] = self.ei[jdx0]
334
+ if self._rf_diskflag_writing:
335
+ k = 0
336
+ for jdx0 in range(self._rf_length_0):
337
+ self._rf_ncarray[k] = self.rf[jdx0]
338
+ k += 1
339
+ if self._rf_ramflag:
340
+ for jdx0 in range(self._rf_length_0):
341
+ self._rf_array[idx, jdx0] = self.rf[jdx0]
342
+ if self._sf_diskflag_writing:
343
+ k = 0
344
+ for jdx0 in range(self._sf_length_0):
345
+ self._sf_ncarray[k] = self.sf[jdx0]
346
+ k += 1
347
+ if self._sf_ramflag:
348
+ for jdx0 in range(self._sf_length_0):
349
+ self._sf_array[idx, jdx0] = self.sf[jdx0]
350
+ if self._pm_diskflag_writing:
351
+ k = 0
352
+ for jdx0 in range(self._pm_length_0):
353
+ self._pm_ncarray[k] = self.pm[jdx0]
354
+ k += 1
355
+ if self._pm_ramflag:
356
+ for jdx0 in range(self._pm_length_0):
357
+ self._pm_array[idx, jdx0] = self.pm[jdx0]
358
+ if self._am_diskflag_writing:
359
+ k = 0
360
+ for jdx0 in range(self._am_length_0):
361
+ self._am_ncarray[k] = self.am[jdx0]
362
+ k += 1
363
+ if self._am_ramflag:
364
+ for jdx0 in range(self._am_length_0):
365
+ self._am_array[idx, jdx0] = self.am[jdx0]
366
+ if self._ps_diskflag_writing:
367
+ self._ps_ncarray[0] = self.ps
368
+ if self._ps_ramflag:
369
+ self._ps_array[idx] = self.ps
370
+ if self._pve_diskflag_writing:
371
+ self._pve_ncarray[0] = self.pve
372
+ if self._pve_ramflag:
373
+ self._pve_array[idx] = self.pve
374
+ if self._pv_diskflag_writing:
375
+ self._pv_ncarray[0] = self.pv
376
+ if self._pv_ramflag:
377
+ self._pv_array[idx] = self.pv
378
+ if self._pq_diskflag_writing:
379
+ self._pq_ncarray[0] = self.pq
380
+ if self._pq_ramflag:
381
+ self._pq_array[idx] = self.pq
382
+ if self._etve_diskflag_writing:
383
+ self._etve_ncarray[0] = self.etve
384
+ if self._etve_ramflag:
385
+ self._etve_array[idx] = self.etve
386
+ if self._etv_diskflag_writing:
387
+ self._etv_ncarray[0] = self.etv
388
+ if self._etv_ramflag:
389
+ self._etv_array[idx] = self.etv
390
+ if self._es_diskflag_writing:
391
+ self._es_ncarray[0] = self.es
392
+ if self._es_ramflag:
393
+ self._es_array[idx] = self.es
394
+ if self._et_diskflag_writing:
395
+ self._et_ncarray[0] = self.et
396
+ if self._et_ramflag:
397
+ self._et_array[idx] = self.et
398
+ if self._gr_diskflag_writing:
399
+ self._gr_ncarray[0] = self.gr
400
+ if self._gr_ramflag:
401
+ self._gr_array[idx] = self.gr
402
+ if self._fxs_diskflag_writing:
403
+ self._fxs_ncarray[0] = self.fxs
404
+ if self._fxs_ramflag:
405
+ self._fxs_array[idx] = self.fxs
406
+ if self._fxg_diskflag_writing:
407
+ self._fxg_ncarray[0] = self.fxg
408
+ if self._fxg_ramflag:
409
+ self._fxg_array[idx] = self.fxg
410
+ if self._cdg_diskflag_writing:
411
+ self._cdg_ncarray[0] = self.cdg
412
+ if self._cdg_ramflag:
413
+ self._cdg_array[idx] = self.cdg
414
+ if self._fgse_diskflag_writing:
415
+ self._fgse_ncarray[0] = self.fgse
416
+ if self._fgse_ramflag:
417
+ self._fgse_array[idx] = self.fgse
418
+ if self._fgs_diskflag_writing:
419
+ self._fgs_ncarray[0] = self.fgs
420
+ if self._fgs_ramflag:
421
+ self._fgs_array[idx] = self.fgs
422
+ if self._fqs_diskflag_writing:
423
+ self._fqs_ncarray[0] = self.fqs
424
+ if self._fqs_ramflag:
425
+ self._fqs_array[idx] = self.fqs
426
+ if self._rh_diskflag_writing:
427
+ self._rh_ncarray[0] = self.rh
428
+ if self._rh_ramflag:
429
+ self._rh_array[idx] = self.rh
430
+ if self._r_diskflag_writing:
431
+ self._r_ncarray[0] = self.r
432
+ if self._r_ramflag:
433
+ self._r_array[idx] = self.r
434
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
435
+ if name == "pc":
436
+ self._pc_outputpointer = value.p_value
437
+ if name == "ps":
438
+ self._ps_outputpointer = value.p_value
439
+ if name == "pve":
440
+ self._pve_outputpointer = value.p_value
441
+ if name == "pv":
442
+ self._pv_outputpointer = value.p_value
443
+ if name == "pq":
444
+ self._pq_outputpointer = value.p_value
445
+ if name == "etve":
446
+ self._etve_outputpointer = value.p_value
447
+ if name == "etv":
448
+ self._etv_outputpointer = value.p_value
449
+ if name == "es":
450
+ self._es_outputpointer = value.p_value
451
+ if name == "et":
452
+ self._et_outputpointer = value.p_value
453
+ if name == "gr":
454
+ self._gr_outputpointer = value.p_value
455
+ if name == "fxs":
456
+ self._fxs_outputpointer = value.p_value
457
+ if name == "fxg":
458
+ self._fxg_outputpointer = value.p_value
459
+ if name == "cdg":
460
+ self._cdg_outputpointer = value.p_value
461
+ if name == "fgse":
462
+ self._fgse_outputpointer = value.p_value
463
+ if name == "fgs":
464
+ self._fgs_outputpointer = value.p_value
465
+ if name == "fqs":
466
+ self._fqs_outputpointer = value.p_value
467
+ if name == "rh":
468
+ self._rh_outputpointer = value.p_value
469
+ if name == "r":
470
+ self._r_outputpointer = value.p_value
471
+ cpdef inline void update_outputs(self) noexcept nogil:
472
+ if self._pc_outputflag:
473
+ self._pc_outputpointer[0] = self.pc
474
+ if self._ps_outputflag:
475
+ self._ps_outputpointer[0] = self.ps
476
+ if self._pve_outputflag:
477
+ self._pve_outputpointer[0] = self.pve
478
+ if self._pv_outputflag:
479
+ self._pv_outputpointer[0] = self.pv
480
+ if self._pq_outputflag:
481
+ self._pq_outputpointer[0] = self.pq
482
+ if self._etve_outputflag:
483
+ self._etve_outputpointer[0] = self.etve
484
+ if self._etv_outputflag:
485
+ self._etv_outputpointer[0] = self.etv
486
+ if self._es_outputflag:
487
+ self._es_outputpointer[0] = self.es
488
+ if self._et_outputflag:
489
+ self._et_outputpointer[0] = self.et
490
+ if self._gr_outputflag:
491
+ self._gr_outputpointer[0] = self.gr
492
+ if self._fxs_outputflag:
493
+ self._fxs_outputpointer[0] = self.fxs
494
+ if self._fxg_outputflag:
495
+ self._fxg_outputpointer[0] = self.fxg
496
+ if self._cdg_outputflag:
497
+ self._cdg_outputpointer[0] = self.cdg
498
+ if self._fgse_outputflag:
499
+ self._fgse_outputpointer[0] = self.fgse
500
+ if self._fgs_outputflag:
501
+ self._fgs_outputpointer[0] = self.fgs
502
+ if self._fqs_outputflag:
503
+ self._fqs_outputpointer[0] = self.fqs
504
+ if self._rh_outputflag:
505
+ self._rh_outputpointer[0] = self.rh
506
+ if self._r_outputflag:
507
+ self._r_outputpointer[0] = self.r
508
+ @cython.final
509
+ cdef class StateSequences:
510
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
511
+ cdef numpy.int64_t jdx0
512
+ cdef numpy.int64_t k
513
+ if self._ic_diskflag_reading:
514
+ k = 0
515
+ for jdx0 in range(self._ic_length_0):
516
+ self.ic[jdx0] = self._ic_ncarray[k]
517
+ k += 1
518
+ elif self._ic_ramflag:
519
+ for jdx0 in range(self._ic_length_0):
520
+ self.ic[jdx0] = self._ic_array[idx, jdx0]
521
+ if self._sp_diskflag_reading:
522
+ k = 0
523
+ for jdx0 in range(self._sp_length_0):
524
+ self.sp[jdx0] = self._sp_ncarray[k]
525
+ k += 1
526
+ elif self._sp_ramflag:
527
+ for jdx0 in range(self._sp_length_0):
528
+ self.sp[jdx0] = self._sp_array[idx, jdx0]
529
+ if self._dve_diskflag_reading:
530
+ self.dve = self._dve_ncarray[0]
531
+ elif self._dve_ramflag:
532
+ self.dve = self._dve_array[idx]
533
+ if self._dv_diskflag_reading:
534
+ self.dv = self._dv_ncarray[0]
535
+ elif self._dv_ramflag:
536
+ self.dv = self._dv_array[idx]
537
+ if self._hge_diskflag_reading:
538
+ self.hge = self._hge_ncarray[0]
539
+ elif self._hge_ramflag:
540
+ self.hge = self._hge_array[idx]
541
+ if self._dg_diskflag_reading:
542
+ self.dg = self._dg_ncarray[0]
543
+ elif self._dg_ramflag:
544
+ self.dg = self._dg_array[idx]
545
+ if self._hq_diskflag_reading:
546
+ self.hq = self._hq_ncarray[0]
547
+ elif self._hq_ramflag:
548
+ self.hq = self._hq_array[idx]
549
+ if self._hs_diskflag_reading:
550
+ self.hs = self._hs_ncarray[0]
551
+ elif self._hs_ramflag:
552
+ self.hs = self._hs_array[idx]
553
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
554
+ cdef numpy.int64_t jdx0
555
+ cdef numpy.int64_t k
556
+ if self._ic_diskflag_writing:
557
+ k = 0
558
+ for jdx0 in range(self._ic_length_0):
559
+ self._ic_ncarray[k] = self.ic[jdx0]
560
+ k += 1
561
+ if self._ic_ramflag:
562
+ for jdx0 in range(self._ic_length_0):
563
+ self._ic_array[idx, jdx0] = self.ic[jdx0]
564
+ if self._sp_diskflag_writing:
565
+ k = 0
566
+ for jdx0 in range(self._sp_length_0):
567
+ self._sp_ncarray[k] = self.sp[jdx0]
568
+ k += 1
569
+ if self._sp_ramflag:
570
+ for jdx0 in range(self._sp_length_0):
571
+ self._sp_array[idx, jdx0] = self.sp[jdx0]
572
+ if self._dve_diskflag_writing:
573
+ self._dve_ncarray[0] = self.dve
574
+ if self._dve_ramflag:
575
+ self._dve_array[idx] = self.dve
576
+ if self._dv_diskflag_writing:
577
+ self._dv_ncarray[0] = self.dv
578
+ if self._dv_ramflag:
579
+ self._dv_array[idx] = self.dv
580
+ if self._hge_diskflag_writing:
581
+ self._hge_ncarray[0] = self.hge
582
+ if self._hge_ramflag:
583
+ self._hge_array[idx] = self.hge
584
+ if self._dg_diskflag_writing:
585
+ self._dg_ncarray[0] = self.dg
586
+ if self._dg_ramflag:
587
+ self._dg_array[idx] = self.dg
588
+ if self._hq_diskflag_writing:
589
+ self._hq_ncarray[0] = self.hq
590
+ if self._hq_ramflag:
591
+ self._hq_array[idx] = self.hq
592
+ if self._hs_diskflag_writing:
593
+ self._hs_ncarray[0] = self.hs
594
+ if self._hs_ramflag:
595
+ self._hs_array[idx] = self.hs
596
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
597
+ if name == "dve":
598
+ self._dve_outputpointer = value.p_value
599
+ if name == "dv":
600
+ self._dv_outputpointer = value.p_value
601
+ if name == "hge":
602
+ self._hge_outputpointer = value.p_value
603
+ if name == "dg":
604
+ self._dg_outputpointer = value.p_value
605
+ if name == "hq":
606
+ self._hq_outputpointer = value.p_value
607
+ if name == "hs":
608
+ self._hs_outputpointer = value.p_value
609
+ cpdef inline void update_outputs(self) noexcept nogil:
610
+ if self._dve_outputflag:
611
+ self._dve_outputpointer[0] = self.dve
612
+ if self._dv_outputflag:
613
+ self._dv_outputpointer[0] = self.dv
614
+ if self._hge_outputflag:
615
+ self._hge_outputpointer[0] = self.hge
616
+ if self._dg_outputflag:
617
+ self._dg_outputpointer[0] = self.dg
618
+ if self._hq_outputflag:
619
+ self._hq_outputpointer[0] = self.hq
620
+ if self._hs_outputflag:
621
+ self._hs_outputpointer[0] = self.hs
622
+ @cython.final
623
+ cdef class AideSequences:
624
+ pass
625
+ @cython.final
626
+ cdef class OutletSequences:
627
+ cpdef inline set_pointer0d(self, str name, pointerutils.Double value):
628
+ cdef pointerutils.PDouble pointer = pointerutils.PDouble(value)
629
+ if name == "q":
630
+ self.q = pointer.p_value
631
+ cpdef get_value(self, str name):
632
+ cdef numpy.int64_t idx
633
+ if name == "q":
634
+ return self.q[0]
635
+ cpdef set_value(self, str name, value):
636
+ if name == "q":
637
+ self.q[0] = value
638
+ @cython.final
639
+ cdef class NumConsts:
640
+ pass
641
+ @cython.final
642
+ cdef class NumVars:
643
+ pass
644
+ @cython.final
645
+ cdef class PegasusDGEq(rootutils.PegasusBase):
646
+ def __init__(self, Model model):
647
+ self.model = model
648
+ cpdef double apply_method0(self, double x) noexcept nogil:
649
+ return self.model.return_errordv_v1(x)
650
+ @cython.final
651
+ cdef class QuadDVEq_V1(quadutils.QuadBase):
652
+ def __init__(self, Model model):
653
+ self.model = model
654
+ cpdef double apply_method0(self, double x) noexcept nogil:
655
+ return self.model.return_dvh_v1(x)
656
+ @cython.final
657
+ cdef class QuadDVEq_V2(quadutils.QuadBase):
658
+ def __init__(self, Model model):
659
+ self.model = model
660
+ cpdef double apply_method0(self, double x) noexcept nogil:
661
+ return self.model.return_dvh_v2(x)
662
+ @cython.final
663
+ cdef class Model:
664
+ def __init__(self):
665
+ super().__init__()
666
+ self.dischargemodel = None
667
+ self.dischargemodel_is_mainmodel = False
668
+ self.petmodel = None
669
+ self.petmodel_is_mainmodel = False
670
+ self.waterlevelmodel = None
671
+ self.waterlevelmodel_is_mainmodel = False
672
+ self.pegasusdgeq = PegasusDGEq(self)
673
+ self.quaddveq_v1 = QuadDVEq_V1(self)
674
+ self.quaddveq_v2 = QuadDVEq_V2(self)
675
+ def get_dischargemodel(self) -> masterinterface.MasterInterface | None:
676
+ return self.dischargemodel
677
+ def set_dischargemodel(self, dischargemodel: masterinterface.MasterInterface | None) -> None:
678
+ self.dischargemodel = dischargemodel
679
+ def get_petmodel(self) -> masterinterface.MasterInterface | None:
680
+ return self.petmodel
681
+ def set_petmodel(self, petmodel: masterinterface.MasterInterface | None) -> None:
682
+ self.petmodel = petmodel
683
+ def get_waterlevelmodel(self) -> masterinterface.MasterInterface | None:
684
+ return self.waterlevelmodel
685
+ def set_waterlevelmodel(self, waterlevelmodel: masterinterface.MasterInterface | None) -> None:
686
+ self.waterlevelmodel = waterlevelmodel
687
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
688
+ self.idx_sim = idx
689
+ self.reset_reuseflags()
690
+ self.load_data(idx)
691
+ self.update_inlets()
692
+ self.solve()
693
+ self.update_outlets()
694
+ self.update_outputs()
695
+ cpdef void reset_reuseflags(self) noexcept nogil:
696
+ if (self.dischargemodel is not None) and not self.dischargemodel_is_mainmodel:
697
+ self.dischargemodel.reset_reuseflags()
698
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
699
+ self.petmodel.reset_reuseflags()
700
+ if (self.waterlevelmodel is not None) and not self.waterlevelmodel_is_mainmodel:
701
+ self.waterlevelmodel.reset_reuseflags()
702
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
703
+ self.idx_sim = idx
704
+ self.sequences.inputs.load_data(idx)
705
+ if (self.dischargemodel is not None) and not self.dischargemodel_is_mainmodel:
706
+ self.dischargemodel.load_data(idx)
707
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
708
+ self.petmodel.load_data(idx)
709
+ if (self.waterlevelmodel is not None) and not self.waterlevelmodel_is_mainmodel:
710
+ self.waterlevelmodel.load_data(idx)
711
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
712
+ self.idx_sim = idx
713
+ self.sequences.inputs.save_data(idx)
714
+ self.sequences.factors.save_data(idx)
715
+ self.sequences.fluxes.save_data(idx)
716
+ self.sequences.states.save_data(idx)
717
+ if (self.dischargemodel is not None) and not self.dischargemodel_is_mainmodel:
718
+ self.dischargemodel.save_data(idx)
719
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
720
+ self.petmodel.save_data(idx)
721
+ if (self.waterlevelmodel is not None) and not self.waterlevelmodel_is_mainmodel:
722
+ self.waterlevelmodel.save_data(idx)
723
+ cpdef void new2old(self) noexcept nogil:
724
+ cdef numpy.int64_t jdx0
725
+ for jdx0 in range(self.sequences.states._ic_length_0):
726
+ self.sequences.old_states.ic[jdx0] = self.sequences.new_states.ic[jdx0]
727
+ for jdx0 in range(self.sequences.states._sp_length_0):
728
+ self.sequences.old_states.sp[jdx0] = self.sequences.new_states.sp[jdx0]
729
+ self.sequences.old_states.dve = self.sequences.new_states.dve
730
+ self.sequences.old_states.dv = self.sequences.new_states.dv
731
+ self.sequences.old_states.hge = self.sequences.new_states.hge
732
+ self.sequences.old_states.dg = self.sequences.new_states.dg
733
+ self.sequences.old_states.hq = self.sequences.new_states.hq
734
+ self.sequences.old_states.hs = self.sequences.new_states.hs
735
+ if (self.dischargemodel is not None) and not self.dischargemodel_is_mainmodel:
736
+ self.dischargemodel.new2old()
737
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
738
+ self.petmodel.new2old()
739
+ if (self.waterlevelmodel is not None) and not self.waterlevelmodel_is_mainmodel:
740
+ self.waterlevelmodel.new2old()
741
+ cpdef inline void update_inlets(self) noexcept nogil:
742
+ self.calc_pe_pet_v1()
743
+ self.calc_fr_v1()
744
+ self.calc_pm_v1()
745
+ cpdef inline void update_outlets(self) noexcept nogil:
746
+ self.calc_et_v1()
747
+ self.calc_r_v1()
748
+ self.pass_r_v1()
749
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
750
+ self.idx_sim = idx
751
+ self.pick_hs_v1()
752
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
753
+ self.idx_sim = idx
754
+ pass
755
+ cpdef inline void update_outputs(self) noexcept nogil:
756
+ self.sequences.factors.update_outputs()
757
+ self.sequences.fluxes.update_outputs()
758
+ self.sequences.states.update_outputs()
759
+ cpdef inline void solve(self) noexcept nogil:
760
+ cdef numpy.int64_t decrease_dt
761
+ self.numvars.use_relerror = not isnan( self.parameters.solver.relerrormax )
762
+ self.numvars.t0, self.numvars.t1 = 0.0, 1.0
763
+ self.numvars.dt_est = 1.0 * self.parameters.solver.reldtmax
764
+ self.numvars.f0_ready = False
765
+ self.reset_sum_fluxes()
766
+ while self.numvars.t0 < self.numvars.t1 - 1e-14:
767
+ self.numvars.last_abserror = inf
768
+ self.numvars.last_relerror = inf
769
+ self.numvars.dt = min( self.numvars.t1 - self.numvars.t0, 1.0 * self.parameters.solver.reldtmax, max(self.numvars.dt_est, self.parameters.solver.reldtmin), )
770
+ if not self.numvars.f0_ready:
771
+ self.calculate_single_terms()
772
+ self.numvars.idx_method = 0
773
+ self.numvars.idx_stage = 0
774
+ self.set_point_fluxes()
775
+ self.set_point_states()
776
+ self.set_result_states()
777
+ for self.numvars.idx_method in range(1, self.numconsts.nmb_methods + 1):
778
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method):
779
+ self.get_point_states()
780
+ self.calculate_single_terms()
781
+ self.set_point_fluxes()
782
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method + 1):
783
+ self.integrate_fluxes()
784
+ self.calculate_full_terms()
785
+ self.set_point_states()
786
+ self.set_result_fluxes()
787
+ self.set_result_states()
788
+ self.calculate_error()
789
+ self.extrapolate_error()
790
+ if self.numvars.idx_method == 1:
791
+ continue
792
+ if (self.numvars.abserror <= self.parameters.solver.abserrormax) or ( self.numvars.relerror <= self.parameters.solver.relerrormax ):
793
+ self.numvars.dt_est = self.numconsts.dt_increase * self.numvars.dt
794
+ self.numvars.f0_ready = False
795
+ self.addup_fluxes()
796
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
797
+ self.new2old()
798
+ break
799
+ decrease_dt = self.numvars.dt > self.parameters.solver.reldtmin
800
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_abserror > self.parameters.solver.abserrormax )
801
+ if self.numvars.use_relerror:
802
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_relerror > self.parameters.solver.relerrormax )
803
+ if decrease_dt:
804
+ self.numvars.f0_ready = True
805
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
806
+ break
807
+ self.numvars.last_abserror = self.numvars.abserror
808
+ self.numvars.last_relerror = self.numvars.relerror
809
+ self.numvars.f0_ready = True
810
+ else:
811
+ if self.numvars.dt <= self.parameters.solver.reldtmin:
812
+ self.numvars.f0_ready = False
813
+ self.addup_fluxes()
814
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
815
+ self.new2old()
816
+ else:
817
+ self.numvars.f0_ready = True
818
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
819
+ self.get_sum_fluxes()
820
+ cpdef inline void calculate_single_terms(self) noexcept nogil:
821
+ self.numvars.nmb_calls = self.numvars.nmb_calls + 1
822
+ self.calc_fxs_v1()
823
+ self.calc_fxg_v1()
824
+ self.calc_pc_v1()
825
+ self.calc_tf_v1()
826
+ self.calc_ei_v1()
827
+ self.calc_sf_v1()
828
+ self.calc_rf_v1()
829
+ self.calc_am_v1()
830
+ self.calc_ps_v1()
831
+ self.calc_we_w_v1()
832
+ self.calc_pve_pv_v1()
833
+ self.calc_pq_v1()
834
+ self.calc_betae_beta_v1()
835
+ self.calc_etve_etv_v1()
836
+ self.calc_es_v1()
837
+ self.calc_fqs_v1()
838
+ self.calc_fgse_v1()
839
+ self.calc_fgs_v1()
840
+ self.calc_rh_v1()
841
+ self.calc_dveq_v1()
842
+ self.calc_dveq_v2()
843
+ self.calc_dveq_v3()
844
+ self.calc_dveq_v4()
845
+ self.calc_dgeq_v1()
846
+ self.calc_gf_v1()
847
+ self.calc_gr_v1()
848
+ self.calc_cdg_v1()
849
+ self.calc_cdg_v2()
850
+ cpdef inline void calculate_full_terms(self) noexcept nogil:
851
+ self.update_ic_v1()
852
+ self.update_sp_v1()
853
+ self.update_dve_v1()
854
+ self.update_dv_v1()
855
+ self.update_hge_v1()
856
+ self.update_dg_v1()
857
+ self.update_hq_v1()
858
+ self.update_hs_v1()
859
+ cpdef inline void get_point_states(self) noexcept nogil:
860
+ cdef numpy.int64_t idx0
861
+ for idx0 in range(self.sequences.states._ic_length):
862
+ self.sequences.states.ic[idx0] = self.sequences.states._ic_points[self.numvars.idx_stage][idx0]
863
+ for idx0 in range(self.sequences.states._sp_length):
864
+ self.sequences.states.sp[idx0] = self.sequences.states._sp_points[self.numvars.idx_stage][idx0]
865
+ self.sequences.states.dve = self.sequences.states._dve_points[self.numvars.idx_stage]
866
+ self.sequences.states.dv = self.sequences.states._dv_points[self.numvars.idx_stage]
867
+ self.sequences.states.hge = self.sequences.states._hge_points[self.numvars.idx_stage]
868
+ self.sequences.states.dg = self.sequences.states._dg_points[self.numvars.idx_stage]
869
+ self.sequences.states.hq = self.sequences.states._hq_points[self.numvars.idx_stage]
870
+ self.sequences.states.hs = self.sequences.states._hs_points[self.numvars.idx_stage]
871
+ cpdef inline void set_point_states(self) noexcept nogil:
872
+ cdef numpy.int64_t idx0
873
+ for idx0 in range(self.sequences.states._ic_length):
874
+ self.sequences.states._ic_points[self.numvars.idx_stage][idx0] = self.sequences.states.ic[idx0]
875
+ for idx0 in range(self.sequences.states._sp_length):
876
+ self.sequences.states._sp_points[self.numvars.idx_stage][idx0] = self.sequences.states.sp[idx0]
877
+ self.sequences.states._dve_points[self.numvars.idx_stage] = self.sequences.states.dve
878
+ self.sequences.states._dv_points[self.numvars.idx_stage] = self.sequences.states.dv
879
+ self.sequences.states._hge_points[self.numvars.idx_stage] = self.sequences.states.hge
880
+ self.sequences.states._dg_points[self.numvars.idx_stage] = self.sequences.states.dg
881
+ self.sequences.states._hq_points[self.numvars.idx_stage] = self.sequences.states.hq
882
+ self.sequences.states._hs_points[self.numvars.idx_stage] = self.sequences.states.hs
883
+ cpdef inline void set_result_states(self) noexcept nogil:
884
+ cdef numpy.int64_t idx0
885
+ for idx0 in range(self.sequences.states._ic_length):
886
+ self.sequences.states._ic_results[self.numvars.idx_method][idx0] = self.sequences.states.ic[idx0]
887
+ for idx0 in range(self.sequences.states._sp_length):
888
+ self.sequences.states._sp_results[self.numvars.idx_method][idx0] = self.sequences.states.sp[idx0]
889
+ self.sequences.states._dve_results[self.numvars.idx_method] = self.sequences.states.dve
890
+ self.sequences.states._dv_results[self.numvars.idx_method] = self.sequences.states.dv
891
+ self.sequences.states._hge_results[self.numvars.idx_method] = self.sequences.states.hge
892
+ self.sequences.states._dg_results[self.numvars.idx_method] = self.sequences.states.dg
893
+ self.sequences.states._hq_results[self.numvars.idx_method] = self.sequences.states.hq
894
+ self.sequences.states._hs_results[self.numvars.idx_method] = self.sequences.states.hs
895
+ cpdef inline void get_sum_fluxes(self) noexcept nogil:
896
+ cdef numpy.int64_t idx0
897
+ self.sequences.fluxes.pc = self.sequences.fluxes._pc_sum
898
+ for idx0 in range(self.sequences.fluxes._tf_length):
899
+ self.sequences.fluxes.tf[idx0] = self.sequences.fluxes._tf_sum[idx0]
900
+ for idx0 in range(self.sequences.fluxes._ei_length):
901
+ self.sequences.fluxes.ei[idx0] = self.sequences.fluxes._ei_sum[idx0]
902
+ for idx0 in range(self.sequences.fluxes._rf_length):
903
+ self.sequences.fluxes.rf[idx0] = self.sequences.fluxes._rf_sum[idx0]
904
+ for idx0 in range(self.sequences.fluxes._sf_length):
905
+ self.sequences.fluxes.sf[idx0] = self.sequences.fluxes._sf_sum[idx0]
906
+ for idx0 in range(self.sequences.fluxes._am_length):
907
+ self.sequences.fluxes.am[idx0] = self.sequences.fluxes._am_sum[idx0]
908
+ self.sequences.fluxes.ps = self.sequences.fluxes._ps_sum
909
+ self.sequences.fluxes.pve = self.sequences.fluxes._pve_sum
910
+ self.sequences.fluxes.pv = self.sequences.fluxes._pv_sum
911
+ self.sequences.fluxes.pq = self.sequences.fluxes._pq_sum
912
+ self.sequences.fluxes.etve = self.sequences.fluxes._etve_sum
913
+ self.sequences.fluxes.etv = self.sequences.fluxes._etv_sum
914
+ self.sequences.fluxes.es = self.sequences.fluxes._es_sum
915
+ self.sequences.fluxes.gr = self.sequences.fluxes._gr_sum
916
+ self.sequences.fluxes.fxs = self.sequences.fluxes._fxs_sum
917
+ self.sequences.fluxes.fxg = self.sequences.fluxes._fxg_sum
918
+ self.sequences.fluxes.cdg = self.sequences.fluxes._cdg_sum
919
+ self.sequences.fluxes.fgse = self.sequences.fluxes._fgse_sum
920
+ self.sequences.fluxes.fgs = self.sequences.fluxes._fgs_sum
921
+ self.sequences.fluxes.fqs = self.sequences.fluxes._fqs_sum
922
+ self.sequences.fluxes.rh = self.sequences.fluxes._rh_sum
923
+ cpdef inline void set_point_fluxes(self) noexcept nogil:
924
+ cdef numpy.int64_t idx0
925
+ self.sequences.fluxes._pc_points[self.numvars.idx_stage] = self.sequences.fluxes.pc
926
+ for idx0 in range(self.sequences.fluxes._tf_length):
927
+ self.sequences.fluxes._tf_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.tf[idx0]
928
+ for idx0 in range(self.sequences.fluxes._ei_length):
929
+ self.sequences.fluxes._ei_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.ei[idx0]
930
+ for idx0 in range(self.sequences.fluxes._rf_length):
931
+ self.sequences.fluxes._rf_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.rf[idx0]
932
+ for idx0 in range(self.sequences.fluxes._sf_length):
933
+ self.sequences.fluxes._sf_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.sf[idx0]
934
+ for idx0 in range(self.sequences.fluxes._am_length):
935
+ self.sequences.fluxes._am_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.am[idx0]
936
+ self.sequences.fluxes._ps_points[self.numvars.idx_stage] = self.sequences.fluxes.ps
937
+ self.sequences.fluxes._pve_points[self.numvars.idx_stage] = self.sequences.fluxes.pve
938
+ self.sequences.fluxes._pv_points[self.numvars.idx_stage] = self.sequences.fluxes.pv
939
+ self.sequences.fluxes._pq_points[self.numvars.idx_stage] = self.sequences.fluxes.pq
940
+ self.sequences.fluxes._etve_points[self.numvars.idx_stage] = self.sequences.fluxes.etve
941
+ self.sequences.fluxes._etv_points[self.numvars.idx_stage] = self.sequences.fluxes.etv
942
+ self.sequences.fluxes._es_points[self.numvars.idx_stage] = self.sequences.fluxes.es
943
+ self.sequences.fluxes._gr_points[self.numvars.idx_stage] = self.sequences.fluxes.gr
944
+ self.sequences.fluxes._fxs_points[self.numvars.idx_stage] = self.sequences.fluxes.fxs
945
+ self.sequences.fluxes._fxg_points[self.numvars.idx_stage] = self.sequences.fluxes.fxg
946
+ self.sequences.fluxes._cdg_points[self.numvars.idx_stage] = self.sequences.fluxes.cdg
947
+ self.sequences.fluxes._fgse_points[self.numvars.idx_stage] = self.sequences.fluxes.fgse
948
+ self.sequences.fluxes._fgs_points[self.numvars.idx_stage] = self.sequences.fluxes.fgs
949
+ self.sequences.fluxes._fqs_points[self.numvars.idx_stage] = self.sequences.fluxes.fqs
950
+ self.sequences.fluxes._rh_points[self.numvars.idx_stage] = self.sequences.fluxes.rh
951
+ cpdef inline void set_result_fluxes(self) noexcept nogil:
952
+ cdef numpy.int64_t idx0
953
+ self.sequences.fluxes._pc_results[self.numvars.idx_method] = self.sequences.fluxes.pc
954
+ for idx0 in range(self.sequences.fluxes._tf_length):
955
+ self.sequences.fluxes._tf_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.tf[idx0]
956
+ for idx0 in range(self.sequences.fluxes._ei_length):
957
+ self.sequences.fluxes._ei_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.ei[idx0]
958
+ for idx0 in range(self.sequences.fluxes._rf_length):
959
+ self.sequences.fluxes._rf_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.rf[idx0]
960
+ for idx0 in range(self.sequences.fluxes._sf_length):
961
+ self.sequences.fluxes._sf_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.sf[idx0]
962
+ for idx0 in range(self.sequences.fluxes._am_length):
963
+ self.sequences.fluxes._am_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.am[idx0]
964
+ self.sequences.fluxes._ps_results[self.numvars.idx_method] = self.sequences.fluxes.ps
965
+ self.sequences.fluxes._pve_results[self.numvars.idx_method] = self.sequences.fluxes.pve
966
+ self.sequences.fluxes._pv_results[self.numvars.idx_method] = self.sequences.fluxes.pv
967
+ self.sequences.fluxes._pq_results[self.numvars.idx_method] = self.sequences.fluxes.pq
968
+ self.sequences.fluxes._etve_results[self.numvars.idx_method] = self.sequences.fluxes.etve
969
+ self.sequences.fluxes._etv_results[self.numvars.idx_method] = self.sequences.fluxes.etv
970
+ self.sequences.fluxes._es_results[self.numvars.idx_method] = self.sequences.fluxes.es
971
+ self.sequences.fluxes._gr_results[self.numvars.idx_method] = self.sequences.fluxes.gr
972
+ self.sequences.fluxes._fxs_results[self.numvars.idx_method] = self.sequences.fluxes.fxs
973
+ self.sequences.fluxes._fxg_results[self.numvars.idx_method] = self.sequences.fluxes.fxg
974
+ self.sequences.fluxes._cdg_results[self.numvars.idx_method] = self.sequences.fluxes.cdg
975
+ self.sequences.fluxes._fgse_results[self.numvars.idx_method] = self.sequences.fluxes.fgse
976
+ self.sequences.fluxes._fgs_results[self.numvars.idx_method] = self.sequences.fluxes.fgs
977
+ self.sequences.fluxes._fqs_results[self.numvars.idx_method] = self.sequences.fluxes.fqs
978
+ self.sequences.fluxes._rh_results[self.numvars.idx_method] = self.sequences.fluxes.rh
979
+ cpdef inline void integrate_fluxes(self) noexcept nogil:
980
+ cdef numpy.int64_t jdx, idx0
981
+ self.sequences.fluxes.pc = 0.
982
+ for jdx in range(self.numvars.idx_method):
983
+ self.sequences.fluxes.pc = self.sequences.fluxes.pc +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._pc_points[jdx]
984
+ for idx0 in range(self.sequences.fluxes._tf_length):
985
+ self.sequences.fluxes.tf[idx0] = 0.
986
+ for jdx in range(self.numvars.idx_method):
987
+ self.sequences.fluxes.tf[idx0] = self.sequences.fluxes.tf[idx0] + self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._tf_points[jdx, idx0]
988
+ for idx0 in range(self.sequences.fluxes._ei_length):
989
+ self.sequences.fluxes.ei[idx0] = 0.
990
+ for jdx in range(self.numvars.idx_method):
991
+ self.sequences.fluxes.ei[idx0] = self.sequences.fluxes.ei[idx0] + self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._ei_points[jdx, idx0]
992
+ for idx0 in range(self.sequences.fluxes._rf_length):
993
+ self.sequences.fluxes.rf[idx0] = 0.
994
+ for jdx in range(self.numvars.idx_method):
995
+ self.sequences.fluxes.rf[idx0] = self.sequences.fluxes.rf[idx0] + self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._rf_points[jdx, idx0]
996
+ for idx0 in range(self.sequences.fluxes._sf_length):
997
+ self.sequences.fluxes.sf[idx0] = 0.
998
+ for jdx in range(self.numvars.idx_method):
999
+ self.sequences.fluxes.sf[idx0] = self.sequences.fluxes.sf[idx0] + self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._sf_points[jdx, idx0]
1000
+ for idx0 in range(self.sequences.fluxes._am_length):
1001
+ self.sequences.fluxes.am[idx0] = 0.
1002
+ for jdx in range(self.numvars.idx_method):
1003
+ self.sequences.fluxes.am[idx0] = self.sequences.fluxes.am[idx0] + self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._am_points[jdx, idx0]
1004
+ self.sequences.fluxes.ps = 0.
1005
+ for jdx in range(self.numvars.idx_method):
1006
+ self.sequences.fluxes.ps = self.sequences.fluxes.ps +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._ps_points[jdx]
1007
+ self.sequences.fluxes.pve = 0.
1008
+ for jdx in range(self.numvars.idx_method):
1009
+ self.sequences.fluxes.pve = self.sequences.fluxes.pve +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._pve_points[jdx]
1010
+ self.sequences.fluxes.pv = 0.
1011
+ for jdx in range(self.numvars.idx_method):
1012
+ self.sequences.fluxes.pv = self.sequences.fluxes.pv +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._pv_points[jdx]
1013
+ self.sequences.fluxes.pq = 0.
1014
+ for jdx in range(self.numvars.idx_method):
1015
+ self.sequences.fluxes.pq = self.sequences.fluxes.pq +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._pq_points[jdx]
1016
+ self.sequences.fluxes.etve = 0.
1017
+ for jdx in range(self.numvars.idx_method):
1018
+ self.sequences.fluxes.etve = self.sequences.fluxes.etve +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._etve_points[jdx]
1019
+ self.sequences.fluxes.etv = 0.
1020
+ for jdx in range(self.numvars.idx_method):
1021
+ self.sequences.fluxes.etv = self.sequences.fluxes.etv +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._etv_points[jdx]
1022
+ self.sequences.fluxes.es = 0.
1023
+ for jdx in range(self.numvars.idx_method):
1024
+ self.sequences.fluxes.es = self.sequences.fluxes.es +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._es_points[jdx]
1025
+ self.sequences.fluxes.gr = 0.
1026
+ for jdx in range(self.numvars.idx_method):
1027
+ self.sequences.fluxes.gr = self.sequences.fluxes.gr +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._gr_points[jdx]
1028
+ self.sequences.fluxes.fxs = 0.
1029
+ for jdx in range(self.numvars.idx_method):
1030
+ self.sequences.fluxes.fxs = self.sequences.fluxes.fxs +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._fxs_points[jdx]
1031
+ self.sequences.fluxes.fxg = 0.
1032
+ for jdx in range(self.numvars.idx_method):
1033
+ self.sequences.fluxes.fxg = self.sequences.fluxes.fxg +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._fxg_points[jdx]
1034
+ self.sequences.fluxes.cdg = 0.
1035
+ for jdx in range(self.numvars.idx_method):
1036
+ self.sequences.fluxes.cdg = self.sequences.fluxes.cdg +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._cdg_points[jdx]
1037
+ self.sequences.fluxes.fgse = 0.
1038
+ for jdx in range(self.numvars.idx_method):
1039
+ self.sequences.fluxes.fgse = self.sequences.fluxes.fgse +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._fgse_points[jdx]
1040
+ self.sequences.fluxes.fgs = 0.
1041
+ for jdx in range(self.numvars.idx_method):
1042
+ self.sequences.fluxes.fgs = self.sequences.fluxes.fgs +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._fgs_points[jdx]
1043
+ self.sequences.fluxes.fqs = 0.
1044
+ for jdx in range(self.numvars.idx_method):
1045
+ self.sequences.fluxes.fqs = self.sequences.fluxes.fqs +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._fqs_points[jdx]
1046
+ self.sequences.fluxes.rh = 0.
1047
+ for jdx in range(self.numvars.idx_method):
1048
+ self.sequences.fluxes.rh = self.sequences.fluxes.rh +self.numvars.dt * self.numconsts.a_coefs[self.numvars.idx_method-1, self.numvars.idx_stage, jdx]*self.sequences.fluxes._rh_points[jdx]
1049
+ cpdef inline void reset_sum_fluxes(self) noexcept nogil:
1050
+ cdef numpy.int64_t idx0
1051
+ self.sequences.fluxes._pc_sum = 0.
1052
+ for idx0 in range(self.sequences.fluxes._tf_length):
1053
+ self.sequences.fluxes._tf_sum[idx0] = 0.
1054
+ for idx0 in range(self.sequences.fluxes._ei_length):
1055
+ self.sequences.fluxes._ei_sum[idx0] = 0.
1056
+ for idx0 in range(self.sequences.fluxes._rf_length):
1057
+ self.sequences.fluxes._rf_sum[idx0] = 0.
1058
+ for idx0 in range(self.sequences.fluxes._sf_length):
1059
+ self.sequences.fluxes._sf_sum[idx0] = 0.
1060
+ for idx0 in range(self.sequences.fluxes._am_length):
1061
+ self.sequences.fluxes._am_sum[idx0] = 0.
1062
+ self.sequences.fluxes._ps_sum = 0.
1063
+ self.sequences.fluxes._pve_sum = 0.
1064
+ self.sequences.fluxes._pv_sum = 0.
1065
+ self.sequences.fluxes._pq_sum = 0.
1066
+ self.sequences.fluxes._etve_sum = 0.
1067
+ self.sequences.fluxes._etv_sum = 0.
1068
+ self.sequences.fluxes._es_sum = 0.
1069
+ self.sequences.fluxes._gr_sum = 0.
1070
+ self.sequences.fluxes._fxs_sum = 0.
1071
+ self.sequences.fluxes._fxg_sum = 0.
1072
+ self.sequences.fluxes._cdg_sum = 0.
1073
+ self.sequences.fluxes._fgse_sum = 0.
1074
+ self.sequences.fluxes._fgs_sum = 0.
1075
+ self.sequences.fluxes._fqs_sum = 0.
1076
+ self.sequences.fluxes._rh_sum = 0.
1077
+ cpdef inline void addup_fluxes(self) noexcept nogil:
1078
+ cdef numpy.int64_t idx0
1079
+ self.sequences.fluxes._pc_sum = self.sequences.fluxes._pc_sum + self.sequences.fluxes.pc
1080
+ for idx0 in range(self.sequences.fluxes._tf_length):
1081
+ self.sequences.fluxes._tf_sum[idx0] = self.sequences.fluxes._tf_sum[idx0] + self.sequences.fluxes.tf[idx0]
1082
+ for idx0 in range(self.sequences.fluxes._ei_length):
1083
+ self.sequences.fluxes._ei_sum[idx0] = self.sequences.fluxes._ei_sum[idx0] + self.sequences.fluxes.ei[idx0]
1084
+ for idx0 in range(self.sequences.fluxes._rf_length):
1085
+ self.sequences.fluxes._rf_sum[idx0] = self.sequences.fluxes._rf_sum[idx0] + self.sequences.fluxes.rf[idx0]
1086
+ for idx0 in range(self.sequences.fluxes._sf_length):
1087
+ self.sequences.fluxes._sf_sum[idx0] = self.sequences.fluxes._sf_sum[idx0] + self.sequences.fluxes.sf[idx0]
1088
+ for idx0 in range(self.sequences.fluxes._am_length):
1089
+ self.sequences.fluxes._am_sum[idx0] = self.sequences.fluxes._am_sum[idx0] + self.sequences.fluxes.am[idx0]
1090
+ self.sequences.fluxes._ps_sum = self.sequences.fluxes._ps_sum + self.sequences.fluxes.ps
1091
+ self.sequences.fluxes._pve_sum = self.sequences.fluxes._pve_sum + self.sequences.fluxes.pve
1092
+ self.sequences.fluxes._pv_sum = self.sequences.fluxes._pv_sum + self.sequences.fluxes.pv
1093
+ self.sequences.fluxes._pq_sum = self.sequences.fluxes._pq_sum + self.sequences.fluxes.pq
1094
+ self.sequences.fluxes._etve_sum = self.sequences.fluxes._etve_sum + self.sequences.fluxes.etve
1095
+ self.sequences.fluxes._etv_sum = self.sequences.fluxes._etv_sum + self.sequences.fluxes.etv
1096
+ self.sequences.fluxes._es_sum = self.sequences.fluxes._es_sum + self.sequences.fluxes.es
1097
+ self.sequences.fluxes._gr_sum = self.sequences.fluxes._gr_sum + self.sequences.fluxes.gr
1098
+ self.sequences.fluxes._fxs_sum = self.sequences.fluxes._fxs_sum + self.sequences.fluxes.fxs
1099
+ self.sequences.fluxes._fxg_sum = self.sequences.fluxes._fxg_sum + self.sequences.fluxes.fxg
1100
+ self.sequences.fluxes._cdg_sum = self.sequences.fluxes._cdg_sum + self.sequences.fluxes.cdg
1101
+ self.sequences.fluxes._fgse_sum = self.sequences.fluxes._fgse_sum + self.sequences.fluxes.fgse
1102
+ self.sequences.fluxes._fgs_sum = self.sequences.fluxes._fgs_sum + self.sequences.fluxes.fgs
1103
+ self.sequences.fluxes._fqs_sum = self.sequences.fluxes._fqs_sum + self.sequences.fluxes.fqs
1104
+ self.sequences.fluxes._rh_sum = self.sequences.fluxes._rh_sum + self.sequences.fluxes.rh
1105
+ cpdef inline void calculate_error(self) noexcept nogil:
1106
+ cdef numpy.int64_t idx0
1107
+ cdef double abserror
1108
+ self.numvars.abserror = 0.
1109
+ if self.numvars.use_relerror:
1110
+ self.numvars.relerror = 0.
1111
+ else:
1112
+ self.numvars.relerror = inf
1113
+ abserror = fabs(self.sequences.fluxes._pc_results[self.numvars.idx_method]-self.sequences.fluxes._pc_results[self.numvars.idx_method-1])
1114
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1115
+ if self.numvars.use_relerror:
1116
+ if self.sequences.fluxes._pc_results[self.numvars.idx_method] == 0.:
1117
+ self.numvars.relerror = inf
1118
+ else:
1119
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._pc_results[self.numvars.idx_method]))
1120
+ for idx0 in range(self.sequences.fluxes._tf_length):
1121
+ abserror = fabs(self.sequences.fluxes._tf_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._tf_results[self.numvars.idx_method-1, idx0])
1122
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1123
+ if self.numvars.use_relerror:
1124
+ if self.sequences.fluxes._tf_results[self.numvars.idx_method, idx0] == 0.:
1125
+ self.numvars.relerror = inf
1126
+ else:
1127
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._tf_results[self.numvars.idx_method, idx0]))
1128
+ for idx0 in range(self.sequences.fluxes._ei_length):
1129
+ abserror = fabs(self.sequences.fluxes._ei_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._ei_results[self.numvars.idx_method-1, idx0])
1130
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1131
+ if self.numvars.use_relerror:
1132
+ if self.sequences.fluxes._ei_results[self.numvars.idx_method, idx0] == 0.:
1133
+ self.numvars.relerror = inf
1134
+ else:
1135
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._ei_results[self.numvars.idx_method, idx0]))
1136
+ for idx0 in range(self.sequences.fluxes._rf_length):
1137
+ abserror = fabs(self.sequences.fluxes._rf_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._rf_results[self.numvars.idx_method-1, idx0])
1138
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1139
+ if self.numvars.use_relerror:
1140
+ if self.sequences.fluxes._rf_results[self.numvars.idx_method, idx0] == 0.:
1141
+ self.numvars.relerror = inf
1142
+ else:
1143
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._rf_results[self.numvars.idx_method, idx0]))
1144
+ for idx0 in range(self.sequences.fluxes._sf_length):
1145
+ abserror = fabs(self.sequences.fluxes._sf_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._sf_results[self.numvars.idx_method-1, idx0])
1146
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1147
+ if self.numvars.use_relerror:
1148
+ if self.sequences.fluxes._sf_results[self.numvars.idx_method, idx0] == 0.:
1149
+ self.numvars.relerror = inf
1150
+ else:
1151
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._sf_results[self.numvars.idx_method, idx0]))
1152
+ for idx0 in range(self.sequences.fluxes._am_length):
1153
+ abserror = fabs(self.sequences.fluxes._am_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._am_results[self.numvars.idx_method-1, idx0])
1154
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1155
+ if self.numvars.use_relerror:
1156
+ if self.sequences.fluxes._am_results[self.numvars.idx_method, idx0] == 0.:
1157
+ self.numvars.relerror = inf
1158
+ else:
1159
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._am_results[self.numvars.idx_method, idx0]))
1160
+ abserror = fabs(self.sequences.fluxes._ps_results[self.numvars.idx_method]-self.sequences.fluxes._ps_results[self.numvars.idx_method-1])
1161
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1162
+ if self.numvars.use_relerror:
1163
+ if self.sequences.fluxes._ps_results[self.numvars.idx_method] == 0.:
1164
+ self.numvars.relerror = inf
1165
+ else:
1166
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._ps_results[self.numvars.idx_method]))
1167
+ abserror = fabs(self.sequences.fluxes._pve_results[self.numvars.idx_method]-self.sequences.fluxes._pve_results[self.numvars.idx_method-1])
1168
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1169
+ if self.numvars.use_relerror:
1170
+ if self.sequences.fluxes._pve_results[self.numvars.idx_method] == 0.:
1171
+ self.numvars.relerror = inf
1172
+ else:
1173
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._pve_results[self.numvars.idx_method]))
1174
+ abserror = fabs(self.sequences.fluxes._pv_results[self.numvars.idx_method]-self.sequences.fluxes._pv_results[self.numvars.idx_method-1])
1175
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1176
+ if self.numvars.use_relerror:
1177
+ if self.sequences.fluxes._pv_results[self.numvars.idx_method] == 0.:
1178
+ self.numvars.relerror = inf
1179
+ else:
1180
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._pv_results[self.numvars.idx_method]))
1181
+ abserror = fabs(self.sequences.fluxes._pq_results[self.numvars.idx_method]-self.sequences.fluxes._pq_results[self.numvars.idx_method-1])
1182
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1183
+ if self.numvars.use_relerror:
1184
+ if self.sequences.fluxes._pq_results[self.numvars.idx_method] == 0.:
1185
+ self.numvars.relerror = inf
1186
+ else:
1187
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._pq_results[self.numvars.idx_method]))
1188
+ abserror = fabs(self.sequences.fluxes._etve_results[self.numvars.idx_method]-self.sequences.fluxes._etve_results[self.numvars.idx_method-1])
1189
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1190
+ if self.numvars.use_relerror:
1191
+ if self.sequences.fluxes._etve_results[self.numvars.idx_method] == 0.:
1192
+ self.numvars.relerror = inf
1193
+ else:
1194
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._etve_results[self.numvars.idx_method]))
1195
+ abserror = fabs(self.sequences.fluxes._etv_results[self.numvars.idx_method]-self.sequences.fluxes._etv_results[self.numvars.idx_method-1])
1196
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1197
+ if self.numvars.use_relerror:
1198
+ if self.sequences.fluxes._etv_results[self.numvars.idx_method] == 0.:
1199
+ self.numvars.relerror = inf
1200
+ else:
1201
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._etv_results[self.numvars.idx_method]))
1202
+ abserror = fabs(self.sequences.fluxes._es_results[self.numvars.idx_method]-self.sequences.fluxes._es_results[self.numvars.idx_method-1])
1203
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1204
+ if self.numvars.use_relerror:
1205
+ if self.sequences.fluxes._es_results[self.numvars.idx_method] == 0.:
1206
+ self.numvars.relerror = inf
1207
+ else:
1208
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._es_results[self.numvars.idx_method]))
1209
+ abserror = fabs(self.sequences.fluxes._gr_results[self.numvars.idx_method]-self.sequences.fluxes._gr_results[self.numvars.idx_method-1])
1210
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1211
+ if self.numvars.use_relerror:
1212
+ if self.sequences.fluxes._gr_results[self.numvars.idx_method] == 0.:
1213
+ self.numvars.relerror = inf
1214
+ else:
1215
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._gr_results[self.numvars.idx_method]))
1216
+ abserror = fabs(self.sequences.fluxes._fxs_results[self.numvars.idx_method]-self.sequences.fluxes._fxs_results[self.numvars.idx_method-1])
1217
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1218
+ if self.numvars.use_relerror:
1219
+ if self.sequences.fluxes._fxs_results[self.numvars.idx_method] == 0.:
1220
+ self.numvars.relerror = inf
1221
+ else:
1222
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fxs_results[self.numvars.idx_method]))
1223
+ abserror = fabs(self.sequences.fluxes._fxg_results[self.numvars.idx_method]-self.sequences.fluxes._fxg_results[self.numvars.idx_method-1])
1224
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1225
+ if self.numvars.use_relerror:
1226
+ if self.sequences.fluxes._fxg_results[self.numvars.idx_method] == 0.:
1227
+ self.numvars.relerror = inf
1228
+ else:
1229
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fxg_results[self.numvars.idx_method]))
1230
+ abserror = fabs(self.sequences.fluxes._cdg_results[self.numvars.idx_method]-self.sequences.fluxes._cdg_results[self.numvars.idx_method-1])
1231
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1232
+ if self.numvars.use_relerror:
1233
+ if self.sequences.fluxes._cdg_results[self.numvars.idx_method] == 0.:
1234
+ self.numvars.relerror = inf
1235
+ else:
1236
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._cdg_results[self.numvars.idx_method]))
1237
+ abserror = fabs(self.sequences.fluxes._fgse_results[self.numvars.idx_method]-self.sequences.fluxes._fgse_results[self.numvars.idx_method-1])
1238
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1239
+ if self.numvars.use_relerror:
1240
+ if self.sequences.fluxes._fgse_results[self.numvars.idx_method] == 0.:
1241
+ self.numvars.relerror = inf
1242
+ else:
1243
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fgse_results[self.numvars.idx_method]))
1244
+ abserror = fabs(self.sequences.fluxes._fgs_results[self.numvars.idx_method]-self.sequences.fluxes._fgs_results[self.numvars.idx_method-1])
1245
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1246
+ if self.numvars.use_relerror:
1247
+ if self.sequences.fluxes._fgs_results[self.numvars.idx_method] == 0.:
1248
+ self.numvars.relerror = inf
1249
+ else:
1250
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fgs_results[self.numvars.idx_method]))
1251
+ abserror = fabs(self.sequences.fluxes._fqs_results[self.numvars.idx_method]-self.sequences.fluxes._fqs_results[self.numvars.idx_method-1])
1252
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1253
+ if self.numvars.use_relerror:
1254
+ if self.sequences.fluxes._fqs_results[self.numvars.idx_method] == 0.:
1255
+ self.numvars.relerror = inf
1256
+ else:
1257
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fqs_results[self.numvars.idx_method]))
1258
+ abserror = fabs(self.sequences.fluxes._rh_results[self.numvars.idx_method]-self.sequences.fluxes._rh_results[self.numvars.idx_method-1])
1259
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1260
+ if self.numvars.use_relerror:
1261
+ if self.sequences.fluxes._rh_results[self.numvars.idx_method] == 0.:
1262
+ self.numvars.relerror = inf
1263
+ else:
1264
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._rh_results[self.numvars.idx_method]))
1265
+ cpdef inline void extrapolate_error(self) noexcept nogil:
1266
+ if self.numvars.abserror <= 0.0:
1267
+ self.numvars.extrapolated_abserror = 0.0
1268
+ self.numvars.extrapolated_relerror = 0.0
1269
+ else:
1270
+ if self.numvars.idx_method > 2:
1271
+ self.numvars.extrapolated_abserror = exp( log(self.numvars.abserror) + ( log(self.numvars.abserror) - log(self.numvars.last_abserror) ) * (self.numconsts.nmb_methods - self.numvars.idx_method) )
1272
+ else:
1273
+ self.numvars.extrapolated_abserror = -999.9
1274
+ if self.numvars.use_relerror:
1275
+ if self.numvars.idx_method > 2:
1276
+ if isinf(self.numvars.relerror):
1277
+ self.numvars.extrapolated_relerror = inf
1278
+ else:
1279
+ self.numvars.extrapolated_relerror = exp( log(self.numvars.relerror) + ( log(self.numvars.relerror) - log(self.numvars.last_relerror) ) * (self.numconsts.nmb_methods - self.numvars.idx_method) )
1280
+ else:
1281
+ self.numvars.extrapolated_relerror = -999.9
1282
+ else:
1283
+ self.numvars.extrapolated_relerror = inf
1284
+ cpdef inline void pick_hs_v1(self) noexcept nogil:
1285
+ cdef double hs
1286
+ cdef double waterlevel
1287
+ if self.waterlevelmodel is None:
1288
+ self.sequences.factors.dhs = 0.0
1289
+ elif self.waterlevelmodel_typeid == 1:
1290
+ waterlevel = (<masterinterface.MasterInterface>self.waterlevelmodel).get_waterlevel()
1291
+ hs = 1000.0 * (waterlevel - self.parameters.control.bl)
1292
+ self.sequences.factors.dhs = hs - self.sequences.new_states.hs
1293
+ self.sequences.old_states.hs = self.sequences.new_states.hs = hs
1294
+ cpdef inline void calc_pe_pet_v1(self) noexcept nogil:
1295
+ if self.petmodel_typeid == 1:
1296
+ self.calc_pe_pet_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
1297
+ elif self.petmodel_typeid == 2:
1298
+ self.calc_pe_pet_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
1299
+ cpdef inline void calc_fr_v1(self) noexcept nogil:
1300
+ if self.sequences.inputs.t >= (self.parameters.control.tt + self.parameters.control.ti / 2.0):
1301
+ self.sequences.aides.fr = 1.0
1302
+ elif self.sequences.inputs.t <= (self.parameters.control.tt - self.parameters.control.ti / 2.0):
1303
+ self.sequences.aides.fr = 0.0
1304
+ else:
1305
+ self.sequences.aides.fr = (self.sequences.inputs.t - (self.parameters.control.tt - self.parameters.control.ti / 2.0)) / self.parameters.control.ti
1306
+ cpdef inline void calc_pm_v1(self) noexcept nogil:
1307
+ cdef numpy.int64_t k
1308
+ for k in range(self.parameters.derived.nul):
1309
+ self.sequences.fluxes.pm[k] = self.parameters.control.ddf[k] * smoothutils.smooth_logistic2( self.sequences.inputs.t - self.parameters.control.ddt, self.parameters.derived.rt2 )
1310
+ self.sequences.fluxes.pm[self.parameters.derived.nul] = 0.0
1311
+ cpdef inline void calc_fxs_v1(self) noexcept nogil:
1312
+ if self.sequences.inputs.fxs == 0.0:
1313
+ self.sequences.fluxes.fxs = 0.0
1314
+ elif self.parameters.control.nu == 1:
1315
+ self.sequences.fluxes.fxs = inf
1316
+ else:
1317
+ self.sequences.fluxes.fxs = self.sequences.inputs.fxs / self.parameters.derived.asr
1318
+ cpdef inline void calc_fxg_v1(self) noexcept nogil:
1319
+ cdef double ra
1320
+ if self.sequences.inputs.fxg == 0.0:
1321
+ self.sequences.fluxes.fxg = 0.0
1322
+ else:
1323
+ ra = self.parameters.derived.agr
1324
+ if ra > 0.0:
1325
+ self.sequences.fluxes.fxg = self.sequences.inputs.fxg / ra
1326
+ else:
1327
+ self.sequences.fluxes.fxg = inf
1328
+ cpdef inline void calc_pc_v1(self) noexcept nogil:
1329
+ self.sequences.fluxes.pc = self.parameters.control.cp * self.sequences.inputs.p
1330
+ cpdef inline void calc_tf_v1(self) noexcept nogil:
1331
+ cdef double lai
1332
+ cdef numpy.int64_t k
1333
+ for k in range(self.parameters.derived.nul):
1334
+ lai = self.parameters.control.lai[self.parameters.control.lt[k] - SEALED, self.parameters.derived.moy[self.idx_sim]]
1335
+ self.sequences.fluxes.tf[k] = self.sequences.fluxes.pc * smoothutils.smooth_logistic1( self.sequences.states.ic[k] - self.parameters.control.ih * lai, self.parameters.derived.rh1 )
1336
+ self.sequences.fluxes.tf[self.parameters.derived.nul] = 0.0
1337
+ cpdef inline void calc_ei_v1(self) noexcept nogil:
1338
+ cdef numpy.int64_t k
1339
+ for k in range(self.parameters.derived.nul):
1340
+ self.sequences.fluxes.ei[k] = self.sequences.fluxes.pe[k] * (smoothutils.smooth_logistic1(self.sequences.states.ic[k], self.parameters.derived.rh1))
1341
+ self.sequences.fluxes.ei[self.parameters.derived.nul] = 0.0
1342
+ cpdef inline void calc_sf_v1(self) noexcept nogil:
1343
+ cdef numpy.int64_t k
1344
+ for k in range(self.parameters.derived.nul):
1345
+ self.sequences.fluxes.sf[k] = (1.0 - self.sequences.aides.fr) * self.sequences.fluxes.tf[k]
1346
+ self.sequences.fluxes.sf[self.parameters.derived.nul] = 0.0
1347
+ cpdef inline void calc_rf_v1(self) noexcept nogil:
1348
+ cdef numpy.int64_t k
1349
+ for k in range(self.parameters.derived.nul):
1350
+ self.sequences.fluxes.rf[k] = self.sequences.aides.fr * self.sequences.fluxes.tf[k]
1351
+ self.sequences.fluxes.rf[self.parameters.derived.nul] = 0.0
1352
+ cpdef inline void calc_am_v1(self) noexcept nogil:
1353
+ cdef numpy.int64_t k
1354
+ for k in range(self.parameters.derived.nul):
1355
+ self.sequences.fluxes.am[k] = self.sequences.fluxes.pm[k] * smoothutils.smooth_logistic1(self.sequences.states.sp[k], self.parameters.derived.rh1)
1356
+ self.sequences.fluxes.am[self.parameters.derived.nul] = 0.0
1357
+ cpdef inline void calc_ps_v1(self) noexcept nogil:
1358
+ self.sequences.fluxes.ps = self.sequences.fluxes.pc
1359
+ cpdef inline void calc_we_w_v1(self) noexcept nogil:
1360
+ if self.parameters.derived.nuge:
1361
+ self.sequences.aides.we = 0.5 + 0.5 * cos( min(max(self.sequences.states.dve, 0.0), self.parameters.control.cwe) * self.parameters.fixed.pi / self.parameters.control.cwe )
1362
+ else:
1363
+ self.sequences.aides.we = nan
1364
+ if self.parameters.derived.nug:
1365
+ self.sequences.aides.w = 0.5 + 0.5 * cos( min(max(self.sequences.states.dv, 0.0), self.parameters.control.cw) * self.parameters.fixed.pi / self.parameters.control.cw )
1366
+ else:
1367
+ self.sequences.aides.w = nan
1368
+ cpdef inline void calc_pve_pv_v1(self) noexcept nogil:
1369
+ cdef double p
1370
+ cdef numpy.int64_t k
1371
+ self.sequences.fluxes.pve, self.sequences.fluxes.pv = 0.0, 0.0
1372
+ for k in range(self.parameters.derived.nul):
1373
+ if self.parameters.control.lt[k] != SEALED:
1374
+ p = self.sequences.fluxes.rf[k] + self.sequences.fluxes.am[k]
1375
+ if self.parameters.control.er[k]:
1376
+ self.sequences.fluxes.pve = self.sequences.fluxes.pve + (p * (1.0 - self.sequences.aides.we) * self.parameters.control.aur[k] / self.parameters.derived.agre)
1377
+ else:
1378
+ self.sequences.fluxes.pv = self.sequences.fluxes.pv + (p * (1.0 - self.sequences.aides.w) * self.parameters.control.aur[k] / self.parameters.derived.agr)
1379
+ cpdef inline void calc_pq_v1(self) noexcept nogil:
1380
+ cdef double pq
1381
+ cdef numpy.int64_t k
1382
+ self.sequences.fluxes.pq = 0.0
1383
+ for k in range(self.parameters.derived.nul):
1384
+ pq = self.parameters.control.aur[k] / self.parameters.derived.alr * (self.sequences.fluxes.rf[k] + self.sequences.fluxes.am[k])
1385
+ if self.parameters.control.lt[k] != SEALED:
1386
+ pq = pq * (self.sequences.aides.we if self.parameters.control.er[k] else self.sequences.aides.w)
1387
+ self.sequences.fluxes.pq = self.sequences.fluxes.pq + (pq)
1388
+ cpdef inline void calc_betae_beta_v1(self) noexcept nogil:
1389
+ cdef double temp
1390
+ if self.parameters.derived.nuge:
1391
+ temp = self.parameters.control.zeta1 * (self.sequences.states.dve - self.parameters.control.zeta2)
1392
+ if temp > 700.0:
1393
+ self.sequences.aides.betae = 0.0
1394
+ else:
1395
+ temp = exp(temp)
1396
+ self.sequences.aides.betae = 0.5 + 0.5 * (1.0 - temp) / (1.0 + temp)
1397
+ else:
1398
+ self.sequences.aides.betae = nan
1399
+ if self.parameters.derived.nug:
1400
+ temp = self.parameters.control.zeta1 * (self.sequences.states.dv - self.parameters.control.zeta2)
1401
+ if temp > 700.0:
1402
+ self.sequences.aides.beta = 0.0
1403
+ else:
1404
+ temp = exp(temp)
1405
+ self.sequences.aides.beta = 0.5 + 0.5 * (1.0 - temp) / (1.0 + temp)
1406
+ else:
1407
+ self.sequences.aides.beta = nan
1408
+ cpdef inline void calc_etve_etv_v1(self) noexcept nogil:
1409
+ cdef double pet
1410
+ cdef numpy.int64_t k
1411
+ self.sequences.fluxes.etve, self.sequences.fluxes.etv = 0.0, 0.0
1412
+ for k in range(self.parameters.derived.nul):
1413
+ if (self.parameters.control.lt[k] != SEALED) and (self.sequences.fluxes.pe[k] > 0.0):
1414
+ pet = (self.sequences.fluxes.pe[k] - self.sequences.fluxes.ei[k]) / self.sequences.fluxes.pe[k] * self.sequences.fluxes.pet[k]
1415
+ if self.parameters.control.er[k]:
1416
+ self.sequences.fluxes.etve = self.sequences.fluxes.etve + (self.parameters.control.aur[k] / self.parameters.derived.agre * pet * self.sequences.aides.betae)
1417
+ else:
1418
+ self.sequences.fluxes.etv = self.sequences.fluxes.etv + (self.parameters.control.aur[k] / self.parameters.derived.agr * pet * self.sequences.aides.beta)
1419
+ cpdef inline void calc_es_v1(self) noexcept nogil:
1420
+ self.sequences.fluxes.es = self.sequences.fluxes.pe[self.parameters.derived.nul] * smoothutils.smooth_logistic1(self.sequences.states.hs, self.parameters.derived.rh1)
1421
+ cpdef inline void calc_fqs_v1(self) noexcept nogil:
1422
+ if self.parameters.control.nu > 1:
1423
+ self.sequences.fluxes.fqs = self.sequences.states.hq / self.parameters.control.cq
1424
+ else:
1425
+ self.sequences.fluxes.fqs = 0.0
1426
+ cpdef inline void calc_fgse_v1(self) noexcept nogil:
1427
+ cdef double hg
1428
+ cdef double hge
1429
+ if self.parameters.derived.nuge:
1430
+ hge = self.sequences.states.hge
1431
+ hg = 1000.0 * self.parameters.control.gl - self.sequences.states.dg
1432
+ self.sequences.fluxes.fgse = fabs(hge - hg) * (hge - hg) / self.parameters.control.cge
1433
+ else:
1434
+ self.sequences.fluxes.fgse = 0.0
1435
+ cpdef inline void calc_fgs_v1(self) noexcept nogil:
1436
+ cdef double conductivity
1437
+ cdef double excess
1438
+ cdef double contactsurface
1439
+ cdef double gradient
1440
+ cdef double hs
1441
+ cdef double hg
1442
+ if self.parameters.derived.nug:
1443
+ hg = smoothutils.smooth_logistic2(self.parameters.derived.cd - self.sequences.states.dg, self.parameters.derived.rh2)
1444
+ hs = smoothutils.smooth_logistic2(self.sequences.states.hs, self.parameters.derived.rh2)
1445
+ gradient = (hg if self.parameters.control.rg else self.parameters.derived.cd - self.sequences.states.dg) - hs
1446
+ if self.parameters.control.rg:
1447
+ contactsurface = fabs(hg - hs)
1448
+ else:
1449
+ contactsurface = smoothutils.smooth_max1(hg, hs, self.parameters.derived.rh2)
1450
+ excess = smoothutils.smooth_max2( -self.sequences.states.dg, self.sequences.states.hs - self.parameters.derived.cd, 0.0, self.parameters.derived.rh2 )
1451
+ conductivity = (1.0 + self.parameters.control.cgf * excess) / self.parameters.control.cg
1452
+ self.sequences.fluxes.fgs = gradient * contactsurface * conductivity
1453
+ else:
1454
+ self.sequences.fluxes.fgs = 0.0
1455
+ cpdef inline void calc_rh_v1(self) noexcept nogil:
1456
+ if self.dischargemodel is None:
1457
+ self.sequences.fluxes.rh = ( self.parameters.derived.asr * (self.sequences.fluxes.fxs + self.sequences.fluxes.ps - self.sequences.fluxes.es) + self.parameters.derived.alr * self.sequences.fluxes.fqs + self.parameters.derived.agr * self.sequences.fluxes.fgs )
1458
+ elif self.dischargemodel_typeid == 2:
1459
+ self.sequences.fluxes.rh = (<masterinterface.MasterInterface>self.dischargemodel).calculate_discharge(self.sequences.states.hs / 1000.0)
1460
+ cpdef inline void calc_dveq_v1(self) noexcept nogil:
1461
+ if self.parameters.derived.nug:
1462
+ if self.sequences.states.dg < self.parameters.control.psiae:
1463
+ self.sequences.aides.dveq = 0.0
1464
+ else:
1465
+ self.sequences.aides.dveq = self.parameters.control.thetas * ( self.sequences.states.dg - self.sequences.states.dg ** (1.0 - 1.0 / self.parameters.control.b) / (1.0 - 1.0 / self.parameters.control.b) / self.parameters.control.psiae ** (-1.0 / self.parameters.control.b) - self.parameters.control.psiae / (1.0 - self.parameters.control.b) )
1466
+ else:
1467
+ self.sequences.aides.dveq = nan
1468
+ cpdef inline void calc_dveq_v2(self) noexcept nogil:
1469
+ cdef double t2
1470
+ cdef double t1
1471
+ cdef double x0
1472
+ if self.parameters.derived.nug:
1473
+ x0 = -10.0 * self.parameters.control.sh
1474
+ if self.sequences.states.dg > self.parameters.control.psiae:
1475
+ t1 = self.quaddveq_v1.integrate(x0, self.parameters.control.psiae, 2, 20, 1e-8)
1476
+ t2 = self.quaddveq_v1.integrate(self.parameters.control.psiae, self.sequences.states.dg, 2, 20, 1e-8)
1477
+ self.sequences.aides.dveq = t1 + t2
1478
+ else:
1479
+ self.sequences.aides.dveq = self.quaddveq_v1.integrate(x0, self.sequences.states.dg, 2, 20, 1e-8)
1480
+ else:
1481
+ self.sequences.aides.dveq = nan
1482
+ cpdef inline void calc_dveq_v3(self) noexcept nogil:
1483
+ if self.parameters.derived.nug:
1484
+ if self.sequences.states.dg < self.parameters.control.psiae:
1485
+ self.sequences.aides.dveq = self.parameters.control.thetar * self.sequences.states.dg
1486
+ else:
1487
+ self.sequences.aides.dveq = (self.parameters.control.thetas - self.parameters.control.thetar) * ( self.sequences.states.dg - self.sequences.states.dg ** (1.0 - 1.0 / self.parameters.control.b) / (1.0 - 1.0 / self.parameters.control.b) / self.parameters.control.psiae ** (-1.0 / self.parameters.control.b) - self.parameters.control.psiae / (1.0 - self.parameters.control.b) ) + self.parameters.control.thetar * self.sequences.states.dg
1488
+ else:
1489
+ self.sequences.aides.dveq = nan
1490
+ cpdef inline void calc_dveq_v4(self) noexcept nogil:
1491
+ cdef double t2
1492
+ cdef double t1
1493
+ cdef double x0
1494
+ if self.parameters.derived.nug:
1495
+ x0 = -10.0 * self.parameters.control.sh
1496
+ if self.sequences.states.dg > self.parameters.control.psiae:
1497
+ t1 = self.quaddveq_v2.integrate(x0, self.parameters.control.psiae, 2, 20, 1e-8)
1498
+ t2 = self.quaddveq_v2.integrate(self.parameters.control.psiae, self.sequences.states.dg, 2, 20, 1e-8)
1499
+ self.sequences.aides.dveq = t1 + t2
1500
+ else:
1501
+ self.sequences.aides.dveq = self.quaddveq_v2.integrate(x0, self.sequences.states.dg, 2, 20, 1e-8)
1502
+ else:
1503
+ self.sequences.aides.dveq = nan
1504
+ cpdef inline void calc_dgeq_v1(self) noexcept nogil:
1505
+ cdef double error
1506
+ if self.sequences.states.dv > 0.0:
1507
+ error = self.return_errordv_v1(self.parameters.control.psiae)
1508
+ if error <= 0.0:
1509
+ self.sequences.aides.dgeq = self.pegasusdgeq.find_x( self.parameters.control.psiae, 10000.0, self.parameters.control.psiae, 1000000.0, 0.0, 1e-8, 20 )
1510
+ else:
1511
+ self.sequences.aides.dgeq = self.pegasusdgeq.find_x( 0.0, self.parameters.control.psiae, 0.0, self.parameters.control.psiae, 0.0, 1e-8, 20 )
1512
+ else:
1513
+ self.sequences.aides.dgeq = 0.0
1514
+ cpdef inline void calc_gf_v1(self) noexcept nogil:
1515
+ self.sequences.aides.gf = smoothutils.smooth_logistic1(self.sequences.states.dg, self.parameters.derived.rh1) / self.return_dvh_v2( self.sequences.aides.dgeq - self.sequences.states.dg )
1516
+ cpdef inline void calc_gr_v1(self) noexcept nogil:
1517
+ if self.parameters.derived.nuge:
1518
+ self.sequences.fluxes.gr = smoothutils.smooth_logistic2(self.parameters.control.ac - self.sequences.states.dve, self.parameters.derived.rh2)
1519
+ else:
1520
+ self.sequences.fluxes.gr = 0.0
1521
+ cpdef inline void calc_cdg_v1(self) noexcept nogil:
1522
+ cdef double target
1523
+ if self.parameters.derived.nug:
1524
+ target = smoothutils.smooth_min1(self.sequences.aides.dveq, self.sequences.states.dg, self.parameters.derived.rh1)
1525
+ self.sequences.fluxes.cdg = (self.sequences.states.dv - target) / self.parameters.control.cv
1526
+ if self.parameters.control.dgc:
1527
+ self.sequences.fluxes.cdg = self.sequences.fluxes.cdg + ((self.sequences.fluxes.fgs - self.sequences.fluxes.fgse - self.sequences.fluxes.fxg) / self.parameters.control.thetas)
1528
+ else:
1529
+ self.sequences.fluxes.cdg = 0.0
1530
+ cpdef inline void calc_cdg_v2(self) noexcept nogil:
1531
+ cdef double cdg_fast
1532
+ cdef double cdg_slow
1533
+ cdef double target
1534
+ if self.parameters.derived.nug:
1535
+ target = smoothutils.smooth_min1(self.sequences.aides.dveq, self.sequences.states.dg, self.parameters.derived.rh1)
1536
+ cdg_slow = (self.sequences.states.dv - target) / self.parameters.control.cv
1537
+ cdg_fast = self.sequences.aides.gf * (self.sequences.fluxes.fgs - self.sequences.fluxes.fgse - self.sequences.fluxes.pv - self.sequences.fluxes.fxg)
1538
+ self.sequences.fluxes.cdg = cdg_slow + cdg_fast
1539
+ else:
1540
+ self.sequences.fluxes.cdg = 0.0
1541
+ cpdef inline void update_ic_v1(self) noexcept nogil:
1542
+ cdef numpy.int64_t k
1543
+ for k in range(self.parameters.derived.nul):
1544
+ self.sequences.new_states.ic[k] = self.sequences.old_states.ic[k] + (self.sequences.fluxes.pc - self.sequences.fluxes.tf[k] - self.sequences.fluxes.ei[k])
1545
+ self.sequences.new_states.ic[self.parameters.derived.nul] = 0
1546
+ cpdef inline void update_sp_v1(self) noexcept nogil:
1547
+ cdef numpy.int64_t k
1548
+ for k in range(self.parameters.derived.nul):
1549
+ self.sequences.new_states.sp[k] = self.sequences.old_states.sp[k] + (self.sequences.fluxes.sf[k] - self.sequences.fluxes.am[k])
1550
+ self.sequences.new_states.sp[self.parameters.derived.nul] = 0
1551
+ cpdef inline void update_dve_v1(self) noexcept nogil:
1552
+ if self.parameters.derived.nuge:
1553
+ self.sequences.new_states.dve = self.sequences.old_states.dve - (self.sequences.fluxes.pve - self.sequences.fluxes.etve - self.sequences.fluxes.gr)
1554
+ else:
1555
+ self.sequences.new_states.dve = nan
1556
+ cpdef inline void update_dv_v1(self) noexcept nogil:
1557
+ if self.parameters.derived.nug:
1558
+ self.sequences.new_states.dv = self.sequences.old_states.dv - ( self.sequences.fluxes.fxg + self.sequences.fluxes.pv - self.sequences.fluxes.etv - self.sequences.fluxes.fgs + self.sequences.fluxes.fgse * self.parameters.derived.agre / self.parameters.derived.agr )
1559
+ else:
1560
+ self.sequences.new_states.dv = nan
1561
+ cpdef inline void update_hge_v1(self) noexcept nogil:
1562
+ if self.parameters.derived.nuge:
1563
+ self.sequences.new_states.hge = self.sequences.old_states.hge + (self.sequences.fluxes.gr - self.sequences.fluxes.fgse) / self.parameters.control.thetas
1564
+ else:
1565
+ self.sequences.new_states.hge = nan
1566
+ cpdef inline void update_dg_v1(self) noexcept nogil:
1567
+ if self.parameters.derived.nug:
1568
+ self.sequences.new_states.dg = self.sequences.old_states.dg + self.sequences.fluxes.cdg
1569
+ else:
1570
+ self.sequences.new_states.dg = nan
1571
+ cpdef inline void update_hq_v1(self) noexcept nogil:
1572
+ self.sequences.new_states.hq = self.sequences.old_states.hq + (self.sequences.fluxes.pq - self.sequences.fluxes.fqs)
1573
+ cpdef inline void update_hs_v1(self) noexcept nogil:
1574
+ self.sequences.new_states.hs = ( self.sequences.old_states.hs + (self.sequences.fluxes.fxs + self.sequences.fluxes.ps - self.sequences.fluxes.es) + (self.parameters.derived.alr * self.sequences.fluxes.fqs + self.parameters.derived.agr * self.sequences.fluxes.fgs - self.sequences.fluxes.rh) / self.parameters.derived.asr )
1575
+ cpdef double get_temperature_v1(self, numpy.int64_t s) noexcept nogil:
1576
+ return self.sequences.inputs.t
1577
+ cpdef double get_meantemperature_v1(self) noexcept nogil:
1578
+ return self.sequences.inputs.t
1579
+ cpdef double get_precipitation_v1(self, numpy.int64_t s) noexcept nogil:
1580
+ return self.sequences.fluxes.pc
1581
+ cpdef double get_snowcover_v1(self, numpy.int64_t k) noexcept nogil:
1582
+ if self.sequences.states.sp[k] > 0.0:
1583
+ return 1.0
1584
+ return 0.0
1585
+ cpdef inline void calc_pe_pet_petmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
1586
+ cdef numpy.int64_t k
1587
+ submodel.determine_potentialevapotranspiration()
1588
+ for k in range(self.parameters.derived.nul):
1589
+ self.sequences.fluxes.pe[k] = self.sequences.fluxes.pet[k] = submodel.get_potentialevapotranspiration(k)
1590
+ self.sequences.fluxes.pe[self.parameters.derived.nul] = submodel.get_potentialevapotranspiration(self.parameters.derived.nul)
1591
+ self.sequences.fluxes.pet[self.parameters.derived.nul] = 0.0
1592
+ cpdef inline void calc_pe_pet_petmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
1593
+ cdef numpy.int64_t k
1594
+ submodel.determine_potentialinterceptionevaporation()
1595
+ submodel.determine_potentialsoilevapotranspiration()
1596
+ submodel.determine_potentialwaterevaporation()
1597
+ for k in range(self.parameters.derived.nul):
1598
+ self.sequences.fluxes.pe[k] = submodel.get_potentialinterceptionevaporation(k)
1599
+ self.sequences.fluxes.pet[k] = submodel.get_potentialsoilevapotranspiration(k)
1600
+ self.sequences.fluxes.pe[self.parameters.derived.nul] = submodel.get_potentialwaterevaporation(self.parameters.derived.nul)
1601
+ self.sequences.fluxes.pet[self.parameters.derived.nul] = 0.0
1602
+ cpdef inline double return_errordv_v1(self, double dg) noexcept nogil:
1603
+ cdef double d_delta
1604
+ cdef double dg_old
1605
+ cdef double dveq_old
1606
+ dveq_old = self.sequences.aides.dveq
1607
+ dg_old = self.sequences.states.dg
1608
+ self.sequences.states.dg = dg
1609
+ self.calc_dveq_v3()
1610
+ d_delta = self.sequences.aides.dveq - self.sequences.states.dv
1611
+ self.sequences.aides.dveq = dveq_old
1612
+ self.sequences.states.dg = dg_old
1613
+ return d_delta
1614
+ cpdef inline double return_dvh_v1(self, double h) noexcept nogil:
1615
+ h = smoothutils.smooth_max1(h, self.parameters.control.psiae, self.parameters.derived.rh1)
1616
+ return self.parameters.control.thetas * (1.0 - (h / self.parameters.control.psiae) ** (-1.0 / self.parameters.control.b))
1617
+ cpdef inline double return_dvh_v2(self, double h) noexcept nogil:
1618
+ h = smoothutils.smooth_max1(h, self.parameters.control.psiae, self.parameters.derived.rh1)
1619
+ return self.parameters.control.thetar + ( (self.parameters.control.thetas - self.parameters.control.thetar) * (1.0 - (h / self.parameters.control.psiae) ** (-1.0 / self.parameters.control.b)) )
1620
+ cpdef inline void calc_et_v1(self) noexcept nogil:
1621
+ cdef numpy.int64_t k
1622
+ cdef double ei
1623
+ ei = 0.0
1624
+ for k in range(self.parameters.derived.nul):
1625
+ ei = ei + (self.parameters.control.aur[k] * self.sequences.fluxes.ei[k])
1626
+ self.sequences.fluxes.et = ei + self.parameters.derived.agre * self.sequences.fluxes.etve + self.parameters.derived.agr * self.sequences.fluxes.etv + self.parameters.derived.asr * self.sequences.fluxes.es
1627
+ cpdef inline void calc_r_v1(self) noexcept nogil:
1628
+ self.sequences.fluxes.r = self.parameters.derived.qf * self.sequences.fluxes.rh
1629
+ cpdef inline void pass_r_v1(self) noexcept nogil:
1630
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.r)
1631
+ cpdef inline void pick_hs(self) noexcept nogil:
1632
+ cdef double hs
1633
+ cdef double waterlevel
1634
+ if self.waterlevelmodel is None:
1635
+ self.sequences.factors.dhs = 0.0
1636
+ elif self.waterlevelmodel_typeid == 1:
1637
+ waterlevel = (<masterinterface.MasterInterface>self.waterlevelmodel).get_waterlevel()
1638
+ hs = 1000.0 * (waterlevel - self.parameters.control.bl)
1639
+ self.sequences.factors.dhs = hs - self.sequences.new_states.hs
1640
+ self.sequences.old_states.hs = self.sequences.new_states.hs = hs
1641
+ cpdef inline void calc_pe_pet(self) noexcept nogil:
1642
+ if self.petmodel_typeid == 1:
1643
+ self.calc_pe_pet_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
1644
+ elif self.petmodel_typeid == 2:
1645
+ self.calc_pe_pet_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
1646
+ cpdef inline void calc_fr(self) noexcept nogil:
1647
+ if self.sequences.inputs.t >= (self.parameters.control.tt + self.parameters.control.ti / 2.0):
1648
+ self.sequences.aides.fr = 1.0
1649
+ elif self.sequences.inputs.t <= (self.parameters.control.tt - self.parameters.control.ti / 2.0):
1650
+ self.sequences.aides.fr = 0.0
1651
+ else:
1652
+ self.sequences.aides.fr = (self.sequences.inputs.t - (self.parameters.control.tt - self.parameters.control.ti / 2.0)) / self.parameters.control.ti
1653
+ cpdef inline void calc_pm(self) noexcept nogil:
1654
+ cdef numpy.int64_t k
1655
+ for k in range(self.parameters.derived.nul):
1656
+ self.sequences.fluxes.pm[k] = self.parameters.control.ddf[k] * smoothutils.smooth_logistic2( self.sequences.inputs.t - self.parameters.control.ddt, self.parameters.derived.rt2 )
1657
+ self.sequences.fluxes.pm[self.parameters.derived.nul] = 0.0
1658
+ cpdef inline void calc_fxs(self) noexcept nogil:
1659
+ if self.sequences.inputs.fxs == 0.0:
1660
+ self.sequences.fluxes.fxs = 0.0
1661
+ elif self.parameters.control.nu == 1:
1662
+ self.sequences.fluxes.fxs = inf
1663
+ else:
1664
+ self.sequences.fluxes.fxs = self.sequences.inputs.fxs / self.parameters.derived.asr
1665
+ cpdef inline void calc_fxg(self) noexcept nogil:
1666
+ cdef double ra
1667
+ if self.sequences.inputs.fxg == 0.0:
1668
+ self.sequences.fluxes.fxg = 0.0
1669
+ else:
1670
+ ra = self.parameters.derived.agr
1671
+ if ra > 0.0:
1672
+ self.sequences.fluxes.fxg = self.sequences.inputs.fxg / ra
1673
+ else:
1674
+ self.sequences.fluxes.fxg = inf
1675
+ cpdef inline void calc_pc(self) noexcept nogil:
1676
+ self.sequences.fluxes.pc = self.parameters.control.cp * self.sequences.inputs.p
1677
+ cpdef inline void calc_tf(self) noexcept nogil:
1678
+ cdef double lai
1679
+ cdef numpy.int64_t k
1680
+ for k in range(self.parameters.derived.nul):
1681
+ lai = self.parameters.control.lai[self.parameters.control.lt[k] - SEALED, self.parameters.derived.moy[self.idx_sim]]
1682
+ self.sequences.fluxes.tf[k] = self.sequences.fluxes.pc * smoothutils.smooth_logistic1( self.sequences.states.ic[k] - self.parameters.control.ih * lai, self.parameters.derived.rh1 )
1683
+ self.sequences.fluxes.tf[self.parameters.derived.nul] = 0.0
1684
+ cpdef inline void calc_ei(self) noexcept nogil:
1685
+ cdef numpy.int64_t k
1686
+ for k in range(self.parameters.derived.nul):
1687
+ self.sequences.fluxes.ei[k] = self.sequences.fluxes.pe[k] * (smoothutils.smooth_logistic1(self.sequences.states.ic[k], self.parameters.derived.rh1))
1688
+ self.sequences.fluxes.ei[self.parameters.derived.nul] = 0.0
1689
+ cpdef inline void calc_sf(self) noexcept nogil:
1690
+ cdef numpy.int64_t k
1691
+ for k in range(self.parameters.derived.nul):
1692
+ self.sequences.fluxes.sf[k] = (1.0 - self.sequences.aides.fr) * self.sequences.fluxes.tf[k]
1693
+ self.sequences.fluxes.sf[self.parameters.derived.nul] = 0.0
1694
+ cpdef inline void calc_rf(self) noexcept nogil:
1695
+ cdef numpy.int64_t k
1696
+ for k in range(self.parameters.derived.nul):
1697
+ self.sequences.fluxes.rf[k] = self.sequences.aides.fr * self.sequences.fluxes.tf[k]
1698
+ self.sequences.fluxes.rf[self.parameters.derived.nul] = 0.0
1699
+ cpdef inline void calc_am(self) noexcept nogil:
1700
+ cdef numpy.int64_t k
1701
+ for k in range(self.parameters.derived.nul):
1702
+ self.sequences.fluxes.am[k] = self.sequences.fluxes.pm[k] * smoothutils.smooth_logistic1(self.sequences.states.sp[k], self.parameters.derived.rh1)
1703
+ self.sequences.fluxes.am[self.parameters.derived.nul] = 0.0
1704
+ cpdef inline void calc_ps(self) noexcept nogil:
1705
+ self.sequences.fluxes.ps = self.sequences.fluxes.pc
1706
+ cpdef inline void calc_we_w(self) noexcept nogil:
1707
+ if self.parameters.derived.nuge:
1708
+ self.sequences.aides.we = 0.5 + 0.5 * cos( min(max(self.sequences.states.dve, 0.0), self.parameters.control.cwe) * self.parameters.fixed.pi / self.parameters.control.cwe )
1709
+ else:
1710
+ self.sequences.aides.we = nan
1711
+ if self.parameters.derived.nug:
1712
+ self.sequences.aides.w = 0.5 + 0.5 * cos( min(max(self.sequences.states.dv, 0.0), self.parameters.control.cw) * self.parameters.fixed.pi / self.parameters.control.cw )
1713
+ else:
1714
+ self.sequences.aides.w = nan
1715
+ cpdef inline void calc_pve_pv(self) noexcept nogil:
1716
+ cdef double p
1717
+ cdef numpy.int64_t k
1718
+ self.sequences.fluxes.pve, self.sequences.fluxes.pv = 0.0, 0.0
1719
+ for k in range(self.parameters.derived.nul):
1720
+ if self.parameters.control.lt[k] != SEALED:
1721
+ p = self.sequences.fluxes.rf[k] + self.sequences.fluxes.am[k]
1722
+ if self.parameters.control.er[k]:
1723
+ self.sequences.fluxes.pve = self.sequences.fluxes.pve + (p * (1.0 - self.sequences.aides.we) * self.parameters.control.aur[k] / self.parameters.derived.agre)
1724
+ else:
1725
+ self.sequences.fluxes.pv = self.sequences.fluxes.pv + (p * (1.0 - self.sequences.aides.w) * self.parameters.control.aur[k] / self.parameters.derived.agr)
1726
+ cpdef inline void calc_pq(self) noexcept nogil:
1727
+ cdef double pq
1728
+ cdef numpy.int64_t k
1729
+ self.sequences.fluxes.pq = 0.0
1730
+ for k in range(self.parameters.derived.nul):
1731
+ pq = self.parameters.control.aur[k] / self.parameters.derived.alr * (self.sequences.fluxes.rf[k] + self.sequences.fluxes.am[k])
1732
+ if self.parameters.control.lt[k] != SEALED:
1733
+ pq = pq * (self.sequences.aides.we if self.parameters.control.er[k] else self.sequences.aides.w)
1734
+ self.sequences.fluxes.pq = self.sequences.fluxes.pq + (pq)
1735
+ cpdef inline void calc_betae_beta(self) noexcept nogil:
1736
+ cdef double temp
1737
+ if self.parameters.derived.nuge:
1738
+ temp = self.parameters.control.zeta1 * (self.sequences.states.dve - self.parameters.control.zeta2)
1739
+ if temp > 700.0:
1740
+ self.sequences.aides.betae = 0.0
1741
+ else:
1742
+ temp = exp(temp)
1743
+ self.sequences.aides.betae = 0.5 + 0.5 * (1.0 - temp) / (1.0 + temp)
1744
+ else:
1745
+ self.sequences.aides.betae = nan
1746
+ if self.parameters.derived.nug:
1747
+ temp = self.parameters.control.zeta1 * (self.sequences.states.dv - self.parameters.control.zeta2)
1748
+ if temp > 700.0:
1749
+ self.sequences.aides.beta = 0.0
1750
+ else:
1751
+ temp = exp(temp)
1752
+ self.sequences.aides.beta = 0.5 + 0.5 * (1.0 - temp) / (1.0 + temp)
1753
+ else:
1754
+ self.sequences.aides.beta = nan
1755
+ cpdef inline void calc_etve_etv(self) noexcept nogil:
1756
+ cdef double pet
1757
+ cdef numpy.int64_t k
1758
+ self.sequences.fluxes.etve, self.sequences.fluxes.etv = 0.0, 0.0
1759
+ for k in range(self.parameters.derived.nul):
1760
+ if (self.parameters.control.lt[k] != SEALED) and (self.sequences.fluxes.pe[k] > 0.0):
1761
+ pet = (self.sequences.fluxes.pe[k] - self.sequences.fluxes.ei[k]) / self.sequences.fluxes.pe[k] * self.sequences.fluxes.pet[k]
1762
+ if self.parameters.control.er[k]:
1763
+ self.sequences.fluxes.etve = self.sequences.fluxes.etve + (self.parameters.control.aur[k] / self.parameters.derived.agre * pet * self.sequences.aides.betae)
1764
+ else:
1765
+ self.sequences.fluxes.etv = self.sequences.fluxes.etv + (self.parameters.control.aur[k] / self.parameters.derived.agr * pet * self.sequences.aides.beta)
1766
+ cpdef inline void calc_es(self) noexcept nogil:
1767
+ self.sequences.fluxes.es = self.sequences.fluxes.pe[self.parameters.derived.nul] * smoothutils.smooth_logistic1(self.sequences.states.hs, self.parameters.derived.rh1)
1768
+ cpdef inline void calc_fqs(self) noexcept nogil:
1769
+ if self.parameters.control.nu > 1:
1770
+ self.sequences.fluxes.fqs = self.sequences.states.hq / self.parameters.control.cq
1771
+ else:
1772
+ self.sequences.fluxes.fqs = 0.0
1773
+ cpdef inline void calc_fgse(self) noexcept nogil:
1774
+ cdef double hg
1775
+ cdef double hge
1776
+ if self.parameters.derived.nuge:
1777
+ hge = self.sequences.states.hge
1778
+ hg = 1000.0 * self.parameters.control.gl - self.sequences.states.dg
1779
+ self.sequences.fluxes.fgse = fabs(hge - hg) * (hge - hg) / self.parameters.control.cge
1780
+ else:
1781
+ self.sequences.fluxes.fgse = 0.0
1782
+ cpdef inline void calc_fgs(self) noexcept nogil:
1783
+ cdef double conductivity
1784
+ cdef double excess
1785
+ cdef double contactsurface
1786
+ cdef double gradient
1787
+ cdef double hs
1788
+ cdef double hg
1789
+ if self.parameters.derived.nug:
1790
+ hg = smoothutils.smooth_logistic2(self.parameters.derived.cd - self.sequences.states.dg, self.parameters.derived.rh2)
1791
+ hs = smoothutils.smooth_logistic2(self.sequences.states.hs, self.parameters.derived.rh2)
1792
+ gradient = (hg if self.parameters.control.rg else self.parameters.derived.cd - self.sequences.states.dg) - hs
1793
+ if self.parameters.control.rg:
1794
+ contactsurface = fabs(hg - hs)
1795
+ else:
1796
+ contactsurface = smoothutils.smooth_max1(hg, hs, self.parameters.derived.rh2)
1797
+ excess = smoothutils.smooth_max2( -self.sequences.states.dg, self.sequences.states.hs - self.parameters.derived.cd, 0.0, self.parameters.derived.rh2 )
1798
+ conductivity = (1.0 + self.parameters.control.cgf * excess) / self.parameters.control.cg
1799
+ self.sequences.fluxes.fgs = gradient * contactsurface * conductivity
1800
+ else:
1801
+ self.sequences.fluxes.fgs = 0.0
1802
+ cpdef inline void calc_rh(self) noexcept nogil:
1803
+ if self.dischargemodel is None:
1804
+ self.sequences.fluxes.rh = ( self.parameters.derived.asr * (self.sequences.fluxes.fxs + self.sequences.fluxes.ps - self.sequences.fluxes.es) + self.parameters.derived.alr * self.sequences.fluxes.fqs + self.parameters.derived.agr * self.sequences.fluxes.fgs )
1805
+ elif self.dischargemodel_typeid == 2:
1806
+ self.sequences.fluxes.rh = (<masterinterface.MasterInterface>self.dischargemodel).calculate_discharge(self.sequences.states.hs / 1000.0)
1807
+ cpdef inline void calc_dgeq(self) noexcept nogil:
1808
+ cdef double error
1809
+ if self.sequences.states.dv > 0.0:
1810
+ error = self.return_errordv_v1(self.parameters.control.psiae)
1811
+ if error <= 0.0:
1812
+ self.sequences.aides.dgeq = self.pegasusdgeq.find_x( self.parameters.control.psiae, 10000.0, self.parameters.control.psiae, 1000000.0, 0.0, 1e-8, 20 )
1813
+ else:
1814
+ self.sequences.aides.dgeq = self.pegasusdgeq.find_x( 0.0, self.parameters.control.psiae, 0.0, self.parameters.control.psiae, 0.0, 1e-8, 20 )
1815
+ else:
1816
+ self.sequences.aides.dgeq = 0.0
1817
+ cpdef inline void calc_gf(self) noexcept nogil:
1818
+ self.sequences.aides.gf = smoothutils.smooth_logistic1(self.sequences.states.dg, self.parameters.derived.rh1) / self.return_dvh_v2( self.sequences.aides.dgeq - self.sequences.states.dg )
1819
+ cpdef inline void calc_gr(self) noexcept nogil:
1820
+ if self.parameters.derived.nuge:
1821
+ self.sequences.fluxes.gr = smoothutils.smooth_logistic2(self.parameters.control.ac - self.sequences.states.dve, self.parameters.derived.rh2)
1822
+ else:
1823
+ self.sequences.fluxes.gr = 0.0
1824
+ cpdef inline void update_ic(self) noexcept nogil:
1825
+ cdef numpy.int64_t k
1826
+ for k in range(self.parameters.derived.nul):
1827
+ self.sequences.new_states.ic[k] = self.sequences.old_states.ic[k] + (self.sequences.fluxes.pc - self.sequences.fluxes.tf[k] - self.sequences.fluxes.ei[k])
1828
+ self.sequences.new_states.ic[self.parameters.derived.nul] = 0
1829
+ cpdef inline void update_sp(self) noexcept nogil:
1830
+ cdef numpy.int64_t k
1831
+ for k in range(self.parameters.derived.nul):
1832
+ self.sequences.new_states.sp[k] = self.sequences.old_states.sp[k] + (self.sequences.fluxes.sf[k] - self.sequences.fluxes.am[k])
1833
+ self.sequences.new_states.sp[self.parameters.derived.nul] = 0
1834
+ cpdef inline void update_dve(self) noexcept nogil:
1835
+ if self.parameters.derived.nuge:
1836
+ self.sequences.new_states.dve = self.sequences.old_states.dve - (self.sequences.fluxes.pve - self.sequences.fluxes.etve - self.sequences.fluxes.gr)
1837
+ else:
1838
+ self.sequences.new_states.dve = nan
1839
+ cpdef inline void update_dv(self) noexcept nogil:
1840
+ if self.parameters.derived.nug:
1841
+ self.sequences.new_states.dv = self.sequences.old_states.dv - ( self.sequences.fluxes.fxg + self.sequences.fluxes.pv - self.sequences.fluxes.etv - self.sequences.fluxes.fgs + self.sequences.fluxes.fgse * self.parameters.derived.agre / self.parameters.derived.agr )
1842
+ else:
1843
+ self.sequences.new_states.dv = nan
1844
+ cpdef inline void update_hge(self) noexcept nogil:
1845
+ if self.parameters.derived.nuge:
1846
+ self.sequences.new_states.hge = self.sequences.old_states.hge + (self.sequences.fluxes.gr - self.sequences.fluxes.fgse) / self.parameters.control.thetas
1847
+ else:
1848
+ self.sequences.new_states.hge = nan
1849
+ cpdef inline void update_dg(self) noexcept nogil:
1850
+ if self.parameters.derived.nug:
1851
+ self.sequences.new_states.dg = self.sequences.old_states.dg + self.sequences.fluxes.cdg
1852
+ else:
1853
+ self.sequences.new_states.dg = nan
1854
+ cpdef inline void update_hq(self) noexcept nogil:
1855
+ self.sequences.new_states.hq = self.sequences.old_states.hq + (self.sequences.fluxes.pq - self.sequences.fluxes.fqs)
1856
+ cpdef inline void update_hs(self) noexcept nogil:
1857
+ self.sequences.new_states.hs = ( self.sequences.old_states.hs + (self.sequences.fluxes.fxs + self.sequences.fluxes.ps - self.sequences.fluxes.es) + (self.parameters.derived.alr * self.sequences.fluxes.fqs + self.parameters.derived.agr * self.sequences.fluxes.fgs - self.sequences.fluxes.rh) / self.parameters.derived.asr )
1858
+ cpdef double get_temperature(self, numpy.int64_t s) noexcept nogil:
1859
+ return self.sequences.inputs.t
1860
+ cpdef double get_meantemperature(self) noexcept nogil:
1861
+ return self.sequences.inputs.t
1862
+ cpdef double get_precipitation(self, numpy.int64_t s) noexcept nogil:
1863
+ return self.sequences.fluxes.pc
1864
+ cpdef double get_snowcover(self, numpy.int64_t k) noexcept nogil:
1865
+ if self.sequences.states.sp[k] > 0.0:
1866
+ return 1.0
1867
+ return 0.0
1868
+ cpdef inline double return_errordv(self, double dg) noexcept nogil:
1869
+ cdef double d_delta
1870
+ cdef double dg_old
1871
+ cdef double dveq_old
1872
+ dveq_old = self.sequences.aides.dveq
1873
+ dg_old = self.sequences.states.dg
1874
+ self.sequences.states.dg = dg
1875
+ self.calc_dveq_v3()
1876
+ d_delta = self.sequences.aides.dveq - self.sequences.states.dv
1877
+ self.sequences.aides.dveq = dveq_old
1878
+ self.sequences.states.dg = dg_old
1879
+ return d_delta
1880
+ cpdef inline void calc_et(self) noexcept nogil:
1881
+ cdef numpy.int64_t k
1882
+ cdef double ei
1883
+ ei = 0.0
1884
+ for k in range(self.parameters.derived.nul):
1885
+ ei = ei + (self.parameters.control.aur[k] * self.sequences.fluxes.ei[k])
1886
+ self.sequences.fluxes.et = ei + self.parameters.derived.agre * self.sequences.fluxes.etve + self.parameters.derived.agr * self.sequences.fluxes.etv + self.parameters.derived.asr * self.sequences.fluxes.es
1887
+ cpdef inline void calc_r(self) noexcept nogil:
1888
+ self.sequences.fluxes.r = self.parameters.derived.qf * self.sequences.fluxes.rh
1889
+ cpdef inline void pass_r(self) noexcept nogil:
1890
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.r)