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 fieldid
is only used to provide an identifier for the area. This identifier can be a shortened version of the area name.name
:
The name of thearea
is 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 fieldnode
correspond to theAvailability
node of theArea
that 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_node
function) as otherwise no energy transmission between this area and other areas is possible.We decided to not limit it directly to
GeoAvailability
to allow the user to introduce other types ofAvailability
nodes with potentially additional variables and constraints. It is however important to not calculate the energy balance within theAvailability
node.
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 Area
s include:
Constraints
The constraints for areas are calculated within the functions constraints_area
and create_area
. The function constraints_area
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_area
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 fieldid
is only used for providing a name to the node.input::Vector{<:Resource}
andoutput::Vector{<:Resource}
:
Both fields describe theinput
andoutput
Resource
s as vectors. This approach is different to all other nodes, but simplifies the overall design. It is necessary to specify the sameResource
s 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 Resource
s. 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.