skip to main content
Simulation Objects
Computational Subbasin
Changes to Flood Control algorithm
The Operating Levels Balancing Flood Control algorithm has been modified to better deal with tandem reservoirs and when they can store. This was done to prevent situations where the upstream reservoir is making releases to be stored in a downstream reservoir which is surcharging and there is downstream flooding. The downstream reservoir can now only store either in the conservation pool or through tandem balancing when the downstream reservoir is not surcharging at the current controller timestep. This check does not affect flood releases that are being passed through because there is space downstream. That will still happen even if the downstream reservoir is surcharging. More information can be found Operating Level Balancing in Objects and Methods.
Initialize Flow Slots for Routing
A new category was added to the computational subbasin called Initialize Flow Slots for Routing. This category contains methods that are used to initialize slots that are required to be known for routing to solve at the start timestep. It searches throughout the subbasin to determine the earliest pre-simulation timestep at which data must be known for each object to solve at the start timestep. It sets values in these slots at pre-simulation timesteps according to the selected method. There are three methods: the default, no-action No Method, Backcast Zeros and Backcast Initial Value. More information can be found Initialize Flow Slots for Routing in Objects and Methods.
RiverWare - MODFLOW Link
A dynamic link between RiverWare and MODFLOW 2000 was added. This link allows the user to model the interaction between surface water in RiverWare and shallow groundwater in MODFLOW. In RiverWare, the user specifies the RiverWare objects and MODFLOW cells or segments involved in data exchange using the Computational Subbasin object. The Computational Subbasin displays cell by cell values for exchanged data. Then, the Reach, Water User, Aggregate Diversion Site, and GroundWater Storage objects each contain methods that, when selected, allow an object’s data to be exchanged with MODFLOW. During a run, the two models run in parallel, exchanging data (seepage, heads, stages, return flows, etc) at each RiverWare timestep / MODFLOW stress period. Note, the RiverWare timestep must match the MODFLOW stress period.
More information on this connection can be found RiverWare / MODFLOW Connection in Objects and Methods along with links to each of the relevant RiverWare objects involved in the data exchange.
Reservoirs Only Method
The Reservoirs Only method was added to the Reservoir Boundary for Incremental category on the subbasin. This method allows users to set up a subbasin of only headwater reservoirs. They then can input cumulative locals and the method will copy these to the forecast slot. This allows consistent data input across all reservoirs that disaggregate local inflows. More information can be found Reservoirs Only in Objects and Methods.
Control Point
Hydropower Flooding Exception Category
The Hydropower Flooding Exception category was added to the control points with two methods: No Method (default) and Flooding Does Not Constrain Hydropower Releases. The No Method method is the previous behavior. Any proposed hydropower releases (calculated by the HydropowerReleases predefined function) would be cut back by any additional flooding at each downstream control point. The method, Flooding Does Not Constrain Hydropower Releases, excepts the given control point so that flooding is allowed at that control point due to hydropower releases only. More information can be found Flooding Exception in Objects and Methods.
Regulation Discharge Methods
The slots, Level Regulation Parameter and Percent Full Regulation Parameter were added to the control point dependent on selection of a regulation discharge method. These output slots provide the user with the parameter or level that was used in the regulation discharge calculation. The appropriate slot is set from the regulation discharge method which is executed from the dispatch method. More information can be found Regulation Discharge in Objects and Methods.
Local Inflow Adjust
It is no longer require that Local Inflow Adjust be input on the reach if dispatching before the start of the run with the solveNRLocalInflow method. Local Inflow Adjust now defaults to 0.0 in this condition. This is consistent with the rest of the methods as this slot is filled with zeros at the beginning of the run (for the run range only).
Muskingum Cunge Improved Method
The Muskingum Cunge Improved method is a new routing method on the Reach object. The new method is a modification to the MuskingumCungeRouting method but is designed to better conserve mass. More information can be found Muskingum-Cunge Improved in Objects and Methods.
Muskingum Cunge routing method
A bug was fixed in the Muskingum Cunge method where the Distributed Outflows were being written at the previous timestep. The Outflow to the reach was correct. This bug was fixed so that now the Distributed Outflows are written at the correct timestep. Users of this method will notice different results in the Distributed Outflows slot but the Outflow from the reach will be the same.
Periodic GainLoss Method
A new Periodic GainLoss method was added to the Reach object. This method is used to model gain and/or loss in a reach. The gain and loss values are entered as periodic data for a given time range. Gains are entered as positive values and losses are entered as negative values. This method will be available for all routing methods except Time Lag Routing. More information can be found Periodic Gain Loss in Objects and Methods.
Operating Level Balancing Flood Control
The Target Balance Level slot was added and the Temp Balance Level slot was removed from the reservoir’s Operating Level Balancing flood control method. Now, the Target Balance Level is returned from the FloodControl function and set from the rule. The Target Balance Level stores what was previously shown on the Temp Balance Level slot
Peak Power Eqn With Off Peak Spill
The slots Dump Energy, Operation Factor, and Thermal Purchase were added to the Load Calculation methods on the Reservoir. These slots are output values describing how much power was produced compared to the desired Load. Dump Energy, Operation Factor, and Thermal Purchase are calculated at the end of the Peak Power Eqn with Off Peak Spill method unless the Seasonal Load Time method is selected. In that case, Dump Energy and Thermal Purchase are calculated at the end of timestep as the Load is not yet known. But, Operation Factor is always calculated at the end of that power method.
Seasonal Load Time method
In the Seasonal Load Time method, the Load slot was added. Now, when the HydropowerRelease function is called, the Load is also returned to the calling rule.
Water User and Agg Diversion Site Objects
Dispatch method required knowns
The dispatch method names were changed from
• solveStandAlone_givenDivReqDepReq to solveStandAlone_GivenDivReq - Solve given Diversion Requested in Objects and Methods
• solveSequential_givenDivReqDepReq to solveSequential_givenDivReq - Solve Sequential given Diversion Requested in Objects and Methods
Depletion Requested is no longer a required known for these methods. If Depletion Requested is not specified, the local variable will be set equal to Diversion Requested but the Depletion Requested slot will not be set. Also, Depletion Shortage will not be calculated.
Tip:  With this change, in rulebased simulation, the user no longer has to set Depletion Requested with a rule in order for the Water User to dispatch.
Sequential Structure Modifications
On the water user element on an AggDiversionSite (when set to be sequential), the Outgoing Available Water now does not include the groundwater return flow. Groundwater return flow goes into the ground and is either lost or linked to another object. Therefore the new approach sets the Outgoing Available Water equal to surface water return flow only.
On the AggDiversionSite, sequential set up, the slot Total Surface Return Flow is currently set up to sum the element’s Surface Return Flow. This is incorrect or not-meaningful as downstream elements can use leftover Surface Return Flow. It has been changed to set the Total Surface return Flow equal to the last element’s Surface Return Flow. This may not be the same as the Total Unused Water. Total Unused Water can include water that was not diverted by the last element. The last element’s Surface Return Flow is only the portion of water that was diverted that it returned via the surface. See Sequential Structure Linking in Objects and Methods for more information on the Sequential structure dispatch algorithm
Revised: 08/02/2021