Simulation Objects

The following enhancements to the RiverWare simulation objects are described briefly. The user is encouraged to consult the Simulation Objects Documentation in the online help for more detailed descriptions of the enhancements to the objects and their methods.

Reach Object

Impulse Response Routing for Seepage

A new method that allows seepage to be routed using the Impulse Response method was added to the Reach object. The option to route seepage using this method becomes available when a seepage calculation method is chosen. Upon choosing to route seepage, the calculated seepage values (un-routed) are stored in the PreRouted Seepage slot. The routed values are stored in the Routed Seepage slot.

Known Inflow Slot Changed to Deterministic Local Inflow

The Known Inflow slot name on the Reach was changed to Deterministic Local Inflow to better reflect the true content of the slot. Existing models that use the Known Inflow slot will be automatically updated to the Deterministic Local Inflow slot the first time the model is saved.

Distribution Canal

Impulse Response Routing for Seepage

A new method that allows seepage to be routed using the Impulse Response method was added to the Distribution Canal. The option to route seepage using this method becomes available when a seepage calculation method is chosen. Upon choosing to route seepage, the calculated seepage values (un-routed) are stored in the PreRouted Seepage slot. The routed values are stored in the Routed Seepage slot.

Reservoir Objects

New Reservoir Convergence Algorithm

A new convergence algorithm based on the bisection method is now used on Reservoir objects. Previously, in the event that the getMaxOutflow, getMaxRelease, getMinSpillGivenInflowRelease and mass balance functions did not converge, the functions would enter a second convergence algorithm that would determine the intersection of the two curves under the assumption that the curves were straight lines. This approach proved to be problematic in instances when the two curves are, in fact, not straight lines. For example, when the pool elevation drops below the spillway crest during a timestep, the spill is simulated using a decay function which does not exhibit linear behavior. To aide this problem and others, the line intersection algorithm was replaced with a search algorithm based on the bisection method. The bisection method is an incremental search algorithm in which the interval is always divided in half. Using this method, the assumption that the curves are linear is eliminated. For a more detailed description of the bisection convergence algorithm, see the Simulation Objects Documentation in the online help.

Changes to the Use of Minimum Power Elevation

Previously, if the pool elevation dropped below the minimum power elevation during an iterative routine such as getMaxOutflowGivenInflow, the turbine release was set to zero. If the pool elevation rose above the minimum power elevation during the iteration, the turbine release was set according to the maximum release table. In the event that the pool elevation was near the minimum power elevation at the start of the function, this logic proved to be problematic because it introduced a discontinuity in the max release curve. For example, if the pool elevation was a tiny bit below the minimum power elevation, the release was zero. Yet, if the pool elevation in the next iteration was slightly above the minimum power elevation, the release could be set to some large value obtained from the maximum release table. In this situation convergence could not be obtained. To fix this convergence problem, it is now assumed that the turbine release is zero throughout the iterative function if the pool elevation at the previous timestep is less than the minimum power elevation. Similarly, it is assumed that a release is possible if the previous pool elevation is greater than the minimum power elevation even if the pool elevation during the function drops below the minimum power elevation.

NOTE: This change could significantly affect models that have reservoirs which operate close to the minimum power elevation. Neither the old nor the new approach represents physical reality, however, so a “real” fix to this problem is still needed.

Convergence of Mass Balance Solve Storage Near Zero

The mass balance of the Reservoir was not converging in specific cases when the storage value was very near zero. In RiverWare the massBalanceSolveStorage convergence routine looks for the intersection of the reservoir mass balance equation and some other equation such as max outflow. A problem was occurring when the intersection of the lines was very close to the storage = zero limit and the iteration loop required storage to go negative before converging. The mass balance routine now converges via one of two possible approaches.

The first approach uses the negative range in the search for storage. In this approach users must append an additional row to the Elevation Volume Table and define a negative storage value. This approach is quite effective for convergence purposes and also gives valuable information if the solution ends up being in the negative range. If the storage solution is negative, RiverWare notifies users that the outflow is too great to be physically possible. For diagnostics purposes, this method also provides users with a measure of exactly how short the storage is.

If users do not want to specify negative storage values and do not want to allow negative storage values in the solution, a second approach to convergence is employed. When users do not append the Elevation Volume Table with a negative storage value RiverWare does not allow the search algorithm to go into the negative range. Instead, the algorithm uses storage = 0 whenever it is in the negative storage range. If the outflow is really too great to be physically possible, then the algorithm will keep iterating until it reaches maximum iterations. If this happens, then RiverWare does a final mass balance check at the storage = 0 point and informs the user that the outflow is too great and the run stops.

Minimum Pool Elevation Warning

A warning was created on the Slope Power Reservoir to warn the user if the Pool Elevation slot was set to a value that is below the minimum pool elevation. If the dispatch method determines a pool elevation that is less than the minimum, the slot is first set to this value and then the warning is issued.

Max Release Warning

Within the Storage Reservoir, if an input Release value is greater than Max Release, a warning message is generated. The warning, “Input Release is greater than Max Release,” does not abort the run, however, users should check that input values are correct.

Known Inflow Slot Changed to Hydrologic Inflow

The Known Inflow slot name was changed to Hydrologic Inflow to better reflect the true content of the slot. Existing models that use the Known Inflow slot will be automatically updated to the Hydrologic Inflow slot the first time the model is saved.

Control Point Object

Regulation Discharge Category

A new method category called Regulation Discharge was added to the Control Point object. The methods in this category model the Southwest Division Army Corps of Engineers’ algorithms for calculating the maximum amount of flow that is allowed in the channel and the empty space available at the control point based on the state of the system. These methods are executed prior to flood control methods that can utilize the empty channel space. At the selection of any regulation discharge method, a method category for both Sag Operation and Regulation Recession appear. Selecting methods in these categories model additional algorithms that can alter the regulation discharge results. The regulation discharge methods are still in the testing phase and should not be used by anyone except the Army Corps of Engineers. However, they are designed to be generic so in the future they can be used by anyone who needs to model regulation discharge.

Known Inflow Slot Changed to Deterministic Local Inflow

The Known Inflow slot name was changed to Deterministic Local Inflow to better reflect the true content of the slot. Existing models that use the Known Inflow slot will be automatically updated to the Deterministic Local Inflow slot the first time the model is saved.

Revised: 08/02/2021