Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spatial res doc #12

Merged
merged 4 commits into from
Aug 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 27 additions & 38 deletions doc/spatial_resolution.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,55 +4,44 @@
Spatial resolution
##########################################

The default nodal resolution of the model follows the electricity
generation and transmission model `PyPSA-Eur
<https://github.com/PyPSA/pypsa-eur>`_, which clusters down the
electricity transmission substations in each European country based on
the k-means algorithm. This gives nodes which correspond to major load
and generation centres (typically cities).
The default nodal resolution of the model follows the electricity generation and transmission model `PyPSA-Eur <https://github.com/PyPSA/pypsa-eur>`_ , which clusters down the electricity transmission substations in each European country based on the k-means algorithm (See `cluster_network <https://pypsa-eur.readthedocs.io/en/latest/simplification/cluster_network.html#rule-cluster-network>`_ for a complete explanation). This gives nodes which correspond to major load and generation centres (typically cities).

The total number of nodes for Europe is set in the ``config.yaml`` file
under ``clusters``. The number of nodes can vary between 37, the number
of independent countries / synchronous areas, and several
hundred. With 200-300 nodes the model needs 100-150 GB RAM to solve
with a commerical solver like Gurobi.
Exemplary unsolved network clustered to 512 nodes:

.. image:: ../graphics/elec_s_512.png

Not all of the sectors are at the full nodal resolution, and some
demand for some sectors is distributed to nodes using heuristics that
need to be corrected. Some networks are copper-plated to reduce
computational times.
Exemplary unsolved network clustered to 37 nodes:

For example:
.. image:: ../graphics/elec_s_37.png

Electricity network: nodal.
The total number of nodes for Europe is set in the config.yaml file under `clusters <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L20>`_. The number of nodes can vary between 37, the number of independent countries/ synchronous areas, and several hundred. With 200-300 nodes, the model needs 100-150 GB RAM to solve with a commercial solver like Gurobi.
Not all of the sectors are at the full nodal resolution, and some demand for some sectors is distributed to nodes using heuristics that need to be corrected. Some networks are copper-plated to reduce computational times.

Electricity residential and commercial demand: nodal, distributed in
each country based on population and GDP.
Here are some examples of how spatial resolution is set for different sectors in PyPSA-Eur-Sec:

Electricity demand in industry: based on the location of industrial
facilities from `HotMaps database <https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database>`_.
• Electricity network: Modeled as nodal

Building heating demand: nodal, distributed in each country based on
population.
• Electricity residential and commercial demand: Modeled as nodal, distributed in each country based on population and GDP.

Industry demand: nodal, distributed in each country based on
locations of industry from `HotMaps database <https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database>`_.
• Electricity distribution network: Not included in the model, but a link per node can be used to represent energy transferred between distribution and transmission levels (explained more in detail below).

Hydrogen network: nodal.
• Residential and commercial building heating demand: Modeled as nodal, distributed in each country based on population.

Methane network: single node for Europe, since future demand is so low and no
bottlenecks are expected. Optionally, if for example retrofitting from fossil
gas to hydrogen is to be considered, the methane grid can be nodally resolved
based on SciGRID_gas data.
• Electricity demand in industry: Modeled as nodal, based on the location of industrial facilities from HotMaps database.

Solid biomass: choice between single node for Europe and nodal where biomass
potential is regionally disaggregated (currently given per country,
then distributed by population density within)
and transport of solid biomass is possible.
• Industry demand (heat, chemicals, etc.) : Modeled as nodal, distributed in each country based on locations of industry from HotMaps database.
• Hydrogen network: Modeled as nodal (if activated in the `Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L260>`_ file).

CO2: single node for Europe, but a transport and storage cost is added for
sequestered CO2. Optionally: nodal, with CO2 transport via pipelines.
• Methane network: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L266>`_ . One node can be considered reasonable since future demand is expected to be low and no bottlenecks are expected. Also, the nodally resolved methane grid is based on SciGRID_gas data.

Liquid hydrocarbons: single node for Europe, since transport costs for
liquids are low.
• Solid biomass: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L270>`_. Nodal modeling includes modeling biomass potential per country (given per country, then distributed by population density within) and the transport of solid biomass between countries.

• CO2: It can be modeled as a single node for Europe or it can be nodally resolved with CO2 transport pipelines if activated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L248>`_ . It should mentioned that in single node mode a transport and storage cost is added for sequestered CO2, the cost of which can be adjusted in the `Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L247>`_ file.

• Liquid hydrocarbons: Modeled as a single node for Europe, since transport costs for liquids are low and no bottlenecks are expected.

**Electricity distribution network**

Contrary to the transmission grid, the grid topology at the distribution level (at and below 110 kV) is not included due to very high computational burden. However, a link per node can be used (activated in `Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L257>`_ file) to represent energy transferred between distribution and transmission levels. So basically, only the total capacity from the transmission grid down to the low-voltage level is optimized. The Cost of this link between transmission level and distribution level can be adjusted from zero to any number in Config file `options <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L258>`_ , and is currently assumed to be 500 eur/kW.

Rooftop PV, heat pumps, resistive heater, home batteries and chargers for passenger cars are connected to low-voltage level. All the remaining generation and storage technologies are connected to the transmission grid. In practice this means that the distribution grid capacity is only extended if it is necessary to balance the mismatch between local generation and demand.
Binary file added graphics/elec_s_37.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added graphics/elec_s_512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.