skip to main content
Storage Reservoir
Objects and Methods
Storage Reservoir
The Storage Reservoir is the least complicated of all the reservoirs modeled in RiverWare. The only process performed by the Storage Reservoir is the storage of water. No power production facilities exist on the Storage Reservoir. The following slots are those that are general to the object. This means that these slots will exist on the Storage Reservoir regardless of the selected user methods.
General Slots
Canal Flow
Type: Series Slot
Units: FLOW
Description: flow into (out of) the reservoir from (to) a canal
Information:  
I/O: Output only
Convergence Percentage
Type: Table
Units: NONE
Description: A percentage value ranging from 0 to 1 used for convergence in all iterative calculations
Information: See “Reservoir Convergence” for more information on the convergence algorithm.
I/O: Optional; defaults to 0.0001 if not input.
Diversion
Type: Series
Units: FLOW
Description: flow from the reservoir to a diverting object
Information: If not linked or input it is set to zero.
I/O: Optional; may be input or linked or neither
Diversion Capacity
Type: Scalar Slot
Units: FLOW
Description: used to hold the maximum diversion physically possible from the reservoir
Information: This slot is used in the accounting system for allocation purposes and can be used in Rulebased Simulation
I/O: Input only
Elevation Volume Table
Type: Table
Units: LENGTH vs. VOLUME
Description: reservoir pool elevation vs. reservoir storage
Information:  
I/O: Required input
Flow FROM Pumped Storage
Type: Series Slot
Units: FLOW
Description: flow into the reservoir from a pumped storage reservoir
Information:  
I/O: Optional; usually linked if used.
Flow TO Pumped Storage
Type: Series Slot
Units: FLOW
Description: flow out of the reservoir into a pumped storage reservoir
Information:  
I/O: Optional; usually linked if used.
Inflow
Type: Multi Slot
Units: FLOW
Description: inflow into the reservoir from upstream
Information:  
I/O: Optional; if not input by the user, it is set through either mass balance computations or the propagation of values across the link.
Max Iterations
Type: Table
Units: NOUNITS
Description: maximum number of allowable iterations for iterative loops in the solution algorithms
Information: Used in conjunction with Convergence Percentage as a stopping criterion for iterative calculations.
I/O: Optional; defaults to 100 if not input.
Max Release
Type: Table
Units: LENGTH vs. FLOW
Description: reservoir pool elevation vs. maximum release through controlled outlet-conduit of a reservoir (excluding spill)
Information:  
I/O: Required input
Outflow
Type: Series Slot
Units: FLOW
Description: outflow from reservoir
Information: The Outflow from a Storage Reservoir is equal to the sum of the Release and the Spill.
I/O: Optional; if not input by the user, it is set through either the mass balance computations or the propagation of values across the link.
Pool Elevation
Type: Series Slot
Units: LENGTH
Description: elevation of the water surface in 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.
Release
Type: Series Slot
Units: FLOW
Description: flow through the outlet-conduit of a storage reservoir (excluding spill)
Information:  
I/O: Optional; solved for if not input.
Return Flow
Type: Multi Slot
Units: FLOW
Description: flow returning from a diverting object
Information:  
I/O: Optional; defaults to zero if not linked or input.
Spill
Type: Series Slot
Units: FLOW
Description: sum of the regulated and unregulated spills and bypass
Information:  
I/O: Optional; may be input or solved for by RiverWare (see spill calculation methods).
Storage
Type: Series Slot
Units: VOLUME
Description: volume of water stored in the reservoir
Information: This slot may be flagged as a TARGET storage value by the user. 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.
Total Inflows
Type: Series
Units: Flow
Description: Summary slot displaying the flows into and out of the reservoir excluding the flows through the outlet works
Information: Total Inflows is calculated. Any component that is not in use or is not valid defaults to zero.
I/O: Output only
Inflow Sum
Type: Series
Units: Flow
Description: Sum of the total flows entering the reservoir at each timestep
Information: Inflow Sum is calculated.
I/O: Output only
Note:  Either the initial (Beginning of Run) value for Pool Elevation or Storage must be input by the user.
User Methods
Energy in Storage
The methods in this category can be used on all types of reservoir objects. See “Energy in Storage”.
Tailwater
The Tailwater category is used to model the effects of the tailwater elevation on reservoir releases. The tailwater elevation represents the water surface elevation immediately downstream of the storage reservoir’s release structure.
* None
This is the default method. It performs no calculations and there are no slots associated with it.
* Input Tailwater Elevation
This method is used if the tailwater elevation is linked to the downstream reservoir pool elevation or directly input by the user. There are no tailwater elevation calculations associated with this method. In other words, the outflow does not affect the tailwater elevation other than by changing the downstream pool elevation. When the tailwater elevation is above the tailwater reference elevation, the effective head is used to compute the max release.
Slots Specific to This Method
Tailwater Elevation
Type: Series Slot
Units: LENGTH
Description: The elevation associated with the downstream end of the head drop across a controlled release structure.
Information: The Tailwater Elevation is usually considered to be the pool elevation of the downstream reservoir.
I/O: Optional; may be linked or input
Tailwater Reference Elevation
Type: Scalar Slot
Units: LENGTH
Description: The lowest reservoir discharge elevation where there are no effects from a downstream reservoir pool elevation
Information: This slot is the elevation of the downstream side of the controlled release structure. The Effective Head is computed using either this elevation or the Tailwater Elevation (whichever is greater).
I/O: Required Input
Effective Head
Type: Series Slot
Units: LENGTH
Description: The head difference across a controlled release structure
Information: Computed as difference between the reservoir pool elevation the greater value of either the Tailwater Elevation or the Tailwater Reference Elevation. If the Tailwater Reference Elevation is greater than the Tailwater Elevation, the Effective Head slot is not used.
I/O: Output only
Head Vs Max Release
Type: Table Slot
Units: LENGTH vs FLOW
Description: The relationship between effective head and maximum reservoir release
Information: When the Tailwater Elevation is greater than the Tailwater Reference Elevation, the Effective Head is used with this table to determine the max release. Otherwise, the Pool Elevation and Max Release table are used to compute the Max Release (i.e. the Effective Head is not considered).
I/O: Required Input
In this method, Tailwater Elevation is either linked to the downstream reservoir pool elevation, or input by the user. Therefore, there are no calculations to determine the Tailwater Elevation. However, the Tailwater Elevation is used to compute the Effective Head, which is used to compute the maximum reservoir release. If the Tailwater Elevation is greater than the Tailwater Reference Elevation, the Effective Head is computed as follows:
If the Tailwater Elevation is less than the Tailwater Reference Elevation, Effective Head is computed as follows:
Note:  Important Max Release Calculation Details
If a tailwater method is not selected, the maximum reservoir release is computed using the average Pool Elevation and the Max Release table. The selection of a tailwater method allows the modification of the maximum reservoir release calculation. When the Input Tailwater Elevation method is selected, the average Effective Head (using the beginning of timestep and end of timestep values) is used with the Head Vs Max Release table to determine the maximum reservoir release. However, this is done ONLY if BOTH the beginning of timestep and end of timestep Tailwater Elevations are greater than the Tailwater Reference Elevation. Otherwise, the average Pool Elevation is used with the Max Release table to determine the maximum reservoir release.
Spill
The methods in this category can be used on all types of reservoir objects. See “Spill”.
Unregulated Spill Type
The methods in this category can be used on all types of reservoir objects. See “Unregulated Spill Type”.
Regulated Spill Overflow
The methods in this category can be used on all types of reservoir objects. See “Regulated Spill Overflow”.
Input Outflow Adjustment
The methods in this category can be used on all types of reservoir objects. See “Input Outflow Adjustment”.
Future Value
The methods in this category are used to determine the future value of the energy that would have been generated by the water that was lost through the spillway.
* None
None is the default method for the Future Value category. No calculations are performed by this method. There are no slots specifically associated with this method.
* Cumulative Storage Value Table
Slots Specific to This Method
Marginal Storage Value Table
Type: Table
Units: Volume vs. $per Energy
Description: Storage versus marginal value per unit energy
Information: This table should be increasing in storage, and usually decreasing in marginal value
I/O: Required input
Spill Cost
Type: Series Slot
Units: $
Description: Future cost of energy lost due to spilled water
Information:  
I/O: Output only
Anticipated Storage
Type: Series
Units: Volume
Description: The combination of Storage in the reservoir at the given timestep plus any flow (converted volume) that is in transit to the reservoir
Information: This slot represents the storage including any lagged flows that are already in a linked upstream reach, which will reach the reservoir at a later timestep. If there are no lagged reaches between this reservoir and the next upstream reservoir, Anticipated Storage will equal Storage. It is this storage value that will be used to calculate Cumulative Storage Value.
I/O: Output only
Cumulative Storage Value
Type: Series Slot
Units: $
Description: Represents the future energy value of the current Anticipated Storage
Information:  
I/O: Output only
Cumulative Storage Value Table
Type: Table
Units: Volume vs. $
Description: Anticipated Storage and cumulative value used to calculate the Cumulative Storage Value as a function of Anticipated Storage
Information: This table should be increasing in storage and usually increasing in cumulative storage value.
I/O: Required Input either by the user or automatically generated by RiverWare if the Cumulative Storage Value Table Automation method is selected.
This method uses the Marginal Storage Value Table and the calculated Spill and Turbine Release to compute the Spill Cost. These are the only calculations performed by this method.
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 25.1 is an example.
 
Table 25.1  Marginal Value Table
Storage
Marginal Value
20
30
60
26
100
24
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 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 three-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. Table 25.2 and Table 25.3 are a sample Marginal Value Table and the resulting Cumulative Storage Value Table. Figure 25.1 is a sample graph of the Cumulative Storage Value data.
 
Table 25.2  Marginal Value Table
Storage
Marginal Value
20
30
60
26
100
24
 
Table 25.3  Cumulative Storage Value Table
Anticipated Storage
Cumulative Value
40
1200
80
2240
140
3680
Figure 25.1  Cumulative Storage Value
Hydrologic Inflow
The Hydrologic Inflow category allows RiverWare to accommodate inflows to a Reservoir that are not part of the main channel and/or are not gauged. The user methods in this category may be used to initialize the Hydrologic Inflow slot if it is required by the user. If the Hydrologic Inflow slot has been initialized, it is figured into the mass balance when the object dispatches.
* None
None is the default method for the Hydrologic Inflow category. No calculations are performed by this method. There are no slots specifically associated with this method. If this method is selected, the Hydrologic Inflow slot is not initialized so it is no included in the mass balance.
* Solve Hydrologic Inflow
The Solve Hydrologic Inflow method should be used when the user wishes RiverWare to calculate Hydrologic Inflow. Hydrologic Inflow will be solved for when the Reservoir dispatches. RiverWare will not overwrite any user input values for Hydrologic Inflow. Hydrologic Inflow is only solved for when a value is not input.
Slots Specific to This Method
Hydrologic Inflow
Type: Series
Units: FLOW
Description: flow into the reservoir that is not gauged and/or does not enter through the main channel.
Information:  
I/O: Optional; calculated if not input.
Hydrologic Inflow Adjust
Type: Series
Units: FLOW
Description: optional adjustment that can be made to the calculated Hydrologic Inflow
Information:  
I/O: Optional; set to zero if not input by the user
Hydrologic Inflow Net
Type: Series
Units: FLOW
Description: sum of Hydrologic Inflow and Hydrologic Inflow Adjust
Information:  
I/O: Output only
The following steps are performed in the Solve Hydrologic Inflow method.
First, if Hydrologic Inflow Adjust is not set by the user, it is set equal to zero by RiverWare. Then if Hydrologic Inflow is not set by the user, it is calculated in the dispatch method (see Dispatch Methods for detailed explanation). Hydrologic Inflow Net is calculated as the sum of Hydrologic Inflow and Hydrologic Inflow Adjust.
* Input Hydrologic Inflow
The Input Hydrologic Inflow method should be used when the user wishes either to input the values of Hydrologic Inflow or have the values default to zero. RiverWare will not overwrite any user input values.
Slots Specific to This Method
Hydrologic Inflow
Type: Series
Units: FLOW
Description: flow into the reservoir that is not gauged and/or does not enter through the main channel.
Information:  
I/O: Optional; defaults to zero if not input.
Hydrologic Inflow Adjust
Type: Series
Units: FLOW
Description: optional adjustment that can be made to the calculated Hydrologic Inflow
Information:  
I/O: Optional; set to zero if not input by the user.
Hydrologic Inflow Net
Type: Series
Units: FLOW
Description: sum of hydrologic Inflow and Hydrologic Inflow Adjust
Information:  
I/O: Output only
The algorithm used for this method is very simple. If Hydrologic Inflow is not input by the user, it is set equal to zero. Hydrologic Inflow Net is calculated as the sum of Hydrologic Inflow and Hydrologic Inflow Adjust.
* Hydrologic Inflow and Loss
The Hydrologic Inflow and Loss method should be used when the user wishes to have negative inflows taken into account as unidentified losses.
Slots Specific to This Method
Hydrologic Inflow
Type: Series
Units: FLOW
Description: flow into the reservoir that is not gauged and/or does not enter through the main channel.
Information:  
I/O: Optional; defaults to zero if not input.
Hydrologic Inflow Adjust
Type: Series
Units: FLOW
Description: optional adjustment that can be made to the calculated Hydrologic Inflow
Information:  
I/O: Optional; the Hydrologic Inflow Adjust may either be input by the user or set to zero if it is not input. If the Inflow is negative, it is added to Hydrologic Inflow Adjust.
Hydrologic Inflow Net
Type: Series
Units: FLOW
Description: sum of Hydrologic Inflow and Hydrologic Inflow Adjust
Information:  
I/O: Output only
This method calculates Hydrologic Inflow using the following process.
If the user has selected this method and negative inflows occur, this method will be called from the dispatch method. The Inflow (which in this case is a negative number) will be added to the Hydrologic Inflow Adjust. Then the Inflow is set equal to zero. Otherwise, this method behaves like the Input Hydrologic Inflow method.
* Forecast Hydrologic Inflow
This method is used to forecast the hydrologic inflow based on known inflow values. When this method is selected, the Generate Forecast Hydrology category becomes visible. Within this category, methods are available to generate the hydrologic inflow forecast.
Generate Forecast Hydrology
This category contains methods that forecast the hydrologic inflow based on known inflow values. The user inputs the historical inflows to the reservoir and the methods adjust those values to represent a forecast. The methods in this category execute at the beginning of each timestep.
* None
This method is the default for this category. It will result in an error if it is selected and a run is started.
* Geometric Recession
On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Inflow is used to forecast and set the Forecasted Cumulative Hydrologic Inflow. If the Forecast Period methods is not selected, the input Deterministic Incremental Hydrologic Inflow slot is used to forecast and set the Hydrologic Inflow Forecast series slot.
Slots Specific to This Method
Hydrologic Inflow Forecast
Type: Series
Units: FLOW
Description: The forecasted hydrologic inflow values
Information:  
I/O: Output only
Deterministic Incremental Hydrologic Inflow
Type: Series
Units: FLOW
Description: This slots holds a time series of the actual hydrologic inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow Forecast slot.
Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Full Run method is selected, values from the Incremental Hydrologic Inflow slot will be copied into this slot prior to the forecast. This slot is not used (i.e. inputs are ignored) if the Forecast Period method is selected.
I/O: Input or set to the values in the Incremental Hydrologic Inflow slot
Period of Perfect Knowledge
Type: Scalar
Units: FLOW
Description: Number of timesteps for which the forecast will equal the Deterministic Incremental Hydrologic Inflow, i.e., the forecast is known with complete certainty.
Information: Minimum value of 1; maximum value equal to the number of timesteps in the forecast period.
I/O: Input only
Type: Not linkable
Recession Factor
Type: Scalar
Units: NONE
Description: A decimal value that is multiplied by the previous Hydrologic Inflow Forecast value to determine the current value after the Period of Perfect Knowledge.
Information:  
I/O: Input only
This method uses different slots and sets different slots if the Forecast Period is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If the Forecast Period is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Inflow (Source) to forecast and set the Forecasted Cumulative Hydrologic Inflow (Target). If it is not selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow Forecast slot (Target). The following uses the Source/Target terminology to describe the methods.
The Source slot values are required inputs for each timestep. At the beginning of each controller timestep, the Geometric Recession method is executed. For each forecast timestep within the period of perfect knowledge, the Target is set to the Source value. For each forecast timestep after the period of perfect knowledge, the Target is set by multiplying the value of the Target from the previous timestep by the constant recession factor.
A value for the Source slot must be known at every timestep during the run. If Target values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source slot are not entered past the end of the run, the Target values for these timesteps are assumed to be zero.
* Exponential Recession
On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Inflow is used to forecast and set the Forecasted Cumulative Hydrologic Inflow. If the Forecast Period 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: Series
Units: FLOW
Description: The forecasted inflow values computed from the Deterministic Incremental Hydrologic Inflow
Information:  
I/O: Output only
Deterministic Incremental Hydrologic Inflow
Type: Series
Units: FLOW
Description: This slots holds a time series of the actual hydrologic inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow Forecast slot.
Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Full Run method is selected, values from the Incremental Hydrologic Inflow slot will be copied into this slot prior to the forecast. This slot is not used (i.e. inputs are ignored) if the Forecast Period method is selected.
I/O: Input or set to the values in the Incremental Hydrologic Inflow slot
Forecast Period
Type: Table
Units: NONE
Description: Number of timesteps, not including the current timestep, that the inflow hydrograph will be adjusted.
Information:  
I/O: Input only
Period of Perfect Knowledge
Type: Scalar
Units: FLOW
Description: Number of timesteps for which the forecast will equal the Deterministic Incremental Hydrologic Inflow, i.e., the forecast is known with complete certainty.
Information: Minimum value of 1; maximum value equal to the number of timesteps in the forecast period.
I/O: Input only
Minimum Forecasted Flow
Type: Series
Units: FLOW
Description: The minimum forecasted flow.
Information: If the computed value for Hydrologic Inflow Forecast is less than the Minimum Forecasted Flow, it is set to the Minimum Forecasted Flow.
I/O: Input only
Low Flow Threshold
Type: Scalar
Units: FLOW
Description: The flow rate that dictates whether to use the Low Flow Recession Coefficient or the High Flow Recession Coefficient.
Information:  
I/O: Input only
Low Flow Recession Coefficient
Type: Scalar
Units: NONE
Description: The recession coefficient used when the Deterministic Incremental Hydrologic Inflow (at the end of the Period of Perfect Knowledge) is below or equal to the Low Flow Threshold.
Information:  
I/O: Input only
High Flow Recession Coefficient
Type: Scalar
Units: NONE
Description: The recession coefficient used when the Deterministic Incremental Hydrologic Inflow (at the end of the Period of Perfect Knowledge) is above the Low Flow Threshold.
Information:  
I/O: Input only
This method uses different slots and sets different slots if the Forecast Period is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If the Forecast Period method is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Inflow (Source) to forecast and set the Forecasted Cumulative Hydrologic Inflow (Target). If it is not selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow Forecast slot (Target). The following uses the Source/Target terminology to describe the methods.
The Source slot values are input for each timestep. At the beginning of each controller timestep, the Exponential Recession method is executed. For each forecast timestep within the period of perfect knowledge, the Target is set to the Source value. For each forecast timestep after the period of perfect knowledge, the Target slot is set as follows:
where Source is the value in the Source slot at the end of the period of perfect knowledge, C is the recession coefficient, t is the elapsed time of the forecast period, and T is the total time from the end of the period of perfect knowledge to the end of the forecast period.
If the Source at the end of the period of perfect knowledge is negative, the Target at that timestep is exactly equal to the Source. However, the Source used in the recession equation, is the last positive value for Source. In the event that there is not a positive value for the Source, RiverWare issues a warning, and all values for Hydrologic Inflow Forecast within the forecast period will be set to the Minimum Forecasted Flow.
A value for the Source slot must be known at every timestep during the run. If the Target values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source are not entered past the end of the run, the Target values for these timesteps are assumed to be zero.
* Coefficient and Exponent
On each timestep in the forecast period, this method will adjust the inflow hydrographs. If the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category, the Cumulative Hydrologic Inflow is used to forecast and set the Forecasted Cumulative Hydrologic Inflow. If the Forecast Period methods is not selected, the input Deterministic Incremental Hydrologic Inflow slot is used to forecast and set the Hydrologic Inflow series slot.
Slots Specific to This Method
Hydrologic Inflow
Type: Series
Units: FLOW
Description: flow into the reservoir that is not gaged and/or does not enter through the main channel.
Information:  
I/O: Output only
Hydrologic Inflow Adjust
Type: Series
Units: FLOW
Description: optional adjustment that can be made to the calculated Hydrologic Inflow
Information:  
I/O: Optional; the Hydrologic Inflow Adjust may either be input by the user or it is set to zero if it is not input.
Hydrologic Inflow Net
Type: Series
Units: FLOW
Description: Sum of Hydrologic Inflow and Hydrologic Inflow Adjust
Information:  
I/O: Output only
Forecast Inflow Parameters
Type: Table
Units: None
Description: Table slot that contains four parameters used in the forecast inflow method. The first row contains the values for the increasing hydrograph, the second row contains values for the decreasing hydrograph. The first column contains coefficients, the second column contains exponents.
Information: 2X2 table
I/O: Input only
Deterministic Incremental Hydrologic Inflow
Type: Series
Units: FLOW
Description: This slots holds a time series of the actual Hydrologic Inflows to the reach. These values are then adjusted by the forecast method and set on the Hydrologic Inflow slot.
Information: At the end of the run, the Hydrologic Inflow Forecast slot will be identical to this slot. If the Compute Full Run Incremental Inflows 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. The logic below uses the Lower Bound on the Deterministic Incremental Hydrologic Inflow slot as a minimum value. This is specified slot configuration (View->Configure menu). Consider setting this value as needed.
I/O: Input or set to the values in the Incremental Hydrologic Inflow slot
Forecast Period
Type: Table
Units: None
Description: Number of timesteps, not including the current timestep, that the inflow hydrograph will be adjusted.
Information:  
I/O: Input only
This method uses different slots and sets different slots if the Forecast Period method is selected for the Incremental Hydrologic Inflows on Subbasin category. But, there is always a Source slot and a Target slot where the Source slot is input and used to forecasted and set the Target slot. If Forecast Period is NOT selected, the reservoir calls this method at the beginning of the timestep and uses the Deterministic Incremental Hydrologic Inflow (Source) slot to forecast and set the Hydrologic Inflow slot (Target). If it is selected, the computational subbasin calls this method and uses the Cumulative Hydrologic Inflow (Source) to forecast and set the Forecasted Cumulative Hydrologic Inflow (Target). The subbasin then computes the incremental flow and sets the value on the Hydrologic Inflow slot. The following description uses the Source/Target terminology to describe the method.
The method 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 as follows, starting at i = 1.
where KIi is the Source at timestep i, HIi is the Target at timestep i. The counter i represents the timestep beyond the current timestep. For example, i = 1 is the next timestep, i = 2 is the current timestep + 2 timesteps, etc. The coefficient, C, and exponent, E, are the values in the Forecast Inflow Parameters slot. If(Source(i-1) <= Source(i)), E and C are the increasing (rising) values. Otherwise, E and C are the decreasing (falling) values.
In the 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. The logic uses the Lower Bound on the Target slot as the minimum value. This is specified on the slot configuration (Select View, then Configure.). If this value is specified it is checked, otherwise only 0.0 is used in the check. The logic is as follows:
If (Source(i-1) = 0.0 OR ABS(Source(i-1)) < ABS(Lower Bound) ) )
Target(i) = Source(i)
At the end of the method, the Hydrologic Inflow Net is set equal to the Hydrologic Inflow plus the Hydrologic Inflow Adjust for each timestep in the loop. This allows the rules to be able to use the Hydrologic Inflow Net before the object dispatches (such as in the GetMaxOutflowGivenInflow() function).
A value for the Source slot must be known at every timestep during the run. If forecasted Hydrologic Inflow values are desired past the end of the run, there must also be values in the Source slot at timesteps past the end of the run. If values for Source are not entered past the end of the run, the Hydrologic Inflows for these timesteps are assumed to be zero.
Incremental Hydrologic Inflows on Subbasin
The Incremental Hydrologic Inflows on Subbasin category contains methods used to specify that the reservoir has cumulative inflows that must be disaggregated into incremental inflows. There are two methods: Full Run and Forecast Period. The disaggregation is actually executed from the computation subbasin containing the reservoir. See “Incremental Local Inflows” for more information.
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. 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 Calculate 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: Series
Units: Flow
Description: The cumulative hydrologic inflow to the reservoir
Information: Hydrologic inflow is cumulative either (1) between headwater control points and the first reservoir in the river system and also throughout the system between two reservoirs, or (2) throughout the entire river system.
I/O: Required Input
Incremental Hydrologic Inflow
Type: Series
Units: Flow
Description: The incremental hydrologic inflow to the reservoir
Information: This slot is set by the Calculate Incremental Flows method on the computational subbasin and represents the actual hydrologic inflow to the reservoir. If a Generate Forecast Hydrology method is selected, the Deterministic Incremental Hydrologic Inflow slot will be set to the values in this slot.
I/O: Computed and set with the Input flag
* Forecast Period
The Forecast Period method is available from the Incremental Hydrologic Inflows on Subbasin category on the reservoir. This method is only available if the Forecast Hydrologic Inflows method is selected in the Hydrologic Inflow category and one of the forecasting methods (i.e. Geometric Recession, Exponential Recession, or Coefficient and Exponent) is selected in the Generate Forecast Hydrology category. If this method is selected, but the reservoir is not part of a subbasin with the appropriate methods selected, an error will be issued. The method contains two slots: Cumulative Hydrologic Inflow and Forecasted Cumulative Hydrologic Inflow. These slots will be accessed by the computational subbasin when executing the Compute Forecast Period Incremental Hydrologic Inflows method. The computational subbasin will use the user input Cumulative Hydrologic Inflow value to forecast and set the Forecasted Cumulative Hydrologic Inflow slot. It then uses this temporary value in its calculation of the incremental flows. The final result of this method (forecasted incremental hydrologic inflows) is set on the slot Hydrologic Inflow Forecast for each timestep in the forecast period.
Note:  Hydrologic Inflow is set instead if the Coefficient and Exponent method is selected). See “Compute Forecast Period Incremental Local Inflows” in the computational subbasin’s Incremental Local Inflows documentation for details.
Slots Specific to This Method
Cumulative Hydrologic Inflow
Type: Series
Units: Flow
Description: The cumulative hydrologic inflow to the reservoir
Information: Hydrologic inflow is cumulative either (1) between headwater control points and the first reservoir in the river system and also throughout the system between two reservoirs, or (2) throughout the entire river system.
I/O: Required Input
Forecasted Cumulative Hydrologic Inflow
Type: Series
Units: flow
Description: the forecasted cumulative Hydrologic inflow to the control point
Information: This slot is set by the selected Generate Forecast Hydrologic Inflows method on the control point as called from the computational subbasin. It represents the cumulative Hydrologic inflow to the control point forecasted throughout the forecast period. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques for details.
I/O: Output only
Evaporation and Precipitation
The methods in this category can be used on all types of reservoir objects. See “Evaporation and Precipitation”.
Evap and Precip Rate Specification
The methods in this category can be used on all types of reservoir objects. See “Evap and Precip Rate Specification”.
Low Flow Releases
This category is only used to add the slots necessary for low flow release calculations. These slots are generally used by a RPL function (called MeetLowFlowRequirement) to compute the low flow releases necessary to meet the low flow requirements on control point objects.
* None
This method performs no calculations and adds no slots.
* Enable Low Flow Releases
This method performs no calculations. It simply adds the Low Flow Release slot and Maximum Low Flow Delivery Rate slot. See “Low-flow Releases” in USACE‑SWD Modeling Techniques for details on using of this method for USACE-SWD.
Slots Specific to This Method
Low Flow Release
Type: Series Slot
Units: flow
Description: The portion of the Outflow that is intended to meet a low flow requirement
Information: This slot is normally computed by a RPL function (MeetLowFlowRequirement) that computes the low flow releases necessary to meet the low flow requirements on control point objects.
I/O: Usually set by a rule
Maximum Low Flow Delivery Rate
Type: Periodic Slot
Units: flow
Description: The maximum low flow delivery rate for the reservoir
Information: This value is used by the RPL function (MeetLowFlowRequirement) that determines the low flow releases from each reservoir. Low flow releases will be limited to this value.
I/O: Required input
Surcharge Release
Surcharge releases methods determine releases made during the forecast period. The releases are considered mandatory, due to the volume of water in the reservoir. These methods are executed only from the solveMB_givenInflowOutflow dispatch method when the Outflow slot is set with the surcharge release (S) flag. This flag can only be set by a rule.
* None
The default. Nothing is done
* Flat Top Surcharge
This method follows the procedure used by the computer program SUPER and the US Army Corps of Engineers Southwest District. See “Surcharge” in USACE‑SWD Modeling Techniques for details.
Slots Specific to This Method
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: Table describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: Number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Reach Evaporation” for a method to modify which operating level table is used within a run.
I/O: Required Input
Forecast Period
Type: Scalar
Units: No Units
Description: number of timesteps in the forecast period.
Information: number of timesteps over which Inflows are forecast and flood control releases (including surcharge releases) are calculated; includes current timestep.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool.
Information: Must be lower than the Top of Flood Pool. Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Rating Curves
Type: Table
Units: Storage vs Flow (Induced Surcharge) vs Flow (Free-Flow)
Description: two curves representing the induced surcharge (minimum) and free-flow (maximum) that can be released based on elevation in the reservoir. The intersection of the two curves must be defined (there must be a row where the values in the middle and third column are equal) and the points of the free-flow curve beyond the end of the induced surcharge curve must be input in the table column for the induced surcharge curve.
I/O: Required input unless the Specify Rating Curves using Elevation method is selected. See “Specify Rating Curves using Elevation”.
Surcharge Release
Type: Series
Units: Flow
Description: release required by operating when the reservoir elevation is in the surcharge pool.
Information: set by surcharge release method for all timesteps in forecast period
I/O: Output
Minimum Mandatory Release
Type: Series
Units: Flow
Description: minimum surcharge release that can be achieved within the timestep following the induced surcharge curve
Information: calculated for each timestep in the forecast period, but the slot is set only for the current timestep.
I/O: Output only
Maximum Mandatory Release
Type: Series
Units: Flow
Description: maximum surcharge release that can be achieved within the timestep following the free-flow rating curve
Information: calculated for each timestep in the forecast period, but the slot is set only for the current timestep.
I/O: Output only
Method Details
This method is based on the methodology developed by the US Army Corps of Engineers, Southwest Division. In this method, the surcharge, or mandatory, releases, as well as minimum and maximum mandatory releases, are determined for a number of timesteps called the forecast period that will prevent overtopping of a reservoir. These releases are determined for each timestep in the Run Control Dialog.
The name of this method comes from the process of selecting releases during the forecast period to minimize future releases. In other words, release a little more today to reduce, or flatten out, future releases. This approach aims to prevent excessively large inflows from creating equally large releases by extending the time period over which these inflows are released.
This method is used by the dispatch method, solveMB_givenInflowOutflow, whenever the surcharge release flag (S) is set on the Outflow slot (this flag can only be set by a rule). When inflows, which includes the sum of upstream inflows and hydrologic inflows, are known, and the rule sets the flag for the current controller timestep, the surcharge method is launched and surcharge releases and minimum and maximum mandatory releases are calculated for each timestep in the forecast period for the current controller timestep. This process progresses through each timestep on the Run Control Dialog.
The user should be aware of the distinction between the controller timestep, or timesteps set in the Run Control Dialog, and forecast timesteps. Once the surcharge method is invoked, surcharge calculations are performed for the forecast timesteps. The controller timestep does not advance, even though the Surcharge Release slot receives output from the method. Outputs in this slot are overwritten during the next controller timestep, except for the first.
The calculation of the surcharge releases for the forecast period is accomplished by using a loop structure once the surcharge method is invoked by the dispatch method mentioned above. Calculations for each timestep in the forecast period are exactly the same except for changes in the starting storage volume and inflows. The following sections provide a detailed description of the process that is used to calculate the surcharge release and minimum and maximum mandatory releases within.each loop. There a three main sections: calculations of the minimum and maximum mandatory releases, which bound the surcharge release, and the calculation of the surcharge release.
The first step is to determine the forecast storage. This volume is the initial storage (storage at end of previous computational timestep if this is the first time through the loop, or the storage at the end of the previous forecast timestep for all subsequent loops) plus the total inflow minus any surcharge releases for all forecast timesteps prior to the current forecast timestep. The total inflow is the sum of the upstream inflows plus hydrologic inflows for the current forecast period. For the first forecast timestep, the forecast storage is simply the storage in the reservoir on the previous controller timestep. On subsequent forecast timesteps, the forecast storage includes total inflows through the current forecast timestep and surcharge releases through the previous forecast timestep.
A table interpolation of the Elevation Volume Table is then done to determine the forecast elevation. If the forecast elevation is less than the lowest capacity value input in the induced surcharge curve, which is the middle column on the Rating Curves slot, the minimum mandatory release is zero and the program progresses to determine the maximum mandatory release. Otherwise it continues to determine the minimum mandatory release.
Calculation of the Minimum Mandatory Release
If the forecast elevation falls between the highest and lowest capacity (or elevation) values on the induced surcharge curve, the program determines a discharge rate corresponding to the forecast elevation by interpolation of capacity values from the induced surcharge curve. This is the minimum that can be released based on the forecast elevation. If the forecast elevation is greater than the highest capacity value, the curve must be extended, i.e., there is no extrapolation of the curve. In a similar fashion, the total inflow is used in an interpolation of the induced surcharge curve to determine a corresponding elevation. If this elevation corresponding to the total inflow is less than the minimum discharge rate based on the forecast elevation, the pool is falling. For the opposite case, the pool is rising. If the total inflow and the minimum release corresponding to the forecast elevation are equal, the minimum release is set to this discharge rate and the program goes on to determine the maximum release.
Falling pool: If the pool is falling (the forecast inflow is less than minimum discharge corresponding to the forecast elevation), the program uses a specific portion of the induced surcharge curve to determine the minimum mandatory release. The set of points includes all points between and including the point on the curve corresponding to the total inflow for the current forecast timestep to the minimum discharge based on the forecast elevation. Using this portion of the induced surcharge curve, the program calculates how long it will take the reservoir to move from the forecast elevation to an elevation corresponding to the total inflow or how much volume can be discharged within one timestep, whichever is less. In the case of a falling pool, the process involves moving down the curve. For the opposite case (rising pool), the process will be reversed, moving up the curve since the discharge rate corresponding to the forecast elevation is less that the total inflow. In either case, the program begins at the curve point corresponding to the forecast storage and progresses to that point corresponding to the total inflow.
The process of progressing through the curve point is as follows:
First, the average of the discharge rates corresponding to the first two (or highest) curve points is found. Then the time it would take to release a certain volume at some discharge rate is determined. This volume is the difference in storage values from the curve points that correspond to the two discharges used to calculate the average discharge rate. The time is calculated as follows:
where
Storage(i) and Storage(i-1) are the storage values corresponding to the two discharge values (the difference is the volume that is being released). The value of Forecast Inflow - Average Discharge represents the net discharge.
If this time is less than one timestep’s time, the program stores the time and the total volume that could be released in this time at the average discharge, which equal Time * Average Discharge. The program then moves to the next two curve points, gets another average discharge rate corresponding to these two curve points and again determines the time it would take to drop from one capacity value to the next at the net discharge rate. This new time plus the time for the previous two curve points is now the new total time and is again checked to see if it is greater than one timestep. If less still less than one timestep, the total time and total volume are stored (replacing the previous values) and the program moves to the next two curve points. This process continues until either the point corresponding to the total inflow is reached or the total time has reached or exceeded one timestep, whichever occurs first.
If the total time at this point is exactly equal to one timestep, the calculations are done and the minimum mandatory release equals the total volume divided by the time of one timestep. If the total time is greater than one timestep’s time, the total time from the previous iteration is used to see how much time was left before reaching a total time of one timestep. Given the average discharge rate for the current iteration, the volume that could be released within the time remaining is determined. This volume is then added to the total volume and the final minimum mandatory discharge rate is calculated as described above.
If the computation gets through all the curve points, i.e., the curve point corresponding to the total inflow, with a total time that is less than or equal to one timestep, the total volume is increased by adding to the previously stored total volume to (Time of 1 timestep - total time) * total inflow. Then, the minimum mandatory release is calculated by dividing the total volume by the time of one timestep.
Example 25.1  Example of minimum mandatory release w/ falling pool
Figure 25.2 is a plot of the induced surcharge curve. Assume that the timestep is a day, there is a falling pool, the total inflow for the current forecast timestep = 80,000 cfs, and the minimum release that the reservoir can make corresponding to the forecast storage of 450,000 ac-ft. = 365,000 cfs. Therefore, the portion of the curve that is used to determine the minimum mandatory release is bracketed by these two discharge points (donuts on plot), and the three actual curve points between these. First, the average discharge rate of 365,000 and 260,000 cfs = 312,500 cfs is determined. Then the volume between the two storage values corresponding to these two discharge points (450,0000 - 445,000 = 5,000 ac-ft = 217,800,000 cu. ft.) is calculated. Then, the time it takes the reservoir to release this volume of water at the calculated average discharge rate (217,800,000cu.ft./312,500 cfs = 0.26 hours) is determined. Since this time is less than 24 hours (one timestep), the total time of 0.26 hours and the total volume = 0.26*312,500 = 5,000 ac-ft is stored and the next two discharge points are used. Using these two points (260,000 and 180,000), the average discharge rate = 220,000 cfs, the volume between storage values corresponding to these two discharges = 445,000 - 440,000 = 5,000 ac-ft, and the time to release that volume at the net discharge rate = 0.43 hours. This total time = 0.69 is still less than 24 hours, so the program moves to the next two points (180,000 and 95,000) after storing the total volume, which = 10,000 ac-ft. The average discharge for the next two points is 137,500 cfs and the storage volume between these points is 440,000 - 430,000 = 10,000 ac-ft. The time to release this volume at the net discharge rate is 2.10 hours, so the total time is now 2.79 hours, which is still less than 24 hours. The total volume that is stored now = 20,000 ac-ft). The final two discharge points are 95,000 and 80,000 cfs, with an average of 87,500 cfs. The volume between these points is 5,000 ac-ft (430,000 - 425,000 ac-ft). The time to release this volume is 8.07 hours, the total time is 10.86 hours, and the total volume = 25,000 ac-ft). Although still less than 24 hours, all of the specific points of the curve have been used. The final total volume is the sum of the previous total of 25,000 ac-ft + (24hrs - 10.86)*total inflow. The minimum mandatory release is this new total volume divided by 24 hours.
Figure 25.2   
Rising Pool: If the pool is rising (total inflow greater than discharge corresponding to the forecast storage), the calculation is the same as for the case of a falling pool except that the progression through the curve point will be up the curve instead of down the curve. The lowest point is the minimum discharge that must be released corresponding to the forecast storage and the highest point is the total inflow for the current forecast day.
Calculation of the Maximum Mandatory Release
The maximum release is determined in the same manner as the minimum release except that the free-flow rating curve is used instead of the induced surcharge curve. The program again determines if the pool is be rising or falling, then progressed through the specific curve points to calculate the maximum mandatory release.
Calculate Surcharge Releases
Once the maximum and minimum mandatory releases have been determined, the program computes surcharge release to flat top the incoming flood. The objective is to have slightly higher mandatory releases sooner than later to try to reduce the surcharge releases that would need to be made later as inflows continue to come into the reservoir. The program looks ahead in the forecast period to anticipate high flows with higher releases in order to reduce the maximum release needed in the future to keep the pool at or below the induced surcharge curve until such time as the top of the induced surcharge curve is reached.
Bracket mandatory release on induced surcharge curve: To determine the mandatory release, the program steps through the points on the induced surcharge curve to determine what the surcharge release must be in order to reduce the maximum release at some time in the future when the reservoir is expected to be the fullest.
First, the available storage is calculated as the difference between the forecast storage and the storage at the first induced surcharge point. Then, the highest storage in the reservoir over the remainder of the forecast period is calculated using the remaining inflow hydrograph and a constant release equal to the discharge rate corresponding to the currently considered point on the induced surcharge curve. If the highest storage is greater than the storage available, the program continues to the next point on the induced surcharge curve and recalculates the available storage and the highest forecast storage; again using the remaining inflow hydrograph and the release associated with that point. Moving to each new curve point effectively increases the release, there by reducing the maximum storage required and increasing the available storage. This process of checking each of the points on the induced surcharge curve continues until the highest forecast storage is less than the available storage.
Before moving to another point on the curve, the program stores the available storage, the highest forecast storage, and the discharge rate to be used for future interpolation.
If the final, or highest, curve point is reached and the available storage is still less than the highest forecast storage, the program execution is terminated and a request is made for extending the curve.
Once a curve point is found that satisfies the condition that the highest forecast storage is less than the available storage, the program is considered to have found the general vicinity of the appropriate value of the surcharge release, or in other words bracketed the portion of the curve. At this time, there are two pairs of stored values for each of the following parameters: available storage, the highest forecast storage, and the discharge rate.
Use forecast inflows to zoom in on solution: Having bracketed the part of the induced surcharge curve that contains the appropriate surcharge release, it is now necessary to find the point in that range for which the available storage is just equal to the highest forecast storage. This part of the program uses inflow values from the forecasted inflow array as intermediate discharge test points. The purpose of looking through the forecasted inflows narrows the solution for the right surcharge release.
The program scans through the forecast period to see if any inflows fall between the two discharge values that have been stored. If any fall in there, the smallest is stored. Then, this inflow value is used similarly to how the discharge values from the various curve points were used above to determine the available storage and highest forecast storage if the inflow is assumed to be the release. This is followed by a check to see if the available storage is less than the highest forecast storage. If so, the program looks to see if another higher inflow within the forecast period can satisfy the condition and, if found, available storage and highest forecast storage is recalculated. However, at the next point, the lower limit within which the inflow must fit above is raised to the inflow value that was used previously. If no inflow is large enough to make the available storage larger than the required storage, continue on with the two discharge values from the curve that were stored after the solution was initially bracketed.
If there are no inflows within the forecast period that fall in the range of the two discharge points on the curve or if no inflow values during the forecast period are large enough to make the available storage large enough to exceed the highest forecast storage, the algorithms goes to the next section where an interpolation is used to find the surcharge release for the current forecast day using points off the curve.
Interpolate to find surcharge release for current forecast day: The induced surcharge curve has been bracketed by two points. At the higher point on the curve, the discharge satisfies the condition that the available storage >= highest forecast storage. At the lower point, the condition is not satisfied. (The discharge values may be specified input points from the induced surcharge curve, or may be points found as described in the previous section from the forecasted inflow array.) Once the condition of available space being larger than or equal to the required storage is satisfied, the extra available storage is calculated for the set of points that satisfied the condition (available storage - highest forecast storage) and the extra volume needed to store the highest forecast storage for the set of points that didn’t satisfy the condition (highest forecast storage - available storage). Finally, using the extra space, extra storage needed, and the two discharge points, an interpolation is done to find the surcharge release for the current forecast day. The resulting surcharge release value is that which would very closely match the available storage and highest forecast storage, given that release rate.
Compare surcharge release with maximum and minimum release values: Once the surcharge release is determined, it is compared to the maximum and minimum mandatory releases calculated earlier. If the surcharge release is greater than or less than these limits, respectively, it is set to the limit. In addition, the storage of the reservoir is reduced to reflect the surcharge release for the current forecast timestep. This storage for the current forecast timestep is used as the initial storage for the calculation of forecast storage on the next timestep in the forecast period.
Check surcharge release against conservation pool: The final section in this method involves a check to see of the surcharge release results in a pool level below top of conservation pool. The reservoir storage with the surcharge release already made through current forecast day is checked to see if it is above or below the conservation pool. If below, the surcharge release is set to that which would bring the storage down to the conservation pool. If the storage is already below the conservation pool before this release is made, the surcharge release for the current forecast timestep is zero. If above the conservation pool, the surcharge release is left as is.
The program then moves to the next forecast day. After the surcharge releases and minimum and maximum mandatory releases have been determined for every timestep in the forecast period, the calculations are complete.
Finally, the method selected in the Elevation Max Duration Constraints category is executed (see “Elevation Max Duration Constraints”). This may increase the Surcharge Release to avoid the reservoir from exceeding a desired elevation for more than the desired number of timesteps.
* Induced Surcharge Curve
This method follows the procedure used by the US Army Corps of Engineers Kansas City office to determine surcharge releases during a forecast period for reservoirs with Tainter gates.
Slots Specific to This Method
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: Table describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: Number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Reach Evaporation” for a method to modify which operating level table is used within a run.
I/O: Required Input
Operating Level
Type: Series
Units: None
Description: The computed operating level
Information: This slot is computed using the pool elevation and the Operating Level Table
I/O: Output only
ForecastPeriod
Type: Scalar
Units: No Units
Description: number of timesteps in the forecast period.
Information: number of timesteps over which Inflows are forecast and flood control releases (including surcharge releases) are calculated; includes current timestep.
I/O: Required Input
Top of Flood Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the flood pool.
Information: Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool. Must be lower than the Top of Flood Pool. Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Induced Surcharge Curve
Type: Table
Units: Flow (Inflow) vs Length (Elevation) vs Flow (Surcharge Release)
Description: family of curves that relate elevation and surcharge release for various inflow values.
I/O: Required Input
Surcharge Release
Type: Series
Units: Flow
Description: release required by operating when the reservoir elevation is in the surcharge pool.
Information: set by surcharge release method for all timesteps in forecast period
I/O: Output
Recession Target
Type: Series
Units: Length
Description: pool elevation at which surcharge operations are suspended.
Information: once pool drops to this elevation, Surcharge Release operations will terminate.
I/O: Optional, can be input, or will default to the elevation of the bottom of surcharge pool (top of flood pool).
Gate Opening Curve
Type: Table
Units: Length (Elevation) vs Flow vs Length(Gate Opening).
Description: This is a family of curves of that relate pool elevation and discharge for various gate openings. This must be specified as a 3D table; see “Three-dimensional data format” for details.
I/O: Required Input
Gate Opening
Type: Series
Units: No Units
Description: gate opening calculated for each timestep.
I/O: Output
Storage Tolerance
Type: Scalar
Units: Volume
Description: allowable difference between calculated average storage and beginning of timestep storage.
Information:  
I/O: Required Input
This method determines a surcharge release for each timestep in the forecast period. The process begins by determining a Surcharge Release value from the Induced Surcharge Curve, given Inflow (net) and current Pool Elevation (end of previous timestep for the first iteration). Given the Surcharge Release value, the Gate Opening is determined by interpolation of the Gate Opening Table. The Gate Opening is not allowed to be reduced if the reservoir is in surcharge operations (Surcharge Release > 0). If the Gate Opening from the Curve is less that the current Gate Opening, the current Gate Opening is maintained, but a new Surcharge Release is determined given that gate opening by interpolation of the Gate Opening Curve. Otherwise, the Surcharge Release from the Induced Surcharge Curve is used.
The reservoir is then mass balanced using the Inflow (net) and Surcharge Release to determine the end of period Storage. If the Surcharge Release drops the reservoir below the Recession Target, a new Surcharge Release is determined that would drop the reservoir to exactly the Recession Target and the mass balance would resolve for the end of period Storage. Then an average Storage is determined using the beginning and ending period Storages. If the difference between the current storage and the new average storage is greater than the Storage Tolerance, the process is repeated using the new average storage to compute the new current pool elevation and a new Surcharge Release. Otherwise, the method moves on to the next forecast timestep.
* Pass Inflows
This method is designed to pass the inflows to the reservoir whenever the pool elevation enters the surcharge pool. If the inflows cannot be passed (due to the physical limitations of the outlet works) the surcharge release is set equal to the max outflow. Then the gates remain open until the surcharge pool is evacuated.
Slots Specific to This Method
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: Table describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: Number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Reach Evaporation” for a method to modify which operating level table is used within a run.
I/O: Required Input
Operating Level
Type: Series
Units: None
Description: The computed operating level
Information: This slot is computed using the pool elevation and the Operating Level Table
I/O: Output only
ForecastPeriod
Type: Scalar
Units: No Units
Description: number of timesteps in the forecast period.
Information: number of timesteps over which inflows are forecasted and surcharge releases are calculated; includes current timestep.
I/O: Required Input
Top of Flood Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the flood pool.
Information: Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool. Must be lower than the Top of Flood Pool. Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Surcharge Release
Type: Series
Units: Flow
Description: the computed surcharge release
Information: set by surcharge release method for all timesteps in forecast period
I/O: Output
This method is executed for every timestep in the forecast period when the surcharge release flag is set on the Outflow slot. The surcharge release is set equal to the total inflow to the reservoir (Inflow plus Hydrologic Inflow Forecast) if the pool elevation will exceed the top of the flood pool. If the inflow cannot be passed due to outlet constraints, the surcharge release is set equal to the maximum outflow. If this happens, the gates remain fully open and the surcharge release is set equal to the max outflow until the surcharge pool is evacuated. If the computed surcharge release will bring the pool elevation below the top of the flood pool, it will be reset to bring the pool elevation exactly to the top of the flood pool.
* Specified Surcharge
This method is used to compute the surcharge release based on a user specified value. As always, the surcharge release is limited to the physical maximum outflow from the reservoir.
Slots Specific to This Method
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: Table describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: Number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Reach Evaporation” for a method to modify which operating level table is used within a run.
I/O: Required Input
Operating Level
Type: Series
Units: None
Description: The computed operating level
Information: This slot is computed using the pool elevation and the Operating Level Table
I/O: Output only
ForecastPeriod
Type: Scalar
Units: No Units
Description: number of timesteps in the forecast period.
Information: number of timesteps over which inflows are forecasted and surcharge releases are calculated; includes current timestep.
I/O: Required Input
Top of Flood Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the flood pool.
Information: Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool.
Information: Must be lower than the Top of Flood Pool. Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Surcharge Release
Type: Series
Units: Flow
Description: the computed surcharge release
Information: Set by surcharge release method for all timesteps in forecast period
I/O: Output
Specified Surcharge release
Type: Scalar Slot
Units: Flow
Description: The user input surcharge release
Information: This value is used to set the surcharge release slot whenever the pool elevation is in the surcharge pool but less than the Critical Elevation
I/O: Required Input
Critical Elevation
Type: Scalar Slot
Units: Length
Description: the elevation at which the surcharge release changes from the Specified Surcharge Release to the maximum release
I/O: Required Input
This method is executed for every timestep in the forecast period when the surcharge release flag is set on the Outflow slot. The surcharge release is set equal to the Specified Surcharge Release if the pool elevation will exceed the top of the flood pool. If the pool elevation will exceed the Critical Elevation, the surcharge release is set equal to the maximum outflow. If this happens, the gates remain fully open and the surcharge release is set equal to the max outflow until the surcharge pool is evacuated. If the computed surcharge release will bring the pool elevation below the top of the flood pool, it will be reset to bring the pool elevation exactly to the top of the flood pool.
Rating Curves Modification
This category is dependent on having Flat Top Surcharge method selected in the Surcharge Release category. Methods are used to optionally modify the Rating Curves table.
* None
This is the default method, no modification to the Rating Curves is made.
* Specify Rating Curves using Elevation
When the Specify Rating Curves using Elevation method is selected the following slot is added.
Rating Curves using Elevation
Type: Table Slot
Units: Elevation vs Flow vs Flow
Description: This table represents the Rating Curves Table with Elevation as the independent variable instead of Storage as shown on the Rating Curves table. Thus, The table relates Elevation, Induces Surcharge, and Free Flow Rating Curve.
Information: Specified only
I/O: Not linkable
When this method is selected, at the beginning of the run, the reservoir will generate the Rating Curves based on the Rating Curves using Elevation slot as follows.
1. Copy all of the data in the Rating Curves using Elevation table to the Rating Curves table. This will resize and/or rebuild the table as necessary.
2. For each row in the Rating Curves using Elevation table, the Elevation will be looked up on the Elevation Volume Table to determine the Storage.
3. The Storage will then be written to the Rating Curves table. The Induced Surcharge Curve and Free Flow Rating values were already copied from the Rating Curves using Elevation table.
4. The Rating Curves table will be marked as “has Source Slot”. This makes the slot read-only with cross hatching over the value. It also adds:
Note:  These values are automatically generated based on Reservoir.Rating Curves using Elevation.
Within the Flat Top Surcharge method, the original Rating Curves (storage based) tables will be used for all computations.
Elevation Max Duration Constraints
This category is dependent on the Flat Top Surcharge method being selected in the Surcharge Release category.
* None
This is the default method in this category. There are not maximum duration constraints on Pool Elevation.
* Constant Additional Surcharge Release
The Constant Additional Surcharge Release method allows the user to specify 1 or more elevation max duration constraints. The method is executed at the end of the Flat Top Surcharge method to compute the additional volume of water to meet the maximum elevation duration constraints. This volume is then released as a constant (additional) flow of water from the current timestep to the violation date.
method-specific slots
Elevation Maximum Duration Table
Type: Table Slot
Units: Length vs Number of Timesteps vs Number of Timesteps
Description: The input data in this table drive this method.
Information: It has three columns: (1) Pool Elevation (length): the elevation to which the constraint applies. Rows must be in order of decreasing elevations. (2) Maximum Duration: the maximum number of timesteps this reservoir can be above this row's Pool Elevation. (3) Reset Duration: the minimum number of timesteps the reservoir elevation must remain at or below this row's Pool Elevation in order to reset the duration counter; i.e., how long must the Pool Elevation remain low to be considered not above this row's Pool Elevation.
I/O: Required Input
Elevation Maximum Duration Release
Type: Aggregate Series Slot
Units: Flow
Description: The additional flows added to Surcharge Release explicitly for the purpose of meeting the Pool Elevation maximum duration constraints.
Information: The first column is the total for all constraints, the other columns correspond to single constraints. The column name are based on the row labels in the table described above.
I/O: Output only
This method is executed as part of the Flat Top Surcharge. After the Surcharge Release calculation has calculated the reservoir releases necessary for evacuating the surcharge pool over the forecast period, this method determines if this proposed release schedule would violate a Pool Elevation maximum duration constraint. If so, then the surcharge release is increased as necessary to avoid violating the constraint.
The additional flow is calculated as the volume of water which would need to be released to avoid violation of the constraint, and adding that volume to the release schedule in equal increments, i.e. constant additional release. This calculation is performed for each row of the Elevation Maximum Duration Table. Each iteration may add water to the proposed release. See “Elevation Maximum Duration Table” for details.
Continuing with the example above, assume that at timestep t the reservoir computes the Surcharge Releases and that (given these releases) the reservoir's storage will have been between 800 and 900 m for 5 days at timestep t + 2. The difference in storage between the projected Pool Elevation at t + 2 and 1000 m is 300 m3. RiverWare will then add 100 m3 to the surcharge releases (and Outflow) for t, t + 1, and t + 2 to bring the elevation down to 1000m at t + 2.
This method sometimes produces results that are counter-intuitive. Following are some items to consider when looking at results.
Multiple constraints lead to non constant release patterns
This method determines the constant additional release required to meet each constraint. The actual additional flow that will be added to the surcharge release is the sum of the values for each constraint. Therefore, the final release schedule may not be a constant value if there are multiple constraints in effect.
Surcharge pattern leads to non constant release patterns
The originally computed Surcharge Release schedule is not constant, so adding flows to the surcharge release will result in a non-constant release schedule.
Forecast values are overwritten at each timestep
The Surcharge Release method, including this method, is executed at each timestep and will update the values in the Surcharge Release and other slots throughout the forecast period. Therefore, at the end of the run, the results may not be obvious what is happening. If you really want to see the schedules used for a particular timestep, pause the run after that timestep has executed, then look at slot values or the special results in the model Run Analysis tool. See “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques for details.
Constraining elevations may not be exactly met
Surcharge Release operations do not include Evaporation or Precipitation in the computation. Similarly, reservoir diversions (withdrawals) are performed after surcharge operations. Once the other operations execute and the reservoir dispatches and solves, the resulting elevation may be slightly different than the values used in the Surcharge and elevation max duration computations. This will manifest in not exactly reaching the constraining elevations. Because diversions (and evaporation) remove water from the reservoir, typically the elevations will be slightly below the constraining elevations.
Duration constraints still aren’t met
Maximum outflow constraints are applied after this additional release schedule is computed. Thus, even if the an additional amount is required, it may not be released and the target elevation may not be achieved. The proposed values are stored in the Surcharge Release slot, the actual maximums would be stored in the Outflow slot.
Elevations are unexpectedly at (or below) the constraint
The algorithm looks at the pool elevation after forecasting and surcharge have executed. (This pre-constrained pool elevation is currently not available but looking at the forecasted inflows gives some indication of the values.) It then determines the additional flow to prevent violating the constraint at any time in the forecast period. If the elevation is already at the constraint, then the additional flow will likely keep the elevations at or even below the constraint. The method will add releases to the current timesteps (and future) timestep. There is no mechanism to delay releasing water to wait until the flood actually arrives. Thus, if it seems like the elevation should stay above the constraint, the algorithm will start releasing to make room for forecasted inflows.
For example, when a large flood is within the period of perfect knowledge, then the algorithm may then need to release a large volume to meet a constraint at some point in the forecast period. This may cause the reservoir to go below the constraint to make room for the incoming flood (i.e. dig a hole for the incoming flood). But, the elevation should end up at the constraining elevation on the constraining timestep.
There are still violations in the forecast period
Only one violation per constraint is considered, though in theory there could be another violation later in the forecast period.
Flood Control Release
Flood control releases on reservoirs cause dependent slots to be available for use by the predefined flood control rule function.
* None
The default. No dependent slots.
* Operating Level Balancing
Choose this method when you wish to use rules to perform Operating Level Balancing flood control on a computational subbasin, of which this reservoir is a member; see “Operating Level Balancing” for details. See “Flood Control” in USACE‑SWD Modeling Techniques for details on using this method for USACE-SWD.
Slots Specific to This Method
Forecast Period
Type: Scalar
Units: No Units
Description: Number of timesteps in the forecast period.
Information: Number of timesteps over which storages are forecasted and surcharge releases are calculated; includes current timestep. Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Balance Period
Type: Scalar
Units: No Units
Description: Number of timesteps in the balance period.
Information: Number of timesteps into the future at which the flood control inspects the storage of the reservoir to determine the goal for flood control releases. The goal is to release all the water in the flood pool at this future timestep (the current timestep is 1). Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Target Balance Level
Type: Series
Units: No Units
Description: Balance level assigned to this subject reservoir by a controlling key control point, during execution of the control point’s Operating Level Balancing method in the Key Control Point Balancing category.
Information: This slot is written as a result of the FloodControl predefined function; see “FloodControl” in RiverWare Policy Language (RPL).
I/O: Output only - set by a rule.
Max Flood Control Release
Type: Series
Units: Flow
Description: Upper bound on flood control release, used by Operating Level Balancing flood control algorithm, and computed by Operating Level Balancing key control point balancing method on key control points. The flood control algorithm applies this upper bound on intermediate passes of the algorithm, but not on the last pass.
Information: This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Rule output.
Flood Control Release
Type: Series
Units: Flow
Description: The release made from the reservoir as a result of the application of a flood control rule.
Information: The value for this slot is computed by the flood control predefined rules function. The slot’s value is meant to be assigned by the rule.
I/O: Rule output.
Flood Control Minimum Release
Type: Series Slot
Units: Flow
Description: This slot holds the user specified (via a rule) minimum flood control release. This slot is used by the Operating Level Balancing algorithm as a minimum release, but is not included in the Flood Control Release slot’s value. See “Flood Control Minimum Release” in USACE‑SWD Modeling Techniques for details on the intended use of this slot.
Information: This value should be set (along with Outflow) prior to calling the flood control method so that water is allowed to route downstream.
I/O: Typically set by a rule
Proposed Flood Control Release
Type: Series
Units: FLOW
Description: The running value of the flood control release calculated by the Flood Control Release method on the Computation Subbasin.
Information: This slot is used to hold proposed flood control release during the flood control calculations. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Surcharge Release
Type: Series
Units: Flow
Description: The release made from the reservoir as a result of the application of surcharge release rule.
Information: The values in this slot are used by the Operating Level Balancing flood control method invoked by the predefined rules function.
I/O: Rule output.
Top of Flood Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the flood pool.
Information: Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: No Units
Description: Operating level (as defined in Operating Level Table) corresponding to the top of the conservation pool.
Information: Must be lower than the Top of Flood Pool. Values must be identical for all reservoirs in the computational subbasin on which flood control is performed. May be propagated from the subbasin.
I/O: Required Input
Operating Level Table
Type: Periodic
Units: Time vs Length at Operating Levels
Description: Describes the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: Number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Reach Evaporation” for a method to modify which operating level table is used within a run.
I/O: Required Input
Allowable Rising Release Change
Type: Scalar
Units: Flow Per Time
Description: The maximum acceleration of the flood control releases, used by the rules-based Operating Level Balancing flood control. Value must be greater than 0.
Information: The Operating Level Balancing flood control algorithm attempts not to exceed this increase in outflow from one timestep to the next when computing flood control releases. Surcharge releases may cause this change to be exceeded. Value is converted to the internal units appropriate to the timestep size of the run, thus, is independent of the run’s timestep size.
I/O: Required Input
Allowable Falling Release Change
Type: Scalar
Units: Flow Per Time
Description: The maximum deceleration of the flood control releases, used by the rules-based Operating Level Balancing flood control. Value must be greater than 0.
Information: The Operating Level Balancing flood control algorithm attempts not to exceed this reduction in outflow from one timestep to the next when computing flood control releases. Channel space limitations may cause this change to be exceeded. Value is converted to the internal units appropriate to the timestep size of the run, thus, is independent of the run’s timestep size.
I/O: Required Input
Maximum Release Variation
Type: Scalar
Units: Flow Per Time
Description: A deceleration of the flood control releases assumed to occur during calculation of channel space in the rules-based Operating Level Balancing flood control. Value must be greater than 0.
Information: The Operating Level Balancing flood control algorithm uses this value as a tuning parameter. Large values mean that flood releases may be larger today and thus, zero tomorrow due to routing lags, whereas small values may mean that less-than-ideal releases can be made today; in either case, poor choices can cause oscillations in the reservoirs’ releases. Value is converted to the internal units appropriate to the timestep size of the run, thus, is independent of the run’s timestep size.
I/O: Required Input
Through Release
Type: Series
Units: Flow
Description: Water released from upstream reservoirs that flows through this reservoir. This reservoir is a downstream tandem.
Information: This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output only
Tandem Storage
Type: Series
Units: Flow
Description: All or part of a proposed release may be stored in downstream tandem reservoirs if the downstream reservoir is not Surcharging (Surcharge Release equals zero or is not valid) at the current controller timestep. This slot tracks the water stored in this reservoir.
Information: This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output only
Lost Tandem Storage
Type: Agg Series
Units: Flow
Description: This slot tracks the lost storage (as a flow) that occurs because tandem releases are not routed from the upstream to the downstream reservoir. It is really an error term. The first column is total of the other columns. Colum2 is for the current timestep releases. Column 2 is for timestep 1 through the balance period releases. Column 3 is for releases from the balance period through forecast period. For example the code decides to release 100cfs that can be stored in the downstream tandem. If you don't route it, 100 gets stored on the current timestep. But if you had routed it, some fraction would not have made it there on day 1 (1st column). If you instead propose a hydrograph of flows that don't get routed, then you can compute the col 2 and col 3 values.
Information: This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output Only
Downstream Control Point Share
Type: Agg Series
Units: decimal
Description: The slot has a series slot for each downstream key control point. The value in the slot shows the share as presented on the downstream Control Point’s Share slot. Essentially, this slot contains a copy of the downstream Control Point’s Share information.
Information: This slot is invisible but can be viewed in the reservoir’s Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output only
* Phase Balancing
Choose this method when you wish to use rules to perform Phase Balancing flood control on a computational subbasin of which this reservoir is a member. See Phase Balancing discussion in the Computational Object for a complete discussion of the Phase Balancing algorithm.
Slots Specific to This Method
Forecast period
Type: Scalar
Units: No Units
Description: Number of timesteps in the forecast period.
Information: Minimum value of 1. This value should be the same as the Forecast Period on other objects in the subbasin; the value can optionally be propagated from the subbasin.
I/O: Required Input
Surcharge Release
Type: Series
Units: Flow
Description: release required by operating policy when the reservoir elevation is in the surcharge pool.
Information: set by surcharge release method for all timesteps in forecast period when Surcharge Release flag is set on this slot by end user or by a rule
I/O: Output
Top of Flood Pool
Type: Scalar
Units: No Units
Description: operating level (as defined in Operating Level Table) corresponding to the top of flood pool
Information: KC COE has used 4 in the past, but can be any number
I/O: Required Input
Top of Conservation Pool
Type: Scalar
Units: None
Description: The operating level pool number of the top of conservation pool level.
Information: This value is also termed the Target Operating Pool Level, since this is the preferred, or Target level for all reservoirs. This level is also the bottom of the flood pool level.
I/O: Input
Operating Levels Table
Type: Periodic
Units: TIME vs Length at Operating levels
Description: table describing the seasonal variation of elevation (storage) in a reservoir at each of the user-designated operating levels.
Information: number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep. See “Reach Evaporation” for a method to modify which operating level table is used within a run.
I/O: Required Input
Operating Level
Units: Series
Units: No units
Description: Operating level of the reservoir at each timestep, based on the ending Storage.
Information: Determined from interpolation of the Operating Levels Periodic plus the delta from the Operating Levels Aberration Agg Series Slot; an exact value is determined, not limited to an integer or values entered in the Operating Level Table.
I/O: Output
Phase Tolerance
Type: Scalar
Units: No Units
Description: The tolerance value that must be exceed for the reservoir to change phase.
Information: The reservoir phase is determined from the operating level. The operating level must exceed a phase boundary by the Phase Tolerance before the lake will change phase. This slot can be used to smooth oscillations along phase boundaries.
I/O: Input (0.0 default)
Lake Character
Type: Series
Units: No units
Description: weighting factor for allocating available downstream channel space.
Information: used by control point or flood control algorithm to balance reservoirs in calculating flood releases
I/O: Output
Lake Character Coefficient
Type: Scalar
Units: No UNITS
Description: coefficient multiplied by the occupied volume of the flood pool to determine the Lake Character.
Information: used for every timestep, unless Variable Lake Character Coefficient has been input (not a NaN) for some timestep(s).
I/O: Input
Variable Lake Character Coefficient
Type: Series
Units: NO units
Description: time-varying Lake Character Coefficient
Information: replaces Lake Character Coefficient Scalar when input for some timestep(s).
I/O: Optional Input
Flood Control Release
Type: Series
Units: FLOW
Description: value of the flood control release calculated by the Flood Control Release method and set by the rule that calls that method.
Information: During the flood control calculations at each timestep, this value is calculated for the entire forecast period; at the next timestep, the forecast values are overwritten by the new values. At the end of the run, this slot contains the flood control release for all the timesteps. During dispatching, this value is added to the surcharge release and possibly other values to get the total outflow for the timestep.
I/O: Output
Proposed Flood Control Release
Type: Series
Units: FLOW
Description: The running value of the flood control release calculated by the Flood Control Release method on the Computation Subbasin.
Information: This slot is used to hold proposed flood control release during the flood control calculations. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Recalc Release
Type: Series
Units: FLOW
Description: The temporary running value of the reservoir’s current constrained release.
Information: This slot is used to hold the last constrained release of the reservoir. This value is kept in case the computational subbasin has the opportunity to recalculate the reservoir’s release (i.e., one of this reservoir’s siblings cannot use all of its allocation allowing this flood control release of this reservoir to be increased). This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Known Release
Type: Series
Units: FLOW
Description: The temporary running value of the reservoir’s known or solved for releases.
Information: This slot is used for bookkeeping, holding the values of known or solved for releases in the forecast period during the flood control release algorithm. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Phase
Type: Series
Units: No Units
Description: A temporary record of the lake’s phase.
Information: This slot is used for bookkeeping, holding the values of the lake phase. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Minimum Release
Type: Periodic
Units: FLOW
Description: The minimum release the reservoir is required to make. A seasonal value.
Information: number of rows defined by the number of date points (user input) and one column. The column represents the time-varying minimum release for the reservoir.elevations for a particular Operating Level. An flow value is input for each date point. User can select whether to interpolate between values in time, or to have constant values until the next timestep.
I/O: Required Input
Tandem Operating Levels Table
Type: Periodic
Units: TIME vs Length at Operating levels
Description: Table describing the seasonal variation of elevation (storage) in a tandem reservoir at each of the user-designated operating levels.
Information: number of rows defined by the number of date points (user input); number of columns defined by the number of operating levels (user input). Each column represents the time-varying elevations for a particular Operating Level. The integer value of the Operating Level is in the first row (header) of each column. An elevation value is input for each operating level on each date point. All entered values have units of length. User can select whether to interpolate between values in time, or to have constant values until the next timestep.
I/O: Required Input
Tandem Operating Level Aberrations
Type: Agg Series Slot
Units: No units
Description: Aberration of the operating levels of the tandem reservoir from the periodic specification at each timestep
Information: The slot contains an aberration series for each operating level. The aberration is used to adjust the tandem operating levels when constructing the tandem balancing curve.
I/O: Input
Objective Release Pattern Table
Type: Table
Units: No Units
Description: Table describing the objective releases percentages used to evacuate the flood control storage (including forecasted inflows) over the period of the table from the first unconstrained release.
Information: The nth number in the table represents the percentage of the flood control storage (include forecasted inflows) that should be released for the nth day from the first unconstrained release from this reservoir.
I/O: Required Input
Maximum Objective Release
Type: Series
Units: FLOW
Description: The temporary running values of the reservoir’s current objective releases. This slot is invisible but can be viewed in the Special Results details on the Model Run Analysis tool; see “Model Run Analysis—Special Results Details Dialog” in USACE‑SWD Modeling Techniques.
I/O: Output
Objective Pattern Threshold
Type: Table
Units: NONE
Description: Percentage of allowable volume change in objective release pattern
Information: This is a Scalar representing the percentage of volume changed. If the change volume of flood control storage in a reservoir (including forecasted inflows) is within the threshold of the objective release pattern, then the pattern can be maintained and does not need to be recomputed. If the change exceeds the threshold then the pattern must be recomputed. The table has two columns. The first column lists outflows. The second column list the corresponding permissible decrease in outflow.
I/O: Required Input
Permissible Outflow Increase Constraints Table
Type: Table
Units: FLOW, FLOW
Description: Table describing the allowable outflow increase given a current outflow.
Information: The table has two columns. The first column lists outflows. The second column list the corresponding permissible increase in outflow.
I/O: Required Input
Permissible Outflow Decrease Constraints Table
Type: Table
Units: FLOW, FLOW
Description: Table describing the allowable outflow decrease given a current outflow.
Information: The table has two columns. The first column lists outflows. The second column list the corresponding permissible decrease in outflow.
I/O: Required Input
* Cubic Bank Storage
The Cubic Bank Storage method calculates the Change in Bank Storage from an empirical equation given by the U.S. Bureau of Reclamation. This method was specifically developed for work on the Pecos. The empirical relations used in this method were derived from a study at the Reservoir. This method calculates a net overall loss rate. Bank Storage is not calculated in this method.
Slots Specific to This Method
Change in Bank Storage
Type: Series
Units: VOLUME
Description: change in volume of water stored in reservoir banks
Information: Calculated by the cubic equation above.
I/O: Output only
Cubic Bank Storage Falling
Type: Table
Units: NOUNITS vs. NOUNITS
Description: constants for equation when reservoir level is falling
Information: The first coefficient (column zero) is the linear term (a) and the second coefficient is the cubic term (b).
I/O: Required input
Cubic Bank Storage Rising
Type: Table
Units: NO UNITS vs. NO UNITS
Description: constants for equation when reservoir level is rising
Information: The first coefficient (column zero) is the linear term (a) and the second coefficient is the cubic term (b).
I/O: Required input
There are two ways the Change in Bank Storage may be calculated. Both ways of calculating the Change in Bank Storage are based on the following equation:
where:
– a = the first coefficient in either the Cubic Bank Storage Falling slot or the Cubic Bank Storage Rising slot
– b = the second coefficient in either the Cubic Bank Storage Falling slot or the Cubic Bank Storage Rising slot
– Change in Bank Storage is in cfs
– Pool Elevation is in feet
Different sets of empirical coefficients are used to calculate the Change in Bank Storage depending on the direction of Pool Elevation movement. If the Pool Elevation is rising, the coefficients in the Cubic Bank Storage Rising slot are used. On the other hand, if the Pool Elevation is falling, the coefficients in the Cubic Bank Storage Falling slot are used.
Bank Storage
The methods in this category can be used on all types of reservoir objects. See “Bank Storage”.
Diversion From Reservoir
The methods in this category can be used on all types of reservoir objects. See “Diversion from Reservoir”.
Diversion Power
The methods in this category can be used on all types of reservoir objects. See “Diversion Power”.
Diversion Tailwater
The methods in this category can be used on all types of reservoir objects. See “Diversion Tailwater”.
Diversion Power Bypass
The methods in this category can be used on all types of reservoir objects. See “Diversion Power Bypass”.
Seepage
The methods in this category can be used on all types of reservoir objects. See “Seepage”.
Operating Levels
The methods in this category can be used on all types of reservoir objects. See “Operating Levels”.
Conditional Operating Levels
The methods in this category can be used on all types of reservoir objects. See “Conditional Operating Levels”.
Target Operation
The Target Operation category is used to enable algorithms which calculate different lumped mass balance algorithms required by Target Operations (see TARGET flag). None of the methods exist as separate functions, meaning that the target operation algorithms themselves must be used in conjunction with the other mass balance algorithms. 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.
Note:  Evaporation and precipitation are not included in the lumped mass balance of the target operation.
* Lagged Target
The Lagged Target method should be used when there are lag times in the upstream reaches. When Inflows are known, this method solves for the same solution as the Simple Target method. When Outflows are known, this method distributes the required Inflow so a steady Outflow occurs from an upstream, non-integer timestep lagged, reservoir. To distribute Inflows, the Total Lag of Upstream Reaches and Outflow from Upstream Reservoir are used to calculate the required Inflows to the current Reservoir. These required Inflows must meet the Target and result in steady Outflow from the upstream Reservoir. The solution yields a perturbed Inflow at the first undetermined timestep of the Target Operation, followed by steady Inflows for the remainder of the undetermined target times. This solution removes the numerical instability which would be produced in the Outflow of the upstream reservoir using the Simple Target method.
Slots Specific to This Method
Outflow from Upstream Reservoir
Type: Series
Units: FLOW
Description: outflow from the upstream reservoir
Information:  
I/O: Required input
Total Lag of Upstream Reaches
Type: Table
Units: TIME
Description: combined lag time of reaches between the current and the upstream reservoir
Information:  
I/O: Required input
Sediment
The Sediment category is used to enable algorithms which adjust reservoir Elevation Volume and possibly Elevation Area relationships in response to sediment inflow. See “Time Varying Elevation Area” for details on methods that change the elevation area relationship.
* None
The None method is the default for the Sediment category. No calculations are performed in this method. There are no slots specifically associated with this method.
* CRSS Sediment
The CRSS Sediment method is designed based on sedimentation calculations performed by the US Bureau of Reclamation’s Colorado River Simulation System (CRSS) model. This function distributes reservoir sediment based on the Empirical Area Reduction Method. Simply put, sediment is distributed through an iterative process in which a total volume loss due to sedimentation is calculated based on an assumed top of sediment elevation.
Slots Specific to This Method
Elevation Area Table
Type: Table
Units: LENGTH vs. AREA
Description: generated elevation area table for calculating sediment distribution
Information:  
I/O: Output only
Elevation Vol_Area Table Increment
Type: Table
Units: LENGTH
Description: elevation increments for the generated Elevation Volume and Elevation Area Tables
Information: This table often needs more precise elevation increments than the sediment calculation tables.
I/O: Required input
Initial Elevation Area Table
Type: Table
Units: LENGTH vs. AREA
Description: initial elevation area table
Information: Provided for comparison with initial data
I/O: Output only
Initial Elevation Volume Table
Type: Table
Units: LENGTH vs. VOLUME
Description: initial elevation volume table
Information: provided for comparison with initial data
I/O: Output only
Sediment Distribution Coefficients
Type: Table
Units: NOUNITS
Description: parameters for empirical equation governing sediment distribution
Information:  
I/O: Required input
Sediment Inflow
Type: Series
Units: VOLUME
Description: volume of sediment flowing into the reservoir at each timestep
Information:  
I/O: Required input
User Input Elev Area Data
Type: Table
Units: LENGTH vs. AREA
Description: initial Elevation Area relationship
Information: These values are initial conditions for the first timestep of the simulation. The elevation increments will be used for all sedimentation calculations.
I/O: Required input
This volume loss is recalculated (with a new top of sediment elevation) at each iteration, until the calculated volume loss is equal to the actual volume of sediment inflow (within a specified convergence). The total volume loss calculation consists of a somewhat complicated algorithm utilizing elevation/area and elevation/volume data for the reservoir and an empirical equation. The empirical equation uses user specified parameters which relate the portion of total area that is taken up by sediment to the Pool Elevation. The empirical equation basically gives the shape of the accumulated sediment. The empirical equation has a close relationship to the elevation volume and elevation area characteristics of a given reservoir. The elevation/area and elevation/volume data is stored in a polynomial coefficient table, which gets recalculated after each timestep. The actual Elevation Area, Elevation Volume tables used by RiverWare are adjusted at the end of the sedimentation code (but prior to the hydrologic simulation).
Caution:  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 four possible types of reservoirs, with each type having a corresponding set of empirical area reduction parameters. The reservoir type classification is based on the shape of the Reservoir, the manner in which the reservoir is to be operated, and the size of the sediment particles to be deposited in the reservoir. The main emphasis is on the shape. Tables are used to classify the reservoirs based on these characteristics. Once the type has been established, the parameter values for that type can also be taken from tables in the literature. An incorrect set of parameters for a given reservoir will lead to an inability to achieve convergence on the sediment distribution within this method.
* Time Varying Elevation Volume
The Time Varying Elevation Volume method allows Elevation Volume (EV) relationships that change at specified times. The method is only available when the following default methods are selected in the following categories:
• Flood Control Release: only the None method is allowed
• Surcharge Release: only the None method is allowed
• Water Quality: None, Water Quality cannot be enabled
In Figure 25.3, both the existing and new EV relationships are plotted. Shown is a graphical example of how the mass balance should be performed on the timestep the EV relationship changes.
Figure 25.3   
This process is as follows.
1. This is the PE and Storage at the previous timestep. This is the starting condition.
2. On the current timestep, the Inflows and Outflows lead to a positive net inflow. This will increase the Pool Elevation. Using the existing table, a (PE, Storage) is calculated and shown as point 2.
3. The PE is used to interpolate a storage on the new EV table. The difference between storage at point 2 and point 3 is the loss of storage term. This means that the Pool Elevation is the same regardless of which table is used.
Slots Specific to This Method
Elevation Volume Table Time Varying
Type: Table Slot
Units: Length and volume
Description: the tables that represent the Elevation Volume relationship at various times in the run.
Information: The number of columns in this table should be set to one plus the number of times the Elevation Volume relationship changes. The column headings contain the date corresponding to the change. When you add a column to this slot, it is given a date later then the last column. You can set the date by selecting Column, then Set Column Value. You can then type the date text or use the date time spinner to enter the appropriate date. The dialog will only let you enter dates that correspond to timesteps. (Care should be exercised when switching model timesteps.) The column is then placed in the correct order compared to the other column labels. Each column should have an entry for each row in the Elevation column or an interpolation error may be issued during the run. The number of columns is equal to the number of changes plus one, i.e., if there is one change then there should be two columns.
Following shows an example of a run that starts in 24:00 Jan 1, 1910 and the reservoir Elevation Volume changes three times. The column label of the first set of volumes must be on or before the initial timestep.
I/O: Input Only
 
Pool Elevation ft
24:00 Jan 1, 1910 Storage acre-ft
24:00 Jan 1, 1935 Storage acre-ft
24:00 Jan 1, 1953 Storage acre-ft
24:00 Jan 1, 1970 Storage acre-ft
5,100
0
0
0
0
5,120
10
9
8
7
5,150
15
14
13
12
5,200
20
19
18
17
5,250
25
24
23
22
Storage Adjustment from Elev Vol Table Change
Type: Series Slot
Units: VOLUME
Description: This is the volume of water that was lost to sedimentation
Information: The slot tracks the mass discontinuity that occurs when the Elevation Volume is changed because of a new reservoir Elevation Volume relationship. A positive number indicates storage was gained; a negative number indicates storage was lost.
I/O: Output Only
Start of Run
The run proceeds as follows: at the start of the run, if the Time Varying Elevation Volume method is selected, a boolean variable isTimeVaryingElevVolume will be set to TRUE. At the same time, a pointer is set that specifies that all computations should use the Elevation Volume Table Time Varying. All computations involving the elevation volume relationship on the object use this pointer instead of the directly accessing the Elevation Volume Table. If the method is not selected, then the pointer is set to the Elevation Volume Table.
Note:  Even with this method selected, the original Elevation Volume Table is still visible. Although it is not used when dispatching or other simulation or rulebased simulation, it is still a general slot that is used in optimization calculations and water quality.
Start of Each Dispatch Method
At the start of each dispatch method, if the isTimeVaryingElevVolume is true, then the method will determine which column,“col”, of the table to use. It compares the current timestep to the column headings on the table and determine which column to use. For example, if the current timestep is March 3, 1940 for the table example above, then it will set col = 2 (column numbering is zero based) for use in all remaining computations. If the current timestep exactly matches one of the column headings, then an additional variable, isElevVolModDate, is set to TRUE and col is set to the that column minus 1. That is, for this dispatch, the previous relationship will be used, but will be adjusted at the end of the method.
Note:  If the Time Varying Elevation Volume method is not selected, then isTimeVaryingElevVolume and isElevVolModDate will remain false and the column to use on the Elevation Volume Table is set to 1. See “Time Varying Elevation Volume” for details.
The dispatch method then proceeds as normal using the computed “col” in all references to the specified elevation volume table.
End of Each Dispatch Method
At the end of the dispatch method (the description applies first to solveMB_GivenInflowOutflow), once PE and Storage are known, if the isElevVolModDate is true, the method will lookup the PE on the Elevation Volume Table Time Varying but this time use col+1 and get S’. The new storage S’ is the reduced storage using the new EV relationship. The difference, S = S - S’, and is set on the Storage Adjustment from Elev Vol Table Change slot. Then the Storage slot is set to S’ and PreviousStorage[t+1] is set to S’.
The preceding procedure describes the solveMB_givenInflowOutflow. This same procedure is used for: solveMB_givenEnergyInflow and solveMB_givenInflowRelease. Once the new storage using the existing table is calculated, the new relationship can be used. If Pool Elevation (HW) is given (i.e. solveMB_givenOutflowHW), then the Pool Elevation is used to look up the storage using the existing and new tables. For the dispatch methods where Storage is known, the method will abort the run with an error that the Time Varying Elevation Volume method cannot be used on a timestep where the storage is given.
Limitations
This method changes fundamental information about the reservoir. As a result, there are certain operations that cannot be used with this method including:
• Target operations that span table modification dates
• Dispatching the reservoir with any of the givenStorage methods on a modification date. Non modification dates can use the givenStorage methods.
• Any of the following RPL functions: StorageToElevation, ElevationToStorage, and StorageToArea. If these functions are called on a reservoir with the Time Varying Elevation Volume selected, an error message will be posted. Instead use the “...AtDate” version of that function. I.e. use the StorageToElevationAtDate instead of the StorageToElevation function. Old models may need to be updated.
• There are many RPL functions like SolveOutflow, SolveStorage, GetMaxOutflowGivenInflow, etc that access the elevation volume relationship. These will access the correct table, but will always assume that the computation is being performed BEFORE any modifications to the relationship are made. That is, if you call the function and it is a modification timestep on the table, the function will use the previous column in all its computations. The relationship change is only considered at the end of the dispatch method, not in the RPL function.
Surface Area Modification
The Surface Area Modification category is dependent on having a valid evaporation method selected (i.e. any evaporation method except None or MonthlyEvaporationCalcInAnnual). The category will be added to all reservoirs and the default method in this category is None which performs no calculations and has no slots.
* None
This is the default, no-action method.
* Time Varying Elevation Area
The Time Varying Elevation Area method allows Elevation Area (EA) relationships that change at specified times. The Time Varying Elevation Area method is only available on Level Power and Storage reservoirs. Also, the method will only be available when the following default methods are selected in the following categories:
• Flood Control Release: only the None method is allowed
• Surcharge Release: only the None method is allowed
• Water Quality: None; Water Quality must be disabled
Slots Specific to This Method
Elevation Area Table Time Varying
Type: Table Slot
Units: Length and Area
Description: the tables that represent the Elevation Area relationship at various times in the run.
Information: The number of columns in this table should be set to one plus the number of times the Elevation Area relationship changes. The column headings contain the date corresponding to the change. When you add a column to this slot, it is given a date later then the last column. You can set the date from the Column -> Set Column Value menu. You can then type the date text or use the date time spinner to enter the appropriate date. The dialog will only let you enter dates that correspond to timesteps. (Care should be exercised when switching model timesteps.) The column is then placed in the correct order compared to the other column labels. Each column should have an entry for each row in the Pool Elevation column or an interpolation error may be issued during the run. The number of columns is equal to the number of changes plus one, i.e., if there is one change then there should be two columns.
Following is an example showing a run that starts in Jan 1, 1910 and the reservoir Elevation Area changes three times. The column label of the first column of areas must be on or before the initial timestep. The times on the column map are an instant in time.
I/O: Input Only
 
Pool Elevation ft
24:00 Jan 1, 1910 Surface Area acre
24:00 Jan 1, 1935 Surface Area acre
24:00 Jan 1, 1953 Surface Area acre
24:00 Jan 1, 1970 Surface Area acre
5,100
0
0
0
0
5,120
10
9
8
7
5,150
15
14
13
12
5,200
20
19
18
17
5,250
25
24
23
22
Surface Area Adjustment to Elev Area Table Change
Type: Series Slot
Units: Area
Description: The surface area lost to sedimentation that occurs when the reservoir is resurveyed and a new Elevation Area Table is implemented.
Information: A positive number indicates area was added. A negative number indicates surface area was lost.
I/O: Output Only
Method Details
The evaporation methods typically use the average Surface Area in the calculations. Because the average Surface Area may change when the new table becomes active, the computations assume that the Surface Area only changes at the end of a dispatch method. That is, on a modification timestep, the previous relationship is used in the evaporation and precipitation methods, then the Surface Area is modified at the end of the dispatch method. Thus, the modified surface area will be reflected in evap and precip computations at the NEXT timestep.
The run proceeds as follows.
Start of Run
At the start of the run, if the Time Varying Elevation Area method is selected, a boolean variable isTimeVaryingElevArea will be set to TRUE. At the same time, a pointer is set that specifies to use the Elevation Area Table Time Varying table. All other computations now reference this pointer instead of the Elevation Area Table. If the method is not selected, then the pointer is set to the Elevation Area Table.
Note:  Even with this method selected, the original Elevation Area Table is still visible. Although it is not used when dispatching or other simulation or rulebased simulation, it is still a general slot that is used in optimization calculations and water quality.
In each Evap/Precip Method
At the start of each method, if the isTimeVaryingElevArea is true, then the method will determine which column,“col”, of the table to use. It will compare the current timestep to the column headings on the table and determine which column to use. For example, if the current timestep is March 3, 1940 for the table example above, then it will set col = 2 (column numbering is zero based) for use in all remaining computations.
If the current timestep exactly matches one of the column headings, col is set to that column minus 1. That is, for this method, the previous relationship will be used. Also, the variable isElevAreaModDate, is set to TRUE. The computation proceeds as normal. That is, the estimate for surface area uses the original relationship, not the modified relationship.
End of Dispatch method
At the end of the dispatch method, if the isElevAreaModDate is true, the method will lookup the PE on the Elevation Area Table Time Varying but this time use col+1 and get SA’. The new surface area SA’ is the modified surface area using the new EA relationship. The difference, SA = SA - SA’, is set on the Surface Area Adjustment to Elev Area Table Change slot. Then the Surface Area slot is set to SA’. This does not affect the evaporation or precipitation computation on this timestep.The new relationship will be used on the next timestep though.
Note:  If the Time Varying Elevation Area is not selected, then isTimeVaryingElevArea and isElevAreaModDate will remain false and the column to use on the Elevation Area Table is set to 1.
Limitations
This method changes fundamental information about the reservoir. As a result, there are certain operations that cannot be used with this method including the following:
– Any of the following RPL functions: StorageToArea and ElevationToArea. If these functions are called on a reservoir with the Time Varying Elevation Area method selected, an error message will be posted. Instead use the “...AtDate” version of that function. I.e. use the ElevationToAreaAtDate instead of the ElevationToArea function.
– There are many RPL functions like SolveOutflow, SolveStorage, GetMaxOutflowGivenInflow, etc that access the elevation area relationship. These will access the correct table, but will always assume that the computation is being performed BEFORE any modifications to the relationship are made. That is, if you call the function and it is a modification timestep on the table, the function will use the previous column in all its computations. The relationship change is only considered at the end of the dispatch method, not in the RPL function. The new relationship will be used on the next timestep though.
Disable Reservoir Processes
This category holds the Pass Inflows method which allows you to disable reservoir processes and pass inflows as though the reservoir wasn’t there.
* None
This is the default, no-action method. When this method is selected all physical processes are enabled and executed as appropriate.
* Pass Inflows
This method disables many of the reservoir physical processes and passes the inflows through the reservoir. This method can be used to temporarily remove the presence of a reservoir and compute flows as though they were unregulated, unconstrained or ‘pre-project’.
No Slots are associated with this method.
This method performs the following actions.
• Changes the Workspace Icon. When this method is selected, the icon on the workspace is modified to indicate the Reservoir is passing inflows.
• Enables alternative dispatch method. When this method is selected, ONLY the Outflow Equals Sum of Inflows dispatch method is available. See “Outflow Equals Sum of Inflows” for details.
Computation of flows for a Fully Unregulated system
To compute the flows at any point in the system without the effect of any reservoir, run two simulations. The first run computes the unregulated flows, the second computes the regulated flows, often using rulebased simulation. Results can be analyzed using snapshots. Simple scripts can be used to modify the system and make the runs. Following is the conceptual approach.
1. Compute unregulated flows by executing a script. See “Script Management” in Automation Tools for details about scripts.
The Script Dashboard allows you to do the following:
– Set the Pass Inflows method on each reservoir.
– Set the run controller to Simulation.
– Run the model. With the new method, the reservoirs pass inflows (including Hydrologic Inflow and Return Flow) but no other physical processes are made. When the reservoirs dispatch, they will set Outflow = Inflows, thus propagating the flows downstream.
– Create snapshots of desired slots.
2. You could then look at the results if desired.
3. Compute regulated flows by executing a script that does the following:
– Set the method on each reservoir to its normal regulated mode (None method in the Disable Reservoir Processes category).
– Set the run control to Rulebased Simulation.
– Load the RBS ruleset set if necessary
– Run the model
4. At this point, the regulated results are in the objects and slots. They can be compared with the snapshots from the unregulated run.
The preceding process assumes two scripts: steps 1 and 3. These could be combined into one script that fully automates the runs if desired. With this approach it is easy for the user to run just the regulated system, the unregulated system or both.
This approach presented assumes that all reservoirs are unregulated. If only a portion of the system is unregulated, then you will need to decide how the other reservoirs behave, especially if they are dependent on the disabled reservoir. Additional script actions can be used to disable rules or set values in the system. See “Modeling Unregulated Conditions” in USACE‑SWD Modeling Techniques for details on the USACE approach to unregulated conditions.
Dispatch Methods
* solveMB_givenInflowHW
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow.
Required Knowns
• Inflow
• Hydrologic Inflow, only if input or Solve Hydrologic Inflow is selected
Required Unknowns
• Storage
• Outflow
First, this method finds the Storage associated with the known Pool Elevation using the Elevation Volume Table. It then checks if the Pool Elevation at the current timestep is flagged as a TARGET. If it is, the target calculations are performed. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated using the other parameter. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If a Canal Object is linked and not yet solved, the dispatch method is exited and waits for the Canal to solve.
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). Inflow in the mass balance equation is the net inflow to the reservoir, including hydrologic inflows, return inflows, and diversions if appropriate. Spill and Release are then found according to the user selected methods.
The Energy in Storage, Spilled Energy, and Future Value calculation user methods are then executed.
* solveMB_givenOutflowHW
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Inflow.
Required Knowns
• Outflow
• Hydrologic Inflow, only if input or Solve Hydrologic Inflow is selected
Required Unknowns
• Storage
• Inflow
First, this method finds the Storage associated with the known Pool Elevation using the Elevation Volume Table. If the Pool Elevation at the current timestep is flagged as a TARGET, the target calculations are performed. It either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated using the other parameter. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If a Canal Object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve.
The Outflow is then checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the given Pool Elevation. Outflow is calculated.
Then the mass balance is carried out.
This equation may or may not contain other elements reflecting the user method choices (including Hydrologic Inflow, Evaporation, Precipitation, Seepage, and Bankstorage). Inflow in the mass balance is the net inflow to the reservoir, including the hydrologic inflows, return flows, and diversions if appropriate. The Inflow slot is adjusted accordingly to account for these terms. Spill and Release are then found according to the user selected methods.
If the value found for the Inflow is less than zero, the hydrologic inflow calc method is checked. If it is Hydrologic Inflow and Loss, the method is called, setting the Inflow to zero, and the Hydrologic Inflow Adjust to the previous value of the inflow. This is done to present the negative inflow as a loss that has not been accounted for.
The Energy in Storage, Spilled Energy, and Future Value calculation user methods are then executed.
* solveMB_givenInflowStorage
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Outflow.
Required Knowns
• Inflow
• Storage
• Hydrologic Inflow, only if input or Solve Hydrologic Inflow is selected
Required Unknowns
• Outflow
First, this method finds the Pool Elevation associated with the known Storage using the Elevation Volume Table. If the Storage at the current timestep is flagged as a TARGET, the target calculations are performed. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated using the other parameter. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If a Canal Object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve.
The mass balance is carried out.
This equation may or may not contain other elements reflecting the user method choices (including Hydrologic Inflow, Evaporation, Precipitation, Seepage, and Bankstorage). Inflow in the mass balance equation is the net inflow to the reservoir, including hydrologic inflows, return flows, and diversions if appropriate. If the Outflow is less than zero, the method is exited. Spill and Release are then found according to the user selected methods.
The Energy in Storage, Spilled Energy, and Future Value calculation user methods then executed.
This method will issue an error if the Time Varying Elevation Volume method is selected and the timestep is a modification date on the table. See “Time Varying Elevation Volume” for details.
* 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
• Storage
• Outflow
• Hydrologic Inflow, only if input or Solve Hydrologic Inflow is selected
Required Unknowns
• Inflow
First, this method finds the Pool Elevation associated with the known Storage using the Elevation Volume Table. If the Storage is flagged as a TARGET and Outflow is not flagged as MAX CAPACITY, the target calculations are performed. If the Storage is flagged as a TARGET and the Outflow is flagged MAX CAPACITY, a RiverWare error is posted and the run is aborted because an under-determination would result. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated using the other parameter. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If a Canal Object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve.
The outflow is checked for the Max Capacity flag. If this flag is present, the maximum outflow is found from the given Pool Elevation. Outflow is calculated as follows:
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). Inflow in the mass balance equation is the net inflow to the reservoir, including hydrologic inflows, return flows, and diversions if appropriate. The Inflow slot is adjusted accordingly to account for these additional terms. Spill and Release are then found according to the user selected methods.
If the value found for the inflow is less than zero, the hydrologic inflow calc method is checked. If it is Hydrologic Inflow and Loss, the method is called, setting the Inflow to zero, and the Hydrologic Inflow Adjust to the previous value of the Inflow. This is done to present the negative inflow as a loss that has not been accounted for.
The Energy in Storage, Spilled Energy, and Future Value calculation user methods are then executed.
This method will issue an error if the Time Varying Elevation Volume method is selected and the timestep is a modification date on the table. See “Time Varying Elevation Volume” for details.
* solveMB_givenInflowOutflow
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Storage (and Pool Elevation).
Required Knowns
• Inflow
• Outflow
• Hydrologic Inflow, only if input or Solve Hydrologic Inflow is selected
Required Unknowns
• Storage
First, this method checks if there are Pool Elevation and Storage values for the previous timestep. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated using the other parameter. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If a Canal Object is linked and has not yet solved, the dispatch method is exited and waits for the Canal to solve.
The Outflow is then 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 algorithm used is detailed Reservoir Convergence. The Outflow slot is set equal to the maximum outflow value. See “Reservoir Convergence” for details.
If the Outflow slot is set by the Surcharge Release flag, the surcharge release is computed and the Outflow slot is set equal to surcharge release for all timesteps in the forecast period (the surcharge release methods compute a surcharge release forecast). See “Description of Logic” in USACE‑SWD Modeling Techniques for details on dispatching when using the Surcharge Release Flag.
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.
The Energy in Storage, Spilled Energy, and Future Value calculation user methods are then executed.
* solveMB_givenInflowRelease
This dispatch method is placed on the queue when the list of knowns/unknowns (below) is met. It solves for Storage (and Pool Elevation) and Outflow.
Required Knowns
• Inflow
• Total Release
• Hydrologic Inflow, only if input or Solve Hydrologic Inflow is selected
Required Unknowns
• Storage
• Outflow
First, this method checks if there are Pool Elevation and Storage values for the previous timestep. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated using the other parameter. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If a Canal Object is linked, the method exits with an error, because this dispatch method is not valid when a Canal is linked to the reservoir.
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.
At this point, the method enters a convergence algorithm which iterates to find an outflow and storage that satisfies both the mass balance equation and the release/spill curve. See “Reservoir Convergence” for details on the convergence algorithm.
The Energy in Storage, Spilled Energy, and Future Value calculation user methods are then executed.
* solveMB_givenInflowOutflowStorage
This dispatch method is only available when the Solve Hydrologic Inflow method is selected. It is placed on the queue when the list of knowns/unknowns (below) is met. It solves for the Hydrologic Inflow.
Required Knowns
• Outflow
• Storage
• Inflow
Required Unknowns
First, this method checks if Outflow is flagged as MAX CAPACITY. If so, a RiverWare error is flagged and the run is aborted. Then, the Pool Elevation associated with the known Storage is determined from the Elevation Volume Table. If the Storage is flagged as TARGET, a RiverWare error is posted and the run is aborted. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated using the other parameter. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If a Canal Object is linked, a RiverWare error is posted and the run is aborted.
The the hydrologic inflow is found as follows (all values are converted to flows):
This equation may or may not contain other elements reflecting the user method choices (these include Evaporation (+), Precipitation(-), Seepage(+), Bankstorage(+), Return Flow(‑), Diversion (+), and Flow TO/FROM Pumped Storage). Spill and release are then found according to the user selected methods.
The Energy in Storage, Spilled Energy, and Future Value calculation user methods are then executed.
This method will issue an error if the Time Varying Elevation Volume method is selected and the timestep is a modification date on the table. See “Time Varying Elevation Volume” for details.
* solveMB_givenInflowOutflowHW
This dispatch method is only available when the Solve Hydrologic Inflow method is selected. It is placed on the queue when the list of knowns/unknowns (below) is met. It solves for the Hydrologic Inflow.
Required Knowns
• Outflow
• Inflow
Required Unknowns
• Storage
First, this method checks if Outflow is flagged as MAX CAPACITY. If so, a RiverWare error is flagged and the run is aborted. Then, the Storage associated with the known Pool Elevation is determined from the Elevation Volume Table. If the Pool Elevation is flagged as TARGET, a RiverWare error is posted and the run is aborted. If either the previous timestep’s Pool Elevation or the previous timestep’s Storage is not known, it is calculated using the other parameter. If both the previous timestep’s Pool Elevation and the previous timestep’s Storage are unknown, the dispatch method is exited. If a Canal Object is linked, a RiverWare error is posted and the run is aborted.
The the hydrologic inflow is found as follows (all values are converted to flows):
This equation may or may not contain other elements reflecting the user method choices (these include Evaporation (+), Precipitation(-), Seepage(+), Bankstorage(+), Return Flow(‑), Diversion (+), and Flow TO/FROM Pumped Storage).
Spill and release are then found according to the user selected methods and the equation, as follows:
The energy in storage, spilled energy, and future value calculation user methods are called. The dispatch method is then complete.
* Outflow Equals Sum of Inflows
This dispatch method is only available when the Pass Inflows method is selected. It has the following dispatch conditions. See “Pass Inflows” for details.
Required Knowns
• Inflow
Required Unknowns
• Outflow
This method does the following.
An error is issued if any of the following are linked, specified as inputs, and/or are not zero:
• Seepage
An error is issued in the following cases:
• Any flags are set on Outflow (an over-determination error will be issued); see Outflow for details.
• Water Quality is enabled on this reservoir
Inflow Sum and Total Inflows are computed as usual; see “Total Inflows” for details.
Finally:
Then the dispatch method finishes successfully and exits.
Note:  Hydrologic Inflow disaggregation described Incremental Hydrologic Inflows on Subbasin and forecasting described Generate Forecast Hydrology is performed at beginning of the run or the timestep. Therefore, these inflows to the reservoir are included in the outflow. See “Incremental Hydrologic Inflows on Subbasin” and “Generate Forecast Hydrology” for details.
But none of the other physical process methods are executed even though they may have method selections and slots visible. These include the following:
• Precipitation and Evaporation
• Spill
• Energy in Storage
• Seepage
• Bank Storage
• Tailwater
• Operating Level
 
Revised: 06/03/2019