skip to main content
Level Power Reservoir
Objects and Methods
Level Power Reservoir
Similar to a Storage Reservoir, except it is able to model power production facilities on the reservoir. This object assumes the reservoir water surface is level.
General Slots
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 details on the convergence algorithm.
I/O: Optional; defaults to 0.0001 if not input.
Diversion
Type: Series
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.
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 Level Power Reservoir 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: Series
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: Series
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. 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.
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.
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 Level 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.
Slots Specific to This Method
None
* 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: Series
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 perform any calculations, specifically. 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 process is 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: Series
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 process is 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.
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.
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 process is 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: Series
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 process is 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 then 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 process is 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 process is performed.
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 process is 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 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 some terms used in the 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 3-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: Series
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.
1. 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.
2. 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.
3. 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.
4. 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 process is 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 process is 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 process is 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 process is 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 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.
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: Series
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.
1. 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.
2. If the Local Info variable Flow is known, the local variable tempflow is set equal to Flow.
3. 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 previous 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 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.
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 above 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: Series
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. This method uses the following process.
1. 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.
2. 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 process.
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.
3. Once the TWaverage has been calculated, it is used to interpolate the empirical constants for the following equation from the Hoover Tailwater Table.
4. Finally,
5. Tailwater Elevation is then set equal to TELEFT (which is converted into internal units).
Following are definitions of some terms used in the 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: Series
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 less 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 18.1 is an example Marginal Value table. Figure 18.1 is a graph of the data.
 
Table 18.1  Marginal Value table
Storage
Marginal Value
20
30
60
26
100
24
Figure 18.1  Marginal Storage Value graph
Assume that the current storage is 39. This method would use 30 as the marginal value for use in the next computation. Assume that the current storage is 41. In this case the 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 as follows:
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 a 1 Hour timestep run, 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.
Table 18.2 is an example Marginal Value Table. Table 18.3 is an example of the resulting Cumulative Storage Value. Figure 18.2 is a graph of the Cumulative Storage Value data.
 
Table 18.2  Marginal Value Table
Storage
Marginal Value
20
30
60
26
100
24
 
Table 18.3  Cumulative Storage Value Table
Anticipated Storage
Cumulative Value
40
1200
80
2240
140
3680
Figure 18.2  Cumulative Storage Value data
 
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.
* Solve Hydrologic Inflow
The Solve Hydrologic Inflow method should be used when the user wishes RiverWare to calculate Hydrologic Inflow. Hydrologic Inflow will be solved for when the Reservoir dispatches. RiverWare will not overwrite any user input values for Hydrologic Inflow. Hydrologic Inflow is only solved for when a value is not input.
Slots Specific to This Method
Hydrologic Inflow
Type: Series
Units: FLOW
Description: flow into the reservoir that is not gauged and/or does not enter through the main channel.
Information:  
I/O: Optional; calculated if not input.
Hydrologic Inflow Adjust
Type: Series
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: Series
Units: FLOW
Description: sum of Hydrologic Inflow and Hydrologic Inflow Adjust
Information:  
I/O: Output only
The following steps are performed in the Solve Hydrologic Inflow method.
First, if Hydrologic Inflow Adjust is not set by the user, it is set equal to zero by RiverWare. Then if Hydrologic Inflow is not set by the user, it is calculated in the dispatch method (see “Dispatch Methods” for detailed explanation). Hydrologic Inflow Net is calculated as the sum of Hydrologic Inflow and Hydrologic Inflow Adjust.
* 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: Series
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: Series
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: Series
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.
* Hydrologic Inflow and Loss
The Hydrologic Inflow and Loss method should be used when the user wishes to have negative inflows taken into account as unidentified losses.
Slots Specific to This Method
Hydrologic Inflow
Type: Series
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: Series
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 set to zero if it is not input. If the Inflow is negative, it is added to Hydrologic Inflow Adjust.
Hydrologic Inflow Net
Type: Series
Units: FLOW
Description: sum of Hydrologic Inflow and Hydrologic Inflow Adjust
Information:  
I/O: Output only
This method calculates Hydrologic Inflow using the following process.
If the user has selected this method and negative inflows occur, this method will be called from the dispatch method. The Inflow (which in this case is a negative number) will be added to the Hydrologic Inflow Adjust. Then the Inflow is set equal to zero. Otherwise, this method behaves like the Input Hydrologic Inflow method.
* 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, Cumulative Hydrologic Inflow is used to forecast and set the 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: Series
Units: FLOW
Description: The forecasted hydrologic inflow values
Information:  
I/O: Output only
Deterministic Incremental Hydrologic Inflow
Type: Series
Units: FLOW
Description: This slots holds a time series 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 for the Incremental Hydrologic Inflows on Subbasin category, 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 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 Inflow is used to forecast and set the 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: Series
Units: FLOW
Description: The forecasted inflow values computed from the Deterministic Incremental Hydrologic Inflow
Information:  
I/O: Output only
Deterministic Incremental Hydrologic Inflow
Type: Series
Units: FLOW
Description: This slots holds a time series 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 for the Incremental Hydrologic Inflows on Subbasin category, 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: 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
Minimum Forecasted Flow
Type: Series
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: Scalar
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: Scalar
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: Scalar
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 method is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Inflow (Source) to forecast and set the 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 Inflow is used to forecast and set the 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: Series
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: Series
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: Series
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: Series
Units: FLOW
Description: This slots holds a time series 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 for the Incremental Hydrologic Inflows on Subbasin category, 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. The logic below uses the Lower Bound on the Deterministic Incremental Hydrologic Inflow slot as a minimum value. This is specified slot configuration (View->Configure menu). Consider setting this value as needed.
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 method 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 method 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 Inflow (Source) to forecast and set the 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 uses the following process:
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:
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 above 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. The logic uses the Lower Bound on the Target slot as the minimum value. This is specified on the Slot Configuration (select View, then Configure). If this value is specified it is checked, otherwise only 0.0 is used in the check. The logic is as follows:
If (Source(i-1) = 0.0 OR ABS(Source(i-1)) < ABS(Lower Bound) ) )
Target(i) = Source(i)
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 computational 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 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 reservoirs, a new method will be available within the Incremental Hydrologic Inflows on Subbasin category: Forecast Period. 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 method 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” for details in the computational subbasin’s Incremental Local Inflows documentation. 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: Series
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: Series
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 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 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” for details in the computational subbasin’s Incremental Local Inflows documentation.
Slots Specific to This Method
Cumulative Hydrologic Inflow
Type: Series
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
Forecasted Cumulative Hydrologic Inflow
Type: Series
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 invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output only
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. See “Low-flow Releases” in USACE‑SWD Modeling Techniques for details on using this method for USACE-SWD.
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
Surcharge Release
Surcharge releases methods determine releases made during the forecast period. The releases are considered mandatory, due to the volume of water in the reservoir. These methods are executed only from the solveMB_givenInflowOutflow dispatch method when the Outflow slot is set with the surcharge release (S) flag. This flag can only be set by a rule.
* None
The default. Nothing is done
* Flat Top Surcharge
This method follows the procedure used by the computer program SUPER and the US Army Corps of Engineers Southwest District; see “Surcharge” in USACE‑SWD Modeling Techniques for details.
Slots Specific to This Method
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: table of describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Conditional Operating Levels” for a method to modify which operating level table is used within a run.
I/O: Required Input
Forecast period
Type: Scalar
Units: No Units
Description: number of timesteps in the forecast period.
Information: number of timesteps over which Inflows are forecast and flood control releases (including surcharge releases) are calculated; includes current timestep.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool.
Information: COE-SWD has used 5 (default) in the past, but can be any number.
I/O: Required Input
Rating Curves
Type: Table
Units: Storage vs Flow (Induced Surcharge) vs Flow (Free-Flow)
Description: two curves representing the induced surcharge (minimum) and free-flow (maximum) that can be released based on elevation in the reservoir. The intersection of the two curves must be defined (there must be a row where the values in the middle and third column are equal) and the points of the free-flow curve beyond the end of the induced surcharge curve must be input in the table column for the induced surcharge curve.
I/O: Required input unless the Specify Rating Curves using Elevation method is selected; see “Specify Rating Curves using Elevation”.
Surcharge Release
Type: Series
Units: Flow
Description: release required by operating when the reservoir elevation is in the surcharge pool.
Information: set by surcharge release method for all timesteps in forecast period
I/O: Output
Minimum Mandatory Release
Type: Series
Units: Flow
Description: minimum surcharge release that can be achieved within the timestep following the induced surcharge curve
Information: calculated for each timestep in the forecast period, but the slot is set only for the current timestep.
I/O: Output only
Maximum Mandatory Release
Type: Series
Units: Flow
Description: maximum surcharge release that can be achieved within the timestep following the free-flow rating curve
Information: calculated for each timestep in the forecast period, but the slot is set only for the current timestep.
I/O: Output only
Method Details
This method is based on the methodology developed by the US Army Corps of Engineers, Southwest Division. In this method, the surcharge, or mandatory, releases, as well as minimum and maximum mandatory releases, are determined for a number of timesteps called the forecast period that will prevent overtopping of a reservoir. These releases are determined for each timestep in the Run Control Dialog.
The name of this method comes from the process of selecting releases during the forecast period to minimize future releases. In other words, release a little more today to reduce, or flatten out, future releases. This approach aims to prevent excessively large inflows from creating equally large releases by extending the time period over which these inflows are released.
This method is used by the dispatch method, solveMB_givenInflowOutflow, whenever the surcharge release flag (S) is set on the Outflow slot (this flag can only be set by a rule). When inflows, which includes the sum of upstream inflows and hydrologic inflows, are known, and the rule sets the flag for the current controller timestep, the surcharge method is launched and surcharge releases and minimum and maximum mandatory releases are calculated for each timestep in the forecast period for the current controller timestep. This process progresses through each timestep on the Run Control Dialog.
The user should be aware of the distinction between the controller timestep, or timesteps set in the Run Control Dialog, and forecast timesteps. Once the surcharge method is invoked, surcharge calculations are performed for the forecast timesteps. The controller timestep does not advance, even though the Surcharge Release slot receives output from the method. Outputs in this slot are overwritten during the next controller timestep, except for the first.
The calculation of the surcharge releases for the forecast period is accomplished by using a loop structure once the surcharge method is invoked by the dispatch method mentioned above. Calculations for each timestep in the forecast period are exactly the same except for changes in the starting storage volume and inflows. The following sections provide a detailed description of the process that is used to calculate the surcharge release and minimum and maximum mandatory releases within.each loop. There are three main sections: Calculations of the minimum and maximum mandatory releases, which bound the surcharge release, and the calculation of the surcharge release.
The first step is to determine the forecast storage. This volume is the initial storage (that is, storage at end of previous computational timestep if this is the first time through the loop, or the storage at the end of the previous forecast timestep for all subsequent loops) plus the total inflow minus any surcharge releases for all forecast timesteps prior to the current forecast timestep. The total inflow is the sum of the upstream inflows plus hydrologic inflows for the current forecast period. For the first forecast timestep, the forecast storage is simply the storage in the reservoir on the previous controller timestep. On subsequent forecast timesteps, the forecast storage includes total inflows through the current forecast timestep and surcharge releases through the previous forecast timestep.
A table interpolation of the Elevation Volume Table is then done to determine the forecast elevation. If the forecast elevation is less than the lowest capacity value input in the induced surcharge curve, which is the middle column on the Rating Curves slot, the minimum mandatory release is zero and the program progresses to determine the maximum mandatory release. Otherwise it continues to determine the minimum mandatory release.
Calculation of the Minimum Mandatory Release
If the forecast elevation falls between the highest and lowest capacity (or elevation) values on the induced surcharge curve, the program determines a discharge rate corresponding to the forecast elevation by interpolation of capacity values from the induced surcharge curve. This is the minimum that can be released based on the forecast elevation. If the forecast elevation is greater than the highest capacity value, the curve must be extended, i.e., there is no extrapolation of the curve. In a similar fashion, the total inflow is used in an interpolation of the induced surcharge curve to determine a corresponding elevation. If this elevation corresponding to the total inflow is less than the minimum discharge rate based on the forecast elevation, the pool is falling. For the opposite case, the pool is rising. If the total inflow and the minimum release corresponding to the forecast elevation are equal, the minimum release is set to this discharge rate and the program goes on to determine the maximum release.
Falling Pool
If the pool is falling (the forecast inflow is less than minimum discharge corresponding to the forecast elevation), the program uses a specific portion of the induced surcharge curve to determine the minimum mandatory release. The set of points includes all points between and including the point on the curve corresponding to the total inflow for the current forecast timestep to the minimum discharge based on the forecast elevation. Using this portion of the induced surcharge curve, the program calculates how long it will take the reservoir to move from the forecast elevation to an elevation corresponding to the total inflow or how much volume can be discharged within one timestep, whichever is less. In the case of a falling pool, the process involves moving down the curve. For the opposite case (rising pool), the process will be reversed, moving up the curve since the discharge rate corresponding to the forecast elevation is less that the total inflow. In either case, the program begins at the curve point corresponding to the forecast storage and progresses to that point corresponding to the total inflow.
The process of progressing through the curve point is as follows.
1. First, the average of the discharge rates corresponding to the first two (or highest) curve points is found.
2. Then the time it would take to release a certain volume at some discharge rate is determined. This volume is the difference in storage values from the curve points that correspond to the two discharges used to calculate the average discharge rate. The time is calculated as follows:
where Storage(i) and Storage(i-1) are the storage values corresponding to the two discharge values (the difference is the volume that is being released). The value of Forecast Inflow - Average Discharge represents the net discharge.
If this time is less than one timestep’s time, the program stores the time and the total volume that could be released in this time at the average discharge, which equal Time * Average Discharge.
3. The program then moves to the next two curve points, gets another average discharge rate corresponding to these two curve points and again determines the time it would take to drop from one capacity value to the next at the net discharge rate.
4. This new time plus the time for the previous two curve points is now the new total time and is again checked to see if it is greater than one timestep. If less still less than one timestep, the total time and total volume are stored (replacing the previous values) and the program moves to the next two curve points.
5. This process continues until either the point corresponding to the total inflow is reached or the total time has reached or exceeded one timestep, whichever occurs first.
6. If the total time at this point is exactly equal to one timestep, the calculations are done and the minimum mandatory release equals the total volume divided by the time of one timestep. If the total time is greater than one timestep’s time, the total time from the previous iteration is used to see how much time was left before reaching a total time of one timestep.
7. Given the average discharge rate for the current iteration, the volume that could be released within the time remaining is determined.
8. This volume is then added to the total volume and the final minimum mandatory discharge rate is calculated as described above.
9. If the computation gets through all the curve points, i.e., the curve point corresponding to the total inflow, with a total time that is less than or equal to one timestep, the total volume is increased by adding to the previously stored total volume to (Time of 1 timestep - total time) * total inflow.
10. Then, the minimum mandatory release is calculated by dividing the total volume by the time of one timestep.
 
Example 18.1  Example of minimum mandatory release w/ falling pool 
Figure 18.3 is a plot of the induced surcharge curve. Assume that the timestep is a day, there is a falling pool, the total inflow for the current forecast timestep = 80,000 cfs, and the minimum release that the reservoir can make corresponding to the forecast storage of 450,000 ac-ft. = 365,000 cfs. Therefore, the portion of the curve that is used to determine the minimum mandatory release is bracketed by these two discharge points (donuts on plot), and the three actual curve points between these.
First, the average discharge rate of 365,000 and 260,000 cfs = 312,500 cfs is determined.
hen the volume between the two storage values corresponding to these two discharge points (450,0000 - 445,000 = 5,000 ac-ft = 217,800,000 cu. ft.) is calculated.
Then, the time it takes the reservoir to release this volume of water at the calculated average discharge rate (217,800,000cu.ft./312,500 cfs = 0.26 hours) is determined. Since this time is less than 24 hours (one timestep), the total time of 0.26 hours and the total volume = 0.26*312,500 = 5,000 ac-ft is stored and the next two discharge points are used.
Using these two points (260,000 and 180,000), the average discharge rate = 220,000 cfs, the volume between storage values corresponding to these two discharges = 445,000 - 440,000 = 5,000 ac-ft, and the time to release that volume at the net discharge rate = 0.43 hours. This total time = 0.69 is still less than 24 hours, so the program moves to the next two points (180,000 and 95,000) after storing the total volume, which = 10,000 ac-ft.
The average discharge for the next two points is 137,500 cfs and the storage volume between these points is 440,000 - 430,000 = 10,000 ac-ft. The time to release this volume at the net discharge rate is 2.10 hours, so the total time is now 2.79 hours, which is still less than 24 hours. The total volume that is stored now = 20,000 ac-ft). The final two discharge points are 95,000 and 80,000 cfs, with an average of 87,500 cfs. The volume between these points is 5,000 ac-ft (430,000 - 425,000 ac-ft). The time to release this volume is 8.07 hours, the total time is 10.86 hours, and the total volume = 25,000 ac-ft). Although still less than 24 hours, all of the specific points of the curve have been used.
The final total volume is the sum of the previous total of 25,000 ac-ft + (24hrs - 10.86)*total inflow. The minimum mandatory release is this new total volume divided by 24 hours.
 
Figure 18.3   
Rising Pool
If the pool is rising (total inflow greater than discharge corresponding to the forecast storage), the calculation is the same as for the case of a falling pool except that the progression through the curve point will be up the curve instead of down the curve. The lowest point is the minimum discharge that must be released corresponding to the forecast storage and the highest point is the total inflow for the current forecast day.
Calculation of the Maximum Mandatory Release
The maximum release is determined in the same manner as the minimum release except that the free-flow rating curve is used instead of the induced surcharge curve. The program again determines if the pool is be rising or falling, then progressed through the specific curve points to calculate the maximum mandatory release.
Calculate Surcharge Releases
Once the maximum and minimum mandatory releases have been determined, the program computes surcharge release to flat top the incoming flood. The objective is to have slightly higher mandatory releases sooner than later to try to reduce the surcharge releases that would need to be made later as inflows continue to come into the reservoir. The program looks ahead in the forecast period to anticipate high flows with higher releases in order to reduce the maximum release needed in the future to keep the pool at or below the induced surcharge curve until such time as the top of the induced surcharge curve is reached.
Bracket Mandatory Release on Induced Surcharge Curve
To determine the mandatory release, the program steps through the points on the induced surcharge curve to determine what the surcharge release must be in order to reduce the maximum release at some time in the future when the reservoir is expected to be the fullest.
First, the available storage is calculated as the difference between the forecast storage and the storage at the first induced surcharge point. Then, the highest storage in the reservoir over the remainder of the forecast period is calculated using the remaining inflow hydrograph and a constant release equal to the discharge rate corresponding to the currently considered point on the induced surcharge curve. If the highest storage is greater than the storage available, the program continues to the next point on the induced surcharge curve and recalculates the available storage and the highest forecast storage; again using the remaining inflow hydrograph and the release associated with that point. Moving to each new curve point effectively increases the release, there by reducing the maximum storage required and increasing the available storage. This process of checking each of the points on the induced surcharge curve continues until the highest forecast storage is less than the available storage.
Before moving to another point on the curve, the program stores the available storage, the highest forecast storage, and the discharge rate to be used for future interpolation.
If the final, or highest, curve point is reached and the available storage is still less than the highest forecast storage, the program execution is terminated and a request is made for extending the curve.
Once a curve point is found that satisfies the condition that the highest forecast storage is less than the available storage, the program is considered to have found the general vicinity of the appropriate value of the surcharge release, or in other words bracketed the portion of the curve. At this time, there are two pairs of stored values for each of the following parameters: available storage, the highest forecast storage, and the discharge rate.
Use Forecast Inflows to Zoom In on Solution
Having bracketed the part of the induced surcharge curve that contains the appropriate surcharge release, it is now necessary to find the point in that range for which the available storage is just equal to the highest forecast storage. This part of the program uses inflow values from the forecasted inflow array as intermediate discharge test points. The purpose of looking through the forecasted inflows narrows the solution for the right surcharge release.
The program scans through the forecast period to see if any inflows fall between the two discharge values that have been stored. If any fall in there, the smallest is stored. Then, this inflow value is used similarly to how the discharge values from the various curve points were used above to determine the available storage and highest forecast storage if the inflow is assumed to be the release. This is followed by a check to see if the available storage is less than the highest forecast storage. If so, the program looks to see if another higher inflow within the forecast period can satisfy the condition and, if found, available storage and highest forecast storage is recalculated. However, at the next point, the lower limit within which the inflow must fit above is raised to the inflow value that was used previously. If no inflow is large enough to make the available storage larger than the required storage, continue on with the two discharge values from the curve that were stored after the solution was initially bracketed.
If there are no inflows within the forecast period that fall in the range of the two discharge points on the curve or if no inflow values during the forecast period are large enough to make the available storage large enough to exceed the highest forecast storage, the algorithms goes to the next section where an interpolation is used to find the surcharge release for the current forecast day using points off the curve.
Interpolate to Find Surcharge Release for Current Forecast Day
The induced surcharge curve has been bracketed by two points. At the higher point on the curve, the discharge satisfies the condition that the available storage >= highest forecast storage. At the lower point, the condition is not satisfied. (The discharge values may be specified input points from the induced surcharge curve, or may be points found as described in the previous section from the forecasted inflow array.) Once the condition of available space being larger than or equal to the required storage is satisfied, the extra available storage is calculated for the set of points that satisfied the condition (available storage - highest forecast storage) and the extra volume needed to store the highest forecast storage for the set of points that didn’t satisfy the condition (highest forecast storage - available storage). Finally, using the extra space, extra storage needed, and the two discharge points, an interpolation is done to find the surcharge release for the current forecast day. The resulting surcharge release value is that which would very closely match the available storage and highest forecast storage, given that release rate.
Compare Surcharge Release With Maximum and Minimum Release Values
Once the surcharge release is determined, it is compared to the maximum and minimum mandatory releases calculated earlier. If the surcharge release is greater than or less than these limits, respectively, it is set to the limit. In addition, the storage of the reservoir is reduced to reflect the surcharge release for the current forecast timestep. This storage for the current forecast timestep is used as the initial storage for the calculation of forecast storage on the next timestep in the forecast period.
Check Surcharge Release Against Conservation Pool
The final section in this method involves a check to see of the surcharge release results in a pool level below top of conservation pool. The reservoir storage with the surcharge release already made through current forecast day is checked to see if it is above or below the conservation pool. If below, the surcharge release is set to that which would bring the storage down to the conservation pool. If the storage is already below the conservation pool before this release is made, the surcharge release for the current forecast timestep is zero. If above the conservation pool, the surcharge release is left as is.
The program then moves to the next forecast day. After the surcharge releases and minimum and maximum mandatory releases have been determined for every timestep in the forecast period, the calculations are complete.
Finally, the method selected in the Elevation Max Duration Constraints category (see “Elevation Max Duration Constraints”) is executed. This may increase the Surcharge Release to avoid the reservoir from exceeding a desired elevation for more than the desired number of timesteps.
* Induced Surcharge Curve
This method follows the procedure used by the US Army Corps of Engineers Kansas City office to determine surcharge releases during a forecast period for reservoirs with taunter gates.
Slots Specific to This Method
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: table of describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Conditional Operating Levels” for a method to modify which operating level table is used within a run.
I/O: Required Input
Operating Level
Type: Series
Units: None
Description: The computed operating level
Information: This slot is computed using the pool elevation and the Operating Level Table
I/O: Output only
Forecast period
Type: Scalar
Units: No Units
Description: number of timesteps in the forecast period.
Information: number of timesteps over which Inflows are forecast and flood control releases (including surcharge releases) are calculated; includes current timestep.
I/O: Required Input
Top of Flood Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of flood pool.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool.
I/O: Required Input
Induced Surcharge Curve
Type: Table
Units: Flow (Inflow) vs Length (Elevation) vs Flow (Surcharge Release)
Description: family of curves that relate elevation and surcharge release for various inflow values.
I/O: Required Input
Surcharge Release
Type: Series
Units: Flow
Description: release required by operating when the reservoir elevation is in the surcharge pool.
Information: set by surcharge release method for all timesteps in forecast period
I/O: Output
Recession Target
Type: Series
Units: Length
Description: pool elevation at which surcharge operations are suspended.
Information: once pool drops to this elevation, Surcharge Release operations will terminate.
I/O: Optional, can be input, or will default to the elevation of the bottom of surcharge pool (top of flood pool).
Gate Opening Curve
Type: Table
Units: Length (Elevation) vs Flow vs length(Gate Opening).
Description: This is a family of curves of that relate pool elevation and discharge for various gate openings. This must be specified as a 3D table; see “Three-dimensional data format” for details.
I/O: Required Input
Gate Opening
Type: Series
Units: No Units
Description: gate opening calculated for each timestep.
I/O: Output
Storage Tolerance
Type: Scalar
Units: Volume
Description: allowable difference between calculated average storage and beginning of timestep storage.
Information:  
I/O: Required Input
This method determines a surcharge release for each timestep in the forecast period. The process begins by determining a Surcharge Release value from the Induced Surcharge Curve, given Inflow (net) and current Pool Elevation (end of previous timestep for the first iteration). Given the Surcharge Release value, the Gate Opening is determined by interpolation of the Gate Opening Table. The Gate Opening is not allowed to be reduced if the reservoir is in surcharge operations (Surcharge Release > 0). If the Gate Opening from the Curve is less that the current Gate Opening, the current Gate Opening is maintained, but a new Surcharge Release is determined given that gate opening by interpolation of the Gate Opening Curve. Otherwise, the Surcharge Release from the Induced Surcharge Curve is used.
The reservoir is then mass balanced using the Inflow (net) and Surcharge Release to determine the end of period Storage. If the Surcharge Release drops the reservoir below the Recession Target, a new Surcharge Release is determined that would drop the reservoir to exactly the Recession Target and the mass balance would resolve for the end of period Storage. Then an average Storage is determined using the beginning and ending period Storages. If the difference between the current storage and the new average storage is greater than the Storage Tolerance, the process is repeated using the new average storage to compute the new current pool elevation and a new Surcharge Release. Otherwise, the method moves on to the next forecast timestep.
* Pass Inflows
This method is designed to pass the inflows to the reservoir whenever the pool elevation enters the surcharge pool. If the inflows cannot be passed (due to the physical limitations of the outlet works) the surcharge release is set equal to the max outflow. Then the gates remain open until the surcharge pool is evacuated.
Slots Specific to This Method
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: table of describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Conditional Operating Levels” for a method to modify which operating level table is used within a run.
I/O: Required Input
Operating Level
Type: Series
Units: None
Description: The computed operating level
Information: This slot is computed using the pool elevation and the Operating Level Table
I/O: Output only
Forecast period
Type: Scalar
Units: No Units
Description: number of timesteps in the forecast period.
Information: number of timesteps over which inflows are forecasted and surcharge releases are calculated; includes current timestep.
I/O: Required Input
Top of Flood Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of flood pool.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool.
I/O: Required Input
Surcharge Release
Type: Series
Units: Flow
Description: the computed surcharge release
Information: set by surcharge release method for all timesteps in forecast period
I/O: Output
This method is executed for every timestep in the forecast period when the surcharge release flag is set on the Outflow slot. The surcharge release is set equal to the total inflow to the reservoir (Inflow plus Hydrologic Inflow Forecast) if the pool elevation will exceed the top of the flood pool. If the inflow cannot be passed due to outlet constraints, the surcharge release is set equal to the maximum outflow. If this happens, the gates remain fully open and the surcharge release is set equal to the max outflow until the surcharge pool is evacuated. If the computed surcharge release will bring the pool elevation below the top of the flood pool, it will be reset to bring the pool elevation exactly to the top of the flood pool.
* Specified Surcharge
This method is used to compute the surcharge release based on a user specified value. As always, the surcharge release is limited to the physical maximum outflow from the reservoir.
Slots Specific to This Method
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: table of describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Conditional Operating Levels” for a method to modify which operating level table is used within a run.
I/O: Required Input
Operating Level
Type: Series
Units: None
Description: The computed operating level
Information: This slot is computed using the pool elevation and the Operating Level Table
I/O: Output only
Forecast period
Type: Scalar
Units: No Units
Description: number of timesteps in the forecast period.
Information: number of timesteps over which inflows are forecasted and surcharge releases are calculated; includes current timestep.
I/O: Required Input
Top of Flood Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of flood pool.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool.
I/O: Required Input
Surcharge Release
Type: Series
Units: Flow
Description: the computed surcharge release
Information: Set by surcharge release method for all timesteps in forecast period
I/O: Output
Specified Surcharge release
Type: Scalar Slot
Units: Flow
Description: The user input surcharge release
Information: This value is used to set the surcharge release slot whenever the pool elevation is in the surcharge pool but less than the Critical Elevation
I/O: Required Input
Critical Elevation
Type: Scalar Slot
Units: Length
Description: the elevation at which the surcharge release changes from the Specified Surcharge Release to the maximum release
I/O: Required Input
This method is executed for every timestep in the forecast period when the surcharge release flag is set on the Outflow slot. The surcharge release is set equal to the Specified Surcharge Release if the pool elevation will exceed the top of the flood pool. If the pool elevation will exceed the Critical Elevation, the surcharge release is set equal to the maximum outflow. If this happens, the gates remain fully open and the surcharge release is set equal to the max outflow until the surcharge pool is evacuated. If the computed surcharge release will bring the pool elevation below the top of the flood pool, it will be reset to bring the pool elevation exactly to the top of the flood pool.
Rating Curves Modification
This category is dependent on having Flat Top Surcharge method selected in the Surcharge Release category. Methods are used to optionally modify the Rating Curves table.
* None
This is the default method, no modification to the Rating Curves is made.
* Specify Rating Curves using Elevation
When the Specify Rating Curves using Elevation method is selected the following slot is added.
Rating Curves using Elevation
Type: Table Slot
Units: Elevation vs Flow vs Flow
Description: This table represents the Rating Curves Table with Elevation as the independent variable instead of Storage as shown on the Rating Curves table. Thus, The table relates Elevation, Induces Surcharge, and Free Flow Rating Curve.
Information: Specified only
I/O: Not linkable
When this method is selected, at the beginning of the run, the reservoir will generate the Rating Curves based on the Rating Curves using Elevation slot using the following process.
1. Copy all of the data in the Rating Curves using Elevation table to the Rating Curves table. This will resize and/or rebuild the table as necessary.
2. For each row in the Rating Curves using Elevation table, the Elevation will be looked up on the Elevation Volume Table to determine the Storage.
3. The Storage will then be written to the Rating Curves table. The Induced Surcharge Curve and Free Flow Rating values were already copied from the Rating Curves using Elevation table.
4. The Rating Curves table will be marked as “has Source Slot”. This makes the slot read-only with cross hatching over the value. It also adds the following:
Note:  These values are automatically generated based on Reservoir.Rating Curves using Elevation.
Within the Flat Top Surcharge method, the original Rating Curves (storage based) tables will be used for all computations.
Elevation Max Duration Constraints
This category is dependent on the Flat Top Surcharge method being selected in the Surcharge Release category.
* None
This is the default method in this category. There are no maximum duration constraints on Pool Elevation.
* Constant Additional Surcharge Release
The Constant Additional Surcharge Release method allows the user to specify 1 or more elevation max duration constraints. The method is executed at the end of the Flat Top Surcharge method to compute the additional volume of water to meet the maximum elevation duration constraints. This volume is then released as a constant (additional) flow of water from the current timestep to the violation date.
Slots Specific to This Method
Elevation Maximum Duration Table
Type: Table Slot
Units: Length vs Number of Timesteps vs Number of Timesteps
Description: The input data in this table drive this method.
Information: It has three columns:
Pool Elevation (length): the elevation to which the constraint applies. Rows must be in order of decreasing elevations.
Maximum Duration: the maximum number of timesteps this reservoir can be above this row's Pool Elevation.
Reset Duration: the minimum number of timesteps the reservoir elevation must remain at or below this row's Pool Elevation in order to reset the duration counter; i.e., how long must the Pool Elevation remain low to be considered not “above this row's Pool Elevation”.
I/O: Required Input
Elevation Maximum Duration Release
Type: Aggregate Series Slot
Units: Flow
Description: The additional flows added to Surcharge Release explicitly for the purpose of meeting the Pool Elevation maximum duration constraints.
Information: The first column is the total for all constraints, the other columns correspond to single constraints. The column name are based on the row labels in the table described above.
I/O: Output only
This method is executed as part of the Flat Top Surcharge. After the Surcharge Release calculation has calculated the reservoir releases necessary for evacuating the surcharge pool over the forecast period, this method determines if this proposed release schedule would violate a Pool Elevation maximum duration constraint. If so, then the surcharge release is increased as necessary to avoid violating the constraint.
The additional flow is calculated as the volume of water which would need to be released to avoid violation of the constraint, and adding that volume to the release schedule in equal increments, i.e. constant additional release. This calculation is performed for each row of the Elevation Maximum Duration Table (see “Elevation Maximum Duration Table”). Each iteration may add water to the proposed release.
Continuing with the example above, assume that at timestep t the reservoir computes the Surcharge Releases and that (given these releases) the reservoir's storage will have been between 800 and 900 m for 5 days at timestep t + 2. The difference in storage between the projected Pool Elevation at t + 2 and 1000 m is 300 m3. RiverWare will then add 100 m3 to the surcharge releases (and Outflow) for t, t + 1, and t + 2 to bring the elevation down to 1000 m at t + 2.
This method sometimes produces results that are counter-intuitive. Following are some items to consider when looking at results.
• Multiple constraints lead to non constant release patterns. This method determines the constant additional release required to meet each constraint. The actual additional flow that will be added to the surcharge release is the sum of the values for each constraint. Therefore, the final release schedule may not be a constant value if there are multiple constraints in effect.
• Surcharge pattern leads to non constant release patterns. The originally computed Surcharge Release schedule is not constant, so adding flows to the surcharge release will result in a non-constant release schedule.
• Forecast values are overwritten at each timestep. The Surcharge Release method, including this method, is executed at each timestep and will update the values in the Surcharge Release and other slots throughout the forecast period. Therefore, at the end of the run, the results may not be obvious what is happening. If you want to see the schedules used for a particular timestep, pause the run after that timestep has executed, then look at slot values or the special results in the model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques for details.
• Constraining elevations may not be exactly met. Surcharge Release operations do not include Evaporation or Precipitation in the computation. Similarly, reservoir diversions (withdrawals) are performed after surcharge operations. Once the other operations execute and the reservoir dispatches and solves, the resulting elevation may be slightly different than the values used in the Surcharge and elevation max duration computations. This will manifest in not exactly reaching the constraining elevations. Because diversions (and evaporation) remove water from the reservoir, typically the elevations will be slightly below the constraining elevations.
• Duration constraints still aren’t met. Maximum outflow constraints are applied after this additional release schedule is computed. Thus, even if the an additional amount is required, it may not be released and the target elevation may not be achieved. The proposed values are stored in the Surcharge Release slot, the actual maximums would be stored in the Outflow slot.
• Elevations are unexpectedly at (or below) the constraint. The algorithm looks at the pool elevation after forecasting and surcharge have executed. (This preconstrained pool elevation is currently not available but looking at the forecasted inflows gives some indication of the values.) It then determines the additional flow to prevent violating the constraint at any time in the forecast period. If the elevation is already at the constraint, then the additional flow will likely keep the elevations at or even below the constraint. The method will add releases to the current timesteps (and future) timestep. There is no mechanism to delay releasing water to wait until the flood actually arrives. Thus, if it seems like the elevation should stay above the constraint, the algorithm will start releasing to make room for forecasted inflows.
For example, when a large flood is within the period of perfect knowledge, then the algorithm may then need to release a large volume to meet a constraint at some point in the forecast period. This may cause the reservoir to go below the constraint to make room for the incoming flood (i.e. dig a hole for the incoming flood). But, the elevation should end up at the constraining elevation on the constraining timestep.
• There are still violations in the forecast period. Only one violation per constraint is considered, though in theory there could be another violation later in the forecast period.
Flood Control Release
Flood control releases on reservoirs cause dependent slots to be available for use by the predefined flood control rule function.
* None
The default. No dependent slots.
* Operating Level Balancing
Choose this method when you wish to use rules to perform Operating Level Balancing flood control on a computational subbasin (see (“Operating Level Balancing”)) of which this reservoir is a member. See “Flood Control” in USACE‑SWD Modeling Techniques for details on using this method for USACE-SWD.
Slots Specific to This Method
Forecast Period
Type: Scalar
Units: No Units
Description: Number of timesteps in the forecast period.
Information: Number of timesteps over which storages are forecasted and surcharge releases are calculated; includes current timestep. Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Balance Period
Type: Scalar
Units: No Units
Description: Number of timesteps in the balance period.
Information: Number of timesteps into the future at which the flood control inspects the storage of the reservoir to determine the goal for flood control releases. The goal is to release all the water in the flood pool at this future timestep (the current timestep is 1). Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Target Balance Level
Type: Series
Units: No Units
Description: Balance level assigned to this subject reservoir by a controlling key control point, during execution of the control point’s Operating Level Balancing method in the Key Control Point Balancing category.
Information: This slot is written as a result of the FloodControl predefined function; see “FloodControl” in RiverWare Policy Language (RPL).
I/O: Output only - set by a rule
Max Flood Control Release
Type: Series
Units: Flow
Description: Upper bound on flood control release, used by Operating Level Balancing flood control algorithm, and computed by Operating Level Balancing key control point balancing method on key control points. The flood control algorithm applies this upper bound on intermediate passes of the algorithm, but not on the last pass.
Information: This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Rule output.
Flood Control Release
Type: Series
Units: Flow
Description: The release made from the reservoir as a result of the application of a flood control rule.
Information: The value for this slot is computed by the flood control predefined rules function. The slot’s value is meant to be assigned by the rule.
I/O: Rule output.
Flood Control Minimum Release
Type: Series Slot
Units: Flow
Description: This slot holds the user specified (via a rule) minimum flood control release. This slot is used by the Operating Level Balancing algorithm as a minimum release, but is not included in the Flood Control Release slot’s value. See “Flood Control Minimum Release” in USACE‑SWD Modeling Techniques for details on the intended use of this slot.
Information: This value should be set (along with Outflow) prior to calling the flood control method so that water is allowed to route downstream.
I/O: Typically set by a rule
Proposed Flood Control Release
Type: Series Slot
Units: FLOW
Description: The temporary running value of the flood control release calculated by the Flood Control Release method on the Computation Subbasin.
Information: This slot is used to hold proposed flood control release during the flood control calculations. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Surcharge Release
Type: Series
Units: Flow
Description: The release made from the reservoir as a result of the application of surcharge release rule.
Information: The values in this slot are used by the Operating Level Balancing flood control method invoked by the predefined rules function.
I/O: Rule output.
Top of Flood Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the flood pool.
Information: Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool.
Information: Must be lower than the Top of Flood Pool. Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: Describes the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: Number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Conditional Operating Levels” for a method to modify which operating level table is used within a run.
I/O: Required Input
Allowable Rising Release Change
Type: Scalar
Units: Flow Per Time
Description: The maximum acceleration of the flood control releases, used by the rulebased Operating Level Balancing flood control. Value must be greater than 0.
Information: The Operating Level Balancing flood control algorithm attempts not to exceed this increase in outflow from one timestep to the next when computing flood control releases. Surcharge releases may cause this change to be exceeded. Value is converted to the internal units appropriate to the timestep size of the run, thus, is independent of the run’s timestep size.
I/O: Required Input
Allowable Falling Release Change
Type: Scalar
Units: Flow Per Time
Description: The maximum deceleration of the flood control releases, used by the rulebased Operating Level Balancing flood control. Value must be greater than 0.
Information: The Operating Level Balancing flood control algorithm attempts not to exceed this reduction in outflow from one timestep to the next when computing flood control releases. Channel space limitations may cause this change to be exceeded. Value is converted to the internal units appropriate to the timestep size of the run, thus, is independent of the run’s timestep size.
I/O: Required Input
Maximum Release Variation
Type: Scalar Slot
Units: Flow Per Time
Description: A deceleration of the flood control releases assumed to occur during calculation of channel space in the rulebased Operating Level Balancing flood control. Value must be greater than 0.
Information: The Operating Level Balancing flood control algorithm uses this value as a tuning parameter. Large values mean that flood releases may be larger today and thus, zero tomorrow due to routing lags, whereas small values may mean that less-than-ideal releases can be made today; in either case, poor choices can cause oscillations in the reservoirs’ releases. Value is converted to the internal units appropriate to the timestep size of the run, thus, is independent of the run’s timestep size.
I/O: Required Input
Through Release
Type: Series
Units: Flow
Description: Water released from upstream reservoirs that flows through this reservoir. This reservoir is a downstream tandem.
Information: This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output only
Tandem Storage
Type: Series
Units: Flow
Description: All or part of a proposed release may be stored in downstream tandem reservoirs if the downstream reservoir is not Surcharging (Surcharge Release equals zero or is not valid) at the current controller timestep. This slot tracks the water stored in this reservoir.
Information: This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output only
Lost Tandem Storage
Type: Agg Series
Units: Flow
Description: This slot tracks the lost storage (as a flow) that occurs because tandem releases are not routed from the upstream to the downstream reservoir. It is really an error term. The first column is total of the other columns. Colum2 is for the current timestep releases. Column 2 is for timestep 1 through the balance period releases. Column 3 is for releases from the balance period through forecast period. For example the code decides to release 100cfs that can be stored in the downstream tandem. If you don't route it, 100 gets stored on the current timestep. But if you had routed it, some fraction would not have made it there on day 1 (1st column). If you instead propose a hydrograph of flows that don't get routed, then you can compute the col 2 and col 3 values.
Information: This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output Only
Downstream Control Point Share
Type: Agg Series
Units: decimal
Description: The slot has a series slot for each downstream key control point. The value in the slot shows the share as presented on the downstream Control Point’s Share slot. Essentially, this slot contains a copy of the downstream Control Point’s Share information.
Information: This slot is invisible but can be viewed in the reservoir’s Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output only
* Phase Balancing
Choose this method when you wish to use rules to perform Phase Balancing flood control on a computational subbasin of which this reservoir is a member. See Phase Balancing discussion in the Computational Object for a complete discussion of the Phase Balancing algorithm.
Slots Specific to This Method
Forecast period
Type: Scalar
Units: No Units
Description: Number of timesteps in the forecast period.
Information: Minimum value of 1. This value should be the same as the Forecast Period on other objects in the subbasin; the value can optionally be propagated from the subbasin.
I/O: Required Input
Surcharge Release
Type: Series
Units: Flow
Description: release required by operating policy when the reservoir elevation is in the surcharge pool.
Information: set by surcharge release method for all timesteps in forecast period when Surcharge Release flag is set on this slot by end user or by a rule
I/O: Output
Top of Flood Pool
Type: Scalar
Units: No Units
Description: operating level (as defined in Operating Level Table) corresponding to the top of flood pool
Information: KC COE has used 4 in the past, but can be any number
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: None
Description: The operating level pool number of the top of conservation pool level.
Information: This value is also termed the Target Operating Pool Level, since this is the preferred, or Target level for all reservoirs. This level is also the bottom of the flood pool level.
I/O: Input
Operating Levels Table
Type: Periodic
Units: TIME vs Length at Operating levels
Description: table describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep.
I/O: Required Input
Operating Level
Type: Series
Units: No units
Description: Operating level of the reservoir at each timestep, based on the ending Storage.
Information: Determined from interpolation of the Operating Levels Periodic plus the delta from the Operating Levels Aberration Agg Series; an exact value is determined, not limited to an integer or values entered in the Operating Level Table.
I/O: Output
Phase Tolerance
Type: Scalar
Units: No Units
Description: The tolerance value that must be exceed for the reservoir to change phase.
Information: The reservoir phase is determined from the operating level. The operating level must exceed a phase boundary by the Phase Tolerance before the lake will change phase. This slot can be used to smooth oscillations along phase boundaries.
I/O: Input (0.0 default)
Lake Character
Type: Series
Units: No units
Description: weighting factor for allocating available downstream channel space.
Information: used by control point or flood control algorithm to balance reservoirs in calculating flood releases
I/O: Output
Lake Character Coefficient
Type: Scalar
Units: No UNITS
Description: coefficient multiplied by the occupied volume of the flood pool to determine the Lake Character.
Information: used for every timestep, unless Variable Lake Character Coefficient has been input (not a NaN) for some timestep(s).
I/O: Input
Variable Lake Character Coefficient
Type: Series
Units: NO units
Description: time-varying Lake Character Coefficient
Information: replaces Lake Character Coefficient Scalar when input for some timestep(s).
I/O: Optional Input
Flood Control Release
Type: Series
Units: FLOW
Description: value of the flood control release calculated by the Flood Control Release method and set by the rule that calls that method.
Information: During the flood control calculations at each timestep, this value is calculated for the entire forecast period; at the next timestep, the forecast values are overwritten by the new values. At the end of the run, this slot contains the flood control release for all the timesteps. During dispatching, this value is added to the surcharge release and possibly other values to get the total outflow for the timestep.
I/O: Output
Proposed Flood Control Release
Type: Series
Units: FLOW
Description: The temporary running value of the flood control release calculated by the Flood Control Release method on the Computation Subbasin.
Information: This slot is used to hold proposed flood control release during the flood control calculations. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Recalc Release
Type: Series
Units: FLOW
Description: The temporary running value of the reservoir’s current constrained release.
Information: This slot is used to hold the last constrained release of the reservoir. This value is kept in case the computational subbasin has the opportunity to recalculate the reservoir’s release (i.e., one of this reservoir’s siblings cannot use all of its allocation allowing this flood control release of this reservoir to be increased). This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Known Release
Type: Series
Units: FLOW
Description: The temporary running value of the reservoir’s known, or solved, releases.
Information: This slot is used for bookkeeping, holding the values of known or solved for releases in the forecast period during the flood control release algorithm. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Phase
Type: Series
Units: No Units
Description: A temporary record of the lake’s phase.
Information: This slot is used for bookkeeping, holding the values of the lake phase. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output)
Minimum Release
Type: Periodic
Units: FLOW
Description: The minimum release the reservoir is required to make. A seasonal value.
Information: number of rows defined by the number of date points (user input) and one column. The column represents the time-varying minimum release for the reservoir.elevations for a particular Operating Level. An flow value is input for each date point. User can select whether to interpolate between values in time, or to have constant values until the next timestep.
I/O: Required Input
Tandem Operating Levels Table
Type: Periodic
Units: TIME vs Length at Operating levels
Description: Table describing the seasonal variation of elevation (storage) in a tandem reservoir at each of the user-designated operating levels.
Information: number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep.
I/O: Required Input
Tandem Operating Level Aberrations
Type: Agg Series Slot
Units: No units
Description: Aberration of the operating levels of the tandem reservoir from the periodic specification at each timestep
Information: The slot contains an aberration series for each operating level. The aberration is used to adjust the tandem operating levels when constructing the tandem balancing curve.
I/O: Input
Objective Release Pattern Table
Type: Table
Units: No Units
Description: Table describing the objective releases percentages used to evacuate the flood control storage (including forecasted inflows) over the period of the table from the first unconstrained release.
Information: The nth number in the table represents the percentage of the flood control storage (include forecasted inflows) that should be released for the nth day from the first unconstrained release from this reservoir.
I/O: Required Input
Maximum Objective Release
Type: Series
Units: FLOW
Description: The temporary running values of the reservoir’s current objective releases. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Objective Pattern Threshold
Type: Table
Units: NONE
Description: Percentage of allowable volume change in objective release pattern
Information: This is a Scalar representing the percentage of volume changed. If the change volume of flood control storage in a reservoir (including forecasted inflows) is within the threshold of the objective release pattern, then the pattern can be maintained and does not need to be recomputed. If the change exceeds the threshold then the pattern must be recomputed. The table has two columns. The first column lists outflows. The second column list the corresponding permissible decrease in outflow.
I/O: Required Input
Permissible Outflow Increase Constraints Table
Type: Table
Units: FLOW, FLOW
Description: Table describing the allowable outflow increase given a current outflow.
Information: The table has two columns. The first column lists outflows. The second column list the corresponding permissible increase in outflow.
I/O: Required Input
Permissible Outflow Decrease Constraints Table
Type: Table
Units: FLOW, FLOW
Description: Table describing the allowable outflow decrease given a current outflow.
Information: The table has two columns. The first column lists outflows. The second column list the corresponding permissible decrease in outflow.
I/O: Required Input
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”.
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.
Note:  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.
Note:  Evaporation and precipitation are not included in the lumped mass balance of the target operation.
* 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: Series
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. See “Time Varying Elevation Area” for details on methods that change the elevation area relationship.
* 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: Series
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 should be exercised in 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.
* Time Varying Elevation Volume
The Time Varying Elevation Volume method allows Elevation Volume (EV) relationships that change at specified times. The method is only available when the following default methods are selected in the following categories:
• Flood Control Release: only the None method is allowed
• Surcharge Release: only the None method is allowed
• Water Quality: None, Water Quality cannot be enabled
Figure 18.4 plots the existing and new EV relationships. It shows is a graphical example of how the mass balance should be performed on the timestep the EV relationship changes. This process is as follows.
1. This is the PE and Storage at the previous timestep. This is the starting condition.
2. On the current timestep, the Inflows and Outflows lead to a positive net inflow. This will increase the Pool Elevation. Using the existing table, a (PE, Storage) is calculated and shown as point 2.
3. The PE is used to interpolate a storage on the new EV table. The difference between storage at point 2 and point 3 is the loss of storage term. This means that the Pool Elevation is the same regardless of which table is used.
Figure 18.4   
Slots Specific to This Method
Elevation Volume Table Time Varying
Type: Table Slot
Units: Length and volume
Description: the tables that represent the Elevation Volume relationship at various times in the run.
Information: The number of columns in this table should be set to one plus the number of times the Elevation Volume relationship changes. The column headings contain the date corresponding to the change. When you add a column to this slot, it is given a date later then the last column. You can set the date from the Column -> Set Column Value menu. You can then type the date text or use the date time spinner to enter the appropriate date. The dialog will only let you enter dates that correspond to timesteps. (Care should be exercised when switching model timesteps) The column is then placed in the correct order compared to the other column labels. Each column should have an entry for each row in the Elevation column or an interpolation error may be issued during the run. The number of columns is equal to the number of changes plus one, i.e., if there is one change then there should be two columns. An example is shown below for a run that starts in 24:00 Jan 1, 1910 and the reservoir Elevation Volume changes three times. The column label of the first set of volumes must be on or before the initial timestep. The times on the column map are an instant in time.
I/O: Input Only
 
Pool Elevation
ft
24:00 Jan 1, 1910
Storage
acre-ft
24:00 Jan 1, 1935
Storage
acre-ft
24:00 Jan 1, 1953
Storage
acre-ft
24:00 Jan 1, 1970
Storage
acre-ft
5,100
0
0
0
0
5,120
10
9
8
7
5,150
15
14
13
12
5,200
20
19
18
17
5,250
25
24
23
22
Storage Adjustment from Elev Vol Table Change
Type: Series Slot
Units: VOLUME
Description: This is the volume of water that was lost to sedimentation
Information: The slot tracks the mass discontinuity that occurs when the Elevation Volume is changed because of a new reservoir Elevation Volume relationship. A positive number indicates storage was gained; a negative number indicates storage was lost.
I/O: Output Only
Start of Run
At the start of the run, if the Time Varying Elevation Volume method is selected (see “Time Varying Elevation Volume”), the isTimeVaryingElevVolume boolean variable is set to TRUE. At the same time, a pointer is set that specifies that all computations should use the Elevation Volume Table Time Varying slot (see “Elevation Volume Table Time Varying”). All computations involving the elevation volume relationship on the object use this pointer instead of the directly accessing the Elevation Volume Table. If the method is not selected, then the pointer is set to the Elevation Volume Table.
Note:  Even with this method selected, the original Elevation Volume Table is still visible. Although it is not used when dispatching or other simulation or rulebased simulation, it is still a general slot that is used in optimization calculations and water quality.
Start of Each Dispatch Method
At the start of each dispatch method, if the isTimeVaryingElevVolume is true, then the method will determine which column of the table to use. It compares the current timestep to the column headings on the table and determine which column to use. For example, if the current timestep is March 3, 1940 for the table example above, then it will set col = 2 (column numbering is zero based) for use in all remaining computations. If the current timestep exactly matches one of the column headings, then an additional variable, isElevVolModDate, is set to TRUE and col is set to the that column minus 1. That is, for this dispatch, the previous relationship will be used, but will be adjusted at the end of the method.
Note:  If the Time Varying Elevation Volume method is not selected, then isTimeVaryingElevVolume and isElevVolModDate remain false and the column to use on the Elevation Volume Table is set to 1. See “Time Varying Elevation Volume” for details.
The dispatch method then proceeds as normal using the computed “col” in all references to the specified elevation volume table.
End of Each Dispatch Method
At the end of the dispatch method (the description applies first to solveMB_GivenInflowOutflow), once PE and Storage are known, if the isElevVolModDate is true, the method will lookup the PE on the Elevation Volume Table Time Varying but this time use col+1 and get S’. The new storage S’ is the reduced storage using the new EV relationship. The difference, S = S - S’, and is set on the Storage Adjustment from Elev Vol Table Change slot. Then the Storage slot is set to S’ and PreviousStorage[t+1] is set to S’. See “Elevation Volume Table Time Varying” and “Storage Adjustment from Elev Vol Table Change”.
The above procedure describes the solveMB_givenInflowOutflow. This same procedure is used for the following: solveMB_givenEnergyInflow and solveMB_givenInflowRelease. Once the new storage using the existing table is calculated, the new relationship can be used. If Pool Elevation (HW) is given (i.e. solveMB_givenOutflowHW), then the Pool Elevation is used to look up the storage using the existing and new tables. For the dispatch methods where Storage is known, the method will abort the run with an error that the Time Varying Elevation Volume method cannot be used on a timestep where the storage is given.
Limitations
This method changes fundamental information about the reservoir. As a result, there are certain operations that cannot be used with this method including the following:
• Target operations that span table modification dates
• Dispatching the reservoir with any of the givenStorage methods on a modification date. Non modification dates can use the givenStorage methods.
• Any of the following RPL functions: StorageToElevation, ElevationToStorage, and StorageToArea. If these functions are called on a reservoir with the Time Varying Elevation Volume selected, an error message will be posted. Instead use the “...AtDate” version of that function. I.e. use the StorageToElevationAtDate instead of the StorageToElevation function. Old models may need to be updated.
• There are many RPL functions like SolveOutflow, SolveStorage, GetMaxOutflowGivenInflow, etc that access the elevation volume relationship. These will access the correct table, but will always assume that the computation is being performed BEFORE any modifications to the relationship are made. That is, if you call the function and it is a modification timestep on the table, the function will use the previous column in all its computations. The relationship change is only considered at the end of the dispatch method, not in the RPL function.
Surface Area Modification
The Surface Area Modification category is dependent on having a valid evaporation method selected (i.e. any evaporation method except None or MonthlyEvaporationCalcInAnnual). The category will be added to all reservoirs and the default method in this category is None which performs no calculations and has no slots.
* None
This is the default, no-action method.
* Time Varying Elevation Area
The Time Varying Elevation Area method allows Elevation Area (EA) relationships that change at specified times. The Time Varying Elevation Area method is only available on Level Power and Storage reservoirs. Also, the method will only be available when the following default methods are selected in the following categories:
• Flood Control Release: only the None method is allowed
• Surcharge Release: only the None method is allowed
• Water Quality: None; Water Quality must be disabled
Slots Specific to This Method
Elevation Area Table Time Varying
Type: Table Slot
Units: Length and Area
Description: the tables that represent the Elevation Area relationship at various times in the run.
Information: The number of columns in this table should be set to one plus the number of times the Elevation Area relationship changes. The column headings contain the date corresponding to the change. When you add a column to this slot, it is given a date later then the last column. You can set the date from the Column -> Set Column Value menu. You can then type the date text or use the date time spinner to enter the appropriate date. The dialog will only let you enter dates that correspond to timesteps. (Care should be exercised when switching model timesteps.) The column is then placed in the correct order compared to the other column labels. Each column should have an entry for each row in the Pool Elevation column or an interpolation error may be issued during the run. The number of columns is equal to the number of changes plus one, i.e., if there is one change then there should be two columns. An example is shown below for a run that starts in Jan 1, 1910 and the reservoir Elevation Area changes three times. The column label of the first column of areas must be on or before the initial timestep. The times on the column map are an instant in time.
I/O: Input Only
 
Pool Elevation ft
24:00 Jan 1, 1910
Surface Area acre
24:00 Jan 1, 1935
Surface Area acre
24:00 Jan 1, 1953
Surface Area acre
24:00 Jan 1, 1970
Surface Area acre
5,100
0
0
0
0
5,120
10
9
8
7
5,150
15
14
13
12
5,200
20
19
18
17
5,250
25
24
23
22
Surface Area Adjustment to Elev Area Table Change
Type: Series Slot
Units: Area
Description: The surface area lost to sedimentation that occurs when the reservoir is resurveyed and a new Elevation Area Table is implemented.
Information: A positive number indicates area was added. A negative number indicates surface area was lost.
I/O: Output Only
The evaporation methods typically use the average Surface Area in the calculations. Because the average Surface Area may change when the new table becomes active, the computations assume that the Surface Area only changes at the end of a dispatch method. That is, on a modification timestep, the previous relationship is used in the evaporation and precipitation methods, then the Surface Area is modified at the end of the dispatch method. Thus, the modified surface area will be reflected in evap and precip computations at the NEXT timestep.
Note:  Even with this method selected, the original Elevation Area Table is still visible. Although it is not used when dispatching or other simulation or rulebased simulation, it is still a general slot that is used in optimization calculations and water quality.
The run proceeds as follows.
Start of Run
At the start of the run, if the Time Varying Elevation Area method is selected, a boolean variable isTimeVaryingElevArea will be set to TRUE. At the same time, a pointer is set that specifies to use the Elevation Area Table Time Varying table. All other computations now reference this pointer instead of the Elevation Volume Table. If the method is not selected, then the pointer is set to the Elevation Volume Table.
In Each Evap/Precip Method
At the start of each method, if the isTimeVaryingElevArea is true, then the method will determine which column of the table to use. It will compare the current timestep to the column headings on the table and determine which column to use. For example, if the current timestep is March 3, 1940 for the table example above, then it will set col = 2 (column numbering is zero based) for use in all remaining computations.
If the current timestep exactly matches one of the column headings, col is set to that column minus 1. That is, for this method, the previous relationship will be used. Also, the variable isElevAreaModDate, is set to TRUE. The computation proceeds as normal. That is, the estimate for surface area uses the original relationship, not the modified relationship.
End of Dispatch Method
At the end of the dispatch method, if the isElevAreaModDate is true, the method will lookup the PE on the Elevation Area Table Time Varying but this time use col+1 and get SA’. The new surface area SA’ is the modified surface area using the new EA relationship. The difference, SA = SA - SA’, is set on the Surface Area Adjustment to Elev Area Table Change slot. Then the Surface Area slot is set to SA’. This does not affect the evaporation or precipitation computation on this timestep.The new relationship will be used on the next timestep though.
Note:  If the Time Varying Elevation Area is not selected, then isTimeVaryingElevArea and isElevAreaModDate will remain false and the column to use on the Elevation Area Table is set to 1.
Limitations
This method changes fundamental information about the reservoir. As a result, there are certain operations that cannot be used with this method, including the following:
• Any of the following RPL functions: StorageToArea and ElevationToArea. If these functions are called on a reservoir with the Time Varying Elevation Area method selected, an error message will be posted. Instead use the “...AtDate” version of that function. I.e. use the ElevationToAreaAtDate instead of the ElevationToArea function.
• There are many RPL functions like SolveOutflow, SolveStorage, GetMaxOutflowGivenInflow, etc that access the elevation area relationship. These will access the correct table, but will always assume that the computation is being performed BEFORE any modifications to the relationship are made. That is, if you call the function and it is a modification timestep on the table, the function will use the previous column in all its computations. The relationship change is only considered at the end of the dispatch method, not in the RPL function. The new relationship will be used on the next timestep though.
Additional Hydropower Release
The Additional Hydropower Release category is used to calculate the additional release necessary to meet a hydropower demand.
The method is dependent on having the Phase Balancing or Operating Level Balancing flood control method selected. In addition, this category is dependent on having the Peak Power Equation with Off Peak Spill power calculation method selected. There are two methods: the default, no-action None method and the Meet Hydropower Load method.
See “Hydropower” in USACE‑SWD Modeling Techniques for details on using this method for USACE-SWD.
* None
This is the default method, there are no calculations or slots associated with this method.
* Meet Hydropower Load
The Meet Hydropower Load method is used by the COE- Southwestern Division to calculate the additional hydropower release necessary to meet a hydropower load. This method is executed from the HydropowerRelease() predefined rule function.
The following slots are associated with the method.
Additional Hydropower Release
Type: Series Slot
Units: FLOW
Description: The additional power release limited to prevent additional downstream flooding
Information: The value in this slot IS limited to prevent additional downstream flooding
I/O: output only
Proposed Additional Hydropower Release
Type: Series Slot
Units: FLOW
Description: The additional power release to meet a load
Information: The value in this slot is not limited to prevent additional downstream flooding. It is temporary only, the values are only set at runtime but not saved in the model file.
I/O: output only
This method determines the additional outflow required to meet the load; or if the load cannot be met, to maximize the power production. The function determines the outflow to be the minimum of:
• The Outflow calculated to meet the given Load. The method uses the user selected methods on the reservoir, i.e. it calls the Get Peak Power Equation with Off Peak Spill method and the selected tailwater method.
• The Outflow calculated such that the Pool Elevation would exactly equal the Minimum Power Pool Elevation.
• The Outflow calculated such that the Pool Elevation exactly equals the previous Pool Elevation minus the Maximum Power Pool Drawdown slot.
• The Outflow that generate the maximum possible Energy. This Energy is produced by running the turbines at max release (generator capacity) for the full timestep.
The method sets the Proposed Additional Hydropower Release slot and also returns the additional flow to the calling rule function. The rule function HydropowerRelease() then performs a check to ensure that no additional downstream flooding will occur. The rule then sets the Outflow and Additional Hydropower Release on the power reservoir.
See “HydropowerRelease” in RiverWare Policy Language (RPL) for more information on the HydropowerRelease function.
Load Calculation
When the Meet Hydropower Load method is selected, a category called Load Calculation becomes visible. In this category there are seven methods: None, Input Load, Annual Load, Monthly Load, Periodic Load, Seasonal Load and Seasonal Load Time. Most of the selected method in this category are executed at the beginning of each timestep so that the method is only called once per timestep but the information on the state of the system is available (such as previous Pool Elevation) to the method. Input Load and Seasonal Load time are not called at the beginning of the timestep as Input Load doesn’t have any computations and Seasonal Load Time is executed as described below. Below is a description of each method.
* None
This is the default method and has no slots associated with it. If this method is selected, an error is issued saying “Cannot find a selected method in the Load Calculation category.”
* Input Load
If this method is selected, the Load must be input or specified with a rule. If not valid, the run will abort with an error.
Slots Specific to This Method
Load
Type: Series Slot
Units: energy
Description: The desired energy that the power reservoir should produce
Information:  
I/O: Required Input or set by a rule
Dump Energy
Type: Series Slot
Units: Energy
Description: The exceed energy produced during the timestep.
Information: Calculated as Max(0, Energy - Load) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Thermal Purchase
Type: Series Slot
Units: Energy
Description: Energy shortage for the given timestep. It is the amount of additional energy that would be required to fully meet the Load
Information: Calculated as max (0, Load - Energy) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Operation Factor
Type: Series Slot
Units: Decimal
Description: The fraction of the timestep at which the turbines are running
Information: Calculated as Peak Time / Timestep Length. This is done at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output Only
* Annual Load
For the Annual Load method, the user provides the load values for each year of the run and a set of weekday and weekend monthly factors used to disaggregate the annual load to daily values.
Slots Specific to This Method
Annual Load
Type: Series Slot
Units: energy
Description: The load for each year of the run.
Information: The user must set the timestep for this series slot to be 1 Year. See the example in the table below.
Note:  Because this slot is annual, it is most likely different than the run timestep. As a result, if the user desires to synchronize objects, the user must select the toggle in the synchronization control to Exclude Slots with Different Timestep from Run. This will prevent changing the timestep of this slot when other slots are synchronized.
I/O: Input only
Load
Type: Series Slot
Units: energy
Description: The desired energy that the power reservoir should produce
Information: The load value is either a user input or set by a method in the Load Calculation category
I/O: Input or set by the method
Load Factor
Type: Periodic Slot
Units: none
Description: The factors used to disaggregate the yearly load to daily load
Information: The periodic slot contains a value for each month of the year. The first data column is the multiplying factor to disaggregate the annual load to a daily value for weekdays. The second data column contains the disaggregating factors for weekends. See the sample slots in the following table.
I/O: Input only
 
Annual Load
 
Load Factor
Month
Load (KWH)
 
Date
Weekday Load Factor
Weekend Load Factor
24:00 Dec 31, 1954
10,000
 
January 1
.041
0
24:00 Dec 31, 1955
11,000
 
February 1
.041
0
24:00 Dec 31, 1956
12,000
 
March 1
.083
.041
...
...
 
...
...
...
Dump Energy
Type: Series Slot
Units: Energy
Description: The exceed energy produced during the timestep.
Information: Calculated as Max(0, Energy - Load) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Thermal Purchase
Type: Series Slot
Units: Energy
Description: Energy shortage for the given timestep. It is the amount of additional energy that would be required to fully meet the Load
Information: Calculated as max (0, Load - Energy) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Operation Factor
Type: Series Slot
Units: Decimal
Description: The fraction of the timestep at which the turbines are running
Information: Calculated as Peak Time / Timestep Length. This is done at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output Only
* Monthly Load
For the Monthly Load method, the user provides the load values for each month of the run and a set of weekday and weekend monthly factors used to disaggregate the monthly values to daily values. The monthly load value is multiplied by the either the weekend or weekday factor and then divided by the number of weekdays or weekend days in the given month as applicable.
Slots Specific to This Method
Load
Type: Series Slot
Units: energy
Description: The desired energy that the power reservoir should produce
Information: The load value is either a user input or set by a method in the Load Calculation category
I/O: Input or set by the method
Load Factor
Type: Periodic Slot
Units: none
Description: The factors used to disaggregate the monthly load to daily load
Information: The periodic slot contains a value for each month of the year. The first data column is the multiplying factor to disaggregate the monthly load to a daily value for weekdays. The second data column contains the disaggregating factors for weekends. See the example below.
I/O: Input only
Monthly Load
Type: Series Slot
Units: energy
Description: The load for each month of the run.
Information: The user must set the timestep for this series slot to be 1 Month. See the sample slots in the table below. Because this slot’s timestep is 1 Month, it is most likely different than the run timestep. As a result, if the user desires to synchronize objects, the user must select the toggle in the synchronization control to Exclude Slots with Different Timestep from Run. This will prevent changing the timestep of this slot when other slots are synchronized.
I/O: Input only
 
Monthly Load
 
Load Factor
Month
Load (GWH)
 
Date
Weekday
Load Factor
Weekend
Load Factor
24:00 Jan 31, 1940
1.71
 
January 1
1
0
24:00 Feb 28, 1940
1.56
 
February 1
1
0
24:00 Mar 31, 1940
1.72
 
March 1
.9
.1
...
...
 
...
...
...
Dump Energy
Type: Series Slot
Units: Energy
Description: The exceed energy produced during the timestep.
Information: Calculated as Max(0, Energy - Load) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Thermal Purchase
Type: Series Slot
Units: Energy
Description: Energy shortage for the given timestep. It is the amount of additional energy that would be required to fully meet the Load
Information: Calculated as max (0, Load - Energy) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Operation Factor
Type: Series Slot
Units: Decimal
Description: The fraction of the timestep at which the turbines are running
Information: Calculated as Peak Time / Timestep Length. This is done at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output Only
* Periodic Load
For the Periodic Load method, the user provides a periodic slot that contains the load for both weekday and weekend days. During the run, the load is looked up from this slot.
Slots Specific to This Method
Load
Type: Series Slot
Units: energy
Description: The desired energy that the power reservoir should produce
Information: The load value is either a user input or set by a method in the Load Calculation category
I/O: Input or set by the method
Periodic Load
Type: Periodic Slot
Units: time vs energy and energy
Description: A periodic slot containing the load in units of Energy to be used for the run.
Information: The slot consists of two columns, one column for the weekday values, one for the weekend values. See the sample slots in the table below.
I/O: Input only
 
Date
Weekday Load (KWH)
Weekend Load (KWH)
January 1
100
20
February 1
120
30
March 1
120
20
Dump Energy
Type: Series Slot
Units: Energy
Description: The exceed energy produced during the timestep.
Information: Calculated as Max(0, Energy - Load) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Thermal Purchase
Type: Series Slot
Units: Energy
Description: Energy shortage for the given timestep. It is the amount of additional energy that would be required to fully meet the Load
Information: Calculated as max (0, Load - Energy) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Operation Factor
Type: Series Slot
Units: Decimal
Description: The fraction of the timestep at which the turbines are running
Information: Calculated as Peak Time / Timestep Length. This is done at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output Only
The method looks up the current date in the date column of the table and sets the value from the appropriate column on the Load slot.
* Seasonal Load
For the Seasonal Load method, the user provides two 3-dimensional periodic slots that contain the load for weekdays and weekends. During the run, the Load is looked up from the appropriate slot.
Slots Specific to This Method
Load
Type: Series Slot
Units: energy
Description: The desired energy that the power reservoir should produce
Information: The load value is either a user input or set by a method in the Load Calculation category
I/O: Input or set by the method
Seasonal Weekday Load
Type: Periodic Slot
Units: time vs energy vs length
Description: A periodic slot containing the date, column headings containing the energy load, and values in the table representing pool elevations
Information: The first column contains the date. The remaining columns represent the load in increasing order. The values in the table represent the pool elevations. See the example in the table below.
I/O: Input only
Seasonal Weekend Load
Type: Periodic Slot
Units: time vs energy vs length
Description: A periodic slot containing the date, column headings containing the energy load, and values in the table representing pool elevations
Information: The first column contains the date. The remaining columns represent the load in increasing order. See the sample slots in the table below; the values represent the pool elevations.
I/O: Input only
 
 
Load (MWH)
Date
100
200
300
400
January 1
5550 [ft]
5558
5565
5590
February 1
5550
5558
5565
5590
March 1
5550
5552
5560
5580
...
...
...
...
...
Dump Energy
Type: Series Slot
Units: Energy
Description: The exceed energy produced during the timestep.
Information: Calculated as Max(0, Energy - Load) at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Thermal Purchase
Type: Series Slot
Units: Energy
Description: Energy shortage for the given timestep. It is the amount of additional energy that would be required to fully meet the Load
Information: Calculated as max (0, Load - Energy) at the end of the Peak Power Equation with Off Peak Spill power method power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output only
Operation Factor
Type: Series Slot
Units: Decimal
Description: The fraction of the timestep at which the turbines are running
Information: Calculated as Peak Time / Timestep Length. This is done at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output Only
When this method is executed, first the appropriate periodic slot is selected depending on the type of day. Next, the day of year is looked up in the first column and the previous pool elevation is looked up in the column header. The method then uses the value in the table for the energy. The load is then written to the Load slot. As usual with periodic slots, the time range, number of columns, and interpolation/lookup configuration can be changed.
* Seasonal Load Time
For the Seasonal Load Time method, the user provides two 3-dimensional periodic slots that contain the fraction of a timestep that the turbines should operate for weekdays and weekends.
Slots Specific to This Method
Load
Type: Series Slot
Units: energy
Description: The desired energy that the power reservoir should produce
Information: For this method, the Load is set by a rule using the HydropowerRelease predefined function; see “HydropowerRelease” in RiverWare Policy Language (RPL).
I/O: Output only - Set by a rule. It cannot be input or it may cause the HydropowerRelease rule to fail giving unexpected results.
Load Time
Type: Series Slot
Units: time
Description: The desired time that the reservoir should operate at full turbine capacity
Information: The Load Time is the appropriate Seasonal Weekday (or Weekend) Load Fraction value multiplied by the Length. This is done of the timestep.
I/O: Output only
Seasonal Weekday Load Fraction
Type: Periodic Slot
Units: time vs fraction vs length
Description: A periodic slot containing the date, column headings containing the fraction of timestep, and values in the table representing pool elevations
Information: The first column contains the date. The remaining columns represent the fraction of timestep in increasing order. The values in the table represent the pool elevations. The column headings can be configured to be either decimal (0-1) or percentages (0-100%). See the example in table below.
I/O: Input only
Seasonal Weekend Load Fraction
Type: Periodic Slot
Units: time vs fraction vs length
Description: A periodic slot containing the date, column headings containing the fraction of timestep, and values in the table representing pool elevations
Information: The first column contains the date. The remaining columns represent the fraction of timestep in increasing order. The values in the table represent the pool elevations. The column headings can be configured to be either decimal (0-1) or percentages (0-100%). See the example in the table below.
I/O: Input only
 
 
Fraction of Timestep [%]
Date
10
20
30
40
January 1
5550 [ft]
5558
5565
5590
February 1
5550
5558
5565
5590
March 1
5550
5552
5560
5580
...
...
...
...
...
Dump Energy
Type: Series Slot
Units: Energy
Description: The exceed energy produced during the timestep.
Information: Calculated as Max(0, Energy - Load). If this method is selected, Load is not known until set by the rule calling the HydropowerRelease function. Therefore, for this method only, Dump Energy is calculated at the end of the timestep. It is not available to be accessed by other rules at the current timestep.
I/O: Output only
Thermal Purchase
Type: Series Slot
Units: Energy
Description: Energy shortage for the given timestep. It is the amount of additional energy that would be required to fully meet the Load
Information: Calculated as max (0, Load - Energy). If this method is selected, Load is not known until set by the rule calling the HydropowerRelease function. Therefore, for this method only, Thermal Purchase is calculated at the end of the timestep. It is not available to be accessed by other rules at the current timestep.
I/O: Output only
Operation Factor
Type: Series Slot
Units: Decimal
Description: The fraction of the timestep at which the turbines are running
Information: Calculated as Peak Time / Timestep Length. This is done at the end of the Peak Power Equation with Off Peak Spill power method; see “Peak Power Equation with Off Peak Spill”.
I/O: Output Only
When this method is executed, first the appropriate periodic slot is selected depending on the day of week. Next, the timestep is looked up in the first column and the previous pool elevation is looked up in the table. The method then uses the value in the column heading for the fraction of timestep. The Load Time is then calculated as the fraction of timestep times the timestep length. As usual with periodic slots, the time range, number of columns, and interpolation/lookup configuration can be changed.
In this method, the Load value is determined by the method but is not set until the rule calling the Hydropower Release function completes execution. This is different than the other methods in the Load Calculation category. A special function call determines the energy produced if the reservoir is run at generator capacity for the Load Time. This energy is equivalent to the Load and is used in all subsequent calculations where Load is required.
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”.
Disable Reservoir Processes
This category holds the Pass Inflows method which allows you to disable reservoir processes and pass inflows as though the reservoir wasn’t there.
* None
This is the default, no-action method. When this method is selected all physical processes are enabled and executed as appropriate.
* Pass Inflows
This method disables many of the reservoir physical processes and passes the inflows through the reservoir. This method can be used to temporarily remove the presence of a reservoir and compute flows as though they were unregulated, unconstrained or pre-project.
No Slots are associated with this method.
This method does the following:
• Changes the workspace icon. When this method is selected, the icon on the workspace is modified, as shown, to indicate the Reservoir is passing inflows.
• Enables alternative dispatch method. When this method is selected, ONLY the Outflow Equals Sum of Inflows dispatch method is available. See “Outflow Equals Sum of Inflows” for details on this dispatch method.
Computation of Flows for a Fully Unregulated System
To compute the flows at any point in the system without the effect of any reservoir, run two simulations. The first run computes the unregulated flows, the second computes the regulated flows, often using rulebased simulation. Results can be analyzed using snapshots. Simple scripts can be used to modify the system and make the runs. Following is a description of the conceptual approach.
1. Compute unregulated flows by executing a script. See “Script Management” in Automation Tools for details on scripts. You can use the Script Dashboard to do the following:
a. Set the Pass Inflows method on each reservoir.
b. Set the run controller to Simulation.
c. Run the model. With the new method, the reservoirs pass inflows (including Hydrologic Inflow and Return Flow) but no other physical processes are made. When the reservoirs dispatch, they will set Outflow = Inflows, thus propagating the flows downstream.
d. Create snapshots of desired slots.
2. You could then look at the results if desired.
3. Compute regulated flows by executing a script, which does the following:
a. Set the method on each reservoir to its normal regulated mode (None method in the Disable Reservoir Processes category).
b. Set the run control to Rulebased Simulation.
c. Load the RBS ruleset set if necessary.
d. Run the model.
4. At this point, the regulated results are in the objects and slots. They can be compared with the snapshots from the unregulated run.
The process above assumes two scripts, steps 1 and 3; these could be combined into one script that fully automates the runs if desired. With this approach it is easy for the user to run just the regulated system, the unregulated system or both.
This approach presented assumes that all reservoirs are unregulated. If only a portion of the system is unregulated, then you will need to decide how the other reservoirs behave, especially if they are dependent on the disabled reservoir. Additional script actions can be used to disable rules or set values in the system. See “Modeling Unregulated Conditions” in USACE‑SWD Modeling Techniques for details on the USACE approach to unregulated conditions.
Dispatch Methods
The dispatch method used to solve the Level Power Reservoir, is dependent upon the selection made in the Hydrologic Inflow category and Disable Reservoir Processes categories.
* solveMB_givenInflowHW
Solves the mass balance equation when Inflow and headwater (Pool Elevation) are known.
Required Knowns
• Inflow
• Hydrologic Inflow, unless None is selected in the Hydrologic Inflow category.
Required Unknowns
• Storage
• Outflow
• Energy
First the dispatch method finds the Storage associated with the known Pool Elevation using the Elevation Volume Table. Then, if Pool Elevation is flagged as a TARGET, the method performs the appropriate target calculations. Next, the method checks for a linked Canal Object. If a Canal object is linked and has not yet solved, the dispatch method exits and waits for the Canal to solve before continuing.
If the above checks pass, the mass balance equation is solved as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. Inflow in the mass balance equation is the net inflow to the reservoir, including hydrologic inflows, return flows, and diversions if appropriate.
The spill calculation method is then executed followed by the power calculation method. If there are excess outflows from the power calculation method, the spill method is executed again to distribute the excess.
Energy in storage, spilled energy and future value calculations are performed if the user has selected them.
* solveMB_givenOutflowHW
Solves the mass balance equation when Outflow and headwater (Pool Elevation) are known.
Required Knowns
• Outflow
• Hydrologic Inflow, unless None is selected.
Required Unknowns
• Storage
• Inflow
1. First the dispatch method calculates the Storage using the Elevation Volume Table and the known Pool Elevation. Then it performs the appropriate target calculations if Pool Elevation is flagged as a TARGET
Note:  If Outflow is flagged MAX CAPACITY a target operation cannot be performed.
2. Next, the method checks for a linked Canal Object. If a Canal Object is linked and has not yet solved, the dispatch method waits for the Canal to solve before continuing. If Outflow is flagged MAX CAPACITY, it is set as the sum of the maximum spill and maximum turbine release.
3. The mass balance is carried out as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. Inflow calculated by the mass balance equation includes the effects of hydrologic inflow, diversion and return flow. The Inflow slot is adjusted accordingly to account for these additional terms.
4. The spill method is then executed. Next, the Energy is checked. If Energy is input, the power release method is executed instead of the power calculation method. Regardless of whether or not Energy is input, the Tailwater Base Value is checked. If the Tailwater Base Value (from a downstream reservoir) is not yet known, the method is exited and waits until the Tailwater Base Value is known. Next, the power calculation method is executed. Then the Turbine Release is calculated. After Turbine Release has been calculated, the spill method may be executed again if there are excess outflows. If the calculated Inflow is less than zero, and the Hydrologic Inflow And Loss method is selected, Inflow is set to 0.0 and Hydrologic Inflow Adjust is calculated.
5. Energy in storage, spilled energy and future value calculations are performed if the user has selected them. The dispatch method is then completed.
* solveMB_givenInflowStorage
Solves the mass balance equation when Inflow and Storage are given.
Required Knowns
• Inflow
• Storage
• Hydrologic Inflow, unless None is selected.
Required Unknowns
• Outflow
• Energy
First, the method solves for Pool Elevation using the known Storage and the Elevation Volume Table. Then, if Storage is flagged as a TARGET, the appropriate target calculations are performed. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. Next, the method checks for a linked Canal Object. If a Canal Object is linked and has not yet solved, the dispatch method waits for the Canal to solve before continuing.
The mass balance is carried out as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. Inflow in the mass balance equation is the net inflow to the reservoir, including hydrologic inflows, return flows, and diversions if appropriate.
The spill calculation method is then executed followed by the power calculation method. If there are excess outflows from the power calculation method, the spill method is executed again to distribute the excess.
Energy in storage, spilled energy and future value calculations are performed if the user has selected them. The dispatch method is then completed.
* solveMB_givenOutflowStorage
Solves the mass balance equation when Outflow and Storage are known.
Required Knowns
• Outflow
• Storage
• Hydrologic Inflow, unless None has been selected.
Required Unknowns
• Inflow
First the dispatch method calculates the Pool Elevation using the Elevation Volume Table and the known Storage. Then the appropriate target calculations are performed if Storage is flagged as a TARGET (if Outflow is flagged MAX CAPACITY a target operation cannot be performed on Storage). If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. Next the method checks for a linked Canal Object. If a Canal Object is linked and has not yet solved, the dispatch method waits for it to solve before continuing. If Outflow is flagged MAX CAPACITY, it is set as the sum of the maximum spill and maximum turbine release.
The mass balance is carried out as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. The Inflow calculated by the mass balance equation includes the effects of hydrologic inflow, diversion and return flow. The Inflow slot is adjusted accordingly to account for these additional terms.
The spill method is then executed followed by the power calculation method. If Energy is input, the power release method is executed instead of the power calculation method. After Turbine Release has been calculated, the spill method may be executed again if there are excess outflows.
Energy in storage, spilled energy and future value calculations are performed if the user has selected them. The dispatch method is then completed.
* solveMB_givenInflowOutflow
Solves the mass balance equation when Inflow and Outflow are known.
Required Knowns
• Inflow
• Outflow
• Hydrologic Inflow, unless None is selected.
Required Unknowns
• Storage
First, the previous timestep’s Pool Elevation and Storage are checked. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If the Canal object is linked to the reservoir and has not yet solved, the dispatch method is exited and waits for the Canal to solve before continuing.
If Outflow is flagged MAX CAPACITY, it is solved for by the function getMaxOutGivenIn(). This function uses a convergence algorithm; see “Reservoir Convergence” for details. The Outflow slot is set equal to the computed maximum outflow value.
If the Outflow slot is set by the Surcharge Release flag, the surcharge release is computed and the Outflow slot is set equal to surcharge release for all timesteps in the forecast period (the surcharge release methods compute a surcharge release forecast). See “Description of Logic” in USACE‑SWD Modeling Techniques for additional information on dispatching when using the Surcharge Release Flag.
The mass balance is then carried out as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. The inflow term includes the effects of hydrologic inflow, diversion and return flow. Since the evaporation, bank storage, seepage and precipitation terms depend upon the Storage value, the mass balance solution is an iterative process. (See the following Note.) Pool Elevation is calculated using the Elevation Volume Table and the calculated Storage value.
If the Outflow is less than zero, the method is exited.
The spill method is then executed followed by the power calculation method. If Energy is input, the power release method is executed instead of the power calculation method. After Turbine Release has been calculated, the spill method may be executed again if there are excess outflows.
Energy in storage, spilled energy and future value calculations are performed if the user has selected them. The dispatch method is then completed.
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
Solves the mass balance equation when Energy and Inflow are given.
Required Knowns
• Inflow
• Energy
• Hydrologic Inflow, unless None is selected.
Required Unknowns
• Storage
First, the previous timestep’s Pool Elevation and Storage are checked. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If the Canal object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve before continuing. Then the selected spill and tailwater methods are executed. The selected power release method is executed and Outflow is set as Turbine Release plus Spill.
The mass balance equation used to solve for Storage is as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. The inflow term includes the effects of hydrologic inflow, diversion and return flow. Since the evaporation, bank storage, seepage and precipitation terms depend upon the Storage value, the mass balance solution is an iterative process. (See the following Note.) Pool Elevation is then calculated using the Elevation Volume Table and the calculated Storage value.
An iterative process is then executed in which the storage solution described above iterates within another iterative loop which solve for Outflow. When a new Storage value is calculated it is used to recompute Spill, Operating Head, and Turbine Release. Outflow is then set as the sum of Spill and Turbine Release. The iteration process continues until the solution stabilizes. When the iterations are complete, the power calculation method is executed.
Energy in storage, spilled energy and future value calculations are performed if the user has selected them. The dispatch method is then completed.
Note:  In specific cases when Storage is very close to zero, the iterative solution for Storage 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
Solves the mass balance equation when Energy and Storage are known.
Required Knowns
• Energy
• Storage
• Hydrologic Inflow, unless None is selected.
Required Unknowns
• Inflow
First, the method calculates Pool Elevation using the Elevation Volume Table and the known Storage value. If Storage is flagged as a TARGET, the reservoir is overdetermined and a RiverWare error is posted and the run is aborted. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If the Canal object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve before continuing. Spill is then calculated according to the user specified method. The evaporation, bank storage, and seepage calculations are then performed.
An iterative process is then used to calculate Outflow. The Tailwater method is executed to solve for operating head. The value of operating head is used to determine the Turbine Release from the user selected power release method. Outflow is then set as the sum of Turbine Release and Spill. This process is then repeated until the value of Outflow converges.
Inflow is then calculated from the mass balance equation as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. The inflow term calculated by the mass balance equation includes the effects of hydrologic inflow, diversion and return flow. The Inflow slot is adjusted accordingly to account for these additional terms.
Power, Energy in storage, spilled energy and future value calculations are performed if the user has selected them.
* solveMB_givenEnergyHW
Solves the mass balance equation when Energy and headwater (Pool Elevation) are known.
Required Knowns
• Energy
• Hydrologic Inflow, unless None is selected.
Required Unknowns
• Storage
• Inflow
First the Storage is computed using the Elevation Volume Table and the known Pool Elevation. If Pool Elevation is flagged as a TARGET, the reservoir is overdetermined and a RiverWare error is posted and the run is aborted. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If the Canal object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve before continuing. Spill, evaporation, bank storage and seepage are then calculated according to the user specified methods.
An iterative process is used to calculate Outflow. The Tailwater method is executed to solve for operating head. The value of operating head is used to determine the Turbine Release from the user selected poser release method. Outflow is then set as the sum of Turbine Release and Spill. This process is then repeated until the value of Outflow converges.
Inflow is then calculated from the mass balance equation as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. The inflow term calculated by the mass balance equation includes the effects of hydrologic inflow, diversion and return flow. The Inflow slot is adjusted accordingly to account for these additional terms.
Power, Energy in storage, spilled energy and future value calculations are performed if the user has selected them. The dispatch method is then completed.
* solveMB_givenInflowRelease
This dispatch method executes when the following dispatch conditions are met.
Required Knowns
• Inflow
• Hydrologic Inflow, unless None is selected.
Required Unknowns
• Energy
• Storage
• Outflow
First, the previous timestep’s Pool Elevation and Storage are checked. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. The dispatch method then checks if a Canal Object is linked. If it is linked, a RiverWare error is flagged and the run is aborted. The Canal object cannot be solved with this dispatch method. A check is also performed to see if Spill is input. If Spill is input, a RiverWare error is posted and the run is aborted. Only Regulated Spill and Bypass may be input for this method.
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.
Then mass balance occurs. 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:
Storage is solved as follows:
The mass balance equation may include the effects of evaporation, bank storage, seepage, or precipitation depending on the selected user methods. The inflow term includes the effects of hydrologic inflow, diversion and return flow. Since the evaporation, bank storage, seepage and precipitation terms depend upon the Storage value, the mass balance solution is an iterative process. (See note below.) Pool Elevation is calculated using the Elevation Volume Table and the calculated Storage value.
After the Storage is computed, mass balance process is compete, the spill calculation method is executed. Unregulated Spill takes up any error in the solution process. For this reason, it may not conform to the Unregulated Spill Table.
Power, Energy in Storage, spilled energy and future value calculations are performed if the user has selected them. The dispatch method is then completed.
Note:  In special 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_givenInflowOutflowStorage
Solves for Hydrologic Inflow when the Solve Hydrologic Inflow method is selected. Inflow, Outflow, and Storage must be known for this method to solve.
Required Knowns
• Outflow
• Storage
• Inflow
Required Unknowns
First the method checks if Outflow is flagged MAX CAPACITY. The MAX CAPACITY flag cannot be used when both Inflow and Storage are known. Pool Elevation is then calculated using the Elevation Volume Table and the known Storage value. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If the Storage slot is flagged TARGET a RiverWare error is posted and the run is aborted. If the Canal object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve before continuing. The user selected evaporation, bank storage, and seepage methods are then executed.
The the hydrologic inflow is found with the following equation (all values are converted to flows):
This equation may or may not contain other elements reflecting the user method choices (these include Evaporation (+), Precipitation(-), Seepage(+), Bank storage(+), Return Flow(‑), Diversion (+), and Flow TO/FROM Pumped Storage). Spill and release are then found according to the user selected methods.
If Outflow is determined to be less than zero, the method is exited.
The spill method is then executed followed by the power calculation method. If Energy is input, the power release method is executed instead of the power calculation method. After Turbine Release has been calculated, the spill method may be executed again if there are excess outflows.
Energy in storage, spilled energy and future value calculations are performed if the user has selected them.
* solveMB_givenInflowOutflowHW
Solves for Hydrologic Inflow when the Solve Hydrologic Inflow method is selected. Inflow, Outflow, and headwater (Pool Elevation) must be known for this method to solve.
Required Knowns
• Outflow
• Inflow
Required Unknowns
• Storage
First the method checks if Outflow is flagged MAX CAPACITY. The MAX CAPACITY flag cannot be used when both Inflow and Storage are known. Storage is then calculated using the Elevation Volume Table and the known Pool Elevation value. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If the Pool Elevation slot is flagged TARGET, a RiverWare error is posted and the run is aborted. If a Canal Object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve before continuing. The user selected evaporation, bank storage, and seepage methods are then executed.
The hydrologic inflow is found with the following equation (all values are converted to flows):
This equation may or may not contain other elements reflecting the user method choices (these include Evaporation (+), Precipitation(-), Seepage(+), Bank storage(+), Return Flow(‑), Diversion (+), and Flow TO/FROM Pumped Storage).
If Outflow is determined to be less than zero, the method is exited.
The spill method is then executed followed by the power calculation method. If Energy is input, the power release method is executed instead of the power calculation method. After Turbine Release has been calculated, the spill method may be executed again if there are excess outflows.
Energy in storage, spilled energy and future value calculations are performed if the user has selected them. The dispatch method is then completed.
* Outflow Equals Sum of Inflows
This dispatch method is only available when the Pass Inflows method is selected (see “Pass Inflows”). It has the following dispatch conditions.
Required Knowns
• Inflow
Required Unknowns
• Outflow
This method uses the following process.
1. An error is issued if any of the following are linked, specified as inputs, and/or are not zero:
– Canal Flow,
– Diversion,
– Flow TO Pumped Storage,
– Flow FROM Pumped Storage
– Seepage
2. An error is issued if:
– Any flags are set on Outflow (an over-determination error will be issued).
– Water Quality is enabled on this reservoir
3. Inflow Sum and Total Inflows are computed as usual; see “Total Inflows” for details.
4. The following equation is solved.
5. Then the dispatch method finishes successfully and exits.
Note:  Hydrologic Inflow disaggregation and forecasting are performed at the beginning of the run or the timestep. Therefore, these inflows to the reservoir are included in the outflow. See “Incremental Hydrologic Inflows on Subbasin” and “Generate Forecast Hydrology” for details.
None of the other physical process methods are executed, however, even though they may have method selections and slots visible. These include the following:
– Precipitation and Evaporation
– Spill
– Energy in Storage
– Seepage
– Bank Storage
– Tailwater
– Operating Level
– Power
 
Revised: 06/03/2019