Objects and Methods
Optimization
Objects and Methods
Following is a description of slots, methods, and constraints that are used by each object in optimization. Presented are
• General Slots: those that exist on an object when the optimization is selected
• User Methods: used to specify how a certain feature is to be represented
• Numerical Approximations: how certain variables are replaced or approximated
• Modeling the object: items to consider when building a model of each object
Canal
The Canal object models gravity flow through a canal connected to two reservoirs.
General Slots
General slots are always present on the object, regardless of selected methods. The following slots are provided on the Canal object when the Optimization Controller is selected. See “General Slots” in Objects and Methods for details about general simulation slots, including these slots.
Elevation 1
Type: Agg Series Slot
Units: Length
Description: Pool Elevation of reservoir 1
Information:
Defined by: Replacement by the linked reservoir Pool Elevation slot (which in turn may be Numerically Approximated).
Elevation 2
Type: Agg Series Slot
Units: Length
Description: Pool Elevation of reservoir 2
Information:
Defined by: Replacement by the linked reservoir Pool Elevation slot (which in turn may be Numerically Approximated).
Flow 1
Type: Agg Series Slot
Units: Flow
Description: flow to or from the canal end connected to reservoir 1
Information: This slot must be linked to the Canal Flow slot on reservoir 1.
Defined by: Explicit Optimization variable as 0.0 = Flow 1 + Flow 2
Flow 2
Type: Agg Series Slot
Units: Flow
Description: flow to or from the canal end connected to reservoir 2
Information: This slot must be linked to the Canal Flow slot on reservoir 2.
Defined by: Numerical 3-D Approximation in terms of Lower Elevation and Delta Elevation. Approximation is based on the Canal Flow Table. The Flow 2 LP Param table contains a value for Lower Elevation used to index the Lower Elevation column of the Canal Flow Table. This approximated value, therefore, reduces Flow 2 to a function of Delta Elevation. The length values in the Flow 2 LP Param table are then used as approximation points indexing the Delta Elevation column of the Canal Flow Table. The Canal Flow Table should have increasing values of Lower Elevation and Delta Elevation. The function is expected to be non-convex. The preferred order of approximation is substitution, piece-wise, two-point line, tangent.
Figure 5.1  Non-concave, non-convex function
Canal Flow Table
Type: Table Slot
Units: Length, Length, Flow
Description: 3-D table used to find canal flow by interpolation given a Lower Elevation, Delta Elevation between the lower and higher pool elevations and resulting Flow 2.
Information:
Defined by: user-input
Delta Elevation
Type: Agg Series Slot
Units: Length
Description: The average elevation difference between the two reservoirs and across the canal at the current timestep
Information:
Defined by:
Flow 2 LP Param
Type: Table Slot
Units: Length, Length, Length, Length
Description: specifies the Lower Elevation and the Delta Elevation points used to take the tangent, line, and piecewise approximations for numerical approximation of Flow 2 as specified in the Canal Flow Table. The best Lower Elevation to choose should be close to the expected elevation for the whole run. For Delta Elevation the suggested points for tangent approximation is the estimated value for the whole run and for line approximation are 0 flow and some likely value. piecewise linearization is not used.
Information:
Defined by: user-input
Lower Elevation
Type: Series Slot
Units: Length
Description: The elevation of the lower of the two reservoirs for the current timestep
Information:
Defined by:
On the Canal object, there are currently no categories available in RPL Optimization. What exists as the default arrangement, however, reflects the Canal Flow Table simulation method of the CanalFlowCalculationCategory; see “Canal Flow Table” in Objects and Methods for details.
Canal Flow Numerical Approximation
Any time the Canal object is included in the Optimization problem, then Flow 2 is added to the problem, first in terms of a constraint and then as a function of Lower Elevation and Delta Elevation (Numerical 3-D Approximation). The relationship between Lower Elevation, Delta Elevation and Flow 2 comes from the user-input Canal Flow Table. The table will be queried using the points defined in the Flow 2 LP Param table.
Modeling a Canal
Steps to follow in setting up a canal for optimization are as follows:
1. Set up a running simulation model with appropriate links to and from the canal. Use the Canal Flow Table method.
2. When RPL Optimization control is selected, fill in the Flow 2 LP Param table.
Confluence
The Confluence object has no selectable methods in RPL Optimization. A constraint is included in the optimization problem to ensure mass balance for all timesteps:
(5.1)    Inflow1 + Inflow 2 = Outflow
See “General Slots” in Objects and Methods for a full description of slots.
Data Objects
Data Objects hold slots that can be used in your policy either as reference information or as user-defined optimization variables.
Reference data is just values that are known before the optimization run like minimum flows, guide curves, power targets, etc. You can write policy that uses the values in these slots.
User-defined optimization variable are slots that you wish to compute in optimization. They must be a series slot or a column of an agg series slot on a data object. To configure that a series slot on a data object is a user defined optimization variable, on the configuration dialog, check the Is User Defined Variable check box. Then, this slot can participate in an optimization problem, but you must still add policy that defines the equation for this variable to pull it into the problem.
The automatically generated post-opt RBS ruleset includes rules to set the user defined variable slots to their optimal values.
Inline Power Plant
The Inline Power Plant object models a run-of-the-river power plant where power facilities rely on the natural slope of the river channel to provide necessary head to generate power. Additionally, this object provides very little or no storage. See “General Slots” in Objects and Methods for details.
Note:  The remainder of this section is under development.
Level Power Reservoir
The Level Power Reservoir object is similar to a Storage Reservoir but with added functionality to model power production facilities on the reservoir. The assumption that the water surface is level is inherent in this object. See “General Slots” in Objects and Methods for details.
General Slots
General slots are always present on the object, regardless of selected methods. The following slots are provided on the reservoir when the optimization controller is selected.
Canal Flow
Type: Agg Series
Units: Flow
Description: Flow into (out of) the reservoir from (to) a canal
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Diversion
Type: Series Slot
Units: Flow
Description: Flow from the reservoir to a diverting object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Elevation Volume Table
Type: Table
Units: Length vs Volume
Description: Table relating elevation of the reservoir to volume stored in the reservoir
Information:
I/O: Input only
Defined by: Input only
Energy
Type: Agg Series Slot
Units: Energy
Description: Product of the power generated by flow through the turbines and the length of the timestep.
Information:
Defined by: Replaced by Power * Timestep Length
Flow FROM Pumped Storage
Type: Agg Series Slot
Units: Flow
Description: Flow into the reservoir from a pumped storage reservoir
Information:
Defined by: Explicit Optimization variable in the mass balance constraint. This slot should be linked to Outflow on a Pumped Storage object. The Pumped Storage object constrains its Outflow.
Flow TO Pumped Storage
Type: Agg Series Slot
Units: Flow
Description: Flow out of the reservoir into a pumped storage reservoir
Information:
Defined by: Explicit Optimization variable in the mass balance constraint. This slot should be linked to Pumped Flow on a Pumped Storage object.
Inflow
Type: MultiSlot
Units: Flow
Description: Inflow into the reservoir from upstream
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Type: Agg Series Slot
Units: Length
Description: Elevation difference between the average Pool Elevation and the average Tailwater Elevation during a timestep
Information:
Defined by: Replacement by (Pool Elevation(t) + Pool Elevation(t-1)) / 2 - Tailwater Elevation
Outflow
Type: Agg Series Slot
Units: Flow
Description: Outflow from the reservoir
Information:
Defined by: Explicit Optimization variable as Outflow = Turbine Release + Spill
Pool Elevation
Type: Series Slot
Units: Length
Description: Elevation of the water surface of the Reservoir
Information: When Pool Elevation is a part of the optimization problem, as it is in all conceivable RiverWare Optimization applications, this slot is numerically approximated as a function of Storage (Numerical 2-D Approximation). The relationship between Pool Elevation and Storage will come from the user-input Elevation Volume Table. The table will be queried either using user-input points defined in the Pool Elevation LP Param table.
Defined by: Numerical 2-D Approximation in terms of Storage, based upon the Elevation Volume Table. The Pool Elevation LP Param table values are used as approximation points indexing the Elevation Volume Table. The Elevation Volume Table should have increasing values of Pool Elevation and Storage. Storage is required to be a concave function of Pool Elevation. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Pool Elevation LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points used to take the tangent, line and piecewise approximations for Pool Elevation linearization
Information: This table is used for linearization unless Pool Elevation Linearization Automation category has selected Plant Automation. The best Storage point to choose for tangent approximation would be the expected storage expected during the run; for the line approximation, the expected maximum and minimum Storage; for piecewise approximation, use points that cover the full range of expected Storage during the run with intermediate points such that a piecewise linear curve reasonably approximates the actual curve.
Defined by: User-input
Figure 5.2  Pool elevation storage relationship. Not drawn to scale.
Power
Type: Series Slot
Units: Power
Description: Power generated by flow through the turbines
Information:
Defined by: Numerical 3-D Approximation in terms of Operating Head and Turbine Release. Approximation is based on the Plant Power Table. The Power LP Param table contains a value for Operating Head used to index the Operating Head column of the Plant Power Table. This approximated value, therefore, reduces the Power to a function of Turbine Release at the given Operating Head. The flow values in the Power LP Param table are then used as approximation points indexing the Turbine Release column of the Plant Power Table. The Plant Power Table should have increasing values of Operating Head and Turbine Release. Power should be a concave function of Operating Head, but concavity is not strictly enforced; mild non-concave regions are permissible to allow for round-off error, etc. The preferred order of approximation is substitution, piece-wise, two-point line, tangent.
Return Flow
Type: MultiSlot
Units: Flow
Description: Flow returning from a diversion object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint (see Storage)
Spill
Type: Series Slot
Units: Flow
Description: Sum of the Bypass, Regulated Spill and Unregulated Spill
Information:
Defined by: Explicit Optimization variable as Spill = Bypass + Regulated Spill + Unregulated Spill
Storage
Type: Series Slot
Units: Volume
Description: Volume of water stored in the reservoir
Information:
Defined by: Explicit Optimization variable as Storage = Storage(t-1) + Precipitation Volume - Evaporation - Change in Bank Storage + timestep * ( Inflow + Canal Flow + Flow TO Pumped Storage + Hydrologic Inflow Net + Return Flow - (Outflow + Diversion + Flow FROM Pumped Storage))
Tailwater Base Value
Type: Series Slot
Units: Length
Description: Elevation of tailwater or base elevation used to compute elevation of tailwater
Information:
Defined by: Explicit Optimization variable should be input or linked. See “Optimization Reserves” for details about related constraints or about other objects to which the slot is linked.
Tailwater Elevation
Type: Series Slot
Units: Length
Description: Water surface elevation on the downstream side of the dam
Information:
Defined by: Various approaches dependent on the method selected in the Optimization Tailwater category.
Turbine Capacity LP Param
Type: Table
Units: Length, Length, Length
Description: LP Param table for turbine capacity
Information: see power methods for additional information
Turbine Capacity
Type: Series Slot
Units: Flow
Description: Flow capacity of the entire power plant’s turbine(s)
Information:
Defined by: Numerical 2-D Approximation in terms of Operating Head, based upon a maximum turbine capacity table. This capacity table is determined in various ways according to the Power method.
Turbine Release
Type: Agg Series Slot
Units: Flow
Description: Flow through the turbines of a power reservoir
Information:
Defined by: Explicit Optimization variable as Turbine Release <= Power Plant Cap Fraction * Turbine Capacity
User Methods in Optimization
The following categories and methods are available for use in the Level Power Reservoir object in Optimization. Because of dependency relationships, you may not be able to see them in your model until you change other methods. In the discussion below, you will see the other methods that need to be selected to enable a given method to be used in your model. When building a model, you will wish to review this to ensure that required dependencies are satisfied so that the desired methods are available for use.
Bank Storage
Not all methods are functional in RPL optimization. Of the available methods, “None” and “CRSS Bank Storage” are supported.
None
Input Bank Storage
Diversion from Reservoir
Not all methods in this category are supported in RPL optimization. Of the available methods, “None” and “Available Flow Based Diversion” are supported; selection of any other method will result in an error during begin run.
None
Available Flow Based Diversion
Energy in Storage
In Optimization, currently “None” and “EIS Table Lookup” are supported.
None
No Energy in storage is considered.
EIS Table Lookup
With this method selected, Energy in Storage is considered as a function of Pool Elevation. See “EIS Table Lookup” in Objects and Methods for details on the simulation method. If the optimization problem uses Energy In Storage, either directly or indirectly, then this slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Pool Elevation (Numerical 2-D Approximation). The relationship between Pool Elevation and Energy In Storage will come from the user-input Energy In Storage Table. The table will be queried either using user-input points defined in the Energy In Storage LP Param table or using automatically calculated points, depending on method selection in the Pool Elevation Linearization Automation category. If the selected method in the Pool Elevation Linearization Automation is “None”, then the user-input Energy In Storage LP Param table values are used. For other Pool Elevation Linearization Automation methods (Initial Target Input, Min Difference or Range Input, Min Difference) the same points automatically developed for the Pool Elevation linearization will be used.
Slots Specific to This Method
Energy In Storage
Type: Series Slot
Units: Energy vs. Power
Description: Energy in Storage in the reservoir
Information:
Defined by: Numerical 2-D Approximation in terms of Pool Elevation, based upon the Energy In Storage Table. The Energy In Storage LP Param table values are used as approximation points indexing the Energy In Storage Table. The Energy In Storage Table should have increasing values of Pool Elevation and Energy In Storage. Energy In Storage is required to be a convex function of Pool Elevation. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Energy in Storage LP Param
Type: Table Slot
Units: Length
Description: Specifies the Pool Elevation points used to take the tangent, line and piecewise approximations for Energy In Storage linearization.
Information: This table is used for linearization unless the Pool Elevation Linearization Automation category has a method selected other than “None”.
Defined by: User-input
Energy in Storage Table
Type: Table Slot
Units: Length vs. Energy
Description: Table defining the relationship between Energy In Storage and Pool Elevation.
Information:
Defined by: User-input
Figure 5.3  Energy in storage pool elevation relationship. Not drawn to scale.
Optimization Evaporation
This category can be used to model evaporation and precipitation.
None
The Optimization Evaporation method “None” is the default method for this category. It does no calculations and requires that “None” be selected for the Evaporation and Precipitation category.
Opt Input Evaporation
This method is analogous to the Input Evaporation method in simulation and requires the Input Evaporation method to be selected for the Evaporation and Precipitation category. Evaporation Rate and Precipitation Rate are entered as a time series. Evaporation is calculated as a product of Evaporation Rate, Average Surface Area over the timestep and Timestep length. Similarly Precipitation Volume is calculated as the product of Precipitation Rate, Average Surface Area and Timestep length.
Caution:  The linearization of the Surface Area variable can result in a small approximation error in optimization for Evaporation and Precipitation Volume. This means there can be a small difference between the mass balances in the optimization solution and the post-optimization rulebased simulation when using this method. It is important to use care when setting the approximation points for Surface Area in order to reduce this approximation error. Refer to the information on the Surface Area LP Param slot below. Also caution should be used if applying this method at a 1 Month timestep. All rates in the optimization mass balance are converted to monthly volumes based on a 30-day month, regardless of the month. This will also produce a difference between the mass balances in the optimization solution and the post-optimization rulebased simulation for a 1 Month timestep.
Slots Specific to This Method
Elevation Area Table
Type: Table Slot
Units: Length vs. Area
Description: Represents the Elevation-Surface Area relationship
Information: This table must be input. It is used to derive the Volume Area Table.
Defined by: User-input
Evaporation
Type: Series Slot
Units: Volume
Description: The volume of water lost to evaporation over the timestep
Information: If this slot contains user input, it is added directly to the mass balance constraint, otherwise it is defined by the expression below.
Defined by: Either user-input or the following constraint:
Evaporation Rate
Type: Series Slot
Units: Velocity
Description: The rate, in length per time, at which water is lost to evaporation at each timestep
Information: This slot can be set as user input. If it is not set as an input, and if Evaporation is not an input, this slot defaults to zero. If Evaporation is an input, this slot is not used.
Defined by: User-input or defaults to zero
Precipitation Rate
Type: Series Slot
Units: Velocity
Description: The rate, in length per time, at which water is gained from precipitation at each timestep
Information: This slot can be set as user input. If it is not set as an input, it defaults to zero.
Defined by: User-input or defaults to zero
Precipitation Volume
Type: Series Slot
Units: Volume
Description: The volume of water gained from precipitation over the timestep
Information: The Input Evaporation method will not allow this slot to be set as an input.
Defined by: Explicit constraint as follows:
Surface Area
Type: Series Slot
Units: Area
Description: The area of the water surface at the end of the timestep
Information: This slot is numerically approximated as a function of Storage (Numerical 2-D Approximation). The relationship between Pool Elevation and Storage comes from the automatically generated Volume Area Table. The table is queried using the user-input points defined in the Surface Area LP Param table.
Defined by: Numerical 2-D Approximation in terms of Storage, based upon the Volume Area Table. The Surface Area LP Param table values are used as approximation points indexing the Volume Area Table. The preferred order of approximation is substitution, piecewise, two-point line, tangent. Most often the two-point line (secant) approximation will be used.
Surface Area LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points used to take the tangent, line and piecewise approximations for Surface Area linearization
Information: The best Storage point to choose for tangent approximation would be the expected storage during the run; for line approximation, the expected maximum and minimum Storage; for piecewise approximation, use points that cover the full range of expected Storage during the run with intermediate points such that a piecewise linear curve reasonably approximates the actual curve.In most cases, the line (secant) approximation will be used. It is important to set these points carefully to minimize approximation error.
Defined by: User-input
Figure 5.4 represents two alternative selections of points for the line approximation in the Surface Area LP Param table. The linear approximation represented by the dashed line corresponds to the selection of points near the extremes of the Volume Area table. This approximation will tend to result in an under-estimation of Surface Area, and thus an under-estimation of Evaporation and Precipitation Volume. Evaporation losses in the post-optimization rulebased simulation would be greater than the losses approximated in the optimization solution. The linear approximation represented by the solid line corresponds to the selection of points closer together in the Volume Area Table, and is more similar to the Tangent approximation. This approximation would tend to result in an over estimation of Surface Area, and the losses due to Evaporation in the post-optimization rulebased simulation would be less than the approximation in the optimization solution.
Figure 5.4  Surface area vs. storage relationship with two alternative line approximations. Not drawn to scale.
Volume Area Table
Type: Table Slot
Units: Volume vs. Area
Description: Represents the Storage Volume-Surface Area relationship
Information: This table is read-only and is automatically generated at the start of the run from the Elevation Area Table and the Elevation Volume table. The method starts by copying the Elevation Area Table and then replaces the Pool Elevation Values with the corresponding Storage values. The Storage values are linearly interpolated based on the Elevation Volume Table
Defined by: Automatically generated
Future Value
This category and its methods are not dependent on other method selections.
None
Cumulative Storage Value Table
In RPL-Optimization, the Cumulative Storage Value is Numerically Approximated as described below.
Slots Specific to This Method
Cumulative Storage Value
Type: Agg Series Slot
Units: \$
Description: Represents the future energy value of the current storage
Information:
Defined by: 2-D approximation in terms of Anticipated Storage, based upon the Cumul Stor Val Table. The Cumul Stor Val LP Param table values (Storage) are used as approximation points indexing the Cumul Stor Val Table. The Cumul Stor Val Table should have increasing values of Storage and Cumulative Value. Cumulative Storage Value is required to be a concave function of Anticipated Storage. The preferred order of approximation is substitution, piece-wise, tangent, two-point line. The Cumul Stor Val Linearization Automation category’s Marginal Value to Table and Lin method can automate creation of the Cumul Stor Val LP Param table and the Cumul Stor Val Table.
Anticipated Storage
Type: Agg Series Slot
Units: Volume
Description: The combination of the actual storage plus water that would be expected to enter the reservoir after the Current Timestep but has not yet, due to lagging.
Information:
Defined by:
Cumul Stor Val Table
Type: Table Slot
Units: Volume vs. Value
Description: The estimated total economic value of water stored in the reservoir for discrete storage values.
Information:
Defined by: User-input or by automated procedure if Cumul Stor Val Linearization Automation category has selected the Marginal Value to Table and Lin method.
Marginal Storage Value Table
Type: Table Slot
Units: Storage vs. \$ Value
Description: Anticipated Storage versus Cumulative Storage Value per unit energy
Information: This table should be increasing in storage, and logically decreasing in marginal value
Defined by: Required input
Spill Cost
Type: Agg Series Slot
Units: \$
Description:
Information:
Defined by:
Optimization Future Value
This category allows the optimization to provide slots relating to the future value of water. Its appearance is dependent on selecting the Cumulative Storage Value Table method for the Future Value category.
None
If this method is selected, the future value slots will not be visible, and no linearization will be attempted.
Opt Cumulative Storage Value Table
If this method is selected, the following slots will be visible, and linearization will be allowed.
Slots Specific to This Method
Cumul Stor Val LP Param
Type: Table Slot
Units: Volume, Volume, Volume
Description: Specifies the storage points used to take the tangent, line and piecewise approximations for Cumul Stor Val Table linearization
Information:
Defined by: User-input or by automated procedure if Cumul Stor Val Linearization Automation category has selected the Marginal Value to Table and Lin method.
Hydrologic Inflow
If any method in this category is selected, hydrologic inflow is included in the reservoir mass balance. Optimization assumes hydrologic inflow to be known (data) and it is not solved for by the reservoir regardless of the method selected. See “Hydrologic Inflow” in Objects and Methods for details.
Optimization Spill
The Optimization Spill methods determine how spill is calculated for the reservoir and generates physical constraints that correspond to the selected methods.
This category is dependent on selection of the Independent Linearizations method for the Optimization Power category. However, the method selected in the Optimization Spill category must match with the corresponding non-optimization method in the Spill category.
Spill is an Optimization decision variable. The following constraint is always generated for a reservoir:
(5.2)    Outflow = Turbine release (or Release) + Spill
The spill methods generate values applicable to an additional constraint:
(5.3)    Spill = Regulated Spill + Unregulated Spill + Bypass,
where some of these terms may be omitted if they do not apply to the selected spill method.
Depending on the method selected, some of the following slots will be added. Other slots will be used from the non-optimization method selected. See “Spill” in Objects and Methods for details on non-optimization Spill methods.
As applicable, the following constraints are also added:
(5.4)    Bypass <= Bypass Capacity
(5.5)    Regulated Spill <= Regulated Spill Capacity
(5.6)    Unregulated Spill = Unregulated Spill Capacity
Slots Specific to This Method
Bypass Capacity
Type: Series Slot
Units: Flow
Description: Bypass capacity
Information:
Defined by: Numerical 2-D Approximation in terms of storage, based upon the Bypass Capacity Table.
Bypass Capacity Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding maximum bypass spill values
Information:
Defined by: Internally developed based on Bypass Table and Elevation Volume Table relationships. For each pool elevation in the Bypass Table, the Bypass Capacity Table has a row relating Storage to Bypass Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Regulated Spill Capacity
Type: Series Slot
Units: Flow
Description: Regulated spill capacity
Information:
Defined by: Numerical 2-D Approximation in terms of storage, based upon the Regulated Spill Capacity Table.
Regulated Spill Capacity Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding maximum regulated spill values
Information:
Defined by: Internally developed based on Regulated Spill Table and Elevation Volume Table relationships. For each pool elevation in the Regulated Spill Table, the Regulated Spill Capacity Table has a row relating Storage to Regulated Spill Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Regulated Spill or Bypass LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points use to take the tangent, line and piecewise approximations for Regulated Spill Capacity linearization and Bypass Spill Capacity linearization.
Information:
Defined by: User-input
Unregulated Spill Linearization Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding unregulated spill values
Information:
Defined by: Internally developed based on Unregulated Spill Table and Elevation Volume Table relationships. For each pool elevation in the Unregulated Spill Table, the Unregulated Spill Capacity Table has a row relating Storage to Unregulated Spill Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Unregulated Spill LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points use to take the tangent, line and piecewise approximations for Unregulated Spill Linearization Table linearization
Information:
Defined by: User-input
None
If this method is selected the slot bounds in the slot configuration dialog are set to zero. No additional constraints are generated.
Opt Monthly Spill
This method is not functional in RPL Optimization.
This method sets the lower and upper bounds on spill. The lower bound is set to zero and the default upper bound is set to a very big number (9,999,999 cms). The default upper bound can be revised in the Spill slot configuration, Upper Bound parameter. No additional constraints are generated beyond these bounds.
Opt Unregulated
If this method is selected only unregulated spill is considered and the following constraint is added to the LP:
(5.7)    Spill = Unregulated Spill
Opt Regulated
When this method is selected only regulated spill is considered. The lower bound on spill is set to zero and the following constraint is added to the LP:
(5.8)    Spill = Regulated Spill
Opt Regulated and Unregulated
When this method is selected unregulated and regulated spill are considered and the following constraint is added to the LP:
(5.9)    Spill = Regulated Spill + Unregulated Spill
Opt Regulated and Bypass
When this method is selected only regulated and bypass spill are considered and the lower bound on spill is set to zero and the following constraint is added to the LP:
(5.10)    Spill = Regulated Spill + Bypass
Opt Regulated, Bypass and Unregulated
When this method is selected unregulated, regulated and bypass spill are considered and the following constraint is added to the LP:
(5.11)    Spill = Regulated Spill + Unregulated Spill + Bypass
Opt Bypass, Regulated and Unregulated
When this method is selected unregulated, regulated and bypass spill are considered and the following constraint is added to the LP:
(5.12)    Spill = Bypass + Regulated Spill + Unregulated Spill
Optimization Power
The Optimization Power category allows the user to select which type of linearizations will be used for linearizing various slots. For Independent Linearizations all slots are linearized separately according to the user specified methods. This category has no dependencies.
None
This is the default method. It is an error to have this method selected for Optimization. No slots are added for this method.
Independent Linearizations
The Independent Linearizations method linearizes all the variables separately according to the user selected methods. The variables that need to be linearized vary greatly depending on the other methods selected. See the various Categories and Linearization Approaches for details.
Slots Specific to This Method
Power LP Param
Type: Table Slot
Units: Length and Flow
Description: Specifies the Operating Head and the flow points used to take the tangent, line and piecewise approximations for Power linearization
Information: This table must be user input when the Independent Linearizations method is selected. The best Operating Head to choose should be close to the expected head during optimized period. Tangent approximation is generally not used, nor helpful as it often results in non-zero power for zero flow. The suggested points for a line approximation are 0 flow and best turbine flow for the entire plant. The suggested points for piecewise linearization are 0 flow, 1 unit best turbine flow, 2 units best turbine flow ... n units best turbine flow, and maximum turbine flow.
Defined by: Input
Figure 5.5  Power turbine release relationship for a fixed operating head valve. Not drawn to scale.
If the Optimization problem uses Power, either directly or indirectly, then the Power slot is added to the problem. Before being passed to the optimization solver, the Power slot is numerically approximated as a function of Operating Head and Turbine Release (Numerical 3-D Approximation). The relationship between Operating Head and Turbine Release will come from the Plant Power Table. This table must be user-input. The table will be queried using the points defined in the Power LP Param table.
Power Coefficient
The Power Coefficient method models Power at each time step as Turbine Release multiplied by a Power Coefficient Estimate.
Slots Specific to This Method
Power Coefficient Estimate
Type: Series Slot
Units: PowerPerFlow
Description: This represents the estimated Power Coefficient that gets used in the Optimization definition of Power.
Information: The Power Coefficient Estimate is a required input for the run. It can either be input directly (manually or by DMI), or it could be set by an initialization rule. For example, an initialization rule could set the Power Coefficient Estimate based on a Seed (Slot Cache) value. If the Power Coefficient method is selected, and Power Coefficient Estimate is not an input for all time steps, then the run will abort with an error message.
Defined by: Input
Power at each time step is then defined as follows:
Power Surface Approximation
This method allows for the modeling of dynamic Operating Head to be incorporated into Optimization Power modeling. It provides a significant improvement in the Power approximation error over the linearization using the Power LP Param table, which assumes a constant Operating Head over the entire run period. The improvement is especially significant for projects that exhibit a wide range of Operating Head over the course of the run, particularly if the optimization policy is trying to maximize Power or set Power greater than or equal to a value.
The method introduces a new variable, PSA Head Factor, which represents the weighted contributions of Storage, Spill and Tailwater Base Value to Operating Head. The method generates a set of planes, the Power Surface, to constrain power as a function of Turbine Release and the PSA Head Factor.
The Power Surface can be thought of as pavement over a warped bridge that is level on one end and sloped and higher on the other end. The bridge ends represent zero Turbine Release and maximum Turbine Release respectively. In addition, the bridge is bowed concave across the center line everywhere except the level (zero Turbine Release) end. This bowing reflects Power as a function of the Head Factor for a fixed value of Turbine Release. The edges of the bridge represent Power as a function of Turbine Release for the low and high values of the Head Factor. Additional points defining a grid on the surface correspond to intermediate values of Turbine Release and the Head Factor. The user can define dimensions and points used for this grid. A piecewise linear surface is composed of cutting planes with each plane defining one triangle on the surface. A surface underneath the bridge composed of two planes defines a lower bound on Power given Turbine Release and Head Factor values.
Because only two planes can be defined for the lower bounds on power, additional approximation error can be introduced if the optimization policy has an incentive to minimize power. In these cases the optimization solution can have an incentive to under-approximate Power for a given Turbine Release, and thus the Post-optimization Rulebased Simulation will calculate a larger Power value than the optimization value for Power.
Slots Specific to This Method
The user enters data into the following slots:
The remaining table slots associated with the method are automatically populated by RiverWare. A description of all of the slots associated with this method is given below.
PSA Sample Input
Type: Table Slot
Units: Flow, Volume, Flow, Length
Description: This table contains user-specified sample values for Turbine Release, Storage, Total Spill (if applicable) and Tailwater Base Value (if applicable) that are used by RiverWare to compute the PSA Head Factor Weights. The four parameters in this table represent all of the parameters that contribute to Operating Head. In other words, if a value is known for each of these parameters, it is possible to calculate the corresponding Operating Head.
Information: The values in this table should span the full possible range for each parameter for the given run. For example, the Turbine Release column should contain a value of 0, the highest possible turbine release from the reservoir, and any other intermediate values specified by the user. Specifying tighter upper and lower bounds for each parameter will improve the approximation, but it is important that all possible values for each variable within the run are spanned by the range for that parameter in the table. The user can determine how many rows to include in the table. It is expected that typically, 3-4 values will be specified for each parameter. An example is shown below. The Spill column should only contain values if a method other than None has been selected in the Spill category. Otherwise the Spill column should be left empty (will display “NaN”). The Tailwater Base Value column should only contain values if the reservoir’s Tailwater Base Value slot is linked to the Pool Elevation slot of a downstream reservoir (i.e. if the Downstream Reservoir Pool Elevation contributes to the calculation of Operating Head). Otherwise the Tailwater Base Value column should be left empty.
Defined by: User Input

Turbine Release
Storage
Spill (Total)
Tailwater Base Value
0
0
0
500
100
1000
50
510
200
2000
100
520
Type: Scalar Slot
Units: None
Description: The number of PSA Head Factor values for each Turbine Release value used when calculating the PSA Grid Points
Information: This must be an integer greater than or equal to 2. The value should typically range from 2 to 4. A larger number will improve the approximation but will increase run time.
Defined by: User Input
PSA Turbine Release Grid Lines
Type: Scalar Slot
Units: None
Description: The number of Turbine Release values for each PSA Head Factor value used when calculating the PSA Grid Points
Information: This must be an integer greater than or equal to 2. The value should typically range from 2 to 4. A larger number will improve the approximation but will increase run time.
Defined by: User Input
PSA Sample Output
Type: Table Slot
Units: Flow, Volume, Flow, Volume, Power
Description: A table containing all permutations of the values entered in the PSA Sample Input table slot along with the Power calculated for each combination of Sample Input values. This sample output is used to calculate the PSA Head Factor Weights.
Information: RiverWare will populate this table at the beginning of the run. For the PSA Sample Input table shown above, with three values in each of the four columns, this table would contain 81 rows, one for each permutation. For a given combination of Turbine Release, Storage, Spill and Tailwater Base Value, RiverWare can calculate the corresponding Power. The third column will contain the Downstream Storage values corresponding to the Tailwater Base Value entries in the PSA Sample Input slot.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the table:
The calculation of SamplePower depends on the selected Power and Tailwater methods.
Type: Table Slot
Units: PerTime, None, PerTime
Description: The weights for Storage, Spill and Downstream Storage used when calculating PSA Head Factor
Information: This is a 1 x 3 table with a single weight for Storage, Spill and Downstream Storage. The weights are calculated by RiverWare by performing a regression on the values in the PSA Sample Outputs table slot. If one of the parameters is not used (contains NaN for all rows in the PSA Sample Input table), the corresponding weight in this table slot will be zero.
Defined by: Calculated by regression at the beginning of the run
Type: Series Slot
Units: Flow
Description: This slot is a variable in the optimization solution and represents the weighted contribution of Storage, Spill and Downstream Storage to Operating Head and thus power. It can be thought of as a storage analog of Operating Head.
Information: This variable is used in the automatically generated constraints that define Power. It will not, generally display any values, but the user can write a post-optimization rule that calculates the value of this variable at each time step using the equation shown below and the values in the PSA Head Factor Weights table slot.
Defined by:
The coefficients come from the PSA Head Factor Weights table slot.
PSA Grid Points
Type: Table Slot
Units: Flow, Volume, Flow, Volume, Power, Flow
Description: Points used to calculate the planes for the PSA Max Constraints and PSA Min Constraints, one row for each point with columns for Turbine Release, Storage, Spill, Downstream Storage, Power and PSA Head Factor.
Information: The number of rows (points) in this table equals the product of the number of lines in the PSA Head Factor Grid Lines and PSA Turbine Release Grid Lines scalar slots. For each grid point, RiverWare calculates the value of Power and the PSA Head Factor corresponding to the parameter values in that row.
Defined by: Populated by RiverWare at the beginning of the run
Turbine Release Column
Smallest and largest values from PSA Sample Input and evenly spaced intermediate values corresponding to the number of lines in the PSA Turbine Release Grid Lines scalar slot
Storage, Spill and Downstream Storage Columns
Smallest and largest values from PSA Sample Input and evenly spaced intermediate values corresponding to the number of lines in the PSA Head Factor Grid Lines scalar slot
Power Column
Determined by selected Power method, for each row i in the table
The coefficients come from the PSA Head Factor Weights table slot.
PSA Max Constraints
Type: Table Slot
Units: Flow, Flow, Flow, Flow, Flow, FLOW, PowerPerFlow, PowerPerFlow, Power
Description: This table contains the planes that define the upper bounds for power as a function of Turbine Release and PSA Head Factor, one row for each plane. Power is constrained to be less than or equal to the planes defined in this table. The first six columns contain three pairs of Turbine Release and PSA Head Factor values that define three points on the plane. The remaining three columns contain the corresponding Turbine Release Coefficient, Head Factor Coefficient and Constant Term that define the same plane and are used in the actual constraint expressions.
Information: The points used to define the planes come from the Turbine Release and Head Factor points in the PSA Grid Points table slot. RiverWare will not use all of the possible combinations of Turbine Release and Head Factor points but rather will only use the combinations necessary to define the Power Surface.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the PSA Max Constraints table slot, a constraint is added to the optimization problem, as follows:
The coefficients ui, vi and wi are the Turbine Release Coefficient, Head Factor Coefficient and Constant Term from row i of the PSA Max Constraints table. Turbine Release and PSA Head Factor are the actual variables in the optimization problem.
PSA Min Constraints
Type: Table Slot
Units: Flow, Flow, Flow, Flow, Flow, FLOW, PowerPerFlow, PowerPerFlow, Power
Description: This table contains the planes that define the lower bounds for power as a function of Turbine Release and PSA Head Factor, one row for each plane. Power is constrained to be greater than or equal to the planes defined in this table. The first six columns contain three pairs of Turbine Release and PSA Head Factor values that define three points on the plane. The remaining three columns contain the corresponding Turbine Release Coefficient, Head Factor Coefficient and Constant Term that define the same plane and are used in the actual constraint expressions
Information: This table will always contain two rows. Only two planes can be defined for the lower bounds on power.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the PSA Min Constraints table slot, a constraint is added to the optimization problem, as follows:
The coefficients ui, vi and wi are the Turbine Release Coefficient, Head Factor Coefficient and Constant Term from row i of the PSA Min Constraints table. Turbine Release and PSA Head Factor are the actual variables in the optimization problem.
Method Summary
Three slots require input from the user. Descriptions of these slots are provided above.
• PSA Sample Input
• PSA Turbine Release Grid Points
• PSA Head Factor Grid Points
Then at the start of the run RiverWare carries out the following steps:
1. Populate the PSA Sample Output Table with all permutations of parameters in the PSA Sample Input table slot
2. Calculate the PSA Head Factor Weights using a regression based on values in the PSA Sample Output table slot
4. Populate the PSA Grid Points table slot based on the number of grid lines specified by the user
5. Generate upper bound planes using the PSA Grid Points and add the corresponding constraints on Power to the Optimization problem
6. Generate lower bound planes using the PSA Grid Points and add the corresponding constraints on Power to the Optimization problem
Method Details
This section provides details of the calculations carried out by RiverWare to generate the constraints that define the Power Surface. This material is included for reference only.
1. RiverWare populates the PSA Sample Output table slot. All permutations of values in the PSA Sample Input table slot are determined, and a row for each is added to the PSA Sample Output table slot. RiverWare may make some adjustments to prevent infeasible combinations. For example, the highest Turbine Release value may not be possible for all combinations of Storage, Spill and Tailwater Base Value. RiverWare will adjust the Turbine Release to use the maximum turbine release for the resulting Operating Head. The table is organized in blocks of constant Turbine Release, with the lowest Turbine Release block first and then increasing Turbine Release. The values in the remaining columns are ordered corresponding to increasing Operating Head. Storage is increasing. Spill and Tailwater Base Value (or Downstream Storage) are decreasing. For each combination of values (each row), RiverWare calculates the corresponding Operating Head and Power. The Power value is added to each row in the PSA Sample Output table. The details of these calculations are shown here for a given row i in the PSA Sample Output table.
Note:  Poweri is the only calculated quantity displayed in the table. Values from the intermediate calculations shown below are not displayed in the table.
Pool Elevation is calculated by interpolation on the reservoir Elevation Volume Table.
If Tailwater Base Value is linked to Pool Elevation of a downstream reservoir, as follows:
Tailwater Base Value is calculated by interpolation on the downstream reservoir Elevation Volume Table. Tailwater Base Value is only calculated from the Downstream Storage if either Base Value Plus Lookup Table, Stage Flow Lookup Table or Coefficients Table is the selected Tailwater method and Tailwater Base Value is linked to the Pool Elevation of the downstream reservoir. Otherwise Tailwater Base Value is unused, and thus Operating Head and Power are not dependent on Downstream Storage.
Spill will only be non-zero if a method other than None is selected in the Spill category.
The tailwater calculation is dependent on the selected method in the Tailwater category.
The Power calculation is dependent on the selected method in the Power category.
2. RiverWare calculates the PSA Head Factor Weights using a combination of linear regression and averages.
FOR EACH Turbine Release value i
FOR EACH combination of Spill and Tailwater Base Value (or Downstream Storage), k, perform a linear regression to calculate a temporary Storage coefficient gik:
where n is the number of Storage values.
Calculate the temporary Storage coefficient for the given Turbine Release, gi:
where n is the number of Spill and Downstream Storage) combinations.
FOR EACH combination of Storage and Downstream Storage, k, perform a linear regression to calculate a temporary Spill coefficient eik:
where n is the number of Spill values.
Calculate the temporary Spill coefficient for the given Turbine Release, ei:
where n is the number of Storage and Downstream Storage combinations.
FOR EACH combination of Storage and Spill, k, perform a linear regression to calculate a temporary Downstream Storage coefficient fik:
where n is the number of Downstream Storage values.
Calculate the temporary Downstream Storage coefficient for the given Turbine Release, fi:
where n is the number of Storage and Spill combinations.
Calculate average ratios over all Turbine Release values:
where n is the number of Turbine Release values.
Calculate the final Head Factor Weights:
If Tailwater Base Value is linked to the downstream Pool Elevation:
These three weight values are displayed in the three columns of the PSA Head Factor Weights table slot.
In the optimization solution the PSA Head Factor is defined at a given time step by
If Tailwater Base Value is linked to the downstream Pool Elevation:
If Tailwater Base Value is not linked:
3. RiverWare calculates the grid points for the PSA Grid Points table slot. The number of rows (points) in this table equals the product of the number of lines in the PSA Head Factor Grid Lines and PSA Turbine Release Grid Lines scalar slots. The smallest and largest values in the PSA Sample Input slot lead to the smallest and largest values for each of the parameters that affect power (Turbine Release, Storage, Spill and Downstream Storage. One row in this table will correspond to the smallest Turbine Release, smallest Storage, largest Spill and largest Downstream Storage, and thus smallest power. Another row will correspond to the largest Turbine Release, largest Storage, smallest Spill and smallest Downstream Storage, and thus the largest Power. RiverWare generates evenly spaced values between the extremes for each variable.Within the PSA Grid Points table, for a given Turbine Release value, Storage is increasing and Spill and Downstream Storage are decreasing. For each grid point, RiverWare calculates the value of Power and the PSA Head Factor corresponding to the parameter values in each row and adds these to the final two columns in the table.
For each row i in the table:
The Power calculation depends on the method selected in the Power category.
The coefficients come from the PSA Head Factor Weights table slot.
4. RiverWare calculates the upper bound planes. These are entered in the PSA Max Constraints table slot, one row for each plane, where the planes represent Power as a function of Turbine Release and PSA Head Factor. For each combination of three points in the PSA Grid Points Table, RiverWare calculates the corresponding plane. For any three points, the plane is defined by three linear equations, which can be represented in matrix form.

The coefficients that define the plane are solved for by
RiverWare only uses the planes that are necessary to define the Power Surface. Each plane is checked against all remaining points in the PSA Grid Points table. If the Power value for any of the remaining points lies above the given plane, then that plane is rejected (i.e. it would over-constrain Power, resulting in an under-estimation of Power). For each plane i that is used, RiverWare adds the following constraint to the optimization problem for each time step:
5. RiverWare calculates the lower bound planes. These are entered in the PSA Min Constraints table slot, one row for each plane. Only two planes can be calculated for the lower bounds. The points used for the two planes are as follows:
Plane 1:
– Point A1 - Min Turbine Release, Max Head Factor
– Point B1 - Max Turbine Release, Max Head Factor
– Point C1 - Min Turbine Release, Min Head Factor
Plane 2:
– Point A2 - Min Turbine Release, Max Head Factor
– Point B2 - Max Turbine Release, Max Head Factor
– Point C2 - Max Turbine Release, Max Head Factor
The coefficients defining the planes are calculated using the same matrix calculation described for the upper bound planes. For each lower bound plane i, RiverWare adds the following constraint to the optimization problem for each time step:
Note:  Regarding the lower bound approximation, because only two planes can be defined for the lower bounds on power, additional approximation error can be introduced if the optimization policy has an incentive to minimize power. This can occur if Power is included in a Minimize objective. It can also occur if the optimization problem contains constraints that require Power to be less than or equal to value.
Note:  These types of constraints can be introduced through multiple forms of RPL optimization goals. The first is basic less than or equal to constraint.
Policy that requires Power to be equal to a value also adds a less than or equal to constraint. The following RPL statement:
actually adds the following two constraints to the optimization problem:
A constraint to require the sum of Power from multiple reservoirs to be less than or equal to a value will have a similar effect. A final manner in which this can occur is through policy that minimizes Power indirectly through user-defined variables. For example, assume a user-defined variable is defined by the following RPL constraint:
Then later the variable is constrained by the following:
An equivalent constraint would be as follows:
It is possible to reduce the approximation error in these cases by adding constraints to the RPL Optimization Goal Set that essentially create more restrictive planes for the lower bound. These types of constraints are model-specific. Contact CADSWES if assistance is required to add more restrictive lower bounds to the Power Surface Approximation.
Power
See “Power” in Objects and Methods for details about the simulation methods. Only a subset of available Simulation methods are available in Optimization. Selection of a method other than those that follow will result in an error.
If the Optimization problem uses Power, either directly or indirectly, then the Power slot is added to the problem. Before being passed to the optimization solver, the Power slot is numerically approximated as a function of Operating Head and Turbine Release (Numerical 3-D Approximation).
Related Slots
Power LP Param
Type: Table Slot
Units: Length and Flow
Description: Specifies the Operating Head and the flow points used to take the tangent, line and piecewise approximations for Power linearization
Information: This table must be user input if the Independent Linearizations method is selected in the Optimization Power category. Otherwise it is unused. The best Operating Head to choose should be close to the expected head during optimized period. Tangent approximation is generally not used, nor helpful as it often results in non-zero power for zero flow. The suggested points for a line approximation are 0 flow and best turbine flow for the entire plant. The suggested points for piecewise linearization are 0 flow, 1 unit best turbine flow, 2 units best turbine flow ... n units best turbine flow, and maximum turbine flow.
Figure 5.6  Power turbine release relationship for a fixed operating head valve. Not drawn to scale.
Plant Power Coefficient
Slots Specific to This Method
In the RPL Optimization mode, the following slot requires special handling.
Best Turbine Flow
Type: Agg Series Slot
Units: Flow
Description: Flow associated with the most efficient power generation for an associated Operating Head
Information:
Defined by: Numerical 2-D Approximation in terms of Operating Head, based upon an internal best turbine flow table. For the Plant Power Coefficient method (selected in the Power category) the internal table is the Best Turbine Q table. The Best Turbine Q table is required to have increasing values of Operating Head and Best Capacity and be a concave function of Operating Head. The preferred order of approximation is substitution, piece-wise, tangent, two-point line. The Best Turbine Flow LP Param table values are used as approximation points indexing the best turbine flow table.
If the Optimization problem uses Best Turbine Flow, either directly or indirectly, then this slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Operating Head (Numerical 2-D Approximation). The relationship between Operating Head and Best Turbine Flow will come from one of two places, depending on other method selection.
• If the selected method in the Power category is Plant Efficiency Curve, then the relationship is automatically developed from the Plant Power Table.
• For the Plant Power Coefficient method, the user-input Best Turbine Q table defines the relationship.
• For other Plant Calculation category methods, Best Turbine Flow must be input.
Best Turbine Flow LP Param
Type: Table Slot
Units: Length
Description: Specifies the Operating Head points in the best turbine flow relationship used to take the tangent, line and piecewise approximations for Best Turbine Flow linearization
Information: The best operating head points to choose for a piecewise approximation are generally: minimum Operating Head, Operating Head at max capacity, and maximum Operating Head. These three points typically define most of the shape of the Best Turbine Flow curve.
Defined by: User-input
Best Turbine Q
Type: Table Slot
Units: Length vs. Flow
Description: Table defining the relationship between Operating Head and the most efficient power generation.
Information: This table is used if the Power category has the Plant Power Coefficient method selected. If the Power category has the Plant Efficiency Curve method selected, then this table is not used, but a similar relationship is automatically developed from the Plant Power Table.
Defined by: User-input
Plant Power Table
Type: Table Slot
Units: Length vs. Flow vs Power
Description: Table defining the relationship between Operating Head, Turbine Release, and Power at selected points of operation. In building the Plant Power table, the following approach might be taken. For a given Operating Head create n + 2 rows of data, where n is the number of units comprising the Plant. The first row will reflect no flow through the turbines. The next row will reflect the preferred level of flow through the first unit normally activated. Subsequent rows will reflect incremental flow levels as additional turbines come on line at their respective preferred levels of flow. The final row will reflect the flow of all available units running at maximum flow capacity.
Information: Data must be entered into the table in increasing, concave blocks of the same Operating Head for the 3-dimensional table interpolation to work correctly. For every block of the same Operating Head in column 1, Turbine Release and the corresponding Power should be listed in increasing, concave order in columns 2 and 3. There must be a point of zero Turbine Release and zero Power for each Operating Head. The following table is an example of the proper way to formulate the Plant Power Table. This table can be derived from the Best Turbine Q, Best Power Coefficient, Max Turbine Q and Max Power Coefficient slots.

Turbine Release
Power
30
0
0
30
100
100
30
200
175
40
0
0
40
100
125
40
220
195
50
0
0
50
110
147
50
250
205
Defined by: User input
Figure 5.7  Best turbine flow - operating head relationship. Not drawn to scale.
Plant Efficiency Curve
The Plant Efficiency Curve method approximates Best Power Flow the same as the Plant Power Coefficient method.
Peak Power
In RPL Optimization, this method creates a turbine release constraint:
(5.13)    Turbine Release <= Power Plant Capacity Fraction * Turbine Capacity * Number of Units.
No actual power value is calculated.
Peak and Base
In RPL Optimization, this method creates a turbine release constraint:
(5.14)    Turbine Release <= Power Plant Capacity Fraction * Turbine Capacity * Number of Units.
No actual power value is calculated.
Unit Power Table
See “Unit Power Table” in Objects and Methods for details about the Unit Power slots and simulation algorithm. See “Unit Power” for details about the optimization formulation.
Method Details
When the Unit Power Table method is selected, the following categories are available:
• Cavitation; see “Cavitation”
• Avoidance Zones; see “Avoidance Zones”
• Start Up; see “Startup”
• Frequency Regulation; see “Frequency Regulation”
The status of a unit at a given timestep can be one of the following:
• Available
• Unavailable
• Must run
At the highest level, an entire plant may never be able to provide an ancillary service like Regulation. The user could indicate this by selecting “None” in the appropriate category. On the other hand, the following slot settings will allow users to specify unit availability / must run for individual time steps for generation and ancillary services. Without any inputs, the units will default to being available.
If the Unit Power Table method, but not the Frequency Regulation, method is selected, the user could specify through optimization RPL policy.
Note:  Setting certain slots may be possible but not preferred.
• Unit u must generate at time t:
– Unit Is Generating [t,u] = 1, or
– Unit Energy [t,u] = value
• Unit u is unavailable at time t:
– Unit Is Generating [t,u] = 0, or
– Unit Energy [t,u] = 0
If the Frequency Regulation method is selected, the user could specify through optimization policy (RPL):
• Unit u must regulate up at time t:
– Regulation Up [t,u] = value
• Unit u must regulate down at time t:
– Regulation Down [t,u] = value
• Unit u must regulate at time t:
– Regulation [t,u] = value (which implies Regulation Up [t,u] = value and Regulation Down [t,u] = value)
If a unit is unavailable for some type of regulation, then a value can be 0.
Turbine Capacity
Turbine Capacity is numerically approximated before being passed to the optimization solver. The slot is approximated as a function of Operating Head (Numerical 2-D Approximation). The relationship between Operating Head and Turbine Capacity will come from one of several places, depending on the method selected in the Power category. 1) If Plant Efficiency Curve is chosen, the relationship is automatically developed from the Plant Power Table. 2) Otherwise, if Peak Power or Peak and Base is chosen, the relationship comes from the Best Generator Flow table. 3) If none of these methods are chosen, then the relationship is contained in the user-input Max Turbine Q slot.
Slots Specific to This Method
Turbine Capacity
Type: Agg Series Slot
Units: Flow
Description: Flow capacity of the turbine(s)
Information:
Defined by: Numerical 2-D Approximation in terms of Operating Head, based upon a maximum turbine capacity table. This capacity table is determined in various ways according to the Power method:
• Plant Efficiency Curve: an automatically generated maximum turbine flow table developed from the Plant Power Table
• Peak Power or Peak and Base: Best Generator Flow table
• All Others: Max Turbine Q
The Turbine Capacity LP Param table values are used as approximation points indexing the selected maximum turbine capacity table. The maximum turbine capacity table is required to have increasing values of Operating Head. Turbine Capacity in that table is required to be a concave function of Operating Head. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Turbine Capacity LP Param
Type: Table Slot
Units: Length vs. Length vs. Length
Description: Specifies the operational head points used to take the tangent, line and piecewise approximations for Turbine Capacity linearization
Information: For the piecewise approximation the best operating head points to chose are generally: minimum Operating Head, Operating Head at max capacity, and maximum Operating Head. These three points typically define most of the shape of the Turbine Capacity curve.
Defined by: User-input unless the selected method in the Power Linearization Automation category is not “None”.
Figure 5.8  Turbine capacity operating head relationship. Not drawn to scale.
Optimization Tailwater
See “Tailwater” in Objects and Methods for details about the Simulation methods for Tailwater. Only a subset of available methods are supported in Optimization. These methods are: Linked or Input, Base Value Only, Base Value Plus Lookup Table, Stage Flow Lookup Table, and Coefficients Table. Selection of a method other than those will result in an error. The method selected in the Optimization Tailwater category should correspond to the one selected in the simulation Tailwater category.
Tailwater Elevation may be part of the Optimization problem and it is handled differently for each method. Below is a description of the behavior of Tailwater Elevation.
If Tailwater Elevation is not input, then Tailwater Elevation is replaced by the following:
TailwaterBaseValue: Tailwater Elevation = Tailwater Base Value
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Description: See “Linked or Input” in Objects and Methods for details.
Opt Base Value Only
If Tailwater Elevation is not input, then Tailwater Elevation is replaced by the following:
(Tailwater Base Value(t) + Tailwater Base Value(t-1) ) / 2
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Description: See “Base Value Only” in Objects and Methods for details.
Figure 5.9  Tailwater outflow relationship. Not drawn to scale.
Opt Base Value Plus Lookup Table
If Tailwater Elevation is not input, this slot is replaced by a mathematical expression based on Tailwater Base Value and a numerical approximation of Tailwater Elevation as a function of Outflow (Numerical 2-D Approximation) as defined by the user in the Tailwater Table
Tailwater Elevation is constrained to be (tailwaterBaseValue(t) + tailwaterBaseValue(t-1))/2 + tempTWLookupValue, where tempTWLookupValue is a Numerical 2-D Approximation of increase in Tailwater Elevation due to flow as described in the Tailwater Table. The Tailwater Table Lookup LP Param table values for outflow are used as approximation points indexing the Tailwater Table to determine tempTWLookupValue from the Tailwater Elevation column.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Tailwater Table
Type: Series Slot
Units: Flow vs. Length
Description: Reservoir outflow vs. either the tailwater elevation or the tailwater elevation increment
Information: If the Tailwater Base Value is non-zero, the Tailwater Table gives values of incremental increase in Tailwater Elevation over the Base value. If the Tailwater Base Value is zero, the table simply gives the Tailwater Elevation values. The Tailwater Table should have increasing values of outflow. Tailwater Elevation is required to be a convex function of outflow. The preferred order of approximation is substitution, piece-wise, two-point line, tangent. See Object / Simulation documentation for additional information.
I/O: User-input
Tailwater Table Lookup LP Param
Type: Table Slot
Units: Flow, Flow, Flow
Description: LP Parameter approximation points for Outflow.
Information: The Tailwater Table Lookup LP Param table values for outflow are used as approximation points indexing the Tailwater Table to determine tempTWLookupValue from the Tailwater Elevation column.
I/O: User Input only
temp Tailwater Lookup Value
Type: Series
Units: Length
Description: Numerical 2-D Approximation of increase in Tailwater Elevation due to flow as described in the Tailwater Table.
Opt Stage Flow Lookup Table
See “Stage Flow Lookup Table” in Objects and Methods for details about the Stage Flow Lookup Table method. Tailwater Elevation is numerically approximated as a function of Stage and Flow as defined by the user in the Stage Flow Tailwater Table. The tables will be queried either using user-input points defined in the Tailwater Elevation LP Param table or using automatically calculated points, depending on method selection in the Tailwater Linearization Automation category. If the selected method in the Tailwater Linearization Automation category is “None”, then the user-input Tailwater LP Param table values are used. For the Range Input Automation method, the automatically developed points will be used.
Tailwater Elevation is approximated numerically (3-D approximation) as a function of Outflow and Tailwater Base Value based on the Stage Flow Tailwater Table. The Tailwater Elevation LP Param table Tailwater Base Value and flow values are used as approximation points indexing the Downstream Stage and Outflow columns of the Stage Flow Tailwater Table, respectively.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Stage Flow Tailwater Table
Type: Table Slot
Units: Flow vs. Length vs. Length
Description: Reservoir Outflow vs. Downstream Elevation (Tailwater Base Value) vs. Tailwater Elevation
Information: Data must be entered into the table in increasing blocks of the same Outflow value for the 3-dimensional table interpolation to work correctly. For every block of same Outflows in column 1, Downstream Stages should be listed in increasing order in column 2, and the corresponding Tailwater Elevations in column 3. Tailwater elevation is required to be a concave function of Outflow. The preferred order of approximation is substitution, piece-wise, two-point line, tangent. Internally, the Stage Flow Tailwater Table is rearranged to use the Stage as the primary index (column) with outflow as the secondary index (column). This rearranged table may be labeled as “Convolved Stage Flow Tailwater Table” in output messaging. Also, because of this rearrangement, it is desirable to repeat stage values for each outflow.
Defined by: User-input
Tailwater Elevation LP Param
Type: Table Slot
Units: Length, Flow, Flow, Flow
Description: Specifies the fixed tailwater base value point and the outflow points used to take the tangent, line and piecewise approximations for tailwater elevation linearization
Information: This table is used for linearization. The best Tailwater Base Value point to choose for tangent approximation would be an outflow equal to the expected value of outflow during the run; for the line approximation, the minimum and maximum values expected during the run; for piecewise approximation, the minimum and maximum values expected during the run plus additional intermediate values to more closely fit the tailwater curve.
Defined by: User-input unless the selected method in the Tailwater Linearization Automation category is not “None”.
Tail Water Reference Elevation
Type: Table Slot
Units: Length
Description: Lowest Reservoir discharge Elevation when there are no backwater effects from a downstream pool (reservoir)
Information: Although this is part of the Stage Flow Lookup Table method (and its corresponding Opt method), this slot does not influence optimization. See Object / Simulation documentation for additional information.
I/O: User-input
Opt Coefficients Table
This method sets up the physical Tailwater Elevation constraints using the same equation and coefficients used in the Coefficients Table tailwater method; see “Coefficients Table” in Objects and Methods for details.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Tailwater Coefficients
Type: Table
Units: multi
Information: If the Power Surface Approximation method is selected, then there are additional restrictions on the coefficients that can be specified. With the Power Surface Approximation, having terms for Outflow[t-1], Tailwater BaseVal[t] and Tailwater[t-1] are not allowed.
Optimization Reserves
This category depends on selecting either Plant Power Coefficient or Plant Efficiency Curve in the Power category. The methods in this category can be used to account for power reserve requirements in the optimization policy. There is no analogous simulation method associated with this category.
None
This is the default, do-nothing method. No new slots will be added, and no new variables or constraints will be added to the optimization problem.
Constraint Based Single Timestep
This method introduces a set of duplicate variables that represent the value of standard variables assuming full deployment of either upward or downward reserves. In the RPL Optimization Goal Set, users can then write parallel constraints using the duplicate reserve variables for any constraint that cannot be violated while deploying reserves. The purpose of the new variables and their parallel constraints is so that the only reserves that are credited to a hydropower project are those that can actually be reasonably deployed. In other words, it will not count reserves that could not be deployed without violating specified constraints. The new method also introduces new variables for upward and downward reserves, which allow the user to write policy on the reserves themselves, for example, project minimum reserve requirements or total system reserve requirements.
One significant assumption is made that the deployment of these reserves are temporary and only meant to cover a single timestep. It is assumed that in the event reserves are deployed in actual operations, adjustments would be made for later time periods, including reestablishing reserves. With this assumption, the consequences of deploying reserves at a reservoir are limited to that reservoir and that timestep; constraints on downstream reservoirs and later timesteps are not considered when calculating the reserves that can be credited at a given timestep.
The deployment variables are constrained similarly to the original variables with two exceptions. First, the mass balance constraints with other reservoirs or intermediate reaches are omitted (within RiverWare). Second, if there are any constraints that can be violated during deployment then these constraints can also be omitted (within the Optimization Goal Set). The deployment variables will typically use the same linear approximations as the original variables. For example, Pool Elevation with Up Reserve will be approximated using the Pool Elevation LP Param table slot.
Note:  This method has no analogous simulation method. The slots introduced by this method can be referenced in the RPL optimization policy to constrain the solution, but they will not, generally, display values after the post-optimization rulebased simulation like the standard variables, such as Outflow or Pool Elevation. The user does have the option of writing customized post-optimization rules to set values in these slots based on user-specified logic or using the OptValue or OptValuePiecewise predefined functions.
Slots Specific to This Method
This method will add the following series slots, all of which will be available as variables for the RPL optimization policy.
Up Reserve
Type: Series Slot
Units: Power
Description: The upward reserves available; the amount the reservoir could increase generation on the given timestep
Information: Introducing this variable in the optimization policy forces a two-point line approximation to be used for both Power and Power with Up Reserve if Independent Linearizations is selected in the Optimization Power category. This may introduce additional approximation error.
Defined by:
Down Reserve
Type: Series Slot
Units: Power
Description: The downward reserves available; the amount the reservoir could decrease generation on the given timestep
Information: Introducing this variable forces a two-point line approximation to be used for both Power and Power with Down Reserve if Independent Linearizations is selected in the Optimization Power category. This may introduce additional approximation error.
Defined by:
Power with Up Reserve
Type: Series Slot
Units: Power
Description: The average Power generated if full upward reserves were deployed
Information: This variable is defined by the Power approximation as a function of Turbine Release with Up Reserve and a combination of other variables. The set of other variables depends on which Power approximation is being applied. The Power approximation that is applied is dependent on the selected method in the Optimization Power category.
Defined by:
Power with Down Reserve
Type: Series Slot
Units: Power
Description: The average Power generated if full downward reserves were deployed
Information: This variable is defined by the Power linear approximation as a function of Turbine Release with Down Reserve and a combination of other variables. The set of other variables depends on which Power approximation is being applied. The Power approximation that is applied is dependent on the selected method in the Optimization Power category.
Defined by:
Turbine Release with Up Reserve
Type: Series Slot
Units: Flow
Description: The Turbine Release at full deployment of upward reserves
Information: This variable is constrained to be less than or equal to Turbine Capacity with Up Reserve.
Defined by:
and
Turbine Change with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount Turbine Release would change to fully deploy all upward reserves
Information: This variable is expected to always be non-negative, and thus the slot configuration lower bound should be set to 0.
Defined by:
Turbine Capacity with Up Reserve
Type: Series Slot
Units: Flow
Description: The maximum Turbine Release possible given the full deployment of upward reserves
Information: This variable is defined by the Turbine Capacity approximation as a function of Operating Head with Up Reserve.
Defined by:
Type: Series Slot
Units: Flow
Description: The Operating Head at full deployment of upward reserves.
Information:
Defined by:
Spill with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of total Spill at full deployment of upward reserves
Information: This could be equal to Spill, or it could be less than Spill if flow is allowed to be shifted from Spill to Turbine Release during deployment. This depends on how the RPL policy is formulated.
Defined by:
Unregulated Spill with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of Unregulated Spill at full deployment of upward reserves
Information: This quantity is defined by the Unregulated Spill linear approximation as a function of Storage with Up Reserve. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Unregulated Spill, then the value of this variable will automatically be set to zero.
Defined by:
Regulated Spill with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of Regulated Spill at full deployment of upward reserves
Information: This could be equal to Regulated Spill, or it could be less than Regulated Spill if flow is allowed to be shifted from Spill to Turbine Release during deployment, or it could be greater than Regulated Spill if the reservoir has a minimum spill requirement as a percentage of total outflow. This depends on how the RPL policy is formulated. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Regulated Spill, then the value of this variable will automatically be set to zero, and the slot should not be referenced in the RPL optimization policy.
Defined by:
and
Regulated Spill Change with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount Regulated Spill would change to fully deploy all upward reserves
Information: Often this variable will be negative (or 0, and thus the slot Upper Bound will often be set to 0); however it could be positive if the reservoir has a minimum spill requirement as a percentage of total outflow. It could be constrained to be 0, directly or indirectly, by RPL policy, or it could be allowed to be greater than or less than zero. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Regulated Spill, then the slot should not be referenced in the RPL optimization policy.
Defined by:
Regulated Spill Capacity with Up Reserve
Type: Series Slot
Units: Flow
Description: The maximum Regulated Spill given full deployment of upward reserves
Information: This variable is defined by the Regulated Spill Capacity approximation as a function of Storage with Up Reserve. This slot will get added regardless of which Spill method is selected. Users will not typically need to do anything with this slot.
Defined by:
Bypass with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of Bypass at full deployment of upward reserves
Information: This could be equal to Bypass, or it could be less than Bypass if flow is allowed to be shifted from Bypass to Turbine Release during deployment, or it could be greater than Bypass if the reservoir has a minimum bypass requirement as a percentage of total outflow. This depends on how the RPL policy is formulated. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Bypass, then the value of this variable will automatically be set to zero, and the slot should not be referenced in the RPL optimization policy.
Defined by:
and
Bypass Change with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount Bypass would change to fully deploy all upward reserves
Information: Often this variable will be negative (or 0, and thus the slot Upper Bound will often be set to 0); however it could be positive if the reservoir has a minimum bypass requirement as a percentage of total outflow. It could be constrained to be 0, directly or indirectly, by RPL policy, or it could be allowed to be greater than or less than zero. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Bypass, then the slot should not be referenced in the RPL optimization policy.
Defined by:
Bypass Capacity with Up Reserve
Type: Series Slot
Units: Flow
Description: The maximum Bypass given full deployment of upward reserves
Information: This variable is defined by the Bypass Capacity approximation as a function of Storage with Up Reserve. This slot will get added regardless of which Spill method is selected. Users will not typically need to do anything with this slot.
Defined by:
Outflow with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of total Outflow at full deployment of upward reserves
Information:
Defined by:
Storage with Up Reserve
Type: Series Slot
Units: Volume
Description: The end of timestep Storage if full upward reserves were deployed
Information: This variable definition differs from the standard Storage variable only in the Outflow term. The previous Storage and the Net Inflow are the same. Net Inflow represents all gains and losses, including Inflow, Hydrologic Inflow, Precipitation, Evaporation, etc.
Defined by:
Pool Elevation with Up Reserve
Type: Series Slot
Units: Length
Description: The end of timestep Pool Elevation if full upward reserves were deployed
Information: This variable is defined by the Pool Elevation linear approximation as a function of Storage with Up Reserve.
Defined by:
Tailwater Elevation with Up Reserve
Type: Series Slot
Units: Length
Description: The average Tailwater Elevation if full upward reserves were deployed
Information: This variable is defined by the Tailwater Elevation linear approximation as a function of Outflow with Up Reserve and the Tailwater Base Value (if applicable based on the selected Optimization Tailwater method). Tailwater Base Value is unaffected by the Reserves modeling and will be the same for both Tailwater Elevation and Tailwater Elevation with Up Reserves. The Tailwater Elevation linear approximation that is applied is dependent on the selected method in the Optimization Tailwater category.
Defined by:
Temp Tailwater Lookup with Up Reserve
Type: Series Slot
Units: Length
Description: This slot only applies when the Base Value Plus Lookup Table method is selected in the Tailwater category. It represents the lookup value from the Tailwater Table as a function of Outflow with Up Reserve using the Tailwater linear approximation.
Information: This slot will get added regardless of which Tailwater method is selected but will not get used unless the Base Value Plus Lookup method is selected. Users should not need to do anything with this slot.
Defined by:
PSA Head Factor with Up Reserve
Type: Series Slot
Units: Flow
Description: This slot only applies when the Power Surface Approximation method is selected in the Optimization Power category. It represents the component of Operating Head that is dependent on Storage with Up Reserve and Spill with Up Reserve. It is calculated using the same coefficients used for the Standard PSA Head Factor variable.
Information: This slot will get added regardless of which Optimization Power method is selected but will not get used unless the Power Surface Approximation method is selected. Users should not need to do anything with this slot.
Defined by:
Turbine Release with Down Reserve
Type: Series Slot
Units: Flow
Description: The Turbine Release at full deployment of downward reserves
Information:
Defined by:
and
Turbine Change with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount Turbine Release would change to fully deploy all downward reserves
Information: This variable is expected to always be negative or zero, and thus the slot configuration Upper Bound should be set to 0.
Defined by:
Turbine Capacity with Down Reserve
Type: Series Slot
Units: Flow
Description: The maximum Turbine Release possible given the full deployment of downward reserves
Information: This variable is defined by the Turbine Capacity approximation as a function of Operating Head with Down Reserve.
Defined by:
Type: Series Slot
Units: Flow
Description: The Operating Head at full deployment of downward reserves.
Information:
Defined by:
Spill with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of total Spill at full deployment of downward reserves
Information: This could be equal to Spill, or it could be greater than Spill if flow is allowed to be shifted from Turbine Release to Spill during deployment. This depends on how the RPL policy is formulated.
Defined by:
Unregulated Spill with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of Unregulated Spill at full deployment of downward reserves
Information: This quantity is defined by the Unregulated Spill linear approximation as a function of Storage with Down Reserve. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Unregulated Spill, then the value of this variable will automatically be set to zero.
Defined by:
Regulated Spill with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of Regulated Spill at full deployment of downward reserves
Information: This could be equal to Regulated Spill, or it could be greater than Regulated Spill if flow is allowed to be shifted from Turbine Release to Spill during deployment. This depends on how the RPL policy is formulated. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Regulated Spill, then the value of this variable will automatically be set to zero, and the slot should not be referenced in the RPL optimization policy.
Defined by:
and
Regulated Spill Change with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount Regulated Spill would change to fully deploy all downward reserves
Information: This variable will typically by non-negative. It could be constrained to be 0, directly or indirectly, by RPL policy, or it could be allowed to be greater than zero. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Regulated Spill, then the slot should not be referenced in the RPL optimization policy.
Defined by:
Regulated Spill Capacity with Down Reserve
Type: Series Slot
Units: Flow
Description: The maximum Regulated Spill given full deployment of downward reserves
Information: This variable is defined by the Regulated Spill Capacity approximation as a function of Storage with Down Reserve. This slot will get added regardless of which Spill method is selected. Users will not typically need to do anything with this slot
Defined by:
Bypass with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of Bypass at full deployment of downward reserves
Information: This could be equal to Bypass, or it could be greater than Bypass if flow is allowed to be shifted from Turbine Release to Bypass during deployment. This depends on how the RPL policy is formulated. his slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Bypass, then the value of this variable will automatically be set to zero, and the slot should not be referenced in the RPL optimization policy.
Defined by:
and
Bypass Change with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount Bypass would change to fully deploy all downward reserves
Information: This variable will typically be non-negative. It could be constrained to be 0, directly or indirectly, by RPL policy, or it could be allowed to be greater than zero. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Bypass, then the slot should not be referenced in the RPL optimization policy.
Defined by:
Bypass Capacity with Down Reserve
Type: Series Slot
Units: Flow
Description: The maximum Bypass given full deployment of downward reserves
Information: This variable is defined by the Bypass Capacity approximation as a function of Storage with Down Reserve. This slot will get added regardless of which Spill method is selected. Users will not typically need to do anything with this slot
Defined by:
Outflow with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of total Outflow at full deployment of downward reserves
Information:
Defined by:
Storage with Down Reserve
Type: Series Slot
Units: Volume
Description: The end of timestep Storage if full downward reserves were deployed
Information: This variable definition differs from the standard Storage variable only in the Outflow term. The previous Storage and the Net Inflow are the same. Net Inflow represents all gains and losses, including Inflow, Hydrologic Inflow, Precipitation, Evaporation, etc.
Defined by:
Pool Elevation with Down Reserve
Type: Series Slot
Units: Length
Description: The end of timestep Pool Elevation if full downward reserves were deployed
Information: This variable is defined by the Pool Elevation linear approximation as a function of Storage with Down Reserve.
Defined by:
Tailwater Elevation with Down Reserve
Type: Series Slot
Units: Length
Description: The average Tailwater Elevation if full downward reserves were deployed
Information: This variable is defined by the Tailwater Elevation linear approximation as a function of Outflow with Down Reserve and the Tailwater Base Value (if applicable based on the selected Optimization Tailwater method). Tailwater Base Value is unaffected by the Reserves modeling and will be the same for both Tailwater Elevation and Tailwater Elevation with Up Reserves. The Tailwater Elevation linear approximation that is applied is dependent on the selected method in the Optimization Tailwater category.
Defined by:
Temp Tailwater Lookup with Down Reserve
Type: Series Slot
Units: Length
Description: This slot only applies when the Base Value Plus Lookup Table method is selected in the Tailwater category. It represents the lookup value from the Tailwater Table as a function of Outflow with Down Reserve using the Tailwater linear approximation.
Information: This slot will get added regardless of which Tailwater method is selected but will not get used unless the Base Value Plus Lookup method is selected. Users should not need to do anything with this slot.
Defined by:
PSA Head Factor with Down Reserve
Type: Series Slot
Units: Flow
Description: This slot only applies when the Power Surface Approximation method is selected in the Optimization Power category. It represents the component of Operating Head that is dependent on Storage with Down Reserve and Spill with Up Reserve. It is calculated using the same coefficients used for the Standard PSA Head Factor variable.
Information: This slot will get added regardless of which Optimization Power method is selected but will not get used unless the Power Surface Approximation method is selected. Users should not need to do anything with this slot.
Defined by:
Example 5.1  Sample RPL Goal Set Implementation:
Within a RPL Goal set, any constraint that should not be violated when deploying reserves should include a constraint on the standard variable(s) as well as a duplicated constraint on the corresponding reserves variable(s). For example, assume that a reservoir has a maximum pool elevation that cannot be violated when reserves are deployed, and that maximum pool elevation is stored in a series slot on a data object called Res_Data.PE_Max. The RPL goal might look like:
REPEATED MAXIMIN
FOR(DATETIME t IN @”Start Timestep” TO @”Finish Timestep”) DO
ADD CONSTRAINT Res.Pool Elevation[t] <= Res_Data.PE_Max[t]
ADD CONSTRAINT Res.Pool Elevation with Down Reserve[t] <= Res_Data.PE_Max[t]
END FOR
END REPEATED MAXIMIN
The reservoir might also have a target elevation constraint that is a lower priority and can be violated by the deployment of reserves. In this case, the target goal would only include a constraint on the Pool Elevation slot but not a constraint on the Pool Elevation with Down Reserve slot.
Referencing any of the reserve slots in a RPL policy statement will typically draw a large number of additional variables and constraints into the optimization problem. For performance reasons, the user will probably not want these additional constraints to be added unless they are necessary. Assume, for example, that it is known prior to a run that a particular reservoir is not available to provide reserves during select hours. This may be indicated by setting an input value of 0 MW for those hours in a data object series slot called Res_Data.Down_Reserve_Max (similarly for Up Reserve). It would not be necessary to model the reserve versions of constraints for those time steps because it is already known that reserves will be zero. In this case the goal with the Pool Elevation constraints shown previously might be written as:
REPEATED MAXIMIN
FOR(DATETIME t IN @”Start Timestep” TO @”Finish Timestep”) DO
ADD CONSTRAINT Res.Pool Elevation[t] <= Res_Data.PE_Max[t]
IF(Res_Data.Down_Reserve_Max[t] != 0 MW)
ADD CONSTRAINT Res.Pool Elevation with Down Reserve[t] <= Res_Data.PE_Max[t]
END IF
END FOR
END REPEATED MAXIMIN
In this way, the constraint on Pool Elevation with Down Reserve would only be added when the reservoir is available to provide reserves (the max reserves are not constrained to zero).
Users could then write policy on the reserves to be carried at individual projects. Assume that the data object series slots Res_Data.Up_Reserve_Min and Res_Data.Up_Reserve_Max store the minimum upward reserves that the reservoir must carry and the maximum upward reserves the project can be credited respectively. A goal for the reservoir might be:
REPEATED MAXIMIN
FOR(DATETIME t IN @”Start Timestep” TO @”Finish Timestep”) DO
IF(Res_Data.Up_Reserve_Max[t] != 0 MW)
ADD CONSTRAINT Res.Up Reserve[t] >= Res_Data.Up_Reserve_Min[t]
ADD CONSTRAINT Res.Up Reserve[t] <= Res_Data.Up_Reserve_Max[t]
END IF
END FOR
END REPEATED MAXIMIN
These two constraints may not necessarily be included in the same goal.
Note:  The first constraint based on the minimum required reserves will constrain the physical operations of the reservoir in order to meet the required reserve obligation. The second constraint, based on the maximum credited reserves will not directly constraint the physical operations, rather it will only limit the amount of reserves that can be counted. In other words, the solution may operate the reservoir such that, according to physical limits and other specified constraints, the reservoir may have a larger amount of reserves available, but this constraint allows the user to say that only a limited amount will be counted.
Users may then write goals which sum reserves across multiple projects to meet a system reserve requirement.
REPEATED MAXIMIN
FOR(DATETIME t IN @”Start Timestep” TO @”Finish Timestep”) DO
ADD CONSTRAINT (FOR(OBJECT res IN ProjectsAvailableForUpReserve(t)) SUM
res.Up Reserve[t]
END FOR)
>= System_Data.Up_Reserve_Min[t]
END FOR
END REPEATED MAXIMIN
In this goal, ProjectsAvailableForUpReserve represents a user-defined function that returns a list of reservoirs that can carry reserves, again to prevent adding numerous constraints on the reserves version of variables unnecessarily. The details of this function would be model-specific.
Startup
This category depends on selecting the Unit Power Table method (see “Unit Power Table”), and describes how the monetary cost associated with starting up or shutting down a unit (turbine) will be modeled. There are two methods in this category, one which does not model these costs (effectively assigning them a value of 0) and one which uses a table describing the combined costs for starting up and shutting down a unit.
None
This is the default, do-nothing method.
Unit Lumped Cost Method
For each unit, this method lumps the cost of startup and shutdown into one value. See “Unit Lumped Cost Method” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for details about added constraints.
This category depends on the Unit Power Table method (see “Unit Power Table”), and contains methods for modeling additional head loss that occurs. This head loss may come from the configuration of the penstocks for bringing water to the turbines.
None
In this method, there is no additional head loss to be used in the power calculation. In terms of penstock head loss, this method should be selected if the penstocks for the units are independent and the penstock losses are typically incorporated in the power data. Thus the power data is specified in terms of operating head.
Cavitation
This category depends on selecting the Unit Power Table method, (see “Unit Power Table”), and contains methods for dealing with the problem of cavitation on turbines. Cavitation is the sudden formation and collapse of low-pressure bubbles in liquids by means of mechanical forces, and this process can cause damage to turbines under certain operating conditions.
None
This is the default, do-nothing method.
Unit Head and Tailwater Based Regions
This method allows the user to specify the regions of operation in which cavitation does NOT occurs, so that these regions can be avoided. These regions can be dependent on both operating head and tailwater. See “Unit Head and Tailwater Based Regions” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for details about added constraints.
Avoidance Zones
This category depends on selecting the Unit Power Table method, (see “Unit Power Table”), and contains methods for modeling the existence of undesirable regions of operation for turbines. There are two methods in this category, one which does not model avoidance zones at all, and one which
None
This the default, do-nothing method; avoidance zones are not considered.
This method allows the user to specify a table that defines the conditions in which the turbines should not be operated. See “Unit Head Based Avoidance Zones” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for details about added constraints.
Frequency Regulation
This category depends on selecting the Unit Power Table method (see “Unit Power Table”), although in the future it might be enabled for other power methods. The frequency regulation methods model the provision of the frequency regulation ancillary service, that is, how the reservoir can be made available to flexibly follow a load demand within a specified range during a certain period in order to affect the frequency of the generated power.
None
This is the default, do-nothing method; no regulation is modeled.
Unit Frequency Regulation
Note:  This method is not yet implemented.
When frequency regulation is scheduled, it allows the unit to follow the real time load. Exactly what will happen in real time is unknowable. This results in two sets of values at scheduling time, nominally scheduled power and turbine release. It is uncertain if the real time operators will actually use the service. At present, we distinguish between the nominal scheduled power (and turbine release) that the regulation is allowed to depart from and the expected power generation (and turbine release) that will take place when regulation is allowed. Both are important. The scheduled power sets the baseline for regulation and should be communicated to the power dispatchers. The expected power and release are more useful for coordinating a plant with the rest of the system. See “Unit Frequency Regulation” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of added constraints.
Modeling a Level Power Reservoir
Steps to follow in setting up a level power reservoir for optimization
1. Set up a running simulation model, using methods that are compatible with optimization for Power, Tailwater, Spill, etc.
2. Chose an Optimization Power method.
3. Choose an Optimization Head Computation Method. In Optimization, None must be chosen.
4. Select the Optimization Spill method corresponding to the method selected in the Spill category.
5. Fill in the LP Param tables related to Power, Turbine Capacity and Best Turbine Flow (if plant power is used). Alternatively, the Power Linearization Automation Method can also be chosen to automatically determine the values for the LP Param tables.
6. Select the Optimization Tailwater method corresponding to the method selected in Tailwater category. If Opt Base Value Plus Lookup Table or Opt Stage Flow Lookup Table is selected, fill in the Tailwater Elevation LP Param table. Alternatively, select a Tailwater Linearization Automation method (Range Input Automation is currently available).
7. If future value is needed, select a method in the Future Value category, followed by the Optimization Future Value category, and if desired, Cumul Stor Val Linearization Automation.
8. Selection of the remaining methods and linearizations can be done in any order. Pool elevation linearizations, Pool Elevation Linearization Automation, Evaporation and Precipitation, Optimize Evaporation Computation, Evaporation Linearization Automations, Bank Storage, Hydrologic Inflow, Energy In Storage, and Diversion from Reservoir. The appropriate data must be entered for each method.
Pumped Storage Reservoir
The Pumped Storage Reservoir object models a level reservoir where there are facilities that can release water to generate power but can also be pump water into the reservoir to increase storage. See “General Slots” in Objects and Methods for additional information.
General Slots
General slots are always present on the object, regardless of selected methods. The following slots are provided on the reservoir when the optimization controller is selected.
Canal Flow
Type: Agg Series
Units: Flow
Description: Flow into (out of) the reservoir from (to) a canal
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Diversion
Type: Series Slot
Units: Flow
Description: Flow from the reservoir to a diverting object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Elevation Volume Table
Type: Table
Units: Length vs Volume
Description: Table relating elevation of the reservoir to volume stored in the reservoir
Information:
I/O: Input only
Defined by: Input only
Energy
Type: Agg Series Slot
Units: Energy
Description: Product of the power generated by flow through the turbines and the length of the timestep.
Information:
Defined by: Replaced by Power * Timestep Length
Description:
Flow FROM Pumped Storage
Type: Agg Series Slot
Units: Flow
Description: Flow into the reservoir from a pumped storage reservoir
Information:
Defined by: Explicit Optimization variable in the mass balance constraint. This slot should be linked to Outflow on a Pumped Storage object. The Pumped Storage object constrains its Outflow.
Flow TO Pumped Storage
Type: Agg Series Slot
Units: Flow
Description: Flow out of the reservoir into a pumped storage reservoir
Information:
Defined by: Explicit Optimization variable in the mass balance constraint. This slot should be linked to Pumped Flow on a Pumped Storage object.
Inflow
Type: MultiSlot
Units: Flow
Description: Inflow into the reservoir from upstream
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Information:
Type: Agg Series Slot
Units: Length
Description: Elevation difference between the average Pool Elevation and the average Tailwater Elevation during a timestep
Information:
Defined by: Replacement by (Pool Elevation(t) + Pool Elevation(t-1)) / 2 - Tailwater Elevation
Outflow
Type: Agg Series Slot
Units: Flow
Description: Outflow from the reservoir
Information:
Defined by: Explicit Optimization variable as Outflow = Turbine Release + Spill
Information:
Pool Elevation
Type: Agg Series Slot
Units: Length
Description: Elevation of the water surface of the Reservoir
Information: When Pool Elevation is a part of the optimization problem, as it is in all conceivable RiverWare Optimization applications, this slot is numerically approximated as a function of Storage (Numerical 2-D Approximation). The relationship between Pool Elevation and Storage will come from the user-input Elevation Volume Table. The table will be queried either using user-input points defined in the Pool Elevation LP Param table.
Defined by: Numerical 2-D Approximation in terms of Storage, based upon the Elevation Volume Table. The Pool Elevation LP Param table values are used as approximation points indexing the Elevation Volume Table. The Elevation Volume Table should have increasing values of Pool Elevation and Storage. Storage is required to be a concave function of Pool Elevation. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Pool Elevation LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points used to take the tangent, line and piecewise approximations for Pool Elevation linearization
Information: This table is used for linearization unless Pool Elevation Linearization Automation category has selected Plant Automation. The best Storage point to choose for tangent approximation would be the expected storage expected during the run; for the line approximation, the expected maximum and minimum Storage; for piecewise approximation, use points that cover the full range of expected Storage during the run with intermediate points such that a piecewise linear curve reasonably approximates the actual curve.
Defined by: User-input
Figure 5.10  Pool elevation storage relationship. Not drawn to scale.
Power
Type: Agg Series Slot
Units: Power
Description: Power generated by flow through the turbines
Information:
Defined by: Numerical 3-D Approximation in terms of Operating Head and Turbine Release. Approximation is based on the Plant Power Table. The Power LP Param table contains a value for Operating Head used to index the Operating Head column of the Plant Power Table. This approximated value, therefore, reduces the Power to a function of Turbine Release at the given Operating Head. The flow values in the Power LP Param table are then used as approximation points indexing the Turbine Release column of the Plant Power Table. The Plant Power Table should have increasing values of Operating Head and Turbine Release. Power should be a concave function of Operating Head, but concavity is not strictly enforced; mild non-concave regions are permissible to allow for round-off error, etc. The preferred order of approximation is substitution, piece-wise, two-point line, tangent.
Return Flow
Type: MultiSlot
Units: Flow
Description: Flow returning from a diversion object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint (see Storage)
Spill
Type: Agg Series Slot
Units: Flow
Description: Sum of the Bypass, Regulated Spill and Unregulated Spill
Information:
Defined by: Explicit Optimization variable as Spill = Bypass + Regulated Spill + Unregulated Spill
Storage
Type: Series Slot
Units: Volume
Description: Volume of water stored in the reservoir
Information:
Defined by: Explicit Optimization variable as Storage = Storage(t-1) + Precipitation Volume - Evaporation - Change in Bank Storage + timestep * ( Inflow + Canal Flow + Flow TO Pumped Storage + Hydrologic Inflow Net + Return Flow - (Outflow + Diversion + Flow FROM Pumped Storage))
Tailwater Base Value
Type: Series Slot
Units: Length
Description: Elevation of tailwater or base elevation used to compute elevation of tailwater
Information:
Defined by: Explicit Optimization variable should be input or linked. See “Pump Power Numerical Approximation” in Optimization for descriptions of related constraints and other objects to which the slot is linked.
Tailwater Elevation
Type: Agg Series Slot
Units: Length
Description: Water surface elevation on the downstream side of the dam
Information:
Defined by: Various approaches dependent on the method selected in the Optimization Tailwater category.
Turbine Capacity LP Param
Type: Table
Units: Length, Length, Length
Description: LP Param table for turbine capacity
Information: See power methods for additional information
Turbine Capacity
Type: Agg Series Slot
Units: Flow
Description: Flow capacity of the entire power plant’s turbine(s)
Information:
Defined by: Numerical 2-D Approximation in terms of Operating Head, based upon a maximum turbine capacity table. This capacity table is determined in various ways according to the Power method.
Turbine Release
Type: Agg Series Slot
Units: Flow
Description: Flow through the turbines of a power reservoir
Information:
Defined by: Explicit Optimization variable as Turbine Release <= Power Plant Cap Fraction * Turbine Capacity
User Methods in Optimization
The following categories and methods are available for use in the Pumped Storage Reservoir object in Optimization. Because of dependency relationships, you may not be able to see them in your model until you change other methods. In the discussion below, you will see the other methods that need to be selected to enable a given method to be used in your model. When building a model, you will wish to review this to ensure that required dependencies are satisfied so that the desired methods are available for use.
Bank Storage
Not all methods are functional in RPL optimization. Of the available methods, “None” and “CRSS Bank Storage” are supported.
None
See “None” in Objects and Methods for additional information.
Input Bank Storage
Diversion from Reservoir
Not all methods in this category are supported in RPL optimization. Of the available methods, “None” and “Available Flow Based Diversion” are supported; selection of any other method will result in an error during begin run.
None
Available Flow Based Diversion
See “Available Flow Based Diversion” for additional information.
Energy in Storage
In Optimization, currently “None” and “EIS Table Lookup” are supported.
None
No Energy in storage is considered.
EIS Table Lookup
With this method selected, Energy in Storage is considered as a function of Pool Elevation. See “EIS Table Lookup” in Objects and Methods for additional information on the simulation method. If the optimization problem uses Energy In Storage, either directly or indirectly, then this slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Pool Elevation (Numerical 2-D Approximation). The relationship between Pool Elevation and Energy In Storage will come from the user-input Energy In Storage Table. The table will be queried either using user-input points defined in the Energy In Storage LP Param table or using automatically calculated points, depending on method selection in the Pool Elevation Linearization Automation category. If the selected method in the Pool Elevation Linearization Automation is “None”, then the user-input Energy In Storage LP Param table values are used. For other Pool Elevation Linearization Automation methods (Initial Target Input, Min Difference or Range Input, Min Difference) the same points automatically developed for the Pool Elevation linearization will be used.
Slots Specific to This Method
Energy In Storage
Type: Series Slot
Units: Energy vs. Power
Description: Energy in Storage in the reservoir
Information:
Defined by: Numerical 2-D Approximation in terms of Pool Elevation, based upon the Energy In Storage Table. The Energy In Storage LP Param table values are used as approximation points indexing the Energy In Storage Table. The Energy In Storage Table should have increasing values of Pool Elevation and Energy In Storage. Energy In Storage is required to be a convex function of Pool Elevation. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Energy in Storage LP Param
Type: Table Slot
Units: Length
Description: Specifies the Pool Elevation points used to take the tangent, line and piecewise approximations for Energy In Storage linearization.
Information: This table is used for linearization unless the Pool Elevation Linearization Automation category has a method selected other than “None”.
Defined by: User-input
Energy in Storage Table
Type: Table Slot
Units: Length vs. Energy
Description: Table defining the relationship between Energy In Storage and Pool Elevation
Information:
Defined by: User-input
Figure 5.11  Energy in storage pool elevation relationship. Not drawn to scale.
Optimization Evaporation
This category can be used to model evaporation and precipitation.
None
The Optimization Evaporation method “None” is the default method for this category. It does no calculations and requires that “None” be selected for the Evaporation and Precipitation category.
Opt Input Evaporation
This method is analogous to the Input Evaporation method in simulation and requires the Input Evaporation method to be selected for the Evaporation and Precipitation category. Evaporation Rate and Precipitation Rate are entered as a time series. Evaporation is calculated as a product of Evaporation Rate, Average Surface Area over the timestep and Timestep length. Similarly Precipitation Volume is calculated as the product of Precipitation Rate, Average Surface Area and Timestep length.
Caution:  The linearization of the Surface Area variable can result in a small approximation error in optimization for Evaporation and Precipitation Volume. This means there can be a small difference between the mass balances in the optimization solution and the post-optimization rulebased simulation when using this method. It is important to use care when setting the approximation points for Surface Area in order to reduce this approximation error. Refer to the information on the Surface Area LP Param slot below. Also caution should be used if applying this method at a 1 Month timestep. All rates in the optimization mass balance are converted to monthly volumes based on a 30-day month, regardless of the month. This will also produce a difference between the mass balances in the optimization solution and the post-optimization rulebased simulation for a 1 Month timestep.
Slots Specific to This Method
Elevation Area Table
Type: Table Slot
Units: Length vs. Area
Description: Represents the Elevation-Surface Area relationship
Information: This table must be input. It is used to derive the Volume Area Table.
Defined by: User-input
Evaporation
Type: Series Slot
Units: Volume
Description: The volume of water lost to evaporation over the timestep
Information: If this slot contains user input, it is added directly to the mass balance constraint, otherwise it is defined by the expression below.
Defined by: Either user-input or the following constraint:
Evaporation Rate
Type: Series Slot
Units: Velocity
Description: The rate, in length per time, at which water is lost to evaporation at each timestep
Information: This slot can be set as user input. If it is not set as an input, and if Evaporation is not an input, this slot defaults to zero. If Evaporation is an input, this slot is not used.
Defined by: User-input or defaults to zero
Precipitation Rate
Type: Series Slot
Units: Velocity
Description: The rate, in length per time, at which water is gained from precipitation at each timestep
Information: This slot can be set as user input. If it is not set as an input, it defaults to zero.
Defined by: User-input or defaults to zero
Precipitation Volume
Type: Series Slot
Units: Volume
Description: The volume of water gained from precipitation over the timestep
Information: The Input Evaporation method will not allow this slot to be set as an input.
Defined by: Explicit constraint:
Surface Area
Type: Series Slot
Units: Area
Description: The area of the water surface at the end of the timestep
Information: This slot is numerically approximated as a function of Storage (Numerical 2-D Approximation). The relationship between Pool Elevation and Storage comes from the automatically generated Volume Area Table. The table is queried using the user-input points defined in the Surface Area LP Param table.
Defined by: Numerical 2-D Approximation in terms of Storage, based upon the Volume Area Table. The Surface Area LP Param table values are used as approximation points indexing the Volume Area Table. The preferred order of approximation is substitution, piecewise, two-point line, tangent. Most often the two-point line (secant) approximation will be used.
Surface Area LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points used to take the tangent, line and piecewise approximations for Surface Area linearization
Information: The best Storage point to choose for tangent approximation would be the expected storage during the run; for line approximation, the expected maximum and minimum Storage; for piecewise approximation, use points that cover the full range of expected Storage during the run with intermediate points such that a piecewise linear curve reasonably approximates the actual curve.In most cases, the line (secant) approximation will be used. It is important to set these points carefully to minimize approximation error.
Defined by: User-input
Figure 5.12  Surface area vs. storage relationship with two alternative line approximations. Not drawn to scale.
Figure 5.12 represents two alternative selections of points for the line approximation in the Surface Area LP Param table. The linear approximation represented by the dashed line corresponds to the selection of points near the extremes of the Volume Area table. This approximation will tend to result in an under-estimation of Surface Area, and thus an under-estimation of Evaporation and Precipitation Volume. Evaporation losses in the post-optimization rulebased simulation would be greater than the losses approximated in the optimization solution. The linear approximation represented by the solid line corresponds to the selection of points closer together in the Volume Area Table, and is more similar to the Tangent approximation. This approximation would tend to result in an over estimation of Surface Area, and the losses due to Evaporation in the post-optimization rulebased simulation would be less than the approximation in the optimization solution.
Volume Area Table
Type: Table Slot
Units: Volume vs. Area
Description: Represents the Storage Volume-Surface Area relationship
Information: This table is read-only and is automatically generated at the start of the run from the Elevation Area Table and the Elevation Volume table. The method starts by copying the Elevation Area Table and then replaces the Pool Elevation Values with the corresponding Storage values. The Storage values are linearly interpolated based on the Elevation Volume Table
Defined by: Automatically generated
Future Value
This category and its methods are not dependent on other method selections.
None
See “None” in Objects and Methods for additional information.
Cumulative Storage Value Table
In RPL-Optimization, the Cumulative Storage Value is Numerically Approximated as described below.
Slots Specific to This Method
Cumulative Storage Value
Type: Agg Series Slot
Units: \$
Description: Represents the future energy value of the current storage
Information:
Defined by: 2-D approximation in terms of Anticipated Storage, based upon the Cumul Stor Val Table. The Cumul Stor Val LP Param table values (Storage) are used as approximation points indexing the Cumul Stor Val Table. The Cumul Stor Val Table should have increasing values of Storage and Cumulative Value. Cumulative Storage Value is required to be a concave function of Anticipated Storage. The preferred order of approximation is substitution, piece-wise, tangent, two-point line. The Cumul Stor Val Linearization Automation category’s Marginal Value to Table and Lin method can automate creation of the Cumul Stor Val LP Param table and the Cumul Stor Val Table.
Anticipated Storage
Type: Agg Series Slot
Units: Volume
Description: The combination of the actual storage plus water that would be expected to enter the reservoir after the Current Timestep but has not yet, due to lagging.
Information:
Defined by:
Cumul Stor Val Table
Type: Table Slot
Units: Volume vs. Value
Description: The estimated total economic value of water stored in the reservoir for discrete storage values.
Information:
Defined by: User-input or by automated procedure if Cumul Stor Val Linearization Automation category has selected the Marginal Value to Table and Lin method.
Marginal Storage Value Table
Type: Table Slot
Units: Storage vs. \$ Value
Description: Anticipated Storage versus Cumulative Storage Value per unit energy
Information: This table should be increasing in storage, and logically decreasing in marginal value
Defined by: Required input
Spill Cost
Type: Agg Series Slot
Units: \$
Description:
Information:
Defined by:
Optimization Future Value
This category allows the optimization to provide slots relating to the future value of water. Its appearance is dependent on the Cumulative Storage Value Table method being selected for the Future Value category.
None
If this method is selected, the future value slots will not be visible, and no linearization will be attempted.
Opt Cumulative Storage Value Table
If this method is selected, the following slots will be visible, and linearization will be allowed.
Slots Specific to This Method
Cumul Stor Val LP Param
Type: Table Slot
Units: Volume, Volume, Volume
Description: Specifies the storage points used to take the tangent, line and piecewise approximations for Cumul Stor Val Table linearization
Information:
Defined by: User-input or by automated procedure if Cumul Stor Val Linearization Automation category has selected the Marginal Value to Table and Lin method.
Hydrologic Inflow
If any method in this category is selected, hydrologic inflow is included in the reservoir mass balance. Optimization assumes hydrologic inflow to be known (data) and it is not solved for by the reservoir regardless of the method selected. See “Hydrologic Inflow” in Objects and Methods for additional information.
Optimization Spill
The Optimization Spill methods determine how spill is calculated for the reservoir and generates physical constraints that correspond to the selected methods.
This category is dependent on selection of the Independent Linearizations method for the Optimization Power category. However, the method selected in the Optimization Spill category must match with the corresponding non-optimization method in the Spill category.
Spill is an Optimization decision variable. The following constraint is always generated for a reservoir:
(5.15)    Outflow = Turbine release (or Release) + Spill
The spill methods generate values applicable to an additional constraint:
(5.16)    Spill = Regulated Spill + Unregulated Spill + Bypass,
where some of these terms may be omitted if they do not apply to the selected spill method.
Depending on the method selected, some of the following slots will be added. Other slots will be used from the non-optimization method selected. See “Spill” in Objects and Methods for details about non-optimization Spill methods.
As applicable, the following constraints are also added:
(5.17)    Bypass <= Bypass Capacity
(5.18)    Regulated Spill <= Regulated Spill Capacity
(5.19)    Unregulated Spill = Unregulated Spill Capacity
Related Slots
Bypass Capacity
Type: Series Slot
Units: Flow
Description: Bypass capacity
Information:
Defined by: Numerical 2-D Approximation in terms of storage, based upon the Bypass Capacity Table.
Bypass Capacity Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding maximum bypass spill values
Information:
Defined by: Internally developed based on Bypass Table and Elevation Volume Table relationships. For each pool elevation in the Bypass Table, the Bypass Capacity Table has a row relating Storage to Bypass Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Regulated Spill Capacity
Type: Series Slot
Units: Flow
Description: Regulated spill capacity
Information:
Defined by: Numerical 2-D Approximation in terms of storage, based upon the Regulated Spill Capacity Table.
Regulated Spill Capacity Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding maximum regulated spill values
Information:
Defined by: Internally developed based on Regulated Spill Table and Elevation Volume Table relationships. For each pool elevation in the Regulated Spill Table, the Regulated Spill Capacity Table has a row relating Storage to Regulated Spill Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Regulated Spill or Bypass LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points use to take the tangent, line and piecewise approximations for Regulated Spill Capacity linearization and Bypass Spill Capacity linearization.
Information:
Defined by: User-input
Unregulated Spill Linearization Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding unregulated spill values
Information:
Defined by: Internally developed based on Unregulated Spill Table and Elevation Volume Table relationships. For each pool elevation in the Unregulated Spill Table, the Unregulated Spill Capacity Table has a row relating Storage to Unregulated Spill Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Unregulated Spill LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points use to take the tangent, line and piecewise approximations for Unregulated Spill Linearization Table linearization
Information:
Defined by: User-input
None
If this method is selected the slot bounds in the slot configuration dialog are set to zero. No additional constraints are generated.
Opt Monthly Spill
This method is not functional in RPL Optimization.
This method sets the lower and upper bounds on spill. The lower bound is set to zero and the default upper bound is set to a very big number (9,999,999 cms). The default upper bound can be revised in the Spill slot configuration, Upper Bound parameter. No additional constraints are generated beyond these bounds.
Opt Unregulated
If this method is selected only unregulated spill is considered and the following constraint is added to the LP:
(5.20)    Spill = Unregulated Spill
Opt Regulated
When this method is selected only regulated spill is considered. The lower bound on spill is set to zero and the following constraint is added to the LP:
(5.21)    Spill = Regulated Spill
Opt Regulated and Unregulated
When this method is selected unregulated and regulated spill are considered and the following constraint is added to the LP:
(5.22)    Spill = Regulated Spill + Unregulated Spill
Opt Regulated and Bypass
When this method is selected only regulated and bypass spill are considered and the lower bound on spill is set to zero and the following constraint is added to the LP:
(5.23)    Spill = Regulated Spill + Bypass
Opt Regulated, Bypass and Unregulated
When this method is selected unregulated, regulated and bypass spill are considered and the following constraint is added to the LP:
(5.24)    Spill = Regulated Spill + Unregulated Spill + Bypass
Opt Bypass, Regulated and Unregulated
When this method is selected unregulated, regulated and bypass spill are considered and the following constraint is added to the LP:
(5.25)    Spill = Bypass + Regulated Spill + Unregulated Spill
Pool Elevation Linearization Automation
Note:  This category is no longer supported in RPL optimization.
The methods in this category are no longer supported in RPL optimization. Appearance of this category is dependent on selection of the Independent Linearizations method for the Optimization Power category.
Optimization Power
The Optimization Power category allows the user to select which type of linearizations will be used for linearizing various slots. In the RPL Optimization, only the Independent Linearizations method is functional; the Lambda Method is no longer supported. For Independent Linearizations all slots are linearized separately according to the user specified methods. This category has no dependencies.
None
This is the default method. It is an error to have this method selected for Optimization. No slots are added for this method.
Independent Linearizations
The Independent Linearizations method linearizes all the variables separately according to the user selected methods. The variables that need to be linearized vary greatly depending on the other methods selected. See the various Categories and Linearization Approaches for details.
Slots Specific to This Method
Power LP Param
Type: Table Slot
Units: Length and Flow
Description: Specifies the Operating Head and the flow points used to take the tangent, line and piecewise approximations for Power linearization
Information: This table must be user input when the Independent Linearizations method is selected. The best Operating Head to choose should be close to the expected head during optimized period. Tangent approximation is generally not used, nor helpful as it often results in non-zero power for zero flow. The suggested points for a line approximation are 0 flow and best turbine flow for the entire plant. The suggested points for piecewise linearization are 0 flow, 1 unit best turbine flow, 2 units best turbine flow ... n units best turbine flow, and maximum turbine flow.
Defined by: Input
Figure 5.13  Power turbine release relationship for a fixed operating head valve. Not drawn to scale.
If the Optimization problem uses Power, either directly or indirectly, then the Power slot is added to the problem. Before being passed to the optimization solver, the Power slot is numerically approximated as a function of Operating Head and Turbine Release (Numerical 3-D Approximation). The relationship between Operating Head and Turbine Release will come from the Plant Power Table. This table must be user-input. The table will be queried using the points defined in the Power LP Param table.
Power Coefficient
The Power Coefficient method models Power at each time step as Turbine Release multiplied by a Power Coefficient Estimate.
Slots Specific to This Method
Power Coefficient Estimate
Type: Series Slot
Units: PowerPerFlow
Description: This represents the estimated Power Coefficient that gets used in the Optimization definition of Power.
Information: The Power Coefficient Estimate is a required input for the run. It can either be input directly (manually or by DMI), or it could be set by an initialization rule. For example, an initialization rule could set the Power Coefficient Estimate based on a Seed (Slot Cache) value. If the Power Coefficient method is selected, and Power Coefficient Estimate is not an input for all time steps, then the run will abort with an error message.
Defined by: Input
Power at each time step is then defined as:
Power Surface Approximation
This method allows for the modeling of dynamic Operating Head to be incorporated into Optimization Power modeling. It provides a significant improvement in the Power approximation error over the linearization using the Power LP Param table, which assumes a constant Operating Head over the entire run period. The improvement is especially significant for projects that exhibit a wide range of Operating Head over the course of the run, particularly if the optimization policy is trying to maximize Power or set Power greater than or equal to a value.
The method introduces a new variable, PSA Head Factor, which represents the weighted contributions of Storage, Spill and Tailwater Base Value to Operating Head. The method generates a set of planes, the Power Surface, to constrain power as a function of Turbine Release and the PSA Head Factor.
The Power Surface can be thought of as pavement over a warped bridge that is level on one end and sloped and higher on the other end. The bridge ends represent zero Turbine Release and maximum Turbine Release respectively. In addition, the bridge is bowed concave across the center line everywhere except the level (zero Turbine Release) end. This bowing reflects Power as a function of the Head Factor for a fixed value of Turbine Release. The edges of the bridge represent Power as a function of Turbine Release for the low and high values of the Head Factor. Additional points defining a grid on the surface correspond to intermediate values of Turbine Release and the Head Factor. The user can define dimensions and points used for this grid. A piecewise linear surface is composed of cutting planes with each plane defining one triangle on the surface. A surface underneath the bridge composed of two planes defines a lower bound on Power given Turbine Release and Head Factor values.
Because only two planes can be defined for the lower bounds on power, additional approximation error can be introduced if the optimization policy has an incentive to minimize power. In these cases the optimization solution can have an incentive to under-approximate Power for a given Turbine Release, and thus the Post-optimization Rulebased Simulation will calculate a larger Power value than the optimization value for Power.
Slots Specific to This Method
The user enters data into three slots:
The remaining table slots associated with the method are automatically populated by RiverWare. A description of all of the slots associated with this method is given below.
PSA Sample Input
Type: Table Slot
Units: Flow, Volume, Flow, Length
Description: This table contains user-specified sample values for Turbine Release, Storage, Total Spill (if applicable) and Tailwater Base Value (if applicable) that are used by RiverWare to compute the PSA Head Factor Weights. The four parameters in this table represent all of the parameters that contribute to Operating Head. In other words, if a value is known for each of these parameters, it is possible to calculate the corresponding Operating Head.
Information: The values in this table should span the full possible range for each parameter for the given run. For example, the Turbine Release column should contain a value of 0, the highest possible turbine release from the reservoir, and any other intermediate values specified by the user. Specifying tighter upper and lower bounds for each parameter will improve the approximation, but it is important that all possible values for each variable within the run are spanned by the range for that parameter in the table. The user can determine how many rows to include in the table. It is expected that typically, 3-4 values will be specified for each parameter. An example is shown below. The Spill column should only contain values if a method other than None has been selected in the Spill category. Otherwise the Spill column should be left empty (will display “NaN”). The Tailwater Base Value column should only contain values if the reservoir’s Tailwater Base Value slot is linked to the Pool Elevation slot of a downstream reservoir (i.e. if the Downstream Reservoir Pool Elevation contributes to the calculation of Operating Head). Otherwise the Tailwater Base Value column should be left empty.
Defined by: User Input

Turbine Release
Storage
Spill (Total)
Tailwater Base Value
0
0
0
500
100
1000
50
510
200
2000
100
520
Type: Scalar Slot
Units: None
Description: The number of PSA Head Factor values for each Turbine Release value used when calculating the PSA Grid Points
Information: This must be an integer greater than or equal to 2. The value should typically range from 2 to 4. A larger number will improve the approximation but will increase run time.
Defined by: User Input
PSA Turbine Release Grid Lines
Type: Scalar Slot
Units: None
Description: The number of Turbine Release values for each PSA Head Factor value used when calculating the PSA Grid Points
Information: This must be an integer greater than or equal to 2. The value should typically range from 2 to 4. A larger number will improve the approximation but will increase run time.
Defined by: User Input
PSA Sample Output
Type: Table Slot
Units: Flow, Volume, Flow, Volume, Power
Description: A table containing all permutations of the values entered in the PSA Sample Input table slot along with the Power calculated for each combination of Sample Input values. This sample output is used to calculate the PSA Head Factor Weights.
Information: RiverWare will populate this table at the beginning of the run. For the PSA Sample Input table shown above, with three values in each of the four columns, this table would contain 81 rows, one for each permutation. For a given combination of Turbine Release, Storage, Spill and Tailwater Base Value, RiverWare can calculate the corresponding Power. The third column will contain the Downstream Storage values corresponding to the Tailwater Base Value entries in the PSA Sample Input slot.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the table:
The calculation of SamplePower depends on the selected Power and Tailwater methods.
Type: Table Slot
Units: PerTime, None, PerTime
Description: The weights for Storage, Spill and Downstream Storage used when calculating PSA Head Factor
Information: This is a 1 x 3 table with a single weight for Storage, Spill and Downstream Storage. The weights are calculated by RiverWare by performing a regression on the values in the PSA Sample Outputs table slot. If one of the parameters is not used (contains NaN for all rows in the PSA Sample Input table), the corresponding weight in this table slot will be zero.
Defined by: Calculated by regression at the beginning of the run
Type: Series Slot
Units: Flow
Description: This slot is a variable in the optimization solution and represents the weighted contribution of Storage, Spill and Downstream Storage to Operating Head and thus power. It can be thought of as a storage analog of Operating Head.
Information: This variable is used in the automatically generated constraints that define Power. It will not, generally display any values, but the user can write a post-optimization rule that calculates the value of this variable at each time step using the equation shown below and the values in the PSA Head Factor Weights table slot.
Defined by:
The coefficients come from the PSA Head Factor Weights table slot.
PSA Grid Points
Type: Table Slot
Units: Flow, Volume, Flow, Volume, Power, Flow
Description: Points used to calculate the planes for the PSA Max Constraints and PSA Min Constraints, one row for each point with columns for Turbine Release, Storage, Spill, Downstream Storage, Power and PSA Head Factor.
Information: The number of rows (points) in this table equals the product of the number of lines in the PSA Head Factor Grid Lines and PSA Turbine Release Grid Lines scalar slots. For each grid point, RiverWare calculates the value of Power and the PSA Head Factor corresponding to the parameter values in that row.
Defined by: Populated by RiverWare at the beginning of the run
Turbine Release Column
Smallest and largest values from PSA Sample Input and evenly spaced intermediate values corresponding to the number of lines in the PSA Turbine Release Grid Lines scalar slot
Storage, Spill and Downstream Storage Columns
Smallest and largest values from PSA Sample Input and evenly spaced intermediate values corresponding to the number of lines in the PSA Head Factor Grid Lines scalar slot
Power Column
Determined by selected Power method, for each row i in the table
The coefficients come from the PSA Head Factor Weights table slot.
PSA Max Constraints
Type: Table Slot
Units: Flow, Flow, Flow, Flow, Flow, FLOW, PowerPerFlow, PowerPerFlow, Power
Description: This table contains the planes that define the upper bounds for power as a function of Turbine Release and PSA Head Factor, one row for each plane. Power is constrained to be less than or equal to the planes defined in this table. The first six columns contain three pairs of Turbine Release and PSA Head Factor values that define three points on the plane. The remaining three columns contain the corresponding Turbine Release Coefficient, Head Factor Coefficient and Constant Term that define the same plane and are used in the actual constraint expressions.
Information: The points used to define the planes come from the Turbine Release and Head Factor points in the PSA Grid Points table slot. RiverWare will not use all of the possible combinations of Turbine Release and Head Factor points but rather will only use the combinations necessary to define the Power Surface.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the PSA Max Constraints table slot a constraint is added to the optimization problem:
The coefficients ui, vi and wi are the Turbine Release Coefficient, Head Factor Coefficient and Constant Term from row i of the PSA Max Constraints table. Turbine Release and PSA Head Factor are the actual variables in the optimization problem.
PSA Min Constraints
Type: Table Slot
Units: Flow, Flow, Flow, Flow, Flow, FLOW, PowerPerFlow, PowerPerFlow, Power
Description: This table contains the planes that define the lower bounds for power as a function of Turbine Release and PSA Head Factor, one row for each plane. Power is constrained to be greater than or equal to the planes defined in this table. The first six columns contain three pairs of Turbine Release and PSA Head Factor values that define three points on the plane. The remaining three columns contain the corresponding Turbine Release Coefficient, Head Factor Coefficient and Constant Term that define the same plane and are used in the actual constraint expressions
Information: This table will always contain two rows. Only two planes can be defined for the lower bounds on power.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the PSA Min Constraints table slot a constraint is added to the optimization problem:
The coefficients ui, vi and wi are the Turbine Release Coefficient, Head Factor Coefficient and Constant Term from row yc of the PSA Min Constraints table. Turbine Release and PSA Head Factor are the actual variables in the optimization problem.
Method Summary
Three slots require input from the user. Descriptions of these slots are provided above.
• PSA Sample Input
• PSA Turbine Release Grid Points
• PSA Head Factor Grid Points
Then at the start of the run RiverWare carries out the following steps:
• Populate the PSA Sample Output Table with all permutations of parameters in the PSA Sample Input table slot
• Calculate the PSA Head Factor Weights using a regression based on values in the PSA Sample Output table slot
• Populate the PSA Grid Points table slot based on the number of grid lines specified by the user
• Generate upper bound planes using the PSA Grid Points and add the corresponding constraints on Power to the Optimization problem
• Generate lower bound planes using the PSA Grid Points and add the corresponding constraints on Power to the Optimization problem
Method Details
This section provides details of the calculations carried out by RiverWare to generate the constraints that define the Power Surface. This material is included for reference only.
1. RiverWare populates the PSA Sample Output table slot. All permutations of values in the PSA Sample Input table slot are determined, and a row for each is added to the PSA Sample Output table slot. RiverWare may make some adjustments to prevent infeasible combinations. For example, the highest Turbine Release value may not be possible for all combinations of Storage, Spill and Tailwater Base Value. RiverWare will adjust the Turbine Release to use the maximum turbine release for the resulting Operating Head. The table is organized in blocks of constant Turbine Release, with the lowest Turbine Release block first and then increasing Turbine Release. The values in the remaining columns are ordered corresponding to increasing Operating Head. Storage is increasing. Spill and Tailwater Base Value (or Downstream Storage) are decreasing. For each combination of values (each row), RiverWare calculates the corresponding Operating Head and Power. The Power value is added to each row in the PSA Sample Output table. The details of these calculations are shown here for a given row i in the PSA Sample Output table.
Note:  Poweri is the only calculated quantity displayed in the table. Values from the intermediate calculations shown below are not displayed in the table.
Pool Elevation is calculated by interpolation on the reservoir Elevation Volume Table.
If Tailwater Base Value is linked to Pool Elevation of a downstream reservoir:
Tailwater Base Value is calculated by interpolation on the downstream reservoir Elevation Volume Table. Tailwater Base Value is only calculated from the Downstream Storage if either Base Value Plus Lookup Table, Stage Flow Lookup Table or Coefficients Table is the selected Tailwater method and Tailwater Base Value is linked to the Pool Elevation of the downstream reservoir. Otherwise Tailwater Base Value is unused, and thus Operating Head and Power are not dependent on Downstream Storage.
Spill will only be non-zero if a method other than None is selected in the Spill category.
The tailwater calculation is dependent on the selected method in the Tailwater category.
The Power calculation is dependent on the selected method in the Power category.
2. RiverWare calculates the PSA Head Factor Weights using a combination of linear regression and averages.
FOR EACH Turbine Release value i
FOR EACH combination of Spill and Tailwater Base Value (or Downstream Storage), k, perform a linear regression to calculate a temporary Storage coefficient gik:
where n is the number of Storage values.
Calculate the temporary Storage coefficient for the given Turbine Release, gi:
where n is the number of Spill and Downstream Storage) combinations.
FOR EACH combination of Storage and Downstream Storage, k, perform a linear regression to calculate a temporary Spill coefficient eik:
where n is the number of Spill values.
Calculate the temporary Spill coefficient for the given Turbine Release, ei:
where n is the number of Storage and Downstream Storage combinations.
FOR EACH combination of Storage and Spill, k, perform a linear regression to calculate a temporary Downstream Storage coefficient fik:
where n is the number of Downstream Storage values.
Calculate the temporary Downstream Storage coefficient for the given Turbine Release, fi:
where n is the number of Storage and Spill combinations.
Calculate average ratios over all Turbine Release values:
where n is the number of Turbine Release values.
Calculate the final Head Factor Weights:
If Tailwater Base Value is linked to the downstream Pool Elevation:
These three weight values are displayed in the three columns of the PSA Head Factor Weights table slot.
In the optimization solution, the PSA Head Factor is defined at a given time step by
– If Tailwater Base Value is linked to the downstream Pool Elevation:
– If Tailwater Base Value is not linked:
3. RiverWare calculates the grid points for the PSA Grid Points table slot. The number of rows (points) in this table equals the product of the number of lines in the PSA Head Factor Grid Lines and PSA Turbine Release Grid Lines scalar slots. The smallest and largest values in the PSA Sample Input slot lead to the smallest and largest values for each of the parameters that affect power (Turbine Release, Storage, Spill and Downstream Storage. One row in this table will correspond to the smallest Turbine Release, smallest Storage, largest Spill and largest Downstream Storage, and thus smallest power. Another row will correspond to the largest Turbine Release, largest Storage, smallest Spill and smallest Downstream Storage, and thus the largest Power. RiverWare generates evenly spaced values between the extremes for each variable.Within the PSA Grid Points table, for a given Turbine Release value, Storage is increasing and Spill and Downstream Storage are decreasing. For each grid point, RiverWare calculates the value of Power and the PSA Head Factor corresponding to the parameter values in each row and adds these to the final two columns in the table.
For each row i in the table:
The Power calculation depends on the method selected in the Power category.
The coefficients come from the PSA Head Factor Weights table slot.
4. RiverWare calculates the upper bound planes. These are entered in the PSA Max Constraints table slot, one row for each plane, where the planes represent Power as a function of Turbine Release and PSA Head Factor. For each combination of three points in the PSA Grid Points Table, RiverWare calculates the corresponding plane. For any three points, the plane is defined by three linear equations, which can be represented in matrix form.

The coefficients that define the plane are solved for by
RiverWare only uses the planes that are necessary to define the Power Surface. Each plane is checked against all remaining points in the PSA Grid Points table. If the Power value for any of the remaining points lies above the given plane, then that plane is rejected (i.e. it would over-constrain Power, resulting in an under-estimation of Power). For each plane i that is used, RiverWare adds the following constraint to the optimization problem for each time step:
5. RiverWare calculates the lower bound planes. These are entered in the PSA Min Constraints table slot, one row for each plane. Only two planes can be calculated for the lower bounds. The points used for the two planes are as follows:
Plane 1:
– Point A1 - Min Turbine Release, Max Head Factor
– Point B1 - Max Turbine Release, Max Head Factor
– Point C1 - Min Turbine Release, Min Head Factor
Plane 2:
– Point A2 - Min Turbine Release, Max Head Factor
– Point B2 - Max Turbine Release, Max Head Factor
– Point C2 - Max Turbine Release, Max Head Factor
The coefficients defining the planes are calculated using the same matrix calculation described for the upper bound planes. For each lower bound plane i, RiverWare adds the following constraint to the optimization problem for each time step:
Note:  Regarding the lower bound approximation, because only two planes can be defined for the lower bounds on power, additional approximation error can be introduced if the optimization policy has an incentive to minimize power. This can occur if Power is included in a Minimize objective. It can also occur if the optimization problem contains constraints that require Power to be less than or equal to value.
Note:  These types of constraints can be introduced through multiple forms of RPL optimization goals. The first is basic less than or equal to constraint.
Policy that requires Power to be equal to a value also adds a less than or equal to constraint. The following RPL statement:
actually adds the following two constraints to the optimization problem:
A constraint to require the sum of Power from multiple reservoirs to be less than or equal to a value will have a similar effect. A final manner in which this can occur is through policy that minimizes Power indirectly through user-defined variables. For example, assume a user-defined variable is defined by the following RPL constraint:
Then later the variable is constrained by
An equivalent constraint would be
It is possible to reduce the approximation error in these cases by adding constraints to the RPL Optimization Goal Set that essentially create more restrictive planes for the lower bound. These types of constraints are model-specific. Contact CADSWES if assistance is required to add more restrictive lower bounds to the Power Surface Approximation.
Power
See “Power” in Objects and Methods for details about the simulation methods. Only a subset of available Simulation methods are available in Optimization. Selection of a method other than those that follow will result in an error.
If the Optimization problem uses Power, either directly or indirectly, then the Power slot is added to the problem. Before being passed to the optimization solver, the Power slot is numerically approximated as a function of Operating Head and Turbine Release (Numerical 3-D Approximation).
Related Slots
Power LP Param
Type: Table Slot
Units: Length and Flow
Description: Specifies the Operating Head and the flow points used to take the tangent, line and piecewise approximations for Power linearization
Information: This table must be user input if the Independent Linearizations method is selected in the Optimization Power category. Otherwise it is unused. The best Operating Head to choose should be close to the expected head during optimized period. Tangent approximation is generally not used, nor helpful as it often results in non-zero power for zero flow. The suggested points for a line approximation are 0 flow and best turbine flow for the entire plant. The suggested points for piecewise linearization are 0 flow, 1 unit best turbine flow, 2 units best turbine flow ... n units best turbine flow, and maximum turbine flow.
Figure 5.14  Power turbine release relationship for a fixed operating head valve. Not drawn to scale.
Plant Power Coefficient
Slots Specific to This Method
In the RPL Optimization mode, the following slot requires special handling.
Best Turbine Flow
Type: Agg Series Slot
Units: Flow
Description: Flow associated with the most efficient power generation for an associated Operating Head
Information:
Defined by: Numerical 2-D Approximation in terms of Operating Head, based upon an internal best turbine flow table. For the Plant Power Coefficient method (selected in the Power category) the internal table is the Best Turbine Q table. The Best Turbine Q table is required to have increasing values of Operating Head and Best Capacity and be a concave function of Operating Head. The preferred order of approximation is substitution, piece-wise, tangent, two-point line. The Best Turbine Flow LP Param table values are used as approximation points indexing the best turbine flow table.
If the Optimization problem uses Best Turbine Flow, either directly or indirectly, then this slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Operating Head (Numerical 2-D Approximation). The relationship between Operating Head and Best Turbine Flow will come from one of two places, depending on other method selection. 1) If the selected method in the Power category is Plant Efficiency Curve, then the relationship is automatically developed from the Plant Power Table. 2) For the Plant Power Coefficient method, the user-input Best Turbine Q table defines the relationship. 3) For other Plant Calculation category methods, Best Turbine Flow must be input.
Best Turbine Flow LP Param
Type: Table Slot
Units: Length
Description: Specifies the Operating Head points in the best turbine flow relationship used to take the tangent, line and piecewise approximations for Best Turbine Flow linearization
Information: The best operating head points to choose for a piecewise approximation are generally: minimum Operating Head, Operating Head at max capacity, and maximum Operating Head. These three points typically define most of the shape of the Best Turbine Flow curve.
Defined by: User-input
Best Turbine Q
Type: Table Slot
Units: Length vs. Flow
Description: Table defining the relationship between Operating Head and the most efficient power generation.
Information: This table is used if the Power category has the Plant Power Coefficient method selected. If the Power category has the Plant Efficiency Curve method selected, then this table is not used, but a similar relationship is automatically developed from the Plant Power Table.
Defined by: User-input
Plant Power Table
Type: Table Slot
Units: Length vs. Flow vs Power
Description: Table defining the relationship between Operating Head, Turbine Release, and Power at selected points of operation. In building the Plant Power table, the following approach might be taken. For a given Operating Head create n + 2 rows of data, where n is the number of units comprising the Plant. The first row will reflect no flow through the turbines. The next row will reflect the preferred level of flow through the first unit normally activated. Subsequent rows will reflect incremental flow levels as additional turbines come on line at their respective preferred levels of flow. The final row will reflect the flow of all available units running at maximum flow capacity.
Information: Data must be entered into the table in increasing, concave blocks of the same Operating Head for the 3-dimensional table interpolation to work correctly. For every block of the same Operating Head in column 1, Turbine Release and the corresponding Power should be listed in increasing, concave order in columns 2 and 3. There must be a point of zero Turbine Release and zero Power for each Operating Head. The following table is an example of the proper way to formulate the Plant Power Table. This table can be derived from the Best Turbine Q, Best Power Coefficient, Max Turbine Q and Max Power Coefficient slots.

Turbine Release
Power
30
0
0
30
100
100
30
200
175
40
0
0
40
100
125
40
220
195
50
0
0
50
110
147
50
250
205
Defined by: User input
Figure 5.15  Best turbine flow - operating head relationship. Not drawn to scale.
Plant Efficiency Curve
The Plant Efficiency Curve method approximates Best Power Flow the same as the Plant Power Coefficient method.
Peak Power
In RPL Optimization, this method creates a turbine release constraint:
(5.26)    Turbine Release <= Power Plant Capacity Fraction * Turbine Capacity * Number of Units.
No actual power value is calculated.
Peak and Base
In RPL Optimization, this method creates a turbine release constraint:
(5.27)    Turbine Release <= Power Plant Capacity Fraction * Turbine Capacity * Number of Units.
No actual power value is calculated.
Unit Power Table
See “Unit Power Table” in Objects and Methods for descriptions of the Unit Power slots and Simulation algorithm. See “Unit Power” for a description of the optimization formulation.
When the Unit Power Table method is selected, the following categories are available:
• Cavitation; “Cavitation”
• Avoidance Zones; “Avoidance Zones”
• Frequency Regulation; “Frequency Regulation”
When the Unit Power Table method is selected, the following categories are available: Cavitation, Avoidance Zones, Net Head, and Unit Regulation.
The status of a unit at a given timestep can be one of the following:
• Available
• Unavailable
• Must run
At the highest level, an entire plant may never be able to provide an ancillary service like Regulation. The user could indicate this by selecting “None” in the appropriate category. On the other hand, the following slot settings will allow users to specify unit availability / must run for individual time steps for generation and ancillary services. Without any inputs, the units will default to being available.
If the Unit Power Table method, but not the Frequency Regulation, method is selected, the user could specify through optimization RPL policy.
Note:  Setting certain slots may be possible but not preferred.
• Unit u must generate at time t:
– Unit Is Generating [t,u] = 1, or
– Unit Energy [t,u] = value
• Unit u is unavailable at time t:
– Unit Is Generating [t,u] = 0, or
– Unit Energy [t,u] = 0
If the Frequency Regulation method is selected, the user could specify through optimization policy (RPL):
• Unit u must regulate up at time t:
– Regulation Up [t,u] = value
• Unit u must regulate down at time t:
– Regulation Down [t,u] = value
• Unit u must regulate at time t:
– Regulation [t,u] = value (which implies Regulation Up [t,u] = value and Regulation Down [t,u] = value)
If a unit is unavailable for some type of regulation, then a value can be 0.
Turbine Capacity
Turbine Capacity is numerically approximated before being passed to the optimization solver. The slot is approximated as a function of Operating Head (Numerical 2-D Approximation). The relationship between Operating Head and Turbine Capacity will come from one of several places, depending on the method selected in the Power category. 1) If Plant Efficiency Curve is chosen, the relationship is automatically developed from the Plant Power Table. 2) Otherwise, if Peak Power or Peak and Base is chosen, the relationship comes from the Best Generator Flow table. 3) If none of these methods are chosen, then the relationship is contained in the user-input Max Turbine Q slot.
Slots Specific to This Method
Turbine Capacity
Type: Agg Series Slot
Units: Flow
Description: Flow capacity of the turbine(s)
Information:
Defined by: Numerical 2-D Approximation in terms of Operating Head, based upon a maximum turbine capacity table. This capacity table is determined in various ways according to the Power method:
• Plant Efficiency Curve: an automatically generated maximum turbine flow table developed from the Plant Power Table
• Peak Power or Peak and Base: Best Generator Flow table
• All Others: Max Turbine Q
The Turbine Capacity LP Param table values are used as approximation points indexing the selected maximum turbine capacity table. The maximum turbine capacity table is required to have increasing values of Operating Head. Turbine Capacity in that table is required to be a concave function of Operating Head. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Turbine Capacity LP Param
Type: Table Slot
Units: Length vs. Length vs. Length
Description: Specifies the operational head points used to take the tangent, line and piecewise approximations for Turbine Capacity linearization
Information: For the piecewise approximation the best operating head points to chose are generally: minimum Operating Head, Operating Head at max capacity, and maximum Operating Head. These three points typically define most of the shape of the Turbine Capacity curve.
Defined by: User-input unless the selected method in the Power Linearization Automation category is not “None”.
Figure 5.16  Turbine capacity operating head relationship. Not drawn to scale.
Optimization Tailwater
See “Tailwater” in Objects and Methods for additional information on the Simulation methods for Tailwater. Only a subset of available methods are supported in Optimization. These methods are: Linked or Input, Base Value Only, Base Value Plus Lookup Table, Stage Flow Lookup Table, and Coefficients Table. Selection of a method other than those will result in an error. The method selected in the Optimization Tailwater category should correspond to the one selected in the simulation Tailwater category.
Tailwater Elevation may be part of the Optimization problem and it is handled differently for each method. Below is a description of the behavior of Tailwater Elevation.
If Tailwater Elevation is not input, then Tailwater Elevation is replaced by TailwaterBaseValue: Tailwater Elevation = Tailwater Base Value.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Description: See “Linked or Input” in Objects and Methods for a details.
Opt Base Value Only
If Tailwater Elevation is not input, then Tailwater Elevation is replaced by (Tailwater Base Value(t) + Tailwater Base Value(t-1) ) / 2
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Description: See “Base Value Only” in Objects and Methods for details.
Figure 5.17  Tailwater outflow relationship. Not drawn to scale.
Opt Base Value Plus Lookup Table
If Tailwater Elevation is not input, this slot is replaced by a mathematical expression based on Tailwater Base Value and a numerical approximation of Tailwater Elevation as a function of Outflow (Numerical 2-D Approximation) as defined by the user in the Tailwater Table
Tailwater Elevation is constrained to be (tailwaterBaseValue(t) + tailwaterBaseValue(t-1))/2 + tempTWLookupValue, where tempTWLookupValue is a Numerical 2-D Approximation of increase in Tailwater Elevation due to flow as described in the Tailwater Table. The Tailwater Table Lookup LP Param table values for outflow are used as approximation points indexing the Tailwater Table to determine tempTWLookupValue from the Tailwater Elevation column.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Tailwater Table
Type: Series Slot
Units: Flow vs. Length
Description: Reservoir outflow vs. either the tailwater elevation or the tailwater elevation increment
Information: If the Tailwater Base Value is non-zero, the Tailwater Table gives values of incremental increase in Tailwater Elevation over the Base value. If the Tailwater Base Value is zero, the table simply gives the Tailwater Elevation values. The Tailwater Table should have increasing values of outflow. Tailwater Elevation is required to be a convex function of outflow. The preferred order of approximation is substitution, piece-wise, two-point line, tangent. See Object / Simulation documentation for additional information.
I/O: User-input
Tailwater Table Lookup LP Param
Type: Table Slot
Units: Flow, Flow, Flow
Description: LP Parameter approximation points for Outflow.
Information: The Tailwater Table Lookup LP Param table values for outflow are used as approximation points indexing the Tailwater Table to determine tempTWLookupValue from the Tailwater Elevation column.
I/O: User Input only
temp Tailwater Lookup Value
Type: Series
Units: Length
Description: Numerical 2-D Approximation of increase in Tailwater Elevation due to flow as described in the Tailwater Table.
Opt Stage Flow Lookup Table
See “Stage Flow Lookup Table” in Objects and Methods for additional information on the Stage Flow Lookup Table method. Tailwater Elevation is numerically approximated as a function of Stage and Flow as defined by the user in the Stage Flow Tailwater Table. The tables will be queried either using user-input points defined in the Tailwater Elevation LP Param table or using automatically calculated points, depending on method selection in the Tailwater Linearization Automation category. If the selected method in the Tailwater Linearization Automation category is “None”, then the user-input Tailwater LP Param table values are used. For the Range Input Automation method, the automatically developed points will be used.
Tailwater Elevation is approximated numerically (3-D approximation) as a function of Outflow and Tailwater Base Value based on the Stage Flow Tailwater Table. The Tailwater Elevation LP Param table Tailwater Base Value and flow values are used as approximation points indexing the Downstream Stage and Outflow columns of the Stage Flow Tailwater Table, respectively.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Stage Flow Tailwater Table
Type: Table Slot
Units: Flow vs. Length vs. Length
Description: Reservoir Outflow vs. Downstream Elevation (Tailwater Base Value) vs. Tailwater Elevation
Information: Data must be entered into the table in increasing blocks of the same Outflow value for the 3-dimensional table interpolation to work correctly. For every block of same Outflows in column 1, Downstream Stages should be listed in increasing order in column 2, and the corresponding Tailwater Elevations in column 3. Tailwater elevation is required to be a concave function of Outflow. The preferred order of approximation is substitution, piece-wise, two-point line, tangent. Internally, the Stage Flow Tailwater Table is rearranged to use the Stage as the primary index (column) with outflow as the secondary index (column). This rearranged table may be labeled as “Convolved Stage Flow Tailwater Table” in output messaging. Also, because of this rearrangement, it is desirable to repeat stage values for each outflow.
Defined by: User-input
Tailwater Elevation LP Param
Type: Table Slot
Units: Length, Flow, Flow, Flow
Description: Specifies the fixed tailwater base value point and the outflow points used to take the tangent, line and piecewise approximations for tailwater elevation linearization
Information: This table is used for linearization. The best Tailwater Base Value point to choose for tangent approximation would be an outflow equal to the expected value of outflow during the run; for the line approximation, the minimum and maximum values expected during the run; for piecewise approximation, the minimum and maximum values expected during the run plus additional intermediate values to more closely fit the tailwater curve.
Defined by: User-input unless the selected method in the Tailwater Linearization Automation category is not “None”.
Tail Water Reference Elevation
Type: Table Slot
Units: Length
Description: Lowest Reservoir discharge Elevation when there are no backwater effects from a downstream pool (reservoir)
Information: Although this is part of the Stage Flow Lookup Table method (and its corresponding Opt method), this slot does not influence optimization. See Object / Simulation documentation for additional information.
I/O: User-input
Opt Coefficients Table
This method sets up the physical Tailwater Elevation constraints using the same equation and coefficients used in the Coefficients Table tailwater method; see “Coefficients Table” in Objects and Methods for details.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Tailwater Coefficients
Type: Table
Units: multi
Defined by: If the Power Surface Approximation method is selected, then there are additional restrictions on the coefficients that can be specified. With the Power Surface Approximation, having terms for Outflow[t-1], Tailwater BaseVal[t] and Tailwater[t-1] are not allowed.
Pump Power Numerical Approximation
If the Optimization problem uses Pump Power, either directly or indirectly, then this slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Operating Head and Pumped Flow (Numerical 3-D Approximation). The relationship between Operating Head and Pumped Flow will come from the user-input Pump Power Lin Data table. The table will be queried using the points defined in the Pump Power LP Param table. The values in the Pump Power LP Param table will be entirely user-input or may include an automatically calculated value for Operating Head. If the Operating Head is not available at the beginning of the run, then this value will be automatically assigned by RiverWare.
Slots Specific to This Method
Pump Power
Type: Agg Series Slot
Units: Flow
Description: Power required to operate the pumps
Information:
Defined by: Numerical 3-D Approximation in terms of Operating Head and Pumped Flow based on the Pump Power Lin Data table. The Pump Power LP Param table contains a value for Operating head used to index the Operating Head column of the Pump Power Lin Data table. This approximated value, therefore, reduces the Pump Power to a function of Pumped Flow at the given Operating Head. The flow values in the Pump Power LP Param table are then used as approximation points indexing the Pumped Flow column of the Pump Power Lin Data table. The Pump Power Lin Data table should have increasing values of Operating Head and Pumped Flow. Pump Power should be a convex function of Operating Head, but concavity is not strictly enforced; mild non-convex regions are permissible to allow for round-off error, etc. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Pump Power Lin Data
Type: Table Slot
Units: Length vs Flow vs Power
Description: Table defining the relationship between Operating Head, Pumped Flow and power expended (Pump Power).
Information:
Defined by: User-input
Pump Power LP Param
Type: Agg Series Slot
Units: Length, Flow, Flow, Flow
Description: Specifies the Operating Head and the flow points used to take the tangent, line and piecewise approximations for Pump Power Lin Data linearizations.
Information: This slot is the pumping equivalent of the Power LP Param table. The best Operating Head to choose should be close to the expected head during optimized period. Tangent approximation is generally not used, nor helpful as it often results in non-zero power for zero flow. The suggested points for a line approximation are 0 flow and the preferred pumping flow. The suggested points for piecewise linearization are 0 flow, 1 unit preferred pumping flow, 2 units preferred pumping flow ... n units preferred pumping flow, and maximum pumping flow.
Optimization Reserves
This category depends on selecting either Plant Power Coefficient or Plant Efficiency Curve in the Power category. The methods in this category can be used to account for power reserve requirements in the optimization policy. There is no analogous simulation method associated with this category.
None
This is the default, do-nothing method. No new slots will be added, and no new variables or constraints will be added to the optimization problem.
Constraint Based Single Timestep
This method introduces a set of duplicate variables that represent the value of standard variables assuming full deployment of either upward or downward reserves. In the RPL Optimization Goal Set, users can then write parallel constraints using the duplicate reserve variables for any constraint that cannot be violated while deploying reserves. The purpose of the new variables and their parallel constraints is so that the only reserves that are credited to a hydropower project are those that can actually be reasonably deployed. In other words, it will not count reserves that could not be deployed without violating specified constraints. The new method also introduces new variables for upward and downward reserves, which allow the user to write policy on the reserves themselves, for example, project minimum reserve requirements or total system reserve requirements. This method only models reserves from the generating portion of the Pumped Storage Reservoir. It does not model reserves that might be provided by pumping.
One significant assumption is made that the deployment of these reserves are temporary and only meant to cover a single timestep. It is assumed that in the event reserves are deployed in actual operations, adjustments would be made for later time periods, including reestablishing reserves. With this assumption, the consequences of deploying reserves at a reservoir are limited to that reservoir and that timestep; constraints on downstream reservoirs and later timesteps are not considered when calculating the reserves that can be credited at a given timestep.
The deployment variables are constrained similarly to the original variables with two exceptions. First, the mass balance constraints with other reservoirs or intermediate reaches are omitted (within RiverWare). Second, if there are any constraints that can be violated during deployment then these constraints can also be omitted (within the Optimization Goal Set). The deployment variables will typically use the same linear approximations as the original variables. For example, Pool Elevation with Up Reserve will be approximated using the Pool Elevation LP Param table slot.
Note:  This method has no analogous simulation method. The slots introduced by this method can be referenced in the RPL optimization policy to constrain the solution, but they will not, generally, display values after the post-optimization rulebased simulation like the standard variables, such as Outflow or Pool Elevation. The user does have the option of writing customized post-optimization rules to set values in these slots based on user-specified logic or using the OptValue or OptValuePiecewise predefined functions.
Slots Specific to This Method
This method will add the following series slots, all of which will be available as variables for the RPL optimization policy.
Up Reserve
Type: Series Slot
Units: Power
Description: The upward reserves available; the amount the reservoir could increase generation on the given timestep
Information: Introducing this variable in the optimization policy forces a two-point line approximation to be used for both Power and Power with Up Reserve if Independent Linearizations is selected in the Optimization Power category. This may introduce additional approximation error.
Defined by:
Down Reserve
Type: Series Slot
Units: Power
Description: The downward reserves available; the amount the reservoir could decrease generation on the given timestep
Information: Introducing this variable forces a two-point line approximation to be used for both Power and Power with Down Reserve if Independent Linearizations is selected in the Optimization Power category. This may introduce additional approximation error.
Defined by:
Power with Up Reserve
Type: Series Slot
Units: Power
Description: The average Power generated if full upward reserves were deployed
Information: This variable is defined by the Power approximation as a function of Turbine Release with Up Reserve and a combination of other variables. The set of other variables depends on which Power approximation is being applied. The Power approximation that is applied is dependent on the selected method in the Optimization Power category.
Defined by:
Power with Down Reserve
Type: Series Slot
Units: Power
Description: The average Power generated if full downward reserves were deployed
Information: This variable is defined by the Power linear approximation as a function of Turbine Release with Down Reserve and a combination of other variables. The set of other variables depends on which Power approximation is being applied. The Power approximation that is applied is dependent on the selected method in the Optimization Power category.
Defined by:
Turbine Release with Up Reserve
Type: Series Slot
Units: Flow
Description: The Turbine Release at full deployment of upward reserves
Information: This variable is constrained to be less than or equal to Turbine Capacity with Up Reserve.
Defined by:
and
Turbine Change with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount Turbine Release would change to fully deploy all upward reserves
Information: This variable is expected to always be non-negative, and thus the slot configuration lower bound should be set to 0.
Defined by:
Turbine Capacity with Up Reserve
Type: Series Slot
Units: Flow
Description: The maximum Turbine Release possible given the full deployment of upward reserves
Information: This variable is defined by the Turbine Capacity approximation as a function of Operating Head with Up Reserve.
Defined by:
Type: Series Slot
Units: Flow
Description: The Operating Head at full deployment of upward reserves.
Information:
Defined by:
Spill with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of total Spill at full deployment of upward reserves
Information: This could be equal to Spill, or it could be less than Spill if flow is allowed to be shifted from Spill to Turbine Release during deployment. This depends on how the RPL policy is formulated.
Defined by:
Unregulated Spill with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of Unregulated Spill at full deployment of upward reserves
Information: This quantity is defined by the Unregulated Spill linear approximation as a function of Storage with Up Reserve. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Unregulated Spill, then the value of this variable will automatically be set to zero.
Defined by:
Regulated Spill with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of Regulated Spill at full deployment of upward reserves
Information: This could be equal to Regulated Spill, or it could be less than Regulated Spill if flow is allowed to be shifted from Spill to Turbine Release during deployment, or it could be greater than Regulated Spill if the reservoir has a minimum spill requirement as a percentage of total outflow. This depends on how the RPL policy is formulated. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Regulated Spill, then the value of this variable will automatically be set to zero, and the slot should not be referenced in the RPL optimization policy.
Defined by:
and
Regulated Spill Change with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount Regulated Spill would change to fully deploy all upward reserves
Information: Often this variable will be negative (or 0, and thus the slot Upper Bound will often be set to 0); however it could be positive if the reservoir has a minimum spill requirement as a percentage of total outflow. It could be constrained to be 0, directly or indirectly, by RPL policy, or it could be allowed to be greater than or less than zero. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Regulated Spill, then the slot should not be referenced in the RPL optimization policy.
Defined by:
Regulated Spill Capacity with Up Reserve
Type: Series Slot
Units: Flow
Description: The maximum Regulated Spill given full deployment of upward reserves
Information: This variable is defined by the Regulated Spill Capacity approximation as a function of Storage with Up Reserve. This slot will get added regardless of which Spill method is selected. Users will not typically need to do anything with this slot.
Defined by:
Bypass with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of Bypass at full deployment of upward reserves
Information: This could be equal to Bypass, or it could be less than Bypass if flow is allowed to be shifted from Bypass to Turbine Release during deployment, or it could be greater than Bypass if the reservoir has a minimum bypass requirement as a percentage of total outflow. This depends on how the RPL policy is formulated. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Bypass, then the value of this variable will automatically be set to zero, and the slot should not be referenced in the RPL optimization policy.
Defined by:
and
Bypass Change with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount Bypass would change to fully deploy all upward reserves
Information: Often this variable will be negative (or 0, and thus the slot Upper Bound will often be set to 0); however it could be positive if the reservoir has a minimum bypass requirement as a percentage of total outflow. It could be constrained to be 0, directly or indirectly, by RPL policy, or it could be allowed to be greater than or less than zero. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Bypass, then the slot should not be referenced in the RPL optimization policy.
Defined by:
Bypass Capacity with Up Reserve
Type: Series Slot
Units: Flow
Description: The maximum Bypass given full deployment of upward reserves
Information: This variable is defined by the Bypass Capacity approximation as a function of Storage with Up Reserve. This slot will get added regardless of which Spill method is selected. Users will not typically need to do anything with this slot.
Defined by:
Outflow with Up Reserve
Type: Series Slot
Units: Flow
Description: The amount of total Outflow at full deployment of upward reserves
Information:
Defined by:
Storage with Up Reserve
Type: Series Slot
Units: Volume
Description: The end of timestep Storage if full upward reserves were deployed
Information: This variable definition differs from the standard Storage variable only in the Outflow term. The previous Storage and the Net Inflow are the same. Net Inflow represents all gains and losses, including Inflow, Hydrologic Inflow, Precipitation, Evaporation, etc.
Defined by:
Pool Elevation with Up Reserve
Type: Series Slot
Units: Length
Description: The end of timestep Pool Elevation if full upward reserves were deployed
Information: This variable is defined by the Pool Elevation linear approximation as a function of Storage with Up Reserve.
Defined by:
Tailwater Elevation with Up Reserve
Type: Series Slot
Units: Length
Description: The average Tailwater Elevation if full upward reserves were deployed
Information: This variable is defined by the Tailwater Elevation linear approximation as a function of Outflow with Up Reserve and the Tailwater Base Value (if applicable based on the selected Optimization Tailwater method). Tailwater Base Value is unaffected by the Reserves modeling and will be the same for both Tailwater Elevation and Tailwater Elevation with Up Reserves. The Tailwater Elevation linear approximation that is applied is dependent on the selected method in the Optimization Tailwater category.
Defined by:
Temp Tailwater Lookup with Up Reserve
Type: Series Slot
Units: Length
Description: This slot only applies when the Base Value Plus Lookup Table method is selected in the Tailwater category. It represents the lookup value from the Tailwater Table as a function of Outflow with Up Reserve using the Tailwater linear approximation.
Information: This slot will get added regardless of which Tailwater method is selected but will not get used unless the Base Value Plus Lookup method is selected. Users should not need to do anything with this slot.
Defined by:
PSA Head Factor with Up Reserve
Type: Series Slot
Units: Flow
Description: This slot only applies when the Power Surface Approximation method is selected in the Optimization Power category. It represents the component of Operating Head that is dependent on Storage with Up Reserve and Spill with Up Reserve. It is calculated using the same coefficients used for the Standard PSA Head Factor variable.
Information: This slot will get added regardless of which Optimization Power method is selected but will not get used unless the Power Surface Approximation method is selected. Users should not need to do anything with this slot.
Defined by:
Turbine Release with Down Reserve
Type: Series Slot
Units: Flow
Description: The Turbine Release at full deployment of downward reserves
Information:
Defined by:
and
Turbine Change with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount Turbine Release would change to fully deploy all downward reserves
Information: This variable is expected to always be negative or zero, and thus the slot configuration Upper Bound should be set to 0.
Defined by:
Turbine Capacity with Down Reserve
Type: Series Slot
Units: Flow
Description: The maximum Turbine Release possible given the full deployment of downward reserves
Information: This variable is defined by the Turbine Capacity approximation as a function of Operating Head with Down Reserve.
Defined by:
Type: Series Slot
Units: Flow
Description: The Operating Head at full deployment of downward reserves.
Information:
Defined by:
Spill with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of total Spill at full deployment of downward reserves
Information: This could be equal to Spill, or it could be greater than Spill if flow is allowed to be shifted from Turbine Release to Spill during deployment. This depends on how the RPL policy is formulated.
Defined by:
Unregulated Spill with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of Unregulated Spill at full deployment of downward reserves
Information: This quantity is defined by the Unregulated Spill linear approximation as a function of Storage with Down Reserve. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Unregulated Spill, then the value of this variable will automatically be set to zero.
Defined by:
Regulated Spill with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of Regulated Spill at full deployment of downward reserves
Information: This could be equal to Regulated Spill, or it could be greater than Regulated Spill if flow is allowed to be shifted from Turbine Release to Spill during deployment. This depends on how the RPL policy is formulated. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Regulated Spill, then the value of this variable will automatically be set to zero, and the slot should not be referenced in the RPL optimization policy.
Defined by:
and
Regulated Spill Change with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount Regulated Spill would change to fully deploy all downward reserves
Information: This variable will typically by non-negative. It could be constrained to be 0, directly or indirectly, by RPL policy, or it could be allowed to be greater than zero. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Regulated Spill, then the slot should not be referenced in the RPL optimization policy.
Defined by:
Regulated Spill Capacity with Down Reserve
Type: Series Slot
Units: Flow
Description: The maximum Regulated Spill given full deployment of downward reserves
Information: This variable is defined by the Regulated Spill Capacity approximation as a function of Storage with Down Reserve. This slot will get added regardless of which Spill method is selected. Users will not typically need to do anything with this slot
Defined by:
Bypass with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of Bypass at full deployment of downward reserves
Information: This could be equal to Bypass, or it could be greater than Bypass if flow is allowed to be shifted from Turbine Release to Bypass during deployment. This depends on how the RPL policy is formulated. his slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Bypass, then the value of this variable will automatically be set to zero, and the slot should not be referenced in the RPL optimization policy.
Defined by:
and
Bypass Change with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount Bypass would change to fully deploy all downward reserves
Information: This variable will typically be non-negative. It could be constrained to be 0, directly or indirectly, by RPL policy, or it could be allowed to be greater than zero. This slot will get added regardless of which Spill method is selected. If the selected Spill method does not include Bypass, then the slot should not be referenced in the RPL optimization policy.
Defined by:
Bypass Capacity with Down Reserve
Type: Series Slot
Units: Flow
Description: The maximum Bypass given full deployment of downward reserves
Information: This variable is defined by the Bypass Capacity approximation as a function of Storage with Down Reserve. This slot will get added regardless of which Spill method is selected. Users will not typically need to do anything with this slot
Defined by:
Outflow with Down Reserve
Type: Series Slot
Units: Flow
Description: The amount of total Outflow at full deployment of downward reserves
Information:
Defined by:
Storage with Down Reserve
Type: Series Slot
Units: Volume
Description: The end of timestep Storage if full downward reserves were deployed
Information: This variable definition differs from the standard Storage variable only in the Outflow term. The previous Storage and the Net Inflow are the same. Net Inflow represents all gains and losses, including Inflow, Hydrologic Inflow, Precipitation, Evaporation, etc.
Defined by:
Pool Elevation with Down Reserve
Type: Series Slot
Units: Length
Description: The end of timestep Pool Elevation if full downward reserves were deployed
Information: This variable is defined by the Pool Elevation linear approximation as a function of Storage with Down Reserve.
Defined by:
Tailwater Elevation with Down Reserve
Type: Series Slot
Units: Length
Description: The average Tailwater Elevation if full downward reserves were deployed
Information: This variable is defined by the Tailwater Elevation linear approximation as a function of Outflow with Down Reserve and the Tailwater Base Value (if applicable based on the selected Optimization Tailwater method). Tailwater Base Value is unaffected by the Reserves modeling and will be the same for both Tailwater Elevation and Tailwater Elevation with Up Reserves. The Tailwater Elevation linear approximation that is applied is dependent on the selected method in the Optimization Tailwater category.
Defined by:
Temp Tailwater Lookup with Down Reserve
Type: Series Slot
Units: Length
Description: This slot only applies when the Base Value Plus Lookup Table method is selected in the Tailwater category. It represents the lookup value from the Tailwater Table as a function of Outflow with Down Reserve using the Tailwater linear approximation.
Information: This slot will get added regardless of which Tailwater method is selected but will not get used unless the Base Value Plus Lookup method is selected. Users should not need to do anything with this slot.
Defined by:
PSA Head Factor with Down Reserve
Type: Series Slot
Units: Flow
Description: This slot only applies when the Power Surface Approximation method is selected in the Optimization Power category. It represents the component of Operating Head that is dependent on Storage with Down Reserve and Spill with Up Reserve. It is calculated using the same coefficients used for the Standard PSA Head Factor variable.
Information: This slot will get added regardless of which Optimization Power method is selected but will not get used unless the Power Surface Approximation method is selected. Users should not need to do anything with this slot.
Defined by:
Example 5.2  Sample RPL Goal Set Implementation:
Within a RPL Goal set, any constraint that should not be violated when deploying reserves should include a constraint on the standard variable(s) as well as a duplicated constraint on the corresponding reserves variable(s). For example, assume that a reservoir has a maximum pool elevation that cannot be violated when reserves are deployed, and that maximum pool elevation is stored in a series slot on a data object called Res_Data.PE_Max. The RPL goal might look like:
REPEATED MAXIMIN
FOR(DATETIME t IN @”Start Timestep” TO @”Finish Timestep”) DO
ADD CONSTRAINT Res.Pool Elevation[t] <= Res_Data.PE_Max[t]
ADD CONSTRAINT Res.Pool Elevation with Down Reserve[t] <= Res_Data.PE_Max[t]
END FOR
END REPEATED MAXIMIN
The reservoir might also have a target elevation constraint that is a lower priority and can be violated by the deployment of reserves. In this case, the target goal would only include a constraint on the Pool Elevation slot but not a constraint on the Pool Elevation with Down Reserve slot.
Referencing any of the reserve slots in a RPL policy statement will typically draw a large number of additional variables and constraints into the optimization problem. For performance reasons, the user will probably not want these additional constraints to be added unless they are necessary. Assume, for example, that it is known prior to a run that a particular reservoir is not available to provide reserves during select hours. This may be indicated by setting an input value of 0 MW for those hours in a data object series slot called Res_Data.Down_Reserve_Max (similarly for Up Reserve). It would not be necessary to model the reserve versions of constraints for those time steps because it is already known that reserves will be zero. In this case the goal with the Pool Elevation constraints shown previously might be written as:
REPEATED MAXIMIN
FOR(DATETIME t IN @”Start Timestep” TO @”Finish Timestep”) DO
ADD CONSTRAINT Res.Pool Elevation[t] <= Res_Data.PE_Max[t]
IF(Res_Data.Down_Reserve_Max[t] != 0 MW)
ADD CONSTRAINT Res.Pool Elevation with Down Reserve[t] <= Res_Data.PE_Max[t]
END IF
END FOR
END REPEATED MAXIMIN
In this way, the constraint on Pool Elevation with Down Reserve would only be added when the reservoir is available to provide reserves (the max reserves are not constrained to zero).
Users could then write policy on the reserves to be carried at individual projects. Assume that the data object series slots Res_Data.Up_Reserve_Min and Res_Data.Up_Reserve_Max store the minimum upward reserves that the reservoir must carry and the maximum upward reserves the project can be credited respectively. A goal for the reservoir might be:
REPEATED MAXIMIN
FOR(DATETIME t IN @”Start Timestep” TO @”Finish Timestep”) DO
IF(Res_Data.Up_Reserve_Max[t] != 0 MW)
ADD CONSTRAINT Res.Up Reserve[t] >= Res_Data.Up_Reserve_Min[t]
ADD CONSTRAINT Res.Up Reserve[t] <= Res_Data.Up_Reserve_Max[t]
END IF
END FOR
END REPEATED MAXIMIN
These two constraints may not necessarily be included in the same goal.
Note:  The first constraint based on the minimum required reserves will constrain the physical operations of the reservoir in order to meet the required reserve obligation. The second constraint, based on the maximum credited reserves will not directly constraint the physical operations, rather it will only limit the amount of reserves that can be counted. In other words, the solution may operate the reservoir such that, according to physical limits and other specified constraints, the reservoir may have a larger amount of reserves available, but this constraint allows the user to say that only a limited amount will be counted.
Users may then write goals which sum reserves across multiple projects to meet a system reserve requirement.
REPEATED MAXIMIN
FOR(DATETIME t IN @”Start Timestep” TO @”Finish Timestep”) DO
ADD CONSTRAINT (FOR(OBJECT res IN ProjectsAvailableForUpReserve(t)) SUM res.Up Reserve[t]
END FOR)
>= System_Data.Up_Reserve_Min[t]
END FOR
END REPEATED MAXIMIN
In this goal, ProjectsAvailableForUpReserve represents a user-defined function that returns a list of reservoirs that can carry reserves, again to prevent adding numerous constraints on the reserves version of variables unnecessarily. The details of this function would be model-specific.
Startup
This category depends on selecting the Unit Power Table method (see “Unit Power Table”) and describes how the monetary cost associated with starting up or shutting down a unit (turbine) will be modeled. There are two methods in this category, one which does not model these costs (effectively assigning them a value of 0) and one which uses a table describing the combined costs for starting up and shutting down a unit.
None
This is the default, do-nothing method.
Unit Lumped Cost Method
For each unit, this method lumps the cost of startup and shutdown into one value. See “Unit Lumped Cost Method” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of additional constraints.
This category depends on the Unit Power Table method (see “Unit Power Table”) and contains methods for modeling additional head loss that occurs. This head loss may come from the configuration of the penstocks for bringing water to the turbines.
None
In this method, there is no additional head loss to be used in the power calculation. In terms of penstock head loss, this method should be selected if the penstocks for the units are independent and the penstock losses are typically incorporated in the power data. Thus the power data is specified in terms of operating head.
In this method, there is additional head loss that results because units share a common penstock. The operating head losses in the penstock depend on the total turbine release and are shared for all units. The net head is calculated by subtracting penstock losses from the operating head. The unit data and power must be specified in terms of unit Net Heads instead of Operating Head. See “Shared Penstock Head Loss method” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of additional constraints.
Cavitation
This category depends on selecting the Unit Power Table method (see “Unit Power Table”) and contains methods for dealing with the problem of cavitation on turbines. Cavitation is the sudden formation and collapse of low-pressure bubbles in liquids by means of mechanical forces and this process can cause damage to turbines under certain operating conditions.
None
This is the default, do-nothing method.
Unit Head and Tailwater Based Regions
This method allows the user to specify the regions of operation in which cavitation does NOT occurs, so that these regions can be avoided. These regions can be dependent on both operating head and tailwater. See “Unit Head and Tailwater Based Regions” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of added constraints.
Avoidance Zones
This category depends on selecting the Unit Power Table method (see “Unit Power Table”) and contains methods for modeling the existence of undesirable regions of operation for turbines. There are two methods in this category, one which does not model avoidance zones at all, and one which
None
This the default, do-nothing method; avoidance zones are not considered.
This method allows the user to specify a table that defines the conditions in which the turbines should not be operated. See “Unit Head Based Avoidance Zones” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of added constraints.
Frequency Regulation
This category depends on selecting the Unit Power Table method (see “Unit Power Table”), although in the future it might be enabled for other power methods. The frequency regulation methods model the provision of the frequency regulation ancillary service, that is, how the reservoir can be made available to flexibly follow a load demand within a specified range during a certain period in order to affect the frequency of the generated power.
None
This is the default, do-nothing method; no regulation is modeled.
Unit Frequency Regulation
Note:  This method is not yet implemented.
When frequency regulation is scheduled, it allows the unit to follow the real time load. Exactly what will happen in real time is unknowable. This results in two sets of values at scheduling time, nominally scheduled power and turbine release. It is uncertain if the real time operators will actually use the service. At present, we distinguish between the nominal scheduled power (and turbine release) that the regulation is allowed to depart from and the expected power generation (and turbine release) that will take place when regulation is allowed. Both are important. The scheduled power sets the baseline for regulation and should be communicated to the power dispatchers. The expected power and release are more useful for coordinating a plant with the rest of the system. See “Unit Frequency Regulation” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of added constraints.
Modeling a Pumped Storage Reservoir
Steps to follow in setting up a pumped power reservoir for optimization
1. Set up a running simulation model, using methods that are compatible with optimization for Power, Tailwater, Spill, etc.
2. Chose an Optimization Power method.
3. Choose an Optimization Head Computation Method. In Optimization, None must be chosen.
4. Select the Optimization Spill method corresponding to the method selected in the Spill category.
5. Fill in the LP Param tables related to Power, Turbine Capacity and Best Turbine Flow (if plant power is used). Alternatively, the Power Linearization Automation Method can also be chosen to automatically determine the values for the LP Param tables.
6. Select the Optimization Tailwater method corresponding to the method selected in Tailwater category. If Opt Base Value Plus Lookup Table or Opt Stage Flow Lookup Table is selected, fill in the Tailwater Elevation LP Param table. Alternatively, select a Tailwater Linearization Automation method (Range Input Automation is currently available).
7. If future value is needed, select a method in the Future Value category, followed by the Optimization Future Value category, and if desired, Cumul Stor Val Linearization Automation.
8. Selection of the remaining methods and linearizations can be done in any order. Pool elevation linearizations, Pool Elevation Linearization Automation, Evaporation and Precipitation, Optimize Evaporation Computation, Evaporation Linearization Automations, Bank Storage, Hydrologic Inflow, Energy In Storage, and Diversion from Reservoir. The appropriate data must be entered for each method.
Reach
In RPL Optimization, a constraint is always created to ensure mass balance. This constraint takes the following form with actual values or expressions comprising the variables shown, being dependent on the configuration of the reach object:
(5.28)    0 = Inflows - Outflow + Return Flow - Diversion
Inflows may include Inflow, Local Inflow, time lagging effects, and GainLoss consideration.
Return Flow and Diversion may be excluded if model configuration does not require the terms’ usage.
General Slots
General slots are always present on the object, regardless of selected methods. The following slots are provided on the Reach when the Optimization Controller is selected. They are listed alphabetically. See “General Slots” in Objects and Methods for additional information on general simulation slots, including these slots.
Inflow
Type: Agg Series
Units: Flow
Description: flow at entrance to the object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Outflow
Type: Agg Series
Units: Flow
Description: flow at exit from the object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
User Methods in Optimization
The following categories and methods are available for use in the Reach object in Optimization.
Diversion from Reach
This category is dependent on selection of one of the following methods in the Routing category: No Routing, Variable Time Lag, Impulse Response, Muskingum, Muskingum Cunge, Muskingum Cunge Improved, Kinematic, Kinematic Improved, or MacCormack.
Note:  “No Routing” is the only one of these methods supported by RPL Optimization.
Of the available methods, “None” and “Available Flow Based Diversion” are supported; selection of any other method will result in an error during run initialization. See “Diversion from Reach” in Objects and Methods for additional information.
None
This method is the default for this category and should be selected if no diversion is desired.
Available Flow Based Diversion
In RPL Optimization, this method adds a constraint to the optimization problem. The constraint simply specifies that the value for the Available For Diversion slot is the Upper Bound on Available For Diversion (on the slot configuration) or the Inflow minus any Minimum Diversion Bypass.
Slots Specific to This Method
Available For Diversion
Type: Agg Series Slot
Units: Flow
Description: the divertable flow in the reach
Information:
Defined by: a user-input constant or a function of inflow, depending on model configuration. If a maximum value has been assigned to the Available For Diversion slot, then the Available For Diversion slot is set to that maximum value. Otherwise, if the Min Diversion Bypass category specifies a method other than “None”, the slot is set equal to Inflow - Minimum Diversion Bypass. Otherwise, if a minimum value has been assigned to the Outflow slot, the Available For Diversion slot is set to Inflow - that minimum value. Otherwise, the Available For Diversion slot is set to Inflow.
Gain Loss
Of the available methods, “None” and “Constant Gain Loss” are supported; selection of any other method could result in an error during begin run. See “Gain Loss” in Objects and Methods for additional information.
None
This method is the default for this category and should be used if gains and losses are not required in the model.
Constant Gain Loss
This method allows the user to specify constant-value parameters for GainLoss. As such, the parameters are used directly in the RPL Optimization problem. No special consideration of slot values is necessary in RPL Optimization. See “Constant Gain Loss” in Objects and Methods for additional information.
In defining the Inflows expression described at the beginning of this section, the following formula applies:
Inflows = (Preliminary Inflows * GainLoss Coeff) + GainLoss
Preliminary Inflows may equal Inflow, Inflow + Local Inflow, or appropriate time lagged inflow. (See Routing “Routing” for additional detail on the lagged inflow.)
Local Inflow and Solution Direction
The reach object considers Local Inflow in its mass balance calculation if specified. In RPL Optimization Local Inflow is included as one of the Inflows if specified. See “Local Inflow and Solution Direction” in Objects and Methods for additional information.
Min Diversion Bypass
Under certain configurations, the Available Flow Based Diversion method in the Diversion From Reach category may look for the Minimum Diversion Bypass value to calculate Available For Diversion flow. (See Diversion From Reach, above.) If it is desirable that a Minimum Diversion Bypass value be specified, the Input Min Bypass method should be selected. See “Min Diversion Bypass” in Objects and Methods for additional information.
If a Min Diversion Bypass method is selected and a value is specified, the Available For Diversion constraint will include the Minimum Diversion Bypass. See “Available Flow Based Diversion” for additional information.
Routing
Of the available methods, only No Routing, Time Lag and Impulse Response are supported in RPL optimization; selection of any other method will result in an error during begin run. See “Routing” in Objects and Methods for additional information.
No Routing
This method provides no routing functionality, but adds consideration of Return Flow to the mass balance.
Slots Specific to This Method
Return Flow
Type: Multi Slot
Units: flow
Description: Return flow into the reach
Information: Enters at the bottom of the reach and so is not lagged by the reach nor is it subject to gains or losses. Return Flow must be defined, either by input, a link or a constraint. It will not default to 0 if undefined.
Defined by: Explicit Optimization variable in the mass balance constraint:
where Inflow Expression depends on model configuration and may include Inflow, Local Inflow, and GainLoss consideration. Inflow may be linked to a slot on another object.
Time Lag
In RPL Optimization, Time Lag routing results in a modified mass balance constraint that includes the lagging effect. Selection of this method excludes usage of Return Flow and Diversion values in the optimization problem. Routing occurs prior to any gain and loss consideration.
where:
– lagINT refers to the timestep on or after the point in time equal to the current timestep minus LagTime.
– lagINT - 1 refers to the timestep prior to LagINT.
– flowFraction1 equals the fraction of a timestep used to weigh the inflow associated with lagINT - 1; flowFraction1 equals the fractional remainder of the LagTime / timestep (e.g. 0.7 if LagTime = 1.7 timesteps and 0 if LagTime is a multiple of the timestep).
– flowFraction2 equals the fraction of a timestep used to weigh the inflow associated with lagINT; flowFraction2 equals 1 - flowFraction1. (e.g. 0.3, if LagTime = 1.7 timesteps and 1 if LagTime is a multiple of the timestep).
Slots Specific to This Method
LagTime
Type: Table Slot
Units: Time
Description: lag time or travel time of flow through the reach
Information: a single value
Defined by: user-input
Impulse Response
Impulse Response routing results in a modified mass balance constraint where the reach Outflow is the weighted sum of the current and previous timesteps’ Inflows. Selection of this method excludes usage of Return Flow and Diversion values in the optimization problem. Any gains or losses are added to or subtracted from the routed flow.
Slots Specific to This Method
Lag Coeff
Type: Table Slot
Units: No Units
Description: impulse response coefficients
Information: There must be the same number of values in the Lag Coeff table as the value given in Num of Coeff
Defined by: user-input
Num. of Coeff
Type: Scalar Slot
Units: No Units
Description: number of impulse response coefficients
Information: There must be the same number of values in the Lag Coeff table as the value given in Num of Coeff
Defined by: user-input
Numerical Approximation Approaches
No Reach slots require Numerical Approximation.
Modeling a Reach
To use a Reach object in optimization, set up a running simulation model using methods that are compatible with Optimization for the following categories: Routing, Local Inflow and Solution Direction, Gain Loss, Min Diversion Bypass and Diversion from Reach. Input the required data for each method.
Slope Power Reservoir
The Slope Power Reservoir object is similar to the Level Power Reservoir but with added functionality to model the wedge storage or backwater storage effects of a sloped water surface. See “General Slots” in Objects and Methods for additional information.
General Slots
General slots are always present on the object, regardless of selected methods. The following slots are provided on the reservoir when the optimization controller is selected.
Backwater Elevation
Type: Agg Series
Units: Length
Description: Elevation of the reservoir at the top of the dam
Canal Flow
Type: Agg Series
Units: Flow
Description: Flow into (out of) the reservoir from (to) a canal
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Diversion
Type: Series Slot
Units: Flow
Description: Flow from the reservoir to a diverting object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Energy
Type: Agg Series Slot
Units: Energy
Description: Product of the power generated by flow through the turbines and the length of the timestep.
Information:
Defined by: Replaced by Power * Timestep Length
Flow FROM Pumped Storage
Type: Agg Series Slot
Units: Flow
Description: Flow into the reservoir from a pumped storage reservoir
Information:
Defined by: Explicit Optimization variable in the mass balance constraint. This slot should be linked to Outflow on a Pumped Storage object. The Pumped Storage object constrains its Outflow.
Flow TO Pumped Storage
Type: Agg Series Slot
Units: Flow
Description: Flow out of the reservoir into a pumped storage reservoir
Information:
Defined by: Explicit Optimization variable in the mass balance constraint. This slot should be linked to Pumped Flow on a Pumped Storage object.
Inflow
Type: MultiSlot
Units: Flow
Description: Inflow into the reservoir from upstream
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Inflow 2
Type: Agg Series
Units: Flow
Description: An additional inflow into the reservoir
Type: Agg Series Slot
Units: Length
Description: Elevation difference between the average Pool Elevation and the average Tailwater Elevation during a timestep
Information:
Defined by: Replacement by (Pool Elevation(t) + Pool Elevation(t-1)) / 2 - Tailwater Elevation
Outflow
Type: Agg Series Slot
Units: Flow
Description: Outflow from the reservoir
Information:
Defined by: Explicit Optimization variable as Outflow = Turbine Release + Spill
Pool Elevation
Type: Agg Series Slot
Units: Length
Description: Elevation of the water surface of the Reservoir at the dam
Information: When Pool Elevation is a part of the optimization problem, as it is in all conceivable
Power
Type: Agg Series Slot
Units: Power
Description: Power generated by flow through the turbines
Information:
Defined by: Numerical 3-D Approximation in terms of Operating Head and Turbine Release. Approximation is based on the Plant Power Table. The Power LP Param table contains a value for Operating Head used to index the Operating Head column of the Plant Power Table. This approximated value, therefore, reduces the Power to a function of Turbine Release at the given Operating Head. The flow values in the Power LP Param table are then used as approximation points indexing the Turbine Release column of the Plant Power Table. The Plant Power Table should have increasing values of Operating Head and Turbine Release. Power should be a concave function of Operating Head, but concavity is not strictly enforced; mild non-concave regions are permissible to allow for round-off error, etc. The preferred order of approximation is substitution, piece-wise, two-point line, tangent.
Return Flow
Type: MultiSlot
Units: Flow
Description: Flow returning from a diversion object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint (see Storage)
Spill
Type: Agg Series Slot
Units: Flow
Description: Sum of the Bypass, Regulated Spill and Unregulated Spill
Information:
Defined by: Explicit Optimization variable as Spill = Bypass + Regulated Spill + Unregulated Spill
Storage
Type: Agg Series Slot
Units: Volume
Description: Volume of water stored in the reservoir
Information:
Defined by: Explicit Optimization variable as Storage = Storage(t-1) + Precipitation Volume - Evaporation - Change in Bank Storage + timestep * ( Inflow + Inflow2 Canal Flow + Flow TO Pumped Storage + Hydrologic Inflow Net + Return Flow - (Outflow + Diversion + Flow FROM Pumped Storage))
Tailwater Base Value
Type: Agg Series Slot
Units: Length
Description: Elevation of tailwater or base elevation used to compute elevation of tailwater
Information:
Defined by: Explicit Optimization variable should be input or linked. See “Optimization Tailwater” in Optimization for details about related constraints and other objects to which the slot is linked.
Tailwater Elevation
Type: Agg Series Slot
Units: Length
Description: Water surface elevation on the downstream side of the dam
Information:
Defined by: Various approaches dependent on the method selected in the Optimization Tailwater category.
Turbine Capacity LP Param
Type: Table
Units: Length, Length, Length
Description: LP Param table for turbine capacity
Information: See power methods for additional information
Turbine Release
Type: Agg Series Slot
Units: Flow
Description: Flow through the turbines of a power reservoir
Information:
Defined by: Explicit Optimization variable as Turbine Release <= Power Plant Cap Fraction * Turbine Capacity
User Methods in Optimization
The following categories and methods are available for use in the Slope Power Reservoir object in Optimization. Because of dependency relationships, you may not be able to see them in your model until you change other methods. In the discussion below, you will see the other methods that need to be selected to enable a given method to be used in your model. When building a model, you will wish to review this to ensure that required dependencies are satisfied so that the desired methods are available for use.
Bank Storage
Not all methods are functional in RPL optimization. Of the available methods, “None” and “CRSS Bank Storage” are supported.
None
See “None” in Objects and Methods for additional information.
Input Bank Storage
Diversion from Reservoir
Not all methods in this category are supported in RPL optimization. Of the available methods, “None” and “Available Flow Based Diversion” are supported; selection of any other method will result in an error during begin run.
None
Available Flow Based Diversion
See “Diversion Power Efficiency Curve” for additional information.
Energy in Storage
In Optimization, currently “None” and “EIS Table Lookup” are supported.
None
No Energy in storage is considered.
EIS Table Lookup
With this method selected, Energy in Storage is considered as a function of Pool Elevation. See “EIS Table Lookup” in Objects and Methods for additional information on the simulation method. If the optimization problem uses Energy In Storage, either directly or indirectly, then this slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Pool Elevation (Numerical 2-D Approximation). The relationship between Pool Elevation and Energy In Storage will come from the user-input Energy In Storage Table. The table will be queried either using user-input points defined in the Energy In Storage LP Param table or using automatically calculated points, depending on method selection in the Pool Elevation Linearization Automation category. If the selected method in the Pool Elevation Linearization Automation is “None”, then the user-input Energy In Storage LP Param table values are used. For other Pool Elevation Linearization Automation methods (Initial Target Input, Min Difference or Range Input, Min Difference) the same points automatically developed for the Pool Elevation linearization will be used.
Slots Specific to This Method
Energy In Storage
Type: Agg Series Slot
Units: Energy vs. Power
Description: Energy in Storage in the reservoir
Information:
Defined by: Numerical 2-D Approximation in terms of Pool Elevation, based upon the Energy In Storage Table. The Energy In Storage LP Param table values are used as approximation points indexing the Energy In Storage Table. The Energy In Storage Table should have increasing values of Pool Elevation and Energy In Storage. Energy In Storage is required to be a convex function of Pool Elevation. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Energy in Storage LP Param
Type: Table Slot
Units: Length
Description: Specifies the Pool Elevation points used to take the tangent, line and piecewise approximations for Energy In Storage linearization.
Information: This table is used for linearization unless the Pool Elevation Linearization Automation category has a method selected other than “None”.
Defined by: User-input
Energy in Storage Table
Type: Table Slot
Units: Length vs. Energy
Description: Table defining the relationship between Energy In Storage and Pool Elevation
Information:
Defined by: User-input
Figure 5.18  Energy in storage pool elevation relationship. Not drawn to scale.
Slope Storage
This category is used to specify how the wedge is to be modeled. See “Slope Storage” in Objects and Methods for additional information.
Slope Storage Coefficients
This category is used to specify whether to use Weighting Coefficients or Impulse Response coefficients to model the wedge. Both methods are supported in RPL optimization. See “Slope Storage Coefficients” in Objects and Methods for additional information.
Optimization Backwater
Lambda Method
This is the default method and is the only one supported in RPL optimization. The documentation is under development
Independent Linearizations
This method is not supported in RPL optimization
Optimization Evaporation
This category can be used to model evaporation and precipitation.
None
The Optimization Evaporation method “None” is the default method for this category. It does no calculations and requires that “None” be selected for the Evaporation and Precipitation category.
Opt Input Evaporation
This method is analogous to the Input Evaporation method in simulation and requires the Input Evaporation method to be selected for the Evaporation and Precipitation category. Evaporation Rate and Precipitation Rate are entered as a time series. Evaporation is calculated as a product of Evaporation Rate, Average Surface Area over the timestep and Timestep length. Similarly Precipitation Volume is calculated as the product of Precipitation Rate, Average Surface Area and Timestep length.
Evaporation and Precipitation are calculated based on a static Volume-Surface Area relationship. In reality the Volume-Surface Area relationship may not be static for a slope storage reservoir, so results from the Opt Input Evaporation method should be treated with caution when used on a slope power reservoir object.
Caution:  The linearization of the Surface Area variable can result in a small approximation error in optimization for Evaporation and Precipitation Volume. This means there can be a small difference between the mass balances in the optimization solution and the post-optimization rulebased simulation when using this method. It is important to use care when setting the approximation points for Surface Area in order to reduce this approximation error. Refer to the information on the Surface Area LP Param slot below. Also caution should be used if applying this method at a 1 Month timestep. All rates in the optimization mass balance are converted to monthly volumes based on a 30-day month, regardless of the month. This will also produce a difference between the mass balances in the optimization solution and the post-optimization rulebased simulation for a 1 Month timestep.
Slots Specific to This Method
Elevation Area Table
Type: Table Slot
Units: Length vs. Area
Description: Represents the Elevation-Surface Area relationship
Information: This table must be input. It is used to derive the Volume Area Table.
Defined by: User-input
Evaporation
Type: Series Slot
Units: Volume
Description: The volume of water lost to evaporation over the timestep
Information: If this slot contains user input, it is added directly to the mass balance constraint, otherwise it is defined by the expression below.
Defined by: Either user-input or the following constraint:
Evaporation Rate
Type: Series Slot
Units: Velocity
Description: The rate, in length per time, at which water is lost to evaporation at each timestep
Information: This slot can be set as user input. If it is not set as an input, and if Evaporation is not an input, this slot defaults to zero. If Evaporation is an input, this slot is not used.
Defined by: User-input or defaults to zero
Precipitation Rate
Type: Series Slot
Units: Velocity
Description: The rate, in length per time, at which water is gained from precipitation at each timestep
Information: This slot can be set as user input. If it is not set as an input, it defaults to zero.
Defined by: User-input or defaults to zero
Precipitation Volume
Type: Series Slot
Units: Volume
Description: The volume of water gained from precipitation over the timestep
Information: The Input Evaporation method will not allow this slot to be set as an input.
Defined by: Explicit constraint:
Surface Area
Type: Series Slot
Units: Area
Description: The area of the water surface at the end of the timestep
Information: This slot is numerically approximated as a function of Storage (Numerical 2-D Approximation). The relationship between Pool Elevation and Storage comes from the automatically generated Volume Area Table. The table is queried using the user-input points defined in the Surface Area LP Param table.
Defined by: Numerical 2-D Approximation in terms of Storage, based upon the Volume Area Table. The Surface Area LP Param table values are used as approximation points indexing the Volume Area Table. The preferred order of approximation is substitution, piecewise, two-point line, tangent. Most often the two-point line (secant) approximation will be used.
Surface Area LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points used to take the tangent, line and piecewise approximations for Surface Area linearization
Information: The best Storage point to choose for tangent approximation would be the expected storage during the run; for line approximation, the expected maximum and minimum Storage; for piecewise approximation, use points that cover the full range of expected Storage during the run with intermediate points such that a piecewise linear curve reasonably approximates the actual curve.In most cases, the line (secant) approximation will be used. It is important to set these points carefully to minimize approximation error.
Defined by: User-input
Figure 5.19  Surface area vs. storage relationship with two alternative line approximations. Not drawn to scale.
Figure 5.19 represents two alternative selections of points for the line approximation in the Surface Area LP Param table. The linear approximation represented by the dashed line corresponds to the selection of points near the extremes of the Volume Area table. This approximation will tend to result in an under-estimation of Surface Area, and thus an under-estimation of Evaporation and Precipitation Volume. Evaporation losses in the post-optimization rulebased simulation would be greater than the losses approximated in the optimization solution. The linear approximation represented by the solid line corresponds to the selection of points closer together in the Volume Area Table, and is more similar to the Tangent approximation. This approximation would tend to result in an over estimation of Surface Area, and the losses due to Evaporation in the post-optimization rulebased simulation would be less than the approximation in the optimization solution.
Volume Area Table
Type: Table Slot
Units: Volume vs. Area
Description: Represents the Storage Volume-Surface Area relationship
Information: This table is read-only and is automatically generated at the start of the run from the Elevation Area Table and the Elevation Volume table. The method starts by copying the Elevation Area Table and then replaces the Pool Elevation Values with the corresponding Storage values. The Storage values are linearly interpolated based on the Elevation Volume Table
Defined by: Automatically generated
Future Value
This category and its methods are not dependent on other method selections.
None
See “None” in Objects and Methods for additional information.
Cumulative Storage Value Table
In RPL-Optimization, the Cumulative Storage Value is Numerically Approximated as described below.
Slots Specific to This Method
Cumulative Storage Value
Type: Agg Series Slot
Units: \$
Description: Represents the future energy value of the current storage
Information:
Defined by: 2-D approximation in terms of Anticipated Storage, based upon the Cumul Stor Val Table. The Cumul Stor Val LP Param table values (Storage) are used as approximation points indexing the Cumul Stor Val Table. The Cumul Stor Val Table should have increasing values of Storage and Cumulative Value. Cumulative Storage Value is required to be a concave function of Anticipated Storage. The preferred order of approximation is substitution, piece-wise, tangent, two-point line. The Cumul Stor Val Linearization Automation category’s Marginal Value to Table and Lin method can automate creation of the Cumul Stor Val LP Param table and the Cumul Stor Val Table.
Anticipated Storage
Type: Agg Series Slot
Units: Volume
Description: The combination of the actual storage plus water that would be expected to enter the reservoir after the Current Timestep but has not yet, due to lagging.
Information:
Defined by:
Cumul Stor Val Table
Type: Table Slot
Units: Volume vs. Value
Description: The estimated total economic value of water stored in the reservoir for discrete storage values.
Information:
Defined by: User-input or by automated procedure if Cumul Stor Val Linearization Automation category has selected the Marginal Value to Table and Lin method.
Marginal Storage Value Table
Type: Table Slot
Units: Storage vs. \$ Value
Description: Anticipated Storage versus Cumulative Storage Value per unit energy
Information: This table should be increasing in storage, and logically decreasing in marginal value
Defined by: Required input
Spill Cost
Type: Agg Series Slot
Units: \$
Description:
Information:
Defined by:
Optimization Future Value
This category allows the optimization to provide slots relating to the future value of water. Its appearance is dependent on selecting the Cumulative Storage Value Table method for the Future Value category.
None
If this method is selected, the future value slots will not be visible, and no linearization will be attempted.
Opt Cumulative Storage Value Table
If this method is selected, the following slots will be visible, and linearization will be allowed.
Slots Specific to This Method
Cumul Stor Val LP Param
Type: Table Slot
Units: Volume, Volume, Volume
Description: Specifies the storage points used to take the tangent, line and piecewise approximations for Cumul Stor Val Table linearization
Information:
Defined by: User-input or by automated procedure if Cumul Stor Val Linearization Automation category has selected the Marginal Value to Table and Lin method.
Hydrologic Inflow
If any method in this category is selected, hydrologic inflow is included in the reservoir mass balance. Optimization assumes hydrologic inflow to be known (data) and it is not solved for by the reservoir regardless of the method selected. See “Hydrologic Inflow” in Objects and Methods for additional information.
Optimization Spill
The Optimization Spill methods determine how spill is calculated for the reservoir and generates physical constraints that correspond to the selected methods.
This category is dependent on selection of the Independent Linearizations method for the Optimization Power category. However, the method selected in the Optimization Spill category must match with the corresponding non-optimization method in the Spill category.
Spill is an Optimization decision variable. The following constraint is always generated for a reservoir:
(5.29)    Outflow = Turbine release (or Release) + Spill
The spill methods generate values applicable to an additional constraint:
(5.30)    Spill = Regulated Spill + Unregulated Spill + Bypass,
where some of these terms may be omitted if they do not apply to the selected spill method.
Depending on the method selected, some of the following slots will be added. Other slots will be used from the non-optimization method selected. See “Spill” in Objects and Methods for details on non-optimization Spill methods.
As applicable, the following constraints are also added:
(5.31)    Bypass <= Bypass Capacity
(5.32)    Regulated Spill <= Regulated Spill Capacity
(5.33)    Unregulated Spill = Unregulated Spill Capacity
Related Slots
Bypass Capacity
Type: Series Slot
Units: Flow
Description: Bypass capacity
Information:
Defined by: Numerical 2-D Approximation in terms of storage, based upon the Bypass Capacity Table.
Bypass Capacity Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding maximum bypass spill values
Information:
Defined by: Internally developed based on Bypass Table and Elevation Volume Table relationships. For each pool elevation in the Bypass Table, the Bypass Capacity Table has a row relating Storage to Bypass Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Regulated Spill Capacity
Type: Series Slot
Units: Flow
Description: Regulated spill capacity
Information:
Defined by: Numerical 2-D Approximation in terms of storage, based upon the Regulated Spill Capacity Table.
Regulated Spill Capacity Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding maximum regulated spill values
Information:
Defined by: Internally developed based on Regulated Spill Table and Elevation Volume Table relationships. For each pool elevation in the Regulated Spill Table, the Regulated Spill Capacity Table has a row relating Storage to Regulated Spill Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Regulated Spill or Bypass LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points use to take the tangent, line and piecewise approximations for Regulated Spill Capacity linearization and Bypass Spill Capacity linearization.
Information:
Defined by: User-input
Unregulated Spill Linearization Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding unregulated spill values
Information:
Defined by: Internally developed based on Unregulated Spill Table and Elevation Volume Table relationships. For each pool elevation in the Unregulated Spill Table, the Unregulated Spill Capacity Table has a row relating Storage to Unregulated Spill Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Unregulated Spill LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points use to take the tangent, line and piecewise approximations for Unregulated Spill Linearization Table linearization
Information:
Defined by: User-input
None
If this method is selected the slot bounds in the slot configuration dialog are set to zero. No additional constraints are generated.
Opt Monthly Spill
Note:  This method is not functional in RPL Optimization.
This method sets the lower and upper bounds on spill. The lower bound is set to zero and the default upper bound is set to a very big number (9,999,999 cms). The default upper bound can be revised in the Spill slot configuration, Upper Bound parameter. No additional constraints are generated beyond these bounds.
Opt Unregulated
If this method is selected only unregulated spill is considered and the following constraint is added to the LP:
(5.34)    Spill = Unregulated Spill
Opt Regulated
When this method is selected only regulated spill is considered. The lower bound on spill is set to zero and the following constraint is added to the LP:
(5.35)    Spill = Regulated Spill
Opt Regulated and Unregulated
When this method is selected unregulated and regulated spill are considered and the following constraint is added to the LP:
(5.36)    Spill = Regulated Spill + Unregulated Spill
Opt Regulated and Bypass
When this method is selected only regulated and bypass spill are considered and the lower bound on spill is set to zero and the following constraint is added to the LP:
(5.37)    Spill = Regulated Spill + Bypass
Opt Regulated, Bypass and Unregulated
When this method is selected unregulated, regulated and bypass spill are considered and the following constraint is added to the LP:
(5.38)    Spill = Regulated Spill + Unregulated Spill + Bypass
Opt Bypass, Regulated and Unregulated
When this method is selected unregulated, regulated and bypass spill are considered and the following constraint is added to the LP:
(5.39)    Spill = Bypass + Regulated Spill + Unregulated Spill
Optimization Power
The Optimization Power category allows the user to select which type of linearizations will be used for linearizing various slots. For Independent Linearizations all slots are linearized separately according to the user specified methods. This category has no dependencies.
None
This is the default method. It is an error to have this method selected for Optimization. No slots are added for this method.
Independent Linearizations
The Independent Linearizations method linearizes all the variables separately according to the user selected methods. The variables that need to be linearized vary greatly depending on the other methods selected. See the various Categories and Linearization Approaches for details.
Slots Specific to This Method
Power LP Param
Type: Table Slot
Units: Length and Flow
Description: Specifies the Operating Head and the flow points used to take the tangent, line and piecewise approximations for Power linearization
Information: This table must be user input when the Independent Linearizations method is selected. The best Operating Head to choose should be close to the expected head during optimized period. Tangent approximation is generally not used, nor helpful as it often results in non-zero power for zero flow. The suggested points for a line approximation are 0 flow and best turbine flow for the entire plant. The suggested points for piecewise linearization are 0 flow, 1 unit best turbine flow, 2 units best turbine flow ... n units best turbine flow, and maximum turbine flow.
Defined by: Input
Figure 5.20  Power turbine release relationship for a fixed operating head valve. Not drawn to scale.
If the Optimization problem uses Power, either directly or indirectly, then the Power slot is added to the problem. Before being passed to the optimization solver, the Power slot is numerically approximated as a function of Operating Head and Turbine Release (Numerical 3-D Approximation). The relationship between Operating Head and Turbine Release will come from the Plant Power Table. This table must be user-input. The table will be queried using the points defined in the Power LP Param table.
Power Coefficient
The Power Coefficient method models Power at each time step as Turbine Release multiplied by a Power Coefficient Estimate.
Slots Specific to This Method
Power Coefficient Estimate
Type: Series Slot
Units: PowerPerFlow
Description: This represents the estimated Power Coefficient that gets used in the Optimization definition of Power.
Information: The Power Coefficient Estimate is a required input for the run. It can either be input directly (manually or by DMI), or it could be set by an initialization rule. For example, an initialization rule could set the Power Coefficient Estimate based on a Seed (Slot Cache) value. If the Power Coefficient method is selected, and Power Coefficient Estimate is not an input for all time steps, then the run will abort with an error message.
Defined by: Input
Power at each time step is then defined as:
Power Surface Approximation
This method allows for the modeling of dynamic Operating Head to be incorporated into Optimization Power modeling. It provides a significant improvement in the Power approximation error over the linearization using the Power LP Param table, which assumes a constant Operating Head over the entire run period. The improvement is especially significant for projects that exhibit a wide range of Operating Head over the course of the run, particularly if the optimization policy is trying to maximize Power or set Power greater than or equal to a value.
The method introduces a new variable, PSA Head Factor, which represents the weighted contributions of Storage, Spill and Tailwater Base Value to Operating Head. The method generates a set of planes, the Power Surface, to constrain power as a function of Turbine Release and the PSA Head Factor.
The Power Surface can be thought of as pavement over a warped bridge that is level on one end and sloped and higher on the other end. The bridge ends represent zero Turbine Release and maximum Turbine Release respectively. In addition, the bridge is bowed concave across the center line everywhere except the level (zero Turbine Release) end. This bowing reflects Power as a function of the Head Factor for a fixed value of Turbine Release. The edges of the bridge represent Power as a function of Turbine Release for the low and high values of the Head Factor. Additional points defining a grid on the surface correspond to intermediate values of Turbine Release and the Head Factor. The user can define dimensions and points used for this grid. A piecewise linear surface is composed of cutting planes with each plane defining one triangle on the surface. A surface underneath the bridge composed of two planes defines a lower bound on Power given Turbine Release and Head Factor values.
Because only two planes can be defined for the lower bounds on power, additional approximation error can be introduced if the optimization policy has an incentive to minimize power. In these cases the optimization solution can have an incentive to under-approximate Power for a given Turbine Release, and thus the Post-optimization Rulebased Simulation will calculate a larger Power value than the optimization value for Power.
Slots Specific to This Method
The user enters data into three slots:
The remaining table slots associated with the method are automatically populated by RiverWare. A description of all of the slots associated with this method is given below.
PSA Sample Input
Type: Table Slot
Units: Flow, Volume, Flow, Length
Description: This table contains user-specified sample values for Turbine Release, Storage, Total Spill (if applicable) and Tailwater Base Value (if applicable) that are used by RiverWare to compute the PSA Head Factor Weights. The four parameters in this table represent all of the parameters that contribute to Operating Head. In other words, if a value is known for each of these parameters, it is possible to calculate the corresponding Operating Head.
Information: The values in this table should span the full possible range for each parameter for the given run. For example, the Turbine Release column should contain a value of 0, the highest possible turbine release from the reservoir, and any other intermediate values specified by the user. Specifying tighter upper and lower bounds for each parameter will improve the approximation, but it is important that all possible values for each variable within the run are spanned by the range for that parameter in the table. The user can determine how many rows to include in the table. It is expected that typically, 3-4 values will be specified for each parameter. An example is shown below. The Spill column should only contain values if a method other than None has been selected in the Spill category. Otherwise the Spill column should be left empty (will display “NaN”). The Tailwater Base Value column should only contain values if the reservoir’s Tailwater Base Value slot is linked to the Pool Elevation slot of a downstream reservoir (i.e. if the Downstream Reservoir Pool Elevation contributes to the calculation of Operating Head). Otherwise the Tailwater Base Value column should be left empty.
Defined by: User Input

Turbine Release
Storage
Spill (Total)
Tailwater Base Value
0
0
0
500
100
1000
50
510
200
2000
100
520
Type: Scalar Slot
Units: None
Description: The number of PSA Head Factor values for each Turbine Release value used when calculating the PSA Grid Points
Information: This must be an integer greater than or equal to 2. The value should typically range from 2 to 4. A larger number will improve the approximation but will increase run time.
Defined by: User Input
PSA Turbine Release Grid Lines
Type: Scalar Slot
Units: None
Description: The number of Turbine Release values for each PSA Head Factor value used when calculating the PSA Grid Points
Information: This must be an integer greater than or equal to 2. The value should typically range from 2 to 4. A larger number will improve the approximation but will increase run time.
Defined by: User Input
PSA Sample Output
Type: Table Slot
Units: Flow, Volume, Flow, Volume, Power
Description: A table containing all permutations of the values entered in the PSA Sample Input table slot along with the Power calculated for each combination of Sample Input values. This sample output is used to calculate the PSA Head Factor Weights.
Information: RiverWare will populate this table at the beginning of the run. For the PSA Sample Input table shown above, with three values in each of the four columns, this table would contain 81 rows, one for each permutation. For a given combination of Turbine Release, Storage, Spill and Tailwater Base Value, RiverWare can calculate the corresponding Power. The third column will contain the Downstream Storage values corresponding to the Tailwater Base Value entries in the PSA Sample Input slot.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the table:
The calculation of SamplePower depends on the selected Power and Tailwater methods.
Type: Table Slot
Units: PerTime, None, PerTime
Description: The weights for Storage, Spill and Downstream Storage used when calculating PSA Head Factor
Information: This is a 1 x 3 table with a single weight for Storage, Spill and Downstream Storage. The weights are calculated by RiverWare by performing a regression on the values in the PSA Sample Outputs table slot. If one of the parameters is not used (contains NaN for all rows in the PSA Sample Input table), the corresponding weight in this table slot will be zero.
Defined by: Calculated by regression at the beginning of the run
Type: Series Slot
Units: Flow
Description: This slot is a variable in the optimization solution and represents the weighted contribution of Storage, Spill and Downstream Storage to Operating Head and thus power. It can be thought of as a storage analog of Operating Head.
Information: This variable is used in the automatically generated constraints that define Power. It will not, generally display any values, but the user can write a post-optimization rule that calculates the value of this variable at each time step using the equation shown below and the values in the PSA Head Factor Weights table slot.
Defined by:
The coefficients come from the PSA Head Factor Weights table slot.
PSA Grid Points
Type: Table Slot
Units: Flow, Volume, Flow, Volume, Power, Flow
Description: Points used to calculate the planes for the PSA Max Constraints and PSA Min Constraints, one row for each point with columns for Turbine Release, Storage, Spill, Downstream Storage, Power and PSA Head Factor.
Information: The number of rows (points) in this table equals the product of the number of lines in the PSA Head Factor Grid Lines and PSA Turbine Release Grid Lines scalar slots. For each grid point, RiverWare calculates the value of Power and the PSA Head Factor corresponding to the parameter values in that row.
Defined by: Populated by RiverWare at the beginning of the run
Turbine Release Column
Smallest and largest values from PSA Sample Input and evenly spaced intermediate values corresponding to the number of lines in the PSA Turbine Release Grid Lines scalar slot
Storage, Spill and Downstream Storage Columns
Smallest and largest values from PSA Sample Input and evenly spaced intermediate values corresponding to the number of lines in the PSA Head Factor Grid Lines scalar slot
Power Column
Determined by selected Power method, for each row i in the table
The coefficients come from the PSA Head Factor Weights table slot.
PSA Max Constraints
Type: Table Slot
Units: Flow, Flow, Flow, Flow, Flow, FLOW, PowerPerFlow, PowerPerFlow, Power
Description: This table contains the planes that define the upper bounds for power as a function of Turbine Release and PSA Head Factor, one row for each plane. Power is constrained to be less than or equal to the planes defined in this table. The first six columns contain three pairs of Turbine Release and PSA Head Factor values that define three points on the plane. The remaining three columns contain the corresponding Turbine Release Coefficient, Head Factor Coefficient and Constant Term that define the same plane and are used in the actual constraint expressions.
Information: The points used to define the planes come from the Turbine Release and Head Factor points in the PSA Grid Points table slot. RiverWare will not use all of the possible combinations of Turbine Release and Head Factor points but rather will only use the combinations necessary to define the Power Surface.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the PSA Max Constraints table slot a constraint is added to the optimization problem:
The coefficients ui, vi and wi are the Turbine Release Coefficient, Head Factor Coefficient and Constant Term from row i of the PSA Max Constraints table. Turbine Release and PSA Head Factor are the actual variables in the optimization problem.
PSA Min Constraints
Type: Table Slot
Units: Flow, Flow, Flow, Flow, Flow, FLOW, PowerPerFlow, PowerPerFlow, Power
Description: This table contains the planes that define the lower bounds for power as a function of Turbine Release and PSA Head Factor, one row for each plane. Power is constrained to be greater than or equal to the planes defined in this table. The first six columns contain three pairs of Turbine Release and PSA Head Factor values that define three points on the plane. The remaining three columns contain the corresponding Turbine Release Coefficient, Head Factor Coefficient and Constant Term that define the same plane and are used in the actual constraint expressions
Information: This table will always contain two rows. Only two planes can be defined for the lower bounds on power.
Defined by: Populated by RiverWare at the beginning of the run
For each row i in the PSA Min Constraints table slot a constraint is added to the optimization problem:
The coefficients ui, vi and wi are the Turbine Release Coefficient, Head Factor Coefficient and Constant Term from row i of the PSA Min Constraints table. Turbine Release and PSA Head Factor are the actual variables in the optimization problem.
Method Summary
Three slots require input from the user. Descriptions of these slots are provided above.
• PSA Sample Input
• PSA Turbine Release Grid Points
• PSA Head Factor Grid Points
Then at the start of the run RiverWare carries out the following steps:
1. Populate the PSA Sample Output Table with all permutations of parameters in the PSA Sample Input table slot
2. Calculate the PSA Head Factor Weights using a regression based on values in the PSA Sample Output table slot
4. Populate the PSA Grid Points table slot based on the number of grid lines specified by the user
5. Generate upper bound planes using the PSA Grid Points and add the corresponding constraints on Power to the Optimization problem
6. Generate lower bound planes using the PSA Grid Points and add the corresponding constraints on Power to the Optimization problem
Method Details
This section provides details of the calculations carried out by RiverWare to generate the constraints that define the Power Surface. This material is included for reference only.
1. RiverWare populates the PSA Sample Output table slot. All permutations of values in the PSA Sample Input table slot are determined, and a row for each is added to the PSA Sample Output table slot. RiverWare may make some adjustments to prevent infeasible combinations. For example, the highest Turbine Release value may not be possible for all combinations of Storage, Spill and Tailwater Base Value. RiverWare will adjust the Turbine Release to use the maximum turbine release for the resulting Operating Head. The table is organized in blocks of constant Turbine Release, with the lowest Turbine Release block first and then increasing Turbine Release. The values in the remaining columns are ordered corresponding to increasing Operating Head. Storage is increasing. Spill and Tailwater Base Value (or Downstream Storage) are decreasing. For each combination of values (each row), RiverWare calculates the corresponding Operating Head and Power. The Power value is added to each row in the PSA Sample Output table. The details of these calculations are shown here for a given row i in the PSA Sample Output table.
Note:  Poweri is the only calculated quantity displayed in the table. Values from the intermediate calculations shown below are not displayed in the table.
Pool Elevation is calculated by interpolation on the reservoir Elevation Volume Table.
If Tailwater Base Value is linked to Pool Elevation of a downstream reservoir:
Tailwater Base Value is calculated by interpolation on the downstream reservoir Elevation Volume Table. Tailwater Base Value is only calculated from the Downstream Storage if either Base Value Plus Lookup Table, Stage Flow Lookup Table or Coefficients Table is the selected Tailwater method and Tailwater Base Value is linked to the Pool Elevation of the downstream reservoir. Otherwise Tailwater Base Value is unused, and thus Operating Head and Power are not dependent on Downstream Storage.
Spill will only be non-zero if a method other than None is selected in the Spill category.
The tailwater calculation is dependent on the selected method in the Tailwater category.
The Power calculation is dependent on the selected method in the Power category.
2. RiverWare calculates the PSA Head Factor Weights using a combination of linear regression and averages.
FOR EACH Turbine Release value i
FOR EACH combination of Spill and Tailwater Base Value (or Downstream Storage), k, perform a linear regression to calculate a temporary Storage coefficient gik:
where n is the number of Storage values.
Calculate the temporary Storage coefficient for the given Turbine Release, gi:
where n is the number of Spill and Downstream Storage) combinations.
FOR EACH combination of Storage and Downstream Storage, k, perform a linear regression to calculate a temporary Spill coefficient eik:
where n is the number of Spill values.
Calculate the temporary Spill coefficient for the given Turbine Release, ei:
where n is the number of Storage and Downstream Storage combinations.
FOR EACH combination of Storage and Spill, k, perform a linear regression to calculate a temporary Downstream Storage coefficient fik:
where n is the number of Downstream Storage values.
Calculate the temporary Downstream Storage coefficient for the given Turbine Release, fi:
where n is the number of Storage and Spill combinations.
Calculate average ratios over all Turbine Release values:
where n is the number of Turbine Release values.
Calculate the final Head Factor Weights:
If Tailwater Base Value is linked to the downstream Pool Elevation:
These three weight values are displayed in the three columns of the PSA Head Factor Weights table slot.
In the optimization solution the PSA Head Factor is defined at a given time step by
– If Tailwater Base Value is linked to the downstream Pool Elevation:
– If Tailwater Base Value is not linked:
3. RiverWare calculates the grid points for the PSA Grid Points table slot. The number of rows (points) in this table equals the product of the number of lines in the PSA Head Factor Grid Lines and PSA Turbine Release Grid Lines scalar slots. The smallest and largest values in the PSA Sample Input slot lead to the smallest and largest values for each of the parameters that affect power (Turbine Release, Storage, Spill and Downstream Storage. One row in this table will correspond to the smallest Turbine Release, smallest Storage, largest Spill and largest Downstream Storage, and thus smallest power. Another row will correspond to the largest Turbine Release, largest Storage, smallest Spill and smallest Downstream Storage, and thus the largest Power. RiverWare generates evenly spaced values between the extremes for each variable.Within the PSA Grid Points table, for a given Turbine Release value, Storage is increasing and Spill and Downstream Storage are decreasing. For each grid point, RiverWare calculates the value of Power and the PSA Head Factor corresponding to the parameter values in each row and adds these to the final two columns in the table.
For each row i in the table:
The Power calculation depends on the method selected in the Power category.
The coefficients come from the PSA Head Factor Weights table slot.
4. RiverWare calculates the upper bound planes. These are entered in the PSA Max Constraints table slot, one row for each plane, where the planes represent Power as a function of Turbine Release and PSA Head Factor. For each combination of three points in the PSA Grid Points Table, RiverWare calculates the corresponding plane. For any three points, the plane is defined by three linear equations, which can be represented in matrix form.

The coefficients that define the plane are solved for by
RiverWare only uses the planes that are necessary to define the Power Surface. Each plane is checked against all remaining points in the PSA Grid Points table. If the Power value for any of the remaining points lies above the given plane, then that plane is rejected (i.e. it would over-constrain Power, resulting in an under-estimation of Power). For each plane i that is used, RiverWare adds the following constraint to the optimization problem for each time step:
5. RiverWare calculates the lower bound planes. These are entered in the PSA Min Constraints table slot, one row for each plane. Only two planes can be calculated for the lower bounds. The points used for the two planes are as follows:
Plane 1:
– Point A1 - Min Turbine Release, Max Head Factor
– Point B1 - Max Turbine Release, Max Head Factor
– Point C1 - Min Turbine Release, Min Head Factor
Plane 2:
– Point A2 - Min Turbine Release, Max Head Factor
– Point B2 - Max Turbine Release, Max Head Factor
– Point C2 - Max Turbine Release, Max Head Factor
The coefficients defining the planes are calculated using the same matrix calculation described for the upper bound planes. For each lower bound plane i, RiverWare adds the following constraint to the optimization problem for each time step:
Note:  Regarding the lower bound approximation, because only two planes can be defined for the lower bounds on power, additional approximation error can be introduced if the optimization policy has an incentive to minimize power. This can occur if Power is included in a Minimize objective. It can also occur if the optimization problem contains constraints that require Power to be less than or equal to value.
Note:  These types of constraints can be introduced through multiple forms of RPL optimization goals. The first is basic less than or equal to constraint.
Policy that requires Power to be equal to a value also adds a less than or equal to constraint. The following RPL statement:
actually adds the following two constraints to the optimization problem:
A constraint to require the sum of Power from multiple reservoirs to be less than or equal to a value will have a similar effect. A final manner in which this can occur is through policy that minimizes Power indirectly through user-defined variables. For example, assume a user-defined variable is defined by the following RPL constraint:
Then later the variable is constrained by
An equivalent constraint would be
It is possible to reduce the approximation error in these cases by adding constraints to the RPL Optimization Goal Set that essentially create more restrictive planes for the lower bound. These types of constraints are model-specific. Contact CADSWES if assistance is required to add more restrictive lower bounds to the Power Surface Approximation.
Power
See “Power” in Objects and Methods for additional information on the simulation methods. Only a subset of available Simulation methods are available in Optimization. Selection of a method other than those that follow will result in an error.
If the Optimization problem uses Power, either directly or indirectly, then the Power slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Operating Head and Turbine Release (Numerical 3-D Approximation).
Related Slots
Power
Type: Agg Series Slot
Units: Power
Description: Power generated by flow through the turbines
Information:
Defined by: Numerical 3-D Approximation in terms of Operating Head and Turbine Release. Approximation is based on the Plant Power Table. The Power LP Param table contains a value for Operating Head used to index the Operating Head column of the Plant Power Table. This approximated value, therefore, reduces the Power to a function of Turbine Release. The flow values in the Power LP Param table are then used as approximation points indexing the Turbine Release column of the Plant Power Table. The Plant Power Table should have increasing values of Operating Head and Turbine Release. Power should be a concave function of Operating Head, but concavity is not strictly enforced. The preferred order of approximation is substitution, piece-wise, two-point line, tangent.
Power LP Param
Type: Table Slot
Units: Length and Flow
Description: Specifies the Operating Head and the flow points used to take the tangent, line and piecewise approximations for Power linearization
Information: This table must be user input if the Independent Linearizations method is selected in the Optimization Power category. Otherwise it is unused. The best Operating Head to choose should be close to the expected head during optimized period. Tangent approximation is generally not used, nor helpful as it often results in non-zero power for zero flow. The suggested points for a line approximation are 0 flow and best turbine flow for the entire plant. The suggested points for piecewise linearization are 0 flow, 1 unit best turbine flow, 2 units best turbine flow ... n units best turbine flow, and maximum turbine flow.
Defined by:
Figure 5.21  Power turbine release relationship for a fixed operating head value. Not drawn to scale.
Plant Power Coefficient
Slots Specific to This Method
In the RPL Optimization mode, the following slot requires special handling.
Best Turbine Flow
Type: Agg Series Slot
Units: Flow
Description: Flow associated with the most efficient power generation for an associated Operating Head
Information:
Defined by: Numerical 2-D Approximation in terms of Operating Head, based upon an internal best turbine flow table. For the Plant Power Coefficient method (selected in the Power category) the internal table is the Best Turbine Q table. The Best Turbine Q table is required to have increasing values of Operating Head and Best Capacity and be a concave function of Operating Head. The preferred order of approximation is substitution, piece-wise, tangent, two-point line. The Best Turbine Flow LP Param table values are used as approximation points indexing the best turbine flow table.
If the Optimization problem uses Best Turbine Flow, either directly or indirectly, then this slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Operating Head (Numerical 2-D Approximation). The relationship between Operating Head and Best Turbine Flow will come from one of two places, depending on other method selection. 1) If the selected method in the Power category is Plant Efficiency Curve, then the relationship is automatically developed from the Plant Power Table. 2) For the Plant Power Coefficient method, the user-input Best Turbine Q table defines the relationship. 3) For other Plant Calculation category methods, Best Turbine Flow must be input.
Best Turbine Flow LP Param
Type: Table Slot
Units: Length
Description: Specifies the Operating Head points in the best turbine flow relationship used to take the tangent, line and piecewise approximations for Best Turbine Flow linearization
Information: The best operating head points to choose for a piecewise approximation are generally: minimum Operating Head, Operating Head at max capacity, and maximum Operating Head. These three points typically define most of the shape of the Best Turbine Flow curve.
Defined by: User-input
Best Turbine Q
Type: Table Slot
Units: Length vs. Flow
Description: Table defining the relationship between Operating Head and the most efficient power generation.
Information: This table is used if the Power category has the Plant Power Coefficient method selected. If the Power category has the Plant Efficiency Curve method selected, then this table is not used, but a similar relationship is automatically developed from the Plant Power Table.
Defined by: User-input
Plant Power Table
Type: Table Slot
Units: Length vs. Flow vs Power
Description: Table defining the relationship between Operating Head, Turbine Release, and Power at selected points of operation. In building the Plant Power table, the following approach might be taken. For a given Operating Head create n + 2 rows of data, where n is the number of units comprising the Plant. The first row will reflect no flow through the turbines. The next row will reflect the preferred level of flow through the first unit normally activated. Subsequent rows will reflect incremental flow levels as additional turbines come on line at their respective preferred levels of flow. The final row will reflect the flow of all available units running at maximum flow capacity.
Information: Data must be entered into the table in increasing, concave blocks of the same Operating Head for the 3-dimensional table interpolation to work correctly. For every block of the same Operating Head in column 1, Turbine Release and the corresponding Power should be listed in increasing, concave order in columns 2 and 3. There must be a point of zero Turbine Release and zero Power for each Operating Head. The following table is an example of the proper way to formulate the Plant Power Table. This table can be derived from the Best Turbine Q, Best Power Coefficient, Max Turbine Q and Max Power Coefficient slots.

Turbine Release
Power
30
0
0
30
100
100
30
200
175
40
0
0
40
100
125
40
220
195
50
0
0
50
110
147
50
250
205
Defined by: User-input
Figure 5.22  Best turbine flow - operating head relationship. Not drawn to scale.
Plant Efficiency Curve
The Plant Efficiency Curve method approximates Best Power Flow the same as the Plant Power Coefficient method.
Peak Power
In RPL Optimization, this method creates a turbine release constraint:
(5.40)    Turbine Release <= Power Plant Capacity Fraction * Turbine Capacity * Number of Units.
No actual power value is calculated.
Peak and Base
In RPL Optimization, this method creates a turbine release constraint:
(5.41)    Turbine Release <= Power Plant Capacity Fraction * Turbine Capacity * Number of Units.
No actual power value is calculated.
Unit Power Table
See “Unit Power Table” in Objects and Methods for descriptions of the Unit Power slots and Simulation algorithm See “Unit Power” for a description of the optimization formulation.
When the Unit Power Table method is selected, the following categories are available:
• Cavitation; “Cavitation”
• Avoidance Zones; “Avoidance Zones”
• Startup; “Startup”
• Frequency Regulation; “Frequency Regulation”
When the Unit Power Table method is selected, the following categories are available: Cavitation, Avoidance Zones, Net Head, and Unit Regulation.
The status of a unit at a given timestep can be one of the following:
• Available
• Unavailable
• Must run
At the highest level, an entire plant may never be able to provide an ancillary service like Regulation. The user could indicate this by selecting “None” in the appropriate category. On the other hand, the following slot settings will allow users to specify unit availability / must run for individual time steps for generation and ancillary services. Without any inputs, the units will default to being available.
If the Unit Power Table method, but not the Frequency Regulation, method is selected, the user could specify through optimization RPL policy.
Note:  Setting certain slots may be possible but not preferred.
• Unit u must generate at time t:
– Unit Is Generating [t,u] = 1, or
– Unit Energy [t,u] = value
• Unit u is unavailable at time t:
– Unit Is Generating [t,u] = 0, or
– Unit Energy [t,u] = 0
If the Frequency Regulation method is selected, the user could specify through optimization policy (RPL):
• Unit u must regulate up at time t:
– Regulation Up [t,u] = value
• Unit u must regulate down at time t:
– Regulation Down [t,u] = value
• Unit u must regulate at time t:
– Regulation [t,u] = value (which implies Regulation Up [t,u] = value and Regulation Down [t,u] = value)
If a unit is unavailable for some type of regulation, then a value can be 0.
Turbine Capacity
Turbine Capacity is numerically approximated before being passed to the optimization solver. The slot is approximated as a function of Operating Head (Numerical 2-D Approximation). The relationship between Operating Head and Turbine Capacity will come from one of several places, depending on the method selected in the Power category. 1) If Plant Efficiency Curve is chosen, the relationship is automatically developed from the Plant Power Table. 2) Otherwise, if Peak Power or Peak and Base is chosen, the relationship comes from the Best Generator Flow table. 3) If none of these methods are chosen, then the relationship is contained in the user-input Max Turbine Q slot.
Slots Specific to This Method
Turbine Capacity
Type: Agg Series Slot
Units: Flow
Description: Flow capacity of the turbine(s)
Information:
Defined by: Numerical 2-D Approximation in terms of Operating Head, based upon a maximum turbine capacity table. This capacity table is determined in various ways according to the Power method:
• Plant Efficiency Curve: an automatically generated maximum turbine flow table developed from the Plant Power Table
• Peak Power or Peak and Base: Best Generator Flow table
• All Others: Max Turbine Q
The Turbine Capacity LP Param table values are used as approximation points indexing the selected maximum turbine capacity table. The maximum turbine capacity table is required to have increasing values of Operating Head. Turbine Capacity in that table is required to be a concave function of Operating Head. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Turbine Capacity LP Param
Type: Table Slot
Units: Length vs. Length vs. Length
Description: Specifies the operational head points used to take the tangent, line and piecewise approximations for Turbine Capacity linearization
Information: For the piecewise approximation the best operating head points to chose are generally: minimum Operating Head, Operating Head at max capacity, and maximum Operating Head. These three points typically define most of the shape of the Turbine Capacity curve.
Defined by: User-input unless the selected method in the Power Linearization Automation category is not “None”.
Figure 5.23  Turbine capacity operating head relationship. Not drawn to scale.
Optimization Tailwater
See “Tailwater” in Objects and Methods for additional information on the Simulation methods for Tailwater. Only a subset of available methods are supported in Optimization. These methods are: Linked or Input, Base Value Only, Base Value Plus Lookup Table, Stage Flow Lookup Table, and Coefficients Table. Selection of a method other than those will result in an error. The method selected in the Optimization Tailwater category should correspond to the one selected in the simulation Tailwater category.
Tailwater Elevation may be part of the Optimization problem and it is handled differently for each method. Below is a description of the behavior of Tailwater Elevation.
If Tailwater Elevation is not input, then Tailwater Elevation is replaced by TailwaterBaseValue: Tailwater Elevation = Tailwater Base Value.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Description: See “Linked or Input” in Objects and Methods for details.
Opt Base Value Only
If Tailwater Elevation is not input, then Tailwater Elevation is replaced by (Tailwater Base Value(t) + Tailwater Base Value(t-1) ) / 2
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Description: See “Base Value Only” in Objects and Methods for details.
Figure 5.24  Tailwater outflow relationship. Not drawn to scale.
Opt Base Value Plus Lookup Table
If Tailwater Elevation is not input, this slot is replaced by a mathematical expression based on Tailwater Base Value and a numerical approximation of Tailwater Elevation as a function of Outflow (Numerical 2-D Approximation) as defined by the user in the Tailwater Table
Tailwater Elevation is constrained to be (tailwaterBaseValue(t) + tailwaterBaseValue(t-1))/2 + tempTWLookupValue, where tempTWLookupValue is a Numerical 2-D Approximation of increase in Tailwater Elevation due to flow as described in the Tailwater Table. The Tailwater Table Lookup LP Param table values for outflow are used as approximation points indexing the Tailwater Table to determine tempTWLookupValue from the Tailwater Elevation column.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Tailwater Table
Type: Series Slot
Units: Flow vs. Length
Description: Reservoir outflow vs. either the tailwater elevation or the tailwater elevation increment
Information: If the Tailwater Base Value is non-zero, the Tailwater Table gives values of incremental increase in Tailwater Elevation over the Base value. If the Tailwater Base Value is zero, the table simply gives the Tailwater Elevation values. The Tailwater Table should have increasing values of outflow. Tailwater Elevation is required to be a convex function of outflow. The preferred order of approximation is substitution, piece-wise, two-point line, tangent. See Object / Simulation documentation for additional information.
I/O: User-input
Tailwater Table Lookup LP Param
Type: Table Slot
Units: Flow, Flow, Flow
Description: LP Parameter approximation points for Outflow.
Information: The Tailwater Table Lookup LP Param table values for outflow are used as approximation points indexing the Tailwater Table to determine tempTWLookupValue from the Tailwater Elevation column.
I/O: User Input only
temp Tailwater Lookup Value
Type: Series
Units: Length
Description: Numerical 2-D Approximation of increase in Tailwater Elevation due to flow as described in the Tailwater Table.
Opt Stage Flow Lookup Table
See “Stage Flow Lookup Table” in Objects and Methods for additional information on the Stage Flow Lookup Table method. Tailwater Elevation is numerically approximated as a function of Stage and Flow as defined by the user in the Stage Flow Tailwater Table. The tables will be queried either using user-input points defined in the Tailwater Elevation LP Param table or using automatically calculated points, depending on method selection in the Tailwater Linearization Automation category. If the selected method in the Tailwater Linearization Automation category is “None”, then the user-input Tailwater LP Param table values are used. For the Range Input Automation method, the automatically developed points will be used.
Tailwater Elevation is approximated numerically (3-D approximation) as a function of Outflow and Tailwater Base Value based on the Stage Flow Tailwater Table. The Tailwater Elevation LP Param table Tailwater Base Value and flow values are used as approximation points indexing the Downstream Stage and Outflow columns of the Stage Flow Tailwater Table, respectively.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Stage Flow Tailwater Table
Type: Table Slot
Units: Flow vs. Length vs. Length
Description: Reservoir Outflow vs. Downstream Elevation (Tailwater Base Value) vs. Tailwater Elevation
Information: Data must be entered into the table in increasing blocks of the same Outflow value for the 3-dimensional table interpolation to work correctly. For every block of same Outflows in column 1, Downstream Stages should be listed in increasing order in column 2, and the corresponding Tailwater Elevations in column 3. Tailwater elevation is required to be a concave function of Outflow. The preferred order of approximation is substitution, piece-wise, two-point line, tangent. Internally, the Stage Flow Tailwater Table is rearranged to use the Stage as the primary index (column) with outflow as the secondary index (column). This rearranged table may be labeled as “Convolved Stage Flow Tailwater Table” in output messaging. Also, because of this rearrangement, it is desirable to repeat stage values for each outflow.
Defined by: User-input
Tailwater Elevation LP Param
Type: Table Slot
Units: Length, Flow, Flow, Flow
Description: Specifies the fixed tailwater base value point and the outflow points used to take the tangent, line and piecewise approximations for tailwater elevation linearization
Information: This table is used for linearization. The best Tailwater Base Value point to choose for tangent approximation would be an outflow equal to the expected value of outflow during the run; for the line approximation, the minimum and maximum values expected during the run; for piecewise approximation, the minimum and maximum values expected during the run plus additional intermediate values to more closely fit the tailwater curve.
Defined by: User-input unless the selected method in the Tailwater Linearization Automation category is not “None”.
Tail Water Reference Elevation
Type: Table Slot
Units: Length
Description: Lowest Reservoir discharge Elevation when there are no backwater effects from a downstream pool (reservoir)
Information: Although this is part of the Stage Flow Lookup Table method (and its corresponding Opt method), this slot does not influence optimization. See Object / Simulation documentation for additional information.
I/O: User-input
Opt Coefficients Table
This method sets up the physical Tailwater Elevation constraints using the same equation and coefficients used in the Coefficients Table tailwater method. See “Coefficients Table” in Objects and Methods for details.
Slots Specific to This Method
Tailwater Base Value
Type: Series
Units: Length
Tailwater Coefficients
Type: Table
Units: multi
Defined by: If the Power Surface Approximation method is selected, then there are additional restrictions on the coefficients that can be specified. With the Power Surface Approximation, having terms for Outflow[t-1], Tailwater BaseVal[t] and Tailwater[t-1] are not allowed.
Optimization Reserves
This category depends on selecting either Plant Power Coefficient or Plant Efficiency Curve in the Power category. The methods in this category can be used to account for power reserve requirements in the optimization policy. There is no analogous simulation method associated with this category.
Note:  The methods in this category have not been fully implemented for Slope Power Reservoirs. The selected method should be left as the default, None. Otherwise the run will abort with an error message stating that the method selection is not allowed for Slope Power Reservoirs.
None
This is the default, do-nothing method. No new slots will be added, and no new variables or constraints will be added to the optimization problem. This method should always be selected for Slope Power Reservoirs.
Constraint Based Single Timestep
Although this method is visible on Slope Power Reservoirs, it is not fully implemented. Selecting this method on Slope Power Reservoir will cause the run to abort with an error.
Startup
This category depends on selecting the Unit Power Table method (see “Unit Power Table”) and describes how the monetary cost associated with starting up or shutting down a unit (turbine) will be modeled. There are two methods in this category, one which does not model these costs (effectively assigning them a value of 0) and one which uses a table describing the combined costs for starting up and shutting down a unit.
None
This is the default, do-nothing method.
Unit Lumped Cost Method
For each unit, this method lumps the cost of startup and shutdown into one value. See “Unit Lumped Cost Method” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of added constraints.
This category depends on the Unit Power Table method (see “Unit Power Table”) and contains methods for modeling additional head loss that occurs. This head loss may come from the configuration of the penstocks for bringing water to the turbines.
None
In this method, there is no additional head loss to be used in the power calculation. In terms of penstock head loss, this method should be selected if the penstocks for the units are independent and the penstock losses are typically incorporated in the power data. Thus the power data is specified in terms of operating head.
In this method, there is additional head loss that results because units share a common penstock. The operating head losses in the penstock depend on the total turbine release and are shared for all units. The net head is calculated by subtracting penstock losses from the operating head. The unit data and power must be specified in terms of unit Net Heads instead of Operating Head. See “Shared Penstock Head Loss method” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of the added constraints.
Cavitation
This category depends on selecting the Unit Power Table method (see “Unit Power Table”) and contains methods for dealing with the problem of cavitation on turbines. Cavitation is the sudden formation and collapse of low-pressure bubbles in liquids by means of mechanical forces and this process can cause damage to turbines under certain operating conditions.
None
This is the default, do-nothing method.
Unit Head and Tailwater Based Regions
This method allows the user to specify the regions of operation in which cavitation does NOT occurs, so that these regions can be avoided. These regions can be dependent on both operating head and tailwater. See “Unit Head and Tailwater Based Regions” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of added constraints.
Avoidance Zones
This category depends on selecting the Unit Power Table method (see “Unit Power Table”) and contains methods for modeling the existence of undesirable regions of operation for turbines. There are two methods in this category, one which does not model avoidance zones at all, and one which
None
This the default, do-nothing method; avoidance zones are not considered.
This method allows the user to specify a table that defines the conditions in which the turbines should not be operated. See “Unit Head Based Avoidance Zones” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of added constraints.
Frequency Regulation
This category depends on selecting the Unit Power Table method (see “Unit Power Table”), although in the future it might be enabled for other power methods. The frequency regulation methods model the provision of the frequency regulation ancillary service, that is, how the reservoir can be made available to flexibly follow a load demand within a specified range during a certain period in order to affect the frequency of the generated power.
None
This is the default, do-nothing method; no regulation is modeled.
Unit Frequency Regulation
Note:  This method is not yet implemented.
When frequency regulation is scheduled, it allows the unit to follow the real time load. Exactly what will happen in real time is unknowable. This results in two sets of values at scheduling time, nominally scheduled power and turbine release. It is uncertain if the real time operators will actually use the service. At present, we distinguish between the nominal scheduled power (and turbine release) that the regulation is allowed to depart from and the expected power generation (and turbine release) that will take place when regulation is allowed. Both are important. The scheduled power sets the baseline for regulation and should be communicated to the power dispatchers. The expected power and release are more useful for coordinating a plant with the rest of the system. See “Unit Frequency Regulation” in Objects and Methods for Slot descriptions. See “Unit-level Constraints” for descriptions of added constraints.
Modeling a Slope Power Reservoir
Steps to follow in setting up a level power reservoir for optimization
1. Set up a running simulation model, using methods that are compatible with optimization for Power, Tailwater, Spill, etc.
2. Choose a method in the Slope Storage Coefficients category.
3. Fill in the Backwater Lambda Coefficients, LP Parameters, and Restrictions table.
4. Chose an Optimization Power method.
5. Choose an Optimization Head Computation method. In Optimization, None must be chosen.
6. Select the Optimization Spill method corresponding to the method selected in the Spill category.
7. Fill in the LP Param tables related to Power, Turbine Capacity and Best Turbine Flow (if plant power is used). Alternatively, the Power Linearization Automation Method can also be chosen to automatically determine the values for the LP Param tables.
8. Select the Optimization Tailwater method corresponding to the method selected in Tailwater category. If Opt Base Value Plus Lookup Table or Opt Stage Flow Lookup Table is selected, fill in the Tailwater Elevation LP Param table. Alternatively, select a Tailwater Linearization Automation method (Range Input Automation is currently available).
9. If future value is needed, select a method in the Future Value category, followed by the Optimization Future Value category, and if desired, Cumul Stor Val Linearization Automation.
10. Selection of the remaining methods and linearizations can be done in any order. Pool elevation linearizations, Pool Elevation Linearization Automation, Evaporation and Precipitation, Optimize Evaporation Computation, Evaporation Linearization Automations, Bank Storage, Hydrologic Inflow, Energy In Storage, and Diversion from Reservoir. The appropriate data must be entered for each method.
Storage Reservoir
The Storage Reservoir object is the least complicated of all the reservoirs. The only process performed by the Storage Reservoir is the storage of water. No power production facilities exist on the Storage Reservoir. See “General Slots” in Objects and Methods for additional information.
General Slots
General slots are always present on the object, regardless of selected methods. The following slots are provided on the reservoir when the optimization controller is selected.
Canal Flow
Type: Agg Series
Units: Flow
Description: Flow into (out of) the reservoir from (to) a canal
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Diversion
Type: Series Slot
Units: Flow
Description: Flow from the reservoir to a diverting object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Elevation Volume Table
Type: Table
Units: Length vs Volume
Description: Table relating elevation of the reservoir to volume stored in the reservoir
Information:
I/O: Input only
Defined by: Input only
Flow FROM Pumped Storage
Type: Agg Series Slot
Units: Flow
Description: Flow into the reservoir from a pumped storage reservoir
Information:
Defined by: Explicit Optimization variable in the mass balance constraint. This slot should be linked to Outflow on a Pumped Storage object. The Pumped Storage object constrains its Outflow.
Flow TO Pumped Storage
Type: Agg Series Slot
Units: Flow
Description: Flow out of the reservoir into a pumped storage reservoir
Information:
Defined by: Explicit Optimization variable in the mass balance constraint. This slot should be linked to Pumped Flow on a Pumped Storage object.
Inflow
Type: MultiSlot
Units: Flow
Description: Inflow into the reservoir from upstream
Information:
Defined by: Explicit Optimization variable in the mass balance constraint
Max Release
Type: Table Slot
Units: Length vs Flow
Description: Table relating Pool Elevation to maximum release
Information: See power methods for additional information
Outflow
Type: Agg Series Slot
Units: Flow
Description: Outflow from the reservoir
Information:
Defined by: Explicit Optimization variable as Outflow = Turbine Release + Spill
Pool Elevation
Type: Agg Series Slot
Units: Length
Description: Elevation of the water surface of the Reservoir
Information: When Pool Elevation is a part of the optimization problem, as it is in all conceivable RiverWare Optimization applications, this slot is numerically approximated as a function of Storage (Numerical 2-D Approximation). The relationship between Pool Elevation and Storage will come from the user-input Elevation Volume Table. The table will be queried either using user-input points defined in the Pool Elevation LP Param table.
Defined by: Numerical 2-D Approximation in terms of Storage, based upon the Elevation Volume Table. The Pool Elevation LP Param table values are used as approximation points indexing the Elevation Volume Table. The Elevation Volume Table should have increasing values of Pool Elevation and Storage. Storage is required to be a concave function of Pool Elevation. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Pool Elevation LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points used to take the tangent, line and piecewise approximations for Pool Elevation linearization
Information: This table is used for linearization unless Pool Elevation Linearization Automation category has selected Plant Automation. The best Storage point to choose for tangent approximation would be the expected storage expected during the run; for the line approximation, the expected maximum and minimum Storage; for piecewise approximation, use points that cover the full range of expected Storage during the run with intermediate points such that a piecewise linear curve reasonably approximates the actual curve.
Defined by: User-input
Figure 5.25  Pool elevation storage relationship. Not drawn to scale.
Return Flow
Type: MultiSlot
Units: Flow
Description: Flow returning from a diversion object
Information:
Defined by: Explicit Optimization variable in the mass balance constraint (see Storage)
Spill
Type: Agg Series Slot
Units: Flow
Description: Sum of the Bypass, Regulated Spill and Unregulated Spill
Information:
Defined by: Explicit Optimization variable as Spill = Bypass + Regulated Spill + Unregulated Spill
Storage
Type: Agg Series Slot
Units: Volume
Description: Volume of water stored in the reservoir
Information:
Defined by: Explicit Optimization variable as Storage = Storage(t-1) + Precipitation Volume - Evaporation - Change in Bank Storage + timestep * ( Inflow + Canal Flow + Flow TO Pumped Storage + Hydrologic Inflow Net + Return Flow - (Outflow + Diversion + Flow FROM Pumped Storage))
User Methods in Optimization
The following categories and methods are available for use in the Storage Reservoir object in Optimization. Because of dependency relationships, you may not be able to see them in your model until you change other methods. In the discussion below, you will see the other methods that need to be selected to enable a given method to be used in your model. When building a model, you will wish to review this to ensure that required dependencies are satisfied so that the desired methods are available for use.
Bank Storage
Not all methods are functional in RPL optimization. Of the available methods, “None” and “CRSS Bank Storage” are supported.
None
See “None” in Objects and Methods for additional information.
Input Bank Storage
Diversion From Reservoir
Not all methods in this category are supported in RPL optimization. Of the available methods, “None” and “Available Flow Based Diversion” are supported; selection of any other method will result in an error during begin run.
None
Available Flow Based Diversion
See “Available Flow Based Diversion” for additional information.
Energy in Storage
In Optimization, currently “None” and “EIS Table Lookup” are supported.
None
No Energy in storage is considered.
EIS Table Lookup
With this method selected, Energy in Storage is considered as a function of Pool Elevation. See “EIS Table Lookup” in Objects and Methods for additional information on the simulation method. If the optimization problem uses Energy In Storage, either directly or indirectly, then this slot is added to the problem. Before being passed to the optimization solver, this slot is numerically approximated as a function of Pool Elevation (Numerical 2-D Approximation). The relationship between Pool Elevation and Energy In Storage will come from the user-input Energy In Storage Table. The table will be queried either using user-input points defined in the Energy In Storage LP Param table or using automatically calculated points, depending on method selection in the Pool Elevation Linearization Automation category. If the selected method in the Pool Elevation Linearization Automation is “None”, then the user-input Energy In Storage LP Param table values are used. For other Pool Elevation Linearization Automation methods (Initial Target Input, Min Difference or Range Input, Min Difference) the same points automatically developed for the Pool Elevation linearization will be used.
Slots Specific to This Method
Energy In Storage
Type: Series Slot
Units: Energy vs. Power
Description: Energy in Storage in the reservoir
Information:
Defined by: Numerical 2-D Approximation in terms of Pool Elevation, based upon the Energy In Storage Table. The Energy In Storage LP Param table values are used as approximation points indexing the Energy In Storage Table. The Energy In Storage Table should have increasing values of Pool Elevation and Energy In Storage. Energy In Storage is required to be a convex function of Pool Elevation. The preferred order of approximation is substitution, piece-wise, tangent, two-point line.
Energy in Storage LP Param
Type: Table Slot
Units: Length
Description: Specifies the Pool Elevation points used to take the tangent, line and piecewise approximations for Energy In Storage linearization.
Information: This table is used for linearization unless the Pool Elevation Linearization Automation category has a method selected other than “None”.
Defined by: User-input
Energy in Storage Table
Type: Table Slot
Units: Length vs. Energy
Description: Table defining the relationship between Energy In Storage and Pool Elevation
Information:
Defined by: User-input
Figure 5.26  Energy in storage pool elevation relationship. Not drawn to scale.
Evaporation and Precipitation
The Input Evaporation method is the only Evaporation and Precipitation method that can be modeled in conjunction with Optimization. If the Input Evaporation method is selected, the Opt Input Evaporation method must be selected for the Optimization Evaporation category. Otherwise “None” should be selected for the Evaporation and Precipitation category, and “None” should be selected for the Optimization Evaporation category. When Evaporation and Precipitation Volume exist on the reservoir, they are added as part of the mass balance constraint.
Optimization Evaporation
This category can be used to model evaporation and precipitation.
None
The Optimization Evaporation method “None” is the default method for this category. It does no calculations and requires that “None” be selected for the Evaporation and Precipitation category.
Opt Input Evaporation
This method is analogous to the Input Evaporation method in simulation and requires the Input Evaporation method to be selected for the Evaporation and Precipitation category. Evaporation Rate and Precipitation Rate are entered as a time series. Evaporation is calculated as a product of Evaporation Rate, Average Surface Area over the timestep and Timestep length. Similarly Precipitation Volume is calculated as the product of Precipitation Rate, Average Surface Area and Timestep length.
Caution:  The linearization of the Surface Area variable can result in a small approximation error in optimization for Evaporation and Precipitation Volume. This means there can be a small difference between the mass balances in the optimization solution and the post-optimization rulebased simulation when using this method. It is important to use care when setting the approximation points for Surface Area in order to reduce this approximation error. Refer to the information on the Surface Area LP Param slot below. Also caution should be used if applying this method at a 1 Month timestep. All rates in the optimization mass balance are converted to monthly volumes based on a 30-day month, regardless of the month. This will also produce a difference between the mass balances in the optimization solution and the post-optimization rulebased simulation for a 1 Month timestep.
Slots Specific to This Method
Elevation Area Table
Type: Table Slot
Units: Length vs. Area
Description: Represents the Elevation-Surface Area relationship
Information: This table must be input. It is used to derive the Volume Area Table.
Defined by: User-input
Evaporation
Type: Series Slot
Units: Volume
Description: The volume of water lost to evaporation over the timestep
Information: If this slot contains user input, it is added directly to the mass balance constraint, otherwise it is defined by the expression below.
Defined by: Either user-input or the following constraint:
Evaporation Rate
Type: Series Slot
Units: Velocity
Description: The rate, in length per time, at which water is lost to evaporation at each timestep
Information: This slot can be set as user input. If it is not set as an input, and if Evaporation is not an input, this slot defaults to zero. If Evaporation is an input, this slot is not used.
Defined by: User-input or defaults to zero
Precipitation Rate
Type: Series Slot
Units: Velocity
Description: The rate, in length per time, at which water is gained from precipitation at each timestep
Information: This slot can be set as user input. If it is not set as an input, it defaults to zero.
Defined by: User-input or defaults to zero
Precipitation Volume
Type: Series Slot
Units: Volume
Description: The volume of water gained from precipitation over the timestep
Information: The Input Evaporation method will not allow this slot to be set as an input.
Defined by: Explicit constraint:
Surface Area
Type: Series Slot
Units: Area
Description: The area of the water surface at the end of the timestep
Information: This slot is numerically approximated as a function of Storage (Numerical 2-D Approximation). The relationship between Pool Elevation and Storage comes from the automatically generated Volume Area Table. The table is queried using the user-input points defined in the Surface Area LP Param table.
Defined by: Numerical 2-D Approximation in terms of Storage, based upon the Volume Area Table. The Surface Area LP Param table values are used as approximation points indexing the Volume Area Table. The preferred order of approximation is substitution, piecewise, two-point line, tangent. Most often the two-point line (secant) approximation will be used.
Surface Area LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points used to take the tangent, line and piecewise approximations for Surface Area linearization
Information: The best Storage point to choose for tangent approximation would be the expected storage during the run; for line approximation, the expected maximum and minimum Storage; for piecewise approximation, use points that cover the full range of expected Storage during the run with intermediate points such that a piecewise linear curve reasonably approximates the actual curve.In most cases, the line (secant) approximation will be used. It is important to set these points carefully to minimize approximation error.
Defined by: User-input
Figure 5.27  Surface area vs. storage relationship with two alternative line approximations. Not drawn to scale.
Figure 5.27 represents two alternative selections of points for the line approximation in the Surface Area LP Param table. The linear approximation represented by the dashed line corresponds to the selection of points near the extremes of the Volume Area table. This approximation will tend to result in an under-estimation of Surface Area, and thus an under-estimation of Evaporation and Precipitation Volume. Evaporation losses in the post-optimization rulebased simulation would be greater than the losses approximated in the optimization solution. The linear approximation represented by the solid line corresponds to the selection of points closer together in the Volume Area Table, and is more similar to the Tangent approximation. This approximation would tend to result in an over estimation of Surface Area, and the losses due to Evaporation in the post-optimization rulebased simulation would be less than the approximation in the optimization solution.
Volume Area Table
Type: Table Slot
Units: Volume vs. Area
Description: Represents the Storage Volume-Surface Area relationship
Information: This table is read-only and is automatically generated at the start of the run from the Elevation Area Table and the Elevation Volume table. The method starts by copying the Elevation Area Table and then replaces the Pool Elevation Values with the corresponding Storage values. The Storage values are linearly interpolated based on the Elevation Volume Table
Defined by: Automatically generated
Future Value
This category and its methods are not dependent on other method selections.
None
See “None” in Objects and Methods for additional information.
Cumulative Storage Value Table
In RPL-Optimization, the Cumulative Storage Value is Numerically Approximated as described below.
Slots Specific to This Method
Cumulative Storage Value
Type: Agg Series Slot
Units: \$
Description: Represents the future energy value of the current storage
Information:
Defined by: 2-D approximation in terms of Anticipated Storage, based upon the Cumul Stor Val Table. The Cumul Stor Val LP Param table values (Storage) are used as approximation points indexing the Cumul Stor Val Table. The Cumul Stor Val Table should have increasing values of Storage and Cumulative Value. Cumulative Storage Value is required to be a concave function of Anticipated Storage. The preferred order of approximation is substitution, piece-wise, tangent, two-point line. The Cumul Stor Val Linearization Automation category’s Marginal Value to Table and Lin method can automate creation of the Cumul Stor Val LP Param table and the Cumul Stor Val Table.
Anticipated Storage
Type: Agg Series Slot
Units: Volume
Description: The combination of the actual storage plus water that would be expected to enter the reservoir after the Current Timestep but has not yet, due to lagging.
Information:
Defined by:
Cumul Stor Val Table
Type: Table Slot
Units: Volume vs. Value
Description: The estimated total economic value of water stored in the reservoir for discrete storage values.
Information:
Defined by: User-input or by automated procedure if Cumul Stor Val Linearization Automation category has selected the Marginal Value to Table and Lin method.
Marginal Storage Value Table
Type: Table Slot
Units: Storage vs. \$ Value
Description: Anticipated Storage versus Cumulative Storage Value per unit energy
Information: This table should be increasing in storage, and logically decreasing in marginal value
Defined by: Required input
Spill Cost
Type: Agg Series Slot
Units: \$
Description:
Information:
Defined by:
Optimization Future Value
This category allows the optimization to provide slots relating to the future value of water. Its appearance is dependent on selecting the Cumulative Storage Value Table method for the Future Value category.
None
If this method is selected, the future value slots will not be visible, and no linearization will be attempted.
Opt Cumulative Storage Value Table
If this method is selected, the following slots will be visible, and linearization will be allowed.
Slots Specific to This Method
Cumul Stor Val LP Param
Type: Table Slot
Units: Volume, Volume, Volume
Description: Specifies the storage points used to take the tangent, line and piecewise approximations for Cumul Stor Val Table linearization
Information:
Defined by: User-input or by automated procedure if Cumul Stor Val Linearization Automation category has selected the Marginal Value to Table and Lin method.
Hydrologic Inflow
If any method in this category is selected, hydrologic inflow is included in the reservoir mass balance. Optimization assumes hydrologic inflow to be known (data) and it is not solved for by the reservoir regardless of the method selected. See “Hydrologic Inflow” in Objects and Methods for additional information.
Optimization Spill
The Optimization Spill methods determine how spill is calculated for the reservoir and generates physical constraints that correspond to the selected methods.
This category is dependent on selection of the Independent Linearizations method for the Optimization Power category. However, the method selected in the Optimization Spill category must match with the corresponding non-optimization method in the Spill category.
Spill is an Optimization decision variable. The following constraint is always generated for a reservoir:
(5.42)    Outflow = Turbine release (or Release) + Spill
The spill methods generate values applicable to an additional constraint:
(5.43)    Spill = Regulated Spill + Unregulated Spill + Bypass,
where some of these terms may be omitted if they do not apply to the selected spill method.
Depending on the method selected, some of the following slots will be added. Other slots will be used from the non-optimization method selected. See “Spill” in Objects and Methods for details on non-optimization Spill methods.
As applicable, the following constraints are also added:
(5.44)    Bypass <= Bypass Capacity
(5.45)    Regulated Spill <= Regulated Spill Capacity
(5.46)    Unregulated Spill = Unregulated Spill Capacity
Related Slots
Bypass Capacity
Type: Series Slot
Units: Flow
Description: Bypass capacity
Information:
Defined by: Numerical 2-D Approximation in terms of storage, based upon the Bypass Capacity Table.
Bypass Capacity Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding maximum bypass spill values
Information:
Defined by: Internally developed based on Bypass Table and Elevation Volume Table relationships. For each pool elevation in the Bypass Table, the Bypass Capacity Table has a row relating Storage to Bypass Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Regulated Spill Capacity
Type: Series Slot
Units: Flow
Description: Regulated spill capacity
Information:
Defined by: Numerical 2-D Approximation in terms of storage, based upon the Regulated Spill Capacity Table.
Regulated Spill Capacity Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding maximum regulated spill values
Information:
Defined by: Internally developed based on Regulated Spill Table and Elevation Volume Table relationships. For each pool elevation in the Regulated Spill Table, the Regulated Spill Capacity Table has a row relating Storage to Regulated Spill Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Regulated Spill or Bypass LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points use to take the tangent, line and piecewise approximations for Regulated Spill Capacity linearization and Bypass Spill Capacity linearization.
Information:
Defined by: User-input
Unregulated Spill Linearization Table
Type: Table Slot
Units: Volume vs. Flow
Description: Storage vs. corresponding unregulated spill values
Information:
Defined by: Internally developed based on Unregulated Spill Table and Elevation Volume Table relationships. For each pool elevation in the Unregulated Spill Table, the Unregulated Spill Capacity Table has a row relating Storage to Unregulated Spill Capacity. The Pool Elevations are converted to Storage using the Elevation Volume Table.
Unregulated Spill LP Param
Type: Table Slot
Units: Volume
Description: Specifies the Storage points use to take the tangent, line and piecewise approximations for Unregulated Spill Linearization Table linearization
Information:
Defined by: User-input
None
If this method is selected the slot bounds in the slot configuration dialog are set to zero. No additional constraints are generated.
Opt Monthly Spill
Note:  This method is not functional in RPL Optimization.
This method sets the lower and upper bounds on spill. The lower bound is set to zero and the default upper bound is set to a very big number (9,999,999 cms). The default upper bound can be revised in the Spill slot configuration, Max Value parameter. No additional constraints are generated beyond these bounds.
Opt Unregulated
If this method is selected only unregulated spill is considered and the following constraint is added to the LP:
(5.47)    Spill = Unregulated Spill
Opt Regulated
When this method is selected only regulated spill is considered. The lower bound on spill is set to zero and the following constraint is added to the LP:
(5.48)    Spill = Regulated Spill
Opt Regulated and Unregulated
When this method is selected unregulated and regulated spill are considered and the following constraint is added to the LP:
(5.49)    Spill = Regulated Spill + Unregulated Spill
Opt Regulated and Bypass
When this method is selected only regulated and bypass spill are considered and the lower bound on spill is set to zero and the following constraint is added to the LP:
(5.50)    Spill = Regulated Spill + Bypass
Opt Regulated, Bypass and Unregulated
When this method is selected unregulated, regulated and bypass spill are considered and the following constraint is added to the LP:
(5.51)    Spill = Regulated Spill + Unregulated Spill + Bypass
Opt Bypass, Regulated and Unregulated
When this method is selected unregulated, regulated and bypass spill are considered and the following constraint is added to the LP:
(5.52)    Spill = Bypass + Regulated Spill + Unregulated Spill
Release Capacity Numerical Approximation
When Release Capacity is a part of the Optimization problem, this slot is numerically approximated as a function of Pool Elevation (Numerical 2-D Approximation). The relationship between Pool Elevation and Release Capacity will come from the user-input Max Release Table. The table will be queried using user-input points defined in the Release LP Param table.
Modeling a Storage Reservoir
Steps to follow in setting up a Storage reservoir for optimization
1. Set up a running simulation model, using methods that are compatible with optimization for Spill.
2. Select the Optimization Spill method corresponding to the method selected in the Spill category.
3. Fill in the LP Param table related to Release.
4. If future value is needed, select a method in the Future Value category, followed by the Optimization Future Value category, and if desired, Cumul Stor Val Linearization Automation.
5. Selection of the remaining methods and linearizations can be done in any order. Pool elevation linearizations, Pool Elevation Linearization Automation, Evaporation and Precipitation, Optimize Evaporation Computation, Evaporation Linearization Automations, Bank Storage, Hydrologic Inflow, Energy In Storage, and Diversion from Reservoir. The appropriate data must be entered for each method.
Thermal
The Thermal object represents the economics of power generation. In optimization, the thermal object can influence the solution. In addition to allowing a modeler to maximize the economic value of hydropower, the thermal object allows a modeler to write constraints and objectives on the power-related multislots. For example, total system hydropower generation or capacity can be maximized or constrained to meet a minimum level. See “General Slots” in Objects and Methods for thermal object documentation.
User Methods in Optimization
The following categories and methods are available for use in the Thermal object in Optimization.
Preferred Customer Category
A group of reservoirs may be obligated to meet the power demands of preferred customers before this energy is used for other purposes. For example, if a group of reservoirs is owned by another entity, the energy demand of their customers must be met before the energy is coordinated with the other reservoirs in an economic objective, and in this sense, their customers are preferred. In such a situation, some (and perhaps all) of these reservoirs are also treated as allocated energy that can be flexibly used in coordination with the remaining reservoirs.
The methods in this category model the energy needs of the preferred customers. The preferred customers are identified by membership in a “Preferred Customer” subbasin. This is a predefined type of subbasin. See “Preferred Customer” in Objects and Methods for the methods in this category.
Although still shown in the interface, this method no longer does anything in the RPL based optimization.
Regulation Category
Regulation is one of the ancillary services that hydropower plants can supply in addition to power to increase the reliability and flexibility of the power system to adjust to fluctuations in power demand and supply. When a plant is regulating it will follow the load within some prescribed band of power rather than generating a fixed amount of power. Typically, regulation is a valuable service that can be provided efficiently by hydropower compared to alternative power sources. In locations where regulation is marketed it usually commands a solid premium above the price of the power generated. This value is partially reduced by the increased maintenance costs associated with regulation. See “Regulation” in Objects and Methods for the methods in this category.
These methods determine if hourly power load data should be part of the economic valuation of hydropower. See “Load” in Objects and Methods for additional information.
The category is dependent on selecting the Hourly Load method from the Load category.
None
This is the default no-action method.
See “Calculate Modified Load” in Objects and Methods for the slots for this method and the simulation calculations.
The Modified Load is defined by the following constraint:
(5.53)
when all of these power sources are selected. If any of the power sources are NaN in the Modified Load Power Sources Used table then the terms for those power sources are omitted from the constraint.
In the policy, the following types of sample statement can be added:
REPEATED MAXIMIN
FOREACH (DATETIME date IN @“Start Timestep” TO @ “Finish Timestep”
END FOREACH
END MAXIMIN
This constraint will minimize the largest values of modified load.
Economic Valuation User Methods
These methods model the economic valuation of hydropower during an optimization run using the Optimization controller. The category doesn’t exist in the Simulation and Rulebased Simulation controllers. The values are based either explicitly or implicitly on the replacement of thermal power sources and the associated cost savings. (The descriptions of possible optimization policy in this section are not intended to exactly show the syntax of the policy statements. This is in part because the policy syntax differs under the old Optimization controller and the new Optimization controllers.)
The methods in this category exactly parallel the methods in the Thermal Replacement Value category for simulation, with the exception that no attempt is made to attribute value to particular energy sources. Thus, simulation methods that are identical except for the order of evaluation map to a single optimization method. This optimization method is dependent on one of the appropriate simulation methods being selected.
All of the methods use the slot Avoided Operating Cost to represent the explicit or implicit savings to the thermal system from hydropower generation. The methods differ in how they compute Avoided Operating Cost. It is assumed that the user will write an objective function that either directly or indirectly maximizes Avoided Operating Cost.
In this description, anywhere it says Net Avoided Cost or Avoided Operating Cost, it should have either Thermal, Block, or Linear added to the front of it, i.e. Linear Net Avoided Cost, depending on method selections.
One possible objective function is as follows:
Objective 1: Maximize Net Avoided Cost
Net Avoided Cost is defined as the Avoided Operating Cost minus the value of energy used for generation and energy lost to spill:
Future Value of Used Energy and Spill Cost are multislots that are assumed to be linked to the individual values on power reservoirs. The individual reservoir calculations use a power coefficient and a dollar value to translate releases into these costs.
An alternative to penalizing the Future Value of Used Energy and Spill Cost is to maximize the Total Cumulative Storage Value, a multislot with the expected value of all water remaining in storage. This multislot is expected to be linked to the Cumulative Storage Value on the individual reservoirs, where it is a piecewise linear function of storage.
One possible objective is as follows:
Objective 2: Maximize Avoided Operating Cost +
Total Cumulative Storage Value (Final timestep)
Optionally, the objective can subtract the following term, Total Cumulative Storage Value (Initial timestep).
Objective 3: Maximize Avoided Operating Cost +
Total Cumulative Storage Value (Final timestep) -
Total Cumulative Storage Value (Initial timestep)
Subtracting this constant term does not effect the optimal solution, but the reported objective function value will now reflect the change in total Cumulative Storage Value, typically a more meaningful number.
In some cases a utility may be allocating additional energy from outside the basin. If data is specified for the slots described below, the optimization will automatically create variables for each column of the Allocated Detail Energy Slot. These variables are constrained to minimum and maximum values:
The Allocated Detail Energy is further constrained to meet periodic totals where the period is a multiple of the timesteps of the run. For example, a model with a 6 Hour timestep, might have a total daily energy target. More generally, the period is specified by the timesteps with non-zero values for Allocated Total Energy. The Allocated Detail Energy is required to meet the totals. For a daily period the constraint is
The user may further constrain allocated energy by selecting the Preferred Customer method from the Preferred Customer Category
Thermal Unit Replacement Value
None
Calculate Thermal Unit Replacement Value
The economic value of hydropower is set equal to (or replaced by) the savings from replacing generation from thermal power sources.
A constraint is added to meet the load. This load must be met (or exceeded) by a combination of the following power sources: thermal energy, power reservoir energy, allocated energy (from outside the basin), and net energy from pumped storage facilities (generation - pumping).
(5.54)
The constraint is written as an inequality rather than an equality to allow for piecewise linearization of power. The assumption is that an objective function will be written that will tend to maximize the energy generated for a given amount of turbine release. For example, an objective function minimizing the cost of thermal generation would be sufficient.
Additional terms are available for writing more complex objective functions. In this method, Avoided Operating Cost is defined as the reduction in the cost of thermal generation, the thermal costs of meeting the load with only thermal sources minus the cost of a combined hydropower and thermal solution.
(5.55)
Thermal Energy is further constrained by unit capacity and availability:
Slots Specific to This Method
Block Economic Value
None
Calculate Block Economic Value
The economic value of hydropower is set equal to (or replaced by) a piecewise linear function of hydropower generated. The piecewise function can vary by time period. While there is no direct linkage to thermal sources of power, one interpretation of the piecewise linear function is that it represents the coordinated reduction in other power sources as a result of hydropower generation. This method does not attempt to meet an explicit load, rather the load is assumed to be included in the process that generates the piecewise linear functions.
The piecewise linear functions are represented by two slots: maximum of Hydro Block Use slot (same for all t) and Hydro Block Costs. The Hydro Block Costs are the slope of the piecewise linear segments, or alternatively the value of a unit of power. The piecewise linear function is assumed to be concave: the costs are assumed to decrease as the block number increases.
The method name indicates which hydropower resources should be evaluated by the piecewise linear function. Any power sources that precede the “Block” keyword are assumed to already be included in the piecewise linear function and are not evaluated. The order of power sources after the “Block” keyword doesn’t matter for optimization. In this case, the power sources included are as follows:
• Allocated energy
• Conventional hydropower
• Pumped storage units (both pumping and generation)
Unevaluated: None.
A constraint is added to limit the Hydro Block Use credits to the net generation from all sources minus the Preferred Customer Energy demands that must first be met by the generation.
(5.56)
The constraint is written as an inequality rather than an equality to allow for piecewise linearization of power. This constraint is triggered by writing an objective function that includes maximizing Avoided Operating Cost. In addition to this constraint, Avoided Operating Cost is set equal to (or replaced by) the piecewise linear value of power:
(5.57)
Slots Specific to This Method
Linear Economic Value
None
Calculate Linear Economic Value
The economic value of hydropower is set equal to (or replaced by) a linear function of hydropower generated. The function can vary by time period. This method, in essence, models a block valuation but with only one block.
(5.58)
The constraint is written as an inequality rather than an equality to allow for piecewise linearization of power. This constraint is triggered by writing an objective function that includes maximizing Linear Avoided Operating Cost.
Slots Specific to This Method
Modeling a Thermal Object
Steps to follow in converting a model prior to 5.1 to the approach used by 5.1:
1. Extract model information using an old executable
b. Deactivate any policy referencing the Thermal Object
c. Save the Opt Goal set: we will load it later
d. Record the selected thermal method: we will later use the power source ordering
e. Record Avoided Operating Cost upper and lower bounds
f. Record the Block End Tolerance: slot is replicating and changing to scalar slot
g. Record the reporting method: we will reinstate it.
2. Put information into model using 5.1 executable
a. Change the thermal methods as desired for each Linear, Block, or Thermal category
1. Set the power source ordering for each selected method
For example: Nan for sources that used to come before Block or Therm in the old method name; 1,2, etc. for sources after Block or Therm
2. Avoided Operating Cost for each selected method, e.g. Linear Avoided Operating Cost
View Configuration
Lower Bound = 0 (or available from earlier executable unless this is a new method)
Upper Bound = 1e7 (for example) (or available from earlier executable unless this is a new method)
3. Import costs if they weren't transferred from the previous model for some reason
4. Set Hydro Block Use bounds for block method if missing
5. Set (Block or Thermal) End Tolerance
b. Set the reporting methods for simulation as desired (optional)
One reporting category for each selected power economic evaluation method
Typically, set the method in this category to report the same thing used in an optimization objective function
c. Load the goal set and replace any thermal slot references to old slots with the new method-specific versions of the slots
3. The Total Hydro Capacity slot on the Thermal object should have values by the end of simulation either by linking to Hydro Capacity on power reservoirs (plant power methods) or by setting the slot to input (Unit Power Table method). The economic value of power generation can be limited by Total Hydro Capacity. In particular, negative or invalid values for Total Hydro Capacity result are treated as zero capacity.

Revised: 06/03/2019