Detailed hydropower
Cascaded hydropower systems can be modelled using the HydroReservoir
, HydroGate
, HydroGenerator
, and HydroPump
nodes. The nodes can be used in combination to model a detailed hydropower system. Unlike HydroStorage
, these nodes allow for modelling of water as a resource that can be stored in reservoirs and moved between reservoirs to generate/consume electricity. The defined node types are:
HydroReservoir
can have water as the stored resource. It is explained in more detail on its nodal page.HydroGenerator
can generate electricity by moving water to a reservoir at a lower altitude or the ocean. It is explained in more detail on its nodal page.HydroPump
can move water to a reservoir at a higher altitude by consuming electricity. It is explained in more detail on its nodal page.HydroGate
can discharge to lower reservoirs without producing electricity, for example due to spillage or environmental restrictions in the water course. It is explained in more detail on its nodal page.
The defined node types have to be used in combination to set up a hydropower system. They should not be used as stand-alone nodes.
Philosophy of the detailed hydropower nodes
The detailed hydropower nodes provide a flexible means to represent the physics of cascaded hydropower systems. By connecting nodes of different types, unique systems with optional number of reservoirs, generators, pumps and discharge gates can be modelled.
The HydroReservoir
node is a storage node used for storing water, while HydroGenerator
, HydroPump
and HydroGate
nodes move water around in the system. In addition, HydroGenerator
and HydroPump
nodes convert potential energy to electric energy and vice versa.
The detailed modelling of hydropower requires two resources to be defined: a water resource and an electricity resource. HydroReservoir
and HydroGate
nodes only use the water resource, while HydroGenerator
and HydroPump
nodes use both resources.
The nodes should be connected by links
to represent the water ways in the system. Links are also used to define flow of electricity in and out of the system through HydroPump
and HydroGenerator
nodes, respectively.
The nodes included in the water way should be connected directly and not through an Availability
node. An availability node can be used to connect electricity resources, but the water resource must be excluded from the availability node to prevent that the availability node is used to move water to reservoirs with higher altitude without consuming electricity.
All nodes must have both input and output. Therefore, a RefSource
node with capacity 0 should be connected to the reservoir at the top of the water course. Similarly, the water transported through the hydropower system requires a final destination. The ocean, or similar final destination, should be represented as a RefSink
with the water resource as input an no surplus penalty. This way, it can accept any amount of water.
The current implementation of nodes described below does not allow their usage in capacity expansion models. This is checked through the function EMB.check_node_data
in the EnergyModelsInvestments
extension.
Some of the node types has similar functionality and use some of the same code. The following, describes some general functionality before a more detailed description of the nodes are provided.
The illustration below shows a typical hydropower system where the dotted lines illustrate the links between the nodes.
Conversion to/from electric energy: the power-discharge relationship
The conversion between energy stored in the water resources in the hydropower system and electric energy is described by a power-discharge relationship. The conversion process in the HydroGenerator
and HydroPump
nodes are reversed processes and modelled using the same implementation.
The conversion is based on a set of PQ-points that describes the relationship between electric energy (power) and discharge of water, namely how much electric energy that is generated per volume of water discharged per time unit. For a HydroPump
node, the PQ-points describes how much electric energy the pump consumes per unit of water that is pumped to a higher reservoir, or how much water that is pumped per unit of electric energy consumed. The PQ-points are provided as input through the pq_curve
field of the HydroGenerator
and HydroPump
nodes.
The PqPoints
are relative to the installed capacity. This approach makes if possible to freely chose the capacity of the node (provided in the field cap::TimeProfile
) to refer to the electricity resource (power capacity) or the water resource (discharge/pump capacity) of the node, depending on the input used when setting up det hydropower system.
Alternatively, a single value representing the energy equivalent can be provided as input in the field pq_curve
. By the use of a constuctor, a PqPoints
struct consisting of a minimum and maximum point is then created based on the energy equvalent. If a single energy equivalent is given as input, the installed capacity (provided in the field cap::TimeProfile
) must refer to the power capacity of the HydroGenerator
or HydroPump
nodes.
Additional constraints
In addition to the constraints describing the physical system, hydropower systems are subject to a wide range of regulatory constraints or self-imposed constraints. Examples for these constraints are to preserve ecological conditions, facilitate multiple use of water (such as for agriculture or recreation), or ensure safe operation before/during maintanance or in the high season for recreational acitivities in the water courses. Often, such constraints can be translated into a schedule, a minimum, or maximum constraint. A general functionality has been implemented for adding such constraints to HydroReservoir
, HydroGate
, HydroGenerator
, and HydroPump
nodes. The constraints are optional through the use of the data::Vector{Data}
fields.
ScheduleConstraint inputs are given as values relative to a node capacity. For example, a constraint value 0.5 represents 50% of the node capacity. This makes the use of constraints in investment models possible where the capacity is not known ahead.
- Minimum constraints (MinSchedule): hard constraints (absolute) or soft constraints (with a penalty for violation) that restricts the minimum of a variable to a given value (e.g., discharge, power, reservoir level)
- Maximum constraints (MaxSchedule): hard constraints (absolute) or soft constraints (with a penalty for violation) that restricts the maximum of a variable to a given value (e.g., discharge, power, reservoir level)
- Schedule constraints (EqualSchedule): hard constraints (absolute) or soft constraints (with a penalty for violation) that restricts a variable to a given value (e.g., discharge, power, reservoir level)
The minimum, maximum, and schedule constraints are subtypes of the abstract type ScheduleConstraint{T<:AbstractScheduleType}, where new constraints types can be implemeted as subtypes.
End-value setting of water
Scheduling of large reservoirs typically require a method for valuating the future oportunity value of storing water beyond the optimization horizon. This will be included in the EMX receeding horizon package that is under development.