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