Objects and Methods

Slope Power Reservoir

Similar to the Level Power Reservoir, except Storage includes the wedge formed by a sloped water surface.

General Slots

Backwater Elevation

Type: Series Slot

Units: LENGTH

Description: water surface elevation at the upstream end of a slope power reservoir

Information:

I/O: Optional; can be input or linked.

Links: Can be linked to the Tailwater Elevation or Tailwater Base Value slots of an upstream reservoir.

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

Links: 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.

Convergence Percentage

Type: Table

Units: NONE

Description: A percentage value ranging from 0 to 1 used for convergence in all iterative calculations

Information: See “Reservoir Convergence” for more information on the convergence algorithm

I/O: Optional; defaults to 0.0001 if not input.

Links: Not linkable

Diversion

Type: SeriesSlot

Units: FLOW

Description: flow from the reservoir to a diverting object

Information: If not linked or input it is set to zero.

I/O: Optional; may be input or linked or neither

Links: May be linked to the Total Diversion slot on an Agg Diversion Site or the Total delivery Request slot on an AggDistribution Canal.

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

Links: Not linkable

Elevation Volume Table

Type: Table

Units: LENGTH vs. VOLUME

Description: Reservoir Pool Elevation vs. Reservoir Storage

Information:

I/O: Required input

Links: Not linkable

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.

Links: Usually not linked

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.

Links: May be linked to the Outflow slot of a Pumped Storage object.

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

Links: May be linked to the Pumped Flow slot of a Pumped Storage object.

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.

Links: May be linked to one or more outflow slots of upstream objects.

Inflow 2

Type: Series Slot

Units: FLOW

Description: additional inflow slot for upstream inflows that do not contribute to the wedge storage

Information:

I/O: Optional; defaults to zero if not input and not linked

Links: Can be linked to the Outflow of an upstream object.

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.

Links: Not linkable

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

Links: Usually not linked

Outflow

Type: Series Slot

Units: FLOW

Description: outflow from reservoir

Information: The outflow from a is equal to the sum of the Turbine Release and the Spill. May be linked to the inflow slot of a downstream object. If not input by the user, it is set through either the mass balance computations or the propagation of values across the link.

I/O: Optional; if not input by the user, it is set through either the mass balance computations or the propagation of values across the link.

Links: May be linked to the inflow slot of a downstream object.

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.

Links: May be linked to Tailwater Elevation or Tailwater Base Value of an upstream object or to Elevation 1 or Elevation 2 of a Canal object.

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

Links: Not linkable

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.

Links: May be linked to one or more Return Flow slots on Water User objects or the Total Return Flow slot on the Agg Diversion Site objects.

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).

Links: Usually not linked

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.

Links: Usually not linked

Tailwater Elevation

Type: SeriesSlot

Units: LENGTH

Description: water surface elevation on the downstream side of the dam

Information: It can be linked to the Pool Elevation or Backwater Elevation of a downstream reservoir if the Linked or Input method is selected for the Tailwater category. Otherwise, it is calculated by the user method selected. It is used to compute the Operating Head used in the power calculations.

I/O: Optional; can be input, linked or calculated.

Links: 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.

Total Inflows

Type: SeriesSlot

Units: Flow

Description: Summary slot displaying the flows into and out of the reservoir excluding the flows through the outlet works

Information: Total Inflows is calculated using the following equation. Any component that is not in use or is not valid defaults to zero.

I/O: Output only

Links: Not linkable

Inflow Sum

Type: Series

Units: Flow

Description: Sum of the total flows entering the reservoir at each timestep

Information: Inflow Sum is calculated using the following equation.

I/O: Output only

Links: Not Linkable

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.

Links: Usually not linked

Note: The initial (Beginning of Run) value for either Pool Elevation or Storage must be input by the user.

User Methods

Power

The methods in this category can be used on all types of power reservoir objects. See “Power”.

Power Release

The methods in this category can be used on all types of power reservoir objects. See “Power Release”.

Power Unit Information

The methods in this category can be used on all types of power reservoir objects. See “Power Unit Information”.

Input Energy Adjustment

The methods in this category can be used on all types of power reservoir objects. See “Input Energy Adjustment”.

Power Plant Failure

The methods in this category can be used on all types of power reservoir objects. See “Power Plant Failure”.

Energy in Storage

The methods in this category can be used on all types of reservoir objects. See “Energy in Storage”.

Tailwater

The Tailwater methods (available in the Tailwater category of the User Selectable Methods) calculate the Tailwater Elevation of a Level Power Reservoir. The Tailwater Elevation represents the water surface elevation immediately downstream of the Power Plant. This parameter is required to calculate the Operating Head of the Power Reservoir which is used to calculate either the Energy or Turbine Release of that Reservoir. The Tailwater methods are dependent upon the Reservoir being a Slope Power Reservoir and a valid Power method (available in the Power category of the User Selectable Methods) being selected. These methods require a valid Outflow to perform their calculations.

None

This is the default method in the Tailwater category. This method performs no calculations. There are no slots specifically associated with this method.

Linked or Input

The Linked or Input method allows the user to either input values for the Tailwater Elevation or link the Tailwater Base Value to a slot (Pool Elevation or Backwater Elevation) on a downstream Reservoir. If the Tailwater Base Value is linked, the Tailwater Elevation cannot be input by the user. If the Tailwater Base Value is not linked, the Tailwater Elevation must be input by the user. The Tailwater Elevation is determined by following procedure if it is not input (i.e. the Tailwater Base Value is linked).

Slots Specific to This Method

Tailwater Base Value

Type: SeriesSlot

Units: LENGTH

Description: elevation of tailwater or base elevation used to compute elevation of tailwater

Information:

I/O: Optional; may be input or set by a link.

Links: May be linked to the Pool Elevation or Backwater Elevation of a downstream Reservoir.

The Linked or Input user method does not explicitly perform any calculations. There are however many logical evaluations performed in this method. The Linked or Input method is discussed below.

If a value for the Tailwater Base Value has been calculated by another user method or propagated through a link, the temporary value for the Tailwater Base Value (TWBaseValueTemp) is set equal to the calculated or linked Tailwater Base Value.

If the Tailwater Base Value is linked to another slot, the following steps are performed.

1. If the Tailwater Elevation is input, a RiverWare error is flagged and the run is aborted.

2. If TWBaseValueTemp is known, the Tailwater Elevation is set equal to the TWBaseValueTemp.

3. If TWBaseValueTemp is not known, but the previous timestep’s Tailwater Elevation is known, the Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.

4. If neither the TWBaseValueTemp nor the previous timestep’s Tailwater Elevation is known and the previous timestep was the initial timestep of the simulation, a RiverWare error is flagged and the simulation run is aborted.

5. If neither the TWBaseValueTemp nor the previous timestep’s Tailwater Elevation is known and the previous timestep was not the initial timestep, the method is exited and waits for more information.

If the Tailwater Base Value is not linked to another slot, Tailwater Elevation must be input. If the Tailwater Elevation is not input, a RiverWare error is flagged and the simulation run is aborted.

Base Value Only

The Base Value Only method is similar to the Linked or Input method. If this method is selected, the user must either input values directly into the Tailwater Base Value slot or link the Tailwater Base Value slot to either the Pool Elevation slot or the Backwater Elevation slot of the downstream Reservoir. Either the initial Tailwater Elevation or the initial Tailwater Base Value must be input by the user for this method to execute successfully. The Tailwater Elevation for any timestep is computed as the average Tailwater Base Value over the timestep.

Slots Specific to This Method

Tailwater Base Value

Type: SeriesSlot

Units: LENGTH

Description: elevation of tailwater or base elevation of tailwater is used to compute the tailwater elevation

Information:

I/O: Optional; may be input or linked.

Links: May be linked to either the Pool Elevation slot or the Backwater Elevation slot of a downstream Reservoir.

This method is based on logic similar to that of the Linked or Input method. The Base Value Only user method performs many logical evaluations to set the Tailwater Elevation. This method is described below.

The temporary Tailwater Base Value (TWBaseValueTemp) is set equal to the Tailwater Base Value if the Tailwater Base Value was calculated by another user method or set via a link.

If the Tailwater Base Value is linked to another slot, the following steps are performed.

1. If the previous timestep’s Tailwater Base Value is not known, and both the previous timestep’s Tailwater Elevation and TWBaseValueTemp are known, the Tailwater Elevation is calculated as follows:

where Tailwater Elevation (-1) is the previous timestep’s Tailwater Elevation.

2. If neither the previous timestep’s Tailwater Base Value nor the TWBaseValueTemp is known but the previous timestep’s Tailwater Elevation is known, the current timestep is set equal to the previous timestep’s Tailwater Elevation.

3. If neither the previous timestep’s Tailwater Base Value nor the previous timestep’s Tailwater Elevation is known and the previous timestep is the initial timestep, a RiverWare error is posted and the simulation run is aborted.

4. If neither the previous timestep’s Tailwater Base Value nor the previous timestep’s Tailwater Elevation is known and the previous timestep is not the initial timestep, more information must be known. The method is exited and waits for more information to be known.

5. If both the previous timestep’s Tailwater Base Value and the TWBaseValueTemp are known, the Tailwater Elevation is calculated as follows:

6. If the previous timestep’s Tailwater Base Value is known but TWBaseValueTemp is not known, Tailwater Elevation is set equal to the previous timestep’s Tailwater Base Value.

If the Tailwater Base Value is not linked, the following steps are performed.

1. If the Tailwater Elevation is not known and the TWBaseValueTemp is known, the Tailwater Elevation is set equal to the TWBaseValueTemp.

2. If neither the Tailwater Elevation nor the TWBaseValueTemp are known, a RiverWare error is flagged and the simulation run is aborted.

Base Value Plus Lookup Table

The Base Value Plus Lookup Table method computes the Tailwater Elevation. This is done by adding the average Tailwater Base Value (over the timestep) to a function of Outflow determined by the Tailwater Table. The Outflow value used to find the corresponding Tailwater value on the Tailwater Table is either the value of the local variable Flow or the value of the Outflow slot. The Tailwater Base Value may be input by the user or linked to either the Pool Elevation slot or the Backwater Elevation slot of a downstream Reservoir. If the Tailwater Base Value is neither input nor linked, it is assumed to be zero.

Slots Specific to This Method

Tailwater Base Value

Type: SeriesSlot

Units: LENGTH

Description: the base elevation of the tailwater

Information:

I/O: Optional; can be input or linked.

Links: May be linked to either the Pool Elevation slot or the Backwater Elevation slot of a downstream Reservoir.

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

Links: Not linkable

This method is based on logic similar to that of the Linked or Input method. The Base Value Plus Lookup Table user method performs many logical evaluations to set the Tailwater Elevation. This method is described below.

The temporary Tailwater Base Value (TWBaseValueTemp) is set equal to the Tailwater Base Value if the Tailwater Base Value was calculated by another user method or set via a link.

If the Local Info variable Flow is known, the local variable, tempflow, is set equal to Flow. If the Local Info variable Flow is not known, but the Outflow is known, tempflow is set equal to Outflow.

If the tempflow value is known, the following steps are taken to determine the Tailwater Elevation.

If the Tailwater Base Value is linked (and tempflow is known), the following steps are performed.

1. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known, TWTemp (a local variable) is obtained from a table interpolation performed on the Tailwater Table using tempflow. The Tailwater Elevation is calculated.

2. If TWBaseValueTemp is known but the previous timestep’s Tailwater Base Value is known, but the previous timestep’s Tailwater Basic Value is not known. TWTemp is obtained from a table interpolation performed on the Tailwater Table using tempflow. The Tailwater Elevation is then calculated.

3. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Base Value is known, TWTemp is obtained from a table interpolation performed on the Tailwater Table using tempflow. The Tailwater Elevation is then calculated.

4. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value are known but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.

5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value is known and the previous timestep is the initial timestep of the run, a RiverWare error is posted and the run is aborted.

6. If neither the TWBaseValueTemp nor the previous timestep’s Tailwater Base Value is known and the previous timestep is not the initial timestep of the run, the method is exited and waits for more information.

If the Tailwater Base Value is NOT linked (and tempflow is known), the following steps are performed.

1. If TWBaseValueTemp is known, TWTemp is obtained from a table interpolation performed on the Tailwater Table using tempflow. The Tailwater Elevation is then calculated.

2. If TWBaseValueTemp is not known, the Tailwater Elevation is obtained from a table interpolation performed on the Tailwater Table using tempflow.

The only case where tempflow is not known is when Outflow is not known. This scenario only occurs at the first timestep in one of the three given Energy dispatch methods. The following steps are performed to determine the Tailwater Elevation if tempflow is not known.

If the Tailwater Base Value is linked (and tempflow is not known), the following steps are taken.

1. If TWBaseValueTemp and the previous timestep’s Tailwater Elevation are known, the Tailwater Elevation is calculated.

2. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known but the previous timestep’s Tailwater Elevation is not known, Tailwater Elevation is calculated.

3. If TWBaseValueTemp is known, but neither the previous timestep’s Tailwater Elevation nor the previous timestep’s Tailwater Base Value are known, Tailwater Elevation is set equal to TWBaseValueTemp.

4. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.

5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Elevation are known, but the previous timestep’s Tailwater Base Value is known, Tailwater Elevation is set equal to the previous timestep’s Tailwater BaseValue.

6. If the previous timestep is the initial timestep of the run, and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, a RiverWare error is posted and the simulation run is aborted.

7. If the previous timestep is NOT the initial timestep of the run, and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, the method is exited and waits for more information to execute.

If the Tailwater Base Value is not linked (and tempflow is NOT known), the following procedures are performed.

If the Tailwater Elevation is known, the method is exited because no calculations need to be performed.

8. If the Tailwater Elevation is NOT known, and TWBaseValueTemp is NOT equal to zero, Tailwater Elevation is set equal to TWBaseValueTemp.

9. If the Tailwater Elevation is NOT known and either the temporary Tailwater Base Value is NOT known or equal to zero or both, Tailwater Elevation is set equal to the elevation corresponding to zero on the Tailwater Table.

Following are definitions of terms used in these equations.

TWBaseValueTemp

A temporary value for the Tailwater Base Value. This value may be determined from another method or propagated across a link.

tempflow

A local variable used as the outflow from the Reservoir.

TWTemp

A local variable used to represent the incremental increase in the Tailwater Elevation over the Tailwater Base Value.

Tailwater Elevation (-1)

The Tailwater Elevation at the previous timestep.

Tailwater Base Value (-1)

The Tailwater Base Value at the previous timestep.

Stage Flow Lookup Table

The Stage Flow Lookup Table method is similar to the other methods for determining Tailwater Elevation. The Tailwater Elevation is obtained from a 3-dimensional table relating Outflow, Downstream Stage, and the corresponding Tailwater Elevation for most cases. The data in this table must be input by the user. The value for Downstream Stage that is used in this method is the larger of the Tailwater Reference Elevation or the Tailwater Base Value if the Tailwater Base Value is linked to a downstream elevation. If the Tailwater Base Value is not linked, the temporary Tailwater Base Value is used as the Downstream Stage. An average value for the Tailwater Elevation over the timestep is used whenever possible.

Slots Specific to This Method

Stage Flow Tailwater Table

Type: Table

Units: FLOW vs. LENGTH vs. LENGTH

Description: Reservoir Outflow vs. Downstream Elevation (Tailwater Base Value) vs. Tailwater Elevation

Information: Data must be entered into the table in increasing blocks of the same Outflow value for the three-dimensional table interpolator to work correctly. For every block of same Outflows in column 1, Stages should be listed in increasing order in column 2, and the corresponding Tailwater Elevations in column 3.

Outflow | Downstream Stage | TW Elevation |
---|---|---|

100 | 500 | 510 |

100 | 550 | 560 |

100 | 600 | 610 |

200 | 500 | 520 |

200 | 550 | 570 |

200 | 600 | 620 |

300 | 500 | 530 |

300 | 550 | 580 |

300 | 600 | 630 |

I/O: Required input

Links: Not linkable

Tailwater Base Value

Type: SeriesSlot

Units: LENGTH

Description: base elevation of the tailwater

Information:

I/O: Optional; can be input or set by a link.

Links: May be linked to either the Pool Elevation slot or the Backwater Elevation slot of a downstream Reservoir.

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

Links: Not linkable

The Stage Flow Lookup Table user method performs many logical tests to determine the Tailwater Elevation. This method is described below.

The first step in this method is to check and see if the Tailwater Reference Elevation is known. If the Tailwater Reference Elevation is not known, a RiverWare error is posted and the run is aborted.

The temporary Tailwater Base Value (TWBaseValueTemp) is set equal to the Tailwater Base Value if the Tailwater Base Value was calculated by another user method or set via a link.

If the local variable Flow is known, the local variable tempflow is set equal to Flow If the local variable Flow is not known, but the Outflow is known, if the Local Info variable Flow is not known but Outflow is known, tempflow is set equal to Outflow.

If the tempflow value is known, the following steps are taken to determine the Tailwater Elevation.

If the Tailwater Base Value is linked (and tempflow is known), the following steps are performed.

1. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known, downstreamStage is computed as the average of the previous timestep’s Tailwater Base Value and either the Tail Water Reference Elevation or TWBaseValueTemp (whichever is greater). A table interpolation is performed to determine the Tailwater Elevation using the downstreamStage, tempflow, and the Stage Flow Tailwater Table.

2. If TWBaseValueTemp is known but the previous timestep’s Tailwater Base Value is NOT known, downstreamStage is set equal to either the Tail Water Reference Elevation or TWBaseValueTemp (whichever is greater). A table interpolation is performed to determine the Tailwater Elevation using the downstreamStage, tempflow, and the Stage Flow Tailwater Table.

3. If the previous timestep’s Tailwater Base Value is known but TWBaseValueTemp is NOT known, downstreamStage is set equal to the previous timestep’s Tailwater Base Value. A table interpolation is performed to determine the Tailwater Elevation using the downstreamStage, tempflow, and the Stage Flow Tailwater Table.

4. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value are known, but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.

5. If the previous timestep was the initial timestep and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, a RiverWare error is posted and the run is aborted.

6. If the previous timestep was NOT the initial timestep, and none of the following are known: the temporary TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, the method is exited and waits for more information.

If the Tailwater Base Value is not linked (and tempflow is known), the following steps are performed.

1. If TWBaseValueTemp is known, downstreamStage is set equal to TWBaseValueTemp. A table interpolation is performed to determine the Tailwater Elevation using the downstreamStage, tempflow, and the Stage Flow Tailwater Table.

2. If TWBaseValueTemp is NOT known, a RiverWare error is posted and the run is aborted.

The only case where tempflow is not known is when Outflow is not known. This scenario only occurs at the first timestep in one of the three given Energy dispatch methods. The following steps are performed to determine the Tailwater Elevation if tempflow is not known.

If the Tailwater Base Value is linked (and tempflow is not known), the following steps are performed.

1. If both TWBaseValueTemp and the previous timestep’s Tailwater Elevation are known, the Tailwater Elevation is calculated.

2. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known but the previous timestep’s Tailwater Elevation is not known, Tailwater Elevation is computed.

3. If TWBaseValueTemp is known but neither the previous timestep’s Tailwater Elevation nor the previous timestep’s Tailwater Base Value are known, Tailwater Elevation is set equal to TWBaseValueTemp.

4. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.

5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Elevation is known, but the previous timestep’s Tailwater Base Value is known, Tailwater Elevation is set equal to the previous timestep’s Tailwater Base Value.

6. If the previous timestep is the initial timestep of the run, and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, a RiverWare error is posted, and the run is aborted.

7. If the previous timestep is NOT the initial timestep of the run and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, the method is exited and waits for more information.

If the Tailwater Base Value is not linked (and tempflow is not known) the following procedures are performed.

1. If the Tailwater Elevation is known, the method is exited because no calculations need to be performed.

2. If the Tailwater Elevation is NOT known and the TWBaseValueTemp is NOT equal to zero, Tailwater Elevation is set equal to TWBaseValueTemp.

3. If the Tailwater Elevation is NOT known and either the temporary Tailwater Base Value is NOT known or equal to zero or both, Tailwater Elevation is set equal to the elevation corresponding to zero on the Tailwater Table.

Following are definitions of terms used in these equations.

TWBaseValueTemp

A temporary value for the Tailwater Base Value. This value may be determined from another method or propagated across a link.

tempflow

A local variable used as the outflow from the Reservoir.

downstreamStage

A local variable used to hold the value of the downstream stage elevation.

Tailwater Elevation (-1)

The Tailwater Elevation at the previous timestep.

Tailwater Base Value (-1)

The Tailwater Base Value at the previous timestep.

Compare to Avg Base Value

The Compare to Avg Base Value method uses similar methodology as the Base Value Plus Lookup Table and Stage Flow Lookup Table methods. The only difference between this method and the others is that a new local variable, TWCompare, is used. The value for TWCompare is compared with a table lookup value for the Tailwater Elevation. The larger of the two values is used as the Tailwater Elevation. An average Tailwater Elevation over the timestep is calculated whenever possible.

Slots Specific to This Method

Tailwater Base Value

Type: SeriesSlot

Units: LENGTH

Description: base elevation of the tailwater

Information:

I/O: Optional; can be input of set by a link.

Tailwater Table

Type: Table

Units: FLOW vs. LENGTH

Description: Reservoir Outflow vs. either the Tailwater Elevation or the tailwater elevation increment

Information: If the Tailwater Base Value is non-zero, the Tailwater Table holds values of incremental increase in Tailwater Elevation over the Base value. Otherwise, the table holds the Tailwater Elevation values.

I/O: Required input

Links: Not linkable

The Compare to Avg Base Value user method performs many logical evaluations to determine the Tailwater Elevation. This method is described below.

The temporary Tailwater Base Value (TWBaseValueTemp) is set equal to the Tailwater Base Value is the Tailwater was calculated by another user method or set via a link. For the Tailwater Compare Method, the Tailwater Base Value must be linked to another object. Otherwise there would be no reason to compare values. If the Tailwater Base Value is not linked, a RiverWare error is posted and the simulation run is aborted.

If the Local Info variable Flow is known, the local variable tempflow is set equal to Flow.

If the local variable Flow is not known, but Outflow is known, tempflow is set equal to Outflow.

If the tempflow value is known, the following steps are taken to determine the Tailwater Elevation.

1. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known,

2. If TWBaseValueTemp is known but the previous timestep’s Tailwater Base Value is NOT known, TWCompare is set equal to TWBaseValueTemp.

3. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Base Value is known, TWCompare is set equal to the previous timestep’s Tailwater Base Value.

4. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value are known and the previous timestep is the initial timestep, a RiverWare error is posted and the run is aborted.

5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Base Value are known and the previous timestep is NOT the initial timestep, the method is exited and waits for more information.

Once the TWCompare value has been determined, a table interpolation is performed using the Tailwater Table to obtain the tailwater elevation corresponding to the tempflow value. The tailwater elevation value obtained from this interpolation is then compared to TWCompare. The largest of the two values is used to set the Tailwater Elevation.

The only case where tempflow is not known is when Outflow is not known. This scenario only occurs at the first timestep in one of the three given Energy dispatch methods. The following steps are performed to determine the Tailwater Elevation if tempflow is not known.

1. If both TWBaseValueTemp and the previous timestep’s Tailwater Elevation are known,

2. If both TWBaseValueTemp and the previous timestep’s Tailwater Base Value are known but the previous timestep’s Tailwater Elevation is not known,

3. If TWBaseValueTemp is linked and the temporary Tailwater Base Value is known but neither the pervious timestep’s Tailwater Elevation nor the previous timestep’s Tailwater Base Value are known, the Tailwater Elevation is set equal to TWBaseValueTemp.

4. If TWBaseValueTemp is not known but the previous timestep’s Tailwater Elevation is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Elevation.

5. If neither TWBaseValueTemp nor the previous timestep’s Tailwater Elevation are known, but the previous timestep’s Tailwater Base Value is known, the current timestep’s Tailwater Elevation is set equal to the previous timestep’s Tailwater Base Value.

6. If the previous timestep is the initial timestep of the run, and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, a RiverWare error is posted and the simulation is aborted.

7. If the previous timestep is not the initial timestep of the run and none of the following are known: TWBaseValueTemp, the previous timestep’s Tailwater Base Value, and the previous timestep’s Tailwater Elevation, the method is exited and waits for more information.

Following are definitions of terms used in these equations.

TWBaseValueTemp

A temporary value for the Tailwater Base Value. This value may be determined from another method or propagated across a link.

tempflow

A local variable used as the outflow from the Reservoir.

TWCompare

A local variable used to hold a value that is compared to the Tailwater Elevation obtained by table interpolation.

Tailwater Elevation (-1)

The Tailwater Elevation at the previous timestep.

Tailwater Base Value (-1)

The Tailwater Base Value at the previous timestep.

Coefficients Table

The Coefficients Table method multiplies Outflow, Tailwater Base Value, and Tailwater Elevation at the current and/or previous timestep by coefficients that are stored on a table. These products are added together along with constants to compute the Tailwater Elevation.

Slots Specific to This Method

Tailwater Base Value

Type: Series

Units: Length

Description: base elevation of the tailwater

Information:

I/O: Optional; can be input or set by a link.

Tailwater Coefficients

Type: Table

Units: Length, Length/Flow, None, None

Description: This table contains the coefficients used in the calculation. The columns are as follows: Constant, Outflow, TW Base Val, TW Elev. The first row (t) represents the value to multiply by the current timestep’s value. The second row (t‑1)represents the value to multiply by the previous timestep’s value.

Information: Not every cell will have a value, but there must be at least one value in the table. In addition, the coefficient for TW Elev at t cannot be non-zero or an error will be issued. (Tailwater Elevation at the current timestep is the value being computed, so it is not possible to use it in the calculation). If any coefficients are specified (non-zero) for t-1 for Outflow, TW Base Val, or TW Elev, then the initial timestep value of those slots must also be specified.

I/O: Input only

Links: Not Linkable

At the beginning of the run, the Tailwater Coefficients table is verified for valid coefficients as described in the slot information above. Not every coefficient has to be specified.

When the tailwater method is executed, the following computation is performed:

Each coefficient and each series value are checked for validity before including in the total.

In the preceding equation, the values for flow and TailwaterBaseValueTemp are based on the information that is known:

• The flow variable represents the outflow passed into the method if valid, or the value on the Outflow slot if not passed in. If neither is valid, Tailwater Elevation is set to the previous Tailwater Elevation. If that is not valid, the method exits and waits for a flow value to become valid.

The TailwaterBaseValueTemp is either the base value passed into the method or the value on the Tailwater Base Value slot. If neither is known, the previous Tailwater Base Value is used. If that is not valid, the method executes to wait for more information.

Hoover Tailwater

The Hoover Tailwater method was developed by the USBR for use on Lake Mead. This method uses a table of empirically derived constants.

Slots Specific to This Method

Tailwater Base Value

Type: SeriesSlot

Units: LENGTH

Description: base elevation of the tailwater

Information:

I/O: Optional; can be input or set by a link.

Tailwater Table

Type: Table

Units: FLOW vs. LENGTH

Description: Reservoir Outflow vs. either the Tailwater Elevation or the tailwater elevation increment

Information: If the Tailwater Base Value is non-zero, the Tailwater Table holds values of incremental increase in Tailwater Elevation over the Base value. Otherwise, the table holds the Tailwater Elevation values.

I/O: Required input

Links: Not linkable

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

Links: Not linkable

The Hoover Tailwater user method performs calculations to determine the Tailwater Elevation. Following is a description of this method.

The first step of this method is to set the temporary Tailwater Base Value (TWBaseValueTemp). TWBaseValueTemp is set equal to the Tailwater Base Value if the Tailwater Base Value was calculated by another user method or set via a link.

Then the previous timestep’s Tailwater Base Value is checked. If the previous timestep’s Tailwater Base Value is not known, a RiverWare error is posted and the run is aborted.

The TWaverage, a local variable, is then calculated using the following steps.

1. If TWBaseValueTemp is known,

2. If the temporary TWBaseValueTemp is NOT known, the TWaverage is set equal to the previous timestep’s Tailwater Base Value.

Once the TWaverage has been calculated, it is used to interpolate the empirical constants for the following equation from the Hoover Tailwater Table.

Finally, the following is calculated:

Tailwater Elevation is then set equal to TELEFT (which is converted into internal units).

Following are definitions of some terms used in these equations.

TWBaseValueTemp

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

Links: Not linkable

Spill Cost

Type: Series Slot

Units: $

Description: Future cost of energy lost due to spilled water

Information:

I/O: Output only

Links: May be linked to the Spill Cost slot on the Thermal Object.

Future Value of Used Energy

Type: Series Slot

Units: $

Description: Future value of energy used in the current timestep

Information:

I/O: Output only

Links: May be linked to Future Value of Used Energy Slot on the Thermal Object.

Anticipated Storage

Type: SeriesSlot

Units: Volume

Description: The combination of Storage in the reservoir at the given timestep plus any flow (converted volume) that is in transit to the reservoir

Information: This slot represents the storage including any lagged flows that are already in a linked upstream reach, which will reach the reservoir at a later timestep. If there are no lagged reaches between this reservoir and the next upstream reservoir, Anticipated Storage will equal Storage. It is this storage value that will be used to calculate Cumulative Storage Value.

I/O: Output only

Links: May be linked

Cumulative Storage Value

Type: Series Slot

Units: $

Description: Represents the future energy value of the current Anticipated Storage

Information:

I/O: Output only

Links: May be linked to the Total Cumulative Storage Value Slot on the Thermal Object

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.

Links: Not linkable

This method uses the Marginal Storage Value Table and the calculated Spill and Turbine Release to compute the Spill Cost and Future Value of Used Energy. It then uses the Cumulative Storage Value Table and the calculated Anticipated Storage to compute the Cumulative Storage Value.

The correct marginal value is found from the current storage in the reservoir. If the current storage is than the midpoint between the first and second storage table values, the first marginal value is used. The second marginal value is used for a current storage above that midpoint to the midpoint between the second and third storage table values. The last marginal value is used for any current storage above the midpoint between the second-to-last and the last storage table value. Table 24.1 and Figure 24.1 are examples.

Storage | Marginal Value |
---|---|

20 | 30 |

60 | 26 |

100 | 24 |

Figure 24.1 Marginal Storage Value

Assume that the current storage is 39. Therefore, this method would use 30 as the marginal value for use in the next computation. Assume that the current storage is 41. Therefore, this method would use 26 as the marginal value for use in the next computation.

Use of a table in this fashion is unique to this method.

Spill Cost is computed as follows:

Future Value of Used Energy is computed by the following equation:

The Cumulative Storage Value computation begins by first calculating Anticipated Storage. This is the sum of the reservoir Storage plus any flow already in transit to the reservoir in an upstream lagged reach. For example, assume a reservoir’s Inflow slot is linked to a reach with a 3-hour lag time. In an run with a 1 Hour timestep, the reservoir’s Anticipated Storage would be calculated as follows:

If there are no lagged reaches between the reservoir and the next upstream reservoir, then Anticipated Storage will simply equal Storage.

The Cumulative Storage Value is then computed by interpolating from the Cumulative Storage Value Table using the calculated Anticipated Storage value.

Cumulative Storage Value Table Automation

This category allows the RiverWare simulation to automate the creation of the Cumulative Storage Value Table. This category is only visible if Cumulative Storage Value Table is selected in the Future Value category.

None

If this method is selected, no automation will be performed and the user must enter the data into the Cumulative Storage Value Table.

Marginal Value to Table

If this method is selected, the Marginal Storage Value table will be used as the source for the generation of the Cumulative Storage Value Table. This is the only calculation associated with this method. There are no slots associated specifically with this method.

This method uses information from the simulation slot Marginal Storage Value Table to generate a cumulative storage value table. The cumulative storage value can be thought of as the summation of the marginal storage values from a storage of 0 to the current storage. Therefore, the automation method finds the same midpoint values used by the simulation Future Value Calc method, and uses those points in the table.

If only one value exists in the Marginal Storage Value Table, then only two entries will exist in the Cumulative Storage Value Table. The two entries will be 0, and midway between the value in the Marginal Storage Value Table, and the maximum value set on the Storage slot. If more than one value exists, three or more points will result. Following are sample Table 24.2 and Table 24.3 are examples of a Marginal Value Table and the resulting Cumulative Storage Value Table. Figure 24.2 is a sample graph of the Cumulative Storage Value data.

Storage | Marginal Value |
---|---|

20 | 30 |

60 | 26 |

100 | 24 |

Anticipated Storage | Cumulative Value |
---|---|

40 | 1200 |

80 | 2240 |

140 | 3680 |

Figure 24.2 Cumulative Storage Value

Ramping

This category allows you to model the cost of turbine ramping, the cost of changing the turbine release from one timestep to the next.

None

This is the default method for this category. No new slots are instantiated, and no calculations are performed.

Track Ramping

In this method the user assigns a unit cost to turbine ramping, a cost per unit change in flow from one timestep to the next. The method then calculates the change in turbine release and the associated ramping cost. The unit cost is the same for ramping up and ramping down.

Slots Specific to This Method

Ramping Cost

Type: Series

Units: Value

Description: The total cost of turbine ramping for the timestep.

Information: This is the Unit Ramping Cost multiplied by the change in turbine release from one timestep to the net.

I/O: Output only

Links: May be linked

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

Links: May be linked

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

Links: May be linked

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

Links: Not linkable

The method first checks for a value in the Unit Ramping Cost table slot. If there is no input value, or if the value is negative, it sets the value to zero. Then it checks if Turbine Release is valid for the current timestep and the previous timestep. If Turbine Release at the current timestep is greater than or equal to the previous timestep then the following values are set:

Otherwise, the following values are set:

If Turbine Release is not valid at both the current and previous timesteps, then Turbine Increase, Turbine Decrease and Ramping Cost will all display NaN.

Hydrologic Inflow

The Hydrologic Inflow category allows RiverWare to accommodate inflows to a Reservoir that are not part of the main channel and/or are not gauged. The user methods in this category may be used to initialize the Hydrologic Inflow slot if it is required by the user. If the Hydrologic Inflow slot has been initialized, it is figured into the mass balance when the object dispatches.

None

None is the default method for the Hydrologic Inflow category. No calculations are performed by this method. There are no slots specifically associated with this method. If this method is selected, the Hydrologic Inflow slot is not initialized so it is no included in the mass balance.

Input Hydrologic Inflow

The Input Hydrologic Inflow method should be used when the user wishes either to input the values of Hydrologic Inflow or have the values default to zero. RiverWare will not overwrite any user input values.

Slots Specific to This Method

Hydrologic Inflow

Type: SeriesSlot

Units: FLOW

Description: flow into the reservoir that is not gauged and/or does not enter through the main channel.

Information:

I/O: Optional; defaults to zero if not input.

Links: Usually input or calculated but could be linked to the Outflow of any object or any other series slot.

Hydrologic Inflow Adjust

Type: SeriesSlot

Units: FLOW

Description: optional adjustment that can be made to the calculated Hydrologic Inflow

Information:

I/O: Optional; set to zero if not input by the user.

Links: Not linkable

Hydrologic Inflow Net

Type: SeriesSlot

Units: FLOW

Description: sum of hydrologic Inflow and Hydrologic Inflow Adjust

Information:

I/O: Output only

Links: Not linkable

The algorithm used for this method is very simple. If Hydrologic Inflow is not input by the user, it is set equal to zero. Hydrologic Inflow Net is calculated as the sum of Hydrologic Inflow and Hydrologic Inflow Adjust.

Forecast Hydrologic Inflow

This method is used to forecast the hydrologic inflow based on known inflow values. When this method is selected, the Generate Forecast Hydrology category becomes visible. Within this category, methods are available to generate the hydrologic inflow forecast.

Generate Forecast Hydrology

This category contains methods that forecast the hydrologic inflow based on known inflow values. The user inputs the historical inflows to the reservoir and the methods adjust those values to represent a forecast. The methods in this category execute at the beginning of each timestep.

None

This method is the default for this category. It will result in an error if it is selected and a run is started.

Geometric Recession

On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Inflow is used to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow. If the Forecast Period method is not selected, the input Deterministic Incremental Hydrologic Inflow slot is used to forecast and set the Hydrologic Inflow Forecast series slot.

Slots Specific to This Method

Hydrologic Inflow Forecast

Type: SeriesSlot

Units: FLOW

Description: The forecasted hydrologic inflow values

Information:

I/O: Output only

Links: Not linkable

Deterministic Incremental Hydrologic Inflow

Type: SeriesSlot

Units: FLOW

Description: This slots holds a timeseries of the actual hydrologic inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow Forecast slot.

Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Full Run method is selected, values from the Incremental Hydrologic Inflow slot will be copied into this slot prior to the forecast. This slot is not used (i.e. inputs are ignored) if the Forecast Period method is selected.

I/O: Input or set to the values in the Incremental Hydrologic Inflow slot

Links: Not linkable

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

Links: Not linkable

This method uses different slots and sets different slots if the Forecast Period is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If the Forecast Period is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Inflow (Source) to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow (Target). If it is not selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow Forecast slot (Target). The following uses the Source/Target terminology to describe the methods.

The Source slot values are required inputs for each timestep. At the beginning of each controller timestep, the Geometric Recession method is executed. For each forecast timestep within the period of perfect knowledge, the Target is set to the Source value. For each forecast timestep after the period of perfect knowledge, the Target is set by multiplying the value of the Target from the previous timestep by the constant recession factor.

A value for the Source slot must be known at every timestep during the run. If Target values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source slot are not entered past the end of the run, the Target values for these timesteps are assumed to be zero.

Exponential Recession

On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Infow is used to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow. If the Forecast Period methods is not selected, the input Deterministic Incremental Hydrologic Inflow slot is used to forecast and set the Hydrologic Inflow Forecast series slot.

Slots Specific to This Method

Hydrologic Inflow Forecast

Type: SeriesSlot

Units: FLOW

Description: The forecasted inflow values computed from the Deterministic Incremental Hydrologic Inflow

Information:

I/O: Output only

Links: Not linkable

Deterministic Incremental Hydrologic Inflow

Type: SeriesSlot

Units: FLOW

Description: This slots holds a timeseries of the actual hydrologic inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow Forecast slot.

Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Full Run method is selected, values from the Incremental Hydrologic Inflow slot will be copied into this slot prior to the forecast. This slot is not used (i.e. inputs are ignored) if the Forecast Period method is selected.

I/O: Input or set to the values in the Incremental Hydrologic Inflow slot

Links: Not linkable

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

Links: Not linkable

Period of Perfect Knowledge

Type: ScalarSlot

Units: FLOW

Description: Number of timesteps for which the forecast will equal the Deterministic Incremental Hydrologic Inflow, i.e., the forecast is known with complete certainty.

Information: Minimum value of 1; maximum value equal to the number of timesteps in the forecast period.

I/O: Input only

Links: Not linkable

Minimum Forecasted Flow

Type: SeriesSlot

Units: FLOW

Description: The minimum forecasted flow.

Information: If the computed value for Hydrologic Inflow Forecast is less than the Minimum Forecasted Flow, it is set to the Minimum Forecasted Flow.

I/O: Input only

Links: Not linkable

Low Flow Threshold

Type: ScalarSlot

Units: FLOW

Description: The flow rate that dictates whether to use the Low Flow Recession Coefficient or the High Flow Recession Coefficient.

Information:

I/O: Input only

Links: Not linkable

Low Flow Recession Coefficient

Type: ScalarSlot

Units: NONE

Description: The recession coefficient used when the Deterministic Incremental Hydrologic Inflow (at the end of the Period of Perfect Knowledge) is below or equal to the Low Flow Threshold.

Information:

I/O: Input only

Links: Not linkable

High Flow Recession Coefficient

Type: ScalarSlot

Units: NONE

Description: The recession coefficient used when the Deterministic Incremental Hydrologic Inflow (at the end of the Period of Perfect Knowledge) is above the Low Flow Threshold.

Information:

I/O: Input only

Links: Not linkable

This method uses different slots and sets different slots if the Forecast Period is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If the Forecast Period is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Infow (Source) to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow (Target). If it is not selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow Forecast slot (Target). The following uses the Source/Target terminology to describe the methods.

The Source slot values are input for each timestep. At the beginning of each controller timestep, the Exponential Recession method is executed. For each forecast timestep within the period of perfect knowledge, the Target is set to the Source value. For each forecast timestep after the period of perfect knowledge, the Target slot is set as follows.

where Source is the value in the Source slot at the end of the period of perfect knowledge, C is the recession coefficient, t is the elapsed time of the forecast period, and T is the total time from the end of the period of perfect knowledge to the end of the forecast period.

If the Source at the end of the period of perfect knowledge is negative, the Target at that timestep is exactly equal to the Source. However, the Source used in the recession equation, is the last positive value for Source. In the event that there is not a positive value for the Source, RiverWare issues a warning, and all values for Hydrologic Inflow Forecast within the forecast period will be set to the Minimum Forecasted Flow.

A value for the Source slot must be known at every timestep during the run. If the Target values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source are not entered past the end of the run, the Target values for these timesteps are assumed to be zero.

Coefficient and Exponent

On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Infow is used to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow. If the Forecast Period methods is not selected, the input Deterministic Incremental Hydrologic Inflow slot is used to forecast and set the Hydrologic Inflow series slot.

Slots Specific to This Method

Hydrologic Inflow

Type: SeriesSlot

Units: FLOW

Description: flow into the reservoir that is not gaged and/or does not enter through the main channel.

Information:

I/O: Output only

Links: Not linkable

Hydrologic Inflow Adjust

Type: SeriesSlot

Units: FLOW

Description: optional adjustment that can be made to the calculated Hydrologic Inflow

Information:

I/O: Optional; the Hydrologic Inflow Adjust may either be input by the user or it is set to zero if it is not input.

Links: Not linkable

Hydrologic Inflow Net

Type: SeriesSlot

Units: FLOW

Description: Sum of Hydrologic Inflow and Hydrologic Inflow Adjust

Information:

I/O: Output only

Links: Not linkable

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

Links: not linkable

Deterministic Incremental Hydrologic Inflow

Type: SeriesSlot

Units: FLOW

Description: This slots holds a timeseries of the actual Hydrologic Inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow slot.

Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Full Run method is selected, values from the Incremental Hydrologic Inflow slot will be copied into this slot prior to the forecast. This slot is not used (i.e. inputs are ignored) if the Forecast Period method is selected.

I/O: Input or set to the values in the Incremental Hydrologic Inflow slot

Links: not linkable

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

Links: not linkable

This method uses different slots and sets different slots if the Forecast Period is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If Forecast Period is NOT selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow slot (Target). If it is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Infow (Source) to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow (Target). The subbasin then computes the incremental flow and sets the value on the Hydrologic Inflow slot. The following description uses the Source/Target terminology to describe the method.

The method works as follows: on the current timestep, the Target is set equal to the Source. The method then loops through the remaining timesteps in the forecast period and sets the Target using the following formula starting at i = 1, as follows:

where KIi is the Source at timestep i, HIi is the Target at timestep i. The counter i represents the timestep beyond the current timestep. For example, i = 1 is the next timestep, i = 2 is the current timestep + 2 timesteps, etc. The coefficient, C, and exponent, E, are the values in the Forecast Inflow Parameters slot. If(Source(i-1) <= Source(i)), E and C are the increasing (rising) values. Otherwise, E and C are the decreasing (falling) values.

In the preceding formula, there is a mathematical problem if KIi-1 is zero. In this situation, the Target at that index is set to the known inflow at that index. This allows the simulation to continue with reasonable values for the Target.

At the end of the method, the Hydrologic Inflow Net is set equal to the Hydrologic Inflow plus the Hydrologic Inflow Adjust for each timestep in the loop. This allows the rules to be able to use the Hydrologic Inflow Net before the object dispatches (such as in the GetMaxOutflowGivenInflow() function).

A value for the Source slot must be known at every timestep during the run. If forecasted Hydrologic Inflow values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source are not entered past the end of the run, the Hydrologic Inflows for these timesteps are assumed to be zero.

Incremental Hydrologic Inflows on Subbasin

The Incremental Hydrologic Inflows on Subbasin category contains methods used to specify that the reservoir has cumulative inflows that must be disaggregated into incremental inflows. There are two methods: Full Run and Forecast Period. The disaggregation is actually executed from the computation subbasin containing the reservoir. See “Incremental Local Inflows” for details.

When the Input Hydrologic Inflow method is selected in the Hydrologic Inflow category, the Full Run becomes available. The method contains two slots: Cumulative Hydrologic Inflow and Incremental Hydrologic Inflow for the reservoir. Data must be input into the Cumulative Hydrologic Inflow slots. The computational subbasin will execute the Compute Full Run Incremental Hydrologic Inflows method and set the Incremental Hydrologic Inflow slots as input. Setting the Incremental Hydrologic Inflow slots as input prevents the slot values from being cleared in future model runs when the subbasin is disabled. The computational subbasin will first check that Full Run method has been selected on all reservoirs and reservoirs in the basin. During the model run, when the reservoir dispatches, the Full Run method will copy the value in the Incremental Hydrologic Inflow slot and set the Hydrologic Inflow slot.

When a forecast method is selected in the Generate Forecast Hydrology methods on the reservoir, a new method will be available within the Incremental Hydrologic Inflows on Subbasin category: Forecast Period on the reservoir. This method will contain the Cumulative Hydrologic Inflow slot. When this method is selected the computational subbasin will execute the Compute Forecast Period Incremental Hydrologic Inflows method and set the Hydrologic Inflow slots.

None

This method is the default for the Incremental Hydrologic Inflows on Subbasin category and should be selected when hydrologic inflow data is not cumulative or the computation of incremental hydrologic inflows is not desired. There are no slots specifically associated with this method.

Full Run

The Full Run method is available from the Incremental Hydrologic Inflows on Subbasin category on the reservoirs (storage reservoir, level power reservoir, and sloped power reservoir,). This method is only available if the Input Hydrologic Inflow method is selected in the Hydrologic Inflow category. This method holds the slots necessary for the computation of incremental hydrologic inflows that is performed by the computational subbasin. The method contains two slots: Cumulative Hydrologic Inflow and Incremental Hydrologic Inflow. These slots will be accessed by the computational subbasin when executing the Compute Full Run Incremental Local Inflows method. The computational subbasin uses input Cumulative Hydrologic Inflow values to calculate and set the Incremental Hydrologic Inflow slot. See “Compute Full Run Incremental Local Inflows method” in the computational subbasin’s Incremental Local Inflows documentation for details. The Full Run method on the reservoir copies the results of the calculation in the Incremental Hydrologic Inflow slot values over to the Hydrologic Inflow series slot.

Slots Specific to This Method

Cumulative Hydrologic Inflow

Type: SeriesSlot

Units: Flow

Description: The cumulative hydrologic inflow to the reservoir

Information: Hydrologic inflow is cumulative either (1) between headwater control points and the first reservoir in the river system and also throughout the system between two reservoirs, or (2) throughout the entire river system.

I/O: Required Input

Links: Not linkable

Incremental Hydrologic Inflow

Type: SeriesSlot

Units: Flow

Description: The incremental hydrologic inflow to the reservoir

Information: This slot is set by the Calculate Incremental Flows method on the computational subbasin and represents the actual hydrologic inflow to the reservoir. If a Generate Forecast Hydrology method is selected, the Deterministic Incremental Hydrologic Inflow slot will be set to the values in this slot.

I/O: Computed and set with the Input flag

Links: Usually not linked

Forecast Period

The Forecast Period method is available from the Incremental Hydrologic Inflows on Subbasin category on the reservoir. This method is only available if the Forecast Hydrologic Inflows method is selected in the Hydrologic Inflow category and one of the forecasting methods (i.e. Geometric Recession, Exponential Recession, or Coefficient and Exponent) is selected in the Generate Forecast Hydrology category. If this method is selected, but the reservoir is not part of a subbasin with the appropriate methods selected, an error will be issued. The method contains two slots: Cumulative Hydrologic Inflow and Temp Forecasted Cumulative Hydrologic Inflow. These slots will be accessed by the computational subbasin when executing the Compute Forecast Period Incremental Hydrologic Inflows method. The computational subbasin will use the user input Cumulative Hydrologic Inflow value to forecast and set the Temp Forecasted Cumulative Hydrologic Inflow slot. It then uses this temporary value in its calculation of the incremental flows. The final result of this method (forecasted incremental hydrologic inflows) is set on the slot Hydrologic Inflow Forecast for each timestep in the forecast period.

Note: Hydrologic Inflow is set instead if the Coefficient and Exponent method is selected). See “Compute Forecast Period Incremental Local Inflows” in the computational subbasin’s Incremental Local Inflows documentation for details.

Slots Specific to This Method

Cumulative Hydrologic Inflow

Type: SeriesSlot

Units: Flow

Description: The cumulative hydrologic inflow to the reservoir

Information: Hydrologic inflow is cumulative either (1) between headwater control points and the first reservoir in the river system and also throughout the system between two reservoirs, or (2) throughout the entire river system.

I/O: Required Input

Links: Not linkable

Temp Forecasted Cumulative Hydrologic Inflow

Type: SeriesSlot

Units: flow

Description: the forecasted cumulative Hydrologic inflow to the control point

Information: This slot is set by the selected Generate Forecast Hydrologic Inflows method on the control point as called from the computational subbasin. It represents the cumulative Hydrologic inflow to the control point forecasted throughout the forecast period. This slot is a temporary slot and is not saved with the model file.

I/O: Output only

Links: Usually not linked

Slope Storage

Slope Power Reservoirs contain a portion of their Storage in the wedge created by the sloping water surface. The following user method calls to additional methods that perform the mass balance calculations in Slope Power Reservoirs for all dispatch methods.

None

This is the default method in the Slope Storage category. It performs no calculations and has no slots associated with it. An error is posted if this method is selected. The user is required to choose Storage Segments.

Storage Segments

The user has the option of dividing a reservoir into longitudinal segments. This is most useful for large reservoirs and relatively small timesteps, where the propagation of a change in flow takes more than one timestep to travel the length of the reservoir. Reservoir segments are numbered in the upstream direction, with the first segment being the farthest downstream.

Figure 24.3

The Storage Segments method does not perform any calculations. Instead, this method makes visible the new method category, Slope Storage Coefficients. You then have the option of selecting one of two methods, Impulse Response method or Weighting Coefficients method, to calculate the segment storage. But the Storage Segments method requires you to specify the number of segments in the reservoir and provide the headwater, backwater, and storage relationships for the Segments in Reservoir that are used by the Slope Storage Coefficient methods to calculate segment storage. Also, you can specify the Segment Storage Adjustment based on the backwater elevation and change in backwater elevation.

See the following topics for details:

Slots Specific to This Method

Segments in Reservoir

Type: Table

Units: NONE

Description: number of longitudinal segments in the reservoir

Information: Multiple segments are useful for large reservoirs and relatively small timesteps, where the propagation of a change in flow takes more than one timestep to travel the length of the reservoir. Reservoir segments are numbered in the upstream direction, with the first segment being the farthest downstream.

I/O: Required input

Links: Not linkable

Profile Storage Table

Type: Table

Units: LENGTH vs. LENGTH vs. VOLUME

Description: total storage of each segment corresponding to a headwater and a backwater elevation

Information: 3-D table containing data relating headwater and backwater elevations to segment storage. Each reservoir segment has its own three-column block of data. Data must be entered into these tables in a structured way in order for the 3-dimensional table interpolator to work correctly. Headwater must be input in blocks of the same values, increasing down the table. For every headwater elevation block in column 1, backwater values should be listed in increasing order in column 2, with the corresponding segment storage in column 3. Following is a sample table for a one-segment reservoir.

Headwater | Backwater | Storage |
---|---|---|

500 | 500 | 800 |

500 | 510 | 805 |

500 | 520 | 810 |

550 | 550 | 900 |

550 | 560 | 905 |

550 | 570 | 910 |

600 | 600 | 1000 |

600 | 610 | 1010 |

600 | 620 | 1020 |

I/O: Required input

Links: Not linkable

Segment Storage

Type: Aggregate Series

Units: Volume

Description: This slot holds the storage in each segment of the reservoir. The total storage in the reservoir is equal to the sum of the segment storage (within convergence).

Information: There will be one column for each segment. The number of columns is automatically adjusted at run start.

I/O: Output only

Links: Not Linkable

Segment Storage Adjustment

Type: Table Slot

Units: Length, Length Volume

Description: This 3D table will have one 3 column block for each segment in the reservoir. The first column of the block is the upstream elevation of the segment, the second column is the change in elevation from the previous timestep, and the third column is the storage adjustment factor.

Information: The table must have 1 block for each segment. This will be adjusted at run start. It can have NaNs at the bottom of the table. If there is no data in first row for a segment, then no adjustment will be applied to that segment.The correction can be either positive or negative. Following is a sample correction table. The correction for Segment 1 is not applied (i.e. always zero), but Segment 2 does have a correction factor.

Segment 1 | Segment 2 | ||||
---|---|---|---|---|---|

Upstream Elevation 1 ft | Upstream Elevation Change 1 ft | Storage Adjustment 1 cfs-day | Upstream Elevation 2 ft | Upstream Elevation Change 2 ft | Storage Adjustment 2 cfs-day |

NaN | NaN | NaN | 550 | -4 | 10 |

NaN | NaN | NaN | 550 | -2 | 2 |

NaN | NaN | NaN | 550 | 0 | 0 |

NaN | NaN | NaN | 550 | 2 | -2 |

NaN | NaN | NaN | 550 | 4 | -11 |

NaN | NaN | NaN | 575 | -4 | 9 |

NaN | NaN | NaN | 575 | -2 | 2 |

NaN | NaN | NaN | 575 | 0 | 0 |

NaN | NaN | NaN | 575 | 2 | -3 |

NaN | NaN | NaN | 575 | 4 | -12 |

I/O: Input only.

Links: Not linkable.

Slope Storage Coefficients

Slope Power Reservoirs contain a portion of their Storage in the wedge(s) created by the sloping water surface. The visibility of the Slope Storage Coefficients is dependent upon selecting the Storage Segments from the Slope Storage. The Slope Storage Coefficients contains two methods: Impulse Response and Weighting Coefficients. Both methods are iterative and based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage on the reservoirs.

Impulse Response

This is the default method.

An iterative method based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage on reservoirs. The data tables are based on a steady state backwater profile. The four mass balance variables are Inflow, Outflow, Storage and Pool Elevation (Pool Elevation refers to the elevation at the dam, also called the headwater elevation). Two of these must be known to calculate the other two. The method solves for Storage and either Inflow, Outflow, or Pool Elevation by iterating until a calculated mass balance storage agrees with a Storage value looked up from tables created from the steady flow, headwater elevation, backwater elevation, and storage relationships. If both Inflow and Outflow are known, a convergence algorithm that is detailed Reservoir Convergence is used to calculate storage. See “Reservoir Convergence” for details.

First, a mass balance storage is calculated with known and estimated parameters (Inflow, Outflow, Previous Storage). Then, a second Storage value is found with a table look up.

Flow Param is the steady flow used to determine headwater, backwater, and storage from the relationships given by the data tables. It is calculated with the following equation:

where i is the reservoir segment. K(i) is a calibration parameter dependent on previous Storage. segInflow(i) and segOuflow(i) are the calculated inflow and outflow of each segment and are local variables. Weighting factors, a(i) and b(i), determine to what extent Flow Param depends on the inflow and outflow of the segment.

SegInflow and segOutflow are calculated using reservoir inflows and outflows at current and previous timesteps weighted with impulse response coefficients (IRC). IRCs represent the effect of current and previous flow values on the current segment flow. IRCs are specified by the user in the Profile Coeff Table. For each IRC, a flow fraction is calculated equal to a flow value multiplied by the IRC. The first IRC is multiplied by the current Inflow (or Outflow) value, and each additional IRC is multiplied by a previous flow value. For cases where current or previous flow values are not known, the most recent flow estimate is used on the first iteration. SegInflow (or segOutflow) is equal to the sum of these flow fractions.

Flow Param and either a given or estimated Pool Elevation (headwater) are then used to look up a backwater elevation on the Profile Backwater Table. Then a storage value is looked up from the Profile Storage Table using the headwater and backwater elevations to get the segment storage. Then a 3 dimensional lookup is performed on the Segment Storage Adjustment table slot. It uses the computed backwater elevation and the change in backwater elevation (current computed value minus previous value) to get the storage adjustment. The segment storage is adjusted by this value and stored in an array. After the total storage is found, the Slope Storage method sets the Segment Storage from the array values.

This total storage value is compared to the calculated mass balance storage. The method iterates, by adjusting the unknown parameter (Inflow, Outflow, or Pool Elevation), until the two storage values are within convergence.

Local inflows contributing to wedge storage are represented in the slot Prof Hydro Inflow. If not specified by user, Prof Hydro Inflow is set to the value of Hydrologic Inflow Net. Setting Prof Hydro Inflow gives the user an opportunity to specify part of the local inflows contributing to the wedge and part to the level storage. The amount of Prof Hydro Inflow contributing to each reservoir segment is controlled by the wc parameter, which is specified in the Profile Coeff Table. The Prof Hydro Inflow is multiplied by wc before it is added to segInflow.

Slots Specific to This Method

Flow Param

Type: Agg Series Slot

Units: FLOW

Description: flow which produces a steady state profile to give correct headwater, backwater, and storage relationships for each segment

Information: This slot contains a column for each reservoir segment. A user-specified value overrides the formula calculation.

I/O: Optional; if not set by user, it is calculated with segment inflow, segment outflow, and weighting coefficients (see above description).

Links: Not linkable

Prof Hydro Inflow

Type: Agg Series Slot

Units: FLOW

Description: local inflow to a slope power reservoir that contributes to the wedge storage

Information: Prof Hydro Inflow is multiplied by the wc parameter before being added to segInflow. It contains a column for each reservoir segment.

I/O: Optional; if not set by the user, it will be set to the Hydrologic Inflow at that timestep. If it is not set by the user and None is the selected method for Hydrologic Inflow, it defaults to zero.

Links: Not linkable

Intermed Backwater Elev

Type: Table Series

Units: LENGTH

Description: the water surface elevation at the upstream end of each reservoir segment

Information: Contains a column for each reservoir segment.

I/O: Output only

Links: Not linkable

Profile Coeff Table

Type: Table

Units: NONE

Description: coefficients used in determining a flow parameter for each segment

Information: Contains a, b, wc, and impulse response coefficients for each reservoir segment. a and b are coefficients weighting the contribution of segment inflow and segment outflow to the calculation of Flow Param. The parameter, wc, is a coefficient adjusting the amount of Prof Hydro Inflow contributing to the segment inflow. Impulse response coefficients are used to calculate flow fractions that are summed to determine the segment inflow or segment outflow. The first coefficient is multiplied by a current flow value and the subsequent coefficients are multiplied by previous flow values to calculate flow fractions. The sum of the impulse response coefficients for each segment usually equal 1.0. Following is a sample Profile Coeff Table.

I/O: Required input

Links: Not linkable

Segment 1 | Segment 2 | |
---|---|---|

a | 0.7 | 2.0 |

b | 1.3 | 0.0 |

wc | 0.5 | 0.0 |

Impulse Response Coefficients | 0.5 | 1.0 |

0.5 | 0.0 |

Profile Backwater Table

Type: Table

Units: FLOW vs. LENGTH vs. LENGTH

Description: backwater elevation of each segment corresponding to a flow parameter and a headwater elevation

Information: 3-D table containing data relating a steady flow (Flow Param) to a headwater elevation and a backwater elevation. Each reservoir segment has its own three-column block of data. Data must be entered into these tables in a structured way in order for the 3-dimensional table interpolator to work correctly. Flow Param must be input in blocks of the same values, increasing down the table. For every Flow Param block in column 1, headwater values should be listed in increasing order in column 2, with the corresponding backwater in column 3. Following is a sample table for a one-segment reservoir.

Flow Param | Headwater | Backwater |
---|---|---|

100 | 500 | 505 |

100 | 550 | 555 |

100 | 600 | 605 |

200 | 500 | 510 |

200 | 550 | 560 |

200 | 600 | 610 |

300 | 500 | 515 |

300 | 550 | 565 |

300 | 600 | 615 |

I/O: Required input

Links: Not linkable

Profile K Coeff Table

Type: Table

Units: VOLUME vs. NONE

Description: K parameter associated with a change in storage from one and two previous timesteps

Information: Allows the user to adjust the K parameter, a calibration factor used in calculating Flow Param. Its value is set depending on whether Storage is suddenly increasing or decreasing. This table contains two columns for each reservoir segment. The first column is a delta Storage value representing the change in storage between one and two previous timesteps. Delta storage can be either positive or negative. The second column is the K value corresponding to a given delta storage.

I/O: Required input

Links: Not linkable

Weighting Coefficients

The user has the option of dividing a reservoir into longitudinal segments and further dividing those segments into longitudinal partitions. This is most useful for large reservoirs and relatively small timesteps, where the propagation of a change in flow takes more than one timestep to travel the length of the reservoir. Reservoir partitions are numbered in the upstream direction, with the first partition being the farthest downstream. Several slots require or provide information for each reservoir partition.

This is an iterative method based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage of the partition. The four mass balance dispatch variables are Inflow, Outflow, Storage and Pool Elevation (Pool Elevation refers to the elevation at the dam, also called the headwater elevation). Two of these must be known to calculate the other two. The method solves for Storage and either Inflow, Outflow, or Pool Elevation by iterating until a calculated mass balance storage agrees with a Storage value looked up from tables created from the steady flow, headwater elevation, backwater elevation, and storage relationships for the segments. Partitions are not included in the storage iterations. If both Inflow and Outflow are known, a convergence algorithm that is detailed Reservoir Convergence is used to calculate storage. See “Reservoir Convergence” for details.

The Weighting Coefficients method performs a check at the beginning of the run to make sure the user has populated the Partition Profile Coef Table with input. The user has the option of specifying the Partition Flow Parameters or calculating it with the weighting coefficients. If calculated, the Partition Flow Parameter at each partition is a function of the weighting coefficients particular to that partition as input by the user in the Partition Profile Coef Table. The Partition Flow Parameters slot is set to the result of the below equation, which describes how the flow parameter at each partition is calculated.

The partition flow parameter Pj(t) is calculated at each partition j, where the time t ranges from the current timestep to some previous timestep n as follows:

where K is the value obtained by looking up the previous change in storage (i.e., Storage[t-1] minus Storage[t‑2]) on the appropriate segment’s columns of the Profile K Coeff Table. I(t) is the inflow to the reservoir; ajt is the coefficient weighting the contribution of inflow at the partition j at timestep t. H(t) is the hydrological inflow; bjt is the coefficient weighting contribution of hydrological inflow at partition j at timestep t. The calculation for the Partition Flow Parameter uses the Hydrologic Inflow Net if a hydrologic inflow exists. If there is no hydrologic inflow, it is not included in the calculations of the Partition Flow Parameter. I2(t) corresponds to the Inflow 2; cjt is its weighting coefficient similar to a and b. O(t) is the outflow from the reservoir; ejt is its weighting coefficient. Finally djt is the weighting coefficient corresponding to previous timestep’s Partition Flow Parameter, Pjt. The number of previous timesteps included in the calculation for the Partition Flow Parameter is determined by the user as the number of rows appended in the Partition Profile Coef Table (that contains the weighting coefficients) by the user.

See the following topics for details:

Figure 24.4 can be used to visualize the order in which the partitions will solve for their BW elevations.

Figure 24.4

The partitions are the areas between the breaks as denoted above. For the first partition, P1, the headwater at the dam will be utilized in conjunction with the flow parameter calculated for P1 in a 3D table interpolation from the user input Partition B W Table to find the BW elevation (at the upstream end) of P1. The headwater elevation at the dam PE/HW1 will also be used to calculate the BWP1, BWP2 and BWP3. P3 also constitutes the end of segment 1. Thus, HW2 is set to BWP3.Then, HW2 is used to calculate BWP4. HW2 will be used to find the BW elevations for each partition in segment 2. The BW elevation of the last partition in a segment is the HW in the next segment and will be used to calculate all the BW elevations of all the partitions in the segment.

The storage calculations of the segments follow: 1) The backwater elevation for segment 1, BW1 is set to the BWP3 2) Likewise, the backwater elevation for segment 2, BW2 is set to the BWP5. The storage for segment 1 is calculated using the headwater at the dam HW1 and BW1 via a 3D table interpolation from the Profile Storage Table. Then a 3 dimensional lookup is performed on the Segment Storage Adjustment table slot. It uses the computed backwater elevation BW1, and the change in backwater elevation (current computed value, BW1, minus previous value, BW1(t-1)) to get the storage adjustment. The segment storage is adjusted by this value and is stored in an array.

The storage for segment 2 is calculated using HW2 and BW2 via a 3D table interpolation from the Profile Storage Table. The Segment Storage Adjustment is applied for this segment and the Segment Storage is stashed in the array. The method then sums the storages of each segment. After the total storage is found, the function returns to the Slope Storage method and sets the Segment Storage from the array values and the iteration continues as described above.

See the following topics for details:

Slots Specific to This Method

Partitions per Segment

Type: Table

Units: None

Description: Table Slot that contains the number of partitions in each longitudinal segment of Slope Power Reservoir

Information: The number of each partitions in each segment can be input individually for that particular segment. If the user does not input the number of partitions in each segment or an individual segment, the number of partitions defaults to 0. The number of partitions specified must be an integer.

I/O: Input Optional

Links: Not linkable

Partition Profile Coef Table

Type: Table

Units: None

Description: Table Slot that contains the user specified weighting coefficients for each partition to be used in calculating the Partition Flow Parameters (see “Partition Flow Parameters”).

Information: The number of columns in this slot is determined by the total number of partitions as specified in the Partitions per Segment slot. Each partition will generate five columns for the weighting coefficients for that partition, which correspond to: Inflow, Hydrologic Inflow, Inflow2, Partition Flow Parameters at earlier time steps, and Outflow from the reservoir. The number of rows corresponds to the number of previous time steps the user wishes to use in calculating the Partition Flow Parameter. See “Partitions per Segment” for details.

Following is a sample Partition Profile Coef Table for one partition. The coefficient D should be zero for t. Otherwise, it will use previously computed Partition Flow Parameters for the current timestep which are from a previous iteration and would not be meaningful.

I/O: Required Input

Links: Not linkable

Parameter | A1 | B1 | C1 | D1 | E1 | |
---|---|---|---|---|---|---|

Multiplier | Inflow | Hydrologic Inflow | Inflow 2 | Partition Flow Parameter | Outflow | |

Time | t | 0.11 | 0.07 | -0.061 | 0 | 0.061 |

t-1 | 0.07 | 0.02 | 0 | 0.66 | 0 | |

t-2 | 0 | 0.045 | 0 | 0 | 0 |

Partition BW Table

Type: Table

Units: Flow vs. Length vs. Length

Description: Backwater elevation of each segment corresponding to a flow parameter and a headwater elevation.

Information: 3-D table containing data relating a steady flow to a headwater elevation and a backwater elevation. Each partition has its own three column block of data. Data must be entered into the table in a structured manner so that the 3-D table interpolation will work correctly. Flow parameters must be input in blocks of the same values, increasing down the table. For every flow parameter block in column 1 of the partition, headwater values should be listed in increasing order in column 2, with the corresponding backwater elevation in column 3. Following is a sample table for one partition.

I/O: Required Input

Links: Not linkable

Flow Param 1 | Headwater 1 | Backwater 1 |
---|---|---|

100 | 500 | 505 |

100 | 550 | 555 |

100 | 600 | 605 |

200 | 500 | 510 |

200 | 550 | 560 |

200 | 600 | 610 |

300 | 500 | 515 |

300 | 550 | 565 |

300 | 600 | 615 |

Partition BW Table Auto Max

Type: Table

Units: Flow vs Length for each Partition

Description: Automatically generated table relating Flow Parameter to the maximum possible Headwater.

Information: This table is created at the beginning of the run by taking each Flow Param from the Partition BW Table and finding the largest Headwater. This is done for each partition. This table is then used in the iterative slope storage computations (like RPL functions or GetMaxOutGivenInflow) as a bound. Within these computations, if the Flow Parameter or Headwater exceeds the table values, then the values are set to the maximum and the iteration continues. This allows intermediate computations to succeed when they would have otherwise stopped the run. An error is issued if the final result is outside the table limits.

I/O: Output - Read only

Links: Not Linkable

Partition BW Table Auto Min

Type: Table

Units: Flow vs Length for each Partition

Description: Automatically generated table relating Flow Parameter to the minimum possible Headwater.

Information: This table is created at the beginning of the run by taking each Flow Param from the Partition BW Table and finding the smallest Headwater. This is done for each partition. This table is then used in the iterative slope storage computations (like RPL functions or GetMaxOutGivenInflow) as a bound. Within these computations, if the Flow Parameter or Headwater is below the table values, then the values are set to the minimum and the iteration continues. This allows intermediate computations to succeed when they would have otherwise stopped the run. An error is issued if the final result is outside the table limits.

I/O: Output - Read only

Links: Not Linkable

Partition Flow Parameters

Type: Agg Series Slot

Units: Flow

Description: Flow that produces a steady state profile to give correct headwater and backwater relationships for each partition.

Information: This slot contains a column for each partition as set in the Partitions per Segment Slot. See “Partitions per Segment”.

I/O: Optional, if not input by user, will be calculated using Inflow from and upstream dam, Hydrologic Inflow, Inflow2, previous Partition Flow Parameters, Outflow, and the user specified weighting coefficients from the Partition Profile Coef Table. See “Partition Profile Coef Table”.

Note: The column labels of this slot can be modified to be more intuitive.

Links: Not Linkable

Partition BW Elevation

Type: Table Series

Units: Length

Description: Backwater elevation at each partition

Information: This slot contains a column for each partition. It is solved through a 3-D table interpolation between the Partition Flow Parameters slot and the Partition B W Table. See “Partition Flow Parameters” and “Partition BW Table”.

Note: The column labels of this slot can be modified to be more intuitive.

I/O: Output only

Links: Not linkable

Profile K Coeff Table

Type: Table

Units: VOLUME vs. NONE

Description: K parameter associated with a change in storage from one (t-1) and two (t-2) previous timesteps.

Information: Allows the user to adjust the K parameter, a calibration factor used in calculating Flow Param. Its value is set depending on whether Storage is suddenly increasing or decreasing. This table contains two columns for each reservoir segment. The first column is a delta Storage value representing the change in storage between one and two previous timesteps. Delta storage can be either positive or negative. The second column is the K value corresponding to a given delta storage.

I/O: Required input

Links: Not linkable

Target Slope Storage

Used to solve target operations. The methods solve a target Storage used for computing a lumped mass balance over several time periods.

None

This is the default method which performs no calculations. It is only used if no target operations are being executed. There are no slots associated with this method.

Lumped Mass Balance

This method must be selected whenever a target operation is performed on a reservoir. It is only available when the Storage Segments method is selected. The method finds a Storage value at the target time based on Outflow and Pool Elevation using an iterative routine similar to one of the Slope Storage Coefficients methods. This storage value is used to compute a lumped mass balance across the target operation time range. There are no slots specifically associated with this method. See “Storage Segments” and “Slope Storage Coefficients” for details.

Evaporation and Precipitation

The methods in this category can be used on all types of reservoir objects. See “Evaporation and Precipitation”.

Evap and Precip Rate Specification

The methods in this category can be used on all types of reservoir objects. See “Evap and Precip Rate Specification”.

Low Flow Releases

This category is only used to add the slots necessary for low flow release calculations. These slots are generally used by a RPL function (called MeetLowFlowRequirement) to compute the low flow releases necessary to meet the low flow requirements on control point objects.

None

This method performs no calculations and adds no slots.

Enable Low Flow Releases

This method performs no calculations. It simply adds the Low Flow Release slot and Maximum Low Flow Delivery Rate slot.

Slots Specific to This Method

Low Flow Release

Type: Series Slot

Units: flow

Description: The portion of the Outflow that is intended to meet a low flow requirement

Information: This slot is normally computed by a RPL function (MeetLowFlowRequirement) that computes the low flow releases necessary to meet the low flow requirements on control point objects.

I/O: Usually set by a rule

Links: Not linkable

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

Links: Not linkable

Target Operation

The Target Operation category is used to enable algorithms which calculate different lumped mass balance algorithms required by Target Operations (see TARGET flag). None of the methods exist as separate functions, meaning that the target operation algorithms themselves must be used in conjunction with the other mass balance algorithms. It is important to note that either the Simple Target or Lagged Target method must be selected if a target operation is set on the Reservoir.

None

This is the default method in the Target Operation category. It performs no calculations. It may only be selected if a Target Operation is not performed on the object. There are no slots specifically associated with this method.

Simple Target

The Simple Target method distributes the required Inflow or Outflow evenly among all available timesteps. The total flow is divided among all the non-input timesteps included within the Target Operation to meet the Target. For most cases with a target operation, this is the desired behavior. There are no slots specifically associated with this method.

Lagged Target

The Lagged Target method should be used when there are lag times in the upstream reaches. When Inflows are known, this method solves for the same solution as the Simple Target method. When Outflows are known, this method distributes the required Inflow so a steady Outflow occurs from an upstream, non-integer timestep lagged, reservoir. To distribute Inflows, the Total Lag of Upstream Reaches and Outflow from Upstream Reservoir are used to calculate the required Inflows to the current Reservoir. These required Inflows must meet the Target and result in steady Outflow from the upstream Reservoir. The solution yields a perturbed Inflow at the first undetermined timestep of the Target Operation, followed by steady Inflows for the remainder of the undetermined target times. This solution removes the numerical instability which would be produced in the Outflow of the upstream reservoir using the Simple Target method.

Slots Specific to This Method

Outflow from Upstream Reservoir

Type: SeriesSlot

Units: FLOW

Description: outflow from the upstream reservoir

Information:

I/O: Required input

Links: Should be linked to the Outflow slot of the upstream reservoir.

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

Links: Not linkable

Sediment

The Sediment category is used to enable algorithms which adjust reservoir Elevation Volume and possibly Elevation Area relationships in response to sediment inflow.

None

The None method is the default for the Sediment category. No calculations are performed in this method. There are no slots specifically associated with this method.

CRSS Sediment

The CRSS Sediment method is designed based on sedimentation calculations performed by the US Bureau of Reclamation’s Colorado River Simulation System (CRSS) model. This function distributes reservoir sediment based on the Empirical Area Reduction Method. Simply put, sediment is distributed through an iterative process in which a total volume loss due to sedimentation is calculated based on an assumed top of sediment elevation.

Slots Specific to This Method

Elevation Area Table

Type: Table

Units: LENGTH vs. AREA

Description: generated elevation area table for calculating sediment distribution

Information:

I/O: Output only

Links: Not linkable

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

Links: Not linkable

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

Links: Not linkable

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

Links: Not linkable

Sediment Distribution Coefficients

Type: Table

Units: NOUNITS

Description: parameters for empirical equation governing sediment distribution

Information:

I/O: Required input

Links: Not linkable

Sediment Inflow

Type: SeriesSlot

Units: VOLUME

Description: volume of sediment flowing into the reservoir at each timestep

Information:

I/O: Required input

Links: Not linkable

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

Links: Not linkable

This volume loss is recalculated (with a new top of sediment elevation) at each iteration, until the calculated volume loss is equal to the actual volume of sediment inflow (within a specified convergence). The total volume loss calculation consists of a somewhat complicated algorithm utilizing elevation/area and elevation/volume data for the reservoir and an empirical equation. The empirical equation uses user specified parameters which relate the portion of total area that is taken up by sediment to the Pool Elevation. The empirical equation basically gives the shape of the accumulated sediment. The empirical equation has a close relationship to the elevation volume and elevation area characteristics of a given reservoir. The elevation/area and elevation/volume data is stored in a polynomial coefficient table, which gets recalculated after each timestep. The actual Elevation Area, Elevation Volume tables used by RiverWare are adjusted at the end of the sedimentation code (but prior to the hydrologic simulation).

Caution: Take care when creating input data for this method. The close relationship between the empirical area reduction equation and the shape of the reservoir (reflected in the User Input Elev Area Data) makes the method fairly sensitive to input data. When choosing empirical parameters for this method, physical characteristics of the given reservoir need to be considered. The Bureau of Reclamation currently considers 4 possible types of reservoirs, with each type having a corresponding set of empirical area reduction parameters. The reservoir type classification is based on the shape of the Reservoir, the manner in which the reservoir is to be operated, and the size of the sediment particles to be deposited in the reservoir. The main emphasis is on the shape. Tables are used to classify the reservoirs based on these characteristics. Once the type has been established, the parameter values for that type can also be taken from tables in the literature. An incorrect set of parameters for a given reservoir will lead to an inability to achieve convergence on the sediment distribution within this method.

Bank Storage

The methods in this category can be used on all types of reservoir objects. See “Bank Storage”.

Diversion From Reservoir

The methods in this category can be used on all types of reservoir objects. See “Diversion from Reservoir”.

Diversion Power

The methods in this category can be used on all types of reservoir objects. See “Diversion Power”.

Diversion Tailwater

The methods in this category can be used on all types of reservoir objects. See “Diversion Tailwater”.

Diversion Power Bypass

The methods in this category can be used on all types of reservoir objects. See “Diversion Power Bypass”.

Seepage

The methods in this category can be used on all types of reservoir objects. See “Seepage”.

Operating Levels

The methods in this category can be used on all types of reservoir objects. See “Operating Levels”.

Conditional Operating Levels

The methods in this category can be used on all types of reservoir objects. See “Conditional Operating Levels”.

Startup

The methods in this category can be used on all types of power reservoir objects. See “Startup”.

Head Loss

The methods in this category can be used on all types of power reservoir objects. See “Head Loss”.

Cavitation

The methods in this category can be used on all types of power reservoir objects. See “Cavitation”.

Avoidance Zones

The methods in this category can be used on all types of power reservoir objects. See “Avoidance Zones”.

Frequency Regulation

The methods in this category can be used on all types of power reservoir objects. See “Frequency Regulation”.

Dispatch Methods

solveMB_givenInflowHW

This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow and Energy.

Required Knowns

• Inflow 2

• Inflow

Required Unknowns

• Outflow

• Energy

• Storage

First, this method checks if the Pool Elevation at the current timestep is a Target flag. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve. The storage corresponding to a flat pool elevation is found as a seed value for the calculations via the Elevation Volume table. Since this is a Slope Power Reservoir, this storage is not the actual storage in the reservoir.

If these checks pass, the calculations which depend on the Pool Elevation are done (evaporation and seepage), if selected. The slope storage calculations are then carried out, including the mass balance, as follows:

This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This is an iterative process between the mass balance, the wedge storage calculation, and the bank storage calculation, if any. Spill and release are then found according to the user selected methods and the following equation:

The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.

solveMB_givenOutflowHW

This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.

Required Knowns

• Inflow 2

• Outflow

Required Unknowns

• Inflow

• Storage

First, this method finds the Storage associated with the known Pool Elevation. It then looks to see if the Pool Elevation at the current timestep is a Target Op. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.

If these checks pass, the Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the given Pool Elevation. The calculations which depend on the Pool Elevation are done (evaporation and seepage), if selected. The slope storage calculations are then carried out, including the mass balance, as follows:

This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This is an iterative process between the mass balance, the wedge storage calculation, and the bank storage calculation, if any. Spill and release are then found according to the user selected methods and the following equation:

The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.

solveMB_givenInflowStorage

This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow and Energy.

Required Knowns

• Inflow 2

• Inflow

• Storage

Required Unknowns

• Outflow

• Energy

First, this method checks if the Storage at the current timestep is a Target Op. If so, it begins the target solving process. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.

If these checks pass, the mass balance is carried out as follows:

This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). The slope storage, mass balance, evaporation, and seepage calculations are combined in an iterative process to arrive at a final value for the Pool Elevation and Outflow. Spill and release are then found according to the user selected methods and the following equation:

The power calculation, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.

solveMB_givenOutflowStorage

This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.

Required Knowns

• Inflow 2

• Outflow

• Storage

Required Unknowns

• Inflow

First, this method finds the Pool Elevation associated with the known Storage. It then looks to see if the Storage at the current timestep is a Target Op. If so, it begins the target solving process unless the Outflow is flagged Max Capacity. This case will result in an error. Otherwise, it checks if the Canal Flow slot is linked. If it is, the method exits, and waits for the Canal to solve.

If these checks pass, the Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the given Pool Elevation, then the mass balance is carried out as follows:

This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). Spill and release are then found according to the user selected methods and the following equation:

The energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.

solveMB_givenInflowOutflow

This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Storage (and Pool Elevation).

Required Knowns

• Inflow 2

• Inflow

• Outflow

Required Unknowns

• Storage

First, this method checks if there are Pool Elevation and Storage values for the previous timestep. If these slots are valid the method continues and checks if a Canal Object is linked. If there is a Canal Object and it has not yet solved, the method exits and waits for the Canal Object to solve.

If these checks pass, Outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the mass balance and spill methods using a convergence algorithm. The convergence algorithm used is detailed Reservoir Convergence (see “Reservoir Convergence”). If this flag is not present, then the mass balance is carried out as follows:

This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). This solution is performed with an iterative process. (See note below.) Spill and Release are then found according to the user selected methods and the following equation:

The energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.

Note: In specific cases when Storage is very close to zero, the iterative mass balance solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.

solveMB_givenEnergyInflow

This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow.

Required Knowns

• Inflow 2

• Inflow

• Energy

Required Unknowns

• Storage

An error will result if this object is linked to a Canal and this dispatch method is executed. A pre-iteration spill calculation and power release calculation are done next. A double iteration is then done with the inner loop iterating evaporation, bankstorage, seepage and mass balance (including slope storage) to solve for Storage, and the outer loop iterating spill and power (tailwater, and power release) to solve for Outflow. (See note below.)

The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.

Note: In specific cases when Storage is very close to zero, the iterative mass balance solve Storage solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.

solveMB_givenEnergyStorage

This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.

Required Knowns

• Inflow 2

• Storage

• Energy

Required Unknowns

• Inflow

Dispatching with this method will result in an error if the Storage is a target or if the Canal Flow slot is linked. Pre-iteration spill and power (tailwater and power release) calculations are done. A double iteration is performed iterating slope storage, seepage and evaporation in the inner loop to solve for Pool Elevation, and mass balance (solving for Inflow), spill, and power (tailwater and power release) in the outer loop to solve for Outflow.

The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.

solveMB_givenEnergyHW

Required Knowns

• Inflow 2

• Energy

Required Unknowns

• Inflow

• Storage

Dispatching with this method will result in an error if the Pool Elevation is a target or if the Canal Flow slot is linked. This should be avoided by insuring that the knowns/unknowns will not match this dispatch method during the target period or when a Canal is linked. Pre-iteration spill, power (tailwater and power release), evaporation and seepage calculations are calculated. A double iteration is performed, iterating slope storage, seepage and evaporation in the inner loop to solve for Pool Elevation, and mass balance (solving for Inflow), spill, and power (tailwater and power release) in the outer loop to solve for Outflow.

The power, energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.

solveMB_givenInflowRelease

This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Storage, Pool Elevation, Energy, and Outflow.

Required Knowns

• Inflow

• Inflow 2

Required Unknowns

• Energy

• Storage

• Outflow

This method exits with an error if Canal Flow slot is linked or if Spill is input.

If the Turbine Release is flagged Unit Values (U), the Unit Turbine Release subslots are summed to calculate and set the Turbine Release slot. If all the Unit Turbine Release slots are NaN, an error is issued. If the Unit Turbine Release slot is not visible because the Unit Power Table method is not selected, an error is issued.

If there is an unregulated spillway crest (because an unregulated spill method is selected) the method computes the upper limit for unregulated spill to prevent spilling too much water to drop the reservoir below the crest. Typically, this limit is computed as the volume of water above the crest converted to a flow. See the Unregulated Spill method for details.

The Outflow is computed as the sum of turbine release and spill inputs (if any) according to the user selected methods and the following equation:

Then the Storage (including wedge storage) is found with the following equation:

This equation may or may not contain other elements reflecting the user method choices (including hydrologic inflow, evaporation, precipitation, seepage, and bankstorage). The solution is done with an iterative process. (See note below.) Any error in the mass balance added to the unregulated spill slot, if it is being used. This value for unregulated spill may not conform to the unregulated spill table. Care should be exercised when dispatching using this method to insure that the mass balance is maintained.

Note: In specific cases when Storage is very close to zero, the iterative mass balance solution will follow one of two possible processes. The first process allows the loop to iterate in the negative storage range before final convergence. Convergence in this situation is typically quite rapid, and in instances when the final storage is, in fact, negative, an error is posted stating that the outflow is too large to be physically possible. This process is invoked if an additional row is appended to the Elevation Volume table specifying a negative storage value within which the loop can iterate. If specifying and allowing negative storage values in the iteration is not desired, no negative storage value should be appended to the Elevation Volume table. In this second process, the algorithm uses storage equals zero whenever it is in the negative storage range. If the outflow is really too great to be physically possible, the algorithm will keep iterating until it reaches maximum iterations. If this happens, RiverWare does a final mass balance check at the storage equals zero point and posts an error stating that the outflow is too large.

Revised: 06/03/2019