Troubleshooting Controls in SewerCAD and SewerGEMS

Product(s): SewerCAD, SewerGEMS
Version(s): V8i, CONNECT Edition
Area:  Modeling


Controls do not appear to be working as expected. For example pumps do not appear to be following their controls.

Note that controls apply only to the GVF-Convex Solver in SewerCAD and SewerGEMS. If using the Implicit or the Explicit (EPA-SWMM) solvers, the conditions need to be specified in the element properties itself. Controls do not apply to the GVF-Rational Solver.


In SewerCAD and SewerGEMS there are operational controls which are defined in pump properties with On / Off elevations and logical controls which can be accessed under Components > Controls. The On / Off controls are operational controls which define whether a pump would switch On / Off based on values specified for immediate upstream elevations. Logical controls allow to setup more complex controls such as closing certain pipes based on certain conditions. There are SWMM controls too which are used with the Explicit SWMM Solver in SewerGEMS.

More details on this can be found here: Pump On/Off Elevations vs. Logical Controls vs SWMM Control sets

There are a few things that should be checked to ensure that the controls are set up properly:

1) Control Sets: Check to make sure that the controls in question are enabled in the Operational Alternative. First, with the scenario in question active, navigate to Analysis > Alternatives, then open the Operational alternative assigned to that scenario. Note the control set, click the ellipsis button (...), then make sure that the controls are present in that control set. If they are not, add them.

2) Simple controls calculation option for Steady State: If you are computing a steady state simulation, check the calculation option set assigned to your scenario and check if the "Use simple controls in steady state?" is set to True. If it is, ensure that the controls in question are marked as Simple control (as opposed to logical, which are only supported in Extended Period Simulations - EPS). There are also some types of controls that are not supported in steady state (you'll see  User Notification for these) in which case you can simply manually set the initial status of the action element based on the condition in that steady state.

3) Check for multiple, conflicting controls and properly set Priority: Make sure you're accounting for all controls currently set on the element in question. For example if the problem is with a pump, open the pump's properties and click the ellipsis button next to the "Controls" "Collection". This will display all the controls currently being used on that element. You may find that there are multiple controls and/or conditions that control the element in question. If this is expected, check the "Priority", noting that 5 is the highest priority and 1 is the lowest. Note that Priority only works with Logical controls, so ensure that all controls that could have conflicting actions are set as a logical controls, if you need to use Priority.

4) Check for endless-loop conditions: Make sure that your controls are not set up in such a way that a particular control's action does not immediately result in conditions that cause the opposite control to trigger. If the status of the action element doesn't appear to be correct based on the controls, check the "Intra-Trial Status Messages" tab in the Calculation Summary (available in SELECTSeries 5 and higher, build This will display status changes that occur during a trial. If you see certain elements switching status in a given time step, it's an indication that there is some instability causing the status to oscillate.

For example if you have a pump turn on and off based on pressure at a junction, it's possible that the act of turning on the pump may instantly trigger the pump to turn back off based on the pressure set points. In this case you will want to model the "dead range" by introducing a gap between the on and off pressure conditions. For example If P>90 Then Off / If P<81 Then On.

In another example, if you have a single control set to turn a pump on at some condition, with the "Else" statement used to turn it off, then the act of turning the pump on may cause the pump=on condition to no longer be true, and the Else statement would trigger the pump to immediately turn back off. In this case it is better to use two controls, one to turn the pump on and the other to turn it off, with some range between them.

This could also happen for example when using flow as a condition. In this case, the time step may balance on a condition that may appear to be at odds with the control. In this case, you will notice the pump changing status in the Intra-Trial Status Messages tab, when clicking on the time step in question.

Note that if "Ignore On and Off Elevations?" is set to "False" in the pump properties and you have logical controls specified, they may conflict. In such cases the On and Off elevations will be ignored automatically if conflicting with logical controls. Sometimes a pump which is initially "Off " may turn "On" if the "Ignore On and Off Elevations?" is set to "False". In such cases check the "Pump Status (Calculated)" ad set the "Ignore On and Off Elevations?" to "True" as well as "Use Controls During Steady State?" to "False" in the calculation options.

5) Simplify complex controls - if you're trying to model a complex control, consider splitting into its components pieces, with a "Dead range" introduced (rather than trying to use single controls with many "and" and "or" operators.) For time-based controls if you have multiple ranges during the simulation, be aware of the differences between "time from start" and "clock time" controls and consider using a pattern instead. See: Using "Clock Time" and "Time From Start" Controls

6) Use graphs to view the conditions and actions. For example, if the control is based on wet well hydraulic grade and pump status, select both the wet well and the pump, Right-click > Graph, then select hydraulic grade for the wet well and flow for the pump. From here, you can get a good visual of the condition and the action, to double-check if the action is occurring when the condition warrants.

7) HGL vs. Level: For wet well-based controls, check to make sure the correct values are used based on the wet well conditions. If "hydraulic grade" is selected, the values used should be hydraulic grades (sea level datum) whereas if "level" is used, the values are distances above the wet well bottom.

8) Use of equals-to: Check the operator on any controls that include wet wells. Controls that exclusively use an equals (=) sign can skip over the value entered in the control. For instance, if a pump is set to turn on when the wet well level is less than 5 feet and you enter the condition of the control as "IF Wet Well Level = 5 feet THEN..." the control will only be triggered if the wet well level is exactly 5.00 feet. If it is a little less or a little more, it will not. It is better to use the greater than or less than operator for wet well elevations and levels. This will assure that the condition is met.

9) Ensure all timesteps are displayed: Check to make sure that you are seeing all time steps in your graph. In the calculation options, set "Reporting Time Step" to "All", to ensure that intermediate timesteps are not being skipped over on graphs.

10) Make sure the model is balanced during the time steps when the control should be operating. In the Calculation Summary, you will see a red icon next to a trial if it is not balanced, plus a message in the tabs at the bottom and in the User Notification window. An unbalanced network indicates instability in the calculation which needs to be resolved before the results can be trusted. See more here: Troubleshooting the Network Unbalanced or Cannot solve network hydraulic equations user notification

11) Trace the flow/HGL: If you believe a wet well should be filling yet the model shows it draining (or vice versa) because of pump controls that appear to be operating correctly, try tracing the HGL using profiles. For example a wet well may still be filling when upstream pumps turn off, because of a high HGL from elsewhere in the system, such as another pump/wet well, or from an inflow (negative demands). Select a timestep when this occurs, and follow the flow arrows starting at the wet well in question, checking the HGL along the way. You can also use tracing tools in Network Navigator.

12) Make sure the correct elements are used for the conditions and actions. If there are duplicate labels for elements, this may lead to some confusion. Based the controls on the element ID, which is always unique or relabel elements to be unique. 

13) Controls for pumps might not be applied because the Pattern is overriding the controls.  Try setting the pumps to Is Variable Speed Pump? = False.

14) Check if conditions and actions are shared with other controls. See how you can determine if they are shared and ways to remedy it here: How to determine if a condition or action is being shared with other controls?

See Also

What is the difference between a Simple Control and a Logical Control?

Creating Controls - Conditions, Actions, and Control Sets (CONNECT Edition and V8i SELECTseries 6)

Troubleshooting Controls in WaterCAD and WaterGEMS