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,1001 @@
1
+ # pylint: disable=line-too-long, unused-wildcard-import
2
+ """
3
+ .. _`issue 89`: https://github.com/hydpy-dev/hydpy/issues/89
4
+
5
+ |ga_garto| implements GARTO, a "Green-Ampt infiltration with Redistribution" model that
6
+ "incorporates features from the Talbot-Ogden infiltration and redistribution method",
7
+ developed by :cite:t:`ref-Lai2015`. Thankfully, two of its authors, Fred L. Ogden and
8
+ Cary A. Talbot, provided their source code (written in C), which we used to ensure
9
+ |ga_garto| mostly works like this original implementation. However, there are also
10
+ some differences, which interested users find discussed in `issue 89`_. The most
11
+ notable difference is that |ga_garto| generally assumes a hydrostatic groundwater
12
+ table, while the complete GARTO method also simulates groundwater dynamics (in terms of
13
+ vertically moving groundwater fronts).
14
+
15
+ GARTO combines the oriinal Green-Ampt infiltration model with redistribution
16
+ equations. In the Green-Ampt model, a saturated wetting front moves downwards in a
17
+ piston-like form through a homogeneous soil with constant initial moisture and assumes
18
+ rainfall intensity always exceeds infiltration intensity. The redistribution equations
19
+ apply for periods with little or no rainfall. When redistribution begins, a previously
20
+ saturated wetting front still grows in length but reduces its relative water content.
21
+ With the next heavy rainfall event, a new saturated front develops, and both the old
22
+ and the new front advance downwards.
23
+
24
+ One improvement of GARTO over simpler GAR approaches is that the number of active
25
+ wetting fronts is (principally) not restricted. Wetting fronts only disappear when
26
+ being merged with other fronts, which happens when a newer (wetter) front overshoots an
27
+ older (dryer) one or when a wetting front reaches the soil's depth (the groundwater
28
+ table). Due to approximating natural soil moisture distributions with multiple wetting
29
+ fronts, GARTO can cope with complex rainfall patterns with (long) hiatus periods,
30
+ making it a suitable tool for long-term simulations.
31
+
32
+ Another functionality required for long-term simulations is evapotranspiration, which
33
+ is not discussed by :cite:t:`ref-Lai2015` but implemented in the mentioned C code.
34
+ |ga_garto| requires the complete withdrawal to be calculated externally and takes it
35
+ from the surface water and the wettest wetting fronts like one can do with the author's
36
+ GARTO code for evaporation. The additional transpiration features of the C code (e.g.
37
+ taking rooted depth into account) are neglected since we expect |ga_garto| to be
38
+ applied for modelling the rooted soil zone.
39
+
40
+ ToDo: Taking the rooted depth as the depth of the considered soil domain and assuming a
41
+ hydrostatic groundwater table at the soil's bottom do not go hand in hand for
42
+ many catchments. Do we need alternative lower boundary conditions?
43
+
44
+ .. _ga_garto_integration_tests:
45
+
46
+ Integration tests
47
+ =================
48
+
49
+ .. how_to_understand_integration_tests::
50
+
51
+ We prepare an initialisation period of 24 hours but restrict the actual simulation and
52
+ evaluation period to 5 hours for the first examples:
53
+
54
+ >>> from hydpy import pub
55
+ >>> pub.timegrids = "2000-01-01 00:00", "2000-01-02 00:00", "1h"
56
+ >>> pub.timegrids.sim.lastdate = pub.timegrids.eval_.lastdate = "2000-01-01 05:00"
57
+
58
+ We prepare a |ga_garto| model, set the base time for defining (most) time-dependent
59
+ parameter values to one hour, connect the model to an |Element| instance, and hand this
60
+ element to an |IntegrationTest| instance that will execute and evaluate the following
61
+ example simulations:
62
+
63
+ >>> from hydpy.models.ga_garto import *
64
+ >>> parameterstep("1h")
65
+ >>> from hydpy import Element, IntegrationTest
66
+ >>> soil = Element("soil")
67
+ >>> soil.model = model
68
+ >>> test = IntegrationTest(soil)
69
+ >>> test.dateformat = "%H:%M"
70
+ >>> test.plotting_options.axis1 = (inputs.rainfall, fluxes.infiltration,
71
+ ... fluxes.surfacerunoff, fluxes.percolation,
72
+ ... fluxes.withdrawal)
73
+ >>> test.plotting_options.axis2 = states.frontdepth
74
+
75
+ For the first set of examples, we initialise a single soil compartment (via parameter
76
+ |NmbSoils|) consisting of three "bins" (via parameter |NmbBins|). So, besides the
77
+ first "filled" bin, there can be at most two active wetting fronts at the same time:
78
+
79
+ >>> nmbsoils(1)
80
+ >>> nmbbins(3)
81
+
82
+ We set the length of the numerical substeps to one second:
83
+
84
+ >>> with pub.options.parameterstep("1s"):
85
+ ... dt(1.0)
86
+
87
+ The single soil compartment is not sealed, meaning infiltration is possible:
88
+
89
+ >>> sealed(False)
90
+
91
+ The defined subarea is irrelevant as long as we deal with a single compartment:
92
+
93
+ >>> soilarea(2.0)
94
+
95
+ We perform all tests for an "average" soil (loam) and take its parameters from
96
+ :cite:t:`ref-Lai2015`, table 1:
97
+
98
+ >>> residualmoisture(0.027)
99
+ >>> saturationmoisture(0.434)
100
+ >>> saturatedconductivity(13.2)
101
+ >>> poresizedistribution(0.252)
102
+ >>> airentrypotential(111.5)
103
+
104
+ In agreement with the evaluations performed by :cite:t:`ref-Lai2015`, all our test runs
105
+ start with a relative moisture content of 10 %:
106
+
107
+ >>> test.inits = ((states.moisture, 0.1),
108
+ ... (states.frontdepth, 0.0),
109
+ ... (logs.moisturechange, 0.0))
110
+
111
+
112
+ 5 hours, no evaporation, no capillary rise
113
+ __________________________________________
114
+
115
+ In this subsection, we focus on a short simulation period of five hours without any
116
+ evaporation losses or capillary rise gains. The chosen rainfall pattern stems from
117
+ :cite:t:`ref-Lai2015`, table 2 (soil number 4, loam):
118
+
119
+ >>> inputs.rainfall.series[:5] = [40.0, 0.0, 0.0, 40.0, 0.0]
120
+ >>> inputs.evaporation.series = 0.0
121
+ >>> inputs.capillaryrise.series = 0.0
122
+
123
+ The next commands store the current initial conditions, so we can use them later to
124
+ check that |ga_garto| is not violating the water balance:
125
+
126
+ >>> test.reset_inits()
127
+ >>> conditions = model.conditions
128
+
129
+ .. _ga_garto_5h_1000mm:
130
+
131
+ deep soil
132
+ ---------
133
+
134
+ In this example, we set the soil compartment's depth to one meter so that it does not
135
+ restrict the movement of any front:
136
+
137
+ >>> soildepth(1000.0)
138
+
139
+ The infiltration sums for the first and the second event agree well but not perfectly
140
+ with the results reported by :cite:t:`ref-Lai2015`, table 3 (soil number 4, loam),
141
+ which are 38.62 mm (instead of 38.90 mm) and 29.67 mm (instead of 30.01 mm). We
142
+ checked if the different lengths of the numerical substeps (10 s vs 1 s) cause this
143
+ error, but they do not. The authors' GARTO code, which we adapted to the same example,
144
+ also using a numerical substep length of 1 s, calculates the same infiltration sums as
145
+ |ga_garto| (38.90 mm and 30.01 mm).
146
+
147
+ The water content equals the saturation water content at the end of both rainfall
148
+ impulses and decreases afterwards. Inspecting the front depths', it looks like
149
+ everything takes place in the second bin. However, |ga_garto| actually creates a
150
+ second wetting front in the third bin during the second impulse, but this front reaches
151
+ the first one during the same simulation step, so they both get merged in the second
152
+ bin:
153
+
154
+ .. integration-test::
155
+
156
+ >>> test("ga_garto_5h_1000mm")
157
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
158
+ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
159
+ | 00:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 0.1 0.434 0.1 | 1000.0 116.457913 0.0 |
160
+ | 01:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.364279 0.1 | 1000.0 147.18132 0.0 |
161
+ | 02:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.343632 0.1 | 1000.0 159.654404 0.0 |
162
+ | 03:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 30.008647 | 0.0 | 0.0 | 0.0 | 9.991353 | 30.008647 | 0.0 | 0.0 | 0.0 | 9.991353 | 0.1 0.434 0.1 | 1000.0 206.304161 0.0 |
163
+ | 04:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.387446 0.1 | 1000.0 239.716877 0.0 |
164
+
165
+ There is no indication of an error in the water balance:
166
+
167
+ >>> from hydpy import round_
168
+ >>> round_(model.check_waterbalance(conditions))
169
+ 0.0
170
+
171
+ .. _ga_garto_5h_200mm:
172
+
173
+ 200 mm depth
174
+ ------------
175
+
176
+ Next, we repeat the above example with a reduced soil depth of 200 mm:
177
+
178
+ >>> soildepth(200.0)
179
+
180
+ All results for the first three hours are identical to those of the
181
+ :ref:`ga_garto_5h_1000mm` example. But during the second rainfall event, the saturated
182
+ wetting front reaches the soil's bottom so that the first "filled" bin becomes
183
+ saturated and is the only active bin from then on. Complete saturation comes with a
184
+ dramatic increase in actual conductivity through the whole soil column and thus in
185
+ percolation (groundwater recharge). On the other hand, the overall downward water
186
+ movement and thus infiltration slows due to losing capillary drive after building
187
+ complete contact with groundwater:
188
+
189
+ .. integration-test::
190
+
191
+ >>> test("ga_garto_5h_200mm")
192
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
193
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
194
+ | 00:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 0.1 0.434 0.1 | 200.0 116.457913 0.0 |
195
+ | 01:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.364279 0.1 | 200.0 147.18132 0.0 |
196
+ | 02:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.343632 0.1 | 200.0 159.654404 0.0 |
197
+ | 03:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 29.03239 | 1.129333 | 0.0 | 0.0 | 10.96761 | 29.03239 | 1.129333 | 0.0 | 0.0 | 10.96761 | 0.434 0.434 0.434 | 200.0 0.0 0.0 |
198
+ | 04:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.434 0.434 0.434 | 200.0 0.0 0.0 |
199
+
200
+ There is no indication of an error in the water balance:
201
+
202
+ >>> round_(model.check_waterbalance(conditions))
203
+ 0.0
204
+
205
+ .. _ga_garto_5h_150mm:
206
+
207
+ 150 mm depth
208
+ ------------
209
+
210
+ When reducing the soil depth further to 150 mm, the first (and, so far, only) wetting
211
+ front reaches the soil's bottom yet in the first redistribution phase within the third
212
+ hour. The soil water deficit at the start of the second rainfall event is smaller due
213
+ to increased relative moisture and the reduced soil depth, so infiltration declines
214
+ even more than in the :ref:`ga_garto_5h_200mm` example:
215
+
216
+ .. integration-test::
217
+
218
+ >>> soildepth(150.0)
219
+ >>> test("ga_garto_5h_150mm")
220
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
221
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
222
+ | 00:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 0.1 0.434 0.1 | 150.0 116.457913 0.0 |
223
+ | 01:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.364279 0.1 | 150.0 147.18132 0.0 |
224
+ | 02:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.000403 | 0.0 | 0.0 | 0.0 | 0.0 | 0.000403 | 0.0 | 0.0 | 0.0 | 0.35931 0.35931 0.35931 | 150.0 0.0 0.0 |
225
+ | 03:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 20.394407 | 9.190947 | 0.0 | 0.0 | 19.605593 | 20.394407 | 9.190947 | 0.0 | 0.0 | 19.605593 | 0.434 0.434 0.434 | 150.0 0.0 0.0 |
226
+ | 04:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.434 0.434 0.434 | 150.0 0.0 0.0 |
227
+
228
+ There is no indication of an error in the water balance:
229
+
230
+ >>> round_(model.check_waterbalance(conditions))
231
+ 0.0
232
+
233
+ .. _ga_garto_5h_100mm:
234
+
235
+ 100 mm depth
236
+ ------------
237
+
238
+ When reducing the soil depth even to 100 mm, the soil already saturates in the first
239
+ hour. Then, the (potential) infiltration sum of the second event gets its smallest
240
+ possible value defined by saturated conductivity:
241
+
242
+ .. integration-test::
243
+
244
+ >>> soildepth(100.0)
245
+ >>> test("ga_garto_5h_100mm")
246
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
247
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
248
+ | 00:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 35.497333 | 2.097333 | 0.0 | 0.0 | 4.502667 | 35.497333 | 2.097333 | 0.0 | 0.0 | 4.502667 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
249
+ | 01:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
250
+ | 02:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
251
+ | 03:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 13.2 | 13.2 | 0.0 | 0.0 | 26.8 | 13.2 | 13.2 | 0.0 | 0.0 | 26.8 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
252
+ | 04:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
253
+
254
+ There is no indication of an error in the water balance:
255
+
256
+ >>> round_(model.check_waterbalance(conditions))
257
+ 0.0
258
+
259
+ 5 hours, evaporation
260
+ ____________________
261
+
262
+ In this subsection, we repeat some of the above examples with an evaporation rate of
263
+ 1 mm/h:
264
+
265
+ >>> inputs.evaporation.series = 1.0
266
+
267
+ .. _ga_garto_5h_1000mm_evap:
268
+
269
+ deep soil
270
+ ---------
271
+
272
+ Repeating the :ref:`ga_garto_5h_1000mm` example but including evaporation reduces
273
+ surface runoff generation. This effect emerges especially for the second event, where
274
+ evaporation has a cumulative impact due to also withdrawing water during the previous
275
+ redistribution phase:
276
+
277
+ .. integration-test::
278
+
279
+ >>> soildepth(1000.0)
280
+ >>> test("ga_garto_5h_1000mm_evap")
281
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
282
+ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
283
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 39.024721 | 0.0 | 0.0 | 1.0 | 0.727698 | 39.024721 | 0.0 | 0.0 | 1.0 | 0.727698 | 0.1 0.434 0.1 | 1000.0 114.58773 0.0 |
284
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.358798 0.1 | 1000.0 144.020647 0.0 |
285
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.334277 0.1 | 1000.0 154.826468 0.0 |
286
+ | 03:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 30.689523 | 0.0 | 0.0 | 1.0 | 8.547812 | 30.689523 | 0.0 | 0.0 | 1.0 | 8.547812 | 0.1 0.434 0.1 | 1000.0 199.773922 0.0 |
287
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.383222 0.1 | 1000.0 232.060146 0.0 |
288
+
289
+ There is no indication of an error in the water balance:
290
+
291
+ >>> round_(model.check_waterbalance(conditions))
292
+ 0.0
293
+
294
+ .. _ga_garto_5h_100mm_evap:
295
+
296
+ 100 mm depth
297
+ ------------
298
+
299
+ When repeating the :ref:`ga_garto_5h_100mm` example with evaporation, |ga_garto| does
300
+ not always withdraw water from the surface or the currently wettest wetting front (as
301
+ in the :ref:`ga_garto_5h_1000mm_evap` example) but (during rain-free periods) also from
302
+ the filled bin:
303
+
304
+ .. integration-test::
305
+
306
+ >>> soildepth(100.0)
307
+ >>> test("ga_garto_5h_100mm_evap")
308
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
309
+ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
310
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 36.00042 | 1.848 | 0.0 | 1.0 | 3.752 | 36.00042 | 1.848 | 0.0 | 1.0 | 3.752 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
311
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.424 0.424003 0.424003 | 100.0 0.0 0.0 |
312
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.414 0.414003 0.414003 | 100.0 0.0 0.0 |
313
+ | 03:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 14.9125 | 12.848611 | 0.0 | 1.0 | 24.151389 | 14.9125 | 12.848611 | 0.0 | 1.0 | 24.151389 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
314
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.424 0.424003 0.424003 | 100.0 0.0 0.0 |
315
+
316
+ There is no indication of an error in the water balance:
317
+
318
+ >>> round_(model.check_waterbalance(conditions))
319
+ 0.0
320
+
321
+ 4 mm depth
322
+ ----------
323
+
324
+ Reducing the soil depth to 4 mm is surely no realistic configuration, but we use it to
325
+ show |ga_garto| works stably in case the soil runs completely dry during the third
326
+ hour:
327
+
328
+ .. integration-test::
329
+
330
+ >>> soildepth(4.0)
331
+ >>> test("ga_garto_5h_4mm_evap")
332
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
333
+ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
334
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 14.450938 | 13.068271 | 0.0 | 1.0 | 24.595729 | 14.450938 | 13.068271 | 0.0 | 1.0 | 24.595729 | 0.434 0.434 0.434 | 4.0 0.0 0.0 |
335
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.184 0.184069 0.184069 | 4.0 0.0 0.0 |
336
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.628 | 0.0 | 0.0 | 0.0 | 0.0 | 0.628 | 0.0 | 0.027 0.027 0.027 | 4.0 0.0 0.0 |
337
+ | 03:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 14.651938 | 12.969771 | 0.0 | 1.0 | 24.402229 | 14.651938 | 12.969771 | 0.0 | 1.0 | 24.402229 | 0.434 0.434 0.434 | 4.0 0.0 0.0 |
338
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.184 0.184069 0.184069 | 4.0 0.0 0.0 |
339
+
340
+ There is no indication of an error in the water balance:
341
+
342
+ >>> round_(model.check_waterbalance(conditions))
343
+ 0.0
344
+
345
+ .. _ga_garto_5h_1000mm_evap_10s:
346
+
347
+ deep soil, 10 sec
348
+ -----------------
349
+
350
+ In the following, we reuse the :ref:`ga_garto_5h_1000mm_evap` example to give an
351
+ impression of the relation between computational effort and numerical accuracy. Please
352
+ consider this the first impression because such relationships can be distinctly
353
+ different for other conditions. For example, setting the numerical substep length to
354
+ 10 s (as done by :cite:t:`ref-Lai2015`) instead of 1 s (as in all our previous
355
+ examples) increases the total infiltration sum from 69.71 mm to 69.75 mm, which is an
356
+ irrelevant deviation for practical applications:
357
+
358
+ .. integration-test::
359
+
360
+ >>> soildepth(1000.0)
361
+ >>> with pub.options.parameterstep("1s"):
362
+ ... dt(10)
363
+ >>> derived.nmbsubsteps.update()
364
+ >>> test("ga_garto_5h_1000mm_evap_10sec")
365
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
366
+ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
367
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 39.035173 | 0.0 | 0.0 | 1.0 | 0.718436 | 39.035173 | 0.0 | 0.0 | 1.0 | 0.718436 | 0.1 0.434 0.1 | 1000.0 114.615461 0.0 |
368
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.358667 0.1 | 1000.0 144.12976 0.0 |
369
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.3342 0.1 | 1000.0 154.916779 0.0 |
370
+ | 03:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 30.713686 | 0.0 | 0.0 | 1.0 | 8.524923 | 30.713686 | 0.0 | 0.0 | 1.0 | 8.524923 | 0.1 0.434 0.1 | 1000.0 199.870182 0.0 |
371
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.383154 0.1 | 1000.0 232.229057 0.0 |
372
+
373
+ There is no indication of an error in the water balance:
374
+
375
+ >>> round_(model.check_waterbalance(conditions))
376
+ 0.0
377
+
378
+ .. _ga_garto_5h_1000mm_evap_1min:
379
+
380
+ deep soil, 1 min
381
+ ----------------
382
+
383
+ :cite:t:`ref-Lai2015` recommend using a numerical substep length of less than 1 min.
384
+ If we set it to 1 min exactly, the total infiltration sum increases from 69.7 mm to
385
+ 69.9 mm. Hence, at least for deep loam soils, calculating in 1 min intervals seems
386
+ acceptable for practical applications:
387
+
388
+ .. integration-test::
389
+
390
+ >>> with pub.options.parameterstep("1m"):
391
+ ... dt(1)
392
+ >>> derived.nmbsubsteps.update()
393
+ >>> test("ga_garto_5h_1000mm_evap_1min")
394
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
395
+ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
396
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 39.09203 | 0.0 | 0.0 | 1.0 | 0.667335 | 39.09203 | 0.0 | 0.0 | 1.0 | 0.667335 | 0.1 0.434 0.1 | 1000.0 114.768457 0.0 |
397
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.357898 0.1 | 1000.0 144.757288 0.0 |
398
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.333753 0.1 | 1000.0 155.43215 0.0 |
399
+ | 03:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 30.843714 | 0.0 | 0.0 | 1.0 | 8.405415 | 30.843714 | 0.0 | 0.0 | 1.0 | 8.405415 | 0.1 0.434 0.1 | 1000.0 200.380986 0.0 |
400
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.382766 0.1 | 1000.0 233.151397 0.0 |
401
+
402
+ There is no indication of an error in the water balance:
403
+
404
+ >>> round_(model.check_waterbalance(conditions))
405
+ 0.0
406
+
407
+ .. _ga_garto_5h_1000mm_evap_1hour:
408
+
409
+ deep soil, 1 hour
410
+ -----------------
411
+
412
+ This example shows that even when selecting way too long substeps (in this case, equal
413
+ to the simulation step size), |ga_garto| works stably and holds the water balance
414
+ (still, its results might be more or less random):
415
+
416
+ .. integration-test::
417
+
418
+ >>> with pub.options.parameterstep("1h"):
419
+ ... dt(1.0)
420
+ >>> derived.nmbsubsteps.update()
421
+ >>> test("ga_garto_5h_1000mm_evap_1h")
422
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
423
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
424
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 35.149692 | 0.0 | 0.0 | 1.0 | 3.850308 | 35.149692 | 0.0 | 0.0 | 1.0 | 3.850308 | 0.1 0.434 0.1 | 1000.0 105.2386 0.0 |
425
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.13415 0.13515 0.13515 | 1000.0 0.0 0.0 |
426
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.13315 0.13415 0.13415 | 1000.0 0.0 0.0 |
427
+ | 03:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 33.775558 | 0.000005 | 0.0 | 1.0 | 5.224442 | 33.775558 | 0.000005 | 0.0 | 1.0 | 5.224442 | 0.13315 0.434 0.13415 | 1000.0 112.266969 0.0 |
428
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.165925 0.166925 0.166925 | 1000.0 0.0 0.0 |
429
+
430
+ There is no indication of an error in the water balance:
431
+
432
+ >>> round_(model.check_waterbalance(conditions))
433
+ 0.0
434
+
435
+ 5 hours, capillary rise
436
+ _______________________
437
+
438
+ In this subsection, we repeat some of the above examples with a capillary rise rate of
439
+ 1 mm/h:
440
+
441
+ >>> inputs.evaporation.series = 0.0
442
+ >>> inputs.capillaryrise.series = 1.0
443
+
444
+ We set the numerical substep length to 1 s, as in most examples above:
445
+
446
+ >>> with pub.options.parameterstep("1s"):
447
+ ... dt(1)
448
+ >>> derived.nmbsubsteps.update()
449
+
450
+ .. _ga_garto_5h_1000mm_caprise:
451
+
452
+ deep soil
453
+ ---------
454
+
455
+ Repeating the :ref:`ga_garto_5h_1000mm` example but including capillary rise reduces
456
+ surface runoff generation. This effect emerges especially for the second event, where
457
+ capillary rise has a cumulative impact due to also adding water during the previous
458
+ redistribution phase:
459
+
460
+ .. integration-test::
461
+
462
+ >>> soildepth(1000.0)
463
+ >>> test("ga_garto_5h_1000mm_caprise")
464
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
465
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
466
+ | 00:00 | 40.0 | 1.0 | 0.0 | 40.0 | 1.0 | 0.0 | 38.88927 | 0.0 | 1.0 | 0.0 | 1.11073 | 38.88927 | 0.0 | 1.0 | 0.0 | 1.11073 | 0.101065 0.434 0.101065 | 1000.0 116.611777 0.0 |
467
+ | 01:00 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.102222 0.36437 0.102222 | 1000.0 147.500306 0.0 |
468
+ | 02:00 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.103405 0.343752 0.103405 | 1000.0 160.120235 0.0 |
469
+ | 03:00 | 40.0 | 1.0 | 0.0 | 40.0 | 1.0 | 0.0 | 29.978803 | 0.0 | 1.0 | 0.0 | 10.021197 | 29.978803 | 0.0 | 1.0 | 0.0 | 10.021197 | 0.104618 0.434 0.104618 | 1000.0 207.207357 0.0 |
470
+ | 04:00 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.105912 0.387649 0.105912 | 1000.0 241.204907 0.0 |
471
+
472
+ There is no indication of an error in the water balance:
473
+
474
+ >>> round_(model.check_waterbalance(conditions))
475
+ 0.0
476
+
477
+ .. _ga_garto_5h_100mm_caprise:
478
+
479
+ 100 mm depth
480
+ ------------
481
+
482
+ After decreasing the soil's depth to 100 mm, the soil can absorb the available
483
+ capillary rise only at the start of the simulation. The actual soil water addition is
484
+ 0.82 mm for the first hour instead of the potential 1.0 mm. Afterwards, the soil is
485
+ full and cannot absorb any capillary rise:
486
+
487
+ .. integration-test::
488
+
489
+ >>> soildepth(100.0)
490
+ >>> test("ga_garto_5h_100mm_caprise")
491
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
492
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
493
+ | 00:00 | 40.0 | 1.0 | 0.0 | 40.0 | 1.0 | 0.0 | 34.956278 | 2.376001 | 0.819722 | 0.0 | 5.043722 | 34.956278 | 2.376001 | 0.819722 | 0.0 | 5.043722 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
494
+ | 01:00 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
495
+ | 02:00 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
496
+ | 03:00 | 40.0 | 1.0 | 0.0 | 40.0 | 1.0 | 0.0 | 13.2 | 13.2 | 0.0 | 0.0 | 26.8 | 13.2 | 13.2 | 0.0 | 0.0 | 26.8 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
497
+ | 04:00 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.434 0.434 0.434 | 100.0 0.0 0.0 |
498
+
499
+ There is no indication of an error in the water balance:
500
+
501
+ >>> round_(model.check_waterbalance(conditions))
502
+ 0.0
503
+
504
+ .. _ga_garto_5h_1000mm_evap_caprise:
505
+
506
+ capillary rise and evaporation
507
+ ------------------------------
508
+
509
+ In this example, we show what happens when simultaneously considering both capillary
510
+ rise and evaporation by assuming the same intensity of 1 mm/h:
511
+
512
+ >>> inputs.evaporation.series = 1.0
513
+
514
+ At first, one might assume |ga_garto| calculates the same infiltration rates as in the
515
+ :ref:`ga_garto_5h_1000mm` example because the capillary rise and evaporation cancel
516
+ each other out. However, we see slightly higher infiltration rates as in the
517
+ :ref:`ga_garto_5h_1000mm` results due to the different "priorities" of both processes.
518
+ For evaporation, method |Withdraw_AllBins_V1| prefers to take water from the wettest
519
+ bin (proceeds from right to left). For capillary rise, method |Withdraw_AllBins_V1|
520
+ prefers adding water to the dryest bin (proceeds from left to right):
521
+
522
+ .. integration-test::
523
+
524
+ >>> soildepth(1000.0)
525
+ >>> test("ga_garto_5h_1000mm_evap_caprise")
526
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
527
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
528
+ | 00:00 | 40.0 | 1.0 | 1.0 | 40.0 | 1.0 | 1.0 | 39.017221 | 0.0 | 1.0 | 1.0 | 0.734334 | 39.017221 | 0.0 | 1.0 | 1.0 | 0.734334 | 0.101064 0.434 0.101064 | 1000.0 114.742841 0.0 |
529
+ | 01:00 | 0.0 | 1.0 | 1.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.102218 0.358898 0.102218 | 1000.0 144.335188 0.0 |
530
+ | 02:00 | 0.0 | 1.0 | 1.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.103395 0.334413 0.103395 | 1000.0 155.273537 0.0 |
531
+ | 03:00 | 40.0 | 1.0 | 1.0 | 40.0 | 1.0 | 1.0 | 30.66013 | 0.0 | 1.0 | 1.0 | 8.576934 | 30.66013 | 0.0 | 1.0 | 1.0 | 8.576934 | 0.104598 0.434 0.104598 | 1000.0 200.638186 0.0 |
532
+ | 04:00 | 0.0 | 1.0 | 1.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0 | 0.0 | 0.105881 0.383441 0.105881 | 1000.0 233.492414 0.0 |
533
+
534
+ There is no indication of an error in the water balance:
535
+
536
+ >>> round_(model.check_waterbalance(conditions))
537
+ 0.0
538
+
539
+
540
+ 24 hours, no evaporation
541
+ ________________________
542
+
543
+ In this and the following subsection, we deal with more complex series of rainfall
544
+ events spanning 24 hours:
545
+
546
+ >>> pub.timegrids = pub.timegrids.init
547
+
548
+ The examples demonstrate how |ga_garto| works when pronounced hiatus periods occur,
549
+ where the accuracy of the redistribution process becomes highly important.
550
+ Additionally, we perform some "stress tests" to check the robustness of the interaction
551
+ of the different underlying methods. We begin with a repeating pattern of hourly
552
+ rainfall sums of 0 mm and 40 mm and zero evaporation:
553
+
554
+ >>> inputs.rainfall.series = 12 * [0.0, 40.0]
555
+ >>> inputs.evaporation.series = 0.0
556
+ >>> inputs.capillaryrise.series = 0.0
557
+
558
+ The following "no evaporation" examples focus on a sufficiently deep soil column of 1 m
559
+ depth:
560
+
561
+ >>> soildepth(1000.0)
562
+
563
+ .. _ga_garto_24h_1000mm_3bins:
564
+
565
+ three bins
566
+ ----------
567
+
568
+ For a series of 40 mm rainfall impulses, separated by hiatus periods of only one hour,
569
+ one should expect infiltration rates to decrease from event to event. However, the
570
+ eleventh event (21:00 - 22:00) deviates from this expectation. Inspecting the
571
+ evolution of the wetting fronts' relative moisture and depth reveals the cause. For
572
+ the first event (01:00 - 02:00), a single saturated wetting front (handled by the
573
+ second bin) is sufficient. For the next few subevents, an additional bin is required
574
+ for modelling new wetting fronts until they reach the old redistributing wetting front
575
+ of the second bin. From the seventh event (13:00 - 14:00), the new wetting front
576
+ cannot reach the depth of the old wetting front during the event anymore, but still in
577
+ the subsequent hiatus period. After the tenth event (19:00 - 20:00), the old front has
578
+ sufficiently grown to be out of reach for the new front, even during the hiatus period.
579
+ Then, |ga_garto| would need to activate a new bin to model the eleventh event with two
580
+ old and one new wetting front, which is impossible due to the limited number of
581
+ available bins:
582
+
583
+ ToDo: Should we think about increasing the number of bins automatically?
584
+
585
+ .. integration-test::
586
+
587
+ >>> test("ga_garto_24h_1000mm_3bins")
588
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
589
+ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
590
+ | 00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 | 1000.0 0.0 0.0 |
591
+ | 01:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 0.1 0.434 0.1 | 1000.0 116.457913 0.0 |
592
+ | 02:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.364279 0.1 | 1000.0 147.18132 0.0 |
593
+ | 03:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 29.427627 | 0.0 | 0.0 | 0.0 | 10.572373 | 29.427627 | 0.0 | 0.0 | 0.0 | 10.572373 | 0.1 0.434 0.1 | 1000.0 204.564581 0.0 |
594
+ | 04:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.387148 0.1 | 1000.0 237.941999 0.0 |
595
+ | 05:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 25.626714 | 0.0 | 0.0 | 0.0 | 14.373286 | 25.626714 | 0.0 | 0.0 | 0.0 | 14.373286 | 0.1 0.434 0.1 | 1000.0 281.291271 0.0 |
596
+ | 06:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.397405 0.1 | 1000.0 315.903728 0.0 |
597
+ | 07:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 23.681158 | 0.0 | 0.0 | 0.0 | 16.318842 | 23.681158 | 0.0 | 0.0 | 0.0 | 16.318842 | 0.1 0.434 0.1 | 1000.0 352.192943 0.0 |
598
+ | 08:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.403518 0.1 | 1000.0 387.563853 0.0 |
599
+ | 09:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 22.433986 | 0.0 | 0.0 | 0.0 | 17.566014 | 22.433986 | 0.0 | 0.0 | 0.0 | 17.566014 | 0.1 0.434 0.1 | 1000.0 419.360565 0.0 |
600
+ | 10:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.407664 0.1 | 1000.0 455.257579 0.0 |
601
+ | 11:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 21.542888 | 0.0 | 0.0 | 0.0 | 18.457112 | 21.542888 | 0.0 | 0.0 | 0.0 | 18.457112 | 0.1 0.434 0.1 | 1000.0 483.86023 0.0 |
602
+ | 12:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.410698 0.1 | 1000.0 520.148824 0.0 |
603
+ | 13:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 20.851521 | 0.0 | 0.0 | 0.0 | 19.148479 | 20.851521 | 0.0 | 0.0 | 0.0 | 19.148479 | 0.1 0.410698 0.434 | 1000.0 549.592648 502.252611 |
604
+ | 14:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.413271 0.1 | 1000.0 582.437628 0.0 |
605
+ | 15:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 20.248024 | 0.0 | 0.0 | 0.0 | 19.751976 | 20.248024 | 0.0 | 0.0 | 0.0 | 19.751976 | 0.1 0.413271 0.434 | 1000.0 613.068675 513.880136 |
606
+ | 16:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.415161 0.1 | 1000.0 643.192319 0.0 |
607
+ | 17:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 19.76204 | 0.0 | 0.0 | 0.0 | 20.23796 | 19.76204 | 0.0 | 0.0 | 0.0 | 20.23796 | 0.1 0.415161 0.434 | 1000.0 674.655072 522.639168 |
608
+ | 18:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.416592 0.1 | 1000.0 702.704838 0.0 |
609
+ | 19:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 19.363437 | 0.0 | 0.0 | 0.0 | 20.636563 | 19.363437 | 0.0 | 0.0 | 0.0 | 20.636563 | 0.1 0.416592 0.434 | 1000.0 734.757786 529.403244 |
610
+ | 20:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.416592 0.41723 | 1000.0 762.475214 690.509816 |
611
+ | 21:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 20.503402 | 0.0 | 0.0 | 0.0 | 19.496598 | 20.503402 | 0.0 | 0.0 | 0.0 | 19.496598 | 0.1 0.416592 0.434 | 1000.0 792.704507 653.366365 |
612
+ | 22:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.418979 0.1 | 1000.0 822.429032 0.0 |
613
+ | 23:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 18.677018 | 0.0 | 0.0 | 0.0 | 21.322982 | 18.677018 | 0.0 | 0.0 | 0.0 | 21.322982 | 0.1 0.418979 0.434 | 1000.0 855.509696 540.914341 |
614
+
615
+ There is no indication of an error in the water balance:
616
+
617
+ >>> round_(model.check_waterbalance(conditions))
618
+ 0.0
619
+
620
+ .. _ga_garto_24h_1000mm_4bins:
621
+
622
+ four bins
623
+ ---------
624
+
625
+ After setting the number of available bins to four, |ga_garto| can create all wetting
626
+ fronts required during the simulation period and predicts the infiltration rate
627
+ decrease expected for all events:
628
+
629
+ .. integration-test::
630
+
631
+ >>> nmbbins(4)
632
+ >>> test("ga_garto_24h_1000mm_4bins")
633
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
634
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
635
+ | 00:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 1000.0 0.0 0.0 0.0 |
636
+ | 01:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 38.896943 | 0.0 | 0.0 | 0.0 | 1.103057 | 0.1 0.434 0.1 0.1 | 1000.0 116.457913 0.0 0.0 |
637
+ | 02:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.364279 0.1 0.1 | 1000.0 147.18132 0.0 0.0 |
638
+ | 03:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 29.427627 | 0.0 | 0.0 | 0.0 | 10.572373 | 29.427627 | 0.0 | 0.0 | 0.0 | 10.572373 | 0.1 0.434 0.1 0.1 | 1000.0 204.564581 0.0 0.0 |
639
+ | 04:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.387148 0.1 0.1 | 1000.0 237.941999 0.0 0.0 |
640
+ | 05:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 25.626714 | 0.0 | 0.0 | 0.0 | 14.373286 | 25.626714 | 0.0 | 0.0 | 0.0 | 14.373286 | 0.1 0.434 0.1 0.1 | 1000.0 281.291271 0.0 0.0 |
641
+ | 06:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.397405 0.1 0.1 | 1000.0 315.903728 0.0 0.0 |
642
+ | 07:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 23.681158 | 0.0 | 0.0 | 0.0 | 16.318842 | 23.681158 | 0.0 | 0.0 | 0.0 | 16.318842 | 0.1 0.434 0.1 0.1 | 1000.0 352.192943 0.0 0.0 |
643
+ | 08:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.403518 0.1 0.1 | 1000.0 387.563853 0.0 0.0 |
644
+ | 09:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 22.434993 | 0.0 | 0.0 | 0.0 | 17.565007 | 22.434993 | 0.0 | 0.0 | 0.0 | 17.565007 | 0.1 0.434 0.1 0.1 | 1000.0 419.36358 0.0 0.0 |
645
+ | 10:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.407664 0.1 0.1 | 1000.0 455.260614 0.0 0.0 |
646
+ | 11:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 21.543879 | 0.0 | 0.0 | 0.0 | 18.456121 | 21.543879 | 0.0 | 0.0 | 0.0 | 18.456121 | 0.1 0.434 0.1 0.1 | 1000.0 483.866211 0.0 0.0 |
647
+ | 12:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.410698 0.1 0.1 | 1000.0 520.154838 0.0 0.0 |
648
+ | 13:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 20.852762 | 0.0 | 0.0 | 0.0 | 19.147238 | 20.852762 | 0.0 | 0.0 | 0.0 | 19.147238 | 0.1 0.410698 0.434 0.1 | 1000.0 549.604576 502.232076 0.0 |
649
+ | 14:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.413271 0.1 0.1 | 1000.0 582.447698 0.0 0.0 |
650
+ | 15:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 20.249245 | 0.0 | 0.0 | 0.0 | 19.750755 | 20.249245 | 0.0 | 0.0 | 0.0 | 19.750755 | 0.1 0.413271 0.434 0.1 | 1000.0 613.084239 513.859417 0.0 |
651
+ | 16:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.415161 0.1 0.1 | 1000.0 643.205436 0.0 0.0 |
652
+ | 17:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 19.763163 | 0.0 | 0.0 | 0.0 | 20.236837 | 19.763163 | 0.0 | 0.0 | 0.0 | 20.236837 | 0.1 0.415161 0.434 0.1 | 1000.0 674.67364 522.620811 0.0 |
653
+ | 18:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.416593 0.1 0.1 | 1000.0 702.72179 0.0 0.0 |
654
+ | 19:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 19.364813 | 0.0 | 0.0 | 0.0 | 20.635187 | 19.364813 | 0.0 | 0.0 | 0.0 | 20.635187 | 0.1 0.416593 0.434 0.1 | 1000.0 734.780849 529.379914 0.0 |
655
+ | 20:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.416593 0.41723 0.1 | 1000.0 762.498422 690.44692 0.0 |
656
+ | 21:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 19.10987 | 0.0 | 0.0 | 0.0 | 20.89013 | 19.10987 | 0.0 | 0.0 | 0.0 | 20.89013 | 0.1 0.41723 0.434 0.1 | 1000.0 794.446748 532.431799 0.0 |
657
+ | 22:00 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.41723 0.41729 0.1 | 1000.0 822.468829 652.505949 0.0 |
658
+ | 23:00 | 40.0 | 0.0 | 0.0 | 40.0 | 0.0 | 0.0 | 18.967684 | 0.0 | 0.0 | 0.0 | 21.032316 | 18.967684 | 0.0 | 0.0 | 0.0 | 21.032316 | 0.1 0.41729 0.434 0.1 | 1000.0 854.161255 532.72863 0.0 |
659
+
660
+ There is no indication of an error in the water balance:
661
+
662
+ >>> round_(model.check_waterbalance(conditions))
663
+ 0.0
664
+
665
+ 24 hours, evaporation
666
+ _____________________
667
+
668
+ This subsection combines complex precipitation events with an evaporation rate of
669
+ 1 mm/h:
670
+
671
+ >>> inputs.evaporation.series = 1.0
672
+
673
+ .. _ga_garto_24h_1000mm_evap:
674
+
675
+ multiple events
676
+ ---------------
677
+
678
+ In contrast to the :ref:`ga_garto_5h_1000mm_evap` example, rainfall starts in the
679
+ second simulation step. Hence, the initial moisture (handled by the first bin)
680
+ decreases during the first simulation step:
681
+
682
+ .. integration-test::
683
+
684
+ >>> test("ga_garto_24h_1000mm_evap")
685
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
686
+ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
687
+ | 00:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.099 0.099 0.099 | 1000.0 0.0 0.0 0.0 |
688
+ | 01:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 39.041594 | 0.0 | 0.0 | 1.0 | 0.713078 | 39.041594 | 0.0 | 0.0 | 1.0 | 0.713078 | 0.099 0.434 0.099 0.099 | 1000.0 114.289319 0.0 0.0 |
689
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.358644 0.099 0.099 | 1000.0 143.607705 0.0 0.0 |
690
+ | 03:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 29.920271 | 0.0 | 0.0 | 1.0 | 9.273387 | 29.920271 | 0.0 | 0.0 | 1.0 | 9.273387 | 0.099 0.434 0.099 0.099 | 1000.0 200.040404 0.0 0.0 |
691
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.383262 0.099 0.099 | 1000.0 232.228153 0.0 0.0 |
692
+ | 05:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 26.151093 | 0.0 | 0.0 | 1.0 | 12.997939 | 26.151093 | 0.0 | 0.0 | 1.0 | 12.997939 | 0.099 0.434 0.099 0.099 | 1000.0 274.673421 0.0 0.0 |
693
+ | 06:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.394281 0.099 0.099 | 1000.0 308.23364 0.0 0.0 |
694
+ | 07:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 24.246288 | 0.0 | 0.0 | 1.0 | 14.881992 | 24.246288 | 0.0 | 0.0 | 1.0 | 14.881992 | 0.099 0.434 0.099 0.099 | 1000.0 343.682399 0.0 0.0 |
695
+ | 08:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.40086 0.099 0.099 | 1000.0 378.101578 0.0 0.0 |
696
+ | 09:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 23.029243 | 0.0 | 0.0 | 1.0 | 16.085756 | 23.029243 | 0.0 | 0.0 | 1.0 | 16.085756 | 0.099 0.434 0.099 0.099 | 1000.0 409.098052 0.0 0.0 |
697
+ | 10:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.40533 0.099 0.099 | 1000.0 444.121263 0.0 0.0 |
698
+ | 11:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 22.159184 | 0.0 | 0.0 | 1.0 | 16.946127 | 22.159184 | 0.0 | 0.0 | 1.0 | 16.946127 | 0.099 0.434 0.099 0.099 | 1000.0 471.945433 0.0 0.0 |
699
+ | 12:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.408607 0.099 0.099 | 1000.0 507.422909 0.0 0.0 |
700
+ | 13:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 21.486061 | 0.0 | 0.0 | 1.0 | 17.61165 | 21.486061 | 0.0 | 0.0 | 1.0 | 17.61165 | 0.099 0.408607 0.434 0.099 | 1000.0 535.098528 504.856362 0.0 |
701
+ | 14:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.4113 0.099 0.099 | 1000.0 568.331329 0.0 0.0 |
702
+ | 15:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 20.90663 | 0.0 | 0.0 | 1.0 | 18.184482 | 20.90663 | 0.0 | 0.0 | 1.0 | 18.184482 | 0.099 0.4113 0.434 0.099 | 1000.0 597.246501 519.184071 0.0 |
703
+ | 16:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.413387 0.099 0.099 | 1000.0 627.587693 0.0 0.0 |
704
+ | 17:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 20.421532 | 0.0 | 0.0 | 1.0 | 18.66414 | 20.421532 | 0.0 | 0.0 | 1.0 | 18.66414 | 0.099 0.413387 0.434 0.099 | 1000.0 657.465384 530.870913 0.0 |
705
+ | 18:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.414936 0.099 0.099 | 1000.0 685.713192 0.0 0.0 |
706
+ | 19:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 20.025604 | 0.0 | 0.0 | 1.0 | 19.055781 | 20.025604 | 0.0 | 0.0 | 1.0 | 19.055781 | 0.099 0.414936 0.434 0.099 | 1000.0 716.263636 539.87659 0.0 |
707
+ | 20:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.414936 0.416189 0.099 | 1000.0 742.803107 724.318214 0.0 |
708
+ | 21:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 19.689022 | 0.0 | 0.0 | 1.0 | 19.388809 | 19.689022 | 0.0 | 0.0 | 1.0 | 19.388809 | 0.099 0.416189 0.434 0.099 | 1000.0 773.818616 547.4229 0.0 |
709
+ | 22:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.416189 0.416346 0.099 | 1000.0 801.068162 680.245328 0.0 |
710
+ | 23:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 19.538331 | 0.0 | 0.0 | 1.0 | 19.538741 | 19.538331 | 0.0 | 0.0 | 1.0 | 19.538741 | 0.099 0.416346 0.434 0.099 | 1000.0 831.823337 548.446593 0.0 |
711
+
712
+ There is no indication of an error in the water balance:
713
+
714
+ >>> round_(model.check_waterbalance(conditions))
715
+ 0.0
716
+
717
+ .. _ga_garto_24h_1000mm_evap_continuous:
718
+
719
+ continuous event
720
+ ----------------
721
+
722
+ Now, we define an extreme rainfall event with multiple increases and decreases in
723
+ intensity:
724
+
725
+ >>> inputs.rainfall.series = [
726
+ ... 0.0, 10.0, 20.0, 10.0, 20.0, 30.0, 20.0, 30.0, 40.0, 30.0, 40.0, 50.0,
727
+ ... 50.0, 40.0, 30.0, 40.0, 30.0, 20.0, 30.0, 20.0, 10.0, 20.0, 10.0, 0.0]
728
+
729
+ Because of the vast rainfall, the soil saturates entirely in the 20th hour, and
730
+ percolation becomes significant afterwards. In the 21st hour, it is restricted by
731
+ saturated conductivity and in the 22nd hour, by the current rainfall rate. Note there
732
+ is a difference in the behaviour especially relevant during the 21st hour, which we
733
+ discuss in the documentation on method |Redistribute_Front_V1|:
734
+
735
+ .. integration-test::
736
+
737
+ >>> test("ga_garto_24h_1000mm_evap_continuous")
738
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
739
+ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
740
+ | 00:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.099 0.099 0.099 | 1000.0 0.0 0.0 0.0 |
741
+ | 01:00 | 10.0 | 0.0 | 1.0 | 10.0 | 0.0 | 1.0 | 10.0 | 0.0 | 0.0 | 1.0 | 0.0 | 10.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.362114 0.099 0.099 | 1000.0 34.205692 0.0 0.0 |
742
+ | 02:00 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 0.0 | 1.0 | 0.0 | 20.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.423016 0.099 0.099 | 1000.0 86.415369 0.0 0.0 |
743
+ | 03:00 | 10.0 | 0.0 | 1.0 | 10.0 | 0.0 | 1.0 | 10.0 | 0.0 | 0.0 | 1.0 | 0.0 | 10.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.401285 0.099 0.099 | 1000.0 122.401136 0.0 0.0 |
744
+ | 04:00 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 0.0 | 1.0 | 0.0 | 20.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.432646 0.099 0.099 | 1000.0 167.842713 0.0 0.0 |
745
+ | 05:00 | 30.0 | 0.0 | 1.0 | 30.0 | 0.0 | 1.0 | 24.597228 | 0.0 | 0.0 | 1.0 | 4.402772 | 24.597228 | 0.0 | 0.0 | 1.0 | 4.402772 | 0.099 0.434 0.099 0.099 | 1000.0 240.588739 0.0 0.0 |
746
+ | 06:00 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 0.0 | 1.0 | 0.0 | 20.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.099 0.433999 0.099 0.099 | 1000.0 297.305986 0.0 0.0 |
747
+ | 07:00 | 30.0 | 0.0 | 1.0 | 30.0 | 0.0 | 1.0 | 20.265771 | 0.0 | 0.0 | 1.0 | 8.734229 | 20.265771 | 0.0 | 0.0 | 1.0 | 8.734229 | 0.099 0.434 0.099 0.099 | 1000.0 357.799995 0.0 0.0 |
748
+ | 08:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 19.185635 | 0.0 | 0.0 | 1.0 | 19.814365 | 19.185635 | 0.0 | 0.0 | 1.0 | 19.814365 | 0.099 0.434 0.099 0.099 | 1000.0 415.070547 0.0 0.0 |
749
+ | 09:00 | 30.0 | 0.0 | 1.0 | 30.0 | 0.0 | 1.0 | 18.424562 | 0.0 | 0.0 | 1.0 | 10.575438 | 18.424562 | 0.0 | 0.0 | 1.0 | 10.575438 | 0.099 0.434 0.099 0.099 | 1000.0 470.069238 0.0 0.0 |
750
+ | 10:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 17.854101 | 0.0 | 0.0 | 1.0 | 21.145899 | 17.854101 | 0.0 | 0.0 | 1.0 | 21.145899 | 0.099 0.434 0.099 0.099 | 1000.0 523.365062 0.0 0.0 |
751
+ | 11:00 | 50.0 | 0.0 | 1.0 | 50.0 | 0.0 | 1.0 | 17.407673 | 0.0 | 0.0 | 1.0 | 31.592327 | 17.407673 | 0.0 | 0.0 | 1.0 | 31.592327 | 0.099 0.434 0.099 0.099 | 1000.0 575.328266 0.0 0.0 |
752
+ | 12:00 | 50.0 | 0.0 | 1.0 | 50.0 | 0.0 | 1.0 | 17.047104 | 0.0 | 0.0 | 1.0 | 31.952896 | 17.047104 | 0.0 | 0.0 | 1.0 | 31.952896 | 0.099 0.434 0.099 0.099 | 1000.0 626.215142 0.0 0.0 |
753
+ | 13:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 16.748785 | 0.0 | 0.0 | 1.0 | 22.251215 | 16.748785 | 0.0 | 0.0 | 1.0 | 22.251215 | 0.099 0.434 0.099 0.099 | 1000.0 676.211516 0.0 0.0 |
754
+ | 14:00 | 30.0 | 0.0 | 1.0 | 30.0 | 0.0 | 1.0 | 16.497275 | 0.0 | 0.0 | 1.0 | 12.502725 | 16.497275 | 0.0 | 0.0 | 1.0 | 12.502725 | 0.099 0.434 0.099 0.099 | 1000.0 725.457114 0.0 0.0 |
755
+ | 15:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 16.282023 | 0.0 | 0.0 | 1.0 | 22.717977 | 16.282023 | 0.0 | 0.0 | 1.0 | 22.717977 | 0.099 0.434 0.099 0.099 | 1000.0 774.060169 0.0 0.0 |
756
+ | 16:00 | 30.0 | 0.0 | 1.0 | 30.0 | 0.0 | 1.0 | 16.095253 | 0.0 | 0.0 | 1.0 | 12.904747 | 16.095253 | 0.0 | 0.0 | 1.0 | 12.904747 | 0.099 0.434 0.099 0.099 | 1000.0 822.105699 0.0 0.0 |
757
+ | 17:00 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 1.0 | 15.931516 | 0.0 | 0.0 | 1.0 | 3.068484 | 15.931516 | 0.0 | 0.0 | 1.0 | 3.068484 | 0.099 0.434 0.099 0.099 | 1000.0 869.662463 0.0 0.0 |
758
+ | 18:00 | 30.0 | 0.0 | 1.0 | 30.0 | 0.0 | 1.0 | 15.786723 | 0.0 | 0.0 | 1.0 | 13.213277 | 15.786723 | 0.0 | 0.0 | 1.0 | 13.213277 | 0.099 0.434 0.099 0.099 | 1000.0 916.78701 0.0 0.0 |
759
+ | 19:00 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 1.0 | 15.657507 | 0.0 | 0.0 | 1.0 | 3.342493 | 15.657507 | 0.0 | 0.0 | 1.0 | 3.342493 | 0.099 0.434 0.099 0.099 | 1000.0 963.525835 0.0 0.0 |
760
+ | 20:00 | 10.0 | 0.0 | 1.0 | 10.0 | 0.0 | 1.0 | 10.0 | 0.867385 | 0.0 | 1.0 | 0.0 | 10.0 | 0.867385 | 0.0 | 1.0 | 0.0 | 0.429914 0.429914 0.429914 0.429914 | 1000.0 0.0 0.0 0.0 |
761
+ | 21:00 | 20.0 | 0.0 | 1.0 | 20.0 | 0.0 | 1.0 | 17.495333 | 12.776553 | 0.0 | 1.0 | 2.136333 | 17.495333 | 12.776553 | 0.0 | 1.0 | 2.136333 | 0.434001 0.434001 0.434001 0.434001 | 1000.0 0.0 0.0 0.0 |
762
+ | 22:00 | 10.0 | 0.0 | 1.0 | 10.0 | 0.0 | 1.0 | 10.0 | 10.0 | 0.0 | 1.0 | 0.0 | 10.0 | 10.0 | 0.0 | 1.0 | 0.0 | 0.433001 0.433001 0.433001 0.433001 | 1000.0 0.0 0.0 0.0 |
763
+ | 23:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.432001 0.432001 0.432001 0.432001 | 1000.0 0.0 0.0 0.0 |
764
+
765
+ There is no indication of an error in the water balance:
766
+
767
+ >>> round_(model.check_waterbalance(conditions))
768
+ 0.0
769
+
770
+ .. _ga_garto_24h_1000mm_evap_interruptions:
771
+
772
+ long interruption
773
+ -----------------
774
+
775
+ We define three strong rainfall impulses with hiatus periods of ten and eleven hours to
776
+ give better insight into the longer-term behaviour of wetting front redistribution:
777
+
778
+ >>> inputs.rainfall.series = 0.0
779
+ >>> inputs.rainfall.series[[0, 11, 23]] = 40.0, 15.0, 15.0
780
+
781
+ The second, smaller rainfall impulse cause the creation of a second wetting front.
782
+ This front does not become fully saturated and requires about three hours for to reach
783
+ the first front's depth:
784
+
785
+ .. integration-test::
786
+
787
+ >>> test("ga_garto_24h_1000mm_evap_interruptions")
788
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
789
+ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
790
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 39.024721 | 0.0 | 0.0 | 1.0 | 0.727698 | 39.024721 | 0.0 | 0.0 | 1.0 | 0.727698 | 0.1 0.434 0.1 0.1 | 1000.0 114.58773 0.0 0.0 |
791
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.358798 0.1 0.1 | 1000.0 144.020647 0.0 0.0 |
792
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.334277 0.1 0.1 | 1000.0 154.826468 0.0 0.0 |
793
+ | 03:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.318405 0.1 0.1 | 1000.0 161.499839 0.0 0.0 |
794
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.306195 0.1 0.1 | 1000.0 166.212888 0.0 0.0 |
795
+ | 05:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.295993 0.1 0.1 | 1000.0 169.763106 0.0 0.0 |
796
+ | 06:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.287043 0.1 0.1 | 1000.0 172.539757 0.0 0.0 |
797
+ | 07:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.27894 0.1 0.1 | 1000.0 174.764504 0.0 0.0 |
798
+ | 08:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.27144 0.1 0.1 | 1000.0 176.576626 0.0 0.0 |
799
+ | 09:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.264387 0.1 0.1 | 1000.0 178.069861 0.0 0.0 |
800
+ | 10:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.257672 0.1 0.1 | 1000.0 179.310578 0.0 0.0 |
801
+ | 11:00 | 15.0 | 0.0 | 1.0 | 15.0 | 0.0 | 1.0 | 15.0 | 0.0 | 0.0 | 1.0 | 0.0 | 15.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.257672 0.408371 0.1 | 1000.0 179.504341 92.697947 0.0 |
802
+ | 12:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.257672 0.348534 0.1 | 1000.0 179.691196 142.414 0.0 |
803
+ | 13:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.257672 0.329314 0.1 | 1000.0 179.868591 166.271421 0.0 |
804
+ | 14:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.316885 0.1 0.1 | 1000.0 181.074289 0.0 0.0 |
805
+ | 15:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.306472 0.1 0.1 | 1000.0 185.3631 0.0 0.0 |
806
+ | 16:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.297508 0.1 0.1 | 1000.0 188.713192 0.0 0.0 |
807
+ | 17:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.289506 0.1 0.1 | 1000.0 191.404458 0.0 0.0 |
808
+ | 18:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.282184 0.1 0.1 | 1000.0 193.608049 0.0 0.0 |
809
+ | 19:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.275362 0.1 0.1 | 1000.0 195.436907 0.0 0.0 |
810
+ | 20:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.268921 0.1 0.1 | 1000.0 196.969814 0.0 0.0 |
811
+ | 21:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.262774 0.1 0.1 | 1000.0 198.264096 0.0 0.0 |
812
+ | 22:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.256861 0.1 0.1 | 1000.0 199.362866 0.0 0.0 |
813
+ | 23:00 | 15.0 | 0.0 | 1.0 | 15.0 | 0.0 | 1.0 | 15.0 | 0.0 | 0.0 | 1.0 | 0.0 | 15.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.1 0.256861 0.408284 0.1 | 1000.0 199.547726 92.265084 0.0 |
814
+
815
+ There is no indication of an error in the water balance:
816
+
817
+ >>> round_(model.check_waterbalance(conditions))
818
+ 0.0
819
+
820
+ .. _ga_garto_24h_sealed:
821
+
822
+ sealed surface
823
+ --------------
824
+
825
+ One can mark individual soil compartments as "sealed":
826
+
827
+ >>> sealed(True)
828
+
829
+ Then, the soil's surface prevents infiltration and all rainfall evaporates, or becomes
830
+ surface runoff:
831
+
832
+ .. integration-test::
833
+
834
+ >>> test("ga_garto_24h_sealed")
835
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
836
+ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
837
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 39.0 | 0.0 | 0.0 | 0.0 | 1.0 | 39.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
838
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
839
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
840
+ | 03:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
841
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
842
+ | 05:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
843
+ | 06:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
844
+ | 07:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
845
+ | 08:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
846
+ | 09:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
847
+ | 10:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
848
+ | 11:00 | 15.0 | 0.0 | 1.0 | 15.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 14.0 | 0.0 | 0.0 | 0.0 | 1.0 | 14.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
849
+ | 12:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
850
+ | 13:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
851
+ | 14:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
852
+ | 15:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
853
+ | 16:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
854
+ | 17:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
855
+ | 18:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
856
+ | 19:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
857
+ | 20:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
858
+ | 21:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
859
+ | 22:00 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
860
+ | 23:00 | 15.0 | 0.0 | 1.0 | 15.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 14.0 | 0.0 | 0.0 | 0.0 | 1.0 | 14.0 | 0.1 0.1 0.1 0.1 | 0.0 0.0 0.0 0.0 |
861
+
862
+ There is no indication of an error in the water balance:
863
+
864
+ >>> round_(model.check_waterbalance(conditions))
865
+ 0.0
866
+
867
+
868
+ .. _ga_garto_5h_3soils:
869
+
870
+ three compartments
871
+ ------------------
872
+
873
+ We prepare three soil compartments within the same model instance, of which the last
874
+ one is sealed:
875
+
876
+ >>> nmbsoils(3)
877
+ >>> sealed(False, False, True)
878
+
879
+
880
+ We must define each compartment's area but only the depth of unsealed ones:
881
+
882
+ >>> soilarea(1.0, 2.0, 3.0)
883
+ >>> soildepth(400.0, 100.0, nan)
884
+
885
+ We take the soil properties for sand (first compartment) and clay (second compartment)
886
+ from table 1 of :cite:t:`ref-Lai2015`:
887
+
888
+ >>> residualmoisture(0.02, 0.09, nan)
889
+ >>> saturationmoisture(0.417, 0.385, nan)
890
+ >>> saturatedconductivity(235.6, 0.6, nan)
891
+ >>> poresizedistribution(0.694, 0.165, nan)
892
+ >>> airentrypotential(72.6, 373.0, nan)
893
+
894
+ Due to changing the arrays' shapes, we need to update the memorised initial conditions
895
+ required for checking the water balance:
896
+
897
+ >>> test.reset_inits()
898
+ >>> conditions = model.conditions
899
+
900
+ Sand allows for much more infiltration than clay, of course. So, the wetting front
901
+ created during the first rainfall impulse reaches the sand soil's bottom (at a depth of
902
+ 400 mm) during the 6th hour. The tiny amount of percolation (0.0002 mm) at this time
903
+ is due to numerical inaccuracy (or the fact that |Merge_SoilDepthOvershootings_V1|
904
+ considers water overshooting the soil's depth as groundwater recharge). In contrast,
905
+ in the clay soil, the deepest wetting front propagates to a depth of less than 70 mm
906
+ during the entire 24 h period only:
907
+
908
+ .. integration-test::
909
+
910
+ >>> test("ga_garto_5h_3soils")
911
+ | date | rainfall | capillaryrise | evaporation | surfacewatersupply | soilwatersupply | demand | infiltration | percolation | soilwateraddition | withdrawal | surfacerunoff | totalinfiltration | totalpercolation | totalsoilwateraddition | totalwithdrawal | totalsurfacerunoff | moisture | frontdepth |
912
+ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
913
+ | 00:00 | 40.0 | 0.0 | 1.0 | 40.0 40.0 40.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 40.0 14.791244 0.0 | 0.019062 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 24.279057 39.0 | 11.597081 | 0.003177 | 0.0 | 1.0 | 27.593019 | 0.1 0.1 0.1 0.301056 0.385 0.1 0.1 0.1 0.1 0.1 0.1 0.1 | 400.0 100.0 0.0 193.881434 51.652432 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
914
+ | 01:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.1 0.1 0.1 0.230493 0.332214 0.1 0.1 0.1 0.1 0.1 0.1 0.1 | 400.0 100.0 0.0 291.056551 59.087523 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
915
+ | 02:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.1 0.1 0.1 0.209759 0.307931 0.1 0.1 0.1 0.1 0.1 0.1 0.1 | 400.0 100.0 0.0 336.929013 61.17858 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
916
+ | 03:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.1 0.1 0.1 0.197433 0.288756 0.1 0.1 0.1 0.1 0.1 0.1 0.1 | 400.0 100.0 0.0 369.288731 62.095805 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
917
+ | 04:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.1 0.1 0.1 0.188608 0.271453 0.1 0.1 0.1 0.1 0.1 0.1 0.1 | 400.0 100.0 0.0 394.781137 62.530085 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
918
+ | 05:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.000201 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.000033 | 0.0 | 0.5 | 0.0 | 0.184952 0.1 0.1 0.184953 0.254952 0.1 0.184953 0.1 0.1 0.184953 0.1 0.1 | 400.0 100.0 0.0 0.0 62.735058 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
919
+ | 06:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.182452 0.1 0.1 0.182453 0.238807 0.1 0.182453 0.1 0.1 0.182453 0.1 0.1 | 400.0 100.0 0.0 0.0 62.82789 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
920
+ | 07:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.179952 0.1 0.1 0.179953 0.222814 0.1 0.179953 0.1 0.1 0.179953 0.1 0.1 | 400.0 100.0 0.0 0.0 62.867167 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
921
+ | 08:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.177452 0.1 0.1 0.177453 0.206881 0.1 0.177453 0.1 0.1 0.177453 0.1 0.1 | 400.0 100.0 0.0 0.0 62.882303 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
922
+ | 09:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.174952 0.1 0.1 0.174953 0.190971 0.1 0.174953 0.1 0.1 0.174953 0.1 0.1 | 400.0 100.0 0.0 0.0 62.887463 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
923
+ | 10:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.172452 0.1 0.1 0.172453 0.175068 0.1 0.172453 0.1 0.1 0.172453 0.1 0.1 | 400.0 100.0 0.0 0.0 62.88896 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
924
+ | 11:00 | 15.0 | 0.0 | 1.0 | 15.0 15.0 15.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 15.0 11.882861 0.0 | 0.845942 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 2.520368 14.0 | 6.460954 | 0.14099 | 0.0 | 1.0 | 7.840123 | 0.172452 0.1 0.1 0.247859 0.175068 0.1 0.172452 0.385 0.1 0.172452 0.1 0.1 | 400.0 100.0 0.0 174.440504 62.88896 0.0 0.0 54.682601 0.0 0.0 0.0 0.0 |
925
+ | 12:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.172452 0.1 0.1 0.213064 0.336058 0.1 0.172452 0.1 0.1 0.172452 0.1 0.1 | 400.0 100.0 0.0 299.268379 64.393528 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
926
+ | 13:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.172452 0.1 0.1 0.200519 0.313074 0.1 0.172452 0.1 0.1 0.172452 0.1 0.1 | 400.0 100.0 0.0 397.400794 66.646073 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
927
+ | 14:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.00029 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.000048 | 0.0 | 0.5 | 0.0 | 0.197836 0.1 0.1 0.197837 0.295007 0.1 0.197837 0.1 0.1 0.197837 0.1 0.1 | 400.0 100.0 0.0 0.0 67.692993 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
928
+ | 15:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.195336 0.1 0.1 0.195337 0.278839 0.1 0.195337 0.1 0.1 0.195337 0.1 0.1 | 400.0 100.0 0.0 0.0 68.220977 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
929
+ | 16:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.192836 0.1 0.1 0.192837 0.263536 0.1 0.192837 0.1 0.1 0.192837 0.1 0.1 | 400.0 100.0 0.0 0.0 68.489783 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
930
+ | 17:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.190336 0.1 0.1 0.190337 0.248646 0.1 0.190337 0.1 0.1 0.190337 0.1 0.1 | 400.0 100.0 0.0 0.0 68.623364 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
931
+ | 18:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.187836 0.1 0.1 0.187837 0.23395 0.1 0.187837 0.1 0.1 0.187837 0.1 0.1 | 400.0 100.0 0.0 0.0 68.686744 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
932
+ | 19:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.185336 0.1 0.1 0.185337 0.219342 0.1 0.185337 0.1 0.1 0.185337 0.1 0.1 | 400.0 100.0 0.0 0.0 68.714921 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
933
+ | 20:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.182836 0.1 0.1 0.182837 0.204772 0.1 0.182837 0.1 0.1 0.182837 0.1 0.1 | 400.0 100.0 0.0 0.0 68.726433 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
934
+ | 21:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.180336 0.1 0.1 0.180337 0.190216 0.1 0.180337 0.1 0.1 0.180337 0.1 0.1 | 400.0 100.0 0.0 0.0 68.730654 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
935
+ | 22:00 | 0.0 | 0.0 | 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 0.0 | 0.0 0.0 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 | 0.177836 0.1 0.1 0.177837 0.175665 0.1 0.177837 0.1 0.1 0.177837 0.1 0.1 | 400.0 100.0 0.0 0.0 68.731999 0.0 0.0 0.0 0.0 0.0 0.0 0.0 |
936
+ | 23:00 | 15.0 | 0.0 | 1.0 | 15.0 15.0 15.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 15.0 11.870193 0.0 | 1.037538 0.0 0.0 | 0.0 0.0 0.0 | 1.0 1.0 1.0 | 0.0 2.53189 14.0 | 6.456731 | 0.172923 | 0.0 | 1.0 | 7.843963 | 0.177836 0.1 0.1 0.247817 0.175665 0.1 0.177836 0.385 0.1 0.177836 0.1 0.1 | 400.0 100.0 0.0 185.229656 68.732 0.0 0.0 54.78341 0.0 0.0 0.0 0.0 |
937
+
938
+ There is no indication of an error in the water balance:
939
+
940
+ >>> round_(model.check_waterbalance(conditions))
941
+ 0.0
942
+ """
943
+ # import...
944
+ # ...from HydPy
945
+ from hydpy.core import modeltools
946
+ from hydpy.exe.modelimports import *
947
+ from hydpy.core.typingtools import *
948
+
949
+ # ...from ga
950
+ from hydpy.models.ga import ga_model
951
+
952
+
953
+ class Model(ga_model.BaseModel):
954
+ """|ga_garto.DOCNAME.complete|."""
955
+
956
+ DOCNAME = modeltools.DocName(
957
+ short="GA-GARTO",
958
+ description=(
959
+ "main model for calculating the Green-Ampt / Talbot-Ogden infiltration "
960
+ "with redistribution"
961
+ ),
962
+ )
963
+ __HYDPY_ROOTMODEL__ = False # ToDo: merge `ga_garto` and `ga_garto_submodel1`
964
+
965
+ INLET_METHODS = ()
966
+ RECEIVER_METHODS = ()
967
+ RUN_METHODS = (
968
+ ga_model.Calc_SurfaceWaterSupply_V1,
969
+ ga_model.Calc_SoilWaterSupply_V1,
970
+ ga_model.Calc_Demand_V1,
971
+ ga_model.Perform_GARTO_V1,
972
+ ga_model.Calc_TotalInfiltration_V1,
973
+ ga_model.Calc_TotalPercolation_V1,
974
+ ga_model.Calc_TotalSoilWaterAddition_V1,
975
+ ga_model.Calc_TotalWithdrawal_V1,
976
+ ga_model.Calc_TotalSurfaceRunoff_V1,
977
+ )
978
+ ADD_METHODS = (
979
+ ga_model.Return_RelativeMoisture_V1,
980
+ ga_model.Return_Conductivity_V1,
981
+ ga_model.Return_CapillaryDrive_V1,
982
+ ga_model.Return_DryDepth_V1,
983
+ ga_model.Return_LastActiveBin_V1,
984
+ ga_model.Active_Bin_V1,
985
+ ga_model.Percolate_FilledBin_V1,
986
+ ga_model.Shift_Front_V1,
987
+ ga_model.Redistribute_Front_V1,
988
+ ga_model.Infiltrate_WettingFrontBins_V1,
989
+ ga_model.Merge_FrontDepthOvershootings_V1,
990
+ ga_model.Merge_SoilDepthOvershootings_V1,
991
+ ga_model.Water_AllBins_V1,
992
+ ga_model.Withdraw_AllBins_V1,
993
+ )
994
+ OUTLET_METHODS = ()
995
+ SENDER_METHODS = ()
996
+ SUBMODELINTERFACES = ()
997
+ SUBMODELS = ()
998
+
999
+
1000
+ tester = Tester()
1001
+ cythonizer = Cythonizer()