EnergyModelsFlex
EnergyModelsFlex
— ModuleEnergyModelsFlex is a Julia package that extends the EnergyModelsX
energy system modeling framework with additional node types that capture different aspects of flexibility in energy systems.
This package provides a series of technology node types for EnergyModelsX
enabling energy and process flexibility modeling.
What is flexibility in energy systems?
Flexibility in energy systems refers to the ability to adapt generation, consumption, or conversion in response to variability in supply and demand—especially with growing shares of intermittent renewable sources like wind and solar. Flexibility can be implemented in several forms:
Temporal flexibility: shifting electricity consumption or production across time (e.g. demand response, storage).
Input flexibility: using different fuels or resources to meet the same service (e.g. fuel-switching boilers).
Operational flexibility: including start-up/shutdown constraints, minimum running times, or part-load efficiency.
Network and conversion flexibility: controlling flows across interconnected energy carriers (e.g. heat and electricity).
EnergyModelsFlex
introduces custom nodes that allow modelers to represent these dimensions of flexibility in a structured, modular way.
Implemented flexible node types
This package provides several node types that extend the EnergyModelsX interface:
Source Nodes
PayAsProducedPPA
: A source with contractual constraints typical for renewable power purchase agreements (PPA).
Sink Nodes
PeriodDemandSink
: Allows demand to be met flexibly within a defined time period (e.g. daily energy use).LoadShiftingNode
: Supports discrete batch shifting across time within allowed work shifts.MultipleInputSink
: Enables flexible use of multiple input resources to meet demand.BinaryMultipleInputSinkStrat
: Input choice from multiple fuels using binary (exclusive) decisions per period.ContinuousMultipleInputSinkStrat
: Allows input blending over strategic periods using continuous fractions.
Network Nodes
MinUpDownTimeNode
: Models units with startup/shutdown constraints and minimum uptime/downtime.ActivationCostNode
: Includes additional input costs on startup (e.g. ignition fuel).LimitedFlexibleInput
: Restricts the share of individual input fuels in a multi-input conversion process.Combustion
: Enforces full energy balances including residual heat losses.
Storage
StorageEfficiency
: Allows modeling of time- and state-dependent storage efficiency losses.