2019-04-17 15:04:33 +00:00
|
|
|
# PyPSA-Eur-Sec: A Sector-Coupled Open Optimisation Model of the European Energy System
|
|
|
|
|
2020-03-04 17:26:26 +00:00
|
|
|
|
|
|
|
|
2020-03-04 17:32:06 +00:00
|
|
|
**WARNING**: This model is under construction and contains serious
|
2020-03-04 17:26:26 +00:00
|
|
|
problems that distort the results. See the github repository
|
|
|
|
[issues](https://github.com/PyPSA/pypsa-eur-sec/issues) for some of
|
|
|
|
the problems (please feel free to help or make suggestions). There is
|
|
|
|
neither documentation nor a paper yet, but we hope to have a preprint
|
|
|
|
out by summer 2020. We cannot support this model if you choose to use
|
|
|
|
it.
|
|
|
|
|
|
|
|
|
2019-04-17 15:04:33 +00:00
|
|
|
PyPSA-Eur-Sec builds on the electricity generation and transmission
|
|
|
|
model [PyPSA-Eur](https://github.com/PyPSA/pypsa-eur) to add demand
|
|
|
|
and supply for the following sectors: transport, space and water
|
|
|
|
heating, biomass, industry and industrial feedstocks. This completes
|
|
|
|
the energy system and includes all greenhouse gas emitters except
|
|
|
|
waste management, agriculture, forestry and land use.
|
|
|
|
|
2020-03-04 17:32:06 +00:00
|
|
|
This diagram gives an overview of the sectors and the links between
|
|
|
|
them:
|
2020-03-04 17:26:26 +00:00
|
|
|
|
2020-03-04 17:32:06 +00:00
|
|
|
![sector diagram](graphics/multisector_figure.png)
|
|
|
|
|
|
|
|
|
|
|
|
PyPSA-Eur-Sec was initially based on the model PyPSA-Eur-Sec-30 described
|
2020-03-04 17:26:26 +00:00
|
|
|
in the paper [Synergies of sector coupling and transmission
|
|
|
|
reinforcement in a cost-optimised, highly renewable European energy
|
|
|
|
system](https://arxiv.org/abs/1801.05290) (2018) but it differs by
|
|
|
|
being based on the higher resolution electricity transmission model
|
|
|
|
[PyPSA-Eur](https://github.com/PyPSA/pypsa-eur) rather than a
|
|
|
|
one-node-per-country model, and by including biomass, industry,
|
|
|
|
industrial feedstocks, aviation, shipping, better carbon management,
|
|
|
|
carbon capture and usage/sequestration, and gas networks.
|
|
|
|
|
|
|
|
|
2019-04-17 15:04:33 +00:00
|
|
|
PyPSA-Eur-Sec includes PyPSA-Eur as a
|
|
|
|
[snakemake](https://snakemake.readthedocs.io/en/stable/index.html)
|
|
|
|
[subworkflow](https://snakemake.readthedocs.io/en/stable/snakefiles/modularization.html#snakefiles-sub-workflows). PyPSA-Eur-Sec
|
|
|
|
uses PyPSA-Eur to build the clustered transmission model along with
|
|
|
|
wind, solar PV and hydroelectricity potentials and time series. Then
|
|
|
|
PyPSA-Eur-Sec adds other conventional generators, storage units and
|
|
|
|
the additional sectors.
|
|
|
|
|
|
|
|
Currently the scripts to solve and process the resulting PyPSA models
|
|
|
|
are also included in PyPSA-Eur-Sec, although they could in future be
|
2019-04-18 13:23:37 +00:00
|
|
|
better integrated with the corresponding scripts in PyPSA-Eur. A
|
|
|
|
stumbling block to sharing solve_network.py between PyPSA-Eur and
|
|
|
|
PyPSA-Eur-Sec is the different extra_functionality required to build
|
|
|
|
storage and CHP constraints.
|
2019-04-17 15:04:33 +00:00
|
|
|
|
2020-03-04 17:38:53 +00:00
|
|
|
# Spatial resolution of sectors
|
|
|
|
|
|
|
|
Not all of the sectors are at the full nodal resolution, and some are
|
|
|
|
distributed to nodes using heuristics that need to be corrected. Some
|
|
|
|
networks are copper-plated to reduce computational times.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
Electricity network: nodal.
|
|
|
|
|
|
|
|
Electricity demand: nodal, distributed in each country based on
|
|
|
|
population and GDP.
|
|
|
|
|
|
|
|
Building heating demand: nodal, distributed in each country based on
|
|
|
|
population.
|
|
|
|
|
|
|
|
Industry demand: nodal, distributed in each country based on
|
|
|
|
population (will be corrected to real locations of industry, see
|
|
|
|
github issue).
|
|
|
|
|
|
|
|
Hydrogen network: nodal.
|
|
|
|
|
|
|
|
Methane network: copper-plated for Europe, since future demand is so
|
|
|
|
low and no bottlenecks are expected.
|
|
|
|
|
|
|
|
Solid biomass: copper-plated until transport costs can be
|
|
|
|
incorporated.
|
|
|
|
|
|
|
|
CO2: copper-plated (but a transport and storage cost is added for
|
|
|
|
sequestered CO2).
|
|
|
|
|
|
|
|
Liquid hydrocarbons: copper-plated since transport costs are low.
|
|
|
|
|
|
|
|
|
2019-04-17 15:04:33 +00:00
|
|
|
# Installation
|
|
|
|
|
|
|
|
First install [PyPSA-Eur](https://github.com/PyPSA/pypsa-eur) and all
|
2019-04-18 13:23:37 +00:00
|
|
|
its dependencies. Clone the repository:
|
|
|
|
```shell
|
|
|
|
projects % git clone git@github.com:PyPSA/pypsa-eur.git
|
|
|
|
```
|
|
|
|
then download and unpack all the data files.
|
2019-04-17 15:04:33 +00:00
|
|
|
|
2019-04-17 16:09:48 +00:00
|
|
|
Create a parallel directory for PyPSA-Eur-Sec with:
|
|
|
|
```shell
|
|
|
|
projects % git clone git@github.com:nworbmot/pypsa-eur-sec.git
|
|
|
|
```
|
|
|
|
|
2019-12-19 10:38:43 +00:00
|
|
|
## Package requirements
|
|
|
|
|
|
|
|
The requirements are the same as
|
2020-04-30 07:56:24 +00:00
|
|
|
[PyPSA-Eur](https://github.com/PyPSA/pypsa-eur). For
|
|
|
|
`solve_network.py` in addition you need `gurobipy`. If you have
|
|
|
|
xarray version >= 0.15.1, you will need the latest master branch of
|
|
|
|
atlite version 0.0.2.
|
|
|
|
|
2019-12-19 10:38:43 +00:00
|
|
|
|
2019-04-17 15:04:33 +00:00
|
|
|
## Data requirements
|
|
|
|
|
2019-07-19 10:56:38 +00:00
|
|
|
The data requirements include the JRC-IDEES-2015 database, JRC biomass
|
|
|
|
potentials, EEA emission statistics, Eurostat Energy Balances, urban
|
|
|
|
district heating potentials, emobility statistics, timezone mappings
|
|
|
|
and heating profiles.
|
2019-04-17 16:09:48 +00:00
|
|
|
|
2019-07-19 10:56:38 +00:00
|
|
|
The data bundle is about 640 MB.
|
|
|
|
|
|
|
|
To download and extract it on the command line:
|
2019-04-17 16:09:48 +00:00
|
|
|
```shell
|
2019-07-19 10:56:38 +00:00
|
|
|
projects/pypsa-eur-sec/data % wget "https://nworbmot.org/pypsa-eur-sec-data-bundle-190719.tar.gz"
|
|
|
|
projects/pypsa-eur-sec/data % tar xvzf pypsa-eur-sec-data-bundle-190719.tar.gz
|
2019-04-17 16:09:48 +00:00
|
|
|
```
|
2020-04-30 07:56:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Getting started
|
|
|
|
|
|
|
|
First make your own copy of the `config.yaml`:
|
|
|
|
```shell
|
|
|
|
projects/pypsa-eur-sec % cp config.default.yaml config.yaml
|
|
|
|
```
|
|
|
|
|
|
|
|
In `config.yaml` you can control the settings for the scenarios you
|
|
|
|
want to run, such as the number of nodes, the CO2 limit, the
|
|
|
|
installable potentials for solar and wind, which technologies are
|
|
|
|
activated, etc.
|
|
|
|
|
|
|
|
To run the full optimization with your settings:
|
|
|
|
```shell
|
|
|
|
projects/pypsa-eur-sec % snakemake
|
|
|
|
```
|
|
|
|
|
|
|
|
Warning: you may need a cluster for this (with e.g. 10-100 GB of RAM
|
|
|
|
and several processors).
|
|
|
|
|
|
|
|
To only prepare the networks, you can run the scripts up to the point before optimization:
|
|
|
|
```shell
|
|
|
|
projects/pypsa-eur-sec % snakemake prepare_sector_networks
|
|
|
|
```
|