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,1780 @@
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 Model(masterinterface.MasterInterface):
647
+ def __init__(self):
648
+ super().__init__()
649
+ self.dischargemodel = None
650
+ self.dischargemodel_is_mainmodel = False
651
+ self.petmodel = None
652
+ self.petmodel_is_mainmodel = False
653
+ self.waterlevelmodel = None
654
+ self.waterlevelmodel_is_mainmodel = False
655
+ def get_dischargemodel(self) -> masterinterface.MasterInterface | None:
656
+ return self.dischargemodel
657
+ def set_dischargemodel(self, dischargemodel: masterinterface.MasterInterface | None) -> None:
658
+ self.dischargemodel = dischargemodel
659
+ def get_petmodel(self) -> masterinterface.MasterInterface | None:
660
+ return self.petmodel
661
+ def set_petmodel(self, petmodel: masterinterface.MasterInterface | None) -> None:
662
+ self.petmodel = petmodel
663
+ def get_waterlevelmodel(self) -> masterinterface.MasterInterface | None:
664
+ return self.waterlevelmodel
665
+ def set_waterlevelmodel(self, waterlevelmodel: masterinterface.MasterInterface | None) -> None:
666
+ self.waterlevelmodel = waterlevelmodel
667
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
668
+ self.idx_sim = idx
669
+ self.reset_reuseflags()
670
+ self.load_data(idx)
671
+ self.update_inlets()
672
+ self.solve()
673
+ self.update_outlets()
674
+ self.update_outputs()
675
+ cpdef void reset_reuseflags(self) noexcept nogil:
676
+ if (self.dischargemodel is not None) and not self.dischargemodel_is_mainmodel:
677
+ self.dischargemodel.reset_reuseflags()
678
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
679
+ self.petmodel.reset_reuseflags()
680
+ if (self.waterlevelmodel is not None) and not self.waterlevelmodel_is_mainmodel:
681
+ self.waterlevelmodel.reset_reuseflags()
682
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
683
+ self.idx_sim = idx
684
+ self.sequences.inputs.load_data(idx)
685
+ if (self.dischargemodel is not None) and not self.dischargemodel_is_mainmodel:
686
+ self.dischargemodel.load_data(idx)
687
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
688
+ self.petmodel.load_data(idx)
689
+ if (self.waterlevelmodel is not None) and not self.waterlevelmodel_is_mainmodel:
690
+ self.waterlevelmodel.load_data(idx)
691
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
692
+ self.idx_sim = idx
693
+ self.sequences.inputs.save_data(idx)
694
+ self.sequences.factors.save_data(idx)
695
+ self.sequences.fluxes.save_data(idx)
696
+ self.sequences.states.save_data(idx)
697
+ if (self.dischargemodel is not None) and not self.dischargemodel_is_mainmodel:
698
+ self.dischargemodel.save_data(idx)
699
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
700
+ self.petmodel.save_data(idx)
701
+ if (self.waterlevelmodel is not None) and not self.waterlevelmodel_is_mainmodel:
702
+ self.waterlevelmodel.save_data(idx)
703
+ cpdef void new2old(self) noexcept nogil:
704
+ cdef numpy.int64_t jdx0
705
+ for jdx0 in range(self.sequences.states._ic_length_0):
706
+ self.sequences.old_states.ic[jdx0] = self.sequences.new_states.ic[jdx0]
707
+ for jdx0 in range(self.sequences.states._sp_length_0):
708
+ self.sequences.old_states.sp[jdx0] = self.sequences.new_states.sp[jdx0]
709
+ self.sequences.old_states.dve = self.sequences.new_states.dve
710
+ self.sequences.old_states.dv = self.sequences.new_states.dv
711
+ self.sequences.old_states.hge = self.sequences.new_states.hge
712
+ self.sequences.old_states.dg = self.sequences.new_states.dg
713
+ self.sequences.old_states.hq = self.sequences.new_states.hq
714
+ self.sequences.old_states.hs = self.sequences.new_states.hs
715
+ if (self.dischargemodel is not None) and not self.dischargemodel_is_mainmodel:
716
+ self.dischargemodel.new2old()
717
+ if (self.petmodel is not None) and not self.petmodel_is_mainmodel:
718
+ self.petmodel.new2old()
719
+ if (self.waterlevelmodel is not None) and not self.waterlevelmodel_is_mainmodel:
720
+ self.waterlevelmodel.new2old()
721
+ cpdef inline void update_inlets(self) noexcept nogil:
722
+ self.calc_pe_pet_v1()
723
+ self.calc_fr_v1()
724
+ self.calc_pm_v1()
725
+ cpdef inline void update_outlets(self) noexcept nogil:
726
+ self.calc_et_v1()
727
+ self.calc_r_v1()
728
+ self.pass_r_v1()
729
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
730
+ self.idx_sim = idx
731
+ self.pick_hs_v1()
732
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
733
+ self.idx_sim = idx
734
+ pass
735
+ cpdef inline void update_outputs(self) noexcept nogil:
736
+ self.sequences.factors.update_outputs()
737
+ self.sequences.fluxes.update_outputs()
738
+ self.sequences.states.update_outputs()
739
+ cpdef inline void solve(self) noexcept nogil:
740
+ cdef numpy.int64_t decrease_dt
741
+ self.numvars.use_relerror = not isnan( self.parameters.solver.relerrormax )
742
+ self.numvars.t0, self.numvars.t1 = 0.0, 1.0
743
+ self.numvars.dt_est = 1.0 * self.parameters.solver.reldtmax
744
+ self.numvars.f0_ready = False
745
+ self.reset_sum_fluxes()
746
+ while self.numvars.t0 < self.numvars.t1 - 1e-14:
747
+ self.numvars.last_abserror = inf
748
+ self.numvars.last_relerror = inf
749
+ 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), )
750
+ if not self.numvars.f0_ready:
751
+ self.calculate_single_terms()
752
+ self.numvars.idx_method = 0
753
+ self.numvars.idx_stage = 0
754
+ self.set_point_fluxes()
755
+ self.set_point_states()
756
+ self.set_result_states()
757
+ for self.numvars.idx_method in range(1, self.numconsts.nmb_methods + 1):
758
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method):
759
+ self.get_point_states()
760
+ self.calculate_single_terms()
761
+ self.set_point_fluxes()
762
+ for self.numvars.idx_stage in range(1, self.numvars.idx_method + 1):
763
+ self.integrate_fluxes()
764
+ self.calculate_full_terms()
765
+ self.set_point_states()
766
+ self.set_result_fluxes()
767
+ self.set_result_states()
768
+ self.calculate_error()
769
+ self.extrapolate_error()
770
+ if self.numvars.idx_method == 1:
771
+ continue
772
+ if (self.numvars.abserror <= self.parameters.solver.abserrormax) or ( self.numvars.relerror <= self.parameters.solver.relerrormax ):
773
+ self.numvars.dt_est = self.numconsts.dt_increase * self.numvars.dt
774
+ self.numvars.f0_ready = False
775
+ self.addup_fluxes()
776
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
777
+ self.new2old()
778
+ break
779
+ decrease_dt = self.numvars.dt > self.parameters.solver.reldtmin
780
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_abserror > self.parameters.solver.abserrormax )
781
+ if self.numvars.use_relerror:
782
+ decrease_dt = decrease_dt and ( self.numvars.extrapolated_relerror > self.parameters.solver.relerrormax )
783
+ if decrease_dt:
784
+ self.numvars.f0_ready = True
785
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
786
+ break
787
+ self.numvars.last_abserror = self.numvars.abserror
788
+ self.numvars.last_relerror = self.numvars.relerror
789
+ self.numvars.f0_ready = True
790
+ else:
791
+ if self.numvars.dt <= self.parameters.solver.reldtmin:
792
+ self.numvars.f0_ready = False
793
+ self.addup_fluxes()
794
+ self.numvars.t0 = self.numvars.t0 + self.numvars.dt
795
+ self.new2old()
796
+ else:
797
+ self.numvars.f0_ready = True
798
+ self.numvars.dt_est = self.numvars.dt / self.numconsts.dt_decrease
799
+ self.get_sum_fluxes()
800
+ cpdef inline void calculate_single_terms(self) noexcept nogil:
801
+ self.numvars.nmb_calls = self.numvars.nmb_calls + 1
802
+ self.calc_fxs_v1()
803
+ self.calc_fxg_v1()
804
+ self.calc_pc_v1()
805
+ self.calc_tf_v1()
806
+ self.calc_ei_v1()
807
+ self.calc_rf_v1()
808
+ self.calc_sf_v1()
809
+ self.calc_am_v1()
810
+ self.calc_ps_v1()
811
+ self.calc_we_w_v1()
812
+ self.calc_pve_pv_v1()
813
+ self.calc_pq_v1()
814
+ self.calc_betae_beta_v1()
815
+ self.calc_etve_etv_v1()
816
+ self.calc_es_v1()
817
+ self.calc_fqs_v1()
818
+ self.calc_gr_v1()
819
+ self.calc_fgse_v1()
820
+ self.calc_fgs_v1()
821
+ self.calc_rh_v1()
822
+ self.calc_dveq_v1()
823
+ self.calc_cdg_v1()
824
+ cpdef inline void calculate_full_terms(self) noexcept nogil:
825
+ self.update_ic_v1()
826
+ self.update_sp_v1()
827
+ self.update_dve_v1()
828
+ self.update_dv_v1()
829
+ self.update_hge_v1()
830
+ self.update_dg_v1()
831
+ self.update_hq_v1()
832
+ self.update_hs_v1()
833
+ cpdef inline void get_point_states(self) noexcept nogil:
834
+ cdef numpy.int64_t idx0
835
+ for idx0 in range(self.sequences.states._ic_length):
836
+ self.sequences.states.ic[idx0] = self.sequences.states._ic_points[self.numvars.idx_stage][idx0]
837
+ for idx0 in range(self.sequences.states._sp_length):
838
+ self.sequences.states.sp[idx0] = self.sequences.states._sp_points[self.numvars.idx_stage][idx0]
839
+ self.sequences.states.dve = self.sequences.states._dve_points[self.numvars.idx_stage]
840
+ self.sequences.states.dv = self.sequences.states._dv_points[self.numvars.idx_stage]
841
+ self.sequences.states.hge = self.sequences.states._hge_points[self.numvars.idx_stage]
842
+ self.sequences.states.dg = self.sequences.states._dg_points[self.numvars.idx_stage]
843
+ self.sequences.states.hq = self.sequences.states._hq_points[self.numvars.idx_stage]
844
+ self.sequences.states.hs = self.sequences.states._hs_points[self.numvars.idx_stage]
845
+ cpdef inline void set_point_states(self) noexcept nogil:
846
+ cdef numpy.int64_t idx0
847
+ for idx0 in range(self.sequences.states._ic_length):
848
+ self.sequences.states._ic_points[self.numvars.idx_stage][idx0] = self.sequences.states.ic[idx0]
849
+ for idx0 in range(self.sequences.states._sp_length):
850
+ self.sequences.states._sp_points[self.numvars.idx_stage][idx0] = self.sequences.states.sp[idx0]
851
+ self.sequences.states._dve_points[self.numvars.idx_stage] = self.sequences.states.dve
852
+ self.sequences.states._dv_points[self.numvars.idx_stage] = self.sequences.states.dv
853
+ self.sequences.states._hge_points[self.numvars.idx_stage] = self.sequences.states.hge
854
+ self.sequences.states._dg_points[self.numvars.idx_stage] = self.sequences.states.dg
855
+ self.sequences.states._hq_points[self.numvars.idx_stage] = self.sequences.states.hq
856
+ self.sequences.states._hs_points[self.numvars.idx_stage] = self.sequences.states.hs
857
+ cpdef inline void set_result_states(self) noexcept nogil:
858
+ cdef numpy.int64_t idx0
859
+ for idx0 in range(self.sequences.states._ic_length):
860
+ self.sequences.states._ic_results[self.numvars.idx_method][idx0] = self.sequences.states.ic[idx0]
861
+ for idx0 in range(self.sequences.states._sp_length):
862
+ self.sequences.states._sp_results[self.numvars.idx_method][idx0] = self.sequences.states.sp[idx0]
863
+ self.sequences.states._dve_results[self.numvars.idx_method] = self.sequences.states.dve
864
+ self.sequences.states._dv_results[self.numvars.idx_method] = self.sequences.states.dv
865
+ self.sequences.states._hge_results[self.numvars.idx_method] = self.sequences.states.hge
866
+ self.sequences.states._dg_results[self.numvars.idx_method] = self.sequences.states.dg
867
+ self.sequences.states._hq_results[self.numvars.idx_method] = self.sequences.states.hq
868
+ self.sequences.states._hs_results[self.numvars.idx_method] = self.sequences.states.hs
869
+ cpdef inline void get_sum_fluxes(self) noexcept nogil:
870
+ cdef numpy.int64_t idx0
871
+ self.sequences.fluxes.pc = self.sequences.fluxes._pc_sum
872
+ for idx0 in range(self.sequences.fluxes._tf_length):
873
+ self.sequences.fluxes.tf[idx0] = self.sequences.fluxes._tf_sum[idx0]
874
+ for idx0 in range(self.sequences.fluxes._ei_length):
875
+ self.sequences.fluxes.ei[idx0] = self.sequences.fluxes._ei_sum[idx0]
876
+ for idx0 in range(self.sequences.fluxes._rf_length):
877
+ self.sequences.fluxes.rf[idx0] = self.sequences.fluxes._rf_sum[idx0]
878
+ for idx0 in range(self.sequences.fluxes._sf_length):
879
+ self.sequences.fluxes.sf[idx0] = self.sequences.fluxes._sf_sum[idx0]
880
+ for idx0 in range(self.sequences.fluxes._am_length):
881
+ self.sequences.fluxes.am[idx0] = self.sequences.fluxes._am_sum[idx0]
882
+ self.sequences.fluxes.ps = self.sequences.fluxes._ps_sum
883
+ self.sequences.fluxes.pve = self.sequences.fluxes._pve_sum
884
+ self.sequences.fluxes.pv = self.sequences.fluxes._pv_sum
885
+ self.sequences.fluxes.pq = self.sequences.fluxes._pq_sum
886
+ self.sequences.fluxes.etve = self.sequences.fluxes._etve_sum
887
+ self.sequences.fluxes.etv = self.sequences.fluxes._etv_sum
888
+ self.sequences.fluxes.es = self.sequences.fluxes._es_sum
889
+ self.sequences.fluxes.gr = self.sequences.fluxes._gr_sum
890
+ self.sequences.fluxes.fxs = self.sequences.fluxes._fxs_sum
891
+ self.sequences.fluxes.fxg = self.sequences.fluxes._fxg_sum
892
+ self.sequences.fluxes.cdg = self.sequences.fluxes._cdg_sum
893
+ self.sequences.fluxes.fgse = self.sequences.fluxes._fgse_sum
894
+ self.sequences.fluxes.fgs = self.sequences.fluxes._fgs_sum
895
+ self.sequences.fluxes.fqs = self.sequences.fluxes._fqs_sum
896
+ self.sequences.fluxes.rh = self.sequences.fluxes._rh_sum
897
+ cpdef inline void set_point_fluxes(self) noexcept nogil:
898
+ cdef numpy.int64_t idx0
899
+ self.sequences.fluxes._pc_points[self.numvars.idx_stage] = self.sequences.fluxes.pc
900
+ for idx0 in range(self.sequences.fluxes._tf_length):
901
+ self.sequences.fluxes._tf_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.tf[idx0]
902
+ for idx0 in range(self.sequences.fluxes._ei_length):
903
+ self.sequences.fluxes._ei_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.ei[idx0]
904
+ for idx0 in range(self.sequences.fluxes._rf_length):
905
+ self.sequences.fluxes._rf_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.rf[idx0]
906
+ for idx0 in range(self.sequences.fluxes._sf_length):
907
+ self.sequences.fluxes._sf_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.sf[idx0]
908
+ for idx0 in range(self.sequences.fluxes._am_length):
909
+ self.sequences.fluxes._am_points[self.numvars.idx_stage][idx0] = self.sequences.fluxes.am[idx0]
910
+ self.sequences.fluxes._ps_points[self.numvars.idx_stage] = self.sequences.fluxes.ps
911
+ self.sequences.fluxes._pve_points[self.numvars.idx_stage] = self.sequences.fluxes.pve
912
+ self.sequences.fluxes._pv_points[self.numvars.idx_stage] = self.sequences.fluxes.pv
913
+ self.sequences.fluxes._pq_points[self.numvars.idx_stage] = self.sequences.fluxes.pq
914
+ self.sequences.fluxes._etve_points[self.numvars.idx_stage] = self.sequences.fluxes.etve
915
+ self.sequences.fluxes._etv_points[self.numvars.idx_stage] = self.sequences.fluxes.etv
916
+ self.sequences.fluxes._es_points[self.numvars.idx_stage] = self.sequences.fluxes.es
917
+ self.sequences.fluxes._gr_points[self.numvars.idx_stage] = self.sequences.fluxes.gr
918
+ self.sequences.fluxes._fxs_points[self.numvars.idx_stage] = self.sequences.fluxes.fxs
919
+ self.sequences.fluxes._fxg_points[self.numvars.idx_stage] = self.sequences.fluxes.fxg
920
+ self.sequences.fluxes._cdg_points[self.numvars.idx_stage] = self.sequences.fluxes.cdg
921
+ self.sequences.fluxes._fgse_points[self.numvars.idx_stage] = self.sequences.fluxes.fgse
922
+ self.sequences.fluxes._fgs_points[self.numvars.idx_stage] = self.sequences.fluxes.fgs
923
+ self.sequences.fluxes._fqs_points[self.numvars.idx_stage] = self.sequences.fluxes.fqs
924
+ self.sequences.fluxes._rh_points[self.numvars.idx_stage] = self.sequences.fluxes.rh
925
+ cpdef inline void set_result_fluxes(self) noexcept nogil:
926
+ cdef numpy.int64_t idx0
927
+ self.sequences.fluxes._pc_results[self.numvars.idx_method] = self.sequences.fluxes.pc
928
+ for idx0 in range(self.sequences.fluxes._tf_length):
929
+ self.sequences.fluxes._tf_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.tf[idx0]
930
+ for idx0 in range(self.sequences.fluxes._ei_length):
931
+ self.sequences.fluxes._ei_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.ei[idx0]
932
+ for idx0 in range(self.sequences.fluxes._rf_length):
933
+ self.sequences.fluxes._rf_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.rf[idx0]
934
+ for idx0 in range(self.sequences.fluxes._sf_length):
935
+ self.sequences.fluxes._sf_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.sf[idx0]
936
+ for idx0 in range(self.sequences.fluxes._am_length):
937
+ self.sequences.fluxes._am_results[self.numvars.idx_method][idx0] = self.sequences.fluxes.am[idx0]
938
+ self.sequences.fluxes._ps_results[self.numvars.idx_method] = self.sequences.fluxes.ps
939
+ self.sequences.fluxes._pve_results[self.numvars.idx_method] = self.sequences.fluxes.pve
940
+ self.sequences.fluxes._pv_results[self.numvars.idx_method] = self.sequences.fluxes.pv
941
+ self.sequences.fluxes._pq_results[self.numvars.idx_method] = self.sequences.fluxes.pq
942
+ self.sequences.fluxes._etve_results[self.numvars.idx_method] = self.sequences.fluxes.etve
943
+ self.sequences.fluxes._etv_results[self.numvars.idx_method] = self.sequences.fluxes.etv
944
+ self.sequences.fluxes._es_results[self.numvars.idx_method] = self.sequences.fluxes.es
945
+ self.sequences.fluxes._gr_results[self.numvars.idx_method] = self.sequences.fluxes.gr
946
+ self.sequences.fluxes._fxs_results[self.numvars.idx_method] = self.sequences.fluxes.fxs
947
+ self.sequences.fluxes._fxg_results[self.numvars.idx_method] = self.sequences.fluxes.fxg
948
+ self.sequences.fluxes._cdg_results[self.numvars.idx_method] = self.sequences.fluxes.cdg
949
+ self.sequences.fluxes._fgse_results[self.numvars.idx_method] = self.sequences.fluxes.fgse
950
+ self.sequences.fluxes._fgs_results[self.numvars.idx_method] = self.sequences.fluxes.fgs
951
+ self.sequences.fluxes._fqs_results[self.numvars.idx_method] = self.sequences.fluxes.fqs
952
+ self.sequences.fluxes._rh_results[self.numvars.idx_method] = self.sequences.fluxes.rh
953
+ cpdef inline void integrate_fluxes(self) noexcept nogil:
954
+ cdef numpy.int64_t jdx, idx0
955
+ self.sequences.fluxes.pc = 0.
956
+ for jdx in range(self.numvars.idx_method):
957
+ 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]
958
+ for idx0 in range(self.sequences.fluxes._tf_length):
959
+ self.sequences.fluxes.tf[idx0] = 0.
960
+ for jdx in range(self.numvars.idx_method):
961
+ 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]
962
+ for idx0 in range(self.sequences.fluxes._ei_length):
963
+ self.sequences.fluxes.ei[idx0] = 0.
964
+ for jdx in range(self.numvars.idx_method):
965
+ 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]
966
+ for idx0 in range(self.sequences.fluxes._rf_length):
967
+ self.sequences.fluxes.rf[idx0] = 0.
968
+ for jdx in range(self.numvars.idx_method):
969
+ 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]
970
+ for idx0 in range(self.sequences.fluxes._sf_length):
971
+ self.sequences.fluxes.sf[idx0] = 0.
972
+ for jdx in range(self.numvars.idx_method):
973
+ 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]
974
+ for idx0 in range(self.sequences.fluxes._am_length):
975
+ self.sequences.fluxes.am[idx0] = 0.
976
+ for jdx in range(self.numvars.idx_method):
977
+ 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]
978
+ self.sequences.fluxes.ps = 0.
979
+ for jdx in range(self.numvars.idx_method):
980
+ 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]
981
+ self.sequences.fluxes.pve = 0.
982
+ for jdx in range(self.numvars.idx_method):
983
+ 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]
984
+ self.sequences.fluxes.pv = 0.
985
+ for jdx in range(self.numvars.idx_method):
986
+ 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]
987
+ self.sequences.fluxes.pq = 0.
988
+ for jdx in range(self.numvars.idx_method):
989
+ 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]
990
+ self.sequences.fluxes.etve = 0.
991
+ for jdx in range(self.numvars.idx_method):
992
+ 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]
993
+ self.sequences.fluxes.etv = 0.
994
+ for jdx in range(self.numvars.idx_method):
995
+ 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]
996
+ self.sequences.fluxes.es = 0.
997
+ for jdx in range(self.numvars.idx_method):
998
+ 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]
999
+ self.sequences.fluxes.gr = 0.
1000
+ for jdx in range(self.numvars.idx_method):
1001
+ 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]
1002
+ self.sequences.fluxes.fxs = 0.
1003
+ for jdx in range(self.numvars.idx_method):
1004
+ 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]
1005
+ self.sequences.fluxes.fxg = 0.
1006
+ for jdx in range(self.numvars.idx_method):
1007
+ 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]
1008
+ self.sequences.fluxes.cdg = 0.
1009
+ for jdx in range(self.numvars.idx_method):
1010
+ 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]
1011
+ self.sequences.fluxes.fgse = 0.
1012
+ for jdx in range(self.numvars.idx_method):
1013
+ 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]
1014
+ self.sequences.fluxes.fgs = 0.
1015
+ for jdx in range(self.numvars.idx_method):
1016
+ 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]
1017
+ self.sequences.fluxes.fqs = 0.
1018
+ for jdx in range(self.numvars.idx_method):
1019
+ 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]
1020
+ self.sequences.fluxes.rh = 0.
1021
+ for jdx in range(self.numvars.idx_method):
1022
+ 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]
1023
+ cpdef inline void reset_sum_fluxes(self) noexcept nogil:
1024
+ cdef numpy.int64_t idx0
1025
+ self.sequences.fluxes._pc_sum = 0.
1026
+ for idx0 in range(self.sequences.fluxes._tf_length):
1027
+ self.sequences.fluxes._tf_sum[idx0] = 0.
1028
+ for idx0 in range(self.sequences.fluxes._ei_length):
1029
+ self.sequences.fluxes._ei_sum[idx0] = 0.
1030
+ for idx0 in range(self.sequences.fluxes._rf_length):
1031
+ self.sequences.fluxes._rf_sum[idx0] = 0.
1032
+ for idx0 in range(self.sequences.fluxes._sf_length):
1033
+ self.sequences.fluxes._sf_sum[idx0] = 0.
1034
+ for idx0 in range(self.sequences.fluxes._am_length):
1035
+ self.sequences.fluxes._am_sum[idx0] = 0.
1036
+ self.sequences.fluxes._ps_sum = 0.
1037
+ self.sequences.fluxes._pve_sum = 0.
1038
+ self.sequences.fluxes._pv_sum = 0.
1039
+ self.sequences.fluxes._pq_sum = 0.
1040
+ self.sequences.fluxes._etve_sum = 0.
1041
+ self.sequences.fluxes._etv_sum = 0.
1042
+ self.sequences.fluxes._es_sum = 0.
1043
+ self.sequences.fluxes._gr_sum = 0.
1044
+ self.sequences.fluxes._fxs_sum = 0.
1045
+ self.sequences.fluxes._fxg_sum = 0.
1046
+ self.sequences.fluxes._cdg_sum = 0.
1047
+ self.sequences.fluxes._fgse_sum = 0.
1048
+ self.sequences.fluxes._fgs_sum = 0.
1049
+ self.sequences.fluxes._fqs_sum = 0.
1050
+ self.sequences.fluxes._rh_sum = 0.
1051
+ cpdef inline void addup_fluxes(self) noexcept nogil:
1052
+ cdef numpy.int64_t idx0
1053
+ self.sequences.fluxes._pc_sum = self.sequences.fluxes._pc_sum + self.sequences.fluxes.pc
1054
+ for idx0 in range(self.sequences.fluxes._tf_length):
1055
+ self.sequences.fluxes._tf_sum[idx0] = self.sequences.fluxes._tf_sum[idx0] + self.sequences.fluxes.tf[idx0]
1056
+ for idx0 in range(self.sequences.fluxes._ei_length):
1057
+ self.sequences.fluxes._ei_sum[idx0] = self.sequences.fluxes._ei_sum[idx0] + self.sequences.fluxes.ei[idx0]
1058
+ for idx0 in range(self.sequences.fluxes._rf_length):
1059
+ self.sequences.fluxes._rf_sum[idx0] = self.sequences.fluxes._rf_sum[idx0] + self.sequences.fluxes.rf[idx0]
1060
+ for idx0 in range(self.sequences.fluxes._sf_length):
1061
+ self.sequences.fluxes._sf_sum[idx0] = self.sequences.fluxes._sf_sum[idx0] + self.sequences.fluxes.sf[idx0]
1062
+ for idx0 in range(self.sequences.fluxes._am_length):
1063
+ self.sequences.fluxes._am_sum[idx0] = self.sequences.fluxes._am_sum[idx0] + self.sequences.fluxes.am[idx0]
1064
+ self.sequences.fluxes._ps_sum = self.sequences.fluxes._ps_sum + self.sequences.fluxes.ps
1065
+ self.sequences.fluxes._pve_sum = self.sequences.fluxes._pve_sum + self.sequences.fluxes.pve
1066
+ self.sequences.fluxes._pv_sum = self.sequences.fluxes._pv_sum + self.sequences.fluxes.pv
1067
+ self.sequences.fluxes._pq_sum = self.sequences.fluxes._pq_sum + self.sequences.fluxes.pq
1068
+ self.sequences.fluxes._etve_sum = self.sequences.fluxes._etve_sum + self.sequences.fluxes.etve
1069
+ self.sequences.fluxes._etv_sum = self.sequences.fluxes._etv_sum + self.sequences.fluxes.etv
1070
+ self.sequences.fluxes._es_sum = self.sequences.fluxes._es_sum + self.sequences.fluxes.es
1071
+ self.sequences.fluxes._gr_sum = self.sequences.fluxes._gr_sum + self.sequences.fluxes.gr
1072
+ self.sequences.fluxes._fxs_sum = self.sequences.fluxes._fxs_sum + self.sequences.fluxes.fxs
1073
+ self.sequences.fluxes._fxg_sum = self.sequences.fluxes._fxg_sum + self.sequences.fluxes.fxg
1074
+ self.sequences.fluxes._cdg_sum = self.sequences.fluxes._cdg_sum + self.sequences.fluxes.cdg
1075
+ self.sequences.fluxes._fgse_sum = self.sequences.fluxes._fgse_sum + self.sequences.fluxes.fgse
1076
+ self.sequences.fluxes._fgs_sum = self.sequences.fluxes._fgs_sum + self.sequences.fluxes.fgs
1077
+ self.sequences.fluxes._fqs_sum = self.sequences.fluxes._fqs_sum + self.sequences.fluxes.fqs
1078
+ self.sequences.fluxes._rh_sum = self.sequences.fluxes._rh_sum + self.sequences.fluxes.rh
1079
+ cpdef inline void calculate_error(self) noexcept nogil:
1080
+ cdef numpy.int64_t idx0
1081
+ cdef double abserror
1082
+ self.numvars.abserror = 0.
1083
+ if self.numvars.use_relerror:
1084
+ self.numvars.relerror = 0.
1085
+ else:
1086
+ self.numvars.relerror = inf
1087
+ abserror = fabs(self.sequences.fluxes._pc_results[self.numvars.idx_method]-self.sequences.fluxes._pc_results[self.numvars.idx_method-1])
1088
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1089
+ if self.numvars.use_relerror:
1090
+ if self.sequences.fluxes._pc_results[self.numvars.idx_method] == 0.:
1091
+ self.numvars.relerror = inf
1092
+ else:
1093
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._pc_results[self.numvars.idx_method]))
1094
+ for idx0 in range(self.sequences.fluxes._tf_length):
1095
+ abserror = fabs(self.sequences.fluxes._tf_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._tf_results[self.numvars.idx_method-1, idx0])
1096
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1097
+ if self.numvars.use_relerror:
1098
+ if self.sequences.fluxes._tf_results[self.numvars.idx_method, idx0] == 0.:
1099
+ self.numvars.relerror = inf
1100
+ else:
1101
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._tf_results[self.numvars.idx_method, idx0]))
1102
+ for idx0 in range(self.sequences.fluxes._ei_length):
1103
+ abserror = fabs(self.sequences.fluxes._ei_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._ei_results[self.numvars.idx_method-1, idx0])
1104
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1105
+ if self.numvars.use_relerror:
1106
+ if self.sequences.fluxes._ei_results[self.numvars.idx_method, idx0] == 0.:
1107
+ self.numvars.relerror = inf
1108
+ else:
1109
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._ei_results[self.numvars.idx_method, idx0]))
1110
+ for idx0 in range(self.sequences.fluxes._rf_length):
1111
+ abserror = fabs(self.sequences.fluxes._rf_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._rf_results[self.numvars.idx_method-1, idx0])
1112
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1113
+ if self.numvars.use_relerror:
1114
+ if self.sequences.fluxes._rf_results[self.numvars.idx_method, idx0] == 0.:
1115
+ self.numvars.relerror = inf
1116
+ else:
1117
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._rf_results[self.numvars.idx_method, idx0]))
1118
+ for idx0 in range(self.sequences.fluxes._sf_length):
1119
+ abserror = fabs(self.sequences.fluxes._sf_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._sf_results[self.numvars.idx_method-1, idx0])
1120
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1121
+ if self.numvars.use_relerror:
1122
+ if self.sequences.fluxes._sf_results[self.numvars.idx_method, idx0] == 0.:
1123
+ self.numvars.relerror = inf
1124
+ else:
1125
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._sf_results[self.numvars.idx_method, idx0]))
1126
+ for idx0 in range(self.sequences.fluxes._am_length):
1127
+ abserror = fabs(self.sequences.fluxes._am_results[self.numvars.idx_method, idx0]-self.sequences.fluxes._am_results[self.numvars.idx_method-1, idx0])
1128
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1129
+ if self.numvars.use_relerror:
1130
+ if self.sequences.fluxes._am_results[self.numvars.idx_method, idx0] == 0.:
1131
+ self.numvars.relerror = inf
1132
+ else:
1133
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._am_results[self.numvars.idx_method, idx0]))
1134
+ abserror = fabs(self.sequences.fluxes._ps_results[self.numvars.idx_method]-self.sequences.fluxes._ps_results[self.numvars.idx_method-1])
1135
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1136
+ if self.numvars.use_relerror:
1137
+ if self.sequences.fluxes._ps_results[self.numvars.idx_method] == 0.:
1138
+ self.numvars.relerror = inf
1139
+ else:
1140
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._ps_results[self.numvars.idx_method]))
1141
+ abserror = fabs(self.sequences.fluxes._pve_results[self.numvars.idx_method]-self.sequences.fluxes._pve_results[self.numvars.idx_method-1])
1142
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1143
+ if self.numvars.use_relerror:
1144
+ if self.sequences.fluxes._pve_results[self.numvars.idx_method] == 0.:
1145
+ self.numvars.relerror = inf
1146
+ else:
1147
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._pve_results[self.numvars.idx_method]))
1148
+ abserror = fabs(self.sequences.fluxes._pv_results[self.numvars.idx_method]-self.sequences.fluxes._pv_results[self.numvars.idx_method-1])
1149
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1150
+ if self.numvars.use_relerror:
1151
+ if self.sequences.fluxes._pv_results[self.numvars.idx_method] == 0.:
1152
+ self.numvars.relerror = inf
1153
+ else:
1154
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._pv_results[self.numvars.idx_method]))
1155
+ abserror = fabs(self.sequences.fluxes._pq_results[self.numvars.idx_method]-self.sequences.fluxes._pq_results[self.numvars.idx_method-1])
1156
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1157
+ if self.numvars.use_relerror:
1158
+ if self.sequences.fluxes._pq_results[self.numvars.idx_method] == 0.:
1159
+ self.numvars.relerror = inf
1160
+ else:
1161
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._pq_results[self.numvars.idx_method]))
1162
+ abserror = fabs(self.sequences.fluxes._etve_results[self.numvars.idx_method]-self.sequences.fluxes._etve_results[self.numvars.idx_method-1])
1163
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1164
+ if self.numvars.use_relerror:
1165
+ if self.sequences.fluxes._etve_results[self.numvars.idx_method] == 0.:
1166
+ self.numvars.relerror = inf
1167
+ else:
1168
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._etve_results[self.numvars.idx_method]))
1169
+ abserror = fabs(self.sequences.fluxes._etv_results[self.numvars.idx_method]-self.sequences.fluxes._etv_results[self.numvars.idx_method-1])
1170
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1171
+ if self.numvars.use_relerror:
1172
+ if self.sequences.fluxes._etv_results[self.numvars.idx_method] == 0.:
1173
+ self.numvars.relerror = inf
1174
+ else:
1175
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._etv_results[self.numvars.idx_method]))
1176
+ abserror = fabs(self.sequences.fluxes._es_results[self.numvars.idx_method]-self.sequences.fluxes._es_results[self.numvars.idx_method-1])
1177
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1178
+ if self.numvars.use_relerror:
1179
+ if self.sequences.fluxes._es_results[self.numvars.idx_method] == 0.:
1180
+ self.numvars.relerror = inf
1181
+ else:
1182
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._es_results[self.numvars.idx_method]))
1183
+ abserror = fabs(self.sequences.fluxes._gr_results[self.numvars.idx_method]-self.sequences.fluxes._gr_results[self.numvars.idx_method-1])
1184
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1185
+ if self.numvars.use_relerror:
1186
+ if self.sequences.fluxes._gr_results[self.numvars.idx_method] == 0.:
1187
+ self.numvars.relerror = inf
1188
+ else:
1189
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._gr_results[self.numvars.idx_method]))
1190
+ abserror = fabs(self.sequences.fluxes._fxs_results[self.numvars.idx_method]-self.sequences.fluxes._fxs_results[self.numvars.idx_method-1])
1191
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1192
+ if self.numvars.use_relerror:
1193
+ if self.sequences.fluxes._fxs_results[self.numvars.idx_method] == 0.:
1194
+ self.numvars.relerror = inf
1195
+ else:
1196
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fxs_results[self.numvars.idx_method]))
1197
+ abserror = fabs(self.sequences.fluxes._fxg_results[self.numvars.idx_method]-self.sequences.fluxes._fxg_results[self.numvars.idx_method-1])
1198
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1199
+ if self.numvars.use_relerror:
1200
+ if self.sequences.fluxes._fxg_results[self.numvars.idx_method] == 0.:
1201
+ self.numvars.relerror = inf
1202
+ else:
1203
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fxg_results[self.numvars.idx_method]))
1204
+ abserror = fabs(self.sequences.fluxes._cdg_results[self.numvars.idx_method]-self.sequences.fluxes._cdg_results[self.numvars.idx_method-1])
1205
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1206
+ if self.numvars.use_relerror:
1207
+ if self.sequences.fluxes._cdg_results[self.numvars.idx_method] == 0.:
1208
+ self.numvars.relerror = inf
1209
+ else:
1210
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._cdg_results[self.numvars.idx_method]))
1211
+ abserror = fabs(self.sequences.fluxes._fgse_results[self.numvars.idx_method]-self.sequences.fluxes._fgse_results[self.numvars.idx_method-1])
1212
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1213
+ if self.numvars.use_relerror:
1214
+ if self.sequences.fluxes._fgse_results[self.numvars.idx_method] == 0.:
1215
+ self.numvars.relerror = inf
1216
+ else:
1217
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fgse_results[self.numvars.idx_method]))
1218
+ abserror = fabs(self.sequences.fluxes._fgs_results[self.numvars.idx_method]-self.sequences.fluxes._fgs_results[self.numvars.idx_method-1])
1219
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1220
+ if self.numvars.use_relerror:
1221
+ if self.sequences.fluxes._fgs_results[self.numvars.idx_method] == 0.:
1222
+ self.numvars.relerror = inf
1223
+ else:
1224
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fgs_results[self.numvars.idx_method]))
1225
+ abserror = fabs(self.sequences.fluxes._fqs_results[self.numvars.idx_method]-self.sequences.fluxes._fqs_results[self.numvars.idx_method-1])
1226
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1227
+ if self.numvars.use_relerror:
1228
+ if self.sequences.fluxes._fqs_results[self.numvars.idx_method] == 0.:
1229
+ self.numvars.relerror = inf
1230
+ else:
1231
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._fqs_results[self.numvars.idx_method]))
1232
+ abserror = fabs(self.sequences.fluxes._rh_results[self.numvars.idx_method]-self.sequences.fluxes._rh_results[self.numvars.idx_method-1])
1233
+ self.numvars.abserror = max(self.numvars.abserror, abserror)
1234
+ if self.numvars.use_relerror:
1235
+ if self.sequences.fluxes._rh_results[self.numvars.idx_method] == 0.:
1236
+ self.numvars.relerror = inf
1237
+ else:
1238
+ self.numvars.relerror = max(self.numvars.relerror, fabs(abserror/self.sequences.fluxes._rh_results[self.numvars.idx_method]))
1239
+ cpdef inline void extrapolate_error(self) noexcept nogil:
1240
+ if self.numvars.abserror <= 0.0:
1241
+ self.numvars.extrapolated_abserror = 0.0
1242
+ self.numvars.extrapolated_relerror = 0.0
1243
+ else:
1244
+ if self.numvars.idx_method > 2:
1245
+ 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) )
1246
+ else:
1247
+ self.numvars.extrapolated_abserror = -999.9
1248
+ if self.numvars.use_relerror:
1249
+ if self.numvars.idx_method > 2:
1250
+ if isinf(self.numvars.relerror):
1251
+ self.numvars.extrapolated_relerror = inf
1252
+ else:
1253
+ 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) )
1254
+ else:
1255
+ self.numvars.extrapolated_relerror = -999.9
1256
+ else:
1257
+ self.numvars.extrapolated_relerror = inf
1258
+ cpdef inline void pick_hs_v1(self) noexcept nogil:
1259
+ cdef double hs
1260
+ cdef double waterlevel
1261
+ if self.waterlevelmodel is None:
1262
+ self.sequences.factors.dhs = 0.0
1263
+ elif self.waterlevelmodel_typeid == 1:
1264
+ waterlevel = (<masterinterface.MasterInterface>self.waterlevelmodel).get_waterlevel()
1265
+ hs = 1000.0 * (waterlevel - self.parameters.control.bl)
1266
+ self.sequences.factors.dhs = hs - self.sequences.new_states.hs
1267
+ self.sequences.old_states.hs = self.sequences.new_states.hs = hs
1268
+ cpdef inline void calc_pe_pet_v1(self) noexcept nogil:
1269
+ if self.petmodel_typeid == 1:
1270
+ self.calc_pe_pet_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
1271
+ elif self.petmodel_typeid == 2:
1272
+ self.calc_pe_pet_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
1273
+ cpdef inline void calc_fr_v1(self) noexcept nogil:
1274
+ if self.sequences.inputs.t >= (self.parameters.control.tt + self.parameters.control.ti / 2.0):
1275
+ self.sequences.aides.fr = 1.0
1276
+ elif self.sequences.inputs.t <= (self.parameters.control.tt - self.parameters.control.ti / 2.0):
1277
+ self.sequences.aides.fr = 0.0
1278
+ else:
1279
+ self.sequences.aides.fr = (self.sequences.inputs.t - (self.parameters.control.tt - self.parameters.control.ti / 2.0)) / self.parameters.control.ti
1280
+ cpdef inline void calc_pm_v1(self) noexcept nogil:
1281
+ cdef numpy.int64_t k
1282
+ for k in range(self.parameters.derived.nul):
1283
+ 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 )
1284
+ self.sequences.fluxes.pm[self.parameters.derived.nul] = 0.0
1285
+ cpdef inline void calc_fxs_v1(self) noexcept nogil:
1286
+ if self.sequences.inputs.fxs == 0.0:
1287
+ self.sequences.fluxes.fxs = 0.0
1288
+ elif self.parameters.control.nu == 1:
1289
+ self.sequences.fluxes.fxs = inf
1290
+ else:
1291
+ self.sequences.fluxes.fxs = self.sequences.inputs.fxs / self.parameters.derived.asr
1292
+ cpdef inline void calc_fxg_v1(self) noexcept nogil:
1293
+ cdef double ra
1294
+ if self.sequences.inputs.fxg == 0.0:
1295
+ self.sequences.fluxes.fxg = 0.0
1296
+ else:
1297
+ ra = self.parameters.derived.agr
1298
+ if ra > 0.0:
1299
+ self.sequences.fluxes.fxg = self.sequences.inputs.fxg / ra
1300
+ else:
1301
+ self.sequences.fluxes.fxg = inf
1302
+ cpdef inline void calc_pc_v1(self) noexcept nogil:
1303
+ self.sequences.fluxes.pc = self.parameters.control.cp * self.sequences.inputs.p
1304
+ cpdef inline void calc_tf_v1(self) noexcept nogil:
1305
+ cdef double lai
1306
+ cdef numpy.int64_t k
1307
+ for k in range(self.parameters.derived.nul):
1308
+ lai = self.parameters.control.lai[self.parameters.control.lt[k] - SEALED, self.parameters.derived.moy[self.idx_sim]]
1309
+ 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 )
1310
+ self.sequences.fluxes.tf[self.parameters.derived.nul] = 0.0
1311
+ cpdef inline void calc_ei_v1(self) noexcept nogil:
1312
+ cdef numpy.int64_t k
1313
+ for k in range(self.parameters.derived.nul):
1314
+ self.sequences.fluxes.ei[k] = self.sequences.fluxes.pe[k] * (smoothutils.smooth_logistic1(self.sequences.states.ic[k], self.parameters.derived.rh1))
1315
+ self.sequences.fluxes.ei[self.parameters.derived.nul] = 0.0
1316
+ cpdef inline void calc_rf_v1(self) noexcept nogil:
1317
+ cdef numpy.int64_t k
1318
+ for k in range(self.parameters.derived.nul):
1319
+ self.sequences.fluxes.rf[k] = self.sequences.aides.fr * self.sequences.fluxes.tf[k]
1320
+ self.sequences.fluxes.rf[self.parameters.derived.nul] = 0.0
1321
+ cpdef inline void calc_sf_v1(self) noexcept nogil:
1322
+ cdef numpy.int64_t k
1323
+ for k in range(self.parameters.derived.nul):
1324
+ self.sequences.fluxes.sf[k] = (1.0 - self.sequences.aides.fr) * self.sequences.fluxes.tf[k]
1325
+ self.sequences.fluxes.sf[self.parameters.derived.nul] = 0.0
1326
+ cpdef inline void calc_am_v1(self) noexcept nogil:
1327
+ cdef numpy.int64_t k
1328
+ for k in range(self.parameters.derived.nul):
1329
+ self.sequences.fluxes.am[k] = self.sequences.fluxes.pm[k] * smoothutils.smooth_logistic1(self.sequences.states.sp[k], self.parameters.derived.rh1)
1330
+ self.sequences.fluxes.am[self.parameters.derived.nul] = 0.0
1331
+ cpdef inline void calc_ps_v1(self) noexcept nogil:
1332
+ self.sequences.fluxes.ps = self.sequences.fluxes.pc
1333
+ cpdef inline void calc_we_w_v1(self) noexcept nogil:
1334
+ if self.parameters.derived.nuge:
1335
+ 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 )
1336
+ else:
1337
+ self.sequences.aides.we = nan
1338
+ if self.parameters.derived.nug:
1339
+ 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 )
1340
+ else:
1341
+ self.sequences.aides.w = nan
1342
+ cpdef inline void calc_pve_pv_v1(self) noexcept nogil:
1343
+ cdef double p
1344
+ cdef numpy.int64_t k
1345
+ self.sequences.fluxes.pve, self.sequences.fluxes.pv = 0.0, 0.0
1346
+ for k in range(self.parameters.derived.nul):
1347
+ if self.parameters.control.lt[k] != SEALED:
1348
+ p = self.sequences.fluxes.rf[k] + self.sequences.fluxes.am[k]
1349
+ if self.parameters.control.er[k]:
1350
+ self.sequences.fluxes.pve = self.sequences.fluxes.pve + (p * (1.0 - self.sequences.aides.we) * self.parameters.control.aur[k] / self.parameters.derived.agre)
1351
+ else:
1352
+ self.sequences.fluxes.pv = self.sequences.fluxes.pv + (p * (1.0 - self.sequences.aides.w) * self.parameters.control.aur[k] / self.parameters.derived.agr)
1353
+ cpdef inline void calc_pq_v1(self) noexcept nogil:
1354
+ cdef double pq
1355
+ cdef numpy.int64_t k
1356
+ self.sequences.fluxes.pq = 0.0
1357
+ for k in range(self.parameters.derived.nul):
1358
+ pq = self.parameters.control.aur[k] / self.parameters.derived.alr * (self.sequences.fluxes.rf[k] + self.sequences.fluxes.am[k])
1359
+ if self.parameters.control.lt[k] != SEALED:
1360
+ pq = pq * (self.sequences.aides.we if self.parameters.control.er[k] else self.sequences.aides.w)
1361
+ self.sequences.fluxes.pq = self.sequences.fluxes.pq + (pq)
1362
+ cpdef inline void calc_betae_beta_v1(self) noexcept nogil:
1363
+ cdef double temp
1364
+ if self.parameters.derived.nuge:
1365
+ temp = self.parameters.control.zeta1 * (self.sequences.states.dve - self.parameters.control.zeta2)
1366
+ if temp > 700.0:
1367
+ self.sequences.aides.betae = 0.0
1368
+ else:
1369
+ temp = exp(temp)
1370
+ self.sequences.aides.betae = 0.5 + 0.5 * (1.0 - temp) / (1.0 + temp)
1371
+ else:
1372
+ self.sequences.aides.betae = nan
1373
+ if self.parameters.derived.nug:
1374
+ temp = self.parameters.control.zeta1 * (self.sequences.states.dv - self.parameters.control.zeta2)
1375
+ if temp > 700.0:
1376
+ self.sequences.aides.beta = 0.0
1377
+ else:
1378
+ temp = exp(temp)
1379
+ self.sequences.aides.beta = 0.5 + 0.5 * (1.0 - temp) / (1.0 + temp)
1380
+ else:
1381
+ self.sequences.aides.beta = nan
1382
+ cpdef inline void calc_etve_etv_v1(self) noexcept nogil:
1383
+ cdef double pet
1384
+ cdef numpy.int64_t k
1385
+ self.sequences.fluxes.etve, self.sequences.fluxes.etv = 0.0, 0.0
1386
+ for k in range(self.parameters.derived.nul):
1387
+ if (self.parameters.control.lt[k] != SEALED) and (self.sequences.fluxes.pe[k] > 0.0):
1388
+ pet = (self.sequences.fluxes.pe[k] - self.sequences.fluxes.ei[k]) / self.sequences.fluxes.pe[k] * self.sequences.fluxes.pet[k]
1389
+ if self.parameters.control.er[k]:
1390
+ self.sequences.fluxes.etve = self.sequences.fluxes.etve + (self.parameters.control.aur[k] / self.parameters.derived.agre * pet * self.sequences.aides.betae)
1391
+ else:
1392
+ self.sequences.fluxes.etv = self.sequences.fluxes.etv + (self.parameters.control.aur[k] / self.parameters.derived.agr * pet * self.sequences.aides.beta)
1393
+ cpdef inline void calc_es_v1(self) noexcept nogil:
1394
+ self.sequences.fluxes.es = self.sequences.fluxes.pe[self.parameters.derived.nul] * smoothutils.smooth_logistic1(self.sequences.states.hs, self.parameters.derived.rh1)
1395
+ cpdef inline void calc_fqs_v1(self) noexcept nogil:
1396
+ if self.parameters.control.nu > 1:
1397
+ self.sequences.fluxes.fqs = self.sequences.states.hq / self.parameters.control.cq
1398
+ else:
1399
+ self.sequences.fluxes.fqs = 0.0
1400
+ cpdef inline void calc_gr_v1(self) noexcept nogil:
1401
+ if self.parameters.derived.nuge:
1402
+ self.sequences.fluxes.gr = smoothutils.smooth_logistic2(self.parameters.control.ac - self.sequences.states.dve, self.parameters.derived.rh2)
1403
+ else:
1404
+ self.sequences.fluxes.gr = 0.0
1405
+ cpdef inline void calc_fgse_v1(self) noexcept nogil:
1406
+ cdef double hg
1407
+ cdef double hge
1408
+ if self.parameters.derived.nuge:
1409
+ hge = self.sequences.states.hge
1410
+ hg = 1000.0 * self.parameters.control.gl - self.sequences.states.dg
1411
+ self.sequences.fluxes.fgse = fabs(hge - hg) * (hge - hg) / self.parameters.control.cge
1412
+ else:
1413
+ self.sequences.fluxes.fgse = 0.0
1414
+ cpdef inline void calc_fgs_v1(self) noexcept nogil:
1415
+ cdef double conductivity
1416
+ cdef double excess
1417
+ cdef double contactsurface
1418
+ cdef double gradient
1419
+ cdef double hs
1420
+ cdef double hg
1421
+ if self.parameters.derived.nug:
1422
+ hg = smoothutils.smooth_logistic2(self.parameters.derived.cd - self.sequences.states.dg, self.parameters.derived.rh2)
1423
+ hs = smoothutils.smooth_logistic2(self.sequences.states.hs, self.parameters.derived.rh2)
1424
+ gradient = (hg if self.parameters.control.rg else self.parameters.derived.cd - self.sequences.states.dg) - hs
1425
+ if self.parameters.control.rg:
1426
+ contactsurface = fabs(hg - hs)
1427
+ else:
1428
+ contactsurface = smoothutils.smooth_max1(hg, hs, self.parameters.derived.rh2)
1429
+ excess = smoothutils.smooth_max2( -self.sequences.states.dg, self.sequences.states.hs - self.parameters.derived.cd, 0.0, self.parameters.derived.rh2 )
1430
+ conductivity = (1.0 + self.parameters.control.cgf * excess) / self.parameters.control.cg
1431
+ self.sequences.fluxes.fgs = gradient * contactsurface * conductivity
1432
+ else:
1433
+ self.sequences.fluxes.fgs = 0.0
1434
+ cpdef inline void calc_rh_v1(self) noexcept nogil:
1435
+ if self.dischargemodel is None:
1436
+ 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 )
1437
+ elif self.dischargemodel_typeid == 2:
1438
+ self.sequences.fluxes.rh = (<masterinterface.MasterInterface>self.dischargemodel).calculate_discharge(self.sequences.states.hs / 1000.0)
1439
+ cpdef inline void calc_dveq_v1(self) noexcept nogil:
1440
+ if self.parameters.derived.nug:
1441
+ if self.sequences.states.dg < self.parameters.control.psiae:
1442
+ self.sequences.aides.dveq = 0.0
1443
+ else:
1444
+ self.sequences.aides.dveq = self.parameters.control.thetas * ( self.sequences.states.dg - self.sequences.states.dg ** (1.0 - 1.0 / self.parameters.control.b) / (1.0 - 1.0 / self.parameters.control.b) / self.parameters.control.psiae ** (-1.0 / self.parameters.control.b) - self.parameters.control.psiae / (1.0 - self.parameters.control.b) )
1445
+ else:
1446
+ self.sequences.aides.dveq = nan
1447
+ cpdef inline void calc_cdg_v1(self) noexcept nogil:
1448
+ cdef double target
1449
+ if self.parameters.derived.nug:
1450
+ target = smoothutils.smooth_min1(self.sequences.aides.dveq, self.sequences.states.dg, self.parameters.derived.rh1)
1451
+ self.sequences.fluxes.cdg = (self.sequences.states.dv - target) / self.parameters.control.cv
1452
+ if self.parameters.control.dgc:
1453
+ self.sequences.fluxes.cdg = self.sequences.fluxes.cdg + ((self.sequences.fluxes.fgs - self.sequences.fluxes.fgse - self.sequences.fluxes.fxg) / self.parameters.control.thetas)
1454
+ else:
1455
+ self.sequences.fluxes.cdg = 0.0
1456
+ cpdef inline void update_ic_v1(self) noexcept nogil:
1457
+ cdef numpy.int64_t k
1458
+ for k in range(self.parameters.derived.nul):
1459
+ 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])
1460
+ self.sequences.new_states.ic[self.parameters.derived.nul] = 0
1461
+ cpdef inline void update_sp_v1(self) noexcept nogil:
1462
+ cdef numpy.int64_t k
1463
+ for k in range(self.parameters.derived.nul):
1464
+ self.sequences.new_states.sp[k] = self.sequences.old_states.sp[k] + (self.sequences.fluxes.sf[k] - self.sequences.fluxes.am[k])
1465
+ self.sequences.new_states.sp[self.parameters.derived.nul] = 0
1466
+ cpdef inline void update_dve_v1(self) noexcept nogil:
1467
+ if self.parameters.derived.nuge:
1468
+ self.sequences.new_states.dve = self.sequences.old_states.dve - (self.sequences.fluxes.pve - self.sequences.fluxes.etve - self.sequences.fluxes.gr)
1469
+ else:
1470
+ self.sequences.new_states.dve = nan
1471
+ cpdef inline void update_dv_v1(self) noexcept nogil:
1472
+ if self.parameters.derived.nug:
1473
+ 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 )
1474
+ else:
1475
+ self.sequences.new_states.dv = nan
1476
+ cpdef inline void update_hge_v1(self) noexcept nogil:
1477
+ if self.parameters.derived.nuge:
1478
+ self.sequences.new_states.hge = self.sequences.old_states.hge + (self.sequences.fluxes.gr - self.sequences.fluxes.fgse) / self.parameters.control.thetas
1479
+ else:
1480
+ self.sequences.new_states.hge = nan
1481
+ cpdef inline void update_dg_v1(self) noexcept nogil:
1482
+ if self.parameters.derived.nug:
1483
+ self.sequences.new_states.dg = self.sequences.old_states.dg + self.sequences.fluxes.cdg
1484
+ else:
1485
+ self.sequences.new_states.dg = nan
1486
+ cpdef inline void update_hq_v1(self) noexcept nogil:
1487
+ self.sequences.new_states.hq = self.sequences.old_states.hq + (self.sequences.fluxes.pq - self.sequences.fluxes.fqs)
1488
+ cpdef inline void update_hs_v1(self) noexcept nogil:
1489
+ 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 )
1490
+ cpdef double get_temperature_v1(self, numpy.int64_t s) noexcept nogil:
1491
+ return self.sequences.inputs.t
1492
+ cpdef double get_meantemperature_v1(self) noexcept nogil:
1493
+ return self.sequences.inputs.t
1494
+ cpdef double get_precipitation_v1(self, numpy.int64_t s) noexcept nogil:
1495
+ return self.sequences.fluxes.pc
1496
+ cpdef double get_snowcover_v1(self, numpy.int64_t k) noexcept nogil:
1497
+ if self.sequences.states.sp[k] > 0.0:
1498
+ return 1.0
1499
+ return 0.0
1500
+ cpdef inline void calc_pe_pet_petmodel_v1(self, masterinterface.MasterInterface submodel) noexcept nogil:
1501
+ cdef numpy.int64_t k
1502
+ submodel.determine_potentialevapotranspiration()
1503
+ for k in range(self.parameters.derived.nul):
1504
+ self.sequences.fluxes.pe[k] = self.sequences.fluxes.pet[k] = submodel.get_potentialevapotranspiration(k)
1505
+ self.sequences.fluxes.pe[self.parameters.derived.nul] = submodel.get_potentialevapotranspiration(self.parameters.derived.nul)
1506
+ self.sequences.fluxes.pet[self.parameters.derived.nul] = 0.0
1507
+ cpdef inline void calc_pe_pet_petmodel_v2(self, masterinterface.MasterInterface submodel) noexcept nogil:
1508
+ cdef numpy.int64_t k
1509
+ submodel.determine_potentialinterceptionevaporation()
1510
+ submodel.determine_potentialsoilevapotranspiration()
1511
+ submodel.determine_potentialwaterevaporation()
1512
+ for k in range(self.parameters.derived.nul):
1513
+ self.sequences.fluxes.pe[k] = submodel.get_potentialinterceptionevaporation(k)
1514
+ self.sequences.fluxes.pet[k] = submodel.get_potentialsoilevapotranspiration(k)
1515
+ self.sequences.fluxes.pe[self.parameters.derived.nul] = submodel.get_potentialwaterevaporation(self.parameters.derived.nul)
1516
+ self.sequences.fluxes.pet[self.parameters.derived.nul] = 0.0
1517
+ cpdef inline void calc_et_v1(self) noexcept nogil:
1518
+ cdef numpy.int64_t k
1519
+ cdef double ei
1520
+ ei = 0.0
1521
+ for k in range(self.parameters.derived.nul):
1522
+ ei = ei + (self.parameters.control.aur[k] * self.sequences.fluxes.ei[k])
1523
+ 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
1524
+ cpdef inline void calc_r_v1(self) noexcept nogil:
1525
+ self.sequences.fluxes.r = self.parameters.derived.qf * self.sequences.fluxes.rh
1526
+ cpdef inline void pass_r_v1(self) noexcept nogil:
1527
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.r)
1528
+ cpdef inline void pick_hs(self) noexcept nogil:
1529
+ cdef double hs
1530
+ cdef double waterlevel
1531
+ if self.waterlevelmodel is None:
1532
+ self.sequences.factors.dhs = 0.0
1533
+ elif self.waterlevelmodel_typeid == 1:
1534
+ waterlevel = (<masterinterface.MasterInterface>self.waterlevelmodel).get_waterlevel()
1535
+ hs = 1000.0 * (waterlevel - self.parameters.control.bl)
1536
+ self.sequences.factors.dhs = hs - self.sequences.new_states.hs
1537
+ self.sequences.old_states.hs = self.sequences.new_states.hs = hs
1538
+ cpdef inline void calc_pe_pet(self) noexcept nogil:
1539
+ if self.petmodel_typeid == 1:
1540
+ self.calc_pe_pet_petmodel_v1( (<masterinterface.MasterInterface>self.petmodel) )
1541
+ elif self.petmodel_typeid == 2:
1542
+ self.calc_pe_pet_petmodel_v2( (<masterinterface.MasterInterface>self.petmodel) )
1543
+ cpdef inline void calc_fr(self) noexcept nogil:
1544
+ if self.sequences.inputs.t >= (self.parameters.control.tt + self.parameters.control.ti / 2.0):
1545
+ self.sequences.aides.fr = 1.0
1546
+ elif self.sequences.inputs.t <= (self.parameters.control.tt - self.parameters.control.ti / 2.0):
1547
+ self.sequences.aides.fr = 0.0
1548
+ else:
1549
+ self.sequences.aides.fr = (self.sequences.inputs.t - (self.parameters.control.tt - self.parameters.control.ti / 2.0)) / self.parameters.control.ti
1550
+ cpdef inline void calc_pm(self) noexcept nogil:
1551
+ cdef numpy.int64_t k
1552
+ for k in range(self.parameters.derived.nul):
1553
+ 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 )
1554
+ self.sequences.fluxes.pm[self.parameters.derived.nul] = 0.0
1555
+ cpdef inline void calc_fxs(self) noexcept nogil:
1556
+ if self.sequences.inputs.fxs == 0.0:
1557
+ self.sequences.fluxes.fxs = 0.0
1558
+ elif self.parameters.control.nu == 1:
1559
+ self.sequences.fluxes.fxs = inf
1560
+ else:
1561
+ self.sequences.fluxes.fxs = self.sequences.inputs.fxs / self.parameters.derived.asr
1562
+ cpdef inline void calc_fxg(self) noexcept nogil:
1563
+ cdef double ra
1564
+ if self.sequences.inputs.fxg == 0.0:
1565
+ self.sequences.fluxes.fxg = 0.0
1566
+ else:
1567
+ ra = self.parameters.derived.agr
1568
+ if ra > 0.0:
1569
+ self.sequences.fluxes.fxg = self.sequences.inputs.fxg / ra
1570
+ else:
1571
+ self.sequences.fluxes.fxg = inf
1572
+ cpdef inline void calc_pc(self) noexcept nogil:
1573
+ self.sequences.fluxes.pc = self.parameters.control.cp * self.sequences.inputs.p
1574
+ cpdef inline void calc_tf(self) noexcept nogil:
1575
+ cdef double lai
1576
+ cdef numpy.int64_t k
1577
+ for k in range(self.parameters.derived.nul):
1578
+ lai = self.parameters.control.lai[self.parameters.control.lt[k] - SEALED, self.parameters.derived.moy[self.idx_sim]]
1579
+ 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 )
1580
+ self.sequences.fluxes.tf[self.parameters.derived.nul] = 0.0
1581
+ cpdef inline void calc_ei(self) noexcept nogil:
1582
+ cdef numpy.int64_t k
1583
+ for k in range(self.parameters.derived.nul):
1584
+ self.sequences.fluxes.ei[k] = self.sequences.fluxes.pe[k] * (smoothutils.smooth_logistic1(self.sequences.states.ic[k], self.parameters.derived.rh1))
1585
+ self.sequences.fluxes.ei[self.parameters.derived.nul] = 0.0
1586
+ cpdef inline void calc_rf(self) noexcept nogil:
1587
+ cdef numpy.int64_t k
1588
+ for k in range(self.parameters.derived.nul):
1589
+ self.sequences.fluxes.rf[k] = self.sequences.aides.fr * self.sequences.fluxes.tf[k]
1590
+ self.sequences.fluxes.rf[self.parameters.derived.nul] = 0.0
1591
+ cpdef inline void calc_sf(self) noexcept nogil:
1592
+ cdef numpy.int64_t k
1593
+ for k in range(self.parameters.derived.nul):
1594
+ self.sequences.fluxes.sf[k] = (1.0 - self.sequences.aides.fr) * self.sequences.fluxes.tf[k]
1595
+ self.sequences.fluxes.sf[self.parameters.derived.nul] = 0.0
1596
+ cpdef inline void calc_am(self) noexcept nogil:
1597
+ cdef numpy.int64_t k
1598
+ for k in range(self.parameters.derived.nul):
1599
+ self.sequences.fluxes.am[k] = self.sequences.fluxes.pm[k] * smoothutils.smooth_logistic1(self.sequences.states.sp[k], self.parameters.derived.rh1)
1600
+ self.sequences.fluxes.am[self.parameters.derived.nul] = 0.0
1601
+ cpdef inline void calc_ps(self) noexcept nogil:
1602
+ self.sequences.fluxes.ps = self.sequences.fluxes.pc
1603
+ cpdef inline void calc_we_w(self) noexcept nogil:
1604
+ if self.parameters.derived.nuge:
1605
+ 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 )
1606
+ else:
1607
+ self.sequences.aides.we = nan
1608
+ if self.parameters.derived.nug:
1609
+ 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 )
1610
+ else:
1611
+ self.sequences.aides.w = nan
1612
+ cpdef inline void calc_pve_pv(self) noexcept nogil:
1613
+ cdef double p
1614
+ cdef numpy.int64_t k
1615
+ self.sequences.fluxes.pve, self.sequences.fluxes.pv = 0.0, 0.0
1616
+ for k in range(self.parameters.derived.nul):
1617
+ if self.parameters.control.lt[k] != SEALED:
1618
+ p = self.sequences.fluxes.rf[k] + self.sequences.fluxes.am[k]
1619
+ if self.parameters.control.er[k]:
1620
+ self.sequences.fluxes.pve = self.sequences.fluxes.pve + (p * (1.0 - self.sequences.aides.we) * self.parameters.control.aur[k] / self.parameters.derived.agre)
1621
+ else:
1622
+ self.sequences.fluxes.pv = self.sequences.fluxes.pv + (p * (1.0 - self.sequences.aides.w) * self.parameters.control.aur[k] / self.parameters.derived.agr)
1623
+ cpdef inline void calc_pq(self) noexcept nogil:
1624
+ cdef double pq
1625
+ cdef numpy.int64_t k
1626
+ self.sequences.fluxes.pq = 0.0
1627
+ for k in range(self.parameters.derived.nul):
1628
+ pq = self.parameters.control.aur[k] / self.parameters.derived.alr * (self.sequences.fluxes.rf[k] + self.sequences.fluxes.am[k])
1629
+ if self.parameters.control.lt[k] != SEALED:
1630
+ pq = pq * (self.sequences.aides.we if self.parameters.control.er[k] else self.sequences.aides.w)
1631
+ self.sequences.fluxes.pq = self.sequences.fluxes.pq + (pq)
1632
+ cpdef inline void calc_betae_beta(self) noexcept nogil:
1633
+ cdef double temp
1634
+ if self.parameters.derived.nuge:
1635
+ temp = self.parameters.control.zeta1 * (self.sequences.states.dve - self.parameters.control.zeta2)
1636
+ if temp > 700.0:
1637
+ self.sequences.aides.betae = 0.0
1638
+ else:
1639
+ temp = exp(temp)
1640
+ self.sequences.aides.betae = 0.5 + 0.5 * (1.0 - temp) / (1.0 + temp)
1641
+ else:
1642
+ self.sequences.aides.betae = nan
1643
+ if self.parameters.derived.nug:
1644
+ temp = self.parameters.control.zeta1 * (self.sequences.states.dv - self.parameters.control.zeta2)
1645
+ if temp > 700.0:
1646
+ self.sequences.aides.beta = 0.0
1647
+ else:
1648
+ temp = exp(temp)
1649
+ self.sequences.aides.beta = 0.5 + 0.5 * (1.0 - temp) / (1.0 + temp)
1650
+ else:
1651
+ self.sequences.aides.beta = nan
1652
+ cpdef inline void calc_etve_etv(self) noexcept nogil:
1653
+ cdef double pet
1654
+ cdef numpy.int64_t k
1655
+ self.sequences.fluxes.etve, self.sequences.fluxes.etv = 0.0, 0.0
1656
+ for k in range(self.parameters.derived.nul):
1657
+ if (self.parameters.control.lt[k] != SEALED) and (self.sequences.fluxes.pe[k] > 0.0):
1658
+ pet = (self.sequences.fluxes.pe[k] - self.sequences.fluxes.ei[k]) / self.sequences.fluxes.pe[k] * self.sequences.fluxes.pet[k]
1659
+ if self.parameters.control.er[k]:
1660
+ self.sequences.fluxes.etve = self.sequences.fluxes.etve + (self.parameters.control.aur[k] / self.parameters.derived.agre * pet * self.sequences.aides.betae)
1661
+ else:
1662
+ self.sequences.fluxes.etv = self.sequences.fluxes.etv + (self.parameters.control.aur[k] / self.parameters.derived.agr * pet * self.sequences.aides.beta)
1663
+ cpdef inline void calc_es(self) noexcept nogil:
1664
+ self.sequences.fluxes.es = self.sequences.fluxes.pe[self.parameters.derived.nul] * smoothutils.smooth_logistic1(self.sequences.states.hs, self.parameters.derived.rh1)
1665
+ cpdef inline void calc_fqs(self) noexcept nogil:
1666
+ if self.parameters.control.nu > 1:
1667
+ self.sequences.fluxes.fqs = self.sequences.states.hq / self.parameters.control.cq
1668
+ else:
1669
+ self.sequences.fluxes.fqs = 0.0
1670
+ cpdef inline void calc_gr(self) noexcept nogil:
1671
+ if self.parameters.derived.nuge:
1672
+ self.sequences.fluxes.gr = smoothutils.smooth_logistic2(self.parameters.control.ac - self.sequences.states.dve, self.parameters.derived.rh2)
1673
+ else:
1674
+ self.sequences.fluxes.gr = 0.0
1675
+ cpdef inline void calc_fgse(self) noexcept nogil:
1676
+ cdef double hg
1677
+ cdef double hge
1678
+ if self.parameters.derived.nuge:
1679
+ hge = self.sequences.states.hge
1680
+ hg = 1000.0 * self.parameters.control.gl - self.sequences.states.dg
1681
+ self.sequences.fluxes.fgse = fabs(hge - hg) * (hge - hg) / self.parameters.control.cge
1682
+ else:
1683
+ self.sequences.fluxes.fgse = 0.0
1684
+ cpdef inline void calc_fgs(self) noexcept nogil:
1685
+ cdef double conductivity
1686
+ cdef double excess
1687
+ cdef double contactsurface
1688
+ cdef double gradient
1689
+ cdef double hs
1690
+ cdef double hg
1691
+ if self.parameters.derived.nug:
1692
+ hg = smoothutils.smooth_logistic2(self.parameters.derived.cd - self.sequences.states.dg, self.parameters.derived.rh2)
1693
+ hs = smoothutils.smooth_logistic2(self.sequences.states.hs, self.parameters.derived.rh2)
1694
+ gradient = (hg if self.parameters.control.rg else self.parameters.derived.cd - self.sequences.states.dg) - hs
1695
+ if self.parameters.control.rg:
1696
+ contactsurface = fabs(hg - hs)
1697
+ else:
1698
+ contactsurface = smoothutils.smooth_max1(hg, hs, self.parameters.derived.rh2)
1699
+ excess = smoothutils.smooth_max2( -self.sequences.states.dg, self.sequences.states.hs - self.parameters.derived.cd, 0.0, self.parameters.derived.rh2 )
1700
+ conductivity = (1.0 + self.parameters.control.cgf * excess) / self.parameters.control.cg
1701
+ self.sequences.fluxes.fgs = gradient * contactsurface * conductivity
1702
+ else:
1703
+ self.sequences.fluxes.fgs = 0.0
1704
+ cpdef inline void calc_rh(self) noexcept nogil:
1705
+ if self.dischargemodel is None:
1706
+ 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 )
1707
+ elif self.dischargemodel_typeid == 2:
1708
+ self.sequences.fluxes.rh = (<masterinterface.MasterInterface>self.dischargemodel).calculate_discharge(self.sequences.states.hs / 1000.0)
1709
+ cpdef inline void calc_dveq(self) noexcept nogil:
1710
+ if self.parameters.derived.nug:
1711
+ if self.sequences.states.dg < self.parameters.control.psiae:
1712
+ self.sequences.aides.dveq = 0.0
1713
+ else:
1714
+ self.sequences.aides.dveq = self.parameters.control.thetas * ( self.sequences.states.dg - self.sequences.states.dg ** (1.0 - 1.0 / self.parameters.control.b) / (1.0 - 1.0 / self.parameters.control.b) / self.parameters.control.psiae ** (-1.0 / self.parameters.control.b) - self.parameters.control.psiae / (1.0 - self.parameters.control.b) )
1715
+ else:
1716
+ self.sequences.aides.dveq = nan
1717
+ cpdef inline void calc_cdg(self) noexcept nogil:
1718
+ cdef double target
1719
+ if self.parameters.derived.nug:
1720
+ target = smoothutils.smooth_min1(self.sequences.aides.dveq, self.sequences.states.dg, self.parameters.derived.rh1)
1721
+ self.sequences.fluxes.cdg = (self.sequences.states.dv - target) / self.parameters.control.cv
1722
+ if self.parameters.control.dgc:
1723
+ self.sequences.fluxes.cdg = self.sequences.fluxes.cdg + ((self.sequences.fluxes.fgs - self.sequences.fluxes.fgse - self.sequences.fluxes.fxg) / self.parameters.control.thetas)
1724
+ else:
1725
+ self.sequences.fluxes.cdg = 0.0
1726
+ cpdef inline void update_ic(self) noexcept nogil:
1727
+ cdef numpy.int64_t k
1728
+ for k in range(self.parameters.derived.nul):
1729
+ 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])
1730
+ self.sequences.new_states.ic[self.parameters.derived.nul] = 0
1731
+ cpdef inline void update_sp(self) noexcept nogil:
1732
+ cdef numpy.int64_t k
1733
+ for k in range(self.parameters.derived.nul):
1734
+ self.sequences.new_states.sp[k] = self.sequences.old_states.sp[k] + (self.sequences.fluxes.sf[k] - self.sequences.fluxes.am[k])
1735
+ self.sequences.new_states.sp[self.parameters.derived.nul] = 0
1736
+ cpdef inline void update_dve(self) noexcept nogil:
1737
+ if self.parameters.derived.nuge:
1738
+ self.sequences.new_states.dve = self.sequences.old_states.dve - (self.sequences.fluxes.pve - self.sequences.fluxes.etve - self.sequences.fluxes.gr)
1739
+ else:
1740
+ self.sequences.new_states.dve = nan
1741
+ cpdef inline void update_dv(self) noexcept nogil:
1742
+ if self.parameters.derived.nug:
1743
+ 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 )
1744
+ else:
1745
+ self.sequences.new_states.dv = nan
1746
+ cpdef inline void update_hge(self) noexcept nogil:
1747
+ if self.parameters.derived.nuge:
1748
+ self.sequences.new_states.hge = self.sequences.old_states.hge + (self.sequences.fluxes.gr - self.sequences.fluxes.fgse) / self.parameters.control.thetas
1749
+ else:
1750
+ self.sequences.new_states.hge = nan
1751
+ cpdef inline void update_dg(self) noexcept nogil:
1752
+ if self.parameters.derived.nug:
1753
+ self.sequences.new_states.dg = self.sequences.old_states.dg + self.sequences.fluxes.cdg
1754
+ else:
1755
+ self.sequences.new_states.dg = nan
1756
+ cpdef inline void update_hq(self) noexcept nogil:
1757
+ self.sequences.new_states.hq = self.sequences.old_states.hq + (self.sequences.fluxes.pq - self.sequences.fluxes.fqs)
1758
+ cpdef inline void update_hs(self) noexcept nogil:
1759
+ 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 )
1760
+ cpdef double get_temperature(self, numpy.int64_t s) noexcept nogil:
1761
+ return self.sequences.inputs.t
1762
+ cpdef double get_meantemperature(self) noexcept nogil:
1763
+ return self.sequences.inputs.t
1764
+ cpdef double get_precipitation(self, numpy.int64_t s) noexcept nogil:
1765
+ return self.sequences.fluxes.pc
1766
+ cpdef double get_snowcover(self, numpy.int64_t k) noexcept nogil:
1767
+ if self.sequences.states.sp[k] > 0.0:
1768
+ return 1.0
1769
+ return 0.0
1770
+ cpdef inline void calc_et(self) noexcept nogil:
1771
+ cdef numpy.int64_t k
1772
+ cdef double ei
1773
+ ei = 0.0
1774
+ for k in range(self.parameters.derived.nul):
1775
+ ei = ei + (self.parameters.control.aur[k] * self.sequences.fluxes.ei[k])
1776
+ 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
1777
+ cpdef inline void calc_r(self) noexcept nogil:
1778
+ self.sequences.fluxes.r = self.parameters.derived.qf * self.sequences.fluxes.rh
1779
+ cpdef inline void pass_r(self) noexcept nogil:
1780
+ self.sequences.outlets.q[0] = self.sequences.outlets.q[0] + (self.sequences.fluxes.r)