skip to main content
Slope Power Reservoir
Objects and Methods
Slope Power Reservoir
Similar to the Level Power Reservoir, except Storage includes the wedge formed by a sloped water surface.
General Slots
Backwater Elevation
Type: Series Slot
Units: LENGTH
Description: water surface elevation at the upstream end of a slope power reservoir
Information:  
I/O: Optional; can be input or linked.
Canal Flow
Type: Series Slot
Units: FLOW
Description: flow into (out of) the reservoir from (to) a canal
Information: May be linked to either the Flow 1 or Flow 2 slot of the Canal object. If not linked, the slot is set to zero.
I/O: Output only
Convergence Percentage
Type: Table
Units: NONE
Description: A percentage value ranging from 0 to 1 used for convergence in all iterative calculations
Information: See “Reservoir Convergence” for more information on the convergence algorithm
I/O: Optional; defaults to 0.0001 if not input.
Diversion
Type: SeriesSlot
Units: FLOW
Description: flow from the reservoir to a diverting object
Information: If not linked or input it is set to zero.
I/O: Optional; may be input or linked or neither
Diversion Capacity
Type: Scalar Slot
Units: FLOW
Description: used to hold the maximum diversion physically possible from the reservoir
Information: This slot is used in the accounting system for allocation purposes and can be used in Rulebased Simulation
I/O: Input only
Elevation Volume Table
Type: Table
Units: LENGTH vs. VOLUME
Description: Reservoir Pool Elevation vs. Reservoir Storage
Information:  
I/O: Required input
Energy
Type: Series Slot
Units: ENERGY
Description: product of the power generated by flow through the turbines and the length of the timestep
Information: This slot may also take the BEST_EFFICIENCY or MAX_CAPACITY flags, which allow Energy to act as input for dispatching, but solve for the value of energy assuming the generators are operating at best efficiency or maximum capacity.
I/O: Optional; if not input by the user, Energy is computed in the power calculations.
Flow FROM Pumped Storage
Type: Series Slot
Units: FLOW
Description: flow into the reservoir from a pumped storage reservoir
Information: May be linked to the Outflow slot of a Pumped Storage object.
I/O: Optional; usually linked if used.
Flow TO Pumped Storage
Type: Series Slot
Units: FLOW
Description: flow out of the reservoir into a pumped storage reservoir
Information:  
I/O: Optional; usually linked if used
Inflow
Type: Multi Slot
Units: FLOW
Description: inflow into the reservoir from upstream
Information:  
I/O: Optional; if not input by the user, it is set through either mass balance computations or the propagation of values across the link.
Inflow 2
Type: Series Slot
Units: FLOW
Description: additional inflow slot for upstream inflows that do not contribute to the wedge storage
Information:  
I/O: Optional; defaults to zero if not input and not linked
Max Iterations
Type: Table
Units: NOUNITS
Description: maximum number of allowable iterations for iterative loops in the solution algorithms
Information: Used in conjunction with Convergence Percentage as a stopping criterion for iterative calculations.
I/O: Optional; defaults to 100 if not input.
Operating Head
Type: Series Slot
Units: LENGTH
Description: elevation difference between the average Pool Elevation and the average Tailwater Elevation during a timestep
Information:  
I/O: Output only
Outflow
Type: Series Slot
Units: FLOW
Description: outflow from reservoir
Information: The outflow from a is equal to the sum of the Turbine Release and the Spill. May be linked to the inflow slot of a downstream object. If not input by the user, it is set through either the mass balance computations or the propagation of values across the link.
I/O: Optional; if not input by the user, it is set through either the mass balance computations or the propagation of values across the link.
Pool Elevation
Type: Series Slot
Units: LENGTH
Description: elevation of the water surface of the Reservoir
Information: There must be an initial value for either Storage or Pool Elevation given by the user for the first timestep.
I/O: Optional; if not input by the user, it is solved by the mass balance computations. It may take a TARGET flag indicated by the user for target operation solution.
Power
Type: Series Slot
Units: POWER
Description: power generated by flow through the turbines
Information: Calculated by the power methods and cannot be input by the user.
I/O: Output only
Return Flow
Type: Multi Slot
Units: FLOW
Description: flow returning from a diverting object
Information:  
I/O: Optional; defaults to zero if not linked or input.
Spill
Type: Series Slot
Units: FLOW
Description: sum of the regulated and unregulated spills and bypass
Information: May be input or solved for by RiverWare (see spill calculation methods).
I/O: Optional; may be input or solved for by RiverWare (see spill calculation methods).
Storage
Type: Series Slot
Units: VOLUME
Description: volume of water stored in the reservoir
Information: May be flagged as a TARGET Storage value by the user. There must be an initial value for either Storage or Pool Elevation given by the user for the first timestep. If flagged as a TARGET, a target operation solution is used.
I/O: Optional; if not input by the user, it is set through mass balance computations.
Tailwater Elevation
Type: SeriesSlot
Units: LENGTH
Description: water surface elevation on the downstream side of the dam
Information: It can be linked to the Pool Elevation or Backwater Elevation of a downstream reservoir if the Linked or Input method is selected for the Tailwater category. Otherwise, it is calculated by the user method selected. It is used to compute the Operating Head used in the power calculations.
I/O: Optional; can be input, linked or calculated.
Total Inflows
Type: SeriesSlot
Units: Flow
Description: Summary slot displaying the flows into and out of the reservoir excluding the flows through the outlet works
Information: Total Inflows is calculated using the following equation. Any component that is not in use or is not valid defaults to zero.
I/O: Output only
Inflow Sum
Type: Series
Units: Flow
Description: Sum of the total flows entering the reservoir at each timestep
Information: Inflow Sum is calculated using the following equation.
I/O: Output only
Turbine Release
Type: Series Slot
Units: FLOW
Description: flow through the turbines of a power reservoir (excluding spill)
Information:  
I/O: Optional; solved for if not input.
Note:  The initial (Beginning of Run) value for either Pool Elevation or Storage must be input by the user.
User Methods
Power
The methods in this category can be used on all types of power reservoir objects. See “Power”.
Power Release
The methods in this category can be used on all types of power reservoir objects. See “Power Release”.
Power Unit Information
The methods in this category can be used on all types of power reservoir objects. See “Power Unit Information”.
Input Energy Adjustment
The methods in this category can be used on all types of power reservoir objects. See “Input Energy Adjustment”.
Power Plant Failure
The methods in this category can be used on all types of power reservoir objects. See “Power Plant Failure”.
Energy in Storage
The methods in this category can be used on all types of reservoir objects. See “Energy in Storage”.
Tailwater
The Tailwater methods (available in the Tailwater category of the User Selectable Methods) calculate the Tailwater Elevation of a Level Power Reservoir. The Tailwater Elevation represents the water surface elevation immediately downstream of the Power Plant. This parameter is required to calculate the Operating Head of the Power Reservoir which is used to calculate either the Energy or Turbine Release of that Reservoir. The Tailwater methods are dependent upon the Reservoir being a Slope Power Reservoir and a valid Power method (available in the Power category of the User Selectable Methods) being selected. These methods require a valid Outflow to perform their calculations.
* None
This is the default method in the Tailwater category. This method performs no calculations. There are no slots specifically associated with this method.
* Linked or Input
The Linked or Input method allows the user to either input values for the Tailwater Elevation or link the Tailwater Base Value to a slot (Pool Elevation or Backwater Elevation) on a downstream Reservoir. If the Tailwater Base Value is linked, the Tailwater Elevation cannot be input by the user. If the Tailwater Base Value is not linked, the Tailwater Elevation must be input by the user. The Tailwater Elevation is determined by following procedure if it is not input (i.e. the Tailwater Base Value is linked).
Slots Specific to This Method
Tailwater Base Value
Type: SeriesSlot
Units: LENGTH
Description: elevation of tailwater or base elevation used to compute elevation of tailwater
Information:  
I/O: Optional; may be input or set by a link.
The Linked or Input user method does not explicitly perform any calculations. There are however many logical evaluations performed in this method. The Linked or Input method is discussed below.
If a value for the Tailwater Base Value has been calculated by another user method or propagated through a link, the temporary value for the Tailwater Base Value (TWBaseValueTemp) is set equal to the calculated or linked Tailwater Base Value.
If the Tailwater Base Value is linked to another slot, the following steps are performed.
1. If the Tailwater Elevation is input, a RiverWare error is flagged and the run is aborted.
2. If TWBaseValueTemp is known, the Tailwater Elevation is set equal to the TWBaseValueTemp.
3. If TWBaseValueTemp is not known, but the previous timestep’s Tailwater Elevation is known, the Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.
4. If neither the TWBaseValueTemp nor the previous timestep’s Tailwater Elevation is known and the previous timestep was the initial timestep of the simulation, a RiverWare error is flagged and the simulation run is aborted.
5. If neither the TWBaseValueTemp nor the previous timestep’s Tailwater Elevation is known and the previous timestep was not the initial timestep, the method is exited and waits for more information.
If the Tailwater Base Value is not linked to another slot, Tailwater Elevation must be input. If the Tailwater Elevation is not input, a RiverWare error is flagged and the simulation run is aborted.
* Base Value Only
The Base Value Only method is similar to the Linked or Input method. If this method is selected, the user must either input values directly into the Tailwater Base Value slot or link the Tailwater Base Value slot to either the Pool Elevation slot or the Backwater Elevation slot of the downstream Reservoir. Either the initial Tailwater Elevation or the initial Tailwater Base Value must be input by the user for this method to execute successfully. The Tailwater Elevation for any timestep is computed as the average Tailwater Base Value over the timestep.
Slots Specific to This Method
Tailwater Base Value
Type: SeriesSlot
Units: LENGTH
Description: elevation of tailwater or base elevation of tailwater is used to compute the tailwater elevation
Information:  
I/O: Optional; may be input or linked.
This method is based on logic similar to that of the Linked or Input method. The Base Value Only user method performs many logical evaluations to set the Tailwater Elevation. This method is described below.
The temporary Tailwater Base Value (TWBaseValueTemp) is set equal to the Tailwater Base Value if the Tailwater Base Value was calculated by another user method or set via a link.
If the Tailwater Base Value is linked to another slot, the following steps are performed.
1. If the previous timestep’s Tailwater Base Value is not known, and both the previous timestep’s Tailwater Elevation and TWBaseValueTemp are known, the Tailwater Elevation is calculated as follows:
where Tailwater Elevation (-1) is the previous timestep’s Tailwater Elevation.
2. If neither the previous timestep’s Tailwater Base Value nor the TWBaseValueTemp is known but the previous timestep’s Tailwater Elevation is known, the current timestep is set equal to the previous timestep’s Tailwater Elevation.
3. If neither the previous timestep’s Tailwater Base Value nor the previous timestep’s Tailwater Elevation is known and the previous timestep is the initial timestep, a RiverWare error is posted and the simulation run is aborted.
4. If neither the previous timestep’s Tailwater Base Value nor the previous timestep’s Tailwater Elevation is known and the previous timestep is not the initial timestep, more information must be known. The method is exited and waits for more information to be known.
5. If both the previous timestep’s Tailwater Base Value and the TWBaseValueTemp are known, the Tailwater Elevation is calculated as follows:
6. If the previous timestep’s Tailwater Base Value is known but TWBaseValueTemp is not known, Tailwater Elevation is set equal to the previous timestep’s Tailwater Base Value.
If the Tailwater Base Value is not linked, the following steps are performed.
1. If the Tailwater Elevation is not known and the TWBaseValueTemp is known, the Tailwater Elevation is set equal to the TWBaseValueTemp.
2. If neither the Tailwater Elevation nor the TWBaseValueTemp are known, a RiverWare error is flagged and the simulation run is aborted.
* Base Value Plus Lookup Table
The Base Value Plus Lookup Table method computes the Tailwater Elevation. This is done by adding the average Tailwater Base Value (over the timestep) to a function of Outflow determined by the Tailwater Table. The Outflow value used to find the corresponding Tailwater value on the Tailwater Table is either the value of the local variable Flow or the value of the Outflow slot. The Tailwater Base Value may be input by the user or linked to either the Pool Elevation slot or the Backwater Elevation slot of a downstream Reservoir. If the Tailwater Base Value is neither input nor linked, it is assumed to be zero.
Slots Specific to This Method
Tailwater Base Value
Type: SeriesSlot
Units: LENGTH
Description: the base elevation of the tailwater
Information:  
I/O: Optional; can be input or linked.
Tailwater Table
Type: Table
Units: FLOW vs. LENGTH
Description: reservoir outflow vs. either the tailwater elevation or the tailwater elevation increment
Information: If the Tailwater Base Value is non-zero, the Tailwater Table gives values of incremental increase in Tailwater Elevation over the Base value. Otherwise, the table gives the Tailwater Elevation values.
I/O: Required input
This method is based on logic similar to that of the Linked or Input method. The Base Value Plus Lookup Table user method performs many logical evaluations to set the Tailwater Elevation. This method is described below.
The temporary Tailwater Base Value (TWBaseValueTemp) is set equal to the Tailwater Base Value if the Tailwater Base Value was calculated by another user method or set via a link.
If the Local Info variable Flow is known, the local variable, tempflow, is set equal to Flow. If the Local Info variable Flow is not known, but the Outflow is known, tempflow is set equal to Outflow.
If the tempflow value is known, the following steps are taken to determine the Tailwater Elevation.
If the Tailwater Base Value is linked (and tempflow is known), the following steps are performed.
1. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known, TWTemp (a local variable) is obtained from a table interpolation performed on the Tailwater Table using tempflow. The Tailwater Elevation is calculated.
2. If TWBaseValueTemp is known but the previous timestep’s Tailwater Base Value is known, but the previous timestep’s Tailwater Basic Value is not known. TWTemp is obtained from a table interpolation performed on the Tailwater Table using tempflow. The Tailwater Elevation is then calculated.
3. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Base Value is known, TWTemp is obtained from a table interpolation performed on the Tailwater Table using tempflow. The Tailwater Elevation is then calculated.
4. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value are known but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.
5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value is known and the previous timestep is the initial timestep of the run, a RiverWare error is posted and the run is aborted.
6. If neither the TWBaseValueTemp nor the previous timestep’s Tailwater Base Value is known and the previous timestep is not the initial timestep of the run, the method is exited and waits for more information.
If the Tailwater Base Value is NOT linked (and tempflow is known), the following steps are performed.
1. If TWBaseValueTemp is known, TWTemp is obtained from a table interpolation performed on the Tailwater Table using tempflow. The Tailwater Elevation is then calculated.
2. If TWBaseValueTemp is not known, the Tailwater Elevation is obtained from a table interpolation performed on the Tailwater Table using tempflow.
The only case where tempflow is not known is when Outflow is not known. This scenario only occurs at the first timestep in one of the three given Energy dispatch methods. The following steps are performed to determine the Tailwater Elevation if tempflow is not known.
If the Tailwater Base Value is linked (and tempflow is not known), the following steps are taken.
1. If TWBaseValueTemp and the previous timestep’s Tailwater Elevation are known, the Tailwater Elevation is calculated.
2. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known but the previous timestep’s Tailwater Elevation is not known, Tailwater Elevation is calculated.
3. If TWBaseValueTemp is known, but neither the previous timestep’s Tailwater Elevation nor the previous timestep’s Tailwater Base Value are known, Tailwater Elevation is set equal to TWBaseValueTemp.
4. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.
5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Elevation are known, but the previous timestep’s Tailwater Base Value is known, Tailwater Elevation is set equal to the previous timestep’s Tailwater BaseValue.
6. If the previous timestep is the initial timestep of the run, and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, a RiverWare error is posted and the simulation run is aborted.
7. If the previous timestep is NOT the initial timestep of the run, and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, the method is exited and waits for more information to execute.
If the Tailwater Base Value is not linked (and tempflow is NOT known), the following procedures are performed.
If the Tailwater Elevation is known, the method is exited because no calculations need to be performed.
8. If the Tailwater Elevation is NOT known, and TWBaseValueTemp is NOT equal to zero, Tailwater Elevation is set equal to TWBaseValueTemp.
9. If the Tailwater Elevation is NOT known and either the temporary Tailwater Base Value is NOT known or equal to zero or both, Tailwater Elevation is set equal to the elevation corresponding to zero on the Tailwater Table.
Following are definitions of terms used in these equations.
TWBaseValueTemp
A temporary value for the Tailwater Base Value. This value may be determined from another method or propagated across a link.
tempflow
A local variable used as the outflow from the Reservoir.
TWTemp
A local variable used to represent the incremental increase in the Tailwater Elevation over the Tailwater Base Value.
Tailwater Elevation (-1)
The Tailwater Elevation at the previous timestep.
Tailwater Base Value (-1)
The Tailwater Base Value at the previous timestep.
* Stage Flow Lookup Table
The Stage Flow Lookup Table method is similar to the other methods for determining Tailwater Elevation. The Tailwater Elevation is obtained from a 3-dimensional table relating Outflow, Downstream Stage, and the corresponding Tailwater Elevation for most cases. The data in this table must be input by the user. The value for Downstream Stage that is used in this method is the larger of the Tailwater Reference Elevation or the Tailwater Base Value if the Tailwater Base Value is linked to a downstream elevation. If the Tailwater Base Value is not linked, the temporary Tailwater Base Value is used as the Downstream Stage. An average value for the Tailwater Elevation over the timestep is used whenever possible.
Slots Specific to This Method
Stage Flow Tailwater Table
Type: Table
Units: FLOW vs. LENGTH vs. LENGTH
Description: Reservoir Outflow vs. Downstream Elevation (Tailwater Base Value) vs. Tailwater Elevation
Information: Data must be entered into the table in increasing blocks of the same Outflow value for the three-dimensional table interpolator to work correctly. For every block of same Outflows in column 1, Stages should be listed in increasing order in column 2, and the corresponding Tailwater Elevations in column 3.
 
Outflow
Downstream Stage
TW Elevation
100
500
510
100
550
560
100
600
610
200
500
520
200
550
570
200
600
620
300
500
530
300
550
580
300
600
630
I/O: Required input
Tailwater Base Value
Type: SeriesSlot
Units: LENGTH
Description: base elevation of the tailwater
Information:  
I/O: Optional; can be input or set by a link.
Tailwater Reference Elevation
Type: Table
Units: LENGTH
Description: lowest Reservoir discharge Elevation when there are no backwater effects from a downstream pool (reservoir)
Information: If this slot has input data, the greater of the Tailwater Reference Elevation or the linked lower reservoir’s Pool or Backwater Elevation is used to calculate the Tailwater Base Value. If the Tailwater Base Value is linked to a downstream elevation, this value must be specified by the user. If the Tailwater Base Value is not linked, this value is not used, even if specified.
I/O: Required input
The Stage Flow Lookup Table user method performs many logical tests to determine the Tailwater Elevation. This method is described below.
The first step in this method is to check and see if the Tailwater Reference Elevation is known. If the Tailwater Reference Elevation is not known, a RiverWare error is posted and the run is aborted.
The temporary Tailwater Base Value (TWBaseValueTemp) is set equal to the Tailwater Base Value if the Tailwater Base Value was calculated by another user method or set via a link.
If the local variable Flow is known, the local variable tempflow is set equal to Flow If the local variable Flow is not known, but the Outflow is known, if the Local Info variable Flow is not known but Outflow is known, tempflow is set equal to Outflow.
If the tempflow value is known, the following steps are taken to determine the Tailwater Elevation.
If the Tailwater Base Value is linked (and tempflow is known), the following steps are performed.
1. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known, downstreamStage is computed as the average of the previous timestep’s Tailwater Base Value and either the Tail Water Reference Elevation or TWBaseValueTemp (whichever is greater). A table interpolation is performed to determine the Tailwater Elevation using the downstreamStage, tempflow, and the Stage Flow Tailwater Table.
2. If TWBaseValueTemp is known but the previous timestep’s Tailwater Base Value is NOT known, downstreamStage is set equal to either the Tail Water Reference Elevation or TWBaseValueTemp (whichever is greater). A table interpolation is performed to determine the Tailwater Elevation using the downstreamStage, tempflow, and the Stage Flow Tailwater Table.
3. If the previous timestep’s Tailwater Base Value is known but TWBaseValueTemp is NOT known, downstreamStage is set equal to the previous timestep’s Tailwater Base Value. A table interpolation is performed to determine the Tailwater Elevation using the downstreamStage, tempflow, and the Stage Flow Tailwater Table.
4. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value are known, but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.
5. If the previous timestep was the initial timestep and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, a RiverWare error is posted and the run is aborted.
6. If the previous timestep was NOT the initial timestep, and none of the following are known: the temporary TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, the method is exited and waits for more information.
If the Tailwater Base Value is not linked (and tempflow is known), the following steps are performed.
1. If TWBaseValueTemp is known, downstreamStage is set equal to TWBaseValueTemp. A table interpolation is performed to determine the Tailwater Elevation using the downstreamStage, tempflow, and the Stage Flow Tailwater Table.
2. If TWBaseValueTemp is NOT known, a RiverWare error is posted and the run is aborted.
The only case where tempflow is not known is when Outflow is not known. This scenario only occurs at the first timestep in one of the three given Energy dispatch methods. The following steps are performed to determine the Tailwater Elevation if tempflow is not known.
If the Tailwater Base Value is linked (and tempflow is not known), the following steps are performed.
1. If both TWBaseValueTemp and the previous timestep’s Tailwater Elevation are known, the Tailwater Elevation is calculated.
2. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known but the previous timestep’s Tailwater Elevation is not known, Tailwater Elevation is computed.
3. If TWBaseValueTemp is known but neither the previous timestep’s Tailwater Elevation nor the previous timestep’s Tailwater Base Value are known, Tailwater Elevation is set equal to TWBaseValueTemp.
4. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.
5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Elevation is known, but the previous timestep’s Tailwater Base Value is known, Tailwater Elevation is set equal to the previous timestep’s Tailwater Base Value.
6. If the previous timestep is the initial timestep of the run, and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, a RiverWare error is posted, and the run is aborted.
7. If the previous timestep is NOT the initial timestep of the run and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, the method is exited and waits for more information.
If the Tailwater Base Value is not linked (and tempflow is not known) the following procedures are performed.
1. If the Tailwater Elevation is known, the method is exited because no calculations need to be performed.
2. If the Tailwater Elevation is NOT known and the TWBaseValueTemp is NOT equal to zero, Tailwater Elevation is set equal to TWBaseValueTemp.
3. If the Tailwater Elevation is NOT known and either the temporary Tailwater Base Value is NOT known or equal to zero or both, Tailwater Elevation is set equal to the elevation corresponding to zero on the Tailwater Table.
Following are definitions of terms used in these equations.
TWBaseValueTemp
A temporary value for the Tailwater Base Value. This value may be determined from another method or propagated across a link.
tempflow
A local variable used as the outflow from the Reservoir.
downstreamStage
A local variable used to hold the value of the downstream stage elevation.
Tailwater Elevation (-1)
The Tailwater Elevation at the previous timestep.
Tailwater Base Value (-1)
The Tailwater Base Value at the previous timestep.
* Compare to Avg Base Value
The Compare to Avg Base Value method uses similar methodology as the Base Value Plus Lookup Table and Stage Flow Lookup Table methods. The only difference between this method and the others is that a new local variable, TWCompare, is used. The value for TWCompare is compared with a table lookup value for the Tailwater Elevation. The larger of the two values is used as the Tailwater Elevation. An average Tailwater Elevation over the timestep is calculated whenever possible.
Slots Specific to This Method
Tailwater Base Value
Type: SeriesSlot
Units: LENGTH
Description: base elevation of the tailwater
Information:  
I/O: Optional; can be input of set by a link.
Tailwater Table
Type: Table
Units: FLOW vs. LENGTH
Description: Reservoir Outflow vs. either the Tailwater Elevation or the tailwater elevation increment
Information: If the Tailwater Base Value is non-zero, the Tailwater Table holds values of incremental increase in Tailwater Elevation over the Base value. Otherwise, the table holds the Tailwater Elevation values.
I/O: Required input
The Compare to Avg Base Value user method performs many logical evaluations to determine the Tailwater Elevation. This method is described below.
The temporary Tailwater Base Value (TWBaseValueTemp) is set equal to the Tailwater Base Value is the Tailwater was calculated by another user method or set via a link. For the Tailwater Compare Method, the Tailwater Base Value must be linked to another object. Otherwise there would be no reason to compare values. If the Tailwater Base Value is not linked, a RiverWare error is posted and the simulation run is aborted.
If the Local Info variable Flow is known, the local variable tempflow is set equal to Flow.
If the local variable Flow is not known, but Outflow is known, tempflow is set equal to Outflow.
If the tempflow value is known, the following steps are taken to determine the Tailwater Elevation.
1. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known,
2. If TWBaseValueTemp is known but the previous timestep’s Tailwater Base Value is NOT known, TWCompare is set equal to TWBaseValueTemp.
3. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Base Value is known, TWCompare is set equal to the previous timestep’s Tailwater Base Value.
4. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value are known and the previous timestep is the initial timestep, a RiverWare error is posted and the run is aborted.
5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value are known and the previous timestep is NOT the initial timestep, the method is exited and waits for more information.
Once the TWCompare value has been determined, a table interpolation is performed using the Tailwater Table to obtain the tailwater elevation corresponding to the tempflow value. The tailwater elevation value obtained from this interpolation is then compared to TWCompare. The largest of the two values is used to set the Tailwater Elevation.
The only case where tempflow is not known is when Outflow is not known. This scenario only occurs at the first timestep in one of the three given Energy dispatch methods. The following steps are performed to determine the Tailwater Elevation if tempflow is not known.
1. If both TWBaseValueTemp and the previous timestep’s Tailwater Elevation are known,
2. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known but the previous timestep’s Tailwater Elevation is not known,
3. If TWBaseValueTemp is linked and the temporary Tailwater Base Value is known but neither the pervious timestep’s Tailwater Elevation nor the previous timestep’s Tailwater Base Value are known, the Tailwater Elevation is set equal to TWBaseValueTemp.
4. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.
5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Elevation are known, but the previous timestep’s Tailwater Base Value is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Base Value.
6. If the previous timestep is the initial timestep of the run, and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, a RiverWare error is posted and the simulation is aborted.
7. If the previous timestep is not the initial timestep of the run and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, the method is exited and waits for more information.
Following are definitions of terms used in these equations.
TWBaseValueTemp
A temporary value for the Tailwater Base Value. This value may be determined from another method or propagated across a link.
tempflow
A local variable used as the outflow from the Reservoir.
TWCompare
A local variable used to hold a value that is compared to the Tailwater Elevation obtained by table interpolation.
Tailwater Elevation (-1)
The Tailwater Elevation at the previous timestep.
Tailwater Base Value (-1)
The Tailwater Base Value at the previous timestep.
* Coefficients Table
The Coefficients Table method multiplies Outflow, Tailwater Base Value, and Tailwater Elevation at the current and/or previous timestep by coefficients that are stored on a table. These products are added together along with constants to compute the Tailwater Elevation.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Description: base elevation of the tailwater
Information:  
I/O: Optional; can be input or set by a link.
Tailwater Coefficients
Type: Table
Units: Length, Length/Flow, None, None
Description: This table contains the coefficients used in the calculation. The columns are as follows: Constant, Outflow, TW Base Val, TW Elev. The first row (t) represents the value to multiply by the current timestep’s value. The second row (t‑1)represents the value to multiply by the previous timestep’s value.
Information: Not every cell will have a value, but there must be at least one value in the table. In addition, the coefficient for TW Elev at t cannot be non-zero or an error will be issued. (Tailwater Elevation at the current timestep is the value being computed, so it is not possible to use it in the calculation). If any coefficients are specified (non-zero) for t-1 for Outflow, TW Base Val, or TW Elev, then the initial timestep value of those slots must also be specified.
I/O: Input only
At the beginning of the run, the Tailwater Coefficients table is verified for valid coefficients as described in the slot information above. Not every coefficient has to be specified.
When the tailwater method is executed, the following computation is performed:
Each coefficient and each series value are checked for validity before including in the total.
In the preceding equation, the values for flow and TailwaterBaseValueTemp are based on the information that is known:
• The flow variable represents the outflow passed into the method if valid, or the value on the Outflow slot if not passed in. If neither is valid, Tailwater Elevation is set to the previous Tailwater Elevation. If that is not valid, the method exits and waits for a flow value to become valid.
The TailwaterBaseValueTemp is either the base value passed into the method or the value on the Tailwater Base Value slot. If neither is known, the previous Tailwater Base Value is used. If that is not valid, the method executes to wait for more information.
* Hoover Tailwater
The Hoover Tailwater method was developed by the USBR for use on Lake Mead. This method uses a table of empirically derived constants.
Slots Specific to This Method
Tailwater Base Value
Type: SeriesSlot
Units: LENGTH
Description: base elevation of the tailwater
Information:  
I/O: Optional; can be input or set by a link.
Tailwater Table
Type: Table
Units: FLOW vs. LENGTH
Description: Reservoir Outflow vs. either the Tailwater Elevation or the tailwater elevation increment
Information: If the Tailwater Base Value is non-zero, the Tailwater Table holds values of incremental increase in Tailwater Elevation over the Base value. Otherwise, the table holds the Tailwater Elevation values.
I/O: Required input
Hoover Tailwater Table
Type: Table
Units: NO UNITS
Description: constants for equation that calculates the Tailwater Elevation
Information: This method was developed by the USBR for use on Lake Mead. Column 1 is the TWaverage in feet, column 2 is hte5, column 3 is coeff1.
I/O: Required input
The Hoover Tailwater user method performs calculations to determine the Tailwater Elevation. Following is a description of this method.
The first step of this method is to set the temporary Tailwater Base Value (TWBaseValueTemp). TWBaseValueTemp is set equal to the Tailwater Base Value if the Tailwater Base Value was calculated by another user method or set via a link.
Then the previous timestep’s Tailwater Base Value is checked. If the previous timestep’s Tailwater Base Value is not known, a RiverWare error is posted and the run is aborted.
The TWaverage, a local variable, is then calculated using the following steps.
1. If TWBaseValueTemp is known,
2. If the temporary TWBaseValueTemp is NOT known, the TWaverage is set equal to the previous timestep’s Tailwater Base Value.
Once the TWaverage has been calculated, it is used to interpolate the empirical constants for the following equation from the Hoover Tailwater Table.
Finally, the following is calculated:
Tailwater Elevation is then set equal to TELEFT (which is converted into internal units).
Following are definitions of some terms used in these equations.
TWBaseValueTemp
A temporary value for the Tailwater Base Value. This value may be determined from another method or propagated across a link.
Tailwater Base Value (-1)
The Tailwater Base Value at the previous timestep.
TWaverage
A local variable that is used as the average of the Tailwater Elevation over the timestep.
TELEFT
The Tailwater Elevation in feet as determined by the equation given above.
hte5
An empirical constant developed by the USBR.
Qcfs
The flow in cfs.
coeff1
An empirical constant developed by the USBR.
Spill
The methods in this category can be used on all types of reservoir objects. See “Spill”.
Unregulated Spill Type
The methods in this category can be used on all types of reservoir objects. See “Unregulated Spill Type”.
Regulated Spill Overflow
The methods in this category can be used on all types of reservoir objects. See “Regulated Spill Overflow”.
Input Outflow Adjustment
The methods in this category can be used on all types of reservoir objects. See “Input Outflow Adjustment”.
Future Value
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.
* None
None is the default method for the Future Value category. No calculations are performed by this method. There are no slots specifically associated with this method.
* Cumulative Storage Value Table
Slots Specific to This Method
Marginal Storage Value Table
Type: Table
Units: Volume vs. $per ENERGY
Description: Storage versus marginal value per unit energy
Information: This table should be increasing in storage, and usually decreasing in marginal value.
I/O: Required input
Spill Cost
Type: Series Slot
Units: $
Description: Future cost of energy lost due to spilled water
Information:  
I/O: Output only
Future Value of Used Energy
Type: Series Slot
Units: $
Description: Future value of energy used in the current timestep
Information:  
I/O: Output only
Anticipated Storage
Type: SeriesSlot
Units: Volume
Description: The combination of Storage in the reservoir at the given timestep plus any flow (converted volume) that is in transit to the reservoir
Information: This slot represents the storage including any lagged flows that are already in a linked upstream reach, which will reach the reservoir at a later timestep. If there are no lagged reaches between this reservoir and the next upstream reservoir, Anticipated Storage will equal Storage. It is this storage value that will be used to calculate Cumulative Storage Value.
I/O: Output only
Cumulative Storage Value
Type: Series Slot
Units: $
Description: Represents the future energy value of the current Anticipated Storage
Information:  
I/O: Output only
Cumulative Storage Value Table
Type: Table
Units: Volume vs. $
Description: Anticipated Storage and cumulative value used to calculate the Cumulative Storage Value as a function of Anticipated Storage
Information: This table should be increasing in storage and usually increasing in cumulative storage value.
I/O: Required Input either by the user or automatically generated by RiverWare if the Cumulative Storage Value Table Automation method is selected.
This method uses the Marginal Storage Value Table and the calculated Spill and Turbine Release to compute the Spill Cost and Future Value of Used Energy. It then uses the Cumulative Storage Value Table and the calculated Anticipated Storage to compute the Cumulative Storage Value.
The correct marginal value is found from the current storage in the reservoir. If the current storage is than the midpoint between the first and second storage table values, the first marginal value is used. The second marginal value is used for a current storage above that midpoint to the midpoint between the second and third storage table values. The last marginal value is used for any current storage above the midpoint between the second-to-last and the last storage table value. Table 24.1 and Figure 24.1 are examples.
 
Table 24.1  Marginal Value Table
Storage
Marginal Value
20
30
60
26
100
24
Figure 24.1  Marginal Storage Value
Assume that the current storage is 39. Therefore, this method would use 30 as the marginal value for use in the next computation. Assume that the current storage is 41. Therefore, this method would use 26 as the marginal value for use in the next computation.
Use of a table in this fashion is unique to this method.
Spill Cost is computed as follows:
Future Value of Used Energy is computed by the following equation:
The Cumulative Storage Value computation begins by first calculating Anticipated Storage. This is the sum of the reservoir Storage plus any flow already in transit to the reservoir in an upstream lagged reach. For example, assume a reservoir’s Inflow slot is linked to a reach with a 3-hour lag time. In an run with a 1 Hour timestep, the reservoir’s Anticipated Storage would be calculated as follows:
If there are no lagged reaches between the reservoir and the next upstream reservoir, then Anticipated Storage will simply equal Storage.
The Cumulative Storage Value is then computed by interpolating from the Cumulative Storage Value Table using the calculated Anticipated Storage value.
Cumulative Storage Value Table Automation
This category allows the RiverWare simulation to automate the creation of the Cumulative Storage Value Table. This category is only visible if Cumulative Storage Value Table is selected in the Future Value category.
* None
If this method is selected, no automation will be performed and the user must enter the data into the Cumulative Storage Value Table.
* Marginal Value to Table
If this 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. There are no slots associated specifically with this method.
This method uses information from the simulation slot Marginal Storage Value Table to generate a cumulative storage value table. The cumulative storage value can be thought of as the summation of the marginal storage values from a storage of 0 to the current storage. Therefore, the automation method finds the same midpoint values used by the simulation Future Value Calc method, and uses those points in the table.
If only one value exists in the Marginal Storage Value Table, then only two entries will exist in the Cumulative Storage Value Table. The two entries will be 0, and midway between the value in the Marginal Storage Value Table, and the maximum value set on the Storage slot. If more than one value exists, three or more points will result. Following are sample Table 24.2 and Table 24.3 are examples of a Marginal Value Table and the resulting Cumulative Storage Value Table. Figure 24.2 is a sample graph of the Cumulative Storage Value data.
 
Table 24.2  Marginal Value Table
Storage
Marginal Value
20
30
60
26
100
24
 
Table 24.3  Cumulative Storage Value Table
Anticipated Storage
Cumulative Value
40
1200
80
2240
140
3680
Figure 24.2  Cumulative Storage Value
Ramping
This category allows you to model the cost of turbine ramping, the cost of changing the turbine release from one timestep to the next.
* None
This is the default method for this category. No new slots are instantiated, and no calculations are performed.
* Track Ramping
In this method the user assigns a unit cost to turbine ramping, a cost per unit change in flow from one timestep to the next. The method then calculates the change in turbine release and the associated ramping cost. The unit cost is the same for ramping up and ramping down.
Slots Specific to This Method
Ramping Cost
Type: Series
Units: Value
Description: The total cost of turbine ramping for the timestep.
Information: This is the Unit Ramping Cost multiplied by the change in turbine release from one timestep to the net.
I/O: Output only
Turbine Decrease
Type: Series
Units: Flow
Description: The difference between Turbine Release at the previous timestep and the current timestep when Turbine Release decreases from the previous timestep
Information: If Turbine Release at the current timestep is greater than at the previous timestep, the value is zero.
I/O: Output only
Turbine Increase
Type: Series
Units: Flow
Description: The difference between Turbine Release at the current timestep and the previous timestep when Turbine Release increases from the previous timestep
Information: If Turbine Release at the current timestep is less than at the previous timestep, the value is zero.
I/O: Output only
Unit Ramping Cost
Type: Table 1x1
Units: Value per Flow
Description: The cost per unit change in Turbine Release from one timestep to the next
Information: There is a single value for Unit Ramping Cost (i.e. the same unit cost for ramping up and ramping down)
I/O: Optional input; if not input or negative, defaults to zero
The method first checks for a value in the Unit Ramping Cost table slot. If there is no input value, or if the value is negative, it sets the value to zero. Then it checks if Turbine Release is valid for the current timestep and the previous timestep. If Turbine Release at the current timestep is greater than or equal to the previous timestep then the following values are set:
Otherwise, the following values are set:
If Turbine Release is not valid at both the current and previous timesteps, then Turbine Increase, Turbine Decrease and Ramping Cost will all display NaN.
Hydrologic Inflow
The Hydrologic Inflow category allows RiverWare to accommodate inflows to a Reservoir that are not part of the main channel and/or are not gauged. The user methods in this category may be used to initialize the Hydrologic Inflow slot if it is required by the user. If the Hydrologic Inflow slot has been initialized, it is figured into the mass balance when the object dispatches.
* None
None is the default method for the Hydrologic Inflow category. No calculations are performed by this method. There are no slots specifically associated with this method. If this method is selected, the Hydrologic Inflow slot is not initialized so it is no included in the mass balance.
* Input Hydrologic Inflow
The Input Hydrologic Inflow method should be used when the user wishes either to input the values of Hydrologic Inflow or have the values default to zero. RiverWare will not overwrite any user input values.
Slots Specific to This Method
Hydrologic Inflow
Type: SeriesSlot
Units: FLOW
Description: flow into the reservoir that is not gauged and/or does not enter through the main channel.
Information:  
I/O: Optional; defaults to zero if not input.
Hydrologic Inflow Adjust
Type: SeriesSlot
Units: FLOW
Description: optional adjustment that can be made to the calculated Hydrologic Inflow
Information:  
I/O: Optional; set to zero if not input by the user.
Hydrologic Inflow Net
Type: SeriesSlot
Units: FLOW
Description: sum of hydrologic Inflow and Hydrologic Inflow Adjust
Information:  
I/O: Output only
The algorithm used for this method is very simple. If Hydrologic Inflow is not input by the user, it is set equal to zero. Hydrologic Inflow Net is calculated as the sum of Hydrologic Inflow and Hydrologic Inflow Adjust.
* Forecast Hydrologic Inflow
This method is used to forecast the hydrologic inflow based on known inflow values. When this method is selected, the Generate Forecast Hydrology category becomes visible. Within this category, methods are available to generate the hydrologic inflow forecast.
Generate Forecast Hydrology
This category contains methods that forecast the hydrologic inflow based on known inflow values. The user inputs the historical inflows to the reservoir and the methods adjust those values to represent a forecast. The methods in this category execute at the beginning of each timestep.
* None
This method is the default for this category. It will result in an error if it is selected and a run is started.
* Geometric Recession
On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Inflow is used to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow. If the Forecast Period method is not selected, the input Deterministic Incremental Hydrologic Inflow slot is used to forecast and set the Hydrologic Inflow Forecast series slot.
Slots Specific to This Method
Hydrologic Inflow Forecast
Type: SeriesSlot
Units: FLOW
Description: The forecasted hydrologic inflow values
Information:  
I/O: Output only
Deterministic Incremental Hydrologic Inflow
Type: SeriesSlot
Units: FLOW
Description: This slots holds a timeseries of the actual hydrologic inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow Forecast slot.
Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Full Run method is selected, values from the Incremental Hydrologic Inflow slot will be copied into this slot prior to the forecast. This slot is not used (i.e. inputs are ignored) if the Forecast Period method is selected.
I/O: Input or set to the values in the Incremental Hydrologic Inflow slot
Period of Perfect Knowledge
Type: Scalar
Units: FLOW
Description: Number of timesteps for which the forecast will equal the Deterministic Incremental Hydrologic Inflow, i.e., the forecast is known with complete certainty.
Information: Minimum value of 1; maximum value equal to the number of timesteps in the forecast period.
I/O: Input only
Type: Not linkable
Recession Factor
Type: Scalar
Units: NONE
Description: A decimal value that is multiplied by the previous Hydrologic Inflow Forecast value to determine the current value after the Period of Perfect Knowledge.
Information:  
I/O: Input only
This method uses different slots and sets different slots if the Forecast Period is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If the Forecast Period is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Inflow (Source) to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow (Target). If it is not selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow Forecast slot (Target). The following uses the Source/Target terminology to describe the methods.
The Source slot values are required inputs for each timestep. At the beginning of each controller timestep, the Geometric Recession method is executed. For each forecast timestep within the period of perfect knowledge, the Target is set to the Source value. For each forecast timestep after the period of perfect knowledge, the Target is set by multiplying the value of the Target from the previous timestep by the constant recession factor.
A value for the Source slot must be known at every timestep during the run. If Target values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source slot are not entered past the end of the run, the Target values for these timesteps are assumed to be zero.
* Exponential Recession
On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Infow is used to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow. If the Forecast Period methods is not selected, the input Deterministic Incremental Hydrologic Inflow slot is used to forecast and set the Hydrologic Inflow Forecast series slot.
Slots Specific to This Method
Hydrologic Inflow Forecast
Type: SeriesSlot
Units: FLOW
Description: The forecasted inflow values computed from the Deterministic Incremental Hydrologic Inflow
Information:  
I/O: Output only
Deterministic Incremental Hydrologic Inflow
Type: SeriesSlot
Units: FLOW
Description: This slots holds a timeseries of the actual hydrologic inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow Forecast slot.
Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Full Run method is selected, values from the Incremental Hydrologic Inflow slot will be copied into this slot prior to the forecast. This slot is not used (i.e. inputs are ignored) if the Forecast Period method is selected.
I/O: Input or set to the values in the Incremental Hydrologic Inflow slot
Forecast Period
Type: Table
Units: NONE
Description: Number of timesteps, not including the current timestep, that the inflow hydrograph will be adjusted.
Information:  
I/O: Input only
Period of Perfect Knowledge
Type: ScalarSlot
Units: FLOW
Description: Number of timesteps for which the forecast will equal the Deterministic Incremental Hydrologic Inflow, i.e., the forecast is known with complete certainty.
Information: Minimum value of 1; maximum value equal to the number of timesteps in the forecast period.
I/O: Input only
Minimum Forecasted Flow
Type: SeriesSlot
Units: FLOW
Description: The minimum forecasted flow.
Information: If the computed value for Hydrologic Inflow Forecast is less than the Minimum Forecasted Flow, it is set to the Minimum Forecasted Flow.
I/O: Input only
Low Flow Threshold
Type: ScalarSlot
Units: FLOW
Description: The flow rate that dictates whether to use the Low Flow Recession Coefficient or the High Flow Recession Coefficient.
Information:  
I/O: Input only
Low Flow Recession Coefficient
Type: ScalarSlot
Units: NONE
Description: The recession coefficient used when the Deterministic Incremental Hydrologic Inflow (at the end of the Period of Perfect Knowledge) is below or equal to the Low Flow Threshold.
Information:  
I/O: Input only
High Flow Recession Coefficient
Type: ScalarSlot
Units: NONE
Description: The recession coefficient used when the Deterministic Incremental Hydrologic Inflow (at the end of the Period of Perfect Knowledge) is above the Low Flow Threshold.
Information:  
I/O: Input only
This method uses different slots and sets different slots if the Forecast Period is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If the Forecast Period is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Infow (Source) to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow (Target). If it is not selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow Forecast slot (Target). The following uses the Source/Target terminology to describe the methods.
The Source slot values are input for each timestep. At the beginning of each controller timestep, the Exponential Recession method is executed. For each forecast timestep within the period of perfect knowledge, the Target is set to the Source value. For each forecast timestep after the period of perfect knowledge, the Target slot is set as follows.
where Source is the value in the Source slot at the end of the period of perfect knowledge, C is the recession coefficient, t is the elapsed time of the forecast period, and T is the total time from the end of the period of perfect knowledge to the end of the forecast period.
If the Source at the end of the period of perfect knowledge is negative, the Target at that timestep is exactly equal to the Source. However, the Source used in the recession equation, is the last positive value for Source. In the event that there is not a positive value for the Source, RiverWare issues a warning, and all values for Hydrologic Inflow Forecast within the forecast period will be set to the Minimum Forecasted Flow.
A value for the Source slot must be known at every timestep during the run. If the Target values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source are not entered past the end of the run, the Target values for these timesteps are assumed to be zero.
* Coefficient and Exponent
On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Infow is used to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow. If the Forecast Period methods is not selected, the input Deterministic Incremental Hydrologic Inflow slot is used to forecast and set the Hydrologic Inflow series slot.
Slots Specific to This Method
Hydrologic Inflow
Type: SeriesSlot
Units: FLOW
Description: flow into the reservoir that is not gaged and/or does not enter through the main channel.
Information:  
I/O: Output only
Hydrologic Inflow Adjust
Type: SeriesSlot
Units: FLOW
Description: optional adjustment that can be made to the calculated Hydrologic Inflow
Information:  
I/O: Optional; the Hydrologic Inflow Adjust may either be input by the user or it is set to zero if it is not input.
Hydrologic Inflow Net
Type: SeriesSlot
Units: FLOW
Description: Sum of Hydrologic Inflow and Hydrologic Inflow Adjust
Information:  
I/O: Output only
Forecast Inflow Parameters
Type: Table
Units: None
Description: Table slot that contains four parameters used in the forecast inflow method. The first row contains the values for the increasing hydrograph, the second row contains values for the decreasing hydrograph. The first column contains coefficients, the second column contains exponents.
Information: 2X2 table
I/O: Input only
Deterministic Incremental Hydrologic Inflow
Type: SeriesSlot
Units: FLOW
Description: This slots holds a timeseries of the actual Hydrologic Inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow slot.
Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Full Run method is selected, values from the Incremental Hydrologic Inflow slot will be copied into this slot prior to the forecast. This slot is not used (i.e. inputs are ignored) if the Forecast Period method is selected.
I/O: Input or set to the values in the Incremental Hydrologic Inflow slot
Forecast Period
Type: Table
Units: None
Description: Number of timesteps, not including the current timestep, that the inflow hydrograph will be adjusted.
Information:  
I/O: Input only
This method uses different slots and sets different slots if the Forecast Period is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If Forecast Period is NOT selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow slot (Target). If it is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Infow (Source) to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow (Target). The subbasin then computes the incremental flow and sets the value on the Hydrologic Inflow slot. The following description uses the Source/Target terminology to describe the method.
The method works as follows: on the current timestep, the Target is set equal to the Source. The method then loops through the remaining timesteps in the forecast period and sets the Target using the following formula starting at i = 1, as follows:
where KIi is the Source at timestep i, HIi is the Target at timestep i. The counter i represents the timestep beyond the current timestep. For example, i = 1 is the next timestep, i = 2 is the current timestep + 2 timesteps, etc. The coefficient, C, and exponent, E, are the values in the Forecast Inflow Parameters slot. If(Source(i-1) <= Source(i)), E and C are the increasing (rising) values. Otherwise, E and C are the decreasing (falling) values.
In the preceding formula, there is a mathematical problem if KIi-1 is zero. In this situation, the Target at that index is set to the known inflow at that index. This allows the simulation to continue with reasonable values for the Target.
At the end of the method, the Hydrologic Inflow Net is set equal to the Hydrologic Inflow plus the Hydrologic Inflow Adjust for each timestep in the loop. This allows the rules to be able to use the Hydrologic Inflow Net before the object dispatches (such as in the GetMaxOutflowGivenInflow() function).
A value for the Source slot must be known at every timestep during the run. If forecasted Hydrologic Inflow values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source are not entered past the end of the run, the Hydrologic Inflows for these timesteps are assumed to be zero.
Incremental Hydrologic Inflows on Subbasin
The Incremental Hydrologic Inflows on Subbasin category contains methods used to specify that the reservoir has cumulative inflows that must be disaggregated into incremental inflows. There are two methods: Full Run and Forecast Period. The disaggregation is actually executed from the computation subbasin containing the reservoir. See “Incremental Local Inflows” for details.
When the Input Hydrologic Inflow method is selected in the Hydrologic Inflow category, the Full Run becomes available. The method contains two slots: Cumulative Hydrologic Inflow and Incremental Hydrologic Inflow for the reservoir. Data must be input into the Cumulative Hydrologic Inflow slots. The computational subbasin will execute the Compute Full Run Incremental Hydrologic Inflows method and set the Incremental Hydrologic Inflow slots as input. Setting the Incremental Hydrologic Inflow slots as input prevents the slot values from being cleared in future model runs when the subbasin is disabled. The computational subbasin will first check that Full Run method has been selected on all reservoirs and reservoirs in the basin. During the model run, when the reservoir dispatches, the Full Run method will copy the value in the Incremental Hydrologic Inflow slot and set the Hydrologic Inflow slot.
When a forecast method is selected in the Generate Forecast Hydrology methods on the reservoir, a new method will be available within the Incremental Hydrologic Inflows on Subbasin category: Forecast Period on the reservoir. This method will contain the Cumulative Hydrologic Inflow slot. When this method is selected the computational subbasin will execute the Compute Forecast Period Incremental Hydrologic Inflows method and set the Hydrologic Inflow slots.
* None
This method is the default for the Incremental Hydrologic Inflows on Subbasin category and should be selected when hydrologic inflow data is not cumulative or the computation of incremental hydrologic inflows is not desired. There are no slots specifically associated with this method.
* Full Run
The Full Run method is available from the Incremental Hydrologic Inflows on Subbasin category on the reservoirs (storage reservoir, level power reservoir, and sloped power reservoir,). This method is only available if the Input Hydrologic Inflow method is selected in the Hydrologic Inflow category. This method holds the slots necessary for the computation of incremental hydrologic inflows that is performed by the computational subbasin. The method contains two slots: Cumulative Hydrologic Inflow and Incremental Hydrologic Inflow. These slots will be accessed by the computational subbasin when executing the Compute Full Run Incremental Local Inflows method. The computational subbasin uses input Cumulative Hydrologic Inflow values to calculate and set the Incremental Hydrologic Inflow slot. See “Compute Full Run Incremental Local Inflows method” in the computational subbasin’s Incremental Local Inflows documentation for details. The Full Run method on the reservoir copies the results of the calculation in the Incremental Hydrologic Inflow slot values over to the Hydrologic Inflow series slot.
Slots Specific to This Method
Cumulative Hydrologic Inflow
Type: SeriesSlot
Units: Flow
Description: The cumulative hydrologic inflow to the reservoir
Information: Hydrologic inflow is cumulative either (1) between headwater control points and the first reservoir in the river system and also throughout the system between two reservoirs, or (2) throughout the entire river system.
I/O: Required Input
Incremental Hydrologic Inflow
Type: SeriesSlot
Units: Flow
Description: The incremental hydrologic inflow to the reservoir
Information: This slot is set by the Calculate Incremental Flows method on the computational subbasin and represents the actual hydrologic inflow to the reservoir. If a Generate Forecast Hydrology method is selected, the Deterministic Incremental Hydrologic Inflow slot will be set to the values in this slot.
I/O: Computed and set with the Input flag
* Forecast Period
The Forecast Period method is available from the Incremental Hydrologic Inflows on Subbasin category on the reservoir. This method is only available if the Forecast Hydrologic Inflows method is selected in the Hydrologic Inflow category and one of the forecasting methods (i.e. Geometric Recession, Exponential Recession, or Coefficient and Exponent) is selected in the Generate Forecast Hydrology category. If this method is selected, but the reservoir is not part of a subbasin with the appropriate methods selected, an error will be issued. The method contains two slots: Cumulative Hydrologic Inflow and Temp Forecasted Cumulative Hydrologic Inflow. These slots will be accessed by the computational subbasin when executing the Compute Forecast Period Incremental Hydrologic Inflows method. The computational subbasin will use the user input Cumulative Hydrologic Inflow value to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow slot. It then uses this temporary value in its calculation of the incremental flows. The final result of this method (forecasted incremental hydrologic inflows) is set on the slot Hydrologic Inflow Forecast for each timestep in the forecast period.
Note:  Hydrologic Inflow is set instead if the Coefficient and Exponent method is selected). See “Compute Forecast Period Incremental Local Inflows” in the computational subbasin’s Incremental Local Inflows documentation for details.
Slots Specific to This Method
Cumulative Hydrologic Inflow
Type: SeriesSlot
Units: Flow
Description: The cumulative hydrologic inflow to the reservoir
Information: Hydrologic inflow is cumulative either (1) between headwater control points and the first reservoir in the river system and also throughout the system between two reservoirs, or (2) throughout the entire river system.
I/O: Required Input
Temp Forecasted Cumulative Hydrologic Inflow
Type: SeriesSlot
Units: flow
Description: the forecasted cumulative Hydrologic inflow to the control point
Information: This slot is set by the selected Generate Forecast Hydrologic Inflows method on the control point as called from the computational subbasin. It represents the cumulative Hydrologic inflow to the control point forecasted throughout the forecast period. This slot is a temporary slot and is not saved with the model file.
I/O: Output only
Slope Storage
Slope Power Reservoirs contain a portion of their Storage in the wedge created by the sloping water surface. The following user method calls to additional methods that perform the mass balance calculations in Slope Power Reservoirs for all dispatch methods.
* None
This is the default method in the Slope Storage category. It performs no calculations and has no slots associated with it. An error is posted if this method is selected. The user is required to choose Storage Segments.
* Storage Segments
The user has the option of dividing a reservoir into longitudinal segments. This is most useful for large reservoirs and relatively small timesteps, where the propagation of a change in flow takes more than one timestep to travel the length of the reservoir. Reservoir segments are numbered in the upstream direction, with the first segment being the farthest downstream.
Figure 24.3   
The Storage Segments method does not perform any calculations. Instead, this method makes visible the new method category, Slope Storage Coefficients. You then have the option of selecting one of two methods, Impulse Response method or Weighting Coefficients method, to calculate the segment storage. But the Storage Segments method requires you to specify the number of segments in the reservoir and provide the headwater, backwater, and storage relationships for the Segments in Reservoir that are used by the Slope Storage Coefficient methods to calculate segment storage. Also, you can specify the Segment Storage Adjustment based on the backwater elevation and change in backwater elevation.
See the following topics for details:
Slots Specific to This Method
Segments in Reservoir
Type: Table
Units: NONE
Description: number of longitudinal segments in the reservoir
Information: Multiple segments are useful for large reservoirs and relatively small timesteps, where the propagation of a change in flow takes more than one timestep to travel the length of the reservoir. Reservoir segments are numbered in the upstream direction, with the first segment being the farthest downstream.
I/O: Required input
Profile Storage Table
Type: Table
Units: LENGTH vs. LENGTH vs. VOLUME
Description: total storage of each segment corresponding to a headwater and a backwater elevation
Information: 3-D table containing data relating headwater and backwater elevations to segment storage. Each reservoir segment has its own three-column block of data. Data must be entered into these tables in a structured way in order for the 3-dimensional table interpolator to work correctly. Headwater must be input in blocks of the same values, increasing down the table. For every headwater elevation block in column 1, backwater values should be listed in increasing order in column 2, with the corresponding segment storage in column 3. Following is a sample table for a one-segment reservoir.
 
Headwater
Backwater
Storage
500
500
800
500
510
805
500
520
810
550
550
900
550
560
905
550
570
910
600
600
1000
600
610
1010
600
620
1020
I/O: Required input
Segment Storage
Type: Aggregate Series
Units: Volume
Description: This slot holds the storage in each segment of the reservoir. The total storage in the reservoir is equal to the sum of the segment storage (within convergence).
Information: There will be one column for each segment. The number of columns is automatically adjusted at run start.
I/O: Output only
Segment Storage Adjustment
Type: Table Slot
Units: Length, Length Volume
Description: This 3D table will have one 3 column block for each segment in the reservoir. The first column of the block is the upstream elevation of the segment, the second column is the change in elevation from the previous timestep, and the third column is the storage adjustment factor.
Information: The table must have 1 block for each segment. This will be adjusted at run start. It can have NaNs at the bottom of the table. If there is no data in first row for a segment, then no adjustment will be applied to that segment.The correction can be either positive or negative. Following is a sample correction table. The correction for Segment 1 is not applied (i.e. always zero), but Segment 2 does have a correction factor.
 
Segment 1
Segment 2
Upstream
Elevation 1 ft
Upstream Elevation Change 1 ft
Storage Adjustment 1 cfs-day
Upstream
Elevation 2
ft
Upstream Elevation Change 2
ft
Storage Adjustment 2 cfs-day
NaN
NaN
NaN
550
-4
10
NaN
NaN
NaN
550
-2
2
NaN
NaN
NaN
550
0
0
NaN
NaN
NaN
550
2
-2
NaN
NaN
NaN
550
4
-11
NaN
NaN
NaN
575
-4
9
NaN
NaN
NaN
575
-2
2
NaN
NaN
NaN
575
0
0
NaN
NaN
NaN
575
2
-3
NaN
NaN
NaN
575
4
-12
I/O: Input only.
Slope Storage Coefficients
Slope Power Reservoirs contain a portion of their Storage in the wedge(s) created by the sloping water surface. The visibility of the Slope Storage Coefficients is dependent upon selecting the Storage Segments from the Slope Storage. The Slope Storage Coefficients contains two methods: Impulse Response and Weighting Coefficients. Both methods are iterative and based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage on the reservoirs.
* Impulse Response
This is the default method.
An iterative method based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage on reservoirs. The data tables are based on a steady state backwater profile. The four mass balance variables are Inflow, Outflow, Storage and Pool Elevation (Pool Elevation refers to the elevation at the dam, also called the headwater elevation). Two of these must be known to calculate the other two. The method solves for Storage and either Inflow, Outflow, or Pool Elevation by iterating until a calculated mass balance storage agrees with a Storage value looked up from tables created from the steady flow, headwater elevation, backwater elevation, and storage relationships. If both Inflow and Outflow are known, a convergence algorithm that is detailed Reservoir Convergence is used to calculate storage. See “Reservoir Convergence” for details.
First, a mass balance storage is calculated with known and estimated parameters (Inflow, Outflow, Previous Storage). Then, a second Storage value is found with a table look up.
Flow Param is the steady flow used to determine headwater, backwater, and storage from the relationships given by the data tables. It is calculated with the following equation:
where i is the reservoir segment. K(i) is a calibration parameter dependent on previous Storage. segInflow(i) and segOuflow(i) are the calculated inflow and outflow of each segment and are local variables. Weighting factors, a(i) and b(i), determine to what extent Flow Param depends on the inflow and outflow of the segment.
SegInflow and segOutflow are calculated using reservoir inflows and outflows at current and previous timesteps weighted with impulse response coefficients (IRC). IRCs represent the effect of current and previous flow values on the current segment flow. IRCs are specified by the user in the Profile Coeff Table. For each IRC, a flow fraction is calculated equal to a flow value multiplied by the IRC. The first IRC is multiplied by the current Inflow (or Outflow) value, and each additional IRC is multiplied by a previous flow value. For cases where current or previous flow values are not known, the most recent flow estimate is used on the first iteration. SegInflow (or segOutflow) is equal to the sum of these flow fractions.
Flow Param and either a given or estimated Pool Elevation (headwater) are then used to look up a backwater elevation on the Profile Backwater Table. Then a storage value is looked up from the Profile Storage Table using the headwater and backwater elevations to get the segment storage. Then a 3 dimensional lookup is performed on the Segment Storage Adjustment table slot. It uses the computed backwater elevation and the change in backwater elevation (current computed value minus previous value) to get the storage adjustment. The segment storage is adjusted by this value and stored in an array. After the total storage is found, the Slope Storage method sets the Segment Storage from the array values.
This total storage value is compared to the calculated mass balance storage. The method iterates, by adjusting the unknown parameter (Inflow, Outflow, or Pool Elevation), until the two storage values are within convergence.
Local inflows contributing to wedge storage are represented in the slot Prof Hydro Inflow. If not specified by user, Prof Hydro Inflow is set to the value of Hydrologic Inflow Net. Setting Prof Hydro Inflow gives the user an opportunity to specify part of the local inflows contributing to the wedge and part to the level storage. The amount of Prof Hydro Inflow contributing to each reservoir segment is controlled by the wc parameter, which is specified in the Profile Coeff Table. The Prof Hydro Inflow is multiplied by wc before it is added to segInflow.
Slots Specific to This Method
Flow Param
Type: Agg Series Slot
Units: FLOW
Description: flow which produces a steady state profile to give correct headwater, backwater, and storage relationships for each segment
Information: This slot contains a column for each reservoir segment. A user-specified value overrides the formula calculation.
I/O: Optional; if not set by user, it is calculated with segment inflow, segment outflow, and weighting coefficients (see above description).
Prof Hydro Inflow
Type: Agg Series Slot
Units: FLOW
Description: local inflow to a slope power reservoir that contributes to the wedge storage
Information: Prof Hydro Inflow is multiplied by the wc parameter before being added to segInflow. It contains a column for each reservoir segment.
I/O: Optional; if not set by the user, it will be set to the Hydrologic Inflow at that timestep. If it is not set by the user and None is the selected method for Hydrologic Inflow, it defaults to zero.
Intermed Backwater Elev
Type: Table Series
Units: LENGTH
Description: the water surface elevation at the upstream end of each reservoir segment
Information: Contains a column for each reservoir segment.
I/O: Output only
Profile Coeff Table
Type: Table
Units: NONE
Description: coefficients used in determining a flow parameter for each segment
Information: Contains a, b, wc, and impulse response coefficients for each reservoir segment. a and b are coefficients weighting the contribution of segment inflow and segment outflow to the calculation of Flow Param. The parameter, wc, is a coefficient adjusting the amount of Prof Hydro Inflow contributing to the segment inflow. Impulse response coefficients are used to calculate flow fractions that are summed to determine the segment inflow or segment outflow. The first coefficient is multiplied by a current flow value and the subsequent coefficients are multiplied by previous flow values to calculate flow fractions. The sum of the impulse response coefficients for each segment usually equal 1.0. Following is a sample Profile Coeff Table.
I/O: Required input
 
 
Segment 1
Segment 2
a
0.7
2.0
b
1.3
0.0
wc
0.5
0.0
Impulse Response Coefficients
0.5
1.0
 
0.5
0.0
Profile Backwater Table
Type: Table
Units: FLOW vs. LENGTH vs. LENGTH
Description: backwater elevation of each segment corresponding to a flow parameter and a headwater elevation
Information: 3-D table containing data relating a steady flow (Flow Param) to a headwater elevation and a backwater elevation. Each reservoir segment has its own three-column block of data. Data must be entered into these tables in a structured way in order for the 3-dimensional table interpolator to work correctly. Flow Param must be input in blocks of the same values, increasing down the table. For every Flow Param block in column 1, headwater values should be listed in increasing order in column 2, with the corresponding backwater in column 3. Following is a sample table for a one-segment reservoir.
 
Flow Param
Headwater
Backwater
100
500
505
100
550
555
100
600
605
200
500
510
200
550
560
200
600
610
300
500
515
300
550
565
300
600
615
I/O: Required input
Profile K Coeff Table
Type: Table
Units: VOLUME vs. NONE
Description: K parameter associated with a change in storage from one and two previous timesteps
Information: Allows the user to adjust the K parameter, a calibration factor used in calculating Flow Param. Its value is set depending on whether Storage is suddenly increasing or decreasing. This table contains two columns for each reservoir segment. The first column is a delta Storage value representing the change in storage between one and two previous timesteps. Delta storage can be either positive or negative. The second column is the K value corresponding to a given delta storage.
I/O: Required input
* Weighting Coefficients
The user has the option of dividing a reservoir into longitudinal segments and further dividing those segments into longitudinal partitions. This is most useful for large reservoirs and relatively small timesteps, where the propagation of a change in flow takes more than one timestep to travel the length of the reservoir. Reservoir partitions are numbered in the upstream direction, with the first partition being the farthest downstream. Several slots require or provide information for each reservoir partition.
This is an iterative method based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage of the partition. The four mass balance dispatch variables are Inflow, Outflow, Storage and Pool Elevation (Pool Elevation refers to the elevation at the dam, also called the headwater elevation). Two of these must be known to calculate the other two. The method solves for Storage and either Inflow, Outflow, or Pool Elevation by iterating until a calculated mass balance storage agrees with a Storage value looked up from tables created from the steady flow, headwater elevation, backwater elevation, and storage relationships for the segments. Partitions are not included in the storage iterations. If both Inflow and Outflow are known, a convergence algorithm that is detailed Reservoir Convergence is used to calculate storage. See “Reservoir Convergence” for details.
The Weighting Coefficients method performs a check at the beginning of the run to make sure the user has populated the Partition Profile Coef Table with input. The user has the option of specifying the Partition Flow Parameters or calculating it with the weighting coefficients. If calculated, the Partition Flow Parameter at each partition is a function of the weighting coefficients particular to that partition as input by the user in the Partition Profile Coef Table. The Partition Flow Parameters slot is set to the result of the below equation, which describes how the flow parameter at each partition is calculated.
The partition flow parameter Pj(t) is calculated at each partition j, where the time t ranges from the current timestep to some previous timestep n as follows:
where K is the value obtained by looking up the previous change in storage (i.e., Storage[t-1] minus Storage[t‑2]) on the appropriate segment’s columns of the Profile K Coeff Table. I(t) is the inflow to the reservoir; ajt is the coefficient weighting the contribution of inflow at the partition j at timestep t. H(t) is the hydrological inflow; bjt is the coefficient weighting contribution of hydrological inflow at partition j at timestep t. The calculation for the Partition Flow Parameter uses the Hydrologic Inflow Net if a hydrologic inflow exists. If there is no hydrologic inflow, it is not included in the calculations of the Partition Flow Parameter. I2(t) corresponds to the Inflow 2; cjt is its weighting coefficient similar to a and b. O(t) is the outflow from the reservoir; ejt is its weighting coefficient. Finally djt is the weighting coefficient corresponding to previous timestep’s Partition Flow Parameter, Pjt. The number of previous timesteps included in the calculation for the Partition Flow Parameter is determined by the user as the number of rows appended in the Partition Profile Coef Table (that contains the weighting coefficients) by the user.
See the following topics for details:
Figure 24.4 can be used to visualize the order in which the partitions will solve for their BW elevations.
Figure 24.4   
The partitions are the areas between the breaks as denoted above. For the first partition, P1, the headwater at the dam will be utilized in conjunction with the flow parameter calculated for P1 in a 3D table interpolation from the user input Partition B W Table to find the BW elevation (at the upstream end) of P1. The headwater elevation at the dam PE/HW1 will also be used to calculate the BWP1, BWP2 and BWP3. P3 also constitutes the end of segment 1. Thus, HW2 is set to BWP3.Then, HW2 is used to calculate BWP4. HW2 will be used to find the BW elevations for each partition in segment 2. The BW elevation of the last partition in a segment is the HW in the next segment and will be used to calculate all the BW elevations of all the partitions in the segment.
The storage calculations of the segments follow: 1) The backwater elevation for segment 1, BW1 is set to the BWP3 2) Likewise, the backwater elevation for segment 2, BW2 is set to the BWP5. The storage for segment 1 is calculated using the headwater at the dam HW1 and BW1 via a 3D table interpolation from the Profile Storage Table. Then a 3 dimensional lookup is performed on the Segment Storage Adjustment table slot. It uses the computed backwater elevation BW1, and the change in backwater elevation (current computed value, BW1, minus previous value, BW1(t-1)) to get the storage adjustment. The segment storage is adjusted by this value and is stored in an array.
The storage for segment 2 is calculated using HW2 and BW2 via a 3D table interpolation from the Profile Storage Table. The Segment Storage Adjustment is applied for this segment and the Segment Storage is stashed in the array. The method then sums the storages of each segment. After the total storage is found, the function returns to the Slope Storage method and sets the Segment Storage from the array values and the iteration continues as described above.
See the following topics for details:
Slots Specific to This Method
Partitions per Segment
Type: Table
Units: None
Description: Table Slot that contains the number of partitions in each longitudinal segment of Slope Power Reservoir
Information: The number of each partitions in each segment can be input individually for that particular segment. If the user does not input the number of partitions in each segment or an individual segment, the number of partitions defaults to 0. The number of partitions specified must be an integer.
I/O: Input Optional
Partition Profile Coef Table
Type: Table
Units: None
Description: Table Slot that contains the user specified weighting coefficients for each partition to be used in calculating the Partition Flow Parameters (see “Partition Flow Parameters”).
Information: The number of columns in this slot is determined by the total number of partitions as specified in the Partitions per Segment slot. Each partition will generate five columns for the weighting coefficients for that partition, which correspond to: Inflow, Hydrologic Inflow, Inflow2, Partition Flow Parameters at earlier time steps, and Outflow from the reservoir. The number of rows corresponds to the number of previous time steps the user wishes to use in calculating the Partition Flow Parameter. See “Partitions per Segment” for details.
Following is a sample Partition Profile Coef Table for one partition. The coefficient D should be zero for t. Otherwise, it will use previously computed Partition Flow Parameters for the current timestep which are from a previous iteration and would not be meaningful.
I/O: Required Input
 
Parameter
A1
B1
C1
D1
E1
 
Multiplier
Inflow
Hydrologic Inflow
Inflow 2
Partition Flow Parameter
Outflow
Time
t
0.11
0.07
-0.061
0
0.061
t-1
0.07
0.02
0
0.66
0
t-2
0
0.045
0
0
0
Partition BW Table
Type: Table
Units: Flow vs. Length vs. Length
Description: Backwater elevation of each segment corresponding to a flow parameter and a headwater elevation.
Information: 3-D table containing data relating a steady flow to a headwater elevation and a backwater elevation. Each partition has its own three column block of data. Data must be entered into the table in a structured manner so that the 3-D table interpolation will work correctly. Flow parameters must be input in blocks of the same values, increasing down the table. For every flow parameter block in column 1 of the partition, headwater values should be listed in increasing order in column 2, with the corresponding backwater elevation in column 3. Following is a sample table for one partition.
I/O: Required Input
 
Flow Param 1
Headwater 1
Backwater 1
100
500
505
100
550
555
100
600
605
200
500
510
200
550
560
200
600
610
300
500
515
300
550
565
300
600
615
Partition BW Table Auto Max
Type: Table
Units: Flow vs Length for each Partition
Description: Automatically generated table relating Flow Parameter to the maximum possible Headwater.
Information: This table is created at the beginning of the run by taking each Flow Param from the Partition BW Table and finding the largest Headwater. This is done for each partition. This table is then used in the iterative slope storage computations (like RPL functions or GetMaxOutGivenInflow) as a bound. Within these computations, if the Flow Parameter or Headwater exceeds the table values, then the values are set to the maximum and the iteration continues. This allows intermediate computations to succeed when they would have otherwise stopped the run. An error is issued if the final result is outside the table limits.
I/O: Output - Read only
Partition BW Table Auto Min
Type: Table
Units: Flow vs Length for each Partition
Description: Automatically generated table relating Flow Parameter to the minimum possible Headwater.
Information: This table is created at the beginning of the run by taking each Flow Param from the Partition BW Table and finding the smallest Headwater. This is done for each partition. This table is then used in the iterative slope storage computations (like RPL functions or GetMaxOutGivenInflow) as a bound. Within these computations, if the Flow Parameter or Headwater is below the table values, then the values are set to the minimum and the iteration continues. This allows intermediate computations to succeed when they would have otherwise stopped the run. An error is issued if the final result is outside the table limits.
I/O: Output - Read only
Partition Flow Parameters
Type: Agg Series Slot
Units: Flow
Description: Flow that produces a steady state profile to give correct headwater and backwater relationships for each partition.
Information: This slot contains a column for each partition as set in the Partitions per Segment Slot. See “Partitions per Segment”.
I/O: Optional, if not input by user, will be calculated using Inflow from and upstream dam, Hydrologic Inflow, Inflow2, previous Partition Flow Parameters, Outflow, and the user specified weighting coefficients from the Partition Profile Coef Table. See “Partition Profile Coef Table”.
Note:  The column labels of this slot can be modified to be more intuitive.
Partition BW Elevation
Type: Table Series
Units: Length
Description: Backwater elevation at each partition
Information: This slot contains a column for each partition. It is solved through a 3-D table interpolation between the Partition Flow Parameters slot and the Partition B W Table. See “Partition Flow Parameters” and “Partition BW Table”.
Note:  The column labels of this slot can be modified to be more intuitive.
I/O: Output only
Profile K Coeff Table
Type: Table
Units: VOLUME vs. NONE
Description: K parameter associated with a change in storage from one (t-1) and two (t-2) previous timesteps.
Information: Allows the user to adjust the K parameter, a calibration factor used in calculating Flow Param. Its value is set depending on whether Storage is suddenly increasing or decreasing. This table contains two columns for each reservoir segment. The first column is a delta Storage value representing the change in storage between one and two previous timesteps. Delta storage can be either positive or negative. The second column is the K value corresponding to a given delta storage.
I/O: Required input
Target Slope Storage
Used to solve target operations. The methods solve a target Storage used for computing a lumped mass balance over several time periods.
* None
This is the default method which performs no calculations. It is only used if no target operations are being executed. There are no slots associated with this method.
* Lumped Mass Balance
This method must be selected whenever a target operation is performed on a reservoir. It is only available when the Storage Segments method is selected. The method finds a Storage value at the target time based on Outflow and Pool Elevation using an iterative routine similar to one of the Slope Storage Coefficients methods. This storage value is used to compute a lumped mass balance across the target operation time range. There are no slots specifically associated with this method. See “Storage Segments” and “Slope Storage Coefficients” for details.
Evaporation and Precipitation
The methods in this category can be used on all types of reservoir objects. See “Evaporation and Precipitation”.
Evap and Precip Rate Specification
The methods in this category can be used on all types of reservoir objects. See “Evap and Precip Rate Specification”.
Low Flow Releases
This category is only used to add the slots necessary for low flow release calculations. These slots are generally used by a RPL function (called MeetLowFlowRequirement) to compute the low flow releases necessary to meet the low flow requirements on control point objects.
* None
This method performs no calculations and adds no slots.
* Enable Low Flow Releases
This method performs no calculations. It simply adds the Low Flow Release slot and Maximum Low Flow Delivery Rate slot.
Slots Specific to This Method
Low Flow Release
Type: Series Slot
Units: flow
Description: The portion of the Outflow that is intended to meet a low flow requirement
Information: This slot is normally computed by a RPL function (MeetLowFlowRequirement) that computes the low flow releases necessary to meet the low flow requirements on control point objects.
I/O: Usually set by a rule
Maximum Low Flow Delivery Rate
Type: Periodic Slot
Units: flow
Description: The maximum low flow delivery rate for the reservoir
Information: This value is used by the RPL function (MeetLowFlowRequirement) that determines the low flow releases from each reservoir. Low flow releases will be limited to this value.
I/O: Required input
Target Operation
The Target Operation category is used to enable algorithms which calculate different lumped mass balance algorithms required by Target Operations (see TARGET flag). None of the methods exist as separate functions, meaning that the target operation algorithms themselves must be used in conjunction with the other mass balance algorithms. It is important to note that either the Simple Target or Lagged Target method must be selected if a target operation is set on the Reservoir.
* None
This is the default method in the Target Operation category. It performs no calculations. It may only be selected if a Target Operation is not performed on the object. There are no slots specifically associated with this method.
* Simple Target
The Simple Target method distributes the required Inflow or Outflow evenly among all available timesteps. The total flow is divided among all the non-input timesteps included within the Target Operation to meet the Target. For most cases with a target operation, this is the desired behavior. There are no slots specifically associated with this method.
* Lagged Target
The Lagged Target method should be used when there are lag times in the upstream reaches. When Inflows are known, this method solves for the same solution as the Simple Target method. When Outflows are known, this method distributes the required Inflow so a steady Outflow occurs from an upstream, non-integer timestep lagged, reservoir. To distribute Inflows, the Total Lag of Upstream Reaches and Outflow from Upstream Reservoir are used to calculate the required Inflows to the current Reservoir. These required Inflows must meet the Target and result in steady Outflow from the upstream Reservoir. The solution yields a perturbed Inflow at the first undetermined timestep of the Target Operation, followed by steady Inflows for the remainder of the undetermined target times. This solution removes the numerical instability which would be produced in the Outflow of the upstream reservoir using the Simple Target method.
Slots Specific to This Method
Outflow from Upstream Reservoir
Type: SeriesSlot
Units: FLOW
Description: outflow from the upstream reservoir
Information:  
I/O: Required input
Total Lag of Upstream Reaches
Type: Table
Units: TIME
Description: combined lag time of reaches between the current and the upstream reservoir
Information:  
I/O: Required input
Sediment
The Sediment category is used to enable algorithms which adjust reservoir Elevation Volume and possibly Elevation Area relationships in response to sediment inflow.
* None
The None method is the default for the Sediment category. No calculations are performed in this method. There are no slots specifically associated with this method.
* CRSS Sediment
The CRSS Sediment method is designed based on sedimentation calculations performed by the US Bureau of Reclamation’s Colorado River Simulation System (CRSS) model. This function distributes reservoir sediment based on the Empirical Area Reduction Method. Simply put, sediment is distributed through an iterative process in which a total volume loss due to sedimentation is calculated based on an assumed top of sediment elevation.
Slots Specific to This Method
Elevation Area Table
Type: Table
Units: LENGTH vs. AREA
Description: generated elevation area table for calculating sediment distribution
Information:  
I/O: Output only
Elevation Vol Area Table Increment
Type: Table
Units: LENGTH
Description: elevation increments for the generated Elevation Volume and Elevation Area Tables
Information: This table often needs more precise elevation increments than the sediment calculation tables.
I/O: Required input
Initial Elevation Area Table
Type: Table
Units: LENGTH vs. AREA
Description: initial elevation area table
Information: Provided for comparison with initial data
I/O: Output only
Initial Elevation Volume Table
Type: Table
Units: LENGTH vs. VOLUME
Description: initial elevation volume table
Information: provided for comparison with initial data
I/O: Output only
Sediment Distribution Coefficients
Type: Table
Units: NOUNITS
Description: parameters for empirical equation governing sediment distribution
Information:  
I/O: Required input
Sediment Inflow
Type: SeriesSlot
Units: VOLUME
Description: volume of sediment flowing into the reservoir at each timestep
Information:  
I/O: Required input
User Input Elev Area Data
Type: Table
Units: LENGTH vs. AREA
Description: initial Elevation Area relationship
Information: These values are initial conditions for the first timestep of the simulation. The elevation increments will be used for all sedimentation calculations.
I/O: Required input
This volume loss is recalculated (with a new top of sediment elevation) at each iteration, until the calculated volume loss is equal to the actual volume of sediment inflow (within a specified convergence). The total volume loss calculation consists of a somewhat complicated algorithm utilizing elevation/area and elevation/volume data for the reservoir and an empirical equation. The empirical equation uses user specified parameters which relate the portion of total area that is taken up by sediment to the Pool Elevation. The empirical equation basically gives the shape of the accumulated sediment. The empirical equation has a close relationship to the elevation volume and elevation area characteristics of a given reservoir. The elevation/area and elevation/volume data is stored in a polynomial coefficient table, which gets recalculated after each timestep. The actual Elevation Area, Elevation Volume tables used by RiverWare are adjusted at the end of the sedimentation code (but prior to the hydrologic simulation).
Caution:  Take care when creating input data for this method. The close relationship between the empirical area reduction equation and the shape of the reservoir (reflected in the User Input Elev Area Data) makes the method fairly sensitive to input data. When choosing empirical parameters for this method, physical characteristics of the given reservoir need to be considered. The Bureau of Reclamation currently considers 4 possible types of reservoirs, with each type having a corresponding set of empirical area reduction parameters. The reservoir type classification is based on the shape of the Reservoir, the manner in which the reservoir is to be operated, and the size of the sediment particles to be deposited in the reservoir. The main emphasis is on the shape. Tables are used to classify the reservoirs based on these characteristics. Once the type has been established, the parameter values for that type can also be taken from tables in the literature. An incorrect set of parameters for a given reservoir will lead to an inability to achieve convergence on the sediment distribution within this method.
Bank Storage
The methods in this category can be used on all types of reservoir objects. See “Bank Storage”.
Diversion From Reservoir
The methods in this category can be used on all types of reservoir objects. See “Diversion from Reservoir”.
Diversion Power
The methods in this category can be used on all types of reservoir objects. See “Diversion Power”.
Diversion Tailwater
The methods in this category can be used on all types of reservoir objects. See “Diversion Tailwater”.
Diversion Power Bypass
The methods in this category can be used on all types of reservoir objects. See “Diversion Power Bypass”.
Seepage
The methods in this category can be used on all types of reservoir objects. See “Seepage”.
Operating Levels
The methods in this category can be used on all types of reservoir objects. See “Operating Levels”.
Conditional Operating Levels
The methods in this category can be used on all types of reservoir objects. See “Conditional Operating Levels”.
Startup
The methods in this category can be used on all types of power reservoir objects. See “Startup”.
Head Loss
The methods in this category can be used on all types of power reservoir objects. See “Head Loss”.
Cavitation
The methods in this category can be used on all types of power reservoir objects. See “Cavitation”.
Avoidance Zones
The methods in this category can be used on all types of power reservoir objects. See “Avoidance Zones”.
Frequency Regulation
The methods in this category can be used on all types of power reservoir objects. See “Frequency Regulation”.
Dispatch Methods
* solveMB_givenInflowHW
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow and Energy.
Required Knowns
• Inflow
Required Unknowns
• Outflow
• Energy
• Storage
First, this method checks if the Pool Elevation at the current timestep is a Target flag. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve. The storage corresponding to a flat pool elevation is found as a seed value for the calculations via the Elevation Volume table. Since this is a Slope Power Reservoir, this storage is not the actual storage in the reservoir.
If these checks pass, the calculations which depend on the Pool Elevation are done (evaporation and seepage), if selected. The slope storage calculations are then carried out, including the mass balance, as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This is an iterative process between the mass balance, the wedge storage calculation, and the bank storage calculation, if any. Spill and release are then found according to the user selected methods and the following equation:
The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenOutflowHW
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Knowns
• Outflow
Required Unknowns
• Inflow
• Storage
First, this method finds the Storage associated with the known Pool Elevation. It then looks to see if the Pool Elevation at the current timestep is a Target Op. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.
If these checks pass, the Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the given Pool Elevation. The calculations which depend on the Pool Elevation are done (evaporation and seepage), if selected. The slope storage calculations are then carried out, including the mass balance, as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This is an iterative process between the mass balance, the wedge storage calculation, and the bank storage calculation, if any. Spill and release are then found according to the user selected methods and the following equation:
The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenInflowStorage
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow and Energy.
Required Knowns
• Inflow
• Storage
Required Unknowns
• Outflow
• Energy
First, this method checks if the Storage at the current timestep is a Target Op. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.
If these checks pass, the mass balance is carried out as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). The slope storage, mass balance, evaporation, and seepage calculations are combined in an iterative process to arrive at a final value for the Pool Elevation and Outflow. Spill and release are then found according to the user selected methods and the following equation:
The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenOutflowStorage
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Knowns
• Outflow
• Storage
Required Unknowns
• Inflow
First, this method finds the Pool Elevation associated with the known Storage. It then looks to see if the Storage at the current timestep is a Target Op. If so, it begins the target solving process unless the Outflow is flagged Max Capacity. This case will result in an error. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.
If these checks pass, the Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the given Pool Elevation, then the mass balance is carried out as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). Spill and release are then found according to the user selected methods and the following equation:
The energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenInflowOutflow
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Storage (and Pool Elevation).
Required Knowns
• Inflow
• Outflow
Required Unknowns
• Storage
First, this method checks if there are Pool Elevation and Storage values for the previous timestep. If these slots are valid the method continues and checks if a Canal Object is linked. If there is a Canal Object and it has not yet solved, the method exits and waits for the Canal Object to solve.
If these checks pass, Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the mass balance and spill methods using a convergence algorithm. The convergence algorithm used is detailed Reservoir Convergence (see “Reservoir Convergence”). If this flag is not present, then the mass balance is carried out as follows:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This solution is performed with an iterative process. (See note below.) Spill and Release are then found according to the user selected methods and the following equation:
The energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
Note:  In specific cases when Storage is very close to zero, the iterative mass balance solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.
* solveMB_givenEnergyInflow
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow.
Required Knowns
• Inflow
• Energy
Required Unknowns
• Storage
An error will result if this object is linked to a Canal and this dispatch method is executed. A pre-iteration spill calculation and power release calculation are done next. A double iteration is then done with the inner loop iterating evaporation, bankstorage, seepage and mass balance (including slope storage) to solve for Storage, and the outer loop iterating spill and power (tailwater, and power release) to solve for Outflow. (See note below.)
The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
Note:  In specific cases when Storage is very close to zero, the iterative mass balance solve Storage solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.
* solveMB_givenEnergyStorage
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Knowns
• Storage
• Energy
Required Unknowns
• Inflow
Dispatching with this method will result in an error if the Storage is a target or if the Canal Flow slot is linked. Pre-iteration spill and power (tailwater and power release) calculations are done. A double iteration is performed iterating slope storage, seepage and evaporation in the inner loop to solve for Pool Elevation, and mass balance (solving for Inflow), spill, and power (tailwater and power release) in the outer loop to solve for Outflow.
The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenEnergyHW
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Knowns
• Energy
Required Unknowns
• Inflow
• Storage
Dispatching with this method will result in an error if the Pool Elevation is a target or if the Canal Flow slot is linked. This should be avoided by insuring that the knowns/unknowns will not match this dispatch method during the target period or when a Canal is linked. Pre-iteration spill, power (tailwater and power release), evaporation and seepage calculations are calculated. A double iteration is performed, iterating slope storage, seepage and evaporation in the inner loop to solve for Pool Elevation, and mass balance (solving for Inflow), spill, and power (tailwater and power release) in the outer loop to solve for Outflow.
The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* solveMB_givenInflowRelease
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Storage, Pool Elevation, Energy, and Outflow.
Required Knowns
• Inflow
Required Unknowns
• Energy
• Storage
• Outflow
This method exits with an error if Canal Flow slot is linked or if Spill is input.
If the Turbine Release is flagged Unit Values (U), the Unit Turbine Release subslots are summed to calculate and set the Turbine Release slot. If all the Unit Turbine Release slots are NaN, an error is issued. If the Unit Turbine Release slot is not visible because the Unit Power Table method is not selected, an error is issued.
If there is an unregulated spillway crest (because an unregulated spill method is selected) the method computes the upper limit for unregulated spill to prevent spilling too much water to drop the reservoir below the crest. Typically, this limit is computed as the volume of water above the crest converted to a flow. See the Unregulated Spill method for details.
The Outflow is computed as the sum of turbine release and spill inputs (if any) according to the user selected methods and the following equation:
Then the Storage (including wedge storage) is found with the following equation:
This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). The solution is done with an iterative process. (See note below.) Any error in the mass balance added to the unregulated spill slot, if it is being used. This value for unregulated spill may not conform to the unregulated spill table. Care should be exercised when dispatching using this method to insure that the mass balance is maintained.
The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
Note:  In specific cases when Storage is very close to zero, the iterative mass balance solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.
 
Revised: 06/03/2019