{ "cells": [ { "cell_type": "markdown", "id": "c55525a5", "metadata": {}, "source": [ "(module)=\n", "# module\n", "A reservoir with attached (aggregated) plant.\n", "\n", "| | |\n", "|---|---|\n", "|Input connections||\n", "|Output connections||\n", "|License|PRODRISK_OPEN|\n", "|Release version|9.6.1|\n", "\n", "```{contents}\n", ":local:\n", ":depth: 1\n", "```\n", "\n", "# module\n", "\n", "A module that is part of a regulated hydropower watercourse\n", "\n", "| | |\n", "| ----------------- | ------------- |\n", "| Input connections | |\n", "| License | PRODRISK_OPEN |\n", "| Release version | 9.6.1 |\n", "\n", "```{contents}\n", ":local:\n", ":depth: 1\n", "```\n", "\n", "## Introduction\n", "\n", "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:\n", "\n", "- Maximum volum of the reservoir.\n", "\n", "## Dummy modules\n", "\n", "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.\n", "\n", "\n", "## Examples\n", " - [](hydro_module)\n", " \n", "\n", "\n", "\n", "## Attributes" ] }, { "cell_type": "code", "execution_count": 1, "id": "83b759db", "metadata": { "tags": [ "remove-input", "full-width" ] }, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
Object typeAttribute namePython data typeCore data typeunitI/OLicenseVersion addedDescription
\n", "\n", "
\n", "Loading ITables v2.1.4 from the internet...\n", "(need help?)
\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import itables as itables\n", "from itables import init_notebook_mode\n", "init_notebook_mode(all_interactive=True, connected=True)\n", "import pandas as pd\n", "from IPython.core.display import HTML\n", "\n", "table = pd.read_csv('../../../attributes.csv')\n", "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'}\n", "object_attributes = table[table[\"Object type\"] == \"module\"].reset_index().iloc[:, 1:]\n", "for index, row in object_attributes.iterrows():\n", " object_attributes.at[index, \"Attribute name\"] = f\"\"\"{row['Attribute name']}\"\"\"\n", " object_attributes.at[index, \"Core data type\"] = f\"\"\"{row['Core data type']}\"\"\"\n", "itables.show(object_attributes,\n", " dom='tlip',\n", " search={'regex': True, \"caseInsensitive\": True},\n", " column_filters='header',\n", " columns=[\n", " {\n", " 'name': '',\n", " 'className': 'dt-control',\n", " 'orderable': False,\n", " 'data': None,\n", " 'defaultContent': '',\n", " },\n", " {\n", " 'name': 'Attribute name',\n", " 'className': 'dt-body-left'\n", " },\n", " {\n", " 'name': 'Python data type',\n", " 'className': 'dt-body-left'\n", " },\n", " {\n", " 'name': 'Core data type',\n", " 'className': 'dt-body-left'\n", " },\n", " {\n", " 'name': 'unit',\n", " 'className': 'dt-body-left'\n", " },\n", " {\n", " 'name': 'I/O',\n", " 'className': 'dt-body-left'\n", " },\n", " {\n", " 'name': 'License',\n", " 'className': 'dt-body-left'\n", " },\n", " {\n", " 'name': 'Version added',\n", " 'className': 'dt-body-left'\n", " },\n", " {\n", " 'name': 'Description',\n", " 'visible': False\n", " }\n", " ]\n", ")\n", "HTML('''''')" ] }, { "cell_type": "markdown", "id": "516723cd", "metadata": {}, "source": [ "(module:meanRegInflow)=\n", "### meanRegInflow\n", "Mean reg. inflow per year (unit: Mm3)\n", "\n", "\n", "(module:MinDischargeCostDPrice)=\n", "### MinDischargeCostDPrice\n", "Cost of violating minimum discharge constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:bypass)=\n", "### bypass\n", "Output bypass (unit: m3/s)\n", "\n", "\n", "(module:energyEquivalent)=\n", "### energyEquivalent\n", "Time-dependent global energy equivalent (to ocean) (unit: kWh/m3)\n", "\n", "\n", "(module:MinBypassCostVolume)=\n", "### MinBypassCostVolume\n", "Cost of violating minimum bypass constraint (unit: EUR/1000m3)\n", "\n", "\n", "(module:max_reserve_up)=\n", "### max_reserve_up\n", "Maximum reserve up allocation (unit: MW)\n", "\n", "\n", "(module:n_negative_inflows_back)=\n", "### n_negative_inflows_back\n", "Number of occurances of negative inflows in last backward iteration (unit: #)\n", "\n", "\n", "(module:maxVol)=\n", "### maxVol\n", "Time-dependent maximal volume (unit: Mm3)\n", "\n", "\n", "(module:energyEquivalentConst)=\n", "### energyEquivalentConst\n", "Global energy equivalent (to ocean) (unit: kWh/m3)\n", "\n", "\n", "(module:average_neg_inflow_back)=\n", "### average_neg_inflow_back\n", "Average negative inflow in last backward iteration (unit: Mm3)\n", "\n", "\n", "(module:reservoirMinRestrictionType)=\n", "### reservoirMinRestrictionType\n", "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)\n", "\n", "\n", "(module:n_different_inflows)=\n", "### n_different_inflows\n", "Number of calculated inflows in last backward recursion (unit: #)\n", "\n", "\n", "(module:min_vol_violation)=\n", "### min_vol_violation\n", "Violations of minimum volume limit. (unit: Mm3)\n", "\n", "\n", "(module:MinReservoirCostVolume)=\n", "### MinReservoirCostVolume\n", "Cost of violating minimum reservoir constraint (unit: EUR/1000m3)\n", "\n", "\n", "(module:RampingDownCostVolume)=\n", "### RampingDownCostVolume\n", "Cost of violating ramping down constraint. (unit: EUR/1000m3)\n", "\n", "\n", "(module:min_bypass_violation)=\n", "### min_bypass_violation\n", "Violations of minimum bypass limit. (unit: m3/s)\n", "\n", "\n", "(module:MinDischargeCostEnergy)=\n", "### MinDischargeCostEnergy\n", "Cost of violating minimum discharge constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:BackwardSpillingCostVolume)=\n", "### BackwardSpillingCostVolume\n", "Cost of spilling in backward recursion (unit: EUR/1000m3)\n", "\n", "\n", "(module:reserve_down_allocation)=\n", "### reserve_down_allocation\n", "Output reserve down allocation (unit: MW)\n", "\n", "\n", "(module:maxProd)=\n", "### maxProd\n", "Max production (unit: MW)\n", "\n", "\n", "(module:RampingUpCostEnergy)=\n", "### RampingUpCostEnergy\n", "Cost of violating ramping up constraint. (unit: EUR/MWh)\n", "\n", "\n", "(module:rsvMax)=\n", "### rsvMax\n", "Max reservoir volume (unit: Mm3)\n", "\n", "\n", "(module:BufferReservoirCostEnergy)=\n", "### BufferReservoirCostEnergy\n", "Cost of deviating from the guideline curve for buffer reservoirs (unit: EUR/MWh)\n", "\n", "\n", "(module:BackwardSpillingCostEnergy)=\n", "### BackwardSpillingCostEnergy\n", "Cost of spilling in backward recursion (unit: EUR/MWh)\n", "\n", "\n", "(module:HeadCoefficient)=\n", "### HeadCoefficient\n", "Head coefficients represent the expected added value of storing water in the reservoirs due to head. (unit: kEUR/Mm3)\n", "\n", "\n", "(module:maxBypassConst)=\n", "### maxBypassConst\n", "Max bypass (unit: m3/s)\n", "\n", "\n", "(module:min_vol_violation_last_backward)=\n", "### min_vol_violation_last_backward\n", "Violations of minimum volume limit in last backward iteration (unit: Mm3)\n", "\n", "\n", "(module:volHeadCurve)=\n", "### volHeadCurve\n", " 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)\n", "\n", "\n", "(module:production)=\n", "### production\n", "Output production (unit: MW)\n", "\n", "\n", "(module:reservoirMaxRestrictionType)=\n", "### reservoirMaxRestrictionType\n", "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)\n", "\n", "\n", "(module:refVol)=\n", "### refVol\n", "Time-dependent reservoir guidline curves (for buffer reservoirs). (unit: %)\n", "\n", "\n", "(module:minBypass)=\n", "### minBypass\n", "Time-dependent minimal water bypass (unit: m3/s)\n", "\n", "\n", "(module:MinDischargeCostVolume)=\n", "### MinDischargeCostVolume\n", "Cost of violating minimum discharge constraint (unit: EUR/1000m3)\n", "\n", "\n", "(module:BackwardBypassCostVolume)=\n", "### BackwardBypassCostVolume\n", "Cost of bypassing in backward recursion (unit: EUR/1000m3)\n", "\n", "\n", "(module:connectedSeriesId)=\n", "### connectedSeriesId\n", "Id of connected inflowSeries (unit: none)\n", "\n", "\n", "(module:plantName)=\n", "### plantName\n", "Module plant name (unit: none)\n", "\n", "\n", "(module:number)=\n", "### number\n", "Module number (unit: none)\n", "\n", "\n", "(module:reservoirVolume)=\n", "### reservoirVolume\n", "Output reservoir volume (unit: Mm3)\n", "\n", "\n", "(module:connected_unreg_series_id)=\n", "### connected_unreg_series_id\n", "ID number of the unregulated inflow series the module is connected to. Default same as connectedSeriesID. (unit: none)\n", "\n", "\n", "(module:res_ramp_piecewise_linear)=\n", "### res_ramp_piecewise_linear\n", "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)\n", "\n", "\n", "(module:ownerShare)=\n", "### ownerShare\n", "Fraction owned of the module. Used to scale down the production capacity. Must be in [0,1]. (unit: none)\n", "\n", "\n", "(module:reservoirReferenceLevels)=\n", "### reservoirReferenceLevels\n", "Reservoir reference levels for the standard SHOP cuts. (unit: none)\n", "\n", "\n", "(module:submersion)=\n", "### submersion\n", "Module outlet line height in MASL. (unit: m)\n", "\n", "\n", "(module:maxDischarge)=\n", "### maxDischarge\n", "Time-dependent maximal discharge (unit: m3/s)\n", "\n", "\n", "(module:maxBypass)=\n", "### maxBypass\n", "Time-dependent maximal water bypass (unit: m3/s)\n", "\n", "\n", "(module:min_vol_violation_extra_cut)=\n", "### min_vol_violation_extra_cut\n", "Violations of minimum volume limit in extra cut generation (unit: Mm3)\n", "\n", "\n", "(module:expected_water_value_indvan_prd)=\n", "### expected_water_value_indvan_prd\n", "Expected global water value at start time (to ocean) (unit: Ec /m3)\n", "\n", "\n", "(module:RampingDownCostEnergy)=\n", "### RampingDownCostEnergy\n", "Cost of violating ramping down constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:ForwardSpillingCostDPrice)=\n", "### ForwardSpillingCostDPrice\n", "Cost of spilling in forward simulation (unit: EUR/MWh)\n", "\n", "\n", "(module:min_bypass_violation_extra_cut)=\n", "### min_bypass_violation_extra_cut\n", "Violations of minimum bypass limit in extra cut generation (unit: m3/s)\n", "\n", "\n", "(module:res_ramp_unit)=\n", "### res_ramp_unit\n", "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)\n", "\n", "\n", "(module:local_water_value_indvan_prd)=\n", "### local_water_value_indvan_prd\n", "Local water value at start time (unit: EUR/MWh)\n", "\n", "\n", "(module:BackwardBypassCostEnergy)=\n", "### BackwardBypassCostEnergy\n", "Cost of bypassing in backward recursion (unit: EUR/MWh)\n", "\n", "\n", "(module:max_reserve_down)=\n", "### max_reserve_down\n", "Maximum reserve down allocation (unit: MW)\n", "\n", "\n", "(module:cutCoeffs)=\n", "### cutCoeffs\n", "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)\n", "\n", "\n", "(module:max_reserve_down_cost)=\n", "### max_reserve_down_cost\n", "Violations of maximum reserve down allocation (unit: MW)\n", "\n", "\n", "(module:localEnergyEquivalent)=\n", "### localEnergyEquivalent\n", "Time-dependent local energy equivalent (unit: kWh/m3)\n", "\n", "\n", "(module:ForwardSpillingCostVolume)=\n", "### ForwardSpillingCostVolume\n", "Cost of spilling in forward simulation (unit: EUR/1000m3)\n", "\n", "\n", "(module:ForwardBypassCostVolume)=\n", "### ForwardBypassCostVolume\n", "Cost of bypassing in forward simulation (unit: EUR/1000m3)\n", "\n", "\n", "(module:nominalHead)=\n", "### nominalHead\n", "Net nominal head used as reference height for the PQcurve (unit: m)\n", "\n", "\n", "(module:rampingUp)=\n", "### rampingUp\n", "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)\n", "\n", "\n", "(module:MinBypassCostEnergy)=\n", "### MinBypassCostEnergy\n", "Cost of violating minimum bypass constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:minDischarge)=\n", "### minDischarge\n", "Time-dependent minimal discharge (unit: m3/s)\n", "\n", "\n", "(module:min_bypass_violation_last_backward)=\n", "### min_bypass_violation_last_backward\n", "Violations of minimum bypass limit in last backward iteration (unit: m3/s)\n", "\n", "\n", "(module:scenario_start_volumes)=\n", "### scenario_start_volumes\n", "Reservoir start volume per scenario (unit: Mm3)\n", "\n", "\n", "(module:MaxReservoirCostVolume)=\n", "### MaxReservoirCostVolume\n", "Cost of violating maximum reservoir constraint (unit: EUR/1000m3)\n", "\n", "\n", "(module:head_coefficients_used_in_run)=\n", "### head_coefficients_used_in_run\n", "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)\n", "\n", "\n", "(module:localInflow)=\n", "### localInflow\n", "Output inflow (unit: m3/s)\n", "\n", "\n", "(module:min_discharge_violation_extra_cut)=\n", "### min_discharge_violation_extra_cut\n", "Violations of minimum discharge limit in extra cut generation (unit: m3/s)\n", "\n", "\n", "(module:MaxReservoirCostDPrice)=\n", "### MaxReservoirCostDPrice\n", "Cost of violating maximum reservoir constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:waterValueConversionFactors)=\n", "### waterValueConversionFactors\n", "Local energy equivalents at the best efficiency point which the SHOP cuts refer to. (unit: GWh/Mm3)\n", "\n", "\n", "(module:BackwardSpillingCostDPrice)=\n", "### BackwardSpillingCostDPrice\n", "Cost of spilling in backward recursion (unit: EUR/MWh)\n", "\n", "\n", "(module:RampingDownCostDPrice)=\n", "### RampingDownCostDPrice\n", "Cost of violating ramping down constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:headDependentQMax)=\n", "### headDependentQMax\n", "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)\n", "\n", "\n", "(module:topology)=\n", "### topology\n", "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)\n", "\n", "\n", "(module:ForwardSpillingCostEnergy)=\n", "### ForwardSpillingCostEnergy\n", "Cost of spilling in forward simulation (unit: EUR/MWh)\n", "\n", "\n", "(module:global_water_value_indvan_prd)=\n", "### global_water_value_indvan_prd\n", "Global water value at start time (to ocean) (unit: EUR/MWh)\n", "\n", "\n", "(module:regulationType)=\n", "### regulationType\n", "0 = buffer res 1 = reguation res (unit: none)\n", "\n", "\n", "(module:overflow)=\n", "### overflow\n", "Output overflow (unit: m3/s)\n", "\n", "\n", "(module:ForwardBypassCostEnergy)=\n", "### ForwardBypassCostEnergy\n", "Cost of bypassing in forward simulation (unit: EUR/MWh)\n", "\n", "\n", "(module:MinReservoirCostEnergy)=\n", "### MinReservoirCostEnergy\n", "Cost of violating minimum reservoir constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:localEnergyEquivalentConst)=\n", "### localEnergyEquivalentConst\n", "Local energy equivalent (unit: kWh/m3)\n", "\n", "\n", "(module:meanUnregInflow)=\n", "### meanUnregInflow\n", "Mean unreg. inflow per year (unit: Mm3)\n", "\n", "\n", "(module:BufferReservoirCostDPrice)=\n", "### BufferReservoirCostDPrice\n", "Cost of deviating from the guideline curve for buffer reservoirs (unit: EUR/MWh)\n", "\n", "\n", "(module:probability_of_negative_inflow_back)=\n", "### probability_of_negative_inflow_back\n", "Probability of occurances of negative inflows in last backward iteration (unit: 1)\n", "\n", "\n", "(module:BackwardBypassCostDPrice)=\n", "### BackwardBypassCostDPrice\n", "Cost of bypassing in backward recursion (unit: EUR/MWh)\n", "\n", "\n", "(module:name)=\n", "### name\n", "Module name (unit: none)\n", "\n", "\n", "(module:reserve_up_allocation)=\n", "### reserve_up_allocation\n", "Output reserve up allocation (unit: MW)\n", "\n", "\n", "(module:res_ramp_intra_week)=\n", "### res_ramp_intra_week\n", "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)\n", "\n", "\n", "(module:RampingUpCostVolume)=\n", "### RampingUpCostVolume\n", "Cost of violating ramping up constraint. (unit: EUR/1000m3)\n", "\n", "\n", "(module:min_discharge_violation_last_backward)=\n", "### min_discharge_violation_last_backward\n", "Violations of minimum discharge limit in last backward iteration (unit: m3/s)\n", "\n", "\n", "(module:BufferReservoirCostVolume)=\n", "### BufferReservoirCostVolume\n", "Cost of deviating from the guideline curve for buffer reservoirs (unit: EUR/1000m3)\n", "\n", "\n", "(module:startVol)=\n", "### startVol\n", "Reservoir start volume (unit: Mm3)\n", "\n", "\n", "(module:MaxReservoirCostEnergy)=\n", "### MaxReservoirCostEnergy\n", "Cost of violating maximum reservoir constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:RampingUpCostDPrice)=\n", "### RampingUpCostDPrice\n", "Cost of violating ramping up constraint. (unit: EUR/MWh)\n", "\n", "\n", "(module:rampingDown)=\n", "### rampingDown\n", "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)\n", "\n", "\n", "(module:ForwardBypassCostDPrice)=\n", "### ForwardBypassCostDPrice\n", "Cost of bypassing in forward simulation (unit: EUR/MWh)\n", "\n", "\n", "(module:max_reserve_up_cost)=\n", "### max_reserve_up_cost\n", "Violations of maximum reserve up allocation (unit: MW)\n", "\n", "\n", "(module:maxDischargeConst)=\n", "### maxDischargeConst\n", "Max discharge (unit: m3/s)\n", "\n", "\n", "(module:MinBypassCostDPrice)=\n", "### MinBypassCostDPrice\n", "Cost of violating minimum bypass constraint (unit: EUR/MWh)\n", "\n", "\n", "(module:min_discharge_violation)=\n", "### min_discharge_violation\n", "Violations of minimum discharge limit. (unit: m3/s)\n", "\n", "\n", "(module:shopWaterValues)=\n", "### shopWaterValues\n", "Water values (reservoir cut coefficients) for the SHOP cuts. (unit: none)\n", "\n", "\n", "(module:hydraulicType)=\n", "### hydraulicType\n", "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)\n", "\n", "\n", "(module:mean_reservoir_trajectories_used_in_run)=\n", "### mean_reservoir_trajectories_used_in_run\n", "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)\n", "\n", "\n", "(module:maintenance)=\n", "### maintenance\n", "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)\n", "\n", "\n", "(module:minVol)=\n", "### minVol\n", "Time-dependent minimal volume (unit: Mm3)\n", "\n", "\n", "(module:MeanReservoirTrajectories)=\n", "### MeanReservoirTrajectories\n", "Mean reservoir trajectories, used to scale the PQ curve with head in backward iterations. (unit: Mm3)\n", "\n", "\n", "(module:PQcurve)=\n", "### PQcurve\n", "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)\n", "\n", "\n", "(module:discharge)=\n", "### discharge\n", "Output discharge (unit: m3/s)\n", "\n", "\n", "(module:MinReservoirCostDPrice)=\n", "### MinReservoirCostDPrice\n", "Cost of violating minimum reservoir constraint (unit: EUR/MWh)" ] } ], "metadata": { "jupytext": { "text_representation": { "extension": ".md", "format_name": "myst", "format_version": 0.13, "jupytext_version": "1.13.8" } }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" }, "source_map": [ 11, 62, 140 ] }, "nbformat": 4, "nbformat_minor": 5 }