skip to main content
Objects and Methods : Slope Power Reservoir : User Methods : Slope Storage Coefficients
Slope Storage Coefficients
Slope Power Reservoirs contain a portion of their Storage in the wedge(s) created by the sloping water surface. The visibility of the Slope Storage Coefficients is dependent upon selecting the Storage Segments from the Slope Storage. The Slope Storage Coefficients contains two methods: Impulse Response and Weighting Coefficients. Both methods are iterative and based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage on the reservoirs.
* Impulse Response
This is the default method.
An iterative method based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage on reservoirs. The data tables are based on a steady state backwater profile.
The four mass balance variables are Inflow, Outflow, Storage and Pool Elevation (Pool Elevation refers to the elevation at the dam, also called the headwater elevation). Two of these must be known to calculate the other two.
The method solves for Storage and either Inflow, Outflow, or Pool Elevation by iterating until a calculated mass balance storage agrees with a Storage value looked up from tables created from the steady flow, headwater elevation, backwater elevation, and storage relationships. If both Inflow and Outflow are known, a convergence algorithm that is detailed Reservoir Convergence is used to calculate storage. See Reservoir Convergence for details.
Slots Specific to This Method
 Flow Param
Type: Agg Series Slot
Units: FLOW
Description: Flow that produces a steady state profile to give correct headwater, backwater, and storage relationships for each segment
Information: This slot contains a column for each reservoir segment. A user-specified value overrides the formula calculation.
I/O: Optional; if not set by user, it is calculated with segment inflow, segment outflow, and weighting coefficients (see above description).
 Prof Hydro Inflow
Type: Agg Series Slot
Units: FLOW
Description: Local inflow to a slope power reservoir that contributes to the wedge storage
Information: Prof Hydro Inflow is multiplied by the wc parameter before being added to segInflow. It contains a column for each reservoir segment.
I/O: Optional; if not set by the user, it will be set to the Hydrologic Inflow at that timestep. If it is not set by the user and None is the selected method for Hydrologic Inflow, it defaults to zero.
 Intermed Backwater Elev
Type: Table Series
Units: LENGTH
Description: Water surface elevation at the upstream end of each reservoir segment
Information: Contains a column for each reservoir segment.
I/O: Output only
 Profile Coeff Table
Type: Table
Units: NONE
Description: Coefficients used in determining a flow parameter for each segment
Information: Contains a, b, wc, and impulse response coefficients for each reservoir segment. a and b are coefficients weighting the contribution of segment inflow and segment outflow to the calculation of Flow Param. The parameter, wc, is a coefficient adjusting the amount of Prof Hydro Inflow contributing to the segment inflow. Impulse response coefficients are used to calculate flow fractions that are summed to determine the segment inflow or segment outflow. The first coefficient is multiplied by a current flow value and the subsequent coefficients are multiplied by previous flow values to calculate flow fractions. The sum of the impulse response coefficients for each segment usually equal 1.0. Following is a sample Profile Coeff Table.
I/O: Required input
 
 
Segment 1
Segment 2
a
0.7
2.0
b
1.3
0.0
wc
0.5
0.0
Impulse Response Coefficients
0.5
1.0
 
0.5
0.0
 Profile Backwater Table
Type: Table
Units: FLOW vs. LENGTH vs. LENGTH
Description: Backwater elevation of each segment corresponding to a flow parameter and a headwater elevation
Information: 3‑D table containing data relating a steady flow (Flow Param) to a headwater elevation and a backwater elevation. Each reservoir segment has its own three-column block of data. Data must be entered into these tables in a structured way in order for the three-dimensional table interpolator to work correctly. Flow Param must be input in blocks of the same values, increasing down the table. For every Flow Param block in column 1, headwater values should be listed in increasing order in column 2, with the corresponding backwater in column 3. Following is a sample table for a one-segment reservoir.
 
Flow Param
Headwater
Backwater
100
500
505
100
550
555
100
600
605
200
500
510
200
550
560
200
600
610
300
500
515
300
550
565
300
600
615
I/O: Required input
 Profile K Coeff Table
Type: Table
Units: VOLUME vs. NONE
Description: K parameter associated with a change in storage from one and two previous timesteps
Information: Allows the user to adjust the K parameter, a calibration factor used in calculating Flow Param. Its value is set depending on whether Storage is suddenly increasing or decreasing. This table contains two columns for each reservoir segment. The first column is a delta Storage value representing the change in storage between one and two previous timesteps. Delta storage can be either positive or negative. The second column is the K value corresponding to a given delta storage.
I/O: Required input
Method Details  
First, a mass balance storage is calculated with known and estimated parameters (Inflow, Outflow, Previous Storage). Then, a second Storage value is found with a table lookup.
Flow Param is the steady flow used to determine headwater, backwater, and storage from the relationships given by the data tables. It is calculated with the following equation:
    
where i is the reservoir segment. K(i) is a calibration parameter dependent on previous Storage. segInflow(i) and segOuflow(i) are the calculated inflow and outflow of each segment and are local variables. Weighting factors, a(i) and b(i), determine to what extent Flow Param depends on the inflow and outflow of the segment.
SegInflow and segOutflow are calculated using reservoir inflows and outflows at current and previous timesteps weighted with impulse response coefficients (IRC). IRCs represent the effect of current and previous flow values on the current segment flow. IRCs are specified by the user in the Profile Coeff Table. For each IRC, a flow fraction is calculated equal to a flow value multiplied by the IRC. The first IRC is multiplied by the current Inflow (or Outflow) value, and each additional IRC is multiplied by a previous flow value. For cases where current or previous flow values are not known, the most recent flow estimate is used on the first iteration. SegInflow (or segOutflow) is equal to the sum of these flow fractions.
Flow Param and either a given or estimated Pool Elevation (headwater) are then used to look up a backwater elevation on the Profile Backwater Table. Then a storage value is looked up from the Profile Storage Table using the headwater and backwater elevations to get the segment storage. Then a three-dimensional lookup is performed on the Segment Storage Adjustment table slot. It uses the computed backwater elevation and the change in backwater elevation (current computed value minus previous value) to get the storage adjustment. The segment storage is adjusted by this value and stored in an array. After the total storage is found, the Slope Storage method sets the Segment Storage from the array values.
This total storage value is compared to the calculated mass balance storage. The method iterates, by adjusting the unknown parameter (Inflow, Outflow, or Pool Elevation), until the two storage values are within convergence.
Local inflows contributing to wedge storage are represented in the slot Prof Hydro Inflow. If not specified by user, Prof Hydro Inflow is set to the value of Hydrologic Inflow Net. Setting Prof Hydro Inflow gives the user an opportunity to specify part of the local inflows contributing to the wedge and part to the level storage. The amount of Prof Hydro Inflow contributing to each reservoir segment is controlled by the wc parameter, which is specified in the Profile Coeff Table. The Prof Hydro Inflow is multiplied by wc before it is added to segInflow.
* Weighting Coefficients
The user has the option of dividing a reservoir into longitudinal segments, and further dividing those segments into longitudinal partitions. This is most useful for large reservoirs and relatively small timesteps, where the propagation of a change in flow takes more than one timestep to travel the length of the reservoir. Reservoir partitions are numbered in the upstream direction, with the first partition being the farthest downstream. Several slots require or provide information for each reservoir partition.
This is an iterative method based on mass balance calculations and data tables describing relationships between steady flow, headwater elevation, backwater elevation, and storage of the partition. The four mass balance dispatch variables are Inflow, Outflow, Storage and Pool Elevation (Pool Elevation refers to the elevation at the dam, also called the headwater elevation). Two of these must be known to calculate the other two.
The method solves for Storage and either Inflow, Outflow, or Pool Elevation by iterating until a calculated mass balance storage agrees with a Storage value looked up from tables created from the steady flow, headwater elevation, backwater elevation, and storage relationships for the segments. Partitions are not included in the storage iterations. If both Inflow and Outflow are known, a convergence algorithm that is detailed Reservoir Convergence is used to calculate storage. See Reservoir Convergence for details.
Slots Specific to This Method
 Partitions per Segment
Type: Table
Units: None
Description: Table Slot that contains the number of partitions in each longitudinal segment of Slope Power Reservoir
Information: The number of each partitions in each segment can be input individually for that particular segment. If the user does not input the number of partitions in each segment or an individual segment, the number of partitions defaults to 0. The number of partitions specified must be an integer.
I/O: Input Optional
 Partition Profile Coef Table
Type: Table
Units: None
Description: Table Slot that contains the user specified weighting coefficients for each partition to be used in calculating the Partition Flow Parameters (see Partition Flow Parameters).
Information: The number of columns in this slot is determined by the total number of partitions as specified in the Partitions per Segment slot. Each partition will generate five columns for the weighting coefficients for that partition, which correspond to: Inflow, Hydrologic Inflow, Inflow2, Partition Flow Parameters at earlier time steps, and Outflow from the reservoir. The number of rows corresponds to the number of previous time steps the user wishes to use in calculating the Partition Flow Parameter. See Partitions per Segment for details.
Following is a sample Partition Profile Coef Table for one partition. The coefficient D should be zero for t. Otherwise, it will use previously computed Partition Flow Parameters for the current timestep which are from a previous iteration and would not be meaningful.
I/O: Required input
 
Parameter
A1
B1
C1
D1
E1
 
Multiplier
Inflow
Hydrologic Inflow
Inflow 2
Partition Flow Parameter
Outflow
Time
t
0.11
0.07
-0.061
0
0.061
t-1
0.07
0.02
0
0.66
0
t-2
0
0.045
0
0
0
 Partition BW Table
Type: Table
Units: Flow vs. Length vs. Length
Description: Backwater elevation of each segment corresponding to a flow parameter and a headwater elevation.
Information: 3‑D table containing data relating a steady flow to a headwater elevation and a backwater elevation. Each partition has its own three column block of data. Data must be entered into the table in a structured manner so that the 3‑D table interpolation will work correctly. Flow parameters must be input in blocks of the same values, increasing down the table. For every flow parameter block in column 1 of the partition, headwater values should be listed in increasing order in column 2, with the corresponding backwater elevation in column 3. Following is a sample table for one partition.
I/O: Required input
 
Flow Param 1
Headwater 1
Backwater 1
100
500
505
100
550
555
100
600
605
200
500
510
200
550
560
200
600
610
300
500
515
300
550
565
300
600
615
 Partition BW Table Auto Max
Type: Table
Units: Flow vs Length for each Partition
Description: Automatically generated table relating Flow Parameter to the maximum possible Headwater.
Information: This table is created at the beginning of the run by taking each Flow Param from the Partition BW Table and finding the largest Headwater. This is done for each partition. This table is then used in the iterative slope storage computations (like RPL functions or GetMaxOutGivenInflow) as a bound. Within these computations, if the Flow Parameter or Headwater exceeds the table values, then the values are set to the maximum and the iteration continues. This allows intermediate computations to succeed when they would have otherwise stopped the run. An error is issued if the final result is outside the table limits.
I/O: Output - Read only
 Partition BW Table Auto Min
Type: Table
Units: Flow vs Length for each Partition
Description: Automatically generated table relating Flow Parameter to the minimum possible Headwater.
Information: This table is created at the beginning of the run by taking each Flow Param from the Partition BW Table and finding the smallest Headwater. This is done for each partition. This table is then used in the iterative slope storage computations (like RPL functions or GetMaxOutGivenInflow) as a bound. Within these computations, if the Flow Parameter or Headwater is below the table values, then the values are set to the minimum and the iteration continues. This allows intermediate computations to succeed when they would have otherwise stopped the run. An error is issued if the final result is outside the table limits.
I/O: Output - Read only
 Partition Flow Parameters
Type: Agg Series Slot
Units: Flow
Description: Flow that produces a steady state profile to give correct headwater and backwater relationships for each partition.
Information: This slot contains a column for each partition as set in the Partitions per Segment Slot. See Partitions per Segment.
I/O: Optional, if not input by user, will be calculated using Inflow from and upstream dam, Hydrologic Inflow, Inflow2, previous Partition Flow Parameters, Outflow, and the user specified weighting coefficients from the Partition Profile Coef Table. See Partition Profile Coef Table.
Note:  The column labels of this slot can be modified to be more intuitive.
 Partition BW Elevation
Type: Table Series
Units: Length
Description: Backwater elevation at each partition
Information: This slot contains a column for each partition. It is solved through a 3‑D table interpolation between the Partition Flow Parameters slot and the Partition B W Table. See Partition Flow Parameters and Partition BW Table.
Note:  The column labels of this slot can be modified to be more intuitive.
I/O: Output only
 Profile K Coeff Table
Type: Table
Units: VOLUME vs. NONE
Description: K parameter associated with a change in storage from one (t-1) and two (t-2) previous timesteps.
Information: Allows the user to adjust the K parameter, a calibration factor used in calculating Flow Param. Its value is set depending on whether Storage is suddenly increasing or decreasing. This table contains two columns for each reservoir segment. The first column is a delta Storage value representing the change in storage between one and two previous timesteps. Delta storage can be either positive or negative. The second column is the K value corresponding to a given delta storage.
I/O: Required input
Method Details  
The Weighting Coefficients method performs a check at the beginning of the run to make sure the user has populated the Partition Profile Coef Table with input. The user has the option of specifying the Partition Flow Parameters or calculating it with the weighting coefficients. If calculated, the Partition Flow Parameter at each partition is a function of the weighting coefficients particular to that partition as input by the user in the Partition Profile Coef Table. The Partition Flow Parameters slot is set to the result of the below equation, which describes how the flow parameter at each partition is calculated.
The partition flow parameter Pj(t) is calculated at each partition j, where the time t ranges from the current timestep to some previous timestep n as follows:
    
where K is the value obtained by looking up the previous change in storage (that is, Storage[t-1] minus Storage[t‑2]) on the appropriate segment’s columns of the Profile K Coeff Table. I(t) is the inflow to the reservoir; ajt is the coefficient weighting the contribution of inflow at the partition j at timestep t. H(t) is the hydrological inflow; bjt is the coefficient weighting contribution of hydrological inflow at partition j at timestep t. The calculation for the Partition Flow Parameter uses the Hydrologic Inflow Net if a hydrologic inflow exists. If there is no hydrologic inflow, it is not included in the calculations of the Partition Flow Parameter. I2(t) corresponds to the Inflow 2; cjt is its weighting coefficient similar to a and b. O(t) is the outflow from the reservoir; ejt is its weighting coefficient. Finally djt is the weighting coefficient corresponding to previous timestep’s Partition Flow Parameter, Pjt. The number of previous timesteps included in the calculation for the Partition Flow Parameter is determined by the user as the number of rows appended in the Partition Profile Coef Table (that contains the weighting coefficients) by the user.
Warning:  If any of the slot values from earlier timesteps used in the partition flow parameter calculation (Inflow, Outflow, Hydrologic Inflow, Inflow 2 and Partition Flow Parameters) are NaN when the object dispatches, a value of zero will be used when calculating the partition flow parameter. This could lead to incorrect results in the slope storage calculation. This is most likely to occur when the calculation is referencing pre-simulation timesteps that do not have values. To assure the correct calculation, appropriate values should be provided for all timesteps corresponding to all non-zero coefficients in the Partition Profile Coef Table slot.
See the following topics for details:
Figure 24.4 can be used to visualize the order in which the partitions will solve for their BW elevations.
Figure 24.4   
The partitions are the areas between the breaks, as noted above. For the first partition, P1, the headwater at the dam will be utilized in conjunction with the flow parameter calculated for P1 in a 3‑D table interpolation from the user input Partition B W Table to find the BW elevation (at the upstream end) of P1. The headwater elevation at the dam PE/HW1 will also be used to calculate the BWP1, BWP2 and BWP3. P3 also constitutes the end of segment 1. Thus, HW2 is set to BWP3.Then, HW2 is used to calculate BWP4. HW2 will be used to find the BW elevations for each partition in segment 2. The BW elevation of the last partition in a segment is the HW in the next segment and will be used to calculate all the BW elevations of all the partitions in the segment.
The storage calculations of the segments follow:
1. The backwater elevation for segment 1, BW1 is set to the BWP3
2. Likewise, the backwater elevation for segment 2, BW2 is set to the BWP5.
3. The storage for segment 1 is calculated using the headwater at the dam HW1 and BW1 via a 3‑D table interpolation from the Profile Storage Table.
4. A three-dimensional lookup is performed on the Segment Storage Adjustment table slot.
5. It uses the computed backwater elevation BW1, and the change in backwater elevation (current computed value, BW1, minus previous value, BW1(t-1)) to get the storage adjustment.
6. The segment storage is adjusted by this value and is stored in an array.
The storage for segment 2 is calculated using HW2 and BW2 via a 3‑D table interpolation from the Profile Storage Table. The Segment Storage Adjustment is applied for this segment and the Segment Storage is stashed in the array. The method then sums the storages of each segment. After the total storage is found, the function returns to the Slope Storage method and sets the Segment Storage from the array values and the iteration continues as described above.
See the following topics for details:
Revised: 01/10/2022