---
jupytext:
text_representation:
extension: .md
format_name: myst
format_version: 0.13
jupytext_version: 1.13.8
kernelspec:
display_name: 'Python 3'
name: python3
---
(module)=
# module
A reservoir with attached (aggregated) plant.
| | |
|---|---|
|Input connections||
|Output connections||
|License|PRODRISK_OPEN|
|Release version|9.6.1|
```{contents}
:local:
:depth: 1
```
# module
A module that is part of a regulated hydropower watercourse
| | |
| ----------------- | ------------- |
| Input connections | |
| License | PRODRISK_OPEN |
| Release version | 9.6.1 |
```{contents}
:local:
:depth: 1
```
## Introduction
The module is an aggregated object combining a reservoir with an attached plant. The latter is an aggregated description of all generators in the plant. The following input attributes are mandatory:
- Maximum volum of the reservoir.
## Dummy modules
It is possible to set either the volume or the production to zero to model a plant without storage or a reservoir without a plant, respectively.
## Examples
- [](hydro_module)
## Attributes
```{code-cell} ipython3
:tags: ['remove-input', 'full-width']
import itables as itables
from itables import init_notebook_mode
init_notebook_mode(all_interactive=True, connected=True)
import pandas as pd
from IPython.core.display import HTML
table = pd.read_csv('../../../attributes.csv')
core_type_dict = {'int' : 'integer','double':'float','string':'string','int_array':'list-of-integer-values','double_array':'list-of-double-values','xy':'table-xy-curve','xy_array':'list-of-tables','txy':'time-series','txy_stochastic':'stochastic-time-series'}
object_attributes = table[table["Object type"] == "module"].reset_index().iloc[:, 1:]
for index, row in object_attributes.iterrows():
object_attributes.at[index, "Attribute name"] = f"""{row['Attribute name']}"""
object_attributes.at[index, "Core data type"] = f"""{row['Core data type']}"""
itables.show(object_attributes,
dom='tlip',
search={'regex': True, "caseInsensitive": True},
column_filters='header',
columns=[
{
'name': '',
'className': 'dt-control',
'orderable': False,
'data': None,
'defaultContent': '',
},
{
'name': 'Attribute name',
'className': 'dt-body-left'
},
{
'name': 'Python data type',
'className': 'dt-body-left'
},
{
'name': 'Core data type',
'className': 'dt-body-left'
},
{
'name': 'unit',
'className': 'dt-body-left'
},
{
'name': 'I/O',
'className': 'dt-body-left'
},
{
'name': 'License',
'className': 'dt-body-left'
},
{
'name': 'Version added',
'className': 'dt-body-left'
},
{
'name': 'Description',
'visible': False
}
]
)
HTML('''''')
```
(module:meanRegInflow)=
### meanRegInflow
Mean reg. inflow per year (unit: Mm3)
(module:MinDischargeCostDPrice)=
### MinDischargeCostDPrice
Cost of violating minimum discharge constraint (unit: EUR/MWh)
(module:bypass)=
### bypass
Output bypass (unit: m3/s)
(module:energyEquivalent)=
### energyEquivalent
Time-dependent global energy equivalent (to ocean) (unit: kWh/m3)
(module:MinBypassCostVolume)=
### MinBypassCostVolume
Cost of violating minimum bypass constraint (unit: EUR/1000m3)
(module:max_reserve_up)=
### max_reserve_up
Maximum reserve up allocation (unit: MW)
(module:n_negative_inflows_back)=
### n_negative_inflows_back
Number of occurances of negative inflows in last backward iteration (unit: #)
(module:maxVol)=
### maxVol
Time-dependent maximal volume (unit: Mm3)
(module:energyEquivalentConst)=
### energyEquivalentConst
Global energy equivalent (to ocean) (unit: kWh/m3)
(module:average_neg_inflow_back)=
### average_neg_inflow_back
Average negative inflow in last backward iteration (unit: Mm3)
(module:reservoirMinRestrictionType)=
### reservoirMinRestrictionType
Min reservoir restriction type. can have three different values: 0 = no restriction, 1 = soft restriction (a less strict hard constraint is calculated based on average inflow and known upstream discharge/bypass due to minimum discharge limits), 2 = absolute restriction (violations penalized with given ). (unit: none)
(module:n_different_inflows)=
### n_different_inflows
Number of calculated inflows in last backward recursion (unit: #)
(module:min_vol_violation)=
### min_vol_violation
Violations of minimum volume limit. (unit: Mm3)
(module:MinReservoirCostVolume)=
### MinReservoirCostVolume
Cost of violating minimum reservoir constraint (unit: EUR/1000m3)
(module:RampingDownCostVolume)=
### RampingDownCostVolume
Cost of violating ramping down constraint. (unit: EUR/1000m3)
(module:min_bypass_violation)=
### min_bypass_violation
Violations of minimum bypass limit. (unit: m3/s)
(module:MinDischargeCostEnergy)=
### MinDischargeCostEnergy
Cost of violating minimum discharge constraint (unit: EUR/MWh)
(module:BackwardSpillingCostVolume)=
### BackwardSpillingCostVolume
Cost of spilling in backward recursion (unit: EUR/1000m3)
(module:reserve_down_allocation)=
### reserve_down_allocation
Output reserve down allocation (unit: MW)
(module:maxProd)=
### maxProd
Max production (unit: MW)
(module:RampingUpCostEnergy)=
### RampingUpCostEnergy
Cost of violating ramping up constraint. (unit: EUR/MWh)
(module:rsvMax)=
### rsvMax
Max reservoir volume (unit: Mm3)
(module:BufferReservoirCostEnergy)=
### BufferReservoirCostEnergy
Cost of deviating from the guideline curve for buffer reservoirs (unit: EUR/MWh)
(module:BackwardSpillingCostEnergy)=
### BackwardSpillingCostEnergy
Cost of spilling in backward recursion (unit: EUR/MWh)
(module:HeadCoefficient)=
### HeadCoefficient
Head coefficients represent the expected added value of storing water in the reservoirs due to head. (unit: kEUR/Mm3)
(module:maxBypassConst)=
### maxBypassConst
Max bypass (unit: m3/s)
(module:min_vol_violation_last_backward)=
### min_vol_violation_last_backward
Violations of minimum volume limit in last backward iteration (unit: Mm3)
(module:volHeadCurve)=
### volHeadCurve
the relation between volume (Mm3) and head (MASL) of the module reservoir. This is not a required input attribute, and nominalHead and submersion should be set to 0 if the volHeadCurve is left out. The PQcurve will not be scaled by the height difference in these cases. (unit: Mm3 and m)
(module:production)=
### production
Output production (unit: MW)
(module:reservoirMaxRestrictionType)=
### reservoirMaxRestrictionType
Max reservoir restriction type. can have three different values: 0 = no restriction, 1 = soft restriction (a less strict hard constraint is calculated based on average inflow and known upstream discharge/bypass due to minimum discharge limits), 2 = absolute restriction (violations penalized with given ). (unit: none)
(module:refVol)=
### refVol
Time-dependent reservoir guidline curves (for buffer reservoirs). (unit: %)
(module:minBypass)=
### minBypass
Time-dependent minimal water bypass (unit: m3/s)
(module:MinDischargeCostVolume)=
### MinDischargeCostVolume
Cost of violating minimum discharge constraint (unit: EUR/1000m3)
(module:BackwardBypassCostVolume)=
### BackwardBypassCostVolume
Cost of bypassing in backward recursion (unit: EUR/1000m3)
(module:connectedSeriesId)=
### connectedSeriesId
Id of connected inflowSeries (unit: none)
(module:plantName)=
### plantName
Module plant name (unit: none)
(module:number)=
### number
Module number (unit: none)
(module:reservoirVolume)=
### reservoirVolume
Output reservoir volume (unit: Mm3)
(module:connected_unreg_series_id)=
### connected_unreg_series_id
ID number of the unregulated inflow series the module is connected to. Default same as connectedSeriesID. (unit: none)
(module:res_ramp_piecewise_linear)=
### res_ramp_piecewise_linear
If 1, reservoir ramping limits are linearly interpolated between given weeks. If zero (default), the limits are kept constant until next given week. Note that the value within a week is constant. (unit: none)
(module:ownerShare)=
### ownerShare
Fraction owned of the module. Used to scale down the production capacity. Must be in [0,1]. (unit: none)
(module:reservoirReferenceLevels)=
### reservoirReferenceLevels
Reservoir reference levels for the standard SHOP cuts. (unit: none)
(module:submersion)=
### submersion
Module outlet line height in MASL. (unit: m)
(module:maxDischarge)=
### maxDischarge
Time-dependent maximal discharge (unit: m3/s)
(module:maxBypass)=
### maxBypass
Time-dependent maximal water bypass (unit: m3/s)
(module:min_vol_violation_extra_cut)=
### min_vol_violation_extra_cut
Violations of minimum volume limit in extra cut generation (unit: Mm3)
(module:expected_water_value_indvan_prd)=
### expected_water_value_indvan_prd
Expected global water value at start time (to ocean) (unit: Ec /m3)
(module:RampingDownCostEnergy)=
### RampingDownCostEnergy
Cost of violating ramping down constraint (unit: EUR/MWh)
(module:ForwardSpillingCostDPrice)=
### ForwardSpillingCostDPrice
Cost of spilling in forward simulation (unit: EUR/MWh)
(module:min_bypass_violation_extra_cut)=
### min_bypass_violation_extra_cut
Violations of minimum bypass limit in extra cut generation (unit: m3/s)
(module:res_ramp_unit)=
### res_ramp_unit
Unit of reservoir ramping, if given. Allowed values: Mm3/h, Mm3/week (default), m/h, m/week, cm/h, cm/week. If length (m or cm) per time is used, the ramp rate will reflect the change in surface evaluated at the defined nominal height. (unit: none)
(module:local_water_value_indvan_prd)=
### local_water_value_indvan_prd
Local water value at start time (unit: EUR/MWh)
(module:BackwardBypassCostEnergy)=
### BackwardBypassCostEnergy
Cost of bypassing in backward recursion (unit: EUR/MWh)
(module:max_reserve_down)=
### max_reserve_down
Maximum reserve down allocation (unit: MW)
(module:cutCoeffs)=
### cutCoeffs
Cut coefficients of the module production are given as an array of XY tables. Each table in the array corresponds to a price level in ascending order. The x values are all 0, while the y values represent the coefficients. (unit: EUR/MWh)
(module:max_reserve_down_cost)=
### max_reserve_down_cost
Violations of maximum reserve down allocation (unit: MW)
(module:localEnergyEquivalent)=
### localEnergyEquivalent
Time-dependent local energy equivalent (unit: kWh/m3)
(module:ForwardSpillingCostVolume)=
### ForwardSpillingCostVolume
Cost of spilling in forward simulation (unit: EUR/1000m3)
(module:ForwardBypassCostVolume)=
### ForwardBypassCostVolume
Cost of bypassing in forward simulation (unit: EUR/1000m3)
(module:nominalHead)=
### nominalHead
Net nominal head used as reference height for the PQcurve (unit: m)
(module:rampingUp)=
### rampingUp
Used to restrict the maximal increase in reservoir volume per week. It is possible to give in one, both ore none of the ramping attributes, as they are not required input to Prodrisk. The unit is specified with the attribute res_ramp_unit. To toggle off the ramping constraint after a certain point in time, the value - 1 should be given in the time series. (unit: Mm3/week)
(module:MinBypassCostEnergy)=
### MinBypassCostEnergy
Cost of violating minimum bypass constraint (unit: EUR/MWh)
(module:minDischarge)=
### minDischarge
Time-dependent minimal discharge (unit: m3/s)
(module:min_bypass_violation_last_backward)=
### min_bypass_violation_last_backward
Violations of minimum bypass limit in last backward iteration (unit: m3/s)
(module:scenario_start_volumes)=
### scenario_start_volumes
Reservoir start volume per scenario (unit: Mm3)
(module:MaxReservoirCostVolume)=
### MaxReservoirCostVolume
Cost of violating maximum reservoir constraint (unit: EUR/1000m3)
(module:head_coefficients_used_in_run)=
### head_coefficients_used_in_run
From cut calculations run two main iterations (no head coefficients given), this contains the head coefficients from the first main iteration. From runs with head coefficient input, this attribute contains the input series, as HeadCoefficient is overwritten with new coefficients. (unit: kEUR/Mm3)
(module:localInflow)=
### localInflow
Output inflow (unit: m3/s)
(module:min_discharge_violation_extra_cut)=
### min_discharge_violation_extra_cut
Violations of minimum discharge limit in extra cut generation (unit: m3/s)
(module:MaxReservoirCostDPrice)=
### MaxReservoirCostDPrice
Cost of violating maximum reservoir constraint (unit: EUR/MWh)
(module:waterValueConversionFactors)=
### waterValueConversionFactors
Local energy equivalents at the best efficiency point which the SHOP cuts refer to. (unit: GWh/Mm3)
(module:BackwardSpillingCostDPrice)=
### BackwardSpillingCostDPrice
Cost of spilling in backward recursion (unit: EUR/MWh)
(module:RampingDownCostDPrice)=
### RampingDownCostDPrice
Cost of violating ramping down constraint (unit: EUR/MWh)
(module:headDependentQMax)=
### headDependentQMax
The height correction of the maximal module discharge has x values given as relative height (h/h_max). This is not a required input attribute. (unit: m3/s)
(module:topology)=
### topology
Describes where the water running through the module will end up. Each of the three entries is the module number of the module where the water will flow: [discharge, bypass, owerflow]. Module number 0 is reserved for the sea (water is lost out of the system). (unit: none)
(module:ForwardSpillingCostEnergy)=
### ForwardSpillingCostEnergy
Cost of spilling in forward simulation (unit: EUR/MWh)
(module:global_water_value_indvan_prd)=
### global_water_value_indvan_prd
Global water value at start time (to ocean) (unit: EUR/MWh)
(module:regulationType)=
### regulationType
0 = buffer res 1 = reguation res (unit: none)
(module:overflow)=
### overflow
Output overflow (unit: m3/s)
(module:ForwardBypassCostEnergy)=
### ForwardBypassCostEnergy
Cost of bypassing in forward simulation (unit: EUR/MWh)
(module:MinReservoirCostEnergy)=
### MinReservoirCostEnergy
Cost of violating minimum reservoir constraint (unit: EUR/MWh)
(module:localEnergyEquivalentConst)=
### localEnergyEquivalentConst
Local energy equivalent (unit: kWh/m3)
(module:meanUnregInflow)=
### meanUnregInflow
Mean unreg. inflow per year (unit: Mm3)
(module:BufferReservoirCostDPrice)=
### BufferReservoirCostDPrice
Cost of deviating from the guideline curve for buffer reservoirs (unit: EUR/MWh)
(module:probability_of_negative_inflow_back)=
### probability_of_negative_inflow_back
Probability of occurances of negative inflows in last backward iteration (unit: 1)
(module:BackwardBypassCostDPrice)=
### BackwardBypassCostDPrice
Cost of bypassing in backward recursion (unit: EUR/MWh)
(module:name)=
### name
Module name (unit: none)
(module:reserve_up_allocation)=
### reserve_up_allocation
Output reserve up allocation (unit: MW)
(module:res_ramp_intra_week)=
### res_ramp_intra_week
If 1, reservoir ramping is considered in each water balance within weeks. If 0 (default), reservoir ramping is only included at the end of the week, i.e. weekly average ramping satisfies constraints. Activating this option can be mkuch more time consuming. (unit: none)
(module:RampingUpCostVolume)=
### RampingUpCostVolume
Cost of violating ramping up constraint. (unit: EUR/1000m3)
(module:min_discharge_violation_last_backward)=
### min_discharge_violation_last_backward
Violations of minimum discharge limit in last backward iteration (unit: m3/s)
(module:BufferReservoirCostVolume)=
### BufferReservoirCostVolume
Cost of deviating from the guideline curve for buffer reservoirs (unit: EUR/1000m3)
(module:startVol)=
### startVol
Reservoir start volume (unit: Mm3)
(module:MaxReservoirCostEnergy)=
### MaxReservoirCostEnergy
Cost of violating maximum reservoir constraint (unit: EUR/MWh)
(module:RampingUpCostDPrice)=
### RampingUpCostDPrice
Cost of violating ramping up constraint. (unit: EUR/MWh)
(module:rampingDown)=
### rampingDown
Used to restrict the maximal decrease in reservoir volume per week. It is possible to give in one, both ore none of the ramping attributes, as they are not required input to Prodrisk. The unit is specified with the attribute res_ramp_unit. To toggle off the ramping constraint after a certain point in time, the value -1 should be given in the time series. (unit: Mm3/week)
(module:ForwardBypassCostDPrice)=
### ForwardBypassCostDPrice
Cost of bypassing in forward simulation (unit: EUR/MWh)
(module:max_reserve_up_cost)=
### max_reserve_up_cost
Violations of maximum reserve up allocation (unit: MW)
(module:maxDischargeConst)=
### maxDischargeConst
Max discharge (unit: m3/s)
(module:MinBypassCostDPrice)=
### MinBypassCostDPrice
Cost of violating minimum bypass constraint (unit: EUR/MWh)
(module:min_discharge_violation)=
### min_discharge_violation
Violations of minimum discharge limit. (unit: m3/s)
(module:shopWaterValues)=
### shopWaterValues
Water values (reservoir cut coefficients) for the SHOP cuts. (unit: none)
(module:hydraulicType)=
### hydraulicType
Describes any hydraulic coupling between modules. The first element is a code for the type of hydraulic coupling: 100 = modules above same station, no free flow between them, 120 = modules above same station, flow between them restricted by coupling capacity, 130 = modules above same station, flow between them controlled by strategy, 200 = coupled modules, flow between them restricted by coupling capacity, 300 = coupled modules, flow between them controlled by strategy. The second element is an id shared between the modules in the coupling, The third element is the coupling capacity in m3/s (integer value). If the module is not part of a hydraulic coupling, this attribute may be left out or entered with all numbers set to 0. (unit: none)
(module:mean_reservoir_trajectories_used_in_run)=
### mean_reservoir_trajectories_used_in_run
From cut calculations run two main iterations (no head coefficients given), this contains the mean reservoir trajectories from the first main iteration. From runs with head coefficient input, this attribute contains the input series, as MeanReservoirTrajectories is overwritten with new coefficients. (unit: Mm3)
(module:maintenance)=
### maintenance
Time series used to specify the reduction in the power output of the module due to maintenance. This attribute is not required input and may be left out if no maintenance is scheduled. (unit: MW)
(module:minVol)=
### minVol
Time-dependent minimal volume (unit: Mm3)
(module:MeanReservoirTrajectories)=
### MeanReservoirTrajectories
Mean reservoir trajectories, used to scale the PQ curve with head in backward iterations. (unit: Mm3)
(module:PQcurve)=
### PQcurve
Production-discharge table for the power production. The PQ curve can be omitted for modules without any production (pure reservoirs). The curve should be based on nominal head. (unit: MW and m3/s)
(module:discharge)=
### discharge
Output discharge (unit: m3/s)
(module:MinReservoirCostDPrice)=
### MinReservoirCostDPrice
Cost of violating minimum reservoir constraint (unit: EUR/MWh)