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

Links: Not linkable

Prof Hydro Inflow

Type: Agg Series Slot

Units: FLOW

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

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

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

Links: Not linkable

Intermed Backwater Elev

Type: Table Series

Units: LENGTH

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

Information: Contains a column for each reservoir segment.

I/O: Output only

Links: Not linkable

Profile Coeff Table

Type: Table

Units: NONE

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

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

I/O: Required input

Links: Not linkable

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

a | 0.7 | 2.0 |

b | 1.3 | 0.0 |

wc | 0.5 | 0.0 |

Impulse Response Coefficients | 0.5 | 1.0 |

0.5 | 0.0 |

Profile Backwater Table

Type: Table

Units: FLOW vs. LENGTH vs. LENGTH

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

Information: 3‑D table containing data relating a steady flow (Flow Param) to a headwater elevation and a backwater elevation. Each reservoir segment has its own three-column block of data. Data must be entered into these tables in a structured way in order for the 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

Links: Not linkable

Profile K Coeff Table

Type: Table

Units: VOLUME vs. NONE

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

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

I/O: Required input

Links: Not linkable

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

Links: Not linkable

Partition Profile Coef Table

Type: Table

Units: None

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

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

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

I/O: Required input

Links: Not linkable

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

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

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

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

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

Partition BW Table

Type: Table

Units: Flow vs. Length vs. Length

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

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

I/O: Required input

Links: Not linkable

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

100 | 500 | 505 |

100 | 550 | 555 |

100 | 600 | 605 |

200 | 500 | 510 |

200 | 550 | 560 |

200 | 600 | 610 |

300 | 500 | 515 |

300 | 550 | 565 |

300 | 600 | 615 |

Partition BW Table Auto Max

Type: Table

Units: Flow vs Length for each Partition

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

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

I/O: Output - Read only

Links: Not linkable

Partition BW Table Auto Min

Type: Table

Units: Flow vs Length for each Partition

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

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

I/O: Output - Read only

Links: Not linkable

Partition Flow Parameters

Type: Agg Series Slot

Units: Flow

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

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

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

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

Links: Not linkable

Partition BW Elevation

Type: Table Series

Units: Length

Description: Backwater elevation at each partition

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

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

I/O: Output only

Links: Not linkable

Profile K Coeff Table

Type: Table

Units: VOLUME vs. NONE

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

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

I/O: Required input

Links: Not linkable

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/11/2023