Maximum Release based on Time of Year and Pool Elevation

This post was developed to demonstrate the use of IF statements to set a maximum release based on time of year and pool elevation.  I use a simple one reservoir model to demonstrate this.

I have one outlet at the reservoir with a capacity of 3,000 cfs.  I have 500 cfs of inflow coming into the main stem, into the upstream tributary, and into the downstream tributary.  I use null routing for simplicity.  This gives a constant of 1,000 cfs coming into the reservoir.  

The release requirements are as follows:

From January to June, release a maximum of 1,000 cfs if the pool is >= 82 feet and release a maximum of 700 cfs if the pool is < 82 feet.  From July to December, release a maximum of 1,000 cfs if the pool is >= 83 feet and release a maximum of 600 cfs if the pool is < 83 feet.  I repeat these IF blocks in the Conservation pool.    

Note that you can also set a rule to release inflow by making the rule a function of a model variable and selecting the inflow into the reservoir as the model variable.       

The figure below shows the development of the IF statement to define the time period from 01Jan to 30Jun.

The figure below shows the development of the IF statement for the pool being greater than or equal to 82 feet.  

The figure below shows the development of the 1000 cfs maximum rule.  

The figure below shows the results of the simulation.  The pool starts at the top of conservation.  With 1,000 cfs of inflow, the release is limited to 700 cfs from January through June when the pool is less than 82 feet.  This causes a rise in the pool elevation since inflow exceeds outflow.  Once the pool is at 82 feet, a release of 1,000 cfs is allowed.  Since this equals inflow, the pool is steady.  

On 01 July, the release is limited to 600 cfs when the pool is less than 83 feet.  It rises rapidly to 83 feet at which time, the maximum allowable release becomes 1,000 cfs.  Since this equals inflow, the pool once again is steady.  


  1. Hello again!

    How can I combine controlled and uncontrolled release from dam during a year separately?
    Between April 16th and October 15th I have to have natural discharge from dam (uncontrolled), but between October 16th and April 15th I can controll discharge (ie. close the gate and fill the dam) and of course, release if elevation is above flood control level.
    Problem is that controlled and uncontrolled outlet must not work at the same time. How can I do that?

    Thank you very much!

    With regards,
    Kresimir Pavlic

    1. You would have to model this as a controlled outlet. ResSim simply uses the rating (pool elevation versus outflow) for an uncontrolled outlet and does not allow an uncontrolled outlet to be turned off. If I understand your situation correctly, I would define the physical capacity of the outlet as detailed as possible. From April 16th to October 15th, you could simply set a minimum release from that outlet above the physical capacity of the outlet. ResSim will limit the release based on the physical capacity. Between October 16th and April 15th, you can then set a maximum release on that outlet. The maximum release can be zero if you plan to completely shut the gate. You can set different minimums and maximums for the conservation and flood pools if you need to.

    2. Thank You for Your reply. I will try this aproach.
      My task consist of two parts:
      First is to model runoff of natural state of several karstic fields that flood several times during a year.
      Second part is to model runoff, but assuming that in one karst field is built barrier, so that runoff can be controlled for downstream purpose. Barrier must be completely opened from April 16th to October 15th, but can be controlled afterwards.

  2. Is it possible to activate a suite of rules in an IF Block by referring to a specified date, instead of just looking at a value for a given timestep? For example, I have a set of scheduled releases from a reservoir for the month of March, but they are contingent upon the reservoir elevation on March 1. If the reservoir is too low on this date, the flows throughout the month will be ignored. I am just not sure how to apply this.


    1. Yes, you can do that. For the IF statement, Value 1 will be Current Time Step and Value 2 will be Seasonal. The statement will be

      IF Current Time Step >= 01Mar


      IF Current Time Step <= 31Mar

      I believe that should work. When I have time, I will develop a post on this topic.

    2. I just noticed in your comment that the release is ignored for the entire month if the 01March elevation is below a certain level. To do this, you want to develop a state variable that looks at the "state" on 01March. If the release is to be made, you can set the state variable to "1" and if not set the state variable to "2". You can then use the value of the state variable in the IF statement. This is a little more involved. It is a good idea for a post. I will develop that once I have time.

    3. Sounds great; thanks for the reply!


Post a Comment

Table Rock Dam

Table Rock Dam