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
IdDescriptionBehaviors
OPTIMCAPACapacity OptimizationGRADIENTS CLUSTER RESERVE SYNC_RESERVE_UP SYNC_RESERVE_DOWN MFRR_UP MFRR_DOWN OPTIM_PMAX MUST_RUN FUEL USE_PMAX_IN CONSTANT_VAR USE_ENERGY_PRODUCTION DISCHARGE_TIMES VOLUME_TARGET GAS_BACKUP_HEATER 
SIMULATIONSimulationGRADIENTS CLUSTER RESERVE SYNC_RESERVE_UP SYNC_RESERVE_DOWN MFRR_UP MFRR_DOWN MUST_RUN FUEL USE_PMAX_IN CONSTANT_VAR USE_ENERGY_PRODUCTION DISCHARGE_TIMES VOLUME_TARGET GAS_BACKUP_HEATER 

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.

IdDescription
CLUSTEREnable cluster model, allowing to take into account dynamic constraints and starting costs
CONSTANT_VARForce a temporal variable to be constant throughout the simulation
DISCHARGE_TIMESUse a discharge times parameter to implicitly define the storage capacity thanks to the installed power capacity
FUELUse a fuel supply instead of direct production cost modelling
GAS_BACKUP_HEATERUse a gas backup heater instead of an electric one
GRADIENTSEnable gradient constraints for energy production
MFRR_DOWNParticipation to downward mFRR
MFRR_UPParticipation to upward mFRR
MUST_RUNForce must run generation
OPTIM_PMAXEnable capacity optimization
RESERVEEnable reserve procurement
SYNC_RESERVE_DOWNParticipation to downward synchronized reserve
SYNC_RESERVE_UPParticipation to upward synchronized reserve
USE_ENERGY_PRODUCTIONEnable/disable the production of a given energy for an asset
USE_PMAX_INUse a different parameter for input power capacity than then one for output power capacity
VOLUME_TARGETUse 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.

PictogramIdDescriptionTags
Biomass fleetBiomass fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
Biomass supplyBiomass supplySUPPLY
CONTRACT
FUEL_SUPPLY
CAES fleetCAES fleetPRODUCTION
CONSUMPTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
CCGT fleetCCGT fleetPRODUCTION
RESERVE_PRODUCTION
CO2 emissionsCO2 emissionsCONTRACT
Coal fleetCoal fleetPRODUCTION
RESERVE_PRODUCTION
Coal supplyCoal supplySUPPLY
CONTRACT
FUEL_SUPPLY
CSP fleetCSP fleetPRODUCTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
Decentralized thermal fleetDecentralized thermal fleetPRODUCTION
RESERVE_PRODUCTION
DemandDemandCONTRACT
DEMAND
Demand-responseDemand-responseMODULE:LOAD MANAGEMENT
CONTRACT
DEMAND
Derived gasses fleetDerived gasses fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
DSRDSRMODULE:RESERVE EXTRA
Electric VehiclesElectric Vehicles
ElectrolysisElectrolysisPRODUCTION
Export contractExport contractCONTRACT
EXPORT
Gas consumptionGas consumptionMODULE:GAS
CONSUMPTION_CONTRACT
DEMAND
Gas exportsGas exportsMODULE:GAS
EXPORT
Gas importsGas importsMODULE:GAS
IMPORT
Gas Market Constant MarkupGas Market Markup CostMODULE:GAS
Gas productionGas productionMODULE:GAS
Gas storageGas storageMODULE:GAS
STORAGE
GAS_STORAGE
Gas supplyGas supplySUPPLY
CONTRACT
FUEL_SUPPLY
Generic StorageGeneric StoragePRODUCTION
CONSUMPTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
Geothermal fleetGeothermal fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
H2 to CH4H2 to CH4PRODUCTION
Heat PumpHeat PumpMODULE:LOAD MANAGEMENT
Hydro fleetHydro fleetPRODUCTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
Hydro RoR fleetHydro RoR fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
Hydrogen fleetHydrogen fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
Import contractImport contractSUPPLY
CONTRACT
IMPORT
Import pipelineImport pipelineMODULE:GAS
TRANSMISSION
IMPORT
EXPORT
Lignite fleetLignite fleetPRODUCTION
RESERVE_PRODUCTION
Lignite supplyLignite supplySUPPLY
CONTRACT
FUEL_SUPPLY
Lithium ion battery fleetLithium ion battery fleetPRODUCTION
CONSUMPTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
LNG exportsLNG exportsMODULE:GAS
EXPORT
LNG importsLNG importsMODULE:GAS
IMPORT
LNG liquefaction trainLNG liquefaction trainMODULE:GAS
EXPORT
LNG terminalLNG terminalMODULE:GAS
EXPORT
IMPORT
STORAGE
GAS_STORAGE
Loss of loadLoss of loadSUPPLY
CONTRACT
LOSS_OF_ENERGY
Min reserve procurementMinimum national reserve procurementMODULE:RESERVE SIZING
Nuclear fleetNuclear fleetPRODUCTION
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
OCGT fleetOCGT fleetPRODUCTION
RESERVE_PRODUCTION
QUICK_START
Oil fleetOil fleetPRODUCTION
RESERVE_PRODUCTION
QUICK_START
Oil supplyOil supplySUPPLY
CONTRACT
FUEL_SUPPLY
Other fleetOther fleetPRODUCTION
MUST_RUN
CURTAILABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
Other renewable fleetOther renewable fleetPRODUCTION
MUST_RUN
CURTAILABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
Other thermal fleetOther thermal fleetPRODUCTION
MUST_RUN
CURTAILABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
PipelinePipelineMODULE:GAS
TRANSMISSION
IMPORT
EXPORT
Pipeline equalityPipeline equalityMODULE:GAS
Pipeline reverse flowPipeline reverse flowMODULE:GAS
Power demandPower demandCONTRACT
DEMAND
Pumped storage fleetPumped storage fleetPRODUCTION
CONSUMPTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
Regulated Coal fleetRegulated Coal fleetPRODUCTION
RESERVE_PRODUCTION
Regulated Oil fleetRegulated Oil fleetPRODUCTION
RESERVE_PRODUCTION
QUICK_START
Reserve demandReserve demandCONSUMPTION_CONTRACT
DEMAND
Reserve DimensioningReserve Dimensioning DataMODULE:RESERVE SIZING
Reserve Symmetry RequirementReserve Symmetry RequirementMODULE:RESERVE SIZING
ScenarioScenarioMODULE:RESERVE SIZING
Sell contractSell contractCONTRACT
Solar fleetSolar fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
Supply contract with boundSupply contract with boundSUPPLY
CONTRACT
TransmissionTransmissionTRANSMISSION
IMPORT
EXPORT
RESERVE_PRODUCTION
Transmission equalityTransmission equality
Waste fleetWaste fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
WellWellCONTRACT
CURTAILMENT
Wind offshore fleetWind offshore fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
Wind onshore fleetWind onshore fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER

Biomass fleet

PictogramLabelTagsInputsOutputs
Biomass fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_variableCost€/MW.hVariable costsFUEL
_productionCost€/MW.hProduction cost (fuel cost not included)not FUEL
_fuelYieldMW.h/MW.h PCSYield between the production and the fuel consumption(not CLUSTER) and FUEL
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsFUEL
_co2Contentt/MW.hYield between the CO2 emissions and the productionnot FUEL
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_gradientUp%/minMaximal upward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_gradientDown%/minMaximal downward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_productionHeatRateMW.h PCS/MW.hYield between the delivered energy and the associated fuel consumptionCLUSTER and FUEL
_runningCapaFuelConsumptionMW.h PCS/MW/hYield between the Running capacity and the associated fuel consumptionCLUSTER and FUEL
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER and not FUEL
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsOutputs
Biomass supplySUPPLY
CONTRACT
FUEL_SUPPLY
E (MW.h PCS)
Description

Biomass supply

Parameters
IdUnitPurposeBehaviors
_price€/MW.h PCSPrice
Code



# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------

stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)


	

CAES fleet

PictogramLabelTagsInputsOutputs
CAES fleetPRODUCTION
CONSUMPTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacity(not DISCHARGE_TIMES)
_dischargeTimehDischarge timeDISCHARGE_TIMES
_storageAvailability%Storage availability, expressed as a percentage of the installed storage capacity
_inputEfficiencyPumping efficiency
_outputEfficiencyTurbining efficiency
_lossRateStorage loss rate
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
_mfrrUpNotRunningCost€/MWCost associated with the mfrr reserve procurement from non-running capacityRESERVE
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

PictogramLabelTagsInputsOutputs
CCGT fleetPRODUCTION
RESERVE_PRODUCTION
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_variableCost€/MW.hVariable costsFUEL
_productionCost€/MW.hProduction cost (fuel cost not included)not FUEL
_fuelYieldMW.h/MW.h PCSYield between the production and the fuel consumption(not CLUSTER) and FUEL
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsFUEL
_co2Contentt/MW.hYield between the CO2 emissions and the productionnot FUEL
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_gradientUp%/minMaximal upward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_gradientDown%/minMaximal downward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_productionHeatRateMW.h PCS/MW.hYield between the delivered energy and the associated fuel consumptionCLUSTER and FUEL
_runningCapaFuelConsumptionMW.h PCS/MW/hYield between the Running capacity and the associated fuel consumptionCLUSTER and FUEL
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER and not FUEL
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsInputs
CO2 emissionsCONTRACT
E (t)
Description

CO2 emissions

Parameters
IdUnitPurposeBehaviors
_price€/tPrice
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------

stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), True, asset.getData('_price'))
MODEL.addState(stateON)


	

Coal fleet

PictogramLabelTagsInputsOutputs
Coal fleetPRODUCTION
RESERVE_PRODUCTION
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_variableCost€/MW.hVariable costsFUEL
_productionCost€/MW.hProduction cost (fuel cost not included)not FUEL
_fuelYieldMW.h/MW.h PCSYield between the production and the fuel consumption(not CLUSTER) and FUEL
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsFUEL
_co2Contentt/MW.hYield between the CO2 emissions and the productionnot FUEL
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_gradientUp%/minMaximal upward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_gradientDown%/minMaximal downward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_productionHeatRateMW.h PCS/MW.hYield between the delivered energy and the associated fuel consumptionCLUSTER and FUEL
_runningCapaFuelConsumptionMW.h PCS/MW/hYield between the Running capacity and the associated fuel consumptionCLUSTER and FUEL
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER and not FUEL
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsOutputs
Coal supplySUPPLY
CONTRACT
FUEL_SUPPLY
E (MW.h PCS)
Description

Coal supply

Parameters
IdUnitPurposeBehaviors
_price€/MW.h PCSPrice
Code



# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------

stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)


	

CSP fleet

PictogramLabelTagsOutputs
CSP fleetPRODUCTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacity for electricity productionnot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_prorataSupply%Availability solar
_prorataSupplyCoefRatio PmaxSolar/PmaxTurbine
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacity(not DISCHARGE_TIMES)
_dischargeTimehDischarge timeDISCHARGE_TIMES
_storageAvailability[0,1]Storage availability, expressed as a percentage of the installed storage capacity
_lossRate1/hourStorage loss rate
_outputEfficiencyMW/MW.hTurbining efficiency
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsOutputs
Decentralized thermal fleetPRODUCTION
RESERVE_PRODUCTION
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
CO2 (t)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Decentralized thermal power plant

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_co2Contentt/MW.hYield between the CO2 emissions and the production
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addCo2Production(asset, stateON)
addEnergyProduction(asset, stateON, minLoad="_minLoad")
addReserveProduction(asset, stateON)
finalize(stateON)


		

Demand

PictogramLabelTagsInputs
DemandCONTRACT
DEMAND
E (MW)
Description

Power demand

Parameters
IdUnitPurposeBehaviors
_demandMWDemand
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
stateON.setEquality(asset.getParameter('E'), True, asset.getData('_demand'))
MODEL.addState(stateON)


		

Demand-response

PictogramLabelTagsInputs
Demand-responseMODULE:LOAD MANAGEMENT
CONTRACT
DEMAND
E (MW)
Description

Controllable power demand

Parameters
IdUnitPurposeBehaviors
_demandMWRealistic demand (non-flexible when using MUST_RUN, or raw demand when enabling demand flexibility)
_demandCycleDurationhDemand cycle duration, to compute a regular flexible demand from the realistic demandnot MUST_RUN
_demandFirstHourhDemand first hour, to compute a regular flexible demand from the realistic demandnot MUST_RUN
_pmaxInMWInput maximal powernot MUST_RUN
_storageCost€/MW.h/hCost associated with storagenot MUST_RUN
Code




# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
setDemandResponseModel(stateON, asset)
finalize(stateON)


        

Derived gasses fleet

PictogramLabelTagsOutputs
Derived gasses fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
CO2 (t)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Derived gasses fleet

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_co2Contentt/MW.hYield between the CO2 emissions and the production
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addCo2Production(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)


		

DSR

PictogramLabelTagsOutputs
DSRMODULE:RESERVE EXTRA
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
Description

Demand side response (reserve) configuration

Parameters
IdUnitPurposeBehaviors
_pmaxMWInstalled power capacityRESERVE
_syncReserveProcurementCost€/MWSynchronized reserve procurement cost, for up and downward reserveRESERVE and (SYNC_RESERVE_UP or SYNC_RESERVE_DOWN)
_mfrrProcurementCost€/MWmFRR reserve procurement cost, for up and downward reserveRESERVE and (MFRR_UP or MFRR_DOWN)
Code




# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------

stateON = AssetState('ON')
addDSRReserveProduction(asset, stateON)
finalize(stateON)


Electric Vehicles

PictogramLabelInputsOutputs
Electric VehiclesCONSUMPTION (MW)PRODUCTION (MW)
Description

Fleet of electric vehicles

Parameters
IdUnitPurposeBehaviors
_totalEVEVTotal number of vehicles
_initialConnectedEV%Percentage of connected EV at t=0not MUST_RUN
_arrivals%Percentage of vehicles arriving at terminal
_departures%Percentage of vehicles leaving from terminalnot MUST_RUN
_evStorageCapacitykWhEV storage capacitynot MUST_RUN
_evRechargekWhAverage journey discharge
_evPmaxInkWAverage charging capacity per vehicle
_inputEfficiency%EV charging efficiency
_storageCost€/MWh/hCost associated with storagenot MUST_RUN
_evPmaxOutkWAverage Vehicle-to-grid discharging capacityUSE_ENERGY_PRODUCTION and not MUST_RUN
_outputEfficiency%EV discharging efficiencyUSE_ENERGY_PRODUCTION and not MUST_RUN
_productionCost€/MWhProduction costUSE_ENERGY_PRODUCTION and not MUST_RUN
Code




# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
setElectricVehiclesModel(stateON, asset)
finalize(stateON)




		

Electrolysis

PictogramLabelTagsInputsOutputs
ElectrolysisPRODUCTION
CONSUMPTION (MW)PRODUCTION (MW)
Description
Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_consumptionCost€/MW.hConsumption cost
_yieldMW.h/MW.h PCSYield 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

PictogramLabelTagsInputs
Export contractCONTRACT
EXPORT
E (MW)
Description

Power export contract, to model an export contract to a country not explicitly modeled in the context

Parameters
IdUnitPurposeBehaviors
_exportsMWExports
Code



# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------

stateON = AssetState('ON')
stateON.setEquality( asset.getParameter('E'), True, asset.getData('_exports') )
MODEL.addState(stateON)


	

Gas consumption

PictogramLabelTagsInputsOutputs
Gas consumptionMODULE:GAS
CONSUMPTION_CONTRACT
DEMAND
CONSUMPTION (MW.h PCS)CO2 (t)
Description

Gas consumption

Parameters
IdUnitPurposeBehaviors
_demandMWGas consumption
_co2Contentt/MW.hYield between the CO2 emissions and the gas consumption
_costt/MW.hConsumption 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

PictogramLabelTagsInputs
Gas exportsMODULE:GAS
EXPORT
CONSUMPTION (MW)
Description

Gas exports

Parameters
IdUnitPurposeBehaviors
_pmaxMWMaximal export capacitynot MUST_RUN
_minLoad%Minimum export level, expressed as a percentage of the available export capacitynot MUST_RUN
_availability[0,1]Available export capacity, expressed as a percentage of the maximal capacitynot MUST_RUN
_minimumVolumeMW.hMinimal export volume over the horizonVOLUME_TARGET and not MUST_RUN
_storageCapacityMW.hMaximal export volume over the horizonVOLUME_TARGET and not MUST_RUN
_minProfile%Minimal export profileVOLUME_TARGET and not MUST_RUN
_storageAvailability%Maximal export profileVOLUME_TARGET and not MUST_RUN
_exportsMWSets inelastic exportsMUST_RUN
_priceEarnings 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

PictogramLabelTagsOutputs
Gas importsMODULE:GAS
IMPORT
PRODUCTION (MW)
Description

Gas imports

Parameters
IdUnitPurposeBehaviors
_pmaxMWMaximal import capacitynot MUST_RUN
_minLoad%Minimum import level, expressed as a percentage of the available capacitynot MUST_RUN
_availability[0,1]Available import capacity, expressed as a percentage of the maximal capacitynot MUST_RUN
_minimumVolumeMW.hMinimal import volume over the horizonVOLUME_TARGET and not MUST_RUN
_storageCapacityMW.hMaximal import volume over the horizonVOLUME_TARGET and not MUST_RUN
_minProfile%Minimal import profileVOLUME_TARGET and not MUST_RUN
_storageAvailability%Maximal import profileVOLUME_TARGET and not MUST_RUN
_importsMWSets inelastic importsMUST_RUN
_productionCostCosts 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

PictogramLabelTags
Gas Market Markup CostMODULE:GAS
Description

Model object containing gas suppliers' mark-ups data

Parameters
IdUnitPurposeBehaviors
_markupCost€/MW.hConstant gas price mark-ups
Code



# ---------------------------------------------------
# Asset parameters definition 
# ---------------------------------------------------


		

Gas production

PictogramLabelTagsOutputs
Gas productionMODULE:GAS
PRODUCTION (MW)
Description

Gas production asset

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled production capacity
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability[0,1]Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost
_minLoad% of PmaxMinimum production level, expressed as a percentage of the available capacitynot MUST_RUN
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

PictogramLabelTagsInputsOutputs
Gas storageMODULE:GAS
STORAGE
GAS_STORAGE
CONSUMPTION (MW)PRODUCTION (MW)
Description

Gas storage

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWWithdrawal capacity (from the storage)not OPTIM_PMAX
_pmaxminMWWithdrawal capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWWithdrawal capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available withdrawal capacity, expressed as a percentage of the installed capacity
_consumptionCost€/MW.hConsumption costs
_exitFee€/MW.hExit fee
_productionCost€/MW.hProduction cost (fuel cost not included)
_entryFee€/MW.hEntry fee
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacitynot DISCHARGE_TIMES
_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
_dischargeTimehDischarge timeDISCHARGE_TIMES
_pmaxInMWInjection capacity (to the storage)not OPTIM_PMAX and USE_PMAX_IN
_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
_pmaxInOutRatioInjection (to the storage) over Withdrawal (from the storage) ratio (for capacity optimization)OPTIM_PMAX
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

PictogramLabelTagsOutputs
Gas supplySUPPLY
CONTRACT
FUEL_SUPPLY
E (MW.h PCS)
Description

Gas supply

Parameters
IdUnitPurposeBehaviors
_price€/MW.h PCSPrice
Code



# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------

stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)


	

Generic Storage

PictogramLabelTagsInputsOutputs
Generic StoragePRODUCTION
CONSUMPTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacity(not DISCHARGE_TIMES)
_dischargeTimehDischarge timeDISCHARGE_TIMES
_storageAvailability%Storage availability, expressed as a percentage of the installed storage capacity
_inputEfficiencyPumping efficiency
_outputEfficiencyTurbining efficiency
_lossRateStorage loss rate
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
_mfrrUpNotRunningCost€/MWCost associated with the mfrr reserve procurement from non-running capacityRESERVE
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

PictogramLabelTagsOutputs
Geothermal fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
CO2 (t)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Geothermal power plant

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_co2Contentt/MW.hYield between the CO2 emissions and the production
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addCo2Production(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)


		

H2 to CH4

PictogramLabelTagsInputsOutputs
H2 to CH4PRODUCTION
CONSUMPTION (MW)PRODUCTION (MW)
Description
Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost
_yieldMW.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

PictogramLabelTagsInputsOutputs
Heat PumpMODULE:LOAD MANAGEMENT
CONSUMPTION (MW)FUEL_CONSUMPTION (MW)CO2 (t)
Description

Heat Pump

Parameters
IdUnitPurposeBehaviors
_heatingDemandMW.hHeating demand
_bivalentTemp°CThe temperature below which the back-up heater has to supplement the heat pump is called the bivalent temperature
_pmaxMWInstalled HP thermal capacity
_temperature°CHeat source temperature
_COPMW.hCoefficient of performance
_backUpHeaterYieldBackup heater efficiency
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsGAS_BACKUP_HEATER
_dischargeTimehStorage discharge timenot MUST_RUN
_storageCost€/MW.h/hCost associated with storagenot MUST_RUN
_lossRate%/hStorage loss rate (percentage of lost energy per time step)not MUST_RUN
Results
IdUnit
{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

PictogramLabelTagsInputsOutputs
Hydro fleetPRODUCTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_availabilityIn%Input availability for storage assets
_productionCost€/MW.hProduction cost (fuel cost not included)
_consumptionCost€/MW.hConsumption costs
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_gradientUp%/minMaximal upward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_gradientDown%/minMaximal downward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacity(not DISCHARGE_TIMES)
_dischargeTimehDischarge timeDISCHARGE_TIMES
_storageAvailability%Storage availability, expressed as a percentage of the installed storage capacity
_inputEfficiencyPumping efficiency
_outputEfficiencyTurbining 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
_boundedSupplyMWWater inflow
_storageCost€/MW.h/hCost associated with storage
_pmaxInMWInput maximal powerUSE_PMAX_IN and not OPTIM_PMAX
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MWCost associated with maintaining a certain running capacityCLUSTER
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
_mfrrUpNotRunningCost€/MWCost associated with the mfrr reserve procurement from non-running capacityRESERVE
Results
IdUnit
{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

PictogramLabelTagsOutputs
Hydro RoR fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Run-of-river plants

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_incentive€/MW.hIncentives to produce
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsOutputs
Hydrogen fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
CO2 (t)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Hydroelectric turbines

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_co2Contentt/MW.hYield between the CO2 emissions and the production
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addCo2Production(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)


		

Import contract

PictogramLabelTagsOutputs
Import contractSUPPLY
CONTRACT
IMPORT
E (MW)
Description

Power import contract, to model an import contract from a country not explicitly modeled in the context

Parameters
IdUnitPurposeBehaviors
_importsMWImports
Code



# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------
stateON = AssetState('ON')
stateON.setEquality( asset.getParameter('E'), False, asset.getData('_imports') )
MODEL.addState(stateON)


	

Import pipeline

PictogramLabelTagsInputsOutputs
Import pipelineMODULE:GAS
TRANSMISSION
IMPORT
EXPORT
CONSUMPTION (MW)PRODUCTION (MW)
Description

Import gas pipeline

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_entryFee€/MW.hEntry fee
_consumptionCost€/MW.hConsumption costs
_exitFee€/MW.hExit 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

PictogramLabelTagsInputsOutputs
Lignite fleetPRODUCTION
RESERVE_PRODUCTION
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_variableCost€/MW.hVariable costsFUEL
_productionCost€/MW.hProduction cost (fuel cost not included)not FUEL
_fuelYieldMW.h/MW.h PCSYield between the production and the fuel consumption(not CLUSTER) and FUEL
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsFUEL
_co2Contentt/MW.hYield between the CO2 emissions and the productionnot FUEL
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_gradientUp%/minMaximal upward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_gradientDown%/minMaximal downward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_productionHeatRateMW.h PCS/MW.hYield between the delivered energy and the associated fuel consumptionCLUSTER and FUEL
_runningCapaFuelConsumptionMW.h PCS/MW/hYield between the Running capacity and the associated fuel consumptionCLUSTER and FUEL
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER and not FUEL
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsOutputs
Lignite supplySUPPLY
CONTRACT
FUEL_SUPPLY
E (MW.h PCS)
Description

Lignite supply

Parameters
IdUnitPurposeBehaviors
_price€/MW.h PCSPrice
Code



# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------

stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)


	

Lithium ion battery fleet

PictogramLabelTagsInputsOutputs
Lithium ion battery fleetPRODUCTION
CONSUMPTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacity(not DISCHARGE_TIMES)
_dischargeTimehDischarge timeDISCHARGE_TIMES
_storageAvailability%Storage availability, expressed as a percentage of the installed storage capacity
_inputEfficiencyPumping efficiency
_outputEfficiencyTurbining efficiency
_lossRateStorage loss rate
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
_mfrrUpNotRunningCost€/MWCost associated with the mfrr reserve procurement from non-running capacityRESERVE
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

PictogramLabelTagsInputs
LNG exportsMODULE:GAS
EXPORT
CONSUMPTION (MW)
Description

Liquefied natural gas exports

Parameters
IdUnitPurposeBehaviors
_pmaxMWMaximal export capacitynot MUST_RUN
_minLoad%Minimum export level, expressed as a percentage of the available capacitynot MUST_RUN
_availability[0,1]Available export capacity, expressed as a percentage of the maximal capacitynot MUST_RUN
_minimumVolumeMW.hMinimal export volume over the horizonVOLUME_TARGET and not MUST_RUN
_storageCapacityMW.hMaximal export volume over the horizonVOLUME_TARGET and not MUST_RUN
_minProfile%Minimal export profileVOLUME_TARGET and not MUST_RUN
_storageAvailability%Maximal export profileVOLUME_TARGET and not MUST_RUN
_exportsMWSets inelastic exportsMUST_RUN
_priceEarnings 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

PictogramLabelTagsOutputs
LNG importsMODULE:GAS
IMPORT
PRODUCTION (MW)
Description

Liquefied natural gas imports

Parameters
IdUnitPurposeBehaviors
_pmaxMWMaximal import capacitynot MUST_RUN
_minLoad%Minimum import level, expressed as a percentage of the available capacitynot MUST_RUN
_availability[0,1]Available import capacity, expressed as a percentage of the maximal capacitynot MUST_RUN
_minimumVolumeMW.hMinimal import volume over the horizonVOLUME_TARGET and not MUST_RUN
_storageCapacityMW.hMaximal import volume over the horizonVOLUME_TARGET and not MUST_RUN
_minProfile%Minimal export profileVOLUME_TARGET and not MUST_RUN
_storageAvailability%Maximal export profileVOLUME_TARGET and not MUST_RUN
_importsMWSets inelastic importsMUST_RUN
_productionCostCosts 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

PictogramLabelTagsInputsOutputs
LNG liquefaction trainMODULE:GAS
EXPORT
CONSUMPTION (MW)PRODUCTION (MW)
Description

Liquefaction train used as connection between suppliers and a common global LNG market node

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWMaximal liquefaction and transport capacitynot OPTIM_PMAX
_pmaxminMWCapacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWCapacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the maximal capacity
_consumptionCost€/MW.hLiquefaction and shipping costs
_losses%Losses
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyTransmission(asset, stateON)
finalize(stateON)


		

LNG terminal

PictogramLabelTagsInputsOutputs
LNG terminalMODULE:GAS
EXPORT
IMPORT
STORAGE
GAS_STORAGE
CONSUMPTION (MW)PRODUCTION (MW)
Description

Liquefied natural gas terminal which can be supplied in LNG and inject natural gas into the network

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInjection capacitynot OPTIM_PMAX
_pmaxminMWInjection capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInjection capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the injection capacity
_productionCost€/MW.hGasification costs
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacity(not DISCHARGE_TIMES)
_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
_dischargeTimehDischarge timeDISCHARGE_TIMES
_pmaxInMWInput maximal capacitynot OPTIM_PMAX and USE_PMAX_IN
_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

PictogramLabelTagsOutputs
Loss of loadSUPPLY
CONTRACT
LOSS_OF_ENERGY
E (MW)
Description

Loss of load

Parameters
IdUnitPurposeBehaviors
_price€/MW.hPrice
Code



# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------

stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)


	

Min reserve procurement

PictogramLabelTags
Minimum national reserve procurementMODULE:RESERVE SIZING
Description

Object defining cooperation behavior between countries for reserve procurement

Parameters
IdUnitPurposeBehaviors
_setContraintsBooleanBoolean that enables min reserve procurement
_regionDefinitionN/AIndexed 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

PictogramLabelTagsOutputs
Nuclear fleetPRODUCTION
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
CO2 (t)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Nuclear power plant

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_co2Contentt/MW.hYield between the CO2 emissions and the production
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_gradientUp%/minMaximal upward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_gradientDown%/minMaximal downward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsInputsOutputs
OCGT fleetPRODUCTION
RESERVE_PRODUCTION
QUICK_START
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_variableCost€/MW.hVariable costsFUEL
_productionCost€/MW.hProduction cost (fuel cost not included)not FUEL
_fuelYieldMW.h/MW.h PCSYield between the production and the fuel consumption(not CLUSTER) and FUEL
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsFUEL
_co2Contentt/MW.hYield between the CO2 emissions and the productionnot FUEL
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_gradientUp%/minMaximal upward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_gradientDown%/minMaximal downward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_productionHeatRateMW.h PCS/MW.hYield between the delivered energy and the associated fuel consumptionCLUSTER and FUEL
_runningCapaFuelConsumptionMW.h PCS/MW/hYield between the Running capacity and the associated fuel consumptionCLUSTER and FUEL
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER and not FUEL
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
_mfrrUpNotRunningCost€/MWCost associated with the mfrr reserve procurement from non-running capacityRESERVE
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

PictogramLabelTagsInputsOutputs
Oil fleetPRODUCTION
RESERVE_PRODUCTION
QUICK_START
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_variableCost€/MW.hVariable costsFUEL
_productionCost€/MW.hProduction cost (fuel cost not included)not FUEL
_fuelYieldMW.h/MW.h PCSYield between the production and the fuel consumption(not CLUSTER) and FUEL
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsFUEL
_co2Contentt/MW.hYield between the CO2 emissions and the productionnot FUEL
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_productionHeatRateMW.h PCS/MW.hYield between the delivered energy and the associated fuel consumptionCLUSTER and FUEL
_runningCapaFuelConsumptionMW.h PCS/MW/hYield between the Running capacity and the associated fuel consumptionCLUSTER and FUEL
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER and not FUEL
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
_mfrrUpNotRunningCost€/MWCost associated with the mfrr reserve procurement from non-running capacityRESERVE
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

PictogramLabelTagsOutputs
Oil supplySUPPLY
CONTRACT
FUEL_SUPPLY
E (MW.h PCS)
Description

Oil supply

Parameters
IdUnitPurposeBehaviors
_price€/MW.h PCSPrice
Code



# ---------------------------------------------------
# Modelling asset state OK
# ---------------------------------------------------

stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), False, asset.getData('_price'))
MODEL.addState(stateON)


	

Other fleet

PictogramLabelTagsOutputs
Other fleetPRODUCTION
MUST_RUN
CURTAILABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Generic asset to gather power plants

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)


		

Other renewable fleet

PictogramLabelTagsOutputs
Other renewable fleetPRODUCTION
MUST_RUN
CURTAILABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)


		

Other thermal fleet

PictogramLabelTagsOutputs
Other thermal fleetPRODUCTION
MUST_RUN
CURTAILABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost
_co2Contentt/MW.hYield between the CO2 emissions and the production
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addCo2Production(asset, stateON)
addEnergyProduction(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)


		

Pipeline

PictogramLabelTagsInputsOutputs
PipelineMODULE:GAS
TRANSMISSION
IMPORT
EXPORT
CONSUMPTION (MW)PRODUCTION (MW)
Description

Gas pipeline

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_entryFee€/MW.hEntry fee
_consumptionCost€/MW.hConsumption costs
_exitFee€/MW.hExit 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

PictogramLabelTags
Pipeline equalityMODULE:GAS
Description

Model object of a gas pipeline, used for capacity optimization, with equal capacity installed

Parameters
IdUnitPurposeBehaviors
_setContraintsBooleanBoolean 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

PictogramLabelTags
Pipeline reverse flowMODULE:GAS
Description

Model object of a gas pipeline, used for capacity optimization, with equal capacity installed in favor to the most expensive sense

Parameters
IdUnitPurposeBehaviors
_setContraintsBooleanBoolean that enables reverse flow
Code



if bool(asset.getData("_setContraints").getDataValue()) == True:
	setPipelineReverseFlowConstraints(Crystal.getPortfolio())



		

Power demand

PictogramLabelTagsInputs
Power demandCONTRACT
DEMAND
E (MW)
Description

Power demand

Parameters
IdUnitPurposeBehaviors
_demandMWDemand
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------

stateON = AssetState('ON')
stateON.setEquality(asset.getParameter('E'), True, asset.getData('_demand'))
MODEL.addState(stateON)


Pumped storage fleet

PictogramLabelTagsInputsOutputs
Pumped storage fleetPRODUCTION
CONSUMPTION
STORAGE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
QUICK_START
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_availabilityIn%Input availability for storage assets
_productionCost€/MW.hProduction cost (fuel cost not included)
_consumptionCost€/MW.hConsumption costs
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacity(not DISCHARGE_TIMES)
_dischargeTimehDischarge timeDISCHARGE_TIMES
_storageAvailability%Storage availability, expressed as a percentage of the installed storage capacity
_inputEfficiencyPumping efficiency
_outputEfficiencyTurbining 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
_boundedSupplyMWProduction quota
_storageCost€/MW.h/hCost associated with storage
_pmaxInMWInput maximal powerUSE_PMAX_IN and not OPTIM_PMAX
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MWCost associated with maintaining a certain running capacityCLUSTER
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
_mfrrUpNotRunningCost€/MWCost associated with the mfrr reserve procurement from non-running capacityRESERVE
Results
IdUnit
{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

PictogramLabelTagsInputsOutputs
Regulated Coal fleetPRODUCTION
RESERVE_PRODUCTION
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_variableCost€/MW.hVariable costsFUEL
_productionCost€/MW.hProduction cost (fuel cost not included)not FUEL
_fuelYieldMW.h/MW.h PCSYield between the production and the fuel consumption(not CLUSTER) and FUEL
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsFUEL
_co2Contentt/MW.hYield between the CO2 emissions and the productionnot FUEL
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_gradientUp%/minMaximal upward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_gradientDown%/minMaximal downward variation, expressed as a percentage of the available capacity per minuteGRADIENTS
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_productionHeatRateMW.h PCS/MW.hYield between the delivered energy and the associated fuel consumptionCLUSTER and FUEL
_runningCapaFuelConsumptionMW.h PCS/MW/hYield between the Running capacity and the associated fuel consumptionCLUSTER and FUEL
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER and not FUEL
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacitynot DISCHARGE_TIMES
_dischargeTimehDischarge timeDISCHARGE_TIMES
_boundedSupplyMWProduction quota
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsInputsOutputs
Regulated Oil fleetPRODUCTION
RESERVE_PRODUCTION
QUICK_START
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
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_variableCost€/MW.hVariable costsFUEL
_productionCost€/MW.hProduction cost (fuel cost not included)not FUEL
_fuelYieldMW.h/MW.h PCSYield between the production and the fuel consumption(not CLUSTER) and FUEL
_fuelCo2Contentt/MW.h PCSYield between the fuel consumption and the CO2 emissionsFUEL
_co2Contentt/MW.hYield between the CO2 emissions and the productionnot FUEL
_minLoad%Minimum production level, expressed as a percentage of the available capacitynot CLUSTER
_clusterStartingCost€/MWCost to start additional capacityCLUSTER
_runningCost€/MW/hCost associated with maintaining a certain running capacityCLUSTER
_productionHeatRateMW.h PCS/MW.hYield between the delivered energy and the associated fuel consumptionCLUSTER and FUEL
_runningCapaFuelConsumptionMW.h PCS/MW/hYield between the Running capacity and the associated fuel consumptionCLUSTER and FUEL
_co2ContentRunningBoundt/MW.hCO2 emissions with respect to running capacityCLUSTER and not FUEL
_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)RESERVE or CLUSTER
_minOffTimehWhen a part of the running capacity is switched off, this part cannot be switch on before a duration equals to _minOffTimeCLUSTER
_storageCapex€/MW.h/YearCapital expenditure for storage assets
_storageCapacityMW.hStorage capacitynot DISCHARGE_TIMES
_dischargeTimehDischarge timeDISCHARGE_TIMES
_boundedSupplyMWProduction quota
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
_mfrrUpNotRunningCost€/MWCost associated with the mfrr reserve procurement from non-running capacityRESERVE
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

PictogramLabelTagsInputs
Reserve demandCONSUMPTION_CONTRACT
DEMAND
E (MW)
Description

Reserve needs

Parameters
IdUnitPurposeBehaviors
_demandMWDemand
_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

PictogramLabelTags
Reserve Dimensioning DataMODULE:RESERVE SIZING
Description

Object containing reserve sizing parameters

Parameters
IdUnitPurposeBehaviors
_isAnnualReserveBooleanBoolean defining if reserve sizing is constant over the year or can vary hourly
_forecastHorizonForImbalanceshForecast horizon considered for reserve dimensioning
Code

Reserve Symmetry Requirement

PictogramLabelTags
Reserve Symmetry RequirementMODULE:RESERVE SIZING
Description

Object defining symmetric reserve requirement constraints

Parameters
IdUnitPurposeBehaviors
_setContraintsBooleanBoolean that enables symmetric reserve procurement, for zones defined in _activationPerZone matrix
_activationPerZoneBooleanMatrix 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

PictogramLabelTags
ScenarioMODULE:RESERVE SIZING
Description

Object containing information about the scenario

Parameters
IdUnitPurposeBehaviors
_databaseTestcaseTest case numbers in METIS Database
_databaseYearYear in METIS Database
_databaseVersionVersion in METIS Database
_originalZonesAggregated region of zones
_aggregatedZonesAggregated region definition
_installedCapacitiesMWInstalled capacities per zone
_meanDemandsMWMean demand per zone
Code

Sell contract

PictogramLabelTagsInputs
Sell contractCONTRACT
E (MW)
Description

Power sell contract

Parameters
IdUnitPurposeBehaviors
_price€/MW.hPrice
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), True,asset.getData('_price'))
MODEL.addState(stateON)


	

Solar fleet

PictogramLabelTagsOutputs
Solar fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Solar power plant

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_incentive€/MW.hIncentives to produce
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsOutputs
Supply contract with boundSUPPLY
CONTRACT
E (MW)
Description

Supply contract with upper bound limit

Parameters
IdUnitPurposeBehaviors
_price€/MW.hPrice
_pmaxMWInstalled 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

PictogramLabelTagsInputsOutputs
TransmissionTRANSMISSION
IMPORT
EXPORT
RESERVE_PRODUCTION
CONSUMPTION (MW)SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Power transmission line

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_consumptionCost€/MW.hConsumption costs
_losses%Transmission losses
_susceptanceSiemensThe imaginary part of admittance, measure of how easy it is for alternating current to pass through a capacitance or an inductanceDCLF
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyTransmission(asset, stateON)
addTransmissionReserveProduction(asset, stateON)
finalize(stateON)

		

Transmission equality

PictogramLabel
Transmission equality
Description

Model object of a power transmission line, used for capacity optimization, with equal capacity installed

Parameters
IdUnitPurposeBehaviors
_setContraintsBooleanBoolean that enables equality of added capacities for both ways
Code



if bool(asset.getData("_setContraints").getDataValue()) == True:
	setTransmissionEquality(Crystal.getPortfolio(), F_TRANSMISSION)

	

		

Waste fleet

PictogramLabelTagsOutputs
Waste fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
CO2 (t)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Waste-fired power plant

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_co2Contentt/MW.hYield between the CO2 emissions and the production
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
Code



# ---------------------------------------------------
# Modelling asset state ON
# ---------------------------------------------------
stateON = AssetState('ON')
addEnergyProduction(asset, stateON)
addCo2Production(asset, stateON)
addReserveProduction(asset, stateON, isFleetModeEnabled=True)
finalize(stateON)


		

Well

PictogramLabelTagsInputs
WellCONTRACT
CURTAILMENT
E (MW)
Description

Energy over-production

Parameters
IdUnitPurposeBehaviors
_price€/MW.hPrice
Code



stateON = AssetState('ON')
addEnergyCost(stateON, asset.getParameter('E'), True, asset.getData('_price'))
MODEL.addState(stateON)


	

Wind offshore fleet

PictogramLabelTagsOutputs
Wind offshore fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Offshore wind power plant

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_incentive€/MW.hIncentives to produce
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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

PictogramLabelTagsOutputs
Wind onshore fleetPRODUCTION
MUST_RUN
CURTAILABLE
RENEWABLE
RESERVE_PRODUCTION
RESERVE_WITHOUT_CLUSTER
SYNC_RESERVE_DOWN (MW)
MFRR_DOWN (MW)
SYNC_RESERVE_UP (MW)
MFRR_UP (MW)
PRODUCTION (MW)
Description

Onshore wind power plant

Parameters
IdUnitPurposeBehaviors
_capex€/MW/YearCapital expenditure (only used for capacity optimization)
_foc€/MW/YearFixed Operating Costs (only used for capacity optimization)
_pmaxMWInstalled power capacitynot OPTIM_PMAX
_pmaxminMWInstalled capacity lower bound for capacity optimizationOPTIM_PMAX
_pmaxmaxMWInstalled capacity upper bound for capacity optimizationOPTIM_PMAX
_availability%Available capacity, expressed as a percentage of the installed capacity
_productionCost€/MW.hProduction cost (fuel cost not included)
_incentive€/MW.hIncentives to produce
_maxShareSyncReserveUp%Maximal share of upward sync. reserve in running capacityRESERVE
_maxShareSyncReserveDown%Maximal share of downward sync. reserve in running capacityRESERVE
_maxShareMfrrUp%Maximal share of upward mFRR and sync. reserve in running capacityRESERVE
_maxShareMfrrDown%Maximal share of downward mFRR and sync. reserve in running capacityRESERVE
_syncReserveUpCost€/MWOperating cost of the upward sync. reserveRESERVE
_syncReserveDownCost€/MWOperating cost of the downward sync. reserveRESERVE
_mfrrUpCost€/MWOperating cost of upward mFRRRESERVE
_mfrrDownCost€/MWOperating cost of downward mFRRRESERVE
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)