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,527 @@
1
+ #!python
2
+ # distutils: define_macros=NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION
3
+ # cython: language_level=3
4
+ # cython: cpow=True
5
+ # cython: boundscheck=False
6
+ # cython: wraparound=False
7
+ # cython: initializedcheck=False
8
+ # cython: cdivision=True
9
+ from typing import Optional
10
+ import numpy
11
+ cimport numpy
12
+ from libc.math cimport exp, fabs, log, sin, cos, tan, tanh, asin, acos, atan, isnan, isinf
13
+ from libc.math cimport NAN as nan
14
+ from libc.math cimport INFINITY as inf
15
+ import cython
16
+ from cpython.mem cimport PyMem_Malloc
17
+ from cpython.mem cimport PyMem_Realloc
18
+ from cpython.mem cimport PyMem_Free
19
+ from hydpy.cythons.autogen cimport configutils
20
+ from hydpy.cythons.autogen cimport interfaceutils
21
+ from hydpy.cythons.autogen cimport interputils
22
+ from hydpy.cythons.autogen import pointerutils
23
+ from hydpy.cythons.autogen cimport pointerutils
24
+ from hydpy.cythons.autogen cimport quadutils
25
+ from hydpy.cythons.autogen cimport rootutils
26
+ from hydpy.cythons.autogen cimport smoothutils
27
+ from hydpy.cythons.autogen cimport masterinterface
28
+
29
+
30
+ cdef void do_nothing(Model model) noexcept nogil:
31
+ pass
32
+
33
+ cpdef get_wrapper():
34
+ cdef CallbackWrapper wrapper = CallbackWrapper()
35
+ wrapper.callback = do_nothing
36
+ return wrapper
37
+
38
+ @cython.final
39
+ cdef class Parameters:
40
+ pass
41
+ @cython.final
42
+ cdef class ControlParameters:
43
+ pass
44
+ @cython.final
45
+ cdef class DerivedParameters:
46
+ pass
47
+ @cython.final
48
+ cdef class FixedParameters:
49
+ pass
50
+ @cython.final
51
+ cdef class Sequences:
52
+ pass
53
+ @cython.final
54
+ cdef class InputSequences:
55
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
56
+ cdef numpy.int64_t k
57
+ if self._sunshineduration_inputflag:
58
+ self.sunshineduration = self._sunshineduration_inputpointer[0]
59
+ elif self._sunshineduration_diskflag_reading:
60
+ self.sunshineduration = self._sunshineduration_ncarray[0]
61
+ elif self._sunshineduration_ramflag:
62
+ self.sunshineduration = self._sunshineduration_array[idx]
63
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
64
+ cdef numpy.int64_t k
65
+ if self._sunshineduration_diskflag_writing:
66
+ self._sunshineduration_ncarray[0] = self.sunshineduration
67
+ if self._sunshineduration_ramflag:
68
+ self._sunshineduration_array[idx] = self.sunshineduration
69
+ cpdef inline set_pointerinput(self, str name, pointerutils.PDouble value):
70
+ if name == "sunshineduration":
71
+ self._sunshineduration_inputpointer = value.p_value
72
+ @cython.final
73
+ cdef class FactorSequences:
74
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
75
+ cdef numpy.int64_t k
76
+ if self._earthsundistance_diskflag_reading:
77
+ self.earthsundistance = self._earthsundistance_ncarray[0]
78
+ elif self._earthsundistance_ramflag:
79
+ self.earthsundistance = self._earthsundistance_array[idx]
80
+ if self._solardeclination_diskflag_reading:
81
+ self.solardeclination = self._solardeclination_ncarray[0]
82
+ elif self._solardeclination_ramflag:
83
+ self.solardeclination = self._solardeclination_array[idx]
84
+ if self._timeofsunrise_diskflag_reading:
85
+ self.timeofsunrise = self._timeofsunrise_ncarray[0]
86
+ elif self._timeofsunrise_ramflag:
87
+ self.timeofsunrise = self._timeofsunrise_array[idx]
88
+ if self._timeofsunset_diskflag_reading:
89
+ self.timeofsunset = self._timeofsunset_ncarray[0]
90
+ elif self._timeofsunset_ramflag:
91
+ self.timeofsunset = self._timeofsunset_array[idx]
92
+ if self._possiblesunshineduration_diskflag_reading:
93
+ self.possiblesunshineduration = self._possiblesunshineduration_ncarray[0]
94
+ elif self._possiblesunshineduration_ramflag:
95
+ self.possiblesunshineduration = self._possiblesunshineduration_array[idx]
96
+ if self._dailypossiblesunshineduration_diskflag_reading:
97
+ self.dailypossiblesunshineduration = self._dailypossiblesunshineduration_ncarray[0]
98
+ elif self._dailypossiblesunshineduration_ramflag:
99
+ self.dailypossiblesunshineduration = self._dailypossiblesunshineduration_array[idx]
100
+ if self._dailysunshineduration_diskflag_reading:
101
+ self.dailysunshineduration = self._dailysunshineduration_ncarray[0]
102
+ elif self._dailysunshineduration_ramflag:
103
+ self.dailysunshineduration = self._dailysunshineduration_array[idx]
104
+ if self._portiondailyradiation_diskflag_reading:
105
+ self.portiondailyradiation = self._portiondailyradiation_ncarray[0]
106
+ elif self._portiondailyradiation_ramflag:
107
+ self.portiondailyradiation = self._portiondailyradiation_array[idx]
108
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
109
+ cdef numpy.int64_t k
110
+ if self._earthsundistance_diskflag_writing:
111
+ self._earthsundistance_ncarray[0] = self.earthsundistance
112
+ if self._earthsundistance_ramflag:
113
+ self._earthsundistance_array[idx] = self.earthsundistance
114
+ if self._solardeclination_diskflag_writing:
115
+ self._solardeclination_ncarray[0] = self.solardeclination
116
+ if self._solardeclination_ramflag:
117
+ self._solardeclination_array[idx] = self.solardeclination
118
+ if self._timeofsunrise_diskflag_writing:
119
+ self._timeofsunrise_ncarray[0] = self.timeofsunrise
120
+ if self._timeofsunrise_ramflag:
121
+ self._timeofsunrise_array[idx] = self.timeofsunrise
122
+ if self._timeofsunset_diskflag_writing:
123
+ self._timeofsunset_ncarray[0] = self.timeofsunset
124
+ if self._timeofsunset_ramflag:
125
+ self._timeofsunset_array[idx] = self.timeofsunset
126
+ if self._possiblesunshineduration_diskflag_writing:
127
+ self._possiblesunshineduration_ncarray[0] = self.possiblesunshineduration
128
+ if self._possiblesunshineduration_ramflag:
129
+ self._possiblesunshineduration_array[idx] = self.possiblesunshineduration
130
+ if self._dailypossiblesunshineduration_diskflag_writing:
131
+ self._dailypossiblesunshineduration_ncarray[0] = self.dailypossiblesunshineduration
132
+ if self._dailypossiblesunshineduration_ramflag:
133
+ self._dailypossiblesunshineduration_array[idx] = self.dailypossiblesunshineduration
134
+ if self._dailysunshineduration_diskflag_writing:
135
+ self._dailysunshineduration_ncarray[0] = self.dailysunshineduration
136
+ if self._dailysunshineduration_ramflag:
137
+ self._dailysunshineduration_array[idx] = self.dailysunshineduration
138
+ if self._portiondailyradiation_diskflag_writing:
139
+ self._portiondailyradiation_ncarray[0] = self.portiondailyradiation
140
+ if self._portiondailyradiation_ramflag:
141
+ self._portiondailyradiation_array[idx] = self.portiondailyradiation
142
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
143
+ if name == "earthsundistance":
144
+ self._earthsundistance_outputpointer = value.p_value
145
+ if name == "solardeclination":
146
+ self._solardeclination_outputpointer = value.p_value
147
+ if name == "timeofsunrise":
148
+ self._timeofsunrise_outputpointer = value.p_value
149
+ if name == "timeofsunset":
150
+ self._timeofsunset_outputpointer = value.p_value
151
+ if name == "possiblesunshineduration":
152
+ self._possiblesunshineduration_outputpointer = value.p_value
153
+ if name == "dailypossiblesunshineduration":
154
+ self._dailypossiblesunshineduration_outputpointer = value.p_value
155
+ if name == "dailysunshineduration":
156
+ self._dailysunshineduration_outputpointer = value.p_value
157
+ if name == "portiondailyradiation":
158
+ self._portiondailyradiation_outputpointer = value.p_value
159
+ cpdef inline void update_outputs(self) noexcept nogil:
160
+ if self._earthsundistance_outputflag:
161
+ self._earthsundistance_outputpointer[0] = self.earthsundistance
162
+ if self._solardeclination_outputflag:
163
+ self._solardeclination_outputpointer[0] = self.solardeclination
164
+ if self._timeofsunrise_outputflag:
165
+ self._timeofsunrise_outputpointer[0] = self.timeofsunrise
166
+ if self._timeofsunset_outputflag:
167
+ self._timeofsunset_outputpointer[0] = self.timeofsunset
168
+ if self._possiblesunshineduration_outputflag:
169
+ self._possiblesunshineduration_outputpointer[0] = self.possiblesunshineduration
170
+ if self._dailypossiblesunshineduration_outputflag:
171
+ self._dailypossiblesunshineduration_outputpointer[0] = self.dailypossiblesunshineduration
172
+ if self._dailysunshineduration_outputflag:
173
+ self._dailysunshineduration_outputpointer[0] = self.dailysunshineduration
174
+ if self._portiondailyradiation_outputflag:
175
+ self._portiondailyradiation_outputpointer[0] = self.portiondailyradiation
176
+ @cython.final
177
+ cdef class FluxSequences:
178
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
179
+ cdef numpy.int64_t k
180
+ if self._extraterrestrialradiation_diskflag_reading:
181
+ self.extraterrestrialradiation = self._extraterrestrialradiation_ncarray[0]
182
+ elif self._extraterrestrialradiation_ramflag:
183
+ self.extraterrestrialradiation = self._extraterrestrialradiation_array[idx]
184
+ if self._clearskysolarradiation_diskflag_reading:
185
+ self.clearskysolarradiation = self._clearskysolarradiation_ncarray[0]
186
+ elif self._clearskysolarradiation_ramflag:
187
+ self.clearskysolarradiation = self._clearskysolarradiation_array[idx]
188
+ if self._unadjustedglobalradiation_diskflag_reading:
189
+ self.unadjustedglobalradiation = self._unadjustedglobalradiation_ncarray[0]
190
+ elif self._unadjustedglobalradiation_ramflag:
191
+ self.unadjustedglobalradiation = self._unadjustedglobalradiation_array[idx]
192
+ if self._dailyglobalradiation_diskflag_reading:
193
+ self.dailyglobalradiation = self._dailyglobalradiation_ncarray[0]
194
+ elif self._dailyglobalradiation_ramflag:
195
+ self.dailyglobalradiation = self._dailyglobalradiation_array[idx]
196
+ if self._globalradiation_diskflag_reading:
197
+ self.globalradiation = self._globalradiation_ncarray[0]
198
+ elif self._globalradiation_ramflag:
199
+ self.globalradiation = self._globalradiation_array[idx]
200
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
201
+ cdef numpy.int64_t k
202
+ if self._extraterrestrialradiation_diskflag_writing:
203
+ self._extraterrestrialradiation_ncarray[0] = self.extraterrestrialradiation
204
+ if self._extraterrestrialradiation_ramflag:
205
+ self._extraterrestrialradiation_array[idx] = self.extraterrestrialradiation
206
+ if self._clearskysolarradiation_diskflag_writing:
207
+ self._clearskysolarradiation_ncarray[0] = self.clearskysolarradiation
208
+ if self._clearskysolarradiation_ramflag:
209
+ self._clearskysolarradiation_array[idx] = self.clearskysolarradiation
210
+ if self._unadjustedglobalradiation_diskflag_writing:
211
+ self._unadjustedglobalradiation_ncarray[0] = self.unadjustedglobalradiation
212
+ if self._unadjustedglobalradiation_ramflag:
213
+ self._unadjustedglobalradiation_array[idx] = self.unadjustedglobalradiation
214
+ if self._dailyglobalradiation_diskflag_writing:
215
+ self._dailyglobalradiation_ncarray[0] = self.dailyglobalradiation
216
+ if self._dailyglobalradiation_ramflag:
217
+ self._dailyglobalradiation_array[idx] = self.dailyglobalradiation
218
+ if self._globalradiation_diskflag_writing:
219
+ self._globalradiation_ncarray[0] = self.globalradiation
220
+ if self._globalradiation_ramflag:
221
+ self._globalradiation_array[idx] = self.globalradiation
222
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
223
+ if name == "extraterrestrialradiation":
224
+ self._extraterrestrialradiation_outputpointer = value.p_value
225
+ if name == "clearskysolarradiation":
226
+ self._clearskysolarradiation_outputpointer = value.p_value
227
+ if name == "unadjustedglobalradiation":
228
+ self._unadjustedglobalradiation_outputpointer = value.p_value
229
+ if name == "dailyglobalradiation":
230
+ self._dailyglobalradiation_outputpointer = value.p_value
231
+ if name == "globalradiation":
232
+ self._globalradiation_outputpointer = value.p_value
233
+ cpdef inline void update_outputs(self) noexcept nogil:
234
+ if self._extraterrestrialradiation_outputflag:
235
+ self._extraterrestrialradiation_outputpointer[0] = self.extraterrestrialradiation
236
+ if self._clearskysolarradiation_outputflag:
237
+ self._clearskysolarradiation_outputpointer[0] = self.clearskysolarradiation
238
+ if self._unadjustedglobalradiation_outputflag:
239
+ self._unadjustedglobalradiation_outputpointer[0] = self.unadjustedglobalradiation
240
+ if self._dailyglobalradiation_outputflag:
241
+ self._dailyglobalradiation_outputpointer[0] = self.dailyglobalradiation
242
+ if self._globalradiation_outputflag:
243
+ self._globalradiation_outputpointer[0] = self.globalradiation
244
+ @cython.final
245
+ cdef class LogSequences:
246
+ pass
247
+ @cython.final
248
+ cdef class Model(masterinterface.MasterInterface):
249
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
250
+ self.idx_sim = idx
251
+ self.reset_reuseflags()
252
+ self.load_data(idx)
253
+ self.run()
254
+ self.update_outputs()
255
+ cpdef void reset_reuseflags(self) noexcept nogil:
256
+ self.__hydpy_reuse_process_radiation_v1__ = False
257
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
258
+ self.idx_sim = idx
259
+ self.sequences.inputs.load_data(idx)
260
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
261
+ self.idx_sim = idx
262
+ self.sequences.inputs.save_data(idx)
263
+ self.sequences.factors.save_data(idx)
264
+ self.sequences.fluxes.save_data(idx)
265
+ cpdef inline void run(self) noexcept nogil:
266
+ self.calc_earthsundistance_v1()
267
+ self.calc_solardeclination_v2()
268
+ self.calc_timeofsunrise_timeofsunset_v1()
269
+ self.calc_dailypossiblesunshineduration_v1()
270
+ self.calc_possiblesunshineduration_v2()
271
+ self.update_loggedsunshineduration_v1()
272
+ self.calc_dailysunshineduration_v1()
273
+ self.calc_extraterrestrialradiation_v2()
274
+ self.calc_clearskysolarradiation_v1()
275
+ self.calc_dailyglobalradiation_v1()
276
+ self.calc_portiondailyradiation_v1()
277
+ self.adjust_clearskysolarradiation_v1()
278
+ self.calc_unadjustedglobalradiation_v1()
279
+ self.update_loggedunadjustedglobalradiation_v1()
280
+ self.calc_globalradiation_v2()
281
+ cpdef inline void update_inlets(self) noexcept nogil:
282
+ pass
283
+ cpdef inline void update_outlets(self) noexcept nogil:
284
+ pass
285
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
286
+ self.idx_sim = idx
287
+ pass
288
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
289
+ self.idx_sim = idx
290
+ pass
291
+ cpdef inline void update_outputs(self) noexcept nogil:
292
+ self.sequences.factors.update_outputs()
293
+ self.sequences.fluxes.update_outputs()
294
+ cpdef inline void calc_earthsundistance_v1(self) noexcept nogil:
295
+ self.sequences.factors.earthsundistance = 1.0 + 0.033 * cos( 2 * self.parameters.fixed.pi / 366.0 * (self.parameters.derived.doy[self.idx_sim] + 1) )
296
+ cpdef inline void calc_solardeclination_v2(self) noexcept nogil:
297
+ self.sequences.factors.solardeclination = 0.41 * cos( 2.0 * self.parameters.fixed.pi * (self.parameters.derived.doy[self.idx_sim] - 171.0) / 365.0 )
298
+ cpdef inline void calc_timeofsunrise_timeofsunset_v1(self) noexcept nogil:
299
+ cdef double d_dt
300
+ self.sequences.factors.timeofsunrise = (12.0 / self.parameters.fixed.pi) * acos( tan(self.sequences.factors.solardeclination) * tan(self.parameters.derived.latituderad) + 0.0145 / cos(self.sequences.factors.solardeclination) / cos(self.parameters.derived.latituderad) )
301
+ self.sequences.factors.timeofsunset = 24.0 - self.sequences.factors.timeofsunrise
302
+ d_dt = (self.parameters.derived.utclongitude - self.parameters.control.longitude) * 4.0 / 60.0
303
+ self.sequences.factors.timeofsunrise = self.sequences.factors.timeofsunrise + (d_dt)
304
+ self.sequences.factors.timeofsunset = self.sequences.factors.timeofsunset + (d_dt)
305
+ cpdef inline void calc_dailypossiblesunshineduration_v1(self) noexcept nogil:
306
+ self.sequences.factors.dailypossiblesunshineduration = self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise
307
+ cpdef inline void calc_possiblesunshineduration_v2(self) noexcept nogil:
308
+ cdef double d_t1
309
+ cdef double d_t0
310
+ cdef double d_stc
311
+ d_stc = self.parameters.derived.sct[self.idx_sim]
312
+ d_t0 = max((d_stc - self.parameters.derived.hours / 2.0), self.sequences.factors.timeofsunrise)
313
+ d_t1 = min((d_stc + self.parameters.derived.hours / 2.0), self.sequences.factors.timeofsunset)
314
+ self.sequences.factors.possiblesunshineduration = max(d_t1 - d_t0, 0.0)
315
+ cpdef inline void update_loggedsunshineduration_v1(self) noexcept nogil:
316
+ cdef numpy.int64_t idx
317
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
318
+ self.sequences.logs.loggedsunshineduration[idx] = self.sequences.logs.loggedsunshineduration[idx - 1]
319
+ self.sequences.logs.loggedsunshineduration[0] = self.sequences.inputs.sunshineduration
320
+ cpdef inline void calc_dailysunshineduration_v1(self) noexcept nogil:
321
+ cdef numpy.int64_t idx
322
+ self.sequences.factors.dailysunshineduration = 0.0
323
+ for idx in range(self.parameters.derived.nmblogentries):
324
+ self.sequences.factors.dailysunshineduration = self.sequences.factors.dailysunshineduration + (self.sequences.logs.loggedsunshineduration[idx])
325
+ cpdef inline void calc_extraterrestrialradiation_v2(self) noexcept nogil:
326
+ cdef double d_sunsethourangle
327
+ d_sunsethourangle = (self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise) * self.parameters.fixed.pi / 24.0
328
+ self.sequences.fluxes.extraterrestrialradiation = ( self.parameters.fixed.solarconstant * self.sequences.factors.earthsundistance / self.parameters.fixed.pi ) * ( d_sunsethourangle * sin(self.sequences.factors.solardeclination) * sin(self.parameters.derived.latituderad) + cos(self.sequences.factors.solardeclination) * cos(self.parameters.derived.latituderad) * sin(d_sunsethourangle) )
329
+ cpdef inline void calc_clearskysolarradiation_v1(self) noexcept nogil:
330
+ cdef numpy.int64_t idx
331
+ idx = self.parameters.derived.moy[self.idx_sim]
332
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] )
333
+ cpdef inline void calc_dailyglobalradiation_v1(self) noexcept nogil:
334
+ self.sequences.fluxes.dailyglobalradiation = self.return_dailyglobalradiation_v1( self.sequences.factors.dailysunshineduration, self.sequences.factors.dailypossiblesunshineduration )
335
+ cpdef inline void calc_portiondailyradiation_v1(self) noexcept nogil:
336
+ cdef double d_temp
337
+ cdef double d_p
338
+ cdef double d_tlp
339
+ cdef double d_dt
340
+ cdef numpy.int64_t i
341
+ cdef double d_fac
342
+ d_fac = 2.0 * self.parameters.fixed.pi / 360.0
343
+ self.sequences.factors.portiondailyradiation = 0.0
344
+ for i in range(2):
345
+ if i:
346
+ d_dt = self.parameters.derived.hours / 2.0
347
+ else:
348
+ d_dt = -self.parameters.derived.hours / 2.0
349
+ d_tlp = (100.0 * d_fac) * ( (self.parameters.derived.sct[self.idx_sim] + d_dt - self.sequences.factors.timeofsunrise) / (self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise) )
350
+ if d_tlp <= 0.0:
351
+ d_p = 0.0
352
+ elif d_tlp < 100.0 * d_fac:
353
+ d_p = 50.0 - 50.0 * cos(1.8 * d_tlp)
354
+ d_temp = 3.4 * sin(3.6 * d_tlp) ** 2
355
+ if d_tlp <= 50.0 * d_fac:
356
+ d_p = d_p - (d_temp)
357
+ else:
358
+ d_p = d_p + (d_temp)
359
+ else:
360
+ d_p = 100.0
361
+ if i:
362
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation + (d_p)
363
+ else:
364
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation - (d_p)
365
+ cpdef inline void adjust_clearskysolarradiation_v1(self) noexcept nogil:
366
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.clearskysolarradiation * (( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ))
367
+ cpdef inline void calc_unadjustedglobalradiation_v1(self) noexcept nogil:
368
+ cdef double d_pos
369
+ cdef double d_act
370
+ if self.sequences.factors.possiblesunshineduration > 0.0:
371
+ d_act = self.sequences.inputs.sunshineduration
372
+ d_pos = self.sequences.factors.possiblesunshineduration
373
+ else:
374
+ d_act = self.sequences.factors.dailysunshineduration
375
+ d_pos = self.sequences.factors.dailypossiblesunshineduration
376
+ self.sequences.fluxes.unadjustedglobalradiation = ( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ) * self.return_dailyglobalradiation_v1(d_act, d_pos)
377
+ cpdef inline void update_loggedunadjustedglobalradiation_v1(self) noexcept nogil:
378
+ cdef numpy.int64_t idx
379
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
380
+ self.sequences.logs.loggedunadjustedglobalradiation[idx] = ( self.sequences.logs.loggedunadjustedglobalradiation[idx - 1] )
381
+ self.sequences.logs.loggedunadjustedglobalradiation[0] = self.sequences.fluxes.unadjustedglobalradiation
382
+ cpdef inline void calc_globalradiation_v2(self) noexcept nogil:
383
+ cdef double d_glob_mean
384
+ cdef numpy.int64_t idx
385
+ cdef double d_glob_sum
386
+ d_glob_sum = 0.0
387
+ for idx in range(self.parameters.derived.nmblogentries):
388
+ d_glob_sum = d_glob_sum + (self.sequences.logs.loggedunadjustedglobalradiation[idx])
389
+ d_glob_mean = d_glob_sum / self.parameters.derived.nmblogentries
390
+ self.sequences.fluxes.globalradiation = ( self.sequences.fluxes.unadjustedglobalradiation * self.sequences.fluxes.dailyglobalradiation / d_glob_mean )
391
+ cpdef void process_radiation_v1(self) noexcept nogil:
392
+ if not self.__hydpy_reuse_process_radiation_v1__:
393
+ self.run()
394
+ self.__hydpy_reuse_process_radiation_v1__ = True
395
+ cpdef double get_possiblesunshineduration_v1(self) noexcept nogil:
396
+ return self.sequences.factors.possiblesunshineduration
397
+ cpdef double get_sunshineduration_v2(self) noexcept nogil:
398
+ return self.sequences.inputs.sunshineduration
399
+ cpdef double get_clearskysolarradiation_v1(self) noexcept nogil:
400
+ return self.sequences.fluxes.clearskysolarradiation
401
+ cpdef double get_globalradiation_v1(self) noexcept nogil:
402
+ return self.sequences.fluxes.globalradiation
403
+ cpdef inline double return_dailyglobalradiation_v1(self, double sunshineduration, double possiblesunshineduration) noexcept nogil:
404
+ cdef numpy.int64_t idx
405
+ if possiblesunshineduration > 0.0:
406
+ idx = self.parameters.derived.moy[self.idx_sim]
407
+ if (sunshineduration <= 0.0) and (self.parameters.derived.days >= 1.0):
408
+ return self.sequences.fluxes.extraterrestrialradiation * self.parameters.control.angstromalternative[idx]
409
+ return self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] * sunshineduration / possiblesunshineduration )
410
+ return 0.0
411
+ cpdef inline void calc_earthsundistance(self) noexcept nogil:
412
+ self.sequences.factors.earthsundistance = 1.0 + 0.033 * cos( 2 * self.parameters.fixed.pi / 366.0 * (self.parameters.derived.doy[self.idx_sim] + 1) )
413
+ cpdef inline void calc_solardeclination(self) noexcept nogil:
414
+ self.sequences.factors.solardeclination = 0.41 * cos( 2.0 * self.parameters.fixed.pi * (self.parameters.derived.doy[self.idx_sim] - 171.0) / 365.0 )
415
+ cpdef inline void calc_timeofsunrise_timeofsunset(self) noexcept nogil:
416
+ cdef double d_dt
417
+ self.sequences.factors.timeofsunrise = (12.0 / self.parameters.fixed.pi) * acos( tan(self.sequences.factors.solardeclination) * tan(self.parameters.derived.latituderad) + 0.0145 / cos(self.sequences.factors.solardeclination) / cos(self.parameters.derived.latituderad) )
418
+ self.sequences.factors.timeofsunset = 24.0 - self.sequences.factors.timeofsunrise
419
+ d_dt = (self.parameters.derived.utclongitude - self.parameters.control.longitude) * 4.0 / 60.0
420
+ self.sequences.factors.timeofsunrise = self.sequences.factors.timeofsunrise + (d_dt)
421
+ self.sequences.factors.timeofsunset = self.sequences.factors.timeofsunset + (d_dt)
422
+ cpdef inline void calc_dailypossiblesunshineduration(self) noexcept nogil:
423
+ self.sequences.factors.dailypossiblesunshineduration = self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise
424
+ cpdef inline void calc_possiblesunshineduration(self) noexcept nogil:
425
+ cdef double d_t1
426
+ cdef double d_t0
427
+ cdef double d_stc
428
+ d_stc = self.parameters.derived.sct[self.idx_sim]
429
+ d_t0 = max((d_stc - self.parameters.derived.hours / 2.0), self.sequences.factors.timeofsunrise)
430
+ d_t1 = min((d_stc + self.parameters.derived.hours / 2.0), self.sequences.factors.timeofsunset)
431
+ self.sequences.factors.possiblesunshineduration = max(d_t1 - d_t0, 0.0)
432
+ cpdef inline void update_loggedsunshineduration(self) noexcept nogil:
433
+ cdef numpy.int64_t idx
434
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
435
+ self.sequences.logs.loggedsunshineduration[idx] = self.sequences.logs.loggedsunshineduration[idx - 1]
436
+ self.sequences.logs.loggedsunshineduration[0] = self.sequences.inputs.sunshineduration
437
+ cpdef inline void calc_dailysunshineduration(self) noexcept nogil:
438
+ cdef numpy.int64_t idx
439
+ self.sequences.factors.dailysunshineduration = 0.0
440
+ for idx in range(self.parameters.derived.nmblogentries):
441
+ self.sequences.factors.dailysunshineduration = self.sequences.factors.dailysunshineduration + (self.sequences.logs.loggedsunshineduration[idx])
442
+ cpdef inline void calc_extraterrestrialradiation(self) noexcept nogil:
443
+ cdef double d_sunsethourangle
444
+ d_sunsethourangle = (self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise) * self.parameters.fixed.pi / 24.0
445
+ self.sequences.fluxes.extraterrestrialradiation = ( self.parameters.fixed.solarconstant * self.sequences.factors.earthsundistance / self.parameters.fixed.pi ) * ( d_sunsethourangle * sin(self.sequences.factors.solardeclination) * sin(self.parameters.derived.latituderad) + cos(self.sequences.factors.solardeclination) * cos(self.parameters.derived.latituderad) * sin(d_sunsethourangle) )
446
+ cpdef inline void calc_clearskysolarradiation(self) noexcept nogil:
447
+ cdef numpy.int64_t idx
448
+ idx = self.parameters.derived.moy[self.idx_sim]
449
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] )
450
+ cpdef inline void calc_dailyglobalradiation(self) noexcept nogil:
451
+ self.sequences.fluxes.dailyglobalradiation = self.return_dailyglobalradiation_v1( self.sequences.factors.dailysunshineduration, self.sequences.factors.dailypossiblesunshineduration )
452
+ cpdef inline void calc_portiondailyradiation(self) noexcept nogil:
453
+ cdef double d_temp
454
+ cdef double d_p
455
+ cdef double d_tlp
456
+ cdef double d_dt
457
+ cdef numpy.int64_t i
458
+ cdef double d_fac
459
+ d_fac = 2.0 * self.parameters.fixed.pi / 360.0
460
+ self.sequences.factors.portiondailyradiation = 0.0
461
+ for i in range(2):
462
+ if i:
463
+ d_dt = self.parameters.derived.hours / 2.0
464
+ else:
465
+ d_dt = -self.parameters.derived.hours / 2.0
466
+ d_tlp = (100.0 * d_fac) * ( (self.parameters.derived.sct[self.idx_sim] + d_dt - self.sequences.factors.timeofsunrise) / (self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise) )
467
+ if d_tlp <= 0.0:
468
+ d_p = 0.0
469
+ elif d_tlp < 100.0 * d_fac:
470
+ d_p = 50.0 - 50.0 * cos(1.8 * d_tlp)
471
+ d_temp = 3.4 * sin(3.6 * d_tlp) ** 2
472
+ if d_tlp <= 50.0 * d_fac:
473
+ d_p = d_p - (d_temp)
474
+ else:
475
+ d_p = d_p + (d_temp)
476
+ else:
477
+ d_p = 100.0
478
+ if i:
479
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation + (d_p)
480
+ else:
481
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation - (d_p)
482
+ cpdef inline void adjust_clearskysolarradiation(self) noexcept nogil:
483
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.clearskysolarradiation * (( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ))
484
+ cpdef inline void calc_unadjustedglobalradiation(self) noexcept nogil:
485
+ cdef double d_pos
486
+ cdef double d_act
487
+ if self.sequences.factors.possiblesunshineduration > 0.0:
488
+ d_act = self.sequences.inputs.sunshineduration
489
+ d_pos = self.sequences.factors.possiblesunshineduration
490
+ else:
491
+ d_act = self.sequences.factors.dailysunshineduration
492
+ d_pos = self.sequences.factors.dailypossiblesunshineduration
493
+ self.sequences.fluxes.unadjustedglobalradiation = ( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ) * self.return_dailyglobalradiation_v1(d_act, d_pos)
494
+ cpdef inline void update_loggedunadjustedglobalradiation(self) noexcept nogil:
495
+ cdef numpy.int64_t idx
496
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
497
+ self.sequences.logs.loggedunadjustedglobalradiation[idx] = ( self.sequences.logs.loggedunadjustedglobalradiation[idx - 1] )
498
+ self.sequences.logs.loggedunadjustedglobalradiation[0] = self.sequences.fluxes.unadjustedglobalradiation
499
+ cpdef inline void calc_globalradiation(self) noexcept nogil:
500
+ cdef double d_glob_mean
501
+ cdef numpy.int64_t idx
502
+ cdef double d_glob_sum
503
+ d_glob_sum = 0.0
504
+ for idx in range(self.parameters.derived.nmblogentries):
505
+ d_glob_sum = d_glob_sum + (self.sequences.logs.loggedunadjustedglobalradiation[idx])
506
+ d_glob_mean = d_glob_sum / self.parameters.derived.nmblogentries
507
+ self.sequences.fluxes.globalradiation = ( self.sequences.fluxes.unadjustedglobalradiation * self.sequences.fluxes.dailyglobalradiation / d_glob_mean )
508
+ cpdef void process_radiation(self) noexcept nogil:
509
+ if not self.__hydpy_reuse_process_radiation_v1__:
510
+ self.run()
511
+ self.__hydpy_reuse_process_radiation_v1__ = True
512
+ cpdef double get_possiblesunshineduration(self) noexcept nogil:
513
+ return self.sequences.factors.possiblesunshineduration
514
+ cpdef double get_sunshineduration(self) noexcept nogil:
515
+ return self.sequences.inputs.sunshineduration
516
+ cpdef double get_clearskysolarradiation(self) noexcept nogil:
517
+ return self.sequences.fluxes.clearskysolarradiation
518
+ cpdef double get_globalradiation(self) noexcept nogil:
519
+ return self.sequences.fluxes.globalradiation
520
+ cpdef inline double return_dailyglobalradiation(self, double sunshineduration, double possiblesunshineduration) noexcept nogil:
521
+ cdef numpy.int64_t idx
522
+ if possiblesunshineduration > 0.0:
523
+ idx = self.parameters.derived.moy[self.idx_sim]
524
+ if (sunshineduration <= 0.0) and (self.parameters.derived.days >= 1.0):
525
+ return self.sequences.fluxes.extraterrestrialradiation * self.parameters.control.angstromalternative[idx]
526
+ return self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] * sunshineduration / possiblesunshineduration )
527
+ return 0.0
@@ -0,0 +1,112 @@
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
+ ctypedef void (*CallbackType) (Model) noexcept nogil
29
+ cdef class CallbackWrapper:
30
+ cdef CallbackType callback
31
+ @cython.final
32
+ cdef class Parameters:
33
+ cdef public ControlParameters control
34
+ cdef public DerivedParameters derived
35
+ @cython.final
36
+ cdef class ControlParameters:
37
+ cdef public numpy.int64_t nmbhru
38
+ cdef public double[:] hruarea
39
+ cdef public double[:] precipitationfactor
40
+ @cython.final
41
+ cdef class DerivedParameters:
42
+ cdef public double[:] hruareafraction
43
+ @cython.final
44
+ cdef class Sequences:
45
+ cdef public InputSequences inputs
46
+ cdef public FluxSequences fluxes
47
+ @cython.final
48
+ cdef class InputSequences:
49
+ cdef public double precipitation
50
+ cdef public numpy.int64_t _precipitation_ndim
51
+ cdef public numpy.int64_t _precipitation_length
52
+ cdef public bint _precipitation_ramflag
53
+ cdef public double[:] _precipitation_array
54
+ cdef public bint _precipitation_diskflag_reading
55
+ cdef public bint _precipitation_diskflag_writing
56
+ cdef public double[:] _precipitation_ncarray
57
+ cdef public bint _precipitation_inputflag
58
+ cdef double *_precipitation_inputpointer
59
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil
60
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil
61
+ cpdef inline set_pointerinput(self, str name, pointerutils.PDouble value)
62
+ @cython.final
63
+ cdef class FluxSequences:
64
+ cdef public double[:] precipitation
65
+ cdef public numpy.int64_t _precipitation_ndim
66
+ cdef public numpy.int64_t _precipitation_length
67
+ cdef public numpy.int64_t _precipitation_length_0
68
+ cdef public bint _precipitation_ramflag
69
+ cdef public double[:,:] _precipitation_array
70
+ cdef public bint _precipitation_diskflag_reading
71
+ cdef public bint _precipitation_diskflag_writing
72
+ cdef public double[:] _precipitation_ncarray
73
+ cdef public double meanprecipitation
74
+ cdef public numpy.int64_t _meanprecipitation_ndim
75
+ cdef public numpy.int64_t _meanprecipitation_length
76
+ cdef public bint _meanprecipitation_ramflag
77
+ cdef public double[:] _meanprecipitation_array
78
+ cdef public bint _meanprecipitation_diskflag_reading
79
+ cdef public bint _meanprecipitation_diskflag_writing
80
+ cdef public double[:] _meanprecipitation_ncarray
81
+ cdef public bint _meanprecipitation_outputflag
82
+ cdef double *_meanprecipitation_outputpointer
83
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil
84
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil
85
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value)
86
+ cpdef inline void update_outputs(self) noexcept nogil
87
+ @cython.final
88
+ cdef class Model(masterinterface.MasterInterface):
89
+ cdef public Parameters parameters
90
+ cdef public Sequences sequences
91
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil
92
+ cpdef void reset_reuseflags(self) noexcept nogil
93
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil
94
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil
95
+ cpdef inline void run(self) noexcept nogil
96
+ cpdef inline void update_inlets(self) noexcept nogil
97
+ cpdef inline void update_outlets(self) noexcept nogil
98
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil
99
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil
100
+ cpdef inline void update_outputs(self) noexcept nogil
101
+ cpdef inline void calc_precipitation_v1(self) noexcept nogil
102
+ cpdef inline void adjust_precipitation_v1(self) noexcept nogil
103
+ cpdef inline void calc_meanprecipitation_v1(self) noexcept nogil
104
+ cpdef void determine_precipitation_v1(self) noexcept nogil
105
+ cpdef double get_precipitation_v1(self, numpy.int64_t s) noexcept nogil
106
+ cpdef double get_meanprecipitation_v1(self) noexcept nogil
107
+ cpdef inline void calc_precipitation(self) noexcept nogil
108
+ cpdef inline void adjust_precipitation(self) noexcept nogil
109
+ cpdef inline void calc_meanprecipitation(self) noexcept nogil
110
+ cpdef void determine_precipitation(self) noexcept nogil
111
+ cpdef double get_precipitation(self, numpy.int64_t s) noexcept nogil
112
+ cpdef double get_meanprecipitation(self) noexcept nogil