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,519 @@
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._globalradiation_inputflag:
58
+ self.globalradiation = self._globalradiation_inputpointer[0]
59
+ elif self._globalradiation_diskflag_reading:
60
+ self.globalradiation = self._globalradiation_ncarray[0]
61
+ elif self._globalradiation_ramflag:
62
+ self.globalradiation = self._globalradiation_array[idx]
63
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
64
+ cdef numpy.int64_t k
65
+ if self._globalradiation_diskflag_writing:
66
+ self._globalradiation_ncarray[0] = self.globalradiation
67
+ if self._globalradiation_ramflag:
68
+ self._globalradiation_array[idx] = self.globalradiation
69
+ cpdef inline set_pointerinput(self, str name, pointerutils.PDouble value):
70
+ if name == "globalradiation":
71
+ self._globalradiation_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._unadjustedsunshineduration_diskflag_reading:
101
+ self.unadjustedsunshineduration = self._unadjustedsunshineduration_ncarray[0]
102
+ elif self._unadjustedsunshineduration_ramflag:
103
+ self.unadjustedsunshineduration = self._unadjustedsunshineduration_array[idx]
104
+ if self._sunshineduration_diskflag_reading:
105
+ self.sunshineduration = self._sunshineduration_ncarray[0]
106
+ elif self._sunshineduration_ramflag:
107
+ self.sunshineduration = self._sunshineduration_array[idx]
108
+ if self._dailysunshineduration_diskflag_reading:
109
+ self.dailysunshineduration = self._dailysunshineduration_ncarray[0]
110
+ elif self._dailysunshineduration_ramflag:
111
+ self.dailysunshineduration = self._dailysunshineduration_array[idx]
112
+ if self._portiondailyradiation_diskflag_reading:
113
+ self.portiondailyradiation = self._portiondailyradiation_ncarray[0]
114
+ elif self._portiondailyradiation_ramflag:
115
+ self.portiondailyradiation = self._portiondailyradiation_array[idx]
116
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
117
+ cdef numpy.int64_t k
118
+ if self._earthsundistance_diskflag_writing:
119
+ self._earthsundistance_ncarray[0] = self.earthsundistance
120
+ if self._earthsundistance_ramflag:
121
+ self._earthsundistance_array[idx] = self.earthsundistance
122
+ if self._solardeclination_diskflag_writing:
123
+ self._solardeclination_ncarray[0] = self.solardeclination
124
+ if self._solardeclination_ramflag:
125
+ self._solardeclination_array[idx] = self.solardeclination
126
+ if self._timeofsunrise_diskflag_writing:
127
+ self._timeofsunrise_ncarray[0] = self.timeofsunrise
128
+ if self._timeofsunrise_ramflag:
129
+ self._timeofsunrise_array[idx] = self.timeofsunrise
130
+ if self._timeofsunset_diskflag_writing:
131
+ self._timeofsunset_ncarray[0] = self.timeofsunset
132
+ if self._timeofsunset_ramflag:
133
+ self._timeofsunset_array[idx] = self.timeofsunset
134
+ if self._possiblesunshineduration_diskflag_writing:
135
+ self._possiblesunshineduration_ncarray[0] = self.possiblesunshineduration
136
+ if self._possiblesunshineduration_ramflag:
137
+ self._possiblesunshineduration_array[idx] = self.possiblesunshineduration
138
+ if self._dailypossiblesunshineduration_diskflag_writing:
139
+ self._dailypossiblesunshineduration_ncarray[0] = self.dailypossiblesunshineduration
140
+ if self._dailypossiblesunshineduration_ramflag:
141
+ self._dailypossiblesunshineduration_array[idx] = self.dailypossiblesunshineduration
142
+ if self._unadjustedsunshineduration_diskflag_writing:
143
+ self._unadjustedsunshineduration_ncarray[0] = self.unadjustedsunshineduration
144
+ if self._unadjustedsunshineduration_ramflag:
145
+ self._unadjustedsunshineduration_array[idx] = self.unadjustedsunshineduration
146
+ if self._sunshineduration_diskflag_writing:
147
+ self._sunshineduration_ncarray[0] = self.sunshineduration
148
+ if self._sunshineduration_ramflag:
149
+ self._sunshineduration_array[idx] = self.sunshineduration
150
+ if self._dailysunshineduration_diskflag_writing:
151
+ self._dailysunshineduration_ncarray[0] = self.dailysunshineduration
152
+ if self._dailysunshineduration_ramflag:
153
+ self._dailysunshineduration_array[idx] = self.dailysunshineduration
154
+ if self._portiondailyradiation_diskflag_writing:
155
+ self._portiondailyradiation_ncarray[0] = self.portiondailyradiation
156
+ if self._portiondailyradiation_ramflag:
157
+ self._portiondailyradiation_array[idx] = self.portiondailyradiation
158
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
159
+ if name == "earthsundistance":
160
+ self._earthsundistance_outputpointer = value.p_value
161
+ if name == "solardeclination":
162
+ self._solardeclination_outputpointer = value.p_value
163
+ if name == "timeofsunrise":
164
+ self._timeofsunrise_outputpointer = value.p_value
165
+ if name == "timeofsunset":
166
+ self._timeofsunset_outputpointer = value.p_value
167
+ if name == "possiblesunshineduration":
168
+ self._possiblesunshineduration_outputpointer = value.p_value
169
+ if name == "dailypossiblesunshineduration":
170
+ self._dailypossiblesunshineduration_outputpointer = value.p_value
171
+ if name == "unadjustedsunshineduration":
172
+ self._unadjustedsunshineduration_outputpointer = value.p_value
173
+ if name == "sunshineduration":
174
+ self._sunshineduration_outputpointer = value.p_value
175
+ if name == "dailysunshineduration":
176
+ self._dailysunshineduration_outputpointer = value.p_value
177
+ if name == "portiondailyradiation":
178
+ self._portiondailyradiation_outputpointer = value.p_value
179
+ cpdef inline void update_outputs(self) noexcept nogil:
180
+ if self._earthsundistance_outputflag:
181
+ self._earthsundistance_outputpointer[0] = self.earthsundistance
182
+ if self._solardeclination_outputflag:
183
+ self._solardeclination_outputpointer[0] = self.solardeclination
184
+ if self._timeofsunrise_outputflag:
185
+ self._timeofsunrise_outputpointer[0] = self.timeofsunrise
186
+ if self._timeofsunset_outputflag:
187
+ self._timeofsunset_outputpointer[0] = self.timeofsunset
188
+ if self._possiblesunshineduration_outputflag:
189
+ self._possiblesunshineduration_outputpointer[0] = self.possiblesunshineduration
190
+ if self._dailypossiblesunshineduration_outputflag:
191
+ self._dailypossiblesunshineduration_outputpointer[0] = self.dailypossiblesunshineduration
192
+ if self._unadjustedsunshineduration_outputflag:
193
+ self._unadjustedsunshineduration_outputpointer[0] = self.unadjustedsunshineduration
194
+ if self._sunshineduration_outputflag:
195
+ self._sunshineduration_outputpointer[0] = self.sunshineduration
196
+ if self._dailysunshineduration_outputflag:
197
+ self._dailysunshineduration_outputpointer[0] = self.dailysunshineduration
198
+ if self._portiondailyradiation_outputflag:
199
+ self._portiondailyradiation_outputpointer[0] = self.portiondailyradiation
200
+ @cython.final
201
+ cdef class FluxSequences:
202
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
203
+ cdef numpy.int64_t k
204
+ if self._extraterrestrialradiation_diskflag_reading:
205
+ self.extraterrestrialradiation = self._extraterrestrialradiation_ncarray[0]
206
+ elif self._extraterrestrialradiation_ramflag:
207
+ self.extraterrestrialradiation = self._extraterrestrialradiation_array[idx]
208
+ if self._clearskysolarradiation_diskflag_reading:
209
+ self.clearskysolarradiation = self._clearskysolarradiation_ncarray[0]
210
+ elif self._clearskysolarradiation_ramflag:
211
+ self.clearskysolarradiation = self._clearskysolarradiation_array[idx]
212
+ if self._dailyglobalradiation_diskflag_reading:
213
+ self.dailyglobalradiation = self._dailyglobalradiation_ncarray[0]
214
+ elif self._dailyglobalradiation_ramflag:
215
+ self.dailyglobalradiation = self._dailyglobalradiation_array[idx]
216
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
217
+ cdef numpy.int64_t k
218
+ if self._extraterrestrialradiation_diskflag_writing:
219
+ self._extraterrestrialradiation_ncarray[0] = self.extraterrestrialradiation
220
+ if self._extraterrestrialradiation_ramflag:
221
+ self._extraterrestrialradiation_array[idx] = self.extraterrestrialradiation
222
+ if self._clearskysolarradiation_diskflag_writing:
223
+ self._clearskysolarradiation_ncarray[0] = self.clearskysolarradiation
224
+ if self._clearskysolarradiation_ramflag:
225
+ self._clearskysolarradiation_array[idx] = self.clearskysolarradiation
226
+ if self._dailyglobalradiation_diskflag_writing:
227
+ self._dailyglobalradiation_ncarray[0] = self.dailyglobalradiation
228
+ if self._dailyglobalradiation_ramflag:
229
+ self._dailyglobalradiation_array[idx] = self.dailyglobalradiation
230
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
231
+ if name == "extraterrestrialradiation":
232
+ self._extraterrestrialradiation_outputpointer = value.p_value
233
+ if name == "clearskysolarradiation":
234
+ self._clearskysolarradiation_outputpointer = value.p_value
235
+ if name == "dailyglobalradiation":
236
+ self._dailyglobalradiation_outputpointer = value.p_value
237
+ cpdef inline void update_outputs(self) noexcept nogil:
238
+ if self._extraterrestrialradiation_outputflag:
239
+ self._extraterrestrialradiation_outputpointer[0] = self.extraterrestrialradiation
240
+ if self._clearskysolarradiation_outputflag:
241
+ self._clearskysolarradiation_outputpointer[0] = self.clearskysolarradiation
242
+ if self._dailyglobalradiation_outputflag:
243
+ self._dailyglobalradiation_outputpointer[0] = self.dailyglobalradiation
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_loggedglobalradiation_v1()
272
+ self.calc_dailyglobalradiation_v2()
273
+ self.calc_extraterrestrialradiation_v2()
274
+ self.calc_clearskysolarradiation_v1()
275
+ self.calc_dailysunshineduration_v2()
276
+ self.calc_portiondailyradiation_v1()
277
+ self.adjust_clearskysolarradiation_v1()
278
+ self.calc_unadjustedsunshineduration_v1()
279
+ self.update_loggedunadjustedsunshineduration_v1()
280
+ self.calc_sunshineduration_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_loggedglobalradiation_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.loggedglobalradiation[idx] = self.sequences.logs.loggedglobalradiation[idx - 1]
319
+ self.sequences.logs.loggedglobalradiation[0] = self.sequences.inputs.globalradiation
320
+ cpdef inline void calc_dailyglobalradiation_v2(self) noexcept nogil:
321
+ cdef numpy.int64_t idx
322
+ self.sequences.fluxes.dailyglobalradiation = 0.0
323
+ for idx in range(self.parameters.derived.nmblogentries):
324
+ self.sequences.fluxes.dailyglobalradiation = self.sequences.fluxes.dailyglobalradiation + (self.sequences.logs.loggedglobalradiation[idx])
325
+ self.sequences.fluxes.dailyglobalradiation = self.sequences.fluxes.dailyglobalradiation / (self.parameters.derived.nmblogentries)
326
+ cpdef inline void calc_extraterrestrialradiation_v2(self) noexcept nogil:
327
+ cdef double d_sunsethourangle
328
+ d_sunsethourangle = (self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise) * self.parameters.fixed.pi / 24.0
329
+ 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) )
330
+ cpdef inline void calc_clearskysolarradiation_v1(self) noexcept nogil:
331
+ cdef numpy.int64_t idx
332
+ idx = self.parameters.derived.moy[self.idx_sim]
333
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] )
334
+ cpdef inline void calc_dailysunshineduration_v2(self) noexcept nogil:
335
+ self.sequences.factors.dailysunshineduration = self.return_sunshineduration_v1( self.sequences.fluxes.dailyglobalradiation, self.sequences.fluxes.extraterrestrialradiation, self.sequences.factors.dailypossiblesunshineduration, )
336
+ cpdef inline void calc_portiondailyradiation_v1(self) noexcept nogil:
337
+ cdef double d_temp
338
+ cdef double d_p
339
+ cdef double d_tlp
340
+ cdef double d_dt
341
+ cdef numpy.int64_t i
342
+ cdef double d_fac
343
+ d_fac = 2.0 * self.parameters.fixed.pi / 360.0
344
+ self.sequences.factors.portiondailyradiation = 0.0
345
+ for i in range(2):
346
+ if i:
347
+ d_dt = self.parameters.derived.hours / 2.0
348
+ else:
349
+ d_dt = -self.parameters.derived.hours / 2.0
350
+ 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) )
351
+ if d_tlp <= 0.0:
352
+ d_p = 0.0
353
+ elif d_tlp < 100.0 * d_fac:
354
+ d_p = 50.0 - 50.0 * cos(1.8 * d_tlp)
355
+ d_temp = 3.4 * sin(3.6 * d_tlp) ** 2
356
+ if d_tlp <= 50.0 * d_fac:
357
+ d_p = d_p - (d_temp)
358
+ else:
359
+ d_p = d_p + (d_temp)
360
+ else:
361
+ d_p = 100.0
362
+ if i:
363
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation + (d_p)
364
+ else:
365
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation - (d_p)
366
+ cpdef inline void adjust_clearskysolarradiation_v1(self) noexcept nogil:
367
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.clearskysolarradiation * (( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ))
368
+ cpdef inline void calc_unadjustedsunshineduration_v1(self) noexcept nogil:
369
+ self.sequences.factors.unadjustedsunshineduration = self.return_sunshineduration_v1( self.sequences.inputs.globalradiation, self.sequences.fluxes.extraterrestrialradiation * self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0, self.sequences.factors.possiblesunshineduration, )
370
+ cpdef inline void update_loggedunadjustedsunshineduration_v1(self) noexcept nogil:
371
+ cdef numpy.int64_t idx
372
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
373
+ self.sequences.logs.loggedunadjustedsunshineduration[idx] = ( self.sequences.logs.loggedunadjustedsunshineduration[idx - 1] )
374
+ self.sequences.logs.loggedunadjustedsunshineduration[0] = self.sequences.factors.unadjustedsunshineduration
375
+ cpdef inline void calc_sunshineduration_v2(self) noexcept nogil:
376
+ cdef numpy.int64_t idx
377
+ cdef double d_denom
378
+ cdef double d_nom
379
+ d_nom = self.sequences.factors.unadjustedsunshineduration * self.sequences.factors.dailysunshineduration
380
+ if d_nom == 0.0:
381
+ self.sequences.factors.sunshineduration = 0.0
382
+ else:
383
+ d_denom = 0.0
384
+ for idx in range(self.parameters.derived.nmblogentries):
385
+ d_denom = d_denom + (self.sequences.logs.loggedunadjustedsunshineduration[idx])
386
+ self.sequences.factors.sunshineduration = min(d_nom / d_denom, self.sequences.factors.possiblesunshineduration)
387
+ cpdef void process_radiation_v1(self) noexcept nogil:
388
+ if not self.__hydpy_reuse_process_radiation_v1__:
389
+ self.run()
390
+ self.__hydpy_reuse_process_radiation_v1__ = True
391
+ cpdef double get_possiblesunshineduration_v1(self) noexcept nogil:
392
+ return self.sequences.factors.possiblesunshineduration
393
+ cpdef double get_sunshineduration_v1(self) noexcept nogil:
394
+ return self.sequences.factors.sunshineduration
395
+ cpdef double get_clearskysolarradiation_v1(self) noexcept nogil:
396
+ return self.sequences.fluxes.clearskysolarradiation
397
+ cpdef double get_globalradiation_v2(self) noexcept nogil:
398
+ return self.sequences.inputs.globalradiation
399
+ cpdef inline double return_sunshineduration_v1(self, double globalradiation, double extraterrestrialradiation, double possiblesunshineduration) noexcept nogil:
400
+ cdef double d_sd
401
+ cdef numpy.int64_t idx
402
+ if extraterrestrialradiation <= 0.0:
403
+ return possiblesunshineduration
404
+ idx = self.parameters.derived.moy[self.idx_sim]
405
+ d_sd = (possiblesunshineduration / self.parameters.control.angstromfactor[idx]) * ( globalradiation / extraterrestrialradiation - self.parameters.control.angstromconstant[idx] )
406
+ return min(max(d_sd, 0.0), possiblesunshineduration)
407
+ cpdef inline void calc_earthsundistance(self) noexcept nogil:
408
+ self.sequences.factors.earthsundistance = 1.0 + 0.033 * cos( 2 * self.parameters.fixed.pi / 366.0 * (self.parameters.derived.doy[self.idx_sim] + 1) )
409
+ cpdef inline void calc_solardeclination(self) noexcept nogil:
410
+ self.sequences.factors.solardeclination = 0.41 * cos( 2.0 * self.parameters.fixed.pi * (self.parameters.derived.doy[self.idx_sim] - 171.0) / 365.0 )
411
+ cpdef inline void calc_timeofsunrise_timeofsunset(self) noexcept nogil:
412
+ cdef double d_dt
413
+ 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) )
414
+ self.sequences.factors.timeofsunset = 24.0 - self.sequences.factors.timeofsunrise
415
+ d_dt = (self.parameters.derived.utclongitude - self.parameters.control.longitude) * 4.0 / 60.0
416
+ self.sequences.factors.timeofsunrise = self.sequences.factors.timeofsunrise + (d_dt)
417
+ self.sequences.factors.timeofsunset = self.sequences.factors.timeofsunset + (d_dt)
418
+ cpdef inline void calc_dailypossiblesunshineduration(self) noexcept nogil:
419
+ self.sequences.factors.dailypossiblesunshineduration = self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise
420
+ cpdef inline void calc_possiblesunshineduration(self) noexcept nogil:
421
+ cdef double d_t1
422
+ cdef double d_t0
423
+ cdef double d_stc
424
+ d_stc = self.parameters.derived.sct[self.idx_sim]
425
+ d_t0 = max((d_stc - self.parameters.derived.hours / 2.0), self.sequences.factors.timeofsunrise)
426
+ d_t1 = min((d_stc + self.parameters.derived.hours / 2.0), self.sequences.factors.timeofsunset)
427
+ self.sequences.factors.possiblesunshineduration = max(d_t1 - d_t0, 0.0)
428
+ cpdef inline void update_loggedglobalradiation(self) noexcept nogil:
429
+ cdef numpy.int64_t idx
430
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
431
+ self.sequences.logs.loggedglobalradiation[idx] = self.sequences.logs.loggedglobalradiation[idx - 1]
432
+ self.sequences.logs.loggedglobalradiation[0] = self.sequences.inputs.globalradiation
433
+ cpdef inline void calc_dailyglobalradiation(self) noexcept nogil:
434
+ cdef numpy.int64_t idx
435
+ self.sequences.fluxes.dailyglobalradiation = 0.0
436
+ for idx in range(self.parameters.derived.nmblogentries):
437
+ self.sequences.fluxes.dailyglobalradiation = self.sequences.fluxes.dailyglobalradiation + (self.sequences.logs.loggedglobalradiation[idx])
438
+ self.sequences.fluxes.dailyglobalradiation = self.sequences.fluxes.dailyglobalradiation / (self.parameters.derived.nmblogentries)
439
+ cpdef inline void calc_extraterrestrialradiation(self) noexcept nogil:
440
+ cdef double d_sunsethourangle
441
+ d_sunsethourangle = (self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise) * self.parameters.fixed.pi / 24.0
442
+ 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) )
443
+ cpdef inline void calc_clearskysolarradiation(self) noexcept nogil:
444
+ cdef numpy.int64_t idx
445
+ idx = self.parameters.derived.moy[self.idx_sim]
446
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] )
447
+ cpdef inline void calc_dailysunshineduration(self) noexcept nogil:
448
+ self.sequences.factors.dailysunshineduration = self.return_sunshineduration_v1( self.sequences.fluxes.dailyglobalradiation, self.sequences.fluxes.extraterrestrialradiation, self.sequences.factors.dailypossiblesunshineduration, )
449
+ cpdef inline void calc_portiondailyradiation(self) noexcept nogil:
450
+ cdef double d_temp
451
+ cdef double d_p
452
+ cdef double d_tlp
453
+ cdef double d_dt
454
+ cdef numpy.int64_t i
455
+ cdef double d_fac
456
+ d_fac = 2.0 * self.parameters.fixed.pi / 360.0
457
+ self.sequences.factors.portiondailyradiation = 0.0
458
+ for i in range(2):
459
+ if i:
460
+ d_dt = self.parameters.derived.hours / 2.0
461
+ else:
462
+ d_dt = -self.parameters.derived.hours / 2.0
463
+ 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) )
464
+ if d_tlp <= 0.0:
465
+ d_p = 0.0
466
+ elif d_tlp < 100.0 * d_fac:
467
+ d_p = 50.0 - 50.0 * cos(1.8 * d_tlp)
468
+ d_temp = 3.4 * sin(3.6 * d_tlp) ** 2
469
+ if d_tlp <= 50.0 * d_fac:
470
+ d_p = d_p - (d_temp)
471
+ else:
472
+ d_p = d_p + (d_temp)
473
+ else:
474
+ d_p = 100.0
475
+ if i:
476
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation + (d_p)
477
+ else:
478
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation - (d_p)
479
+ cpdef inline void adjust_clearskysolarradiation(self) noexcept nogil:
480
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.clearskysolarradiation * (( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ))
481
+ cpdef inline void calc_unadjustedsunshineduration(self) noexcept nogil:
482
+ self.sequences.factors.unadjustedsunshineduration = self.return_sunshineduration_v1( self.sequences.inputs.globalradiation, self.sequences.fluxes.extraterrestrialradiation * self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0, self.sequences.factors.possiblesunshineduration, )
483
+ cpdef inline void update_loggedunadjustedsunshineduration(self) noexcept nogil:
484
+ cdef numpy.int64_t idx
485
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
486
+ self.sequences.logs.loggedunadjustedsunshineduration[idx] = ( self.sequences.logs.loggedunadjustedsunshineduration[idx - 1] )
487
+ self.sequences.logs.loggedunadjustedsunshineduration[0] = self.sequences.factors.unadjustedsunshineduration
488
+ cpdef inline void calc_sunshineduration(self) noexcept nogil:
489
+ cdef numpy.int64_t idx
490
+ cdef double d_denom
491
+ cdef double d_nom
492
+ d_nom = self.sequences.factors.unadjustedsunshineduration * self.sequences.factors.dailysunshineduration
493
+ if d_nom == 0.0:
494
+ self.sequences.factors.sunshineduration = 0.0
495
+ else:
496
+ d_denom = 0.0
497
+ for idx in range(self.parameters.derived.nmblogentries):
498
+ d_denom = d_denom + (self.sequences.logs.loggedunadjustedsunshineduration[idx])
499
+ self.sequences.factors.sunshineduration = min(d_nom / d_denom, self.sequences.factors.possiblesunshineduration)
500
+ cpdef void process_radiation(self) noexcept nogil:
501
+ if not self.__hydpy_reuse_process_radiation_v1__:
502
+ self.run()
503
+ self.__hydpy_reuse_process_radiation_v1__ = True
504
+ cpdef double get_possiblesunshineduration(self) noexcept nogil:
505
+ return self.sequences.factors.possiblesunshineduration
506
+ cpdef double get_sunshineduration(self) noexcept nogil:
507
+ return self.sequences.factors.sunshineduration
508
+ cpdef double get_clearskysolarradiation(self) noexcept nogil:
509
+ return self.sequences.fluxes.clearskysolarradiation
510
+ cpdef double get_globalradiation(self) noexcept nogil:
511
+ return self.sequences.inputs.globalradiation
512
+ cpdef inline double return_sunshineduration(self, double globalradiation, double extraterrestrialradiation, double possiblesunshineduration) noexcept nogil:
513
+ cdef double d_sd
514
+ cdef numpy.int64_t idx
515
+ if extraterrestrialradiation <= 0.0:
516
+ return possiblesunshineduration
517
+ idx = self.parameters.derived.moy[self.idx_sim]
518
+ d_sd = (possiblesunshineduration / self.parameters.control.angstromfactor[idx]) * ( globalradiation / extraterrestrialradiation - self.parameters.control.angstromconstant[idx] )
519
+ return min(max(d_sd, 0.0), possiblesunshineduration)
@@ -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[:] temperatureaddend
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 FactorSequences factors
47
+ @cython.final
48
+ cdef class InputSequences:
49
+ cdef public double temperature
50
+ cdef public numpy.int64_t _temperature_ndim
51
+ cdef public numpy.int64_t _temperature_length
52
+ cdef public bint _temperature_ramflag
53
+ cdef public double[:] _temperature_array
54
+ cdef public bint _temperature_diskflag_reading
55
+ cdef public bint _temperature_diskflag_writing
56
+ cdef public double[:] _temperature_ncarray
57
+ cdef public bint _temperature_inputflag
58
+ cdef double *_temperature_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 FactorSequences:
64
+ cdef public double[:] temperature
65
+ cdef public numpy.int64_t _temperature_ndim
66
+ cdef public numpy.int64_t _temperature_length
67
+ cdef public numpy.int64_t _temperature_length_0
68
+ cdef public bint _temperature_ramflag
69
+ cdef public double[:,:] _temperature_array
70
+ cdef public bint _temperature_diskflag_reading
71
+ cdef public bint _temperature_diskflag_writing
72
+ cdef public double[:] _temperature_ncarray
73
+ cdef public double meantemperature
74
+ cdef public numpy.int64_t _meantemperature_ndim
75
+ cdef public numpy.int64_t _meantemperature_length
76
+ cdef public bint _meantemperature_ramflag
77
+ cdef public double[:] _meantemperature_array
78
+ cdef public bint _meantemperature_diskflag_reading
79
+ cdef public bint _meantemperature_diskflag_writing
80
+ cdef public double[:] _meantemperature_ncarray
81
+ cdef public bint _meantemperature_outputflag
82
+ cdef double *_meantemperature_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_temperature_v1(self) noexcept nogil
102
+ cpdef inline void adjust_temperature_v1(self) noexcept nogil
103
+ cpdef inline void calc_meantemperature_v1(self) noexcept nogil
104
+ cpdef void determine_temperature_v1(self) noexcept nogil
105
+ cpdef double get_temperature_v1(self, numpy.int64_t s) noexcept nogil
106
+ cpdef double get_meantemperature_v1(self) noexcept nogil
107
+ cpdef inline void calc_temperature(self) noexcept nogil
108
+ cpdef inline void adjust_temperature(self) noexcept nogil
109
+ cpdef inline void calc_meantemperature(self) noexcept nogil
110
+ cpdef void determine_temperature(self) noexcept nogil
111
+ cpdef double get_temperature(self, numpy.int64_t s) noexcept nogil
112
+ cpdef double get_meantemperature(self) noexcept nogil