skip to main content
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.
Sequential Linking Structure Changes
The sequential AggDiversionSite has been modified to divert the diversion requirement as opposed to the Total Diversion Requested. The diversion requirement is the minimum flow rate required to satisfy the Diversion Requested of all Water User elements without resulting in a shortage. This calculation uses the Outgoing Available Water from upstream elements (if it is not linked elsewhere) to determine the amount of water required to meet the request of the downstream element. This differs from the previous calculation which simply diverts the sum of the Diversion Requested for all the elements. This calculation would normally divert more than is required and would result in a larger value for Total Unused Water.
This change could affect model files that use sequential AggDiversionSite objects with multiple Water User elements. Differences in output would occur in the Diversion slot as well as the Total Unused Water slot on the AggDiversionSite. If the diversion point and the return flow point (linked to Total Unused Water) are on different objects, then the amount of water between these two point will also be different than previous results.
Seepage Calc Methods
Three new methods were added to the Seepage Calc category: Horizontal Gradient Seepage, Vertical Gradient Seepage, and Horizontal and Vertical Gradient Seepage. These three methods are used to model seepage from a reach to the groundwater or an adjacent drainage channel based on the hydraulic gradient and the hydraulic conductivity of the surrounding medium. Darcy’s law is used to compute the seepage value. The horizontal seepage methods are designed to model drainage channels that run parallel to the reach. The drains may act as a source or sink to the reach depending on whether the water surface elevation in the drain is higher or lower than that in the reach. The method is flexible enough to allow for multiple drains. The vertical methods are designed to model seepage to groundwater below the reach. Detailed documentation of these methods may be found in the Simulation Objects Documentation online.
Pre-simulation Dispatching for Impulse Response Reaches
Modifications were made to the Reach object to allow pre-simulation dispatching when the impulseResponseRouting method is selected in the routing method category.
Bifurcation Object
A Bifurcation Object is now available on the object palette. The functionality of this object is similar to that of an upside down Confluence. There are only three slots associated with the Bifurcation Object: Inflow, Outflow1, and Outflow2. When two of the three slots are known the object dispatches to solve for the third. There are no user methods available for this object. Detailed documentation of the Bifurcation Object may be found in the Simulation Objects Documentation online.
Reservoir Objects
MonthlyEvaporation Calc
The CRSSEvaporationCalc method in the Evaporation and Precipitation category has been changed to MonthlyEvaporationCalc. The 12 Evaporation Coefficients (1 per month) entered by the user were changed to units of Velocity instead of Length. This allows the method to be used for any timestep (except yearly). The change in unit type takes place automatically when old models are loaded into the new release. Rulesets that contain hardwired units for the evaporation coefficients will fail with an illegal unit conversion error and will need to be updated manually
SingleEvaporation Calc
A new method, SingleEvaporationCalc, has been added to the Evaporation and Precipitation category. This method uses a single evaporation coefficient (in units of length/time) to represent the average rate of evaporation. Therefore, it can be used with any timestep. Detailed documentation of this method may be found in the Simulation Objects Documentation online.
Monthly Spill Calc
A Bypass slot was added to the monthlySpillCalc method in order to model spike flows. A spike flow must be entered into the Bypass slot to prevent it from being distributed to the turbine release over the month. Detailed documentation of this method may be found in the Simulation Objects Documentation online.
Max Flag on Outflow or Release
The convergence routine used to solve for the maximum Outflow or Release (Turbine Release) has been re-designed to increase robustness. This routine is used whenever the Max Capacity (M) flag is set on Outflow or Release (Turbine Release) on a reservoir. The nature of the convergence routine is such that the maximum and minimum possible pool elevations for the reservoir are computed in order to bracket the solution. This could effect old model files by causing a table interpolation error if the maximum or minimum pool elevation falls outside of the range given in table slots. This problem is remedied by adding additional data to the table slots that cause the problem. It is possible that the pool elevation values are not realistic values in respect to the physical system (i. e. a pool elevation that is below the bottom of the reservoir). Since these calculations are only performed to bracket the final solution, they are not recorded and will not affect the model results. The overall result of the new convergence technique is increased robustness so that the method now converges in cases where convergence was not possible previously. However, more iterations may be required before convergence is reached. The value in the Max Iterations slot may have to be increased if the user notices a brown warning message which states, “An internal iterative loop reached the maximum iterations of ‘(value in Max Iterations slot)’ when solving for ‘(Outflow or Release)’”. Increasing the value to 40 should be sufficient.
Future Value Calculations
The Spilled Energy Calculation methods were replaced by the methods in the FutureValueCalcCategory. The methods in this category are used to determine the future value of the energy that would have been generated by the water that was lost through the spillway. The noFutureValueCalc method is the default method for this category. No calculations are performed by this method and no slots are specifically associated with it. The calculateFutureValue method should be selected if the user wishes to perform these calculations. Detailed documentation of this method may be found in the Simulation Objects Documentation online.
Cumulative Storage Value Table Automation
This category allows the RiverWare simulation to automate the creation of the Cumulative Storage Value Table (used in the calculateFutureValue method). This category is only visible if calculateFutureValue is selected in the FutureValueCalcCategory. Two methods are contained within this category, None and Marginal Value to Table. The None method is the default and performs no calculations. If the other method is selected, the Marginal Storage Value Table will be used as the source for the generation of the Cumulative Storage Value Table. This is the only calculation associated with this method and there are no slots specifically associated with it. Detailed documentation of this method may be found in the Simulation Objects Documentation online.
Pumped Storage Reservoir
Pump and Release Accommodation
A new method category, Pump and Release Accommodation, was added to the Pumped Storage Reservoir object. This category contains two methods: Pump or Release Only (the default method), and Pump and Release. These methods perform no calculations and are only used as dependencies for the dispatch methods. A new dispatch method, solveMB_givenPumpedFlowOutflowInflow is available when the Pump and Release method is selected. The method checks the Pumped Flow and Outflow values to determine which one is zero. If Pumped Flow is zero, the solveMB_givenOutflowInflow method is executed. Conversely, if Outflow is zero, the solveMB_givenPumpedFlowInflow method is executed. These new methods will not change the outcome of any pumped storage calculations. They are used to allow both Pumped Flow and Outflow to be input to assist the optimization calculations (specifically, to avoid problems when running a post-optimization simulation run).
Thermal Object
Hydro Block Calculation
For both Optimization and Simulation, the Hydro Block calculations are now done based on the same period of time as the model timestep. Previously, in Simulation, the Hydro Block calculations were done on an hourly basis. This is no longer the case and therefore all hourly Hydro Block information has been removed. The “Opt” portion of the name of the remaining Hydro Block slots has been removed because they now apply to both Optimization and Simulation.
Allocated Preferred Customer
A Preferred Customer method was added to this method category on the Thermal Object to allow the user to subcontract energy that goes to a preferred customer before calculating the avoided costs from hydropower. This method is available for both Simulation and Optimization.
Revised: 08/02/2021