skip to main content
Inline Power Plant
Objects and Methods
Inline Power Plant
This object models an inline power plant, otherwise known as a run-of-the-river power plant. These power facilities rely on the natural slope of the river channel to provide necessary head and assumes there is very little or no storage.
General Slots
Bypass
Type: Series Slot
Units: flow
Description: Flow diverted around the power plant
Information: Set to the sum of Min Bypass and any excess water that the turbines cannot pass. If Turbine Release is known, will be set to (or Outflow) minus Turbine Release.
I/O: Output
Inflow
Type: Series Slot
Units: FLOW
Description: Flow into the power plant
Information:  
I/O: Input or Output
Max Turbine Release
Type: Table Slot
Units: flow
Description: Maximum flow which can pass through the turbines.
Information: A single value must be input.
I/O: Required Input
Min Bypass
Type: Series Slot
Units: flow
Description: Flow intentionally diverted around the power plant.
Information: Assumed to be zero in Bypass calculation if not user input.
I/O: Input
Outflow
Type: Series Slot
Units: flow
Description: Flow rate below the power plant
Information: Set to the sum of Turbine Release and Bypass.
I/O: Input or Output
Power Plant Cap Fraction
Type: Series Slot
Units: None
Description: Fraction of the capacity at which the plant is operating.
Information: Used when the plant is not operating at full capacity (e.g. a turbine in not functional)
I/O: Optional, the slot defaults to 1 if not input by the user.
Turbine Release
Type: Series Slot
Units: flow
Description: Flow passing through the turbines.
Information: This value is used in power calculations.
I/O: Input or Output
User Methods
Inline Turbine Release and Bypass
These methods determine how Turbine Release and Bypass are specified or calculated
* Specify Flows
In this default method, you can specify flows that will be used in the Turbine Release and/or Bypass computation. You must specify a Max Turbine Release value and then take one of the following actions:
• Optionally, input or set Turbine Release with a rule
• Optionally, input or set Min Bypass with a rule
Slots Specific to This Method
None
Method Details
This method calculates Bypass and/or Turbine Release using the following algorithm.
1. If the Min Bypass slot is not user input, it is assumed to be zero.
2. The temporary Flow variable is set equal to the Inflow or Outflow, depending on the dispatch method that calls this method.
3. Next, the method checks to see if the Turbine Release value has been input or set by rules.
4. If it has, Bypass is calculated as Flow minus Turbine Release.
Several checks are performed to make sure that the specified Turbine Release is not greater than the Max Turbine Release and that Turbine Release plus Min Bypass is not greater than the Flow.
5. If Turbine Release is not input or set by rules, the Bypass is computed.
6. Once the Bypass value is known, Turbine Release can be set to the Flow minus the Bypass.
7. The flow used in the power method, PowerFlow is set equal to Turbine Release.
* Flow Tables
In this method, you define a table relating the flow to the Turbine Release and the flow to the Min Bypass. You can also specify the Min Bypass which takes precedence over this table.
Slots Specific to This Method
Flow vs Min Bypass
Type: Table Slot
Units: Flow vs Flow
Description: This table relates the flow passing through the Inline Power object to the Min Bypass. The flow used in the first column is the Inflow (or Outflow).
Information: At the beginning of the run, this table is verified to ensure that the Min Bypass value is less than or equal to the Flow value, for each row of the table.
I/O: Required
Flow vs Turbine Release
Type: Table Slot
Units:  
Units: Flow vs Flow
Description: This table relates the flow passing through the Inline Power object to the flow passing through the Turbine Release. The flow used in the first column is the Inflow (or Outflow) minus the Min Bypass.
Information: At the beginning of the run, this table is verified to ensure that the Turbine Release value is less than or equal to the Flow value, for each row of the table. A sample table is shown to the right.
I/O: Required
Method Details
1. At the beginning of the run, the Min Turbine Release at Max Generation (MinTRatMaxGen) is found on the Flow vs Power Table as follows. The largest power is found on the Flow Power Table and then the corresponding flow is used as the MinTRatMaxGen. This value represents the smallest flow that produces the maximum power generation; it is not the maximum turbine release. If the Flow Power Tables is not used, MinTRatMaxGen is set to the Max Turbine Release value.
2. Then, within the dispatch, this method calculates Bypass and Turbine Release using the following algorithm.
3. If the Turbine Release value has been input or set by rules, an error will be issued.
4. Next, the temporary Flow variable (this was set by the dispatch method depending on whether Inflow or Outflow is known) is used to interpolate on the Flow vs Min Bypass table to obtain a Min Bypass value. This value is set on the Min Bypass slot, if not input or set by a rule.
5. A temporary PowerFlow variable is computed.
6. The PowerFlow value is used to interpolate on the Flow vs Turbine Release table to obtain a tempTurbineRelease.
Note:  PowerFlow and tempTurbineRelease are not necessarily equal.
7. If the PowerFlow is greater than the MinTRatMaxGen,
8. If the PowerFlow is less than or equal to MinTRatMaxGen,
9. Finally, Turbine Release is set.
10. An Error is issued if the Turbine Release is greater than the Max Turbine Release slot value.
11. Then final Bypass is computed.
12. The PowerFlow values is then passed to the Inline Power method; see “Flow vs. Power Table”.
Inline Power
These methods determine how power is calculated.
* None
This default method does no power calculation and has no slots specific to the method.
* Flow vs. Power Table
This method looks up the power from a table based on the flow rate through the turbines. It uses a linear interpolation to calculate the power. It is important to have enough data values if the power curve is not linear.
Slots Specific to This Method
Energy
Type: Series Slot
Units: Energy
Description: Product of power generated and the timestep length
Information:  
I/O: Output only
Hydro Capacity
Type: Series Slot
Units: power
Description: Maximum power capacity of the inline power plant.
Information: This slot is utilized in optimization
I/O: Output only
Power
Type: Series Slot
Units: POWER
Description: Power generated by flow through the units
Information: Calculated using the PowerFlow and Flow Vs Power Table
I/O: Output only
Flow vs Power Table
Type: Table Slot
Units: Flow vs. Power
Description: Power produced at that given flow rate.These tables should include any maximum or minimum flow rates through the plant and the corresponding values. In theory, the upstream control should account for these maximums and minimums but having them in the table is more complete.
Information:  
I/O: Required Input
When the Specify Flows method (see “Specify Flows”) is selected, the following process occurs.
1. The Power slot is computed via linear interpolation of the Flow vs Power Table using the PowerFlow intermediate value. See “Inline Turbine Release and Bypass” for details on the method used.
2. Energy is then computed as the product of Power and the timestep length.
3. The Hydro Capacity slot is computed as the Max Turbine Release slot value multiplied by the Power Plant Cap Fraction.
When the Flow Tables method (see “Flow Tables”) is selected, the following process occurs.
1. A sample Flow vs Power Table is shown in Figure 16.1. This method uses the PowerFlow intermediate variable and MinTRatMaxGen; see “Flow Tables”. The maximum of the PowerFlow and the MinTRatMaxGen is looked up on Flow vs Power Table to get the tempCapacity. The tempCapacity is then multiplied by the Power Plant Cap Fraction and set on the Hydro Capacity slot.
Figure 16.1  
 
2. The PowerFlow is then looked up on the Flow vs Power Table to get the tempHydropower.
3. Energy is then computed as the product of Power and the timestep length.
* Specify Units Generating
With this method, you specify the turbine capacity and generating capacity for each unit, and for each timestep, you optionally specify the fraction of capacity at which each unit is generating or specify the Unit Turbine Release. The method then calculates the Unit Power and Unit Energy as well as the total plant Turbine Release, Power and Energy. This method cannot be selected in combination with the Flow Tables method in the Inline Turbine Release and Bypass category.
Slots Specific to This Method
Number of Units
Type: Scalar Slot
Units: None
Description: The number of units (generators) in the plant
Information: This must be an integer greater than or equal to 1. If the value is not an integer, RiverWare will round the value down to the nearest integer.
I/O: Required Input
Unit Capacity
Type: Table Slot
Units: Flow, Power
Description: The turbine capacity and generating capacity of each unit
Information: The table has a row for each unit. The first column is the unit turbine capacity, the second column is the unit generating capacity. At the start of a run, RiverWare will automatically resize the number of rows to match the value in the Number of Units slot if they do not match already.
I/O: Unit generating capacity (second column) is Required Input. Unit turbine capacity (first column) is optional input.
Unit Generation Fraction
Type: Agg Series Slot
Units: Fraction
Description: The slot has one column for each unit and represents the fraction of full capacity at which the unit is generating.
Information: If the corresponding Unit Turbine Release is specified (input or rules) and the unit turbine capacity is provided (Unit Capacity slot) then the value is calculated as the Unit Turbine Release divided by unit turbine capacity. Otherwise, if no value is provided it will default to 1 (generating at full capacity). A value outside the range of 0 to 1 will cause the run to abort with an error message.
Note:  If this slot is set by rules, the value in the first column (Unit 1) must be set in order to cause the Inline Power object to redispatch with the new Unit Generation Fraction value. Setting a value with rules in one of the other columns without setting the first column will not cause the object to redispatch. You cannot specify both Unit Turbine Release and Unit Generation Fraction for the same unit.
I/O: Input or Output; if not input and if Unit Turbine Release is not input, then it defaults to 1
Unit Turbine Release
Type: Agg Series Slot
Units: Flow
Description: The flow through each turbine, one column for each unit (turbine)
Information: If not specified (input or rules), the value will be calculated as the unit turbine capacity (Unit Capacity slot) multiplied by the Unit Generation Fraction. If the unit turbine capacity is not provided, the value will be NaN. You cannot specify both Unit Turbine Release and Unit Generation Fraction for the same unit.
I/O: Input or output
Unit Power
Type: Agg Series Slot
Units: Power
Description: The power that is generated by each unit, Unit Capacity multiplied by Unit Generation Fraction
Information: One column for each unit
I/O: Output only
Unit Energy
Type: Agg Series Slot
Units: Energy
Description: The energy that is generated by each unit, Unit Power multiplied by the timestep length
Information: One column for each unit
I/O: Output only
Power
Type: Series Slot
Units: Power
Description: The total power generation of the plant, the sum of Unit Power for all units
Information:  
I/O: Output only
Energy
Type: Series Slot
Units: Energy
Description: The total energy generation of the plant, Power multiplied by the timestep length
Information:  
I/O: Output only
The user must specify the Number of Units scalar slot. This must be an integer greater than or equal to 1. If the value is not an integer, RiverWare will round the value down to the nearest integer. At the start of the run, RiverWare will set the number of rows in the Unit Capacity slot and number of columns in the Unit Generation Fraction, Unit Turbine Release, Unit Power and Unit Energy slots to match the value in the Number of Units scalar slot.
Note:  This could delete rows or columns with data if the Number of Units value is reduced.
To initially add rows and columns to these slots, first set the Number of Units scalar slot to the desired value. Then run the model. The run will abort, but the table and Agg series slots will be resized to the appropriate number of rows and columns. Then the required input values can be entered in the Unit Capacity and Unit Generation Fraction or Unit Turbine Release slots.
The user must specify the generating capacity value for each unit in the Unit Capacity table slot. The turbine capacity values are optional inputs. These are static, physical characteristic parameters. Figure 16.2 is an example.
Figure 16.2   
The user can optionally provide time series values (input or rules) for each unit in the Unit Generation Fraction and Unit Turbine Release Agg series slots. If values are not provided for Unit Turbine Release or Unit Generation Fraction, then Unit Generation Fraction will default to 1. Specifying both Unit Generation Fraction and Unit Turbine Release for the same unit is not permitted. See Figure 16.3.
Figure 16.3   
Note:  When setting the Unit Generation Fraction or Unit Turbine Release values by rules, only values set in the “Unit 1” column will trigger dispatching or redispatching of the Inline Power object. Values set in subsequent columns will not cause the object to dispatch.
The method then performs the following computations.
FOR each unit i
IF Unit Turbine Releasei is input or set by rules
Use the specified Unit Turbine Release to calculate the Unit Generation Fraction, but first check against the unit capacity.
IF Unit Turbine Capacityi is input
IF
Abort with and error message.
ELSE
END IF
ELSE
If there is no unit turbine capacity, then Unit Generation Fraction will just get set to 1.
END IF
ELSE (Unit Turbine Releasei is not specified)
IF Unit Turbine Capacityi is input
Unit Generation Fraction will have been set to 1 if not input or set by rules.
ELSE
Unit Turbine Release cannot be calculated so it will remain as NaN.
END IF
END IF
END FOR
The Power and Energy slots are then calculated as the sum of the Unit Power and Unit Energy.
The the total plant Turbine Release can only be calculated by this method if every unit has either the unit turbine capacity (Unit Capacity slot) or Unit Turbine Release or both specified (input or set by rules). If one or more units has neither of these value specified, then Turbine Release and Bypass will not get set by this method. The values will come from the selected Inline Turbine Release and Bypass method. If Turbine Release is set by this method, it will be checked against plant limits. Then Bypass will get set as well.
IF Turbine Release can be calculated
IF
Abort with an error message
END IF
IF Min Bypass is specified (input or rules)
IF
Abort with an error message
END IF
ELSE
IF
Abort with an error message
END IF
END IF
ELSE (Total plant Turbine Release cannot be calculated)
Leave Turbine Release and Bypass as set by the Inline Power Turbine Release and Bypass method.
END IF
Inline Power Solution Direction
These methods limit the available dispatch methods.
* Solve Upstream or Downstream
This default method allows the inline power object to solve in either direction based on the knowns and unknowns. Both the Solve Given Inflow and Solve Given Outflow dispatch methods are available.
* Solve Downstream Only
This method limits the inline power object’s available dispatch methods to Solve Given Inflow. This method may be useful if rule priorities force the inline power object to dispatch with the undesired method resulting in excessive iterations.
Inline Turbine Ramping
These methods model turbine ramping.
* None
This default method assumes that either ramping is not taking place, or that the user does not care to account for the cost of ramping. No slots are associated with this method.
* Track Ramping
This method models the cost of ramping. The maintenance cost from wear and tear due to ramping will vary depending on the condition of the power plant. Ramping cost is set equal to a user defined Unit Ramping cost times the sum of Turbine Increase and Turbine Decrease.
Slots Specific to This Method
Ramping Cost
Type: Series Slot
Units: Value ($)
Description: Loss of money per timestep due to ramping.
Information: Set equal to the sum of Unit Ramping Cost times the sum of Turbine Increase and Turbine Decrease.
I/O: Output
Turbine Decrease
Type: Series Slot
Units: flow
Description: Decrease in the turbine release relative to last timestep.
Information: Set to the absolute value of Turbine Increase when Turbine Increase is negative, otherwise set to zero.
I/O: Output
Turbine Increase
Type: Series Slot
Units: flow
Description: Increase in turbine release relative to last timestep.
Information: If turbine increase is negative, the slot is set to zero.
I/O: Output
Unit Ramping Cost
Type: Table Slot
Units: $per flow
Description: Maintenance cost of wear and tear due to ramping.
Information: A single value in a table slot determined by users depending on the condition of the power plant.
I/O: Input
Spill Cost
These methods calculate the cost associated with spill.
* None
This default method does no spill cost calculations. No slots are associated with this method.
* Unit Spill Cost
The Unit Spill Cost method is used to calculated the money that is lost when water goes to the bypass as spill rather than through the turbines. Spill cost is calculated as the local variable spill times the Unit Spill Cost.
Slots specific to this Method
Spill Cost
Type: Series Slot
Units: Value ($)
Description: Loss of money per timestep due to spill
Information: Set equal to the unit spill cost times the spill.
I/O: Output
Unit Spill Cost
Type: Table Slot
Units: ValuePerFlow
Description: Money from hydropower lost due to spill.
Information: A single value in a table slot determined by users based on the market value for hydropower and the power produced per unit flow at the power plant.
I/O: Input
Dispatch Methods
This object has the following dispatch methods:
* Solve Given Inflow
The required knowns and unknowns (at the current timestep) are listed below.
Required Knowns
• Inflow
Required Unknowns
• Outflow
The Solve Given Inflow dispatch method solves for Outflow, Bypass, and Turbine Release (if it is not input) based on Inflow.
1. First, the method sets the temporary Flow variable equal to Inflow. Then, the selected method in the Inline Turbine Release and Bypass category (see “Inline Turbine Release and Bypass”) is executed. This method sets Turbine Release and Bypass
Outflow is then set to the sum of Turbine Release and Bypass.
2. A check is performed to ensure that Outflow equals Inflow.
3. Power and Energy are then calculated with a call to the selected Inline Power method using the computed PowerFlow value.
4. A call to the Ramping methods executes any calculations associated with the selected Ramping method.
5. Lastly, a call to the Spill Cost methods execute the selected Spill Cost method.
* Solve Given Outflow
The required knowns and unknowns (at the current timestep) are listed below.
Required Knowns
• Outflow
Required Unknowns
• Inflow
The Solve Given Outflow dispatch method solves for Inflow, Bypass, and Turbine Release (if it is not input) based on Inflow.
1. First, the method sets the temporary Flow variable equal to Outflow. Then, the selected method in the Inline Turbine Release and Bypass category (see “Inline Turbine Release and Bypass”) is executed. This method sets Turbine Release and Bypass
2. Next, the Inflow is then set to the sum of Turbine Release and Bypass.
3. A check is performed to ensure that Outflow equals Inflow.
4. Power and Energy are then calculated with a call to the selected Inline Power method using the computed PowerFlow value.
5. A call to the Ramping methods executes any calculations associated with the selected Ramping method.
6. Lastly, a call to the Spill Cost methods execute the selected Spill Cost method.
 
Revised: 06/03/2019