Areas
The concept of areas is introduced in EnergyModelsGeography to create energy systems with transmission between individual regions. As outlined in the philosophy section, each Area can have a different local energy system with different units, CAPEX calculation approaches, and demands.
This page explains the fields of areas more specifically and introduces the different variables.
Area
Introduced types and their fields
EnergyModelsGeography introduces two different areas, RefArea and LimitedExchangeArea. Both types include the following fields:
id:
The fieldidis only used to provide an identifier for the area. This identifier can be a shortened version of the area name.name:
The name of theareais used for printing an area to the Julia REPL, and hence, saving of variables. it can be only used as string input for the functionscorr_from,corr_to, andcorr_from_to.lon::Real:
The longitudinal position of the area is not directly used inEnergyModelsGeography. It is however possible for the user to provide additional functions which can utilize the longitude for distance calculations.lat::Real:
The latitudinal position of the area is not directly used inEnergyModelsGeography. It is however possible for the user to provide additional functions which can utilize the latitude for distance calculations.node::Availability:
The fieldnodecorrespond to theAvailabilitynode of theAreathat is utilized for exchanging resources with other areas. !!! danger "Nodal type: It must by aGeoAvailability(or comparable nodes in which the energy balance is not calculated in thecreate_nodefunction) as otherwise no energy transmission between this area and other areas is possible.We decided to not limit it directly to
GeoAvailabilityto allow the user to introduce other types ofAvailabilitynodes with potentially additional variables and constraints. It is however important to not calculate the energy balance within theAvailabilitynode.
LimitedExchangeArea require an additional field:
limit::Dict{<:EMB.Resource, <:TimeProfile}:
The exchange limit is the maximum amount of a resource that can be exported to other areas in each operational period. It is still possible to import from other regions, but the overall net export can not exceed the provided value.
Mathematical description
In the following mathematical equations, we use the name for variables and functions used in the model. Variables are in general represented as
$\texttt{var\_example}[index_1, index_2]$
with square brackets, while functions are represented as
$func\_example(index_1, index_2)$
with paranthesis.
In addition, we simplify the description as:
- $n = availability\_node(a)$
corresponds to the availability node $n$ in the area $a$. - $P^{ex} = exchange\_resources(L^{trans}, a)$
correspond to the exchange resources $P^{ex}$ of the area $a$, that is all resources that are either consumed in energy transmission or exchanged with connected areas. - $L^{from}, L^{to} = trans\_sub (L^{trans}, a)$
are all transmission corridors that are either originating (superscript from) or ending (superscript to) in the area $a$.
Variables
The variables of Areas include:
Constraints
The constraints for areas are calculated within a new method for the function create_area and constraints_couple. The function constraints_couple is the core function as it links the transmission to and from an area with a local energy system while the function create_area allows for providing additional constraints.
constraints_couple
The overall energy balance is solved within this function. We consider two cases:
The resource is not an exchange resource:
\[\texttt{flow\_out}[n, t, p] = \texttt{flow\_in}[n, t, p] \qquad \forall p \in inputs(n) \setminus P^{ex}\]
The resource is an exchange resource:
\[\texttt{flow\_out}[n, t, p_{ex}] = \texttt{flow\_in}[n, t, p_{ex}] + \texttt{area\_exchange}[a, t, p_{ex}] \qquad \forall p_{ex} \in P^{ex}\]
In addition, we have to add constraints for the variable $\texttt{area\_exchange}[a, t, p_{ex}]$. This is achieved through the compute functions as
\[\begin{aligned} \texttt{area\_exchange}[a, t, p_{ex}] + & \sum_{tm \in L^{from}} compute\_trans\_in(t, p_{ex}, tm) = \\ & \sum_{tm \in L^{to}} compute\_trans\_out(t, p_{ex}, tm) \end{aligned}\]
create_area
The RefArea does not introduce additional constraints.
The LimitedExchangeArea introduces additional constraints on the net export from the area. This constraint is given by
\[\texttt{area\_exchange}[a, t, p] \geq - exchange\_limit(a, p, t) \qquad \forall p \in limit\_resources(a)\]
GeoAvailability
The GeoAvailability node is introduced to allow the energy balance of an area being handled on the Area level. It is in itself equivalent to the to GenAvailability node with respect to introduced fields and variables. Availability node provides a detailed description of availability nodes.
All energy exchange between different areas is routed through a GeoAvailability node. If you do not use a GeoAvailability node (e.g., a GenAvailability node or no availability node at all), you will not have energy transmission between different regions.
Introduced types and their fields
The GeoAvailability node is similar to a GenAvailability. It includes basic functionalities common to most energy system optimization models.
The fields of a GeoAvailability node are given as:
id:
The fieldidis only used for providing a name to the node.input::Vector{<:Resource}andoutput::Vector{<:Resource}:
Both fields describe theinputandoutputResources as vectors. This approach is different to all other nodes, but simplifies the overall design. It is necessary to specify the sameResources to allow for capacity usage in connected nodes.
We require at the time being the specification of the fields input and output due to the way we identify the required flow and link variables. In practice, both fields should include the same Resources. To this end, we provide a simplified constructor in which you only have to specify one vector using the function
GeoAvailability(id, 𝒫::Vector{<:Resource})We are aware that GeoAvailability and GenAvailability look similar. We plan to rename one of them with the additional introduction of a constructor. In this case, we introduce breaking changes. We plan to collect as many potential issues as possible before the next breaking changes.
Mathematical description
In the following mathematical equations, we use the name for variables and functions used in the model. Variables are in general represented as
$\texttt{var\_example}[index_1, index_2]$
with square brackets, while functions are represented as
$func\_example(index_1, index_2)$
with paranthesis.
Variables
The variables of GeoAvailability nodes include:
Constraints
GeoAvailability nodes do not add any constraints. The overall energy balance is instead calculated on the Area level as outlined above.