skip to main content
Flood Control
Overview of Flood Control Algorithms
RiverWare has a new capability to execute basin-scale flood control algorithms on a computational subbasin. A flood control method is selected on the computational subbasin in the Flood Control method category. It is invoked by the new predefined rule function FloodControl(). Reservoirs and Control Points in the subbasin each have corresponding methods for flood control that should be selected consistently with the Computational Subbasin method.
Two Flood Control methods are available in this release. Both are basin-scale methods that calculate flood control releases from all reservoirs in the subbasin that are in the flood pool with the objectives of:
• maintaining a balance among the reservoir storages as prescribed by the specific method;
• avoiding flooding at downstream control points;
• calculating releases that empty the flood pools as soon as possible within a user-specified forecast period while maintaining constraints on increasing and decreasing releases.
Both the new Flood Control methods are based on US Army Corps of Engineers flood control algorithms. The Operating Balancing method is based on the Southwest Division SUPER program’s flood control algorithm. The Phase Balancing method is based on the flood control policy used by the Kansas City District. Both methods have been implemented in RiverWare as general methods that could potentially be used for flood control in any river basin. These Flood Control methods are still under development. Users who may interested in the new Flood Control methods should contact CADSWES before implementing them in their models.
A summary of how to use the new Flood Control methods is described in the next paragraphs. See the Simulation Objects Documentation and the Rulebased Simulation Documentation in the online help for details.
Model Configuration for Flood Control
In order to use the Flood Control methods, an existing RiverWare model should be configured as follows:
1. Add Control Point Objects to the points in the network where channel capacity limits the flood control releases.
2. Create a Computational Subbasin through the Edit SubBasins dialog on the Workspace menu. Include in the subbasin all objects that are part of the reservoir and river network, including the Control Points. All objects on the network must be linked and no loops may exist.
3. Select a Flood Control Method on the Subbasin. Select methods for all dependent method categories that appear when the Flood Control method is selected. Provide all input data required on the slots on the Computational Subbasin associated with the Flood Control method selected. See the Computational Subbasin Documentation for details about the methods and their input requirements.
4. Provide forecasted inflows (forecast the flood event). The inflows over the forecast period can be provided as Local Inflows to Reaches and Control Points and as Hydrologic Inflows to Reservoirs. You can forecast at some or all of these points. On each of these objects, select Forecast Local Inflows method under the Local Inflow Calculation or Hydrologic Inflow Calculation Category, then select the forecasting method you would like to use under the Generate Forecast Inflows Category. Provide data as needed to forecast the inflows at the control point. See each object’s documentation for details.
5. At control points, select the Regulation Discharge Method according to your policy. Select the Key Control Point Balancing method consistent with the Flood Control method you selected on the Subbasin and according to the regulation implemented at that control point. Flooding Exception and Sag Operation can also be selected. Provide input data as required for each method selection. See the Control Point documentation for details.
6. On Reservoirs, select the same method in the Flood Control Release Calculation category that you chose on the Computational Subbasin. Some data like forecast period can be propagated automatically to all reservoirs. See the Computational Subbasin documentation for details. Provide data as needed by the method selected. See specific Reservoir object documentation for details.
Note:  Sloped Storage Reservoirs cannot be included in a subbasin using the current selection of Flood Control methods because both methods require a unique relationship between Storage and Pool Elevation.
7. On Reservoirs, select a method for Surcharge Release. This method releases water in the Surcharge Pool that is not subject to downstream channel constraints. Provide data as needed by the method selected. See the Reservoir object documentation for details.
Execution of Flood Control Algorithm in Simulation
The new flood control algorithms are designed to be executed by rules. Following is a description of how the many parts of the flood control algorithm are executed in order at each timestep. See the documentation for each object for further details.
• During execution of the Beginning of Timestep routines on the Reservoir, Control Point and Reach objects, the selected Inflow Forecasting methods are executed, setting the Hydrologic Inflow Forecast slot for all timesteps in the Forecast Period, beginning with the current simulation timestep. The objects do not dispatch as a result of the setting of the Hydrologic Inflow slot.
• Lower priority rules execute and simulation propagates the results until the flood rules are next on the agenda.
• The first set of flood rules to execute sets the Surcharge Release Flag (S) on the Outflow slot of each Reservoir in the computational subbasin. A separate rule sets the Surcharge Release Flag on each Reservoir starting with the upstream reservoirs and continuing downstream. The simulation after each rule execution dispatches the Reservoir. The Surcharge Release Flag is interpreted as an input, so the reservoir executes the solveMB_givenInflowOutflow. As the dispatch method is being executed, the Surcharge Release Flag is detected and the object executes the selected surcharge release method. The surcharge releases are computed for the entire forecast period. These surcharge releases are set in the surcharge release slot. Also, the outflow slot is set equal to the surcharge release slot. After surcharge calculations are completed, the Surcharge Release Flag is removed from the current controller timestep so that surcharge releases will not be recomputed on subsequent dispatches. When the reservoir solves, it routes its surcharge releases down to the next reservoir before it (the downstream reservoir) computes surcharge releases.
• The next rule sets the Regulation Discharge (G) flag on the Reg Discharge Calculation slot on each Control Point in the Computational Subbasin for the current timestep. Setting this flag results in execution of the dispatch method which in turn executes the selected Regulation Discharge method and any dependent methods (such as Balance Level) on the Control Point. After execution, the regulation discharge flag is removed so that regulation discharge will not redispatch unless this flag is reset by a rule. After executing the selected Regulation Discharge method, the dispatch method checks to see if outflow has changed from its previous value. If it has not, the outflow slot is not reset using the regulation discharge rule priority. This prevents the regulation discharge rule priority from propagating downstream and triggering unnecessary and, in some cases, undesirable resolving.
• Lastly, a single rule invokes the predefined FloodControl() function on the subbasin. The function executes the selected Flood Control method on the Computational Subbasin. The function returns values for Outflow and Flood Control Release for each reservoir in the computational subbasin at the current controller timestep. The rule then sets the Flood Control Release and Outflow slots on each reservoir (outflow is the sum of flood control release and surcharge release). The setting of outflow triggers each reservoir to dispatch with the solveMB_givenInflowOutflow dispatch method. Nothing out of the ordinary happens in the dispatch method as a result (it doesn’t matter that we’re dispatching as a result of flood control, the object dispatches as it normally would when getting a new outflow).
Revised: 08/02/2021