View Full Version : Modeling of Complex Grouped Reservoir Control Logic

October 2, 2015, 10:59 AM
Hello All,

I'm hoping someone may have some insight into a problem I've been wrestling with for a while now. In attempting to calibrate a model, I've run into a rather complex operational control for a group of storage reservoirs that all service a single, large, pressure zone. In essence, the control methodology works like so:

At regular intervals, the system calculates the average level of the three storage reservoirs.
If a storage reservoir is currently above the average level an altitude valve at the reservoir is automatically adjusted to close slightly (dependent on the % difference), allowing less water to enter the reservoir.
If a storage reservoir is currently below the average level, the altitude valve at the reservoir is automatically adjusted to open slightly (again, dependent on the % difference), allowing more water to enter the reservoir.
This comparison is conducted every few minutes. If at any time one altitude valve is opening, another should be closing.

Would anyone have any thoughts about representing this system in a model? If it is even possible to be done without introducing dummy reservoirs, I imagine it is through the rule based controls, but the logic for getting the level average is escaping me. Any assistance is greatly appreciated.

Thank you!

Patrick Moore
October 6, 2015, 02:36 PM

This is an interesting problem you pose, that does not appear on first blush look like something that could be done with the current software functionality that I am aware of.

Here are a few clarifying questions though:

1) What software package are you modeling this in?

2) Are the tanks at the same location or are they separated by distance? If the tanks are at the same location, simply using an equivalent tank would probably make the most sense and you would not need to worry about the controls, but I suspect these tanks are separated by distance as this would lead to a more difficult control structure.

3) Are the Altitude valves one way or two way valves? In other words does the valve prevent reverse flow and have a bypass line to let water out (1 way valve) or does it provide equal resistance to inflow and outflow (2 way valve). This would potentially impact the recommendation as it is important to know exactly how each valve works when creating the controls.

4) Is the average tank value recorded in SCADA? (likely)

5) Out of curiosity, do the tank levels for these tanks in this configuration get much variation during a given day? It would seem they would tend to somewhat tend to not vary too much in this configuration which might cause potential water quality concerns.

But not knowing all of the specifics, it is difficult to provide recommendations, but the difficulties we foresee (and you are probably aware of) are as follows:

1) All this functionality would have to be made to work within EPANET
2) The difficulty is that most of our software packages such as InfoWater, H2OMap Water, and H2ONet (NOTE: See edit below) do not have a feature that currently would calculate an average tank level that could be used in a control statement. Secondarily you would need to calculate the "difference" between the tank level and the average for each tank as well which is another parameter that model software typically does not use. Without these values in the model you cannot write a control statement
2) Assuming you can write a control statement somehow, what valve type would you use and how would you make adjustments to it to get the behavior you are trying to replicate. Assuming you might use a TCV using a minor loss coefficient vs. flow curve or a float valve would be the best option. However the user would still have to specifically adjust the settings with controls based on the "difference" in levels. Will this valve type be capable of replicating the actual system behavior? It would appear to be potentially challenging to do this and replicate the behavior although it looks potentially possible.
3) The third issue is how exactly would you set up control statements for the valve even if you could get controls. The user would have to set up control statements to adjust the setting based on different values of the "difference". That is potentially doable, but not always straightforward or simple if using simple controls. You might have to move to a modified logical control structure.

So to summarize, there does not appear to be any current model functionality based on the EPANET engine (NOTE: See edit below) we use that appears to make itself amenable to be used to create the control structure you are trying to replicate. If you wish to discuss this further please contact us at support@Innovyze.com and we can put you in touch with the people who make the decisions of which feature requests can be implemented and you can make a feature request to add the requested functionality. It's not guaranteed that it could be done, but at least you can request it be added. The development team reviews feature requests periodically and adds features based on availability, feasibility, and the number of users requesting the feature. But on first glance it would appear without adjustments to the software code this type of operational control is not really possible to replicate using existing control features that EPANET recognizes. If the software could potentially adjust the controls externally and still use EPANET functionality there is a chance this could be modeled, but adding features not supported by EPANET is difficult.

Good luck in finding a solution.

I look forward to seeing if anyone else chimes in on this discussion with other ideas.

NOTE: Edit: I was informed that it is likely that you could model this control structure using our InfoWorks WS software as it has additional functionality that apparently could deal with this type of control.

Patrick Moore
October 12, 2015, 12:59 PM

Here is a summary of What one of our Support team more familiar with InfoWorks CS sent to me as what you could do in that software package:
The key in this is that InfoWorks CS can calculate and use in a control statement the average level of multiple reservoirs. See below. (Thanks to Ann Pugh for her input on this) This is one of the key components that was discussed previously.

In the example below there are two independent reservoirs (tank – these do not have a supply in but are balancing storages only) – there is a valve (highlighted) that adjusts its setting to balance the volume in the two reservoirs.

System Layout (click for larger image)

The script controlling the valve is
(click for larger image)
The VAR (variables) can be anything – I could average all the storages in the entire network if I wanted …

Results are
(click for larger image)

You can see the valve (blue line) opening and closing to try and match the volumes in the two storages.


Ann Pugh

If you have any further questions regarding this discussion please feel free to respond here or to contact us at support@innovyze.com