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,879 @@
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._possiblesunshineduration_inputflag:
58
+ self.possiblesunshineduration = self._possiblesunshineduration_inputpointer[0]
59
+ elif self._possiblesunshineduration_diskflag_reading:
60
+ self.possiblesunshineduration = self._possiblesunshineduration_ncarray[0]
61
+ elif self._possiblesunshineduration_ramflag:
62
+ self.possiblesunshineduration = self._possiblesunshineduration_array[idx]
63
+ if self._sunshineduration_inputflag:
64
+ self.sunshineduration = self._sunshineduration_inputpointer[0]
65
+ elif self._sunshineduration_diskflag_reading:
66
+ self.sunshineduration = self._sunshineduration_ncarray[0]
67
+ elif self._sunshineduration_ramflag:
68
+ self.sunshineduration = self._sunshineduration_array[idx]
69
+ if self._clearskysolarradiation_inputflag:
70
+ self.clearskysolarradiation = self._clearskysolarradiation_inputpointer[0]
71
+ elif self._clearskysolarradiation_diskflag_reading:
72
+ self.clearskysolarradiation = self._clearskysolarradiation_ncarray[0]
73
+ elif self._clearskysolarradiation_ramflag:
74
+ self.clearskysolarradiation = self._clearskysolarradiation_array[idx]
75
+ if self._globalradiation_inputflag:
76
+ self.globalradiation = self._globalradiation_inputpointer[0]
77
+ elif self._globalradiation_diskflag_reading:
78
+ self.globalradiation = self._globalradiation_ncarray[0]
79
+ elif self._globalradiation_ramflag:
80
+ self.globalradiation = self._globalradiation_array[idx]
81
+ if self._temperature_inputflag:
82
+ self.temperature = self._temperature_inputpointer[0]
83
+ elif self._temperature_diskflag_reading:
84
+ self.temperature = self._temperature_ncarray[0]
85
+ elif self._temperature_ramflag:
86
+ self.temperature = self._temperature_array[idx]
87
+ if self._precipitation_inputflag:
88
+ self.precipitation = self._precipitation_inputpointer[0]
89
+ elif self._precipitation_diskflag_reading:
90
+ self.precipitation = self._precipitation_ncarray[0]
91
+ elif self._precipitation_ramflag:
92
+ self.precipitation = self._precipitation_array[idx]
93
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
94
+ cdef numpy.int64_t k
95
+ if self._possiblesunshineduration_diskflag_writing:
96
+ self._possiblesunshineduration_ncarray[0] = self.possiblesunshineduration
97
+ if self._possiblesunshineduration_ramflag:
98
+ self._possiblesunshineduration_array[idx] = self.possiblesunshineduration
99
+ if self._sunshineduration_diskflag_writing:
100
+ self._sunshineduration_ncarray[0] = self.sunshineduration
101
+ if self._sunshineduration_ramflag:
102
+ self._sunshineduration_array[idx] = self.sunshineduration
103
+ if self._clearskysolarradiation_diskflag_writing:
104
+ self._clearskysolarradiation_ncarray[0] = self.clearskysolarradiation
105
+ if self._clearskysolarradiation_ramflag:
106
+ self._clearskysolarradiation_array[idx] = self.clearskysolarradiation
107
+ if self._globalradiation_diskflag_writing:
108
+ self._globalradiation_ncarray[0] = self.globalradiation
109
+ if self._globalradiation_ramflag:
110
+ self._globalradiation_array[idx] = self.globalradiation
111
+ if self._temperature_diskflag_writing:
112
+ self._temperature_ncarray[0] = self.temperature
113
+ if self._temperature_ramflag:
114
+ self._temperature_array[idx] = self.temperature
115
+ if self._precipitation_diskflag_writing:
116
+ self._precipitation_ncarray[0] = self.precipitation
117
+ if self._precipitation_ramflag:
118
+ self._precipitation_array[idx] = self.precipitation
119
+ cpdef inline set_pointerinput(self, str name, pointerutils.PDouble value):
120
+ if name == "possiblesunshineduration":
121
+ self._possiblesunshineduration_inputpointer = value.p_value
122
+ if name == "sunshineduration":
123
+ self._sunshineduration_inputpointer = value.p_value
124
+ if name == "clearskysolarradiation":
125
+ self._clearskysolarradiation_inputpointer = value.p_value
126
+ if name == "globalradiation":
127
+ self._globalradiation_inputpointer = value.p_value
128
+ if name == "temperature":
129
+ self._temperature_inputpointer = value.p_value
130
+ if name == "precipitation":
131
+ self._precipitation_inputpointer = value.p_value
132
+ @cython.final
133
+ cdef class FactorSequences:
134
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
135
+ cdef numpy.int64_t jdx0
136
+ cdef numpy.int64_t k
137
+ if self._earthsundistance_diskflag_reading:
138
+ self.earthsundistance = self._earthsundistance_ncarray[0]
139
+ elif self._earthsundistance_ramflag:
140
+ self.earthsundistance = self._earthsundistance_array[idx]
141
+ if self._solardeclination_diskflag_reading:
142
+ self.solardeclination = self._solardeclination_ncarray[0]
143
+ elif self._solardeclination_ramflag:
144
+ self.solardeclination = self._solardeclination_array[idx]
145
+ if self._sunsethourangle_diskflag_reading:
146
+ self.sunsethourangle = self._sunsethourangle_ncarray[0]
147
+ elif self._sunsethourangle_ramflag:
148
+ self.sunsethourangle = self._sunsethourangle_array[idx]
149
+ if self._solartimeangle_diskflag_reading:
150
+ self.solartimeangle = self._solartimeangle_ncarray[0]
151
+ elif self._solartimeangle_ramflag:
152
+ self.solartimeangle = self._solartimeangle_array[idx]
153
+ if self._timeofsunrise_diskflag_reading:
154
+ self.timeofsunrise = self._timeofsunrise_ncarray[0]
155
+ elif self._timeofsunrise_ramflag:
156
+ self.timeofsunrise = self._timeofsunrise_array[idx]
157
+ if self._timeofsunset_diskflag_reading:
158
+ self.timeofsunset = self._timeofsunset_ncarray[0]
159
+ elif self._timeofsunset_ramflag:
160
+ self.timeofsunset = self._timeofsunset_array[idx]
161
+ if self._possiblesunshineduration_diskflag_reading:
162
+ self.possiblesunshineduration = self._possiblesunshineduration_ncarray[0]
163
+ elif self._possiblesunshineduration_ramflag:
164
+ self.possiblesunshineduration = self._possiblesunshineduration_array[idx]
165
+ if self._dailypossiblesunshineduration_diskflag_reading:
166
+ self.dailypossiblesunshineduration = self._dailypossiblesunshineduration_ncarray[0]
167
+ elif self._dailypossiblesunshineduration_ramflag:
168
+ self.dailypossiblesunshineduration = self._dailypossiblesunshineduration_array[idx]
169
+ if self._unadjustedsunshineduration_diskflag_reading:
170
+ self.unadjustedsunshineduration = self._unadjustedsunshineduration_ncarray[0]
171
+ elif self._unadjustedsunshineduration_ramflag:
172
+ self.unadjustedsunshineduration = self._unadjustedsunshineduration_array[idx]
173
+ if self._sunshineduration_diskflag_reading:
174
+ self.sunshineduration = self._sunshineduration_ncarray[0]
175
+ elif self._sunshineduration_ramflag:
176
+ self.sunshineduration = self._sunshineduration_array[idx]
177
+ if self._dailysunshineduration_diskflag_reading:
178
+ self.dailysunshineduration = self._dailysunshineduration_ncarray[0]
179
+ elif self._dailysunshineduration_ramflag:
180
+ self.dailysunshineduration = self._dailysunshineduration_array[idx]
181
+ if self._portiondailyradiation_diskflag_reading:
182
+ self.portiondailyradiation = self._portiondailyradiation_ncarray[0]
183
+ elif self._portiondailyradiation_ramflag:
184
+ self.portiondailyradiation = self._portiondailyradiation_array[idx]
185
+ if self._temperature_diskflag_reading:
186
+ k = 0
187
+ for jdx0 in range(self._temperature_length_0):
188
+ self.temperature[jdx0] = self._temperature_ncarray[k]
189
+ k += 1
190
+ elif self._temperature_ramflag:
191
+ for jdx0 in range(self._temperature_length_0):
192
+ self.temperature[jdx0] = self._temperature_array[idx, jdx0]
193
+ if self._meantemperature_diskflag_reading:
194
+ self.meantemperature = self._meantemperature_ncarray[0]
195
+ elif self._meantemperature_ramflag:
196
+ self.meantemperature = self._meantemperature_array[idx]
197
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
198
+ cdef numpy.int64_t jdx0
199
+ cdef numpy.int64_t k
200
+ if self._earthsundistance_diskflag_writing:
201
+ self._earthsundistance_ncarray[0] = self.earthsundistance
202
+ if self._earthsundistance_ramflag:
203
+ self._earthsundistance_array[idx] = self.earthsundistance
204
+ if self._solardeclination_diskflag_writing:
205
+ self._solardeclination_ncarray[0] = self.solardeclination
206
+ if self._solardeclination_ramflag:
207
+ self._solardeclination_array[idx] = self.solardeclination
208
+ if self._sunsethourangle_diskflag_writing:
209
+ self._sunsethourangle_ncarray[0] = self.sunsethourangle
210
+ if self._sunsethourangle_ramflag:
211
+ self._sunsethourangle_array[idx] = self.sunsethourangle
212
+ if self._solartimeangle_diskflag_writing:
213
+ self._solartimeangle_ncarray[0] = self.solartimeangle
214
+ if self._solartimeangle_ramflag:
215
+ self._solartimeangle_array[idx] = self.solartimeangle
216
+ if self._timeofsunrise_diskflag_writing:
217
+ self._timeofsunrise_ncarray[0] = self.timeofsunrise
218
+ if self._timeofsunrise_ramflag:
219
+ self._timeofsunrise_array[idx] = self.timeofsunrise
220
+ if self._timeofsunset_diskflag_writing:
221
+ self._timeofsunset_ncarray[0] = self.timeofsunset
222
+ if self._timeofsunset_ramflag:
223
+ self._timeofsunset_array[idx] = self.timeofsunset
224
+ if self._possiblesunshineduration_diskflag_writing:
225
+ self._possiblesunshineduration_ncarray[0] = self.possiblesunshineduration
226
+ if self._possiblesunshineduration_ramflag:
227
+ self._possiblesunshineduration_array[idx] = self.possiblesunshineduration
228
+ if self._dailypossiblesunshineduration_diskflag_writing:
229
+ self._dailypossiblesunshineduration_ncarray[0] = self.dailypossiblesunshineduration
230
+ if self._dailypossiblesunshineduration_ramflag:
231
+ self._dailypossiblesunshineduration_array[idx] = self.dailypossiblesunshineduration
232
+ if self._unadjustedsunshineduration_diskflag_writing:
233
+ self._unadjustedsunshineduration_ncarray[0] = self.unadjustedsunshineduration
234
+ if self._unadjustedsunshineduration_ramflag:
235
+ self._unadjustedsunshineduration_array[idx] = self.unadjustedsunshineduration
236
+ if self._sunshineduration_diskflag_writing:
237
+ self._sunshineduration_ncarray[0] = self.sunshineduration
238
+ if self._sunshineduration_ramflag:
239
+ self._sunshineduration_array[idx] = self.sunshineduration
240
+ if self._dailysunshineduration_diskflag_writing:
241
+ self._dailysunshineduration_ncarray[0] = self.dailysunshineduration
242
+ if self._dailysunshineduration_ramflag:
243
+ self._dailysunshineduration_array[idx] = self.dailysunshineduration
244
+ if self._portiondailyradiation_diskflag_writing:
245
+ self._portiondailyradiation_ncarray[0] = self.portiondailyradiation
246
+ if self._portiondailyradiation_ramflag:
247
+ self._portiondailyradiation_array[idx] = self.portiondailyradiation
248
+ if self._temperature_diskflag_writing:
249
+ k = 0
250
+ for jdx0 in range(self._temperature_length_0):
251
+ self._temperature_ncarray[k] = self.temperature[jdx0]
252
+ k += 1
253
+ if self._temperature_ramflag:
254
+ for jdx0 in range(self._temperature_length_0):
255
+ self._temperature_array[idx, jdx0] = self.temperature[jdx0]
256
+ if self._meantemperature_diskflag_writing:
257
+ self._meantemperature_ncarray[0] = self.meantemperature
258
+ if self._meantemperature_ramflag:
259
+ self._meantemperature_array[idx] = self.meantemperature
260
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
261
+ if name == "earthsundistance":
262
+ self._earthsundistance_outputpointer = value.p_value
263
+ if name == "solardeclination":
264
+ self._solardeclination_outputpointer = value.p_value
265
+ if name == "sunsethourangle":
266
+ self._sunsethourangle_outputpointer = value.p_value
267
+ if name == "solartimeangle":
268
+ self._solartimeangle_outputpointer = value.p_value
269
+ if name == "timeofsunrise":
270
+ self._timeofsunrise_outputpointer = value.p_value
271
+ if name == "timeofsunset":
272
+ self._timeofsunset_outputpointer = value.p_value
273
+ if name == "possiblesunshineduration":
274
+ self._possiblesunshineduration_outputpointer = value.p_value
275
+ if name == "dailypossiblesunshineduration":
276
+ self._dailypossiblesunshineduration_outputpointer = value.p_value
277
+ if name == "unadjustedsunshineduration":
278
+ self._unadjustedsunshineduration_outputpointer = value.p_value
279
+ if name == "sunshineduration":
280
+ self._sunshineduration_outputpointer = value.p_value
281
+ if name == "dailysunshineduration":
282
+ self._dailysunshineduration_outputpointer = value.p_value
283
+ if name == "portiondailyradiation":
284
+ self._portiondailyradiation_outputpointer = value.p_value
285
+ if name == "meantemperature":
286
+ self._meantemperature_outputpointer = value.p_value
287
+ cpdef inline void update_outputs(self) noexcept nogil:
288
+ if self._earthsundistance_outputflag:
289
+ self._earthsundistance_outputpointer[0] = self.earthsundistance
290
+ if self._solardeclination_outputflag:
291
+ self._solardeclination_outputpointer[0] = self.solardeclination
292
+ if self._sunsethourangle_outputflag:
293
+ self._sunsethourangle_outputpointer[0] = self.sunsethourangle
294
+ if self._solartimeangle_outputflag:
295
+ self._solartimeangle_outputpointer[0] = self.solartimeangle
296
+ if self._timeofsunrise_outputflag:
297
+ self._timeofsunrise_outputpointer[0] = self.timeofsunrise
298
+ if self._timeofsunset_outputflag:
299
+ self._timeofsunset_outputpointer[0] = self.timeofsunset
300
+ if self._possiblesunshineduration_outputflag:
301
+ self._possiblesunshineduration_outputpointer[0] = self.possiblesunshineduration
302
+ if self._dailypossiblesunshineduration_outputflag:
303
+ self._dailypossiblesunshineduration_outputpointer[0] = self.dailypossiblesunshineduration
304
+ if self._unadjustedsunshineduration_outputflag:
305
+ self._unadjustedsunshineduration_outputpointer[0] = self.unadjustedsunshineduration
306
+ if self._sunshineduration_outputflag:
307
+ self._sunshineduration_outputpointer[0] = self.sunshineduration
308
+ if self._dailysunshineduration_outputflag:
309
+ self._dailysunshineduration_outputpointer[0] = self.dailysunshineduration
310
+ if self._portiondailyradiation_outputflag:
311
+ self._portiondailyradiation_outputpointer[0] = self.portiondailyradiation
312
+ if self._meantemperature_outputflag:
313
+ self._meantemperature_outputpointer[0] = self.meantemperature
314
+ @cython.final
315
+ cdef class FluxSequences:
316
+ cpdef inline void load_data(self, numpy.int64_t idx) noexcept nogil:
317
+ cdef numpy.int64_t jdx0
318
+ cdef numpy.int64_t k
319
+ if self._extraterrestrialradiation_diskflag_reading:
320
+ self.extraterrestrialradiation = self._extraterrestrialradiation_ncarray[0]
321
+ elif self._extraterrestrialradiation_ramflag:
322
+ self.extraterrestrialradiation = self._extraterrestrialradiation_array[idx]
323
+ if self._clearskysolarradiation_diskflag_reading:
324
+ self.clearskysolarradiation = self._clearskysolarradiation_ncarray[0]
325
+ elif self._clearskysolarradiation_ramflag:
326
+ self.clearskysolarradiation = self._clearskysolarradiation_array[idx]
327
+ if self._unadjustedglobalradiation_diskflag_reading:
328
+ self.unadjustedglobalradiation = self._unadjustedglobalradiation_ncarray[0]
329
+ elif self._unadjustedglobalradiation_ramflag:
330
+ self.unadjustedglobalradiation = self._unadjustedglobalradiation_array[idx]
331
+ if self._dailyglobalradiation_diskflag_reading:
332
+ self.dailyglobalradiation = self._dailyglobalradiation_ncarray[0]
333
+ elif self._dailyglobalradiation_ramflag:
334
+ self.dailyglobalradiation = self._dailyglobalradiation_array[idx]
335
+ if self._globalradiation_diskflag_reading:
336
+ self.globalradiation = self._globalradiation_ncarray[0]
337
+ elif self._globalradiation_ramflag:
338
+ self.globalradiation = self._globalradiation_array[idx]
339
+ if self._precipitation_diskflag_reading:
340
+ k = 0
341
+ for jdx0 in range(self._precipitation_length_0):
342
+ self.precipitation[jdx0] = self._precipitation_ncarray[k]
343
+ k += 1
344
+ elif self._precipitation_ramflag:
345
+ for jdx0 in range(self._precipitation_length_0):
346
+ self.precipitation[jdx0] = self._precipitation_array[idx, jdx0]
347
+ if self._meanprecipitation_diskflag_reading:
348
+ self.meanprecipitation = self._meanprecipitation_ncarray[0]
349
+ elif self._meanprecipitation_ramflag:
350
+ self.meanprecipitation = self._meanprecipitation_array[idx]
351
+ cpdef inline void save_data(self, numpy.int64_t idx) noexcept nogil:
352
+ cdef numpy.int64_t jdx0
353
+ cdef numpy.int64_t k
354
+ if self._extraterrestrialradiation_diskflag_writing:
355
+ self._extraterrestrialradiation_ncarray[0] = self.extraterrestrialradiation
356
+ if self._extraterrestrialradiation_ramflag:
357
+ self._extraterrestrialradiation_array[idx] = self.extraterrestrialradiation
358
+ if self._clearskysolarradiation_diskflag_writing:
359
+ self._clearskysolarradiation_ncarray[0] = self.clearskysolarradiation
360
+ if self._clearskysolarradiation_ramflag:
361
+ self._clearskysolarradiation_array[idx] = self.clearskysolarradiation
362
+ if self._unadjustedglobalradiation_diskflag_writing:
363
+ self._unadjustedglobalradiation_ncarray[0] = self.unadjustedglobalradiation
364
+ if self._unadjustedglobalradiation_ramflag:
365
+ self._unadjustedglobalradiation_array[idx] = self.unadjustedglobalradiation
366
+ if self._dailyglobalradiation_diskflag_writing:
367
+ self._dailyglobalradiation_ncarray[0] = self.dailyglobalradiation
368
+ if self._dailyglobalradiation_ramflag:
369
+ self._dailyglobalradiation_array[idx] = self.dailyglobalradiation
370
+ if self._globalradiation_diskflag_writing:
371
+ self._globalradiation_ncarray[0] = self.globalradiation
372
+ if self._globalradiation_ramflag:
373
+ self._globalradiation_array[idx] = self.globalradiation
374
+ if self._precipitation_diskflag_writing:
375
+ k = 0
376
+ for jdx0 in range(self._precipitation_length_0):
377
+ self._precipitation_ncarray[k] = self.precipitation[jdx0]
378
+ k += 1
379
+ if self._precipitation_ramflag:
380
+ for jdx0 in range(self._precipitation_length_0):
381
+ self._precipitation_array[idx, jdx0] = self.precipitation[jdx0]
382
+ if self._meanprecipitation_diskflag_writing:
383
+ self._meanprecipitation_ncarray[0] = self.meanprecipitation
384
+ if self._meanprecipitation_ramflag:
385
+ self._meanprecipitation_array[idx] = self.meanprecipitation
386
+ cpdef inline set_pointeroutput(self, str name, pointerutils.PDouble value):
387
+ if name == "extraterrestrialradiation":
388
+ self._extraterrestrialradiation_outputpointer = value.p_value
389
+ if name == "clearskysolarradiation":
390
+ self._clearskysolarradiation_outputpointer = value.p_value
391
+ if name == "unadjustedglobalradiation":
392
+ self._unadjustedglobalradiation_outputpointer = value.p_value
393
+ if name == "dailyglobalradiation":
394
+ self._dailyglobalradiation_outputpointer = value.p_value
395
+ if name == "globalradiation":
396
+ self._globalradiation_outputpointer = value.p_value
397
+ if name == "meanprecipitation":
398
+ self._meanprecipitation_outputpointer = value.p_value
399
+ cpdef inline void update_outputs(self) noexcept nogil:
400
+ if self._extraterrestrialradiation_outputflag:
401
+ self._extraterrestrialradiation_outputpointer[0] = self.extraterrestrialradiation
402
+ if self._clearskysolarradiation_outputflag:
403
+ self._clearskysolarradiation_outputpointer[0] = self.clearskysolarradiation
404
+ if self._unadjustedglobalradiation_outputflag:
405
+ self._unadjustedglobalradiation_outputpointer[0] = self.unadjustedglobalradiation
406
+ if self._dailyglobalradiation_outputflag:
407
+ self._dailyglobalradiation_outputpointer[0] = self.dailyglobalradiation
408
+ if self._globalradiation_outputflag:
409
+ self._globalradiation_outputpointer[0] = self.globalradiation
410
+ if self._meanprecipitation_outputflag:
411
+ self._meanprecipitation_outputpointer[0] = self.meanprecipitation
412
+ @cython.final
413
+ cdef class LogSequences:
414
+ pass
415
+ @cython.final
416
+ cdef class Model:
417
+ cpdef inline void simulate(self, numpy.int64_t idx) noexcept nogil:
418
+ self.idx_sim = idx
419
+ self.reset_reuseflags()
420
+ self.load_data(idx)
421
+ self.run()
422
+ self.update_outputs()
423
+ cpdef void reset_reuseflags(self) noexcept nogil:
424
+ self.__hydpy_reuse_process_radiation_v1__ = False
425
+ cpdef void load_data(self, numpy.int64_t idx) noexcept nogil:
426
+ self.idx_sim = idx
427
+ self.sequences.inputs.load_data(idx)
428
+ cpdef void save_data(self, numpy.int64_t idx) noexcept nogil:
429
+ self.idx_sim = idx
430
+ self.sequences.inputs.save_data(idx)
431
+ self.sequences.factors.save_data(idx)
432
+ self.sequences.fluxes.save_data(idx)
433
+ cpdef inline void run(self) noexcept nogil:
434
+ self.calc_earthsundistance_v1()
435
+ self.calc_solardeclination_v1()
436
+ self.calc_solardeclination_v2()
437
+ self.calc_sunsethourangle_v1()
438
+ self.calc_solartimeangle_v1()
439
+ self.calc_timeofsunrise_timeofsunset_v1()
440
+ self.calc_dailypossiblesunshineduration_v1()
441
+ self.calc_possiblesunshineduration_v1()
442
+ self.calc_possiblesunshineduration_v2()
443
+ self.update_loggedsunshineduration_v1()
444
+ self.calc_dailysunshineduration_v1()
445
+ self.update_loggedglobalradiation_v1()
446
+ self.calc_dailyglobalradiation_v2()
447
+ self.calc_extraterrestrialradiation_v1()
448
+ self.calc_extraterrestrialradiation_v2()
449
+ self.calc_dailysunshineduration_v2()
450
+ self.calc_sunshineduration_v1()
451
+ self.calc_portiondailyradiation_v1()
452
+ self.calc_clearskysolarradiation_v1()
453
+ self.adjust_clearskysolarradiation_v1()
454
+ self.calc_globalradiation_v1()
455
+ self.calc_unadjustedglobalradiation_v1()
456
+ self.calc_unadjustedsunshineduration_v1()
457
+ self.update_loggedunadjustedglobalradiation_v1()
458
+ self.update_loggedunadjustedsunshineduration_v1()
459
+ self.calc_dailyglobalradiation_v1()
460
+ self.calc_globalradiation_v2()
461
+ self.calc_sunshineduration_v2()
462
+ self.calc_temperature_v1()
463
+ self.adjust_temperature_v1()
464
+ self.calc_meantemperature_v1()
465
+ self.calc_precipitation_v1()
466
+ self.adjust_precipitation_v1()
467
+ self.calc_meanprecipitation_v1()
468
+ cpdef inline void update_inlets(self) noexcept nogil:
469
+ pass
470
+ cpdef inline void update_outlets(self) noexcept nogil:
471
+ pass
472
+ cpdef inline void update_receivers(self, numpy.int64_t idx) noexcept nogil:
473
+ self.idx_sim = idx
474
+ pass
475
+ cpdef inline void update_senders(self, numpy.int64_t idx) noexcept nogil:
476
+ self.idx_sim = idx
477
+ pass
478
+ cpdef inline void update_outputs(self) noexcept nogil:
479
+ self.sequences.factors.update_outputs()
480
+ self.sequences.fluxes.update_outputs()
481
+ cpdef inline void calc_earthsundistance_v1(self) noexcept nogil:
482
+ self.sequences.factors.earthsundistance = 1.0 + 0.033 * cos( 2 * self.parameters.fixed.pi / 366.0 * (self.parameters.derived.doy[self.idx_sim] + 1) )
483
+ cpdef inline void calc_solardeclination_v1(self) noexcept nogil:
484
+ self.sequences.factors.solardeclination = 0.409 * sin( 2 * self.parameters.fixed.pi / 366 * (self.parameters.derived.doy[self.idx_sim] + 1) - 1.39 )
485
+ cpdef inline void calc_solardeclination_v2(self) noexcept nogil:
486
+ self.sequences.factors.solardeclination = 0.41 * cos( 2.0 * self.parameters.fixed.pi * (self.parameters.derived.doy[self.idx_sim] - 171.0) / 365.0 )
487
+ cpdef inline void calc_sunsethourangle_v1(self) noexcept nogil:
488
+ self.sequences.factors.sunsethourangle = acos( -tan(self.parameters.derived.latituderad) * tan(self.sequences.factors.solardeclination) )
489
+ cpdef inline void calc_solartimeangle_v1(self) noexcept nogil:
490
+ cdef double d_time
491
+ cdef double d_sc
492
+ cdef double d_b
493
+ d_b = 2.0 * self.parameters.fixed.pi * (self.parameters.derived.doy[self.idx_sim] - 80.0) / 365.0
494
+ d_sc = ( 0.1645 * sin(2.0 * d_b) - 0.1255 * cos(d_b) - 0.025 * sin(d_b) )
495
+ d_time = ( self.parameters.derived.sct[self.idx_sim] + (self.parameters.control.longitude - self.parameters.derived.utclongitude) / 15.0 + d_sc )
496
+ self.sequences.factors.solartimeangle = self.parameters.fixed.pi / 12.0 * (d_time - 12.0)
497
+ cpdef inline void calc_timeofsunrise_timeofsunset_v1(self) noexcept nogil:
498
+ cdef double d_dt
499
+ 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) )
500
+ self.sequences.factors.timeofsunset = 24.0 - self.sequences.factors.timeofsunrise
501
+ d_dt = (self.parameters.derived.utclongitude - self.parameters.control.longitude) * 4.0 / 60.0
502
+ self.sequences.factors.timeofsunrise = self.sequences.factors.timeofsunrise + (d_dt)
503
+ self.sequences.factors.timeofsunset = self.sequences.factors.timeofsunset + (d_dt)
504
+ cpdef inline void calc_dailypossiblesunshineduration_v1(self) noexcept nogil:
505
+ self.sequences.factors.dailypossiblesunshineduration = self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise
506
+ cpdef inline void calc_possiblesunshineduration_v1(self) noexcept nogil:
507
+ cdef double d_thresh
508
+ if self.parameters.derived.hours < 24.0:
509
+ if self.sequences.factors.solartimeangle <= 0.0:
510
+ d_thresh = -self.sequences.factors.solartimeangle - self.parameters.fixed.pi * self.parameters.derived.days
511
+ else:
512
+ d_thresh = self.sequences.factors.solartimeangle - self.parameters.fixed.pi * self.parameters.derived.days
513
+ self.sequences.factors.possiblesunshineduration = min( max(12.0 / self.parameters.fixed.pi * (self.sequences.factors.sunsethourangle - d_thresh), 0.0), self.parameters.derived.hours )
514
+ else:
515
+ self.sequences.factors.possiblesunshineduration = 24.0 / self.parameters.fixed.pi * self.sequences.factors.sunsethourangle
516
+ cpdef inline void calc_possiblesunshineduration_v2(self) noexcept nogil:
517
+ cdef double d_t1
518
+ cdef double d_t0
519
+ cdef double d_stc
520
+ d_stc = self.parameters.derived.sct[self.idx_sim]
521
+ d_t0 = max((d_stc - self.parameters.derived.hours / 2.0), self.sequences.factors.timeofsunrise)
522
+ d_t1 = min((d_stc + self.parameters.derived.hours / 2.0), self.sequences.factors.timeofsunset)
523
+ self.sequences.factors.possiblesunshineduration = max(d_t1 - d_t0, 0.0)
524
+ cpdef inline void update_loggedsunshineduration_v1(self) noexcept nogil:
525
+ cdef numpy.int64_t idx
526
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
527
+ self.sequences.logs.loggedsunshineduration[idx] = self.sequences.logs.loggedsunshineduration[idx - 1]
528
+ self.sequences.logs.loggedsunshineduration[0] = self.sequences.inputs.sunshineduration
529
+ cpdef inline void calc_dailysunshineduration_v1(self) noexcept nogil:
530
+ cdef numpy.int64_t idx
531
+ self.sequences.factors.dailysunshineduration = 0.0
532
+ for idx in range(self.parameters.derived.nmblogentries):
533
+ self.sequences.factors.dailysunshineduration = self.sequences.factors.dailysunshineduration + (self.sequences.logs.loggedsunshineduration[idx])
534
+ cpdef inline void update_loggedglobalradiation_v1(self) noexcept nogil:
535
+ cdef numpy.int64_t idx
536
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
537
+ self.sequences.logs.loggedglobalradiation[idx] = self.sequences.logs.loggedglobalradiation[idx - 1]
538
+ self.sequences.logs.loggedglobalradiation[0] = self.sequences.inputs.globalradiation
539
+ cpdef inline void calc_dailyglobalradiation_v2(self) noexcept nogil:
540
+ cdef numpy.int64_t idx
541
+ self.sequences.fluxes.dailyglobalradiation = 0.0
542
+ for idx in range(self.parameters.derived.nmblogentries):
543
+ self.sequences.fluxes.dailyglobalradiation = self.sequences.fluxes.dailyglobalradiation + (self.sequences.logs.loggedglobalradiation[idx])
544
+ self.sequences.fluxes.dailyglobalradiation = self.sequences.fluxes.dailyglobalradiation / (self.parameters.derived.nmblogentries)
545
+ cpdef inline void calc_extraterrestrialradiation_v1(self) noexcept nogil:
546
+ cdef double d_omega2
547
+ cdef double d_omega1
548
+ cdef double d_delta
549
+ if self.parameters.derived.days < 1.0:
550
+ d_delta = self.parameters.fixed.pi * self.parameters.derived.days
551
+ d_omega1 = self.sequences.factors.solartimeangle - d_delta
552
+ d_omega2 = self.sequences.factors.solartimeangle + d_delta
553
+ self.sequences.fluxes.extraterrestrialradiation = max( (12.0 * self.parameters.fixed.solarconstant / self.parameters.fixed.pi * self.sequences.factors.earthsundistance) * ( ( (d_omega2 - d_omega1) * sin(self.parameters.derived.latituderad) * sin(self.sequences.factors.solardeclination) ) + ( cos(self.parameters.derived.latituderad) * cos(self.sequences.factors.solardeclination) * (sin(d_omega2) - sin(d_omega1)) ) ), 0.0, )
554
+ else:
555
+ self.sequences.fluxes.extraterrestrialradiation = ( self.parameters.fixed.solarconstant / self.parameters.fixed.pi * self.sequences.factors.earthsundistance ) * ( ( self.sequences.factors.sunsethourangle * sin(self.parameters.derived.latituderad) * sin(self.sequences.factors.solardeclination) ) + ( cos(self.parameters.derived.latituderad) * cos(self.sequences.factors.solardeclination) * sin(self.sequences.factors.sunsethourangle) ) )
556
+ cpdef inline void calc_extraterrestrialradiation_v2(self) noexcept nogil:
557
+ cdef double d_sunsethourangle
558
+ d_sunsethourangle = (self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise) * self.parameters.fixed.pi / 24.0
559
+ 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) )
560
+ cpdef inline void calc_dailysunshineduration_v2(self) noexcept nogil:
561
+ self.sequences.factors.dailysunshineduration = self.return_sunshineduration_v1( self.sequences.fluxes.dailyglobalradiation, self.sequences.fluxes.extraterrestrialradiation, self.sequences.factors.dailypossiblesunshineduration, )
562
+ cpdef inline void calc_sunshineduration_v1(self) noexcept nogil:
563
+ cdef double d_sd
564
+ cdef numpy.int64_t idx
565
+ if self.sequences.fluxes.extraterrestrialradiation > 0.0:
566
+ idx = self.parameters.derived.moy[self.idx_sim]
567
+ d_sd = ( (self.sequences.inputs.globalradiation / self.sequences.fluxes.extraterrestrialradiation) - self.parameters.control.angstromconstant[idx] ) * (self.sequences.factors.possiblesunshineduration / self.parameters.control.angstromfactor[idx])
568
+ self.sequences.factors.sunshineduration = min(max(d_sd, 0.0), self.sequences.factors.possiblesunshineduration)
569
+ else:
570
+ self.sequences.factors.sunshineduration = 0.0
571
+ cpdef inline void calc_portiondailyradiation_v1(self) noexcept nogil:
572
+ cdef double d_temp
573
+ cdef double d_p
574
+ cdef double d_tlp
575
+ cdef double d_dt
576
+ cdef numpy.int64_t i
577
+ cdef double d_fac
578
+ d_fac = 2.0 * self.parameters.fixed.pi / 360.0
579
+ self.sequences.factors.portiondailyradiation = 0.0
580
+ for i in range(2):
581
+ if i:
582
+ d_dt = self.parameters.derived.hours / 2.0
583
+ else:
584
+ d_dt = -self.parameters.derived.hours / 2.0
585
+ 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) )
586
+ if d_tlp <= 0.0:
587
+ d_p = 0.0
588
+ elif d_tlp < 100.0 * d_fac:
589
+ d_p = 50.0 - 50.0 * cos(1.8 * d_tlp)
590
+ d_temp = 3.4 * sin(3.6 * d_tlp) ** 2
591
+ if d_tlp <= 50.0 * d_fac:
592
+ d_p = d_p - (d_temp)
593
+ else:
594
+ d_p = d_p + (d_temp)
595
+ else:
596
+ d_p = 100.0
597
+ if i:
598
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation + (d_p)
599
+ else:
600
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation - (d_p)
601
+ cpdef inline void calc_clearskysolarradiation_v1(self) noexcept nogil:
602
+ cdef numpy.int64_t idx
603
+ idx = self.parameters.derived.moy[self.idx_sim]
604
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] )
605
+ cpdef inline void adjust_clearskysolarradiation_v1(self) noexcept nogil:
606
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.clearskysolarradiation * (( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ))
607
+ cpdef inline void calc_globalradiation_v1(self) noexcept nogil:
608
+ cdef numpy.int64_t idx
609
+ if self.sequences.factors.possiblesunshineduration > 0.0:
610
+ idx = self.parameters.derived.moy[self.idx_sim]
611
+ self.sequences.fluxes.globalradiation = self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] * self.sequences.inputs.sunshineduration / self.sequences.factors.possiblesunshineduration )
612
+ else:
613
+ self.sequences.fluxes.globalradiation = 0.0
614
+ cpdef inline void calc_unadjustedglobalradiation_v1(self) noexcept nogil:
615
+ cdef double d_pos
616
+ cdef double d_act
617
+ if self.sequences.factors.possiblesunshineduration > 0.0:
618
+ d_act = self.sequences.inputs.sunshineduration
619
+ d_pos = self.sequences.factors.possiblesunshineduration
620
+ else:
621
+ d_act = self.sequences.factors.dailysunshineduration
622
+ d_pos = self.sequences.factors.dailypossiblesunshineduration
623
+ self.sequences.fluxes.unadjustedglobalradiation = ( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ) * self.return_dailyglobalradiation_v1(d_act, d_pos)
624
+ cpdef inline void calc_unadjustedsunshineduration_v1(self) noexcept nogil:
625
+ 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, )
626
+ cpdef inline void update_loggedunadjustedglobalradiation_v1(self) noexcept nogil:
627
+ cdef numpy.int64_t idx
628
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
629
+ self.sequences.logs.loggedunadjustedglobalradiation[idx] = ( self.sequences.logs.loggedunadjustedglobalradiation[idx - 1] )
630
+ self.sequences.logs.loggedunadjustedglobalradiation[0] = self.sequences.fluxes.unadjustedglobalradiation
631
+ cpdef inline void update_loggedunadjustedsunshineduration_v1(self) noexcept nogil:
632
+ cdef numpy.int64_t idx
633
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
634
+ self.sequences.logs.loggedunadjustedsunshineduration[idx] = ( self.sequences.logs.loggedunadjustedsunshineduration[idx - 1] )
635
+ self.sequences.logs.loggedunadjustedsunshineduration[0] = self.sequences.factors.unadjustedsunshineduration
636
+ cpdef inline void calc_dailyglobalradiation_v1(self) noexcept nogil:
637
+ self.sequences.fluxes.dailyglobalradiation = self.return_dailyglobalradiation_v1( self.sequences.factors.dailysunshineduration, self.sequences.factors.dailypossiblesunshineduration )
638
+ cpdef inline void calc_globalradiation_v2(self) noexcept nogil:
639
+ cdef double d_glob_mean
640
+ cdef numpy.int64_t idx
641
+ cdef double d_glob_sum
642
+ d_glob_sum = 0.0
643
+ for idx in range(self.parameters.derived.nmblogentries):
644
+ d_glob_sum = d_glob_sum + (self.sequences.logs.loggedunadjustedglobalradiation[idx])
645
+ d_glob_mean = d_glob_sum / self.parameters.derived.nmblogentries
646
+ self.sequences.fluxes.globalradiation = ( self.sequences.fluxes.unadjustedglobalradiation * self.sequences.fluxes.dailyglobalradiation / d_glob_mean )
647
+ cpdef inline void calc_sunshineduration_v2(self) noexcept nogil:
648
+ cdef numpy.int64_t idx
649
+ cdef double d_denom
650
+ cdef double d_nom
651
+ d_nom = self.sequences.factors.unadjustedsunshineduration * self.sequences.factors.dailysunshineduration
652
+ if d_nom == 0.0:
653
+ self.sequences.factors.sunshineduration = 0.0
654
+ else:
655
+ d_denom = 0.0
656
+ for idx in range(self.parameters.derived.nmblogentries):
657
+ d_denom = d_denom + (self.sequences.logs.loggedunadjustedsunshineduration[idx])
658
+ self.sequences.factors.sunshineduration = min(d_nom / d_denom, self.sequences.factors.possiblesunshineduration)
659
+ cpdef inline void calc_temperature_v1(self) noexcept nogil:
660
+ cdef numpy.int64_t k
661
+ for k in range(self.parameters.control.nmbhru):
662
+ self.sequences.factors.temperature[k] = self.sequences.inputs.temperature
663
+ cpdef inline void adjust_temperature_v1(self) noexcept nogil:
664
+ cdef numpy.int64_t k
665
+ for k in range(self.parameters.control.nmbhru):
666
+ self.sequences.factors.temperature[k] = self.sequences.factors.temperature[k] + (self.parameters.control.temperatureaddend[k])
667
+ cpdef inline void calc_meantemperature_v1(self) noexcept nogil:
668
+ cdef numpy.int64_t s
669
+ self.sequences.factors.meantemperature = 0.0
670
+ for s in range(self.parameters.control.nmbhru):
671
+ self.sequences.factors.meantemperature = self.sequences.factors.meantemperature + (self.parameters.derived.hruareafraction[s] * self.sequences.factors.temperature[s])
672
+ cpdef inline void calc_precipitation_v1(self) noexcept nogil:
673
+ cdef numpy.int64_t k
674
+ for k in range(self.parameters.control.nmbhru):
675
+ self.sequences.fluxes.precipitation[k] = self.sequences.inputs.precipitation
676
+ cpdef inline void adjust_precipitation_v1(self) noexcept nogil:
677
+ cdef numpy.int64_t k
678
+ for k in range(self.parameters.control.nmbhru):
679
+ self.sequences.fluxes.precipitation[k] = self.sequences.fluxes.precipitation[k] * (self.parameters.control.precipitationfactor[k])
680
+ cpdef inline void calc_meanprecipitation_v1(self) noexcept nogil:
681
+ cdef numpy.int64_t s
682
+ self.sequences.fluxes.meanprecipitation = 0.0
683
+ for s in range(self.parameters.control.nmbhru):
684
+ self.sequences.fluxes.meanprecipitation = self.sequences.fluxes.meanprecipitation + (self.parameters.derived.hruareafraction[s] * self.sequences.fluxes.precipitation[s])
685
+ cpdef void determine_temperature_v1(self) noexcept nogil:
686
+ self.run()
687
+ cpdef double get_temperature_v1(self, numpy.int64_t s) noexcept nogil:
688
+ return self.sequences.factors.temperature[s]
689
+ cpdef double get_meantemperature_v1(self) noexcept nogil:
690
+ return self.sequences.factors.meantemperature
691
+ cpdef void determine_precipitation_v1(self) noexcept nogil:
692
+ self.run()
693
+ cpdef double get_precipitation_v1(self, numpy.int64_t s) noexcept nogil:
694
+ return self.sequences.fluxes.precipitation[s]
695
+ cpdef double get_meanprecipitation_v1(self) noexcept nogil:
696
+ return self.sequences.fluxes.meanprecipitation
697
+ cpdef void process_radiation_v1(self) noexcept nogil:
698
+ if not self.__hydpy_reuse_process_radiation_v1__:
699
+ self.run()
700
+ self.__hydpy_reuse_process_radiation_v1__ = True
701
+ cpdef double get_possiblesunshineduration_v1(self) noexcept nogil:
702
+ return self.sequences.factors.possiblesunshineduration
703
+ cpdef double get_possiblesunshineduration_v2(self) noexcept nogil:
704
+ return self.sequences.inputs.possiblesunshineduration
705
+ cpdef double get_sunshineduration_v1(self) noexcept nogil:
706
+ return self.sequences.factors.sunshineduration
707
+ cpdef double get_sunshineduration_v2(self) noexcept nogil:
708
+ return self.sequences.inputs.sunshineduration
709
+ cpdef double get_clearskysolarradiation_v1(self) noexcept nogil:
710
+ return self.sequences.fluxes.clearskysolarradiation
711
+ cpdef double get_clearskysolarradiation_v2(self) noexcept nogil:
712
+ return self.sequences.inputs.clearskysolarradiation
713
+ cpdef double get_globalradiation_v1(self) noexcept nogil:
714
+ return self.sequences.fluxes.globalradiation
715
+ cpdef double get_globalradiation_v2(self) noexcept nogil:
716
+ return self.sequences.inputs.globalradiation
717
+ cpdef inline double return_dailyglobalradiation_v1(self, double sunshineduration, double possiblesunshineduration) noexcept nogil:
718
+ cdef numpy.int64_t idx
719
+ if possiblesunshineduration > 0.0:
720
+ idx = self.parameters.derived.moy[self.idx_sim]
721
+ if (sunshineduration <= 0.0) and (self.parameters.derived.days >= 1.0):
722
+ return self.sequences.fluxes.extraterrestrialradiation * self.parameters.control.angstromalternative[idx]
723
+ return self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] * sunshineduration / possiblesunshineduration )
724
+ return 0.0
725
+ cpdef inline double return_sunshineduration_v1(self, double globalradiation, double extraterrestrialradiation, double possiblesunshineduration) noexcept nogil:
726
+ cdef double d_sd
727
+ cdef numpy.int64_t idx
728
+ if extraterrestrialradiation <= 0.0:
729
+ return possiblesunshineduration
730
+ idx = self.parameters.derived.moy[self.idx_sim]
731
+ d_sd = (possiblesunshineduration / self.parameters.control.angstromfactor[idx]) * ( globalradiation / extraterrestrialradiation - self.parameters.control.angstromconstant[idx] )
732
+ return min(max(d_sd, 0.0), possiblesunshineduration)
733
+ cpdef inline void calc_earthsundistance(self) noexcept nogil:
734
+ self.sequences.factors.earthsundistance = 1.0 + 0.033 * cos( 2 * self.parameters.fixed.pi / 366.0 * (self.parameters.derived.doy[self.idx_sim] + 1) )
735
+ cpdef inline void calc_sunsethourangle(self) noexcept nogil:
736
+ self.sequences.factors.sunsethourangle = acos( -tan(self.parameters.derived.latituderad) * tan(self.sequences.factors.solardeclination) )
737
+ cpdef inline void calc_solartimeangle(self) noexcept nogil:
738
+ cdef double d_time
739
+ cdef double d_sc
740
+ cdef double d_b
741
+ d_b = 2.0 * self.parameters.fixed.pi * (self.parameters.derived.doy[self.idx_sim] - 80.0) / 365.0
742
+ d_sc = ( 0.1645 * sin(2.0 * d_b) - 0.1255 * cos(d_b) - 0.025 * sin(d_b) )
743
+ d_time = ( self.parameters.derived.sct[self.idx_sim] + (self.parameters.control.longitude - self.parameters.derived.utclongitude) / 15.0 + d_sc )
744
+ self.sequences.factors.solartimeangle = self.parameters.fixed.pi / 12.0 * (d_time - 12.0)
745
+ cpdef inline void calc_timeofsunrise_timeofsunset(self) noexcept nogil:
746
+ cdef double d_dt
747
+ 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) )
748
+ self.sequences.factors.timeofsunset = 24.0 - self.sequences.factors.timeofsunrise
749
+ d_dt = (self.parameters.derived.utclongitude - self.parameters.control.longitude) * 4.0 / 60.0
750
+ self.sequences.factors.timeofsunrise = self.sequences.factors.timeofsunrise + (d_dt)
751
+ self.sequences.factors.timeofsunset = self.sequences.factors.timeofsunset + (d_dt)
752
+ cpdef inline void calc_dailypossiblesunshineduration(self) noexcept nogil:
753
+ self.sequences.factors.dailypossiblesunshineduration = self.sequences.factors.timeofsunset - self.sequences.factors.timeofsunrise
754
+ cpdef inline void update_loggedsunshineduration(self) noexcept nogil:
755
+ cdef numpy.int64_t idx
756
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
757
+ self.sequences.logs.loggedsunshineduration[idx] = self.sequences.logs.loggedsunshineduration[idx - 1]
758
+ self.sequences.logs.loggedsunshineduration[0] = self.sequences.inputs.sunshineduration
759
+ cpdef inline void update_loggedglobalradiation(self) noexcept nogil:
760
+ cdef numpy.int64_t idx
761
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
762
+ self.sequences.logs.loggedglobalradiation[idx] = self.sequences.logs.loggedglobalradiation[idx - 1]
763
+ self.sequences.logs.loggedglobalradiation[0] = self.sequences.inputs.globalradiation
764
+ cpdef inline void calc_portiondailyradiation(self) noexcept nogil:
765
+ cdef double d_temp
766
+ cdef double d_p
767
+ cdef double d_tlp
768
+ cdef double d_dt
769
+ cdef numpy.int64_t i
770
+ cdef double d_fac
771
+ d_fac = 2.0 * self.parameters.fixed.pi / 360.0
772
+ self.sequences.factors.portiondailyradiation = 0.0
773
+ for i in range(2):
774
+ if i:
775
+ d_dt = self.parameters.derived.hours / 2.0
776
+ else:
777
+ d_dt = -self.parameters.derived.hours / 2.0
778
+ 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) )
779
+ if d_tlp <= 0.0:
780
+ d_p = 0.0
781
+ elif d_tlp < 100.0 * d_fac:
782
+ d_p = 50.0 - 50.0 * cos(1.8 * d_tlp)
783
+ d_temp = 3.4 * sin(3.6 * d_tlp) ** 2
784
+ if d_tlp <= 50.0 * d_fac:
785
+ d_p = d_p - (d_temp)
786
+ else:
787
+ d_p = d_p + (d_temp)
788
+ else:
789
+ d_p = 100.0
790
+ if i:
791
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation + (d_p)
792
+ else:
793
+ self.sequences.factors.portiondailyradiation = self.sequences.factors.portiondailyradiation - (d_p)
794
+ cpdef inline void calc_clearskysolarradiation(self) noexcept nogil:
795
+ cdef numpy.int64_t idx
796
+ idx = self.parameters.derived.moy[self.idx_sim]
797
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] )
798
+ cpdef inline void adjust_clearskysolarradiation(self) noexcept nogil:
799
+ self.sequences.fluxes.clearskysolarradiation = self.sequences.fluxes.clearskysolarradiation * (( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ))
800
+ cpdef inline void calc_unadjustedglobalradiation(self) noexcept nogil:
801
+ cdef double d_pos
802
+ cdef double d_act
803
+ if self.sequences.factors.possiblesunshineduration > 0.0:
804
+ d_act = self.sequences.inputs.sunshineduration
805
+ d_pos = self.sequences.factors.possiblesunshineduration
806
+ else:
807
+ d_act = self.sequences.factors.dailysunshineduration
808
+ d_pos = self.sequences.factors.dailypossiblesunshineduration
809
+ self.sequences.fluxes.unadjustedglobalradiation = ( self.parameters.derived.nmblogentries * self.sequences.factors.portiondailyradiation / 100.0 ) * self.return_dailyglobalradiation_v1(d_act, d_pos)
810
+ cpdef inline void calc_unadjustedsunshineduration(self) noexcept nogil:
811
+ 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, )
812
+ cpdef inline void update_loggedunadjustedglobalradiation(self) noexcept nogil:
813
+ cdef numpy.int64_t idx
814
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
815
+ self.sequences.logs.loggedunadjustedglobalradiation[idx] = ( self.sequences.logs.loggedunadjustedglobalradiation[idx - 1] )
816
+ self.sequences.logs.loggedunadjustedglobalradiation[0] = self.sequences.fluxes.unadjustedglobalradiation
817
+ cpdef inline void update_loggedunadjustedsunshineduration(self) noexcept nogil:
818
+ cdef numpy.int64_t idx
819
+ for idx in range(self.parameters.derived.nmblogentries - 1, 0, -1):
820
+ self.sequences.logs.loggedunadjustedsunshineduration[idx] = ( self.sequences.logs.loggedunadjustedsunshineduration[idx - 1] )
821
+ self.sequences.logs.loggedunadjustedsunshineduration[0] = self.sequences.factors.unadjustedsunshineduration
822
+ cpdef inline void calc_temperature(self) noexcept nogil:
823
+ cdef numpy.int64_t k
824
+ for k in range(self.parameters.control.nmbhru):
825
+ self.sequences.factors.temperature[k] = self.sequences.inputs.temperature
826
+ cpdef inline void adjust_temperature(self) noexcept nogil:
827
+ cdef numpy.int64_t k
828
+ for k in range(self.parameters.control.nmbhru):
829
+ self.sequences.factors.temperature[k] = self.sequences.factors.temperature[k] + (self.parameters.control.temperatureaddend[k])
830
+ cpdef inline void calc_meantemperature(self) noexcept nogil:
831
+ cdef numpy.int64_t s
832
+ self.sequences.factors.meantemperature = 0.0
833
+ for s in range(self.parameters.control.nmbhru):
834
+ self.sequences.factors.meantemperature = self.sequences.factors.meantemperature + (self.parameters.derived.hruareafraction[s] * self.sequences.factors.temperature[s])
835
+ cpdef inline void calc_precipitation(self) noexcept nogil:
836
+ cdef numpy.int64_t k
837
+ for k in range(self.parameters.control.nmbhru):
838
+ self.sequences.fluxes.precipitation[k] = self.sequences.inputs.precipitation
839
+ cpdef inline void adjust_precipitation(self) noexcept nogil:
840
+ cdef numpy.int64_t k
841
+ for k in range(self.parameters.control.nmbhru):
842
+ self.sequences.fluxes.precipitation[k] = self.sequences.fluxes.precipitation[k] * (self.parameters.control.precipitationfactor[k])
843
+ cpdef inline void calc_meanprecipitation(self) noexcept nogil:
844
+ cdef numpy.int64_t s
845
+ self.sequences.fluxes.meanprecipitation = 0.0
846
+ for s in range(self.parameters.control.nmbhru):
847
+ self.sequences.fluxes.meanprecipitation = self.sequences.fluxes.meanprecipitation + (self.parameters.derived.hruareafraction[s] * self.sequences.fluxes.precipitation[s])
848
+ cpdef void determine_temperature(self) noexcept nogil:
849
+ self.run()
850
+ cpdef double get_temperature(self, numpy.int64_t s) noexcept nogil:
851
+ return self.sequences.factors.temperature[s]
852
+ cpdef double get_meantemperature(self) noexcept nogil:
853
+ return self.sequences.factors.meantemperature
854
+ cpdef void determine_precipitation(self) noexcept nogil:
855
+ self.run()
856
+ cpdef double get_precipitation(self, numpy.int64_t s) noexcept nogil:
857
+ return self.sequences.fluxes.precipitation[s]
858
+ cpdef double get_meanprecipitation(self) noexcept nogil:
859
+ return self.sequences.fluxes.meanprecipitation
860
+ cpdef void process_radiation(self) noexcept nogil:
861
+ if not self.__hydpy_reuse_process_radiation_v1__:
862
+ self.run()
863
+ self.__hydpy_reuse_process_radiation_v1__ = True
864
+ cpdef inline double return_dailyglobalradiation(self, double sunshineduration, double possiblesunshineduration) noexcept nogil:
865
+ cdef numpy.int64_t idx
866
+ if possiblesunshineduration > 0.0:
867
+ idx = self.parameters.derived.moy[self.idx_sim]
868
+ if (sunshineduration <= 0.0) and (self.parameters.derived.days >= 1.0):
869
+ return self.sequences.fluxes.extraterrestrialradiation * self.parameters.control.angstromalternative[idx]
870
+ return self.sequences.fluxes.extraterrestrialradiation * ( self.parameters.control.angstromconstant[idx] + self.parameters.control.angstromfactor[idx] * sunshineduration / possiblesunshineduration )
871
+ return 0.0
872
+ cpdef inline double return_sunshineduration(self, double globalradiation, double extraterrestrialradiation, double possiblesunshineduration) noexcept nogil:
873
+ cdef double d_sd
874
+ cdef numpy.int64_t idx
875
+ if extraterrestrialradiation <= 0.0:
876
+ return possiblesunshineduration
877
+ idx = self.parameters.derived.moy[self.idx_sim]
878
+ d_sd = (possiblesunshineduration / self.parameters.control.angstromfactor[idx]) * ( globalradiation / extraterrestrialradiation - self.parameters.control.angstromconstant[idx] )
879
+ return min(max(d_sd, 0.0), possiblesunshineduration)