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