dam_v003¶
Version 3 of HydPy-Dam
Application dam_v003
is quite similar to model dam_v002
. Both
possess the same flood retentions functionalities. Also, both models
try to meet a remote water demand. The only difference is that model
dam_v002
assumes the demand to occur in the channel downstream
(usually to increase low discharge values), whereas model dam_v003
is supposed to supply water to different locations (e.g. to a drinking
water treatment plant). Hence dam_v002
releases its output only via
one path and dam_v003
splits its output into two separate paths.
Integration tests¶
Note
When new to HydPy, consider reading section How to understand integration tests? first.
To test the functionalities of
dam_v002
, four integration examples ofdam_v001
are recalculated. We again make use of these examples and focus our explanations on the differences only. So please follow the links for further information.While the time-related set up is identical, the spatial set up needs to be changed. Instead of one output node, there a now two nodes, called release (into the stream bed) and supply (e.g. for a drinking water supply treatment plant). The node demand defines the amount of water required by the plant:
>>> from hydpy import pub, Node, Element >>> pub.timegrids = "01.01.2000", "21.01.2000", "1d" >>> inflow = Node("inflow", variable="Q") >>> release = Node("release", variable="Q") >>> supply = Node("supply", variable="S") >>> demand = Node("demand", variable="S") >>> dam = Element("dam", ... inlets=inflow, ... outlets=(release, supply), ... receivers=demand) >>> from hydpy.models.dam_v003 import * >>> parameterstep("1d") >>> dam.model = modelMethod
connect()
recognizes the different purposes of both output nodes through the given variable keyword. Eachdam_v003
model must be connecte to exactly two nodes. The Q-node (discharge) handles the release into the stream bed downstream and the S-node (supply) passes the water flow to another (arbitrary) model.As explained for model
dam_v002
, the following initial conditions, external time series data, and parameter values are set in favour of making the simulation results as comparable as possible:>>> from hydpy import IntegrationTest >>> IntegrationTest.plotting_options.activated = ( ... fluxes.inflow, fluxes.outflow) >>> test = IntegrationTest( ... dam, ... inits=((states.watervolume, 0.0), ... (logs.loggedrequiredremoterelease, 0.005))) >>> test.dateformat = "%d.%m." >>> inflow.sequences.sim.series = 1.0 >>> demand.sequences.sim.series = [ ... 0.008588, 0.010053, 0.013858, 0.027322, 0.064075, ... 0.235523, 0.470414, 0.735001, 0.891263, 0.696325, ... 0.349797, 0.105231, 0.111928, 0.240436, 0.229369, ... 0.058622, 0.016958, 0.008447, 0.004155, 0.0] >>> watervolume2waterlevel( ... weights_input=1.0, weights_output=0.25, ... intercepts_hidden=0.0, intercepts_output=0.0, ... activation=0) >>> waterlevel2flooddischarge(ann( ... weights_input=0.0, weights_output=0.0, ... intercepts_hidden=0.0, intercepts_output=0.0)) >>> catchmentarea(86.4) >>> neardischargeminimumthreshold(0.2) >>> neardischargeminimumtolerance(0.2) >>> waterlevelminimumthreshold(0.0) >>> waterlevelminimumtolerance(0.0) >>> waterlevelminimumremotethreshold(0.0) >>> waterlevelminimumremotetolerance(0.0) >>> restricttargetedrelease(True) >>> parameters.update()Despite trying to make this example comparable with example 7 of model
dam_v001
(and the corresponding recalculation of modeldam_v002
), there are relevant differences in the results. These are due to the separate output paths of modeldam_v003
. Modelsdam_v001
anddam_v002
use the same water to both meet the near and the remote demand. This is not possible for modeldam_v003
, which is why it has to release a larger total amount of water:Click here to see the graph>>> test("dam_v003_ex7") | date | inflow | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | actualremoterelease | flooddischarge | outflow | watervolume | demand | inflow | release | supply | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 01.01. | 1.0 | 0.005 | 0.2 | 0.2 | 0.191667 | 0.004792 | 0.0 | 0.191667 | 0.069426 | 0.008588 | 1.0 | 0.191667 | 0.004792 | | 02.01. | 1.0 | 0.008588 | 0.2 | 0.2 | 0.2 | 0.008588 | 0.0 | 0.2 | 0.137804 | 0.010053 | 1.0 | 0.2 | 0.008588 | | 03.01. | 1.0 | 0.010053 | 0.2 | 0.2 | 0.2 | 0.010053 | 0.0 | 0.2 | 0.206055 | 0.013858 | 1.0 | 0.2 | 0.010053 | | 04.01. | 1.0 | 0.013858 | 0.2 | 0.2 | 0.2 | 0.013858 | 0.0 | 0.2 | 0.273978 | 0.027322 | 1.0 | 0.2 | 0.013858 | | 05.01. | 1.0 | 0.027322 | 0.2 | 0.2 | 0.2 | 0.027322 | 0.0 | 0.2 | 0.340737 | 0.064075 | 1.0 | 0.2 | 0.027322 | | 06.01. | 1.0 | 0.064075 | 0.2 | 0.2 | 0.2 | 0.064075 | 0.0 | 0.2 | 0.404321 | 0.235523 | 1.0 | 0.2 | 0.064075 | | 07.01. | 1.0 | 0.235523 | 0.2 | 0.2 | 0.2 | 0.235523 | 0.0 | 0.2 | 0.453092 | 0.470414 | 1.0 | 0.2 | 0.235523 | | 08.01. | 1.0 | 0.470414 | 0.2 | 0.2 | 0.2 | 0.470414 | 0.0 | 0.2 | 0.481568 | 0.735001 | 1.0 | 0.2 | 0.470414 | | 09.01. | 1.0 | 0.735001 | 0.2 | 0.2 | 0.2 | 0.735001 | 0.0 | 0.2 | 0.487184 | 0.891263 | 1.0 | 0.2 | 0.735001 | | 10.01. | 1.0 | 0.891263 | 0.2 | 0.2 | 0.2 | 0.891263 | 0.0 | 0.2 | 0.479299 | 0.696325 | 1.0 | 0.2 | 0.891263 | | 11.01. | 1.0 | 0.696325 | 0.2 | 0.2 | 0.2 | 0.696325 | 0.0 | 0.2 | 0.488257 | 0.349797 | 1.0 | 0.2 | 0.696325 | | 12.01. | 1.0 | 0.349797 | 0.2 | 0.2 | 0.2 | 0.349797 | 0.0 | 0.2 | 0.527154 | 0.105231 | 1.0 | 0.2 | 0.349797 | | 13.01. | 1.0 | 0.105231 | 0.2 | 0.2 | 0.2 | 0.105231 | 0.0 | 0.2 | 0.587182 | 0.111928 | 1.0 | 0.2 | 0.105231 | | 14.01. | 1.0 | 0.111928 | 0.2 | 0.2 | 0.2 | 0.111928 | 0.0 | 0.2 | 0.646632 | 0.240436 | 1.0 | 0.2 | 0.111928 | | 15.01. | 1.0 | 0.240436 | 0.2 | 0.2 | 0.2 | 0.240436 | 0.0 | 0.2 | 0.694978 | 0.229369 | 1.0 | 0.2 | 0.240436 | | 16.01. | 1.0 | 0.229369 | 0.2 | 0.2 | 0.2 | 0.229369 | 0.0 | 0.2 | 0.744281 | 0.058622 | 1.0 | 0.2 | 0.229369 | | 17.01. | 1.0 | 0.058622 | 0.2 | 0.2 | 0.2 | 0.058622 | 0.0 | 0.2 | 0.808336 | 0.016958 | 1.0 | 0.2 | 0.058622 | | 18.01. | 1.0 | 0.016958 | 0.2 | 0.2 | 0.2 | 0.016958 | 0.0 | 0.2 | 0.87599 | 0.008447 | 1.0 | 0.2 | 0.016958 | | 19.01. | 1.0 | 0.008447 | 0.2 | 0.2 | 0.2 | 0.008447 | 0.0 | 0.2 | 0.944381 | 0.004155 | 1.0 | 0.2 | 0.008447 | | 20.01. | 1.0 | 0.004155 | 0.2 | 0.2 | 0.2 | 0.004155 | 0.0 | 0.2 | 1.013142 | 0.0 | 1.0 | 0.2 | 0.004155 |The next recalculation shows that the restriction on releasing water during low inflow conditions concerns the release into the stream bed only:
Click here to see the graph>>> inflow.sequences.sim.series[10:] = 0.1 >>> demand.sequences.sim.series = [ ... 0.008746, 0.010632, 0.015099, 0.03006, 0.068641, ... 0.242578, 0.474285, 0.784512, 0.95036, 0.35, ... 0.034564, 0.299482, 0.585979, 0.557422, 0.229369, ... 0.142578, 0.068641, 0.029844, 0.012348, 0.0] >>> neardischargeminimumtolerance(0.0) >>> test("dam_v003_ex8_1") | date | inflow | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | actualremoterelease | flooddischarge | outflow | watervolume | demand | inflow | release | supply | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 01.01. | 1.0 | 0.005 | 0.2 | 0.2 | 0.191667 | 0.004792 | 0.0 | 0.191667 | 0.069426 | 0.008746 | 1.0 | 0.191667 | 0.004792 | | 02.01. | 1.0 | 0.008746 | 0.2 | 0.2 | 0.2 | 0.008746 | 0.0 | 0.2 | 0.13779 | 0.010632 | 1.0 | 0.2 | 0.008746 | | 03.01. | 1.0 | 0.010632 | 0.2 | 0.2 | 0.2 | 0.010632 | 0.0 | 0.2 | 0.205992 | 0.015099 | 1.0 | 0.2 | 0.010632 | | 04.01. | 1.0 | 0.015099 | 0.2 | 0.2 | 0.2 | 0.015099 | 0.0 | 0.2 | 0.273807 | 0.03006 | 1.0 | 0.2 | 0.015099 | | 05.01. | 1.0 | 0.03006 | 0.2 | 0.2 | 0.2 | 0.03006 | 0.0 | 0.2 | 0.34033 | 0.068641 | 1.0 | 0.2 | 0.03006 | | 06.01. | 1.0 | 0.068641 | 0.2 | 0.2 | 0.2 | 0.068641 | 0.0 | 0.2 | 0.403519 | 0.242578 | 1.0 | 0.2 | 0.068641 | | 07.01. | 1.0 | 0.242578 | 0.2 | 0.2 | 0.2 | 0.242578 | 0.0 | 0.2 | 0.451681 | 0.474285 | 1.0 | 0.2 | 0.242578 | | 08.01. | 1.0 | 0.474285 | 0.2 | 0.2 | 0.2 | 0.474285 | 0.0 | 0.2 | 0.479822 | 0.784512 | 1.0 | 0.2 | 0.474285 | | 09.01. | 1.0 | 0.784512 | 0.2 | 0.2 | 0.2 | 0.784512 | 0.0 | 0.2 | 0.481161 | 0.95036 | 1.0 | 0.2 | 0.784512 | | 10.01. | 1.0 | 0.95036 | 0.2 | 0.2 | 0.2 | 0.95036 | 0.0 | 0.2 | 0.46817 | 0.35 | 1.0 | 0.2 | 0.95036 | | 11.01. | 0.1 | 0.35 | 0.2 | 0.1 | 0.1 | 0.35 | 0.0 | 0.1 | 0.43793 | 0.034564 | 0.1 | 0.1 | 0.35 | | 12.01. | 0.1 | 0.034564 | 0.2 | 0.1 | 0.1 | 0.034564 | 0.0 | 0.1 | 0.434943 | 0.299482 | 0.1 | 0.1 | 0.034564 | | 13.01. | 0.1 | 0.299482 | 0.2 | 0.1 | 0.1 | 0.299482 | 0.0 | 0.1 | 0.409068 | 0.585979 | 0.1 | 0.1 | 0.299482 | | 14.01. | 0.1 | 0.585979 | 0.2 | 0.1 | 0.1 | 0.585979 | 0.0 | 0.1 | 0.358439 | 0.557422 | 0.1 | 0.1 | 0.585979 | | 15.01. | 0.1 | 0.557422 | 0.2 | 0.1 | 0.1 | 0.557422 | 0.0 | 0.1 | 0.310278 | 0.229369 | 0.1 | 0.1 | 0.557422 | | 16.01. | 0.1 | 0.229369 | 0.2 | 0.1 | 0.1 | 0.229369 | 0.0 | 0.1 | 0.290461 | 0.142578 | 0.1 | 0.1 | 0.229369 | | 17.01. | 0.1 | 0.142578 | 0.2 | 0.1 | 0.1 | 0.142578 | 0.0 | 0.1 | 0.278142 | 0.068641 | 0.1 | 0.1 | 0.142578 | | 18.01. | 0.1 | 0.068641 | 0.2 | 0.1 | 0.1 | 0.068641 | 0.0 | 0.1 | 0.272211 | 0.029844 | 0.1 | 0.1 | 0.068641 | | 19.01. | 0.1 | 0.029844 | 0.2 | 0.1 | 0.1 | 0.029844 | 0.0 | 0.1 | 0.269633 | 0.012348 | 0.1 | 0.1 | 0.029844 | | 20.01. | 0.1 | 0.012348 | 0.2 | 0.1 | 0.1 | 0.012348 | 0.0 | 0.1 | 0.268566 | 0.0 | 0.1 | 0.1 | 0.012348 |This example makes use of two control parameters which are unknown to models
dam_v001
anddam_v002
.WaterLevelMinimumRemoteThreshold
andWaterLevelMinimumRemoteTolerance
are introduced to allow for a distinct control of both dam output paths for situations when the available storage becomes limited. Here, parameterWaterLevelMinimumRemoteThreshold
is set to a higher value than parameterWaterLevelMinimumThreshold
, meaning the release into the stream bed has a higher priority than the supply to the drinking water treatment plant:Click here to see the graph>>> inflow.sequences.sim.series = numpy.linspace(0.2, 0.0, 20) >>> waterlevelminimumtolerance(0.01) >>> waterlevelminimumthreshold(0.005) >>> waterlevelminimumremotetolerance(0.01) >>> waterlevelminimumremotethreshold(0.01) >>> demand.sequences.sim.series = [ ... 0.01232, 0.029323, 0.064084, 0.120198, 0.247367, ... 0.45567, 0.608464, 0.537314, 0.629775, 0.744091, ... 0.82219, 0.841916, 0.701812, 0.533258, 0.351863, ... 0.185207, 0.107697, 0.055458, 0.025948, 0.0] >>> test("dam_v003_ex10") | date | inflow | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | actualremoterelease | flooddischarge | outflow | watervolume | demand | inflow | release | supply | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 01.01. | 0.2 | 0.005 | 0.2 | 0.2 | 0.038491 | 0.00012 | 0.0 | 0.038491 | 0.013944 | 0.01232 | 0.2 | 0.038491 | 0.00012 | | 02.01. | 0.189474 | 0.01232 | 0.2 | 0.189474 | 0.086988 | 0.000993 | 0.0 | 0.086988 | 0.022713 | 0.029323 | 0.189474 | 0.086988 | 0.000993 | | 03.01. | 0.178947 | 0.029323 | 0.2 | 0.178947 | 0.116103 | 0.004642 | 0.0 | 0.116103 | 0.027742 | 0.064084 | 0.178947 | 0.116103 | 0.004642 | | 04.01. | 0.168421 | 0.064084 | 0.2 | 0.168421 | 0.125159 | 0.014625 | 0.0 | 0.125159 | 0.030216 | 0.120198 | 0.168421 | 0.125159 | 0.014625 | | 05.01. | 0.157895 | 0.120198 | 0.2 | 0.157895 | 0.121681 | 0.030361 | 0.0 | 0.121681 | 0.030722 | 0.247367 | 0.157895 | 0.121681 | 0.030361 | | 06.01. | 0.147368 | 0.247367 | 0.2 | 0.147368 | 0.109923 | 0.056857 | 0.0 | 0.109923 | 0.029044 | 0.45567 | 0.147368 | 0.109923 | 0.056857 | | 07.01. | 0.136842 | 0.45567 | 0.2 | 0.136842 | 0.094858 | 0.084715 | 0.0 | 0.094858 | 0.025352 | 0.608464 | 0.136842 | 0.094858 | 0.084715 | | 08.01. | 0.126316 | 0.608464 | 0.2 | 0.126316 | 0.076914 | 0.082553 | 0.0 | 0.076914 | 0.022488 | 0.537314 | 0.126316 | 0.076914 | 0.082553 | | 09.01. | 0.115789 | 0.537314 | 0.2 | 0.115789 | 0.064167 | 0.059779 | 0.0 | 0.064167 | 0.021783 | 0.629775 | 0.115789 | 0.064167 | 0.059779 | | 10.01. | 0.105263 | 0.629775 | 0.2 | 0.105263 | 0.055154 | 0.063011 | 0.0 | 0.055154 | 0.020669 | 0.744091 | 0.105263 | 0.055154 | 0.063011 | | 11.01. | 0.094737 | 0.744091 | 0.2 | 0.094737 | 0.045986 | 0.064865 | 0.0 | 0.045986 | 0.019277 | 0.82219 | 0.094737 | 0.045986 | 0.064865 | | 12.01. | 0.084211 | 0.82219 | 0.2 | 0.084211 | 0.037699 | 0.06228 | 0.0 | 0.037699 | 0.017914 | 0.841916 | 0.084211 | 0.037699 | 0.06228 | | 13.01. | 0.073684 | 0.841916 | 0.2 | 0.073684 | 0.030632 | 0.056377 | 0.0 | 0.030632 | 0.016763 | 0.701812 | 0.073684 | 0.030632 | 0.056377 | | 14.01. | 0.063158 | 0.701812 | 0.2 | 0.063158 | 0.025166 | 0.043828 | 0.0 | 0.025166 | 0.016259 | 0.533258 | 0.063158 | 0.025166 | 0.043828 | | 15.01. | 0.052632 | 0.533258 | 0.2 | 0.052632 | 0.020693 | 0.032602 | 0.0 | 0.020693 | 0.016201 | 0.351863 | 0.052632 | 0.020693 | 0.032602 | | 16.01. | 0.042105 | 0.351863 | 0.2 | 0.042105 | 0.016736 | 0.021882 | 0.0 | 0.016736 | 0.016502 | 0.185207 | 0.042105 | 0.016736 | 0.021882 | | 17.01. | 0.031579 | 0.185207 | 0.2 | 0.031579 | 0.012934 | 0.012076 | 0.0 | 0.012934 | 0.01707 | 0.107697 | 0.031579 | 0.012934 | 0.012076 | | 18.01. | 0.021053 | 0.107697 | 0.2 | 0.021053 | 0.008901 | 0.007386 | 0.0 | 0.008901 | 0.017482 | 0.055458 | 0.021053 | 0.008901 | 0.007386 | | 19.01. | 0.010526 | 0.055458 | 0.2 | 0.010526 | 0.004535 | 0.00392 | 0.0 | 0.004535 | 0.017661 | 0.025948 | 0.010526 | 0.004535 | 0.00392 | | 20.01. | 0.0 | 0.025948 | 0.2 | 0.0 | 0.0 | 0.001835 | 0.0 | 0.0 | 0.017502 | 0.0 | 0.0 | 0.0 | 0.001835 |The final example deals with high flow conditions. It demonstrates that model
dam_v003
calculates the same outflow values as modeldam_v001
and modeldam_v002
if there is neither a relevant near nor a relevant remote demand:Click here to see the graph>>> neardischargeminimumthreshold(0.0) >>> neardischargeminimumtolerance(0.0) >>> waterlevelminimumthreshold(0.0) >>> waterlevelminimumtolerance(0.0) >>> waterlevelminimumremotethreshold(0.0) >>> waterlevelminimumremotetolerance(0.0) >>> waterlevel2flooddischarge(ann( ... weights_input=1.0, weights_output=2.5, ... intercepts_hidden=0.0, intercepts_output=0.0, ... activation=0)) >>> neardischargeminimumthreshold(0.0) >>> inflow.sequences.sim.series = [ 0., 1., 5., 9., 8., 5., 3., 2., 1., 0., ... 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.] >>> demand.sequences.sim.series = 0.0 >>> test.inits.loggedrequiredremoterelease = 0.0 >>> test("dam_v003_ex13") | date | inflow | requiredremoterelease | requiredrelease | targetedrelease | actualrelease | actualremoterelease | flooddischarge | outflow | watervolume | demand | inflow | release | supply | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 01.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | | 02.01. | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.026514 | 0.026514 | 0.084109 | 0.0 | 1.0 | 0.026514 | 0.0 | | 03.01. | 5.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.183744 | 0.183744 | 0.500234 | 0.0 | 5.0 | 0.183744 | 0.0 | | 04.01. | 9.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.542983 | 0.542983 | 1.23092 | 0.0 | 9.0 | 0.542983 | 0.0 | | 05.01. | 8.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.961039 | 0.961039 | 1.839086 | 0.0 | 8.0 | 0.961039 | 0.0 | | 06.01. | 5.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.251523 | 1.251523 | 2.162955 | 0.0 | 5.0 | 1.251523 | 0.0 | | 07.01. | 3.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.395546 | 1.395546 | 2.301579 | 0.0 | 3.0 | 1.395546 | 0.0 | | 08.01. | 2.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.453375 | 1.453375 | 2.348808 | 0.0 | 2.0 | 1.453375 | 0.0 | | 09.01. | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.455596 | 1.455596 | 2.309444 | 0.0 | 1.0 | 1.455596 | 0.0 | | 10.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.405132 | 1.405132 | 2.188041 | 0.0 | 0.0 | 1.405132 | 0.0 | | 11.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.331267 | 1.331267 | 2.073019 | 0.0 | 0.0 | 1.331267 | 0.0 | | 12.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.261285 | 1.261285 | 1.964044 | 0.0 | 0.0 | 1.261285 | 0.0 | | 13.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.194981 | 1.194981 | 1.860798 | 0.0 | 0.0 | 1.194981 | 0.0 | | 14.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.132163 | 1.132163 | 1.762979 | 0.0 | 0.0 | 1.132163 | 0.0 | | 15.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.072647 | 1.072647 | 1.670302 | 0.0 | 0.0 | 1.072647 | 0.0 | | 16.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.01626 | 1.01626 | 1.582498 | 0.0 | 0.0 | 1.01626 | 0.0 | | 17.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.962837 | 0.962837 | 1.499308 | 0.0 | 0.0 | 0.962837 | 0.0 | | 18.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.912222 | 0.912222 | 1.420492 | 0.0 | 0.0 | 0.912222 | 0.0 | | 19.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.864268 | 0.864268 | 1.34582 | 0.0 | 0.0 | 0.864268 | 0.0 | | 20.01. | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.818835 | 0.818835 | 1.275072 | 0.0 | 0.0 | 0.818835 | 0.0 |
-
class
hydpy.models.dam_v003.
Model
[source]¶ Bases:
hydpy.core.modeltools.ELSModel
Version 3 of HydPy-Dam.
- The following “receiver update methods” are called in the given sequence before performing a simulation step:
Pic_LoggedRequiredRemoteRelease_V2
Update the receiver link sequence.
- The following “inlet update methods” are called in the given sequence at the beginning of each simulation step:
Pic_Inflow_V1
Update the inlet link sequence.Calc_RequiredRemoteRelease_V2
Get the required remote release of the last simulation step.Calc_RequiredRelease_V2
Calculate the water release (immediately downstream) required for reducing drought events.Calc_TargetedRelease_V1
Calculate the targeted water release for reducing drought events, taking into account both the required water release and the actual inflow into the dam.
- The following methods define the relevant components of a system of ODE equations (e.g. direct runoff):
Pic_Inflow_V1
Update the inlet link sequence.Calc_WaterLevel_V1
Determine the water level based on an artificial neural network describing the relationship between water level and water stage.Calc_ActualRelease_V1
Calculate the actual water release that can be supplied by the dam considering the targeted release and the given water level.Calc_ActualRemoteRelease_V1
Calculate the actual remote water release that can be supplied by the dam considering the required remote release and the given water level.Calc_FloodDischarge_V1
Calculate the discharge during and after a flood event based on anSeasonalANN
describing the relationship(s) between discharge and water stage.Calc_Outflow_V1
Calculate the total outflow of the dam.
- The following methods define the complete equations of an ODE system (e.g. change in storage of fast water due to effective precipitation and direct runoff):
Update_WaterVolume_V2
Update the actual water volume.
- The following “outlet update methods” are called in the given sequence at the end of each simulation step:
Pass_Outflow_V1
Update the outlet link sequenceQ
.Pass_ActualRemoteRelease_V1
Update the outlet link sequenceS
.
-
numconsts
: hydpy.core.modeltools.NumConstsELS¶
-
numvars
: hydpy.core.modeltools.NumVarsELS¶
-
class
hydpy.models.dam_v003.
AideSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.ModelSequences
[AideSequence
,hydpy.core.variabletools.FastAccess
]Aide sequences of model dam_v003.
- The following classes are selected:
WaterLevel()
Water level [m].
-
class
hydpy.models.dam_v003.
ControlParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Control parameters of model dam_v003.
- The following classes are selected:
CatchmentArea()
Size of the catchment draining into the dam [km²].NearDischargeMinimumThreshold()
Discharge threshold of a cross section in the near of the dam that not be undercut by the actual discharge [m³/s].NearDischargeMinimumTolerance()
A tolerance value for the “near discharge minimum” [m³/s].RestrictTargetedRelease()
A flag indicating whether low flow variability has to be preserved or not [-].WaterLevelMinimumThreshold()
The minimum operating water level of the dam [m].WaterLevelMinimumTolerance()
A tolarance value for the minimum operating water level [m].WaterLevelMinimumRemoteThreshold()
The minimum operating water level of the dam regarding remote water supply [m].WaterLevelMinimumRemoteTolerance()
A tolarance value for the minimum operating water level regarding remote water supply [m].WaterVolume2WaterLevel()
Artificial neural network describing the relationship between water level and water volume [-].WaterLevel2FloodDischarge()
Artificial neural network describing the relationship between flood discharge and water volume [-].
-
class
hydpy.models.dam_v003.
DerivedParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Derived parameters of model dam_v003.
- The following classes are selected:
TOY()
References thetimeofyear
index array provided by the instance of classIndexer
available in modulepub
. [-].Seconds()
Length of the actual simulation step size in seconds [s].NearDischargeMinimumSmoothPar1()
Smoothing parameter to be derived fromNearDischargeMinimumThreshold
for smoothing kernelsmooth_logistic1()
[m³/s].WaterLevelMinimumSmoothPar()
Smoothing parameter to be derived fromWaterLevelMinimumTolerance
for smoothing kernelsmooth_logistic1()
[m].WaterLevelMinimumRemoteSmoothPar()
Smoothing parameter to be derived fromWaterLevelMinimumRemoteTolerance
[m].
-
class
hydpy.models.dam_v003.
FluxSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.OutputSequences
[FluxSequence
]Flux sequences of model dam_v003.
- The following classes are selected:
Inflow()
Total inflow [m³/s].RequiredRemoteRelease()
Water release considered appropriate to reduce drought events at cross sections far downstream to the desired degree [m³/s].RequiredRelease()
Required water release for reducing drought events downstream [m³/s].TargetedRelease()
The targeted water release for reducing drought events downstream after taking both the required release and additional low flow regulations into account [m³/s].ActualRelease()
Actual water release thought for reducing drought events downstream [m³/s].ActualRemoteRelease()
Actual water release thought for arbitrary “remote” purposes [m³/s].FloodDischarge()
Water release associated with flood events [m³/s].Outflow()
Total outflow [m³/s].
-
class
hydpy.models.dam_v003.
InletSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.LinkSequences
[InletSequence
]Inlet sequences of model dam_v003.
- The following classes are selected:
Q()
Discharge [m³/s].
-
class
hydpy.models.dam_v003.
LogSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.ModelSequences
[LogSequence
,hydpy.core.variabletools.FastAccess
]Log sequences of model dam_v003.
- The following classes are selected:
LoggedRequiredRemoteRelease()
Logged required discharge values computed by another model [m3/s].
-
class
hydpy.models.dam_v003.
OutletSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.LinkSequences
[OutletSequence
]Outlet sequences of model dam_v003.
-
class
hydpy.models.dam_v003.
ReceiverSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.LinkSequences
[ReceiverSequence
]Receiver sequences of model dam_v003.
- The following classes are selected:
S()
Water supply [m³/s].
-
class
hydpy.models.dam_v003.
SolverParameters
(master: hydpy.core.parametertools.Parameters, cls_fastaccess: Optional[Type[hydpy.core.parametertools.FastAccessParameter]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.variabletools.SubVariables
[hydpy.core.parametertools.Parameters
,Parameter
,hydpy.core.parametertools.FastAccessParameter
]Solver parameters of model dam_v003.
- The following classes are selected:
AbsErrorMax()
Absolute numerical error tolerance [m3/s].RelErrorMax()
Relative numerical error tolerance [1/T].RelDTMin()
Smallest relative integration time step size allowed [-].RelDTMax()
Largest relative integration time step size allowed [-].
-
class
hydpy.models.dam_v003.
StateSequences
(master: hydpy.core.sequencetools.Sequences, cls_fastaccess: Optional[Type[FastAccessType]] = None, cymodel: Optional[hydpy.core.typingtools.CyModelProtocol] = None)¶ Bases:
hydpy.core.sequencetools.OutputSequences
[StateSequence
]State sequences of model dam_v003.
- The following classes are selected:
WaterVolume()
Water volume [million m³].