Library documentation¶
Introduction
In METIS, the library word refers to the list of all existing energy assets available, and by extension to the overall METIS modelling. Hereafter is explained the terminology associated with the library:
- The scopes
- The behaviors
- The assets
Scopes
- SIMULATION : This is the reference scope for METIS, and can be used for all power and gas models.
- OPTIMCAPA : This scope enables capacity optimization on production or transmission assets
Id | Description | Behaviors |
---|---|---|
OPTIMCAPA | Capacity Optimization | |
SIMULATION | Simulation |
Behaviors
METIS includes modelling options (or "behaviors") that can be activated or disabled depending on the purpose of the study and the level of detail wanted. These behaviors allow to perform more or less detailed simulations with the same model. These behaviors can be available on one or several technologies depending on the model they activate. Behaviors are activated asset by asset and scope by scope. They can be combined, but some specific combinations are considered inconsistent and won't be accepted. When there are activated, some specific parameters are added to the corresponding asset.
Id | Description |
---|---|
CLUSTER | Enable cluster model, allowing to take into account dynamic constraints and starting costs |
CONSTANT_VAR | Force a temporal variable to be constant throughout the simulation |
DISCHARGE_TIMES | Use a discharge times parameter to implicitly define the storage capacity thanks to the installed power capacity |
FUEL | Use a fuel supply instead of direct production cost modelling |
GAS_BACKUP_HEATER | Use a gas backup heater instead of an electric one |
GRADIENTS | Enable gradient constraints for energy production |
MFRR_DOWN | Participation to downward mFRR |
MFRR_UP | Participation to upward mFRR |
MUST_RUN | Force must run generation |
OPTIM_PMAX | Enable capacity optimization |
RESERVE | Enable reserve procurement |
SYNC_RESERVE_DOWN | Participation to downward synchronized reserve |
SYNC_RESERVE_UP | Participation to upward synchronized reserve |
USE_ENERGY_PRODUCTION | Enable/disable the production of a given energy for an asset |
USE_PMAX_IN | Use a different parameter for input power capacity than then one for output power capacity |
VOLUME_TARGET | Use a target in volume for the cumulative production/consumption |
Asset types
Assets are the main components of METIS models, and have a wide range of use. For instance, an asset can represent a single plant, a whole fleet of units, a coal supply or the electricity demand of a given zone. Then, an asset can be seen as an object with specific constraints, that can exchange energy with other assets.
Some specific assets, called Model Object, do not represent real elements, but are used as a way to set additional constraints to the system with appropriate parameters. They are for instance used to define how is performed the electricity reserve sizing at a regional level.
Each asset type has a list of parameters that represent their main characteristics. Their values are used in the Code section of the asset, which defines how the asset behaves during the simulation. Most of the constraints set for each asset are defined in an API, common for all assets. The associated functions can easily be found with the search feature located at the upper-left corner of each page, and are all documented here.
Pictogram | Id | Description | Tags |
---|---|---|---|
Biomass fleet | Biomass fleet | ||
Biomass supply | Biomass supply | ||
CAES fleet | CAES fleet | ||
CCGT fleet | CCGT fleet | ||
CO2 emissions | CO2 emissions | ||
Coal fleet | Coal fleet | ||
Coal supply | Coal supply | ||
CSP fleet | CSP fleet | ||
Decentralized thermal fleet | Decentralized thermal fleet | ||
Demand | Demand | ||
Demand-response | Demand-response | ||
Derived gasses fleet | Derived gasses fleet | ||
DSR | DSR | ||
Electric Vehicles | Electric Vehicles | ||
Electrolysis | Electrolysis | ||
Export contract | Export contract | ||
Gas consumption | Gas consumption | ||
Gas exports | Gas exports | ||
Gas imports | Gas imports | ||
Gas Market Constant Markup | Gas Market Markup Cost | ||
Gas production | Gas production | ||
Gas storage | Gas storage | ||
Gas supply | Gas supply | ||
Generic Storage | Generic Storage | ||
Geothermal fleet | Geothermal fleet | ||
H2 to CH4 | H2 to CH4 | ||
Heat Pump | Heat Pump | ||
Hydro fleet | Hydro fleet | ||
Hydro RoR fleet | Hydro RoR fleet | ||
Hydrogen fleet | Hydrogen fleet | ||
Import contract | Import contract | ||
Import pipeline | Import pipeline | ||
Lignite fleet | Lignite fleet | ||
Lignite supply | Lignite supply | ||
Lithium ion battery fleet | Lithium ion battery fleet | ||
LNG exports | LNG exports | ||
LNG imports | LNG imports | ||
LNG liquefaction train | LNG liquefaction train | ||
LNG terminal | LNG terminal | ||
Loss of load | Loss of load | ||
Min reserve procurement | Minimum national reserve procurement | ||
Nuclear fleet | Nuclear fleet | ||
OCGT fleet | OCGT fleet | ||
Oil fleet | Oil fleet | ||
Oil supply | Oil supply | ||
Other fleet | Other fleet | ||
Other renewable fleet | Other renewable fleet | ||
Other thermal fleet | Other thermal fleet | ||
Pipeline | Pipeline | ||
Pipeline equality | Pipeline equality | ||
Pipeline reverse flow | Pipeline reverse flow | ||
Power demand | Power demand | ||
Pumped storage fleet | Pumped storage fleet | ||
Regulated Coal fleet | Regulated Coal fleet | ||
Regulated Oil fleet | Regulated Oil fleet | ||
Reserve demand | Reserve demand | ||
Reserve Dimensioning | Reserve Dimensioning Data | ||
Reserve Symmetry Requirement | Reserve Symmetry Requirement | ||
Scenario | Scenario | ||
Sell contract | Sell contract | ||
Solar fleet | Solar fleet | ||
Supply contract with bound | Supply contract with bound | ||
Transmission | Transmission | ||
Transmission equality | Transmission equality | ||
Waste fleet | Waste fleet | ||
Well | Well | ||
Wind offshore fleet | Wind offshore fleet | ||
Wind onshore fleet | Wind onshore fleet |
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Biomass fleet | FUEL_CONSUMPTION (MW.h PCS) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Biomass-fired power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_variableCost | €/MW.h | Variable costs | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_fuelYield | MW.h/MW.h PCS | Yield between the production and the fuel consumption | |
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_gradientUp | %/min | Maximal upward variation, expressed as a percentage of the available capacity per minute | |
_gradientDown | %/min | Maximal downward variation, expressed as a percentage of the available capacity per minute | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_productionHeatRate | MW.h PCS/MW.h | Yield between the delivered energy and the associated fuel consumption | |
_runningCapaFuelConsumption | MW.h PCS/MW/h | Yield between the Running capacity and the associated fuel consumption | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addFuelConsumption(asset, stateON)
addCo2Production(asset, stateON)
addGradients(asset,stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON)
finalize(stateON)
Biomass supply
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Biomass supply | E (MW.h PCS) |
Description
Biomass supply
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h PCS | Price |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)
CAES fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
CAES fleet | CONSUMPTION (MW) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Compressed Air Energy Storage fleet
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_dischargeTime | h | Discharge time | |
_storageAvailability | % | Storage availability, expressed as a percentage of the installed storage capacity | |
_inputEfficiency | Pumping efficiency | ||
_outputEfficiency | Turbining efficiency | ||
_lossRate | Storage loss rate | ||
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR | |
_mfrrUpNotRunningCost | €/MW | Cost associated with the mfrr reserve procurement from non-running capacity |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addEnergyConsumption(asset, stateON)
addDischargeStock(asset, stateON, inputEfficiency="_inputEfficiency", outputEfficiency="_outputEfficiency", storageAvailability="_storageAvailability")
addReserveProduction(asset, stateON, isQuickStart=True, isFleetModeEnabled=True)
finalize(stateON)
CCGT fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
CCGT fleet | FUEL_CONSUMPTION (MW.h PCS) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Combined Cycle Gas Turbine power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_variableCost | €/MW.h | Variable costs | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_fuelYield | MW.h/MW.h PCS | Yield between the production and the fuel consumption | |
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_gradientUp | %/min | Maximal upward variation, expressed as a percentage of the available capacity per minute | |
_gradientDown | %/min | Maximal downward variation, expressed as a percentage of the available capacity per minute | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_productionHeatRate | MW.h PCS/MW.h | Yield between the delivered energy and the associated fuel consumption | |
_runningCapaFuelConsumption | MW.h PCS/MW/h | Yield between the Running capacity and the associated fuel consumption | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addFuelConsumption(asset, stateON)
addCo2Production(asset, stateON)
addGradients(asset,stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON)
finalize(stateON)
CO2 emissions
Pictogram | Label | Tags | Inputs |
---|---|---|---|
CO2 emissions | E (t) |
Description
CO2 emissions
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/t | Price |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), True, asset.getData('_price'))
MODEL.addState(stateON)
Coal fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Coal fleet | FUEL_CONSUMPTION (MW.h PCS) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Coal-fired power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_variableCost | €/MW.h | Variable costs | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_fuelYield | MW.h/MW.h PCS | Yield between the production and the fuel consumption | |
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_gradientUp | %/min | Maximal upward variation, expressed as a percentage of the available capacity per minute | |
_gradientDown | %/min | Maximal downward variation, expressed as a percentage of the available capacity per minute | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_productionHeatRate | MW.h PCS/MW.h | Yield between the delivered energy and the associated fuel consumption | |
_runningCapaFuelConsumption | MW.h PCS/MW/h | Yield between the Running capacity and the associated fuel consumption | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addFuelConsumption(asset, stateON)
addCo2Production(asset, stateON)
addGradients(asset,stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON)
finalize(stateON)
Coal supply
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Coal supply | E (MW.h PCS) |
Description
Coal supply
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h PCS | Price |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)
CSP fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
CSP fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW.h) |
Description
Storage associated with a concentrated solar power unit
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity for electricity production | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_prorataSupply | % | Availability solar | |
_prorataSupplyCoef | Ratio PmaxSolar/PmaxTurbine | ||
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_dischargeTime | h | Discharge time | |
_storageAvailability | [0,1] | Storage availability, expressed as a percentage of the installed storage capacity | |
_lossRate | 1/hour | Storage loss rate | |
_outputEfficiency | MW/MW.h | Turbining efficiency | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addDischargeStock(asset, stateON, energyPickup=None, outputEfficiency="_outputEfficiency", storageCost=0, initialStorageLevel=0, storageAvailability="_storageAvailability")
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Decentralized thermal fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Decentralized thermal fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Decentralized thermal power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addCo2Production(asset, stateON)
addEnergyProduction(asset, stateON, minLoad="_minLoad")
addReserveProduction(asset, stateON)
finalize(stateON)
Demand
Pictogram | Label | Tags | Inputs |
---|---|---|---|
Demand | E (MW) |
Description
Power demand
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_demand | MW | Demand |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
stateON.setEquality(asset.getParameter('E'), True, asset.getData('_demand'))
MODEL.addState(stateON)
Demand-response
Pictogram | Label | Tags | Inputs |
---|---|---|---|
Demand-response | E (MW) |
Description
Controllable power demand
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_demand | MW | Realistic demand (non-flexible when using MUST_RUN, or raw demand when enabling demand flexibility) | |
_demandCycleDuration | h | Demand cycle duration, to compute a regular flexible demand from the realistic demand | |
_demandFirstHour | h | Demand first hour, to compute a regular flexible demand from the realistic demand | |
_pmaxIn | MW | Input maximal power | |
_storageCost | €/MW.h/h | Cost associated with storage |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
setDemandResponseModel(stateON, asset)
finalize(stateON)
Derived gasses fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Derived gasses fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Derived gasses fleet
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addCo2Production(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
DSR
Pictogram | Label | Tags | Outputs |
---|---|---|---|
DSR | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) |
Description
Demand side response (reserve) configuration
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_pmax | MW | Installed power capacity | |
_syncReserveProcurementCost | €/MW | Synchronized reserve procurement cost, for up and downward reserve | |
_mfrrProcurementCost | €/MW | mFRR reserve procurement cost, for up and downward reserve |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addDSRReserveProduction(asset, stateON)
finalize(stateON)
Electric Vehicles
Pictogram | Label | Inputs | Outputs |
---|---|---|---|
Electric Vehicles | CONSUMPTION (MW) | PRODUCTION (MW) |
Description
Fleet of electric vehicles
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_totalEV | EV | Total number of vehicles | |
_initialConnectedEV | % | Percentage of connected EV at t=0 | |
_arrivals | % | Percentage of vehicles arriving at terminal | |
_departures | % | Percentage of vehicles leaving from terminal | |
_evStorageCapacity | kWh | EV storage capacity | |
_evRecharge | kWh | Average journey discharge | |
_evPmaxIn | kW | Average charging capacity per vehicle | |
_inputEfficiency | % | EV charging efficiency | |
_storageCost | €/MWh/h | Cost associated with storage | |
_evPmaxOut | kW | Average Vehicle-to-grid discharging capacity | |
_outputEfficiency | % | EV discharging efficiency | |
_productionCost | €/MWh | Production cost |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
setElectricVehiclesModel(stateON, asset)
finalize(stateON)
Electrolysis
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Electrolysis | CONSUMPTION (MW) | PRODUCTION (MW) |
Description
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_consumptionCost | €/MW.h | Consumption cost | |
_yield | MW.h/MW.h PCS | Yield between the production and the consumption |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyConsumption(asset, stateON, pmaxInOutRatio = None)
yieldRatio = getAssetData(asset, "_yield")
consumption = asset.getParameter("CONSUMPTION")
production = asset.getParameter("PRODUCTION")
addEnergyYield(stateON, yieldRatio, consumption, production, isInputA=True, isInputB=False)
finalize(stateON)
Export contract
Pictogram | Label | Tags | Inputs |
---|---|---|---|
Export contract | E (MW) |
Description
Power export contract, to model an export contract to a country not explicitly modeled in the context
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_exports | MW | Exports |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
stateON.setEquality( asset.getParameter('E'), True, asset.getData('_exports') )
MODEL.addState(stateON)
Gas consumption
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Gas consumption | CONSUMPTION (MW.h PCS) | CO2 (t) |
Description
Gas consumption
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_demand | MW | Gas consumption | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the gas consumption | |
_cost | t/MW.h | Consumption cost |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
energyPickup = asset.getParameter('CONSUMPTION')
stateON = AssetState('ON')
stateON.setEquality(energyPickup, True, asset.getData('_demand'))
addEnergyYield(stateON, asset.getData('_co2Content'), energyPickup, asset.getParameter('CO2'), True, False)
addEnergyCost(stateON, energyPickup, True, asset.getData("_cost"))
finalize(stateON)
Gas exports
Pictogram | Label | Tags | Inputs |
---|---|---|---|
Gas exports | CONSUMPTION (MW) |
Description
Gas exports
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_pmax | MW | Maximal export capacity | |
_minLoad | % | Minimum export level, expressed as a percentage of the available export capacity | |
_availability | [0,1] | Available export capacity, expressed as a percentage of the maximal capacity | |
_minimumVolume | MW.h | Minimal export volume over the horizon | |
_storageCapacity | MW.h | Maximal export volume over the horizon | |
_minProfile | % | Minimal export profile | |
_storageAvailability | % | Maximal export profile | |
_exports | MW | Sets inelastic exports | |
_price | € | Earnings per export unit |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
consumptionCost = - asset.getData('_price')
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
if asset.isActiveBehavior(BH_MUST_RUN):
stateON.setEquality( asset.getParameter('CONSUMPTION'), True, asset.getData('_exports') )
else:
addTargetInVolume(asset, stateON, interfaceName="CONSUMPTION", isInput=True, maxVolume="_storageCapacity", minVolume="_minimumVolume" , maxProfile="_storageAvailability", minProfile="_minProfile")
addEnergyConsumption(asset, stateON, energyPickup='CONSUMPTION', consumptionCost=None, pmaxIn='_pmax')
# HACK : addEnergyCost should directely manage price curves
if getPriceCurveType(consumptionCost): #Gas market module - Price curve model
addRelaxedIncreasingCost(asset, energyParameterName='CONSUMPTION', energyParameterIsInput=True)
else: #Linear cost
addEnergyCost(stateON, asset.getParameter('CONSUMPTION'), True, consumptionCost)
finalize(stateON)
Gas imports
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Gas imports | PRODUCTION (MW) |
Description
Gas imports
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_pmax | MW | Maximal import capacity | |
_minLoad | % | Minimum import level, expressed as a percentage of the available capacity | |
_availability | [0,1] | Available import capacity, expressed as a percentage of the maximal capacity | |
_minimumVolume | MW.h | Minimal import volume over the horizon | |
_storageCapacity | MW.h | Maximal import volume over the horizon | |
_minProfile | % | Minimal import profile | |
_storageAvailability | % | Maximal import profile | |
_imports | MW | Sets inelastic imports | |
_productionCost | € | Costs per import unit |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
cost = asset.getData('_productionCost')
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
if asset.isActiveBehavior(BH_MUST_RUN):
stateON.setEquality( asset.getParameter('PRODUCTION'), False, asset.getData('_imports') )
else:
addTargetInVolume(asset, stateON, interfaceName="PRODUCTION", isInput=False, maxVolume="_storageCapacity", minVolume="_minimumVolume" , maxProfile="_storageAvailability", minProfile="_minProfile")
addEnergyProduction(asset, stateON, energyDelivery='PRODUCTION', productionCost=None, pmax='_pmax')
# HACK : addEnergyCost should directely manage price curves
if getPriceCurveType(cost): #Gas market module - Price curve model
addRelaxedIncreasingCost(asset, energyParameterName='PRODUCTION', energyParameterIsInput=False)
else: #Linear cost
addEnergyCost(stateON, asset.getParameter('PRODUCTION'), False, cost)
finalize(stateON)
Gas Market Constant Markup
Pictogram | Label | Tags |
---|---|---|
Gas Market Markup Cost |
Description
Model object containing gas suppliers' mark-ups data
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_markupCost | €/MW.h | Constant gas price mark-ups |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
Gas production
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Gas production | PRODUCTION (MW) |
Description
Gas production asset
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed production capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | [0,1] | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost | |
_minLoad | % of Pmax | Minimum production level, expressed as a percentage of the available capacity |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON, productionCost=None)
# HACK : addEnergyProduction should manage price curves directly
cost = asset.getData('_productionCost')
if getPriceCurveType(cost): #Gas market module - Price curve model
addRelaxedIncreasingCost(asset, energyParameterName='PRODUCTION', energyParameterIsInput=False, costDataName="_productionCost")
else: #Linear cost
addEnergyCost(stateON, asset.getParameter('PRODUCTION'), False, cost)
finalize(stateON)
Gas storage
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Gas storage | CONSUMPTION (MW) | PRODUCTION (MW) |
Description
Gas storage
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Withdrawal capacity (from the storage) | |
_pmaxmin | MW | Withdrawal capacity lower bound for capacity optimization | |
_pmaxmax | MW | Withdrawal capacity upper bound for capacity optimization | |
_availability | % | Available withdrawal capacity, expressed as a percentage of the installed capacity | |
_consumptionCost | €/MW.h | Consumption costs | |
_exitFee | €/MW.h | Exit fee | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_entryFee | €/MW.h | Entry fee | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_storageAvailability | % | Storage availability, expressed as a percentage of the installed storage capacity | |
_minStorageLevel | % | Minimum level for storage, expressed as a percentage of the installed storage capacity | |
_dischargeTime | h | Discharge time | |
_pmaxIn | MW | Injection capacity (to the storage) | |
_availabilityIn | % | Injection capacity availability | |
_minInitialStorageLevel | % | Minimal initial storage level, expressed as percentage of the storage capacity | |
_maxInitialStorageLevel | % | Maximal initial storage level, expressed as percentage of the storage capacity | |
_pmaxInOutRatio | Injection (to the storage) over Withdrawal (from the storage) ratio (for capacity optimization) |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
moduleStock = addDischargeStock(asset, stateON, minStorageLevel="_minStorageLevel", initialStorageLevel=None, storageAvailability="_storageAvailability")
variableStorageInjectionCapacity(MODEL, asset, stateON, moduleStock, pmaxInOutRatio = "_pmaxInOutRatio")
variableStorageWithdrawalCapacity(MODEL, asset, stateON, moduleStock)
addInitialStorageLevelBounds(asset, moduleStock, initialStorageLevel=None, minInitialStorageLevel="_minInitialStorageLevel", maxInitialStorageLevel= "_maxInitialStorageLevel")
forceInitialEqualFinal(asset, moduleStock)
# Computing overall cost to set on incoming flows (consumption cost + network exit fee)
overallConsumptionCost = getAssetData(asset, "_consumptionCost", dataName=LABELS[CONSUMPTION_COST], mustExist=False)
exitFee = getAssetData(asset, "_exitFee", mustExist=False)
if exitFee is not None:
overallConsumptionCost += exitFee
# Computing overall cost to set on outcoming flows (production cost + network entry fee)
overallProductionCost = getAssetData(asset, "_productionCost", dataName=LABELS[PRODUCTION_COST], mustExist=False)
entryFee = getAssetData(asset, "_entryFee", mustExist=False)
if entryFee is not None:
overallProductionCost += entryFee
addEnergyConsumption(asset, stateON, availability = "_availabilityIn", pmaxInOutRatio = "_pmaxInOutRatio", consumptionCost = overallConsumptionCost)
addEnergyProduction(asset, stateON, productionCost = overallProductionCost)
finalize(stateON)
Gas supply
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Gas supply | E (MW.h PCS) |
Description
Gas supply
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h PCS | Price |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)
Generic Storage
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Generic Storage | CONSUMPTION (MW) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Generic asset to gather storage asset
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_dischargeTime | h | Discharge time | |
_storageAvailability | % | Storage availability, expressed as a percentage of the installed storage capacity | |
_inputEfficiency | Pumping efficiency | ||
_outputEfficiency | Turbining efficiency | ||
_lossRate | Storage loss rate | ||
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR | |
_mfrrUpNotRunningCost | €/MW | Cost associated with the mfrr reserve procurement from non-running capacity |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addEnergyConsumption(asset, stateON)
addDischargeStock(asset, stateON, inputEfficiency="_inputEfficiency", outputEfficiency="_outputEfficiency", storageAvailability="_storageAvailability")
addReserveProduction(asset, stateON, isQuickStart=True, isFleetModeEnabled=True)
finalize(stateON)
Geothermal fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Geothermal fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Geothermal power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addCo2Production(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
H2 to CH4
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
H2 to CH4 | CONSUMPTION (MW) | PRODUCTION (MW) |
Description
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost | |
_yield | MW.h/MW.h PCS (HHV) | Yield between the production and the consumption |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
yieldRatio = getAssetData(asset, "_yield")
consumption = asset.getParameter("CONSUMPTION")
production = asset.getParameter("PRODUCTION")
addEnergyYield(stateON, yieldRatio, consumption, production, isInputA=True, isInputB=False)
finalize(stateON)
Heat Pump
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Heat Pump | CONSUMPTION (MW)FUEL_CONSUMPTION (MW) | CO2 (t) |
Description
Heat Pump
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_heatingDemand | MW.h | Heating demand | |
_bivalentTemp | °C | The temperature below which the back-up heater has to supplement the heat pump is called the bivalent temperature | |
_pmax | MW | Installed HP thermal capacity | |
_temperature | °C | Heat source temperature | |
_COP | MW.h | Coefficient of performance | |
_backUpHeaterYield | Backup heater efficiency | ||
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_dischargeTime | h | Storage discharge time | |
_storageCost | €/MW.h/h | Cost associated with storage | |
_lossRate | %/h | Storage loss rate (percentage of lost energy per time step) |
Results
Id | Unit |
---|---|
{name:backup_production} | MW |
{name:heat_pump_production} | MW |
{name:stock} | MW |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
heatPumpCapacity = buildHPcapacity(asset, stateON)
createHeatPumpConstraints(asset, stateON, heatPumpCapacity)
finalize(stateON)
Hydro fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Hydro fleet | CONSUMPTION (MW) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Water reservoir used by Hydroelectric plants
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_availabilityIn | % | Input availability for storage assets | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_consumptionCost | €/MW.h | Consumption costs | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_gradientUp | %/min | Maximal upward variation, expressed as a percentage of the available capacity per minute | |
_gradientDown | %/min | Maximal downward variation, expressed as a percentage of the available capacity per minute | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_dischargeTime | h | Discharge time | |
_storageAvailability | % | Storage availability, expressed as a percentage of the installed storage capacity | |
_inputEfficiency | Pumping efficiency | ||
_outputEfficiency | Turbining efficiency | ||
_minStorageLevel | % | Minimum level for storage, expressed as a percentage of the installed storage capacity | |
_initialStorageLevel | % | Initial storage level, expressed as a percentage of the installed storage capacity | |
_boundedSupply | MW | Water inflow | |
_storageCost | €/MW.h/h | Cost associated with storage | |
_pmaxIn | MW | Input maximal power | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW | Cost associated with maintaining a certain running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR | |
_mfrrUpNotRunningCost | €/MW | Cost associated with the mfrr reserve procurement from non-running capacity |
Results
Id | Unit |
---|---|
{energy:electricity,model:stock,bound:level_LB} | €/MW.h |
{energy:electricity,model:stock,bound:level_UB} | €/MW.h |
{energy:electricity,model:stock,name:evo} | €/MW.h |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addGradients(asset,stateON)
addEnergyProduction(asset, stateON)
addEnergyConsumption(asset, stateON, availability="_availabilityIn")
addDischargeStock(asset, stateON, minStorageLevel="_minStorageLevel", inputEfficiency="_inputEfficiency", outputEfficiency="_outputEfficiency", initialStorageLevel="_initialStorageLevel", storageAvailability="_storageAvailability")
addReserveProduction(asset, stateON, isQuickStart=True, isFleetModeEnabled=True)
finalize(stateON)
Hydro RoR fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Hydro RoR fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Run-of-river plants
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_incentive | €/MW.h | Incentives to produce | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
productionCostWithIncentive = asset.getData('_productionCost') - asset.getData('_incentive')
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON, productionCost=productionCostWithIncentive)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Hydrogen fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Hydrogen fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Hydroelectric turbines
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addCo2Production(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Import contract
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Import contract | E (MW) |
Description
Power import contract, to model an import contract from a country not explicitly modeled in the context
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_imports | MW | Imports |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
stateON.setEquality( asset.getParameter('E'), False, asset.getData('_imports') )
MODEL.addState(stateON)
Import pipeline
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Import pipeline | CONSUMPTION (MW) | PRODUCTION (MW) |
Description
Import gas pipeline
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_entryFee | €/MW.h | Entry fee | |
_consumptionCost | €/MW.h | Consumption costs | |
_exitFee | €/MW.h | Exit fee | |
_losses | % | Transmission losses |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
# Computing overall cost to set on incoming flows (consumption cost + network exit fee)
overallConsumptionCost = getAssetData(asset, "_consumptionCost", dataName=LABELS[CONSUMPTION_COST], mustExist=False)
exitFee = getAssetData(asset, "_exitFee", mustExist=False)
if exitFee is not None:
overallConsumptionCost += exitFee
# Computing overall cost to set on outcoming flows (production cost + network entry fee)
overallProductionCost = getAssetData(asset, "_productionCost", dataName=LABELS[PRODUCTION_COST], mustExist=False)
entryFee = getAssetData(asset, "_entryFee", mustExist=False)
if entryFee is not None:
overallProductionCost += entryFee
addEnergyTransmission(asset, stateON, consumptionCost = overallConsumptionCost, productionCost = overallProductionCost)
finalize(stateON)
Lignite fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Lignite fleet | FUEL_CONSUMPTION (MW.h PCS) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Lignite-fired power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_variableCost | €/MW.h | Variable costs | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_fuelYield | MW.h/MW.h PCS | Yield between the production and the fuel consumption | |
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_gradientUp | %/min | Maximal upward variation, expressed as a percentage of the available capacity per minute | |
_gradientDown | %/min | Maximal downward variation, expressed as a percentage of the available capacity per minute | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_productionHeatRate | MW.h PCS/MW.h | Yield between the delivered energy and the associated fuel consumption | |
_runningCapaFuelConsumption | MW.h PCS/MW/h | Yield between the Running capacity and the associated fuel consumption | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addFuelConsumption(asset, stateON)
addCo2Production(asset, stateON)
addGradients(asset,stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON)
finalize(stateON)
Lignite supply
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Lignite supply | E (MW.h PCS) |
Description
Lignite supply
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h PCS | Price |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)
Lithium ion battery fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Lithium ion battery fleet | CONSUMPTION (MW) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Rechargeable battery that uses lithium ions
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_dischargeTime | h | Discharge time | |
_storageAvailability | % | Storage availability, expressed as a percentage of the installed storage capacity | |
_inputEfficiency | Pumping efficiency | ||
_outputEfficiency | Turbining efficiency | ||
_lossRate | Storage loss rate | ||
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR | |
_mfrrUpNotRunningCost | €/MW | Cost associated with the mfrr reserve procurement from non-running capacity |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addEnergyConsumption(asset, stateON)
addDischargeStock(asset, stateON, inputEfficiency="_inputEfficiency", outputEfficiency="_outputEfficiency", storageAvailability="_storageAvailability")
addReserveProduction(asset, stateON, isQuickStart=True, isFleetModeEnabled=True)
finalize(stateON)
LNG exports
Pictogram | Label | Tags | Inputs |
---|---|---|---|
LNG exports | CONSUMPTION (MW) |
Description
Liquefied natural gas exports
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_pmax | MW | Maximal export capacity | |
_minLoad | % | Minimum export level, expressed as a percentage of the available capacity | |
_availability | [0,1] | Available export capacity, expressed as a percentage of the maximal capacity | |
_minimumVolume | MW.h | Minimal export volume over the horizon | |
_storageCapacity | MW.h | Maximal export volume over the horizon | |
_minProfile | % | Minimal export profile | |
_storageAvailability | % | Maximal export profile | |
_exports | MW | Sets inelastic exports | |
_price | € | Earnings per export unit |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
consumptionCost = - asset.getData('_price')
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
if asset.isActiveBehavior(BH_MUST_RUN):
stateON.setEquality( asset.getParameter('CONSUMPTION'), True, asset.getData('_exports') )
else:
addTargetInVolume(asset, stateON, interfaceName="CONSUMPTION", isInput=True, maxVolume="_storageCapacity", minVolume="_minimumVolume" , maxProfile="_storageAvailability", minProfile="_minProfile")
addEnergyConsumption(asset, stateON, energyPickup='CONSUMPTION', consumptionCost=None, pmaxIn='_pmax')
# HACK : addEnergyCost should directely manage price curves
if getPriceCurveType(consumptionCost): #Gas market module - Price curve model
addRelaxedIncreasingCost(asset, energyParameterName='CONSUMPTION', energyParameterIsInput=True)
else: #Linear cost
addEnergyCost(stateON, asset.getParameter('CONSUMPTION'), True, consumptionCost)
finalize(stateON)
LNG imports
Pictogram | Label | Tags | Outputs |
---|---|---|---|
LNG imports | PRODUCTION (MW) |
Description
Liquefied natural gas imports
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_pmax | MW | Maximal import capacity | |
_minLoad | % | Minimum import level, expressed as a percentage of the available capacity | |
_availability | [0,1] | Available import capacity, expressed as a percentage of the maximal capacity | |
_minimumVolume | MW.h | Minimal import volume over the horizon | |
_storageCapacity | MW.h | Maximal import volume over the horizon | |
_minProfile | % | Minimal export profile | |
_storageAvailability | % | Maximal export profile | |
_imports | MW | Sets inelastic imports | |
_productionCost | € | Costs per import unit |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
cost = asset.getData('_productionCost')
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
if asset.isActiveBehavior(BH_MUST_RUN):
stateON.setEquality( asset.getParameter('PRODUCTION'), False, asset.getData('_imports') )
else:
addTargetInVolume(asset, stateON, interfaceName="PRODUCTION", isInput=False, maxVolume="_storageCapacity", minVolume="_minimumVolume" , maxProfile="_storageAvailability", minProfile="_minProfile")
addEnergyProduction(asset, stateON, energyDelivery='PRODUCTION', productionCost=None, pmax='_pmax')
# HACK : addEnergyCost should directely manage price curves
if getPriceCurveType(cost): #Gas market module - Price curve model
addRelaxedIncreasingCost(asset, energyParameterName='PRODUCTION', energyParameterIsInput=False)
else: #Linear cost
addEnergyCost(stateON, asset.getParameter('PRODUCTION'), False, cost)
finalize(stateON)
LNG liquefaction train
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
LNG liquefaction train | CONSUMPTION (MW) | PRODUCTION (MW) |
Description
Liquefaction train used as connection between suppliers and a common global LNG market node
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Maximal liquefaction and transport capacity | |
_pmaxmin | MW | Capacity lower bound for capacity optimization | |
_pmaxmax | MW | Capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the maximal capacity | |
_consumptionCost | €/MW.h | Liquefaction and shipping costs | |
_losses | % | Losses |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyTransmission(asset, stateON)
finalize(stateON)
LNG terminal
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
LNG terminal | CONSUMPTION (MW) | PRODUCTION (MW) |
Description
Liquefied natural gas terminal which can be supplied in LNG and inject natural gas into the network
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Injection capacity | |
_pmaxmin | MW | Injection capacity lower bound for capacity optimization | |
_pmaxmax | MW | Injection capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the injection capacity | |
_productionCost | €/MW.h | Gasification costs | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_storageAvailability | % | Storage availability, expressed as a percentage of the installed storage capacity | |
_initialStorageLevel | % | Initial storage level, expressed as a percentage of the installed storage capacity | |
_dischargeTime | h | Discharge time | |
_pmaxIn | MW | Input maximal capacity | |
_availabilityIn | % | Input availability for storage assets |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
moduleStock = addDischargeStock(asset, stateON, initialStorageLevel="_initialStorageLevel", minStorageLevel=None, storageAvailability="_storageAvailability")
addEnergyProduction(asset, stateON)
# Add a limitation on consumption only if the behavior USE_PMAX_IN is active
if asset.isActiveBehavior(BH_USE_PMAX_IN):
addEnergyConsumption(asset, stateON, availability="_availabilityIn", pmaxInOutRatio=None)
# Specific constraint: to do after addDischargeStock
forceInitialStockEqualToFinalStock(MODEL, moduleStock)
finalize(stateON)
# Specific constraint: to do after the finalize
forceConstantInterface(MODEL, asset, "CONSUMPTION", True)
Loss of load
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Loss of load | E (MW) |
Description
Loss of load
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h | Price |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)
Min reserve procurement
Pictogram | Label | Tags |
---|---|---|
Minimum national reserve procurement |
Description
Object defining cooperation behavior between countries for reserve procurement
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_setContraints | Boolean | Boolean that enables min reserve procurement | |
_regionDefinition | N/A | Indexed matrix (2 columns) with min reserve requirements per region |
Code
if bool(asset.getData("_setContraints").getDataValue()) == True:
cooperationRegions = parseIndexedMatrixWithTwoColumns(asset, indexedMatrixName="_regionDefinition")
nationalReserveProcurement(cooperationRegions)
Nuclear fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Nuclear fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Nuclear power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_gradientUp | %/min | Maximal upward variation, expressed as a percentage of the available capacity per minute | |
_gradientDown | %/min | Maximal downward variation, expressed as a percentage of the available capacity per minute | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addCo2Production(asset, stateON)
addGradients(asset,stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
OCGT fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
OCGT fleet | FUEL_CONSUMPTION (MW.h PCS) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Open cycle gas turbine
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_variableCost | €/MW.h | Variable costs | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_fuelYield | MW.h/MW.h PCS | Yield between the production and the fuel consumption | |
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_gradientUp | %/min | Maximal upward variation, expressed as a percentage of the available capacity per minute | |
_gradientDown | %/min | Maximal downward variation, expressed as a percentage of the available capacity per minute | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_productionHeatRate | MW.h PCS/MW.h | Yield between the delivered energy and the associated fuel consumption | |
_runningCapaFuelConsumption | MW.h PCS/MW/h | Yield between the Running capacity and the associated fuel consumption | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR | |
_mfrrUpNotRunningCost | €/MW | Cost associated with the mfrr reserve procurement from non-running capacity |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addFuelConsumption(asset, stateON)
addCo2Production(asset, stateON)
addGradients(asset,stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isQuickStart=True)
finalize(stateON)
Oil fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Oil fleet | FUEL_CONSUMPTION (MW.h PCS) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Oil power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_variableCost | €/MW.h | Variable costs | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_fuelYield | MW.h/MW.h PCS | Yield between the production and the fuel consumption | |
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_productionHeatRate | MW.h PCS/MW.h | Yield between the delivered energy and the associated fuel consumption | |
_runningCapaFuelConsumption | MW.h PCS/MW/h | Yield between the Running capacity and the associated fuel consumption | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR | |
_mfrrUpNotRunningCost | €/MW | Cost associated with the mfrr reserve procurement from non-running capacity |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addFuelConsumption(asset, stateON)
addCo2Production(asset, stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isQuickStart=True)
finalize(stateON)
Oil supply
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Oil supply | E (MW.h PCS) |
Description
Oil supply
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h PCS | Price |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)
Other fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Other fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Generic asset to gather power plants
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Other renewable fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Other renewable fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Generic asset to gather renewable power plants
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Other thermal fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Other thermal fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Generic asset to gather thermal power plants
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addCo2Production(asset, stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Pipeline
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Pipeline | CONSUMPTION (MW) | PRODUCTION (MW) |
Description
Gas pipeline
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_entryFee | €/MW.h | Entry fee | |
_consumptionCost | €/MW.h | Consumption costs | |
_exitFee | €/MW.h | Exit fee | |
_losses | % | Transmission losses |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
# Computing overall cost to set on incoming flows (consumption cost + network exit fee)
overallConsumptionCost = getAssetData(asset, "_consumptionCost", dataName=LABELS[CONSUMPTION_COST], mustExist=False)
exitFee = getAssetData(asset, "_exitFee", mustExist=False)
if exitFee is not None:
overallConsumptionCost += exitFee
# Computing overall cost to set on outcoming flows (production cost + network entry fee)
overallProductionCost = getAssetData(asset, "_productionCost", dataName=LABELS[PRODUCTION_COST], mustExist=False)
entryFee = getAssetData(asset, "_entryFee", mustExist=False)
if entryFee is not None:
overallProductionCost += entryFee
addEnergyTransmission(asset, stateON, consumptionCost = overallConsumptionCost, productionCost = overallProductionCost)
finalize(stateON)
Pipeline equality
Pictogram | Label | Tags |
---|---|---|
Pipeline equality |
Description
Model object of a gas pipeline, used for capacity optimization, with equal capacity installed
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_setContraints | Boolean | Boolean that enables equality of added capacities for both ways |
Code
if bool(asset.getData("_setContraints").getDataValue()) == True:
setTransmissionEquality(Crystal.getPortfolio(), F_PIPELINE)
Pipeline reverse flow
Pictogram | Label | Tags |
---|---|---|
Pipeline reverse flow |
Description
Model object of a gas pipeline, used for capacity optimization, with equal capacity installed in favor to the most expensive sense
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_setContraints | Boolean | Boolean that enables reverse flow |
Code
if bool(asset.getData("_setContraints").getDataValue()) == True:
setPipelineReverseFlowConstraints(Crystal.getPortfolio())
Power demand
Pictogram | Label | Tags | Inputs |
---|---|---|---|
Power demand | E (MW) |
Description
Power demand
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_demand | MW | Demand |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
stateON.setEquality(asset.getParameter('E'), True, asset.getData('_demand'))
MODEL.addState(stateON)
Pumped storage fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Pumped storage fleet | CONSUMPTION (MW) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Pumped storage hydroelectric power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_availabilityIn | % | Input availability for storage assets | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_consumptionCost | €/MW.h | Consumption costs | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_dischargeTime | h | Discharge time | |
_storageAvailability | % | Storage availability, expressed as a percentage of the installed storage capacity | |
_inputEfficiency | Pumping efficiency | ||
_outputEfficiency | Turbining efficiency | ||
_minStorageLevel | % | Minimum level for storage, expressed as a percentage of the installed storage capacity | |
_initialStorageLevel | % | Initial storage level, expressed as a percentage of the installed storage capacity | |
_boundedSupply | MW | Production quota | |
_storageCost | €/MW.h/h | Cost associated with storage | |
_pmaxIn | MW | Input maximal power | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW | Cost associated with maintaining a certain running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR | |
_mfrrUpNotRunningCost | €/MW | Cost associated with the mfrr reserve procurement from non-running capacity |
Results
Id | Unit |
---|---|
{energy:electricity,model:stock,bound:level_LB} | €/MW.h |
{energy:electricity,model:stock,bound:level_UB} | €/MW.h |
{energy:electricity,model:stock,name:evo} | €/MW.h |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addEnergyConsumption(asset, stateON, availability="_availabilityIn")
addDischargeStock(asset, stateON, minStorageLevel="_minStorageLevel", inputEfficiency="_inputEfficiency", outputEfficiency="_outputEfficiency", initialStorageLevel="_initialStorageLevel", storageAvailability="_storageAvailability")
addReserveProduction(asset, stateON, isQuickStart=True, isFleetModeEnabled=True)
finalize(stateON)
Regulated Coal fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Regulated Coal fleet | FUEL_CONSUMPTION (MW.h PCS) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Coal-fired power plant with CO2 emission quotas
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_variableCost | €/MW.h | Variable costs | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_fuelYield | MW.h/MW.h PCS | Yield between the production and the fuel consumption | |
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_gradientUp | %/min | Maximal upward variation, expressed as a percentage of the available capacity per minute | |
_gradientDown | %/min | Maximal downward variation, expressed as a percentage of the available capacity per minute | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_productionHeatRate | MW.h PCS/MW.h | Yield between the delivered energy and the associated fuel consumption | |
_runningCapaFuelConsumption | MW.h PCS/MW/h | Yield between the Running capacity and the associated fuel consumption | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_dischargeTime | h | Discharge time | |
_boundedSupply | MW | Production quota | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addDischargeStock(asset, stateON, energyPickup=None)
addGradients(asset,stateON)
addFuelConsumption(asset, stateON)
addCo2Production(asset, stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON)
finalize(stateON)
Regulated Oil fleet
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Regulated Oil fleet | FUEL_CONSUMPTION (MW.h PCS) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Oil-fired power plant with COE emission quotas
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_variableCost | €/MW.h | Variable costs | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_fuelYield | MW.h/MW.h PCS | Yield between the production and the fuel consumption | |
_fuelCo2Content | t/MW.h PCS | Yield between the fuel consumption and the CO2 emissions | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_minLoad | % | Minimum production level, expressed as a percentage of the available capacity | |
_clusterStartingCost | €/MW | Cost to start additional capacity | |
_runningCost | €/MW/h | Cost associated with maintaining a certain running capacity | |
_productionHeatRate | MW.h PCS/MW.h | Yield between the delivered energy and the associated fuel consumption | |
_runningCapaFuelConsumption | MW.h PCS/MW/h | Yield between the Running capacity and the associated fuel consumption | |
_co2ContentRunningBound | t/MW.h | CO2 emissions with respect to running capacity | |
_runningCapacityMinLoad | % | Minimum level for the production, expressed as a percentage of the running capacity (for assets in fleet mode with reserve, please refer to addReserveProduction(..) for the running capacity definition) | |
_minOffTime | h | When a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTime | |
_storageCapex | €/MW.h/Year | Capital expenditure for storage assets | |
_storageCapacity | MW.h | Storage capacity | |
_dischargeTime | h | Discharge time | |
_boundedSupply | MW | Production quota | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR | |
_mfrrUpNotRunningCost | €/MW | Cost associated with the mfrr reserve procurement from non-running capacity |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addDischargeStock(asset, stateON, energyPickup=None)
addFuelConsumption(asset, stateON)
addCo2Production(asset, stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isQuickStart=True)
finalize(stateON)
Reserve demand
Pictogram | Label | Tags | Inputs |
---|---|---|---|
Reserve demand | E (MW) |
Description
Reserve needs
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_demand | MW | Demand | |
_localReserve | % | Fraction of the total reserve requirement that needs to be procured localy (ie within the associated zone) |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
stateON.setEquality(asset.getParameter('E'), True, asset.getData('_demand'))
MODEL.addState(stateON)
Reserve Dimensioning
Pictogram | Label | Tags |
---|---|---|
Reserve Dimensioning Data |
Description
Object containing reserve sizing parameters
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_isAnnualReserve | Boolean | Boolean defining if reserve sizing is constant over the year or can vary hourly | |
_forecastHorizonForImbalances | h | Forecast horizon considered for reserve dimensioning |
Code
Reserve Symmetry Requirement
Pictogram | Label | Tags |
---|---|---|
Reserve Symmetry Requirement |
Description
Object defining symmetric reserve requirement constraints
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_setContraints | Boolean | Boolean that enables symmetric reserve procurement, for zones defined in _activationPerZone matrix | |
_activationPerZone | Boolean | Matrix defining for each zone if reserve procurement is symmetric or not |
Code
if bool(asset.getData("_setContraints").getDataValue()) == True:
activationPerZone = parseIndexedMatrixWithTwoColumns(asset, indexedMatrixName="_activationPerZone")
reserveSymmetryRequirement(activationPerZone)
Scenario
Pictogram | Label | Tags |
---|---|---|
Scenario |
Description
Object containing information about the scenario
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_databaseTestcase | Test case numbers in METIS Database | ||
_databaseYear | Year in METIS Database | ||
_databaseVersion | Version in METIS Database | ||
_originalZones | Aggregated region of zones | ||
_aggregatedZones | Aggregated region definition | ||
_installedCapacities | MW | Installed capacities per zone | |
_meanDemands | MW | Mean demand per zone |
Code
Sell contract
Pictogram | Label | Tags | Inputs |
---|---|---|---|
Sell contract | E (MW) |
Description
Power sell contract
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h | Price |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), True,asset.getData('_price'))
MODEL.addState(stateON)
Solar fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Solar fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Solar power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_incentive | €/MW.h | Incentives to produce | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
productionCostWithIncentive = asset.getData('_productionCost') - asset.getData('_incentive')
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON, productionCost=productionCostWithIncentive)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Supply contract with bound
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Supply contract with bound | E (MW) |
Description
Supply contract with upper bound limit
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h | Price | |
_pmax | MW | Installed power capacity |
Code
# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
stateON.addUpperBound( asset.getParameter('E'), False, asset.getData('_pmax') )
MODEL.addState(stateON)
Transmission
Pictogram | Label | Tags | Inputs | Outputs |
---|---|---|---|---|
Transmission | CONSUMPTION (MW) | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Power transmission line
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_consumptionCost | €/MW.h | Consumption costs | |
_losses | % | Transmission losses | |
_susceptance | Siemens | The imaginary part of admittance, measure of how easy it is for alternating current to pass through a capacitance or an inductance | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyTransmission(asset, stateON)
addTransmissionReserveProduction(asset, stateON)
finalize(stateON)
Transmission equality
Pictogram | Label |
---|---|
Transmission equality |
Description
Model object of a power transmission line, used for capacity optimization, with equal capacity installed
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_setContraints | Boolean | Boolean that enables equality of added capacities for both ways |
Code
if bool(asset.getData("_setContraints").getDataValue()) == True:
setTransmissionEquality(Crystal.getPortfolio(), F_TRANSMISSION)
Waste fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Waste fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) CO2 (t) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Waste-fired power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_co2Content | t/MW.h | Yield between the CO2 emissions and the production | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addCo2Production(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Well
Pictogram | Label | Tags | Inputs |
---|---|---|---|
Well | E (MW) |
Description
Energy over-production
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_price | €/MW.h | Price |
Code
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), True, asset.getData('_price'))
MODEL.addState(stateON)
Wind offshore fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Wind offshore fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Offshore wind power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_incentive | €/MW.h | Incentives to produce | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
productionCostWithIncentive = asset.getData('_productionCost') - asset.getData('_incentive')
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON, productionCost=productionCostWithIncentive)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)
Wind onshore fleet
Pictogram | Label | Tags | Outputs |
---|---|---|---|
Wind onshore fleet | SYNC_RESERVE_DOWN (MW) MFRR_DOWN (MW) SYNC_RESERVE_UP (MW) MFRR_UP (MW) PRODUCTION (MW) |
Description
Onshore wind power plant
Parameters
Id | Unit | Purpose | Behaviors |
---|---|---|---|
_capex | €/MW/Year | Capital expenditure (only used for capacity optimization) | |
_foc | €/MW/Year | Fixed Operating Costs (only used for capacity optimization) | |
_pmax | MW | Installed power capacity | |
_pmaxmin | MW | Installed capacity lower bound for capacity optimization | |
_pmaxmax | MW | Installed capacity upper bound for capacity optimization | |
_availability | % | Available capacity, expressed as a percentage of the installed capacity | |
_productionCost | €/MW.h | Production cost (fuel cost not included) | |
_incentive | €/MW.h | Incentives to produce | |
_maxShareSyncReserveUp | % | Maximal share of upward sync. reserve in running capacity | |
_maxShareSyncReserveDown | % | Maximal share of downward sync. reserve in running capacity | |
_maxShareMfrrUp | % | Maximal share of upward mFRR and sync. reserve in running capacity | |
_maxShareMfrrDown | % | Maximal share of downward mFRR and sync. reserve in running capacity | |
_syncReserveUpCost | €/MW | Operating cost of the upward sync. reserve | |
_syncReserveDownCost | €/MW | Operating cost of the downward sync. reserve | |
_mfrrUpCost | €/MW | Operating cost of upward mFRR | |
_mfrrDownCost | €/MW | Operating cost of downward mFRR |
Code
# ---------------------------------------------------
# Asset parameters definition
# ---------------------------------------------------
productionCostWithIncentive = asset.getData('_productionCost') - asset.getData('_incentive')
# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON, productionCost=productionCostWithIncentive)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)