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)