PyPSA-Eur
g
github.com/pypsa/pypsa-eur
pypsa-eur.readthedocs.io
v0.1.0 Release
9 January 2020
Unless otherwise stated, the graphics and text are Copyright © Elisabeth Zeyen, Martha Maria Frysztacki, Fabian Hofmann, Jonas Hörsch, Fabian Neumann, Tom Brown 2020. This work is licensed under a Creative Commons “Attribution 4.0 International” license.
What’s the plan?
2
Icon made by wanicon from www.flaticon.com
Introductory Slide Deck | 25’ |
Workflow Demo | 10’ |
Installation “break” | 15’ |
Live Coding | 20’ |
You explore some pre-solved networks. | 50’ |
The Optimisation Problem
3
What can PyPSA-Eur do?
Covers the ENTSO-E area and contains
Features
4
Suitable for both operational studies and expansion planning studies
What is configurable?
5
… and more!
Icon made by surang from www.flaticon.com
The Workflow Structure
7
Prepare the PyPSA Network
Simplify the PyPSA Network
Solve the Optimisation Problem
Summarise the Results
Preparing networks
8
Retrieve polygons for each country | build_shapes |
Preparing networks
9
Retrieve polygons for each country | build_shapes |
Construct a base power network with buses, transformers, HVAC lines, HVDC links | base_network |
The base_network rule:
10
ENTSO-E
PyPSA
Network
(.csv or .nc)
12 January 2020!
Preparing networks
11
Retrieve polygons for each country | build_shapes |
Construct a base network with stores, buses, HVAC lines, HCDC links | base_network |
Voronoi cells | build_bus_regions |
Preparing networks
12
Retrieve polygons for each country | build_shapes |
Construct a base power network with buses, transformers, HVAC lines, HVDC links | base_network |
Determine Voronoi cells from network buses and shapes | build_bus_regions |
Build renewable profiles for each Voronoi cell:
| build_cutouts, build_natura_raster, build_renewable profiles, build_hydro_profile |
Land Availability for Renewables
13
Severin Ryberg
land cover
capacity per km²
example:
onshore wind
in one cell
Land Availability for Renewables
14
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
15
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
16
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
17
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
18
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
19
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
20
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
21
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
22
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
23
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
24
Severin Ryberg
land cover
capacity per km²
Land Availability for Renewables
25
Severin Ryberg
land cover
capacity per km²
Time Series for Variable Renewables
26
Solar panel models
Wind turbine models
Attend A.3 and A.4
Preparing networks
27
Retrieve polygons for each country | build_shapes |
Construct a base power network with buses, transformers, HVAC lines, HVDC links | base_network |
Determine Voronoi cells from network buses and shapes | build_bus_regions |
Build renewable profiles for each Voronoi cell:
| build_cutouts, build_natura_raster, build_renewable profiles, build_hydro_profile |
Attach existing fossil-fueled power plants | build_powerplants |
The build_powerplants rule:
28
Optional Step!
Provides a merged dataset of conventional power plants
base_network
Possible to append custom entries!
Preparing networks
29
Retrieve polygons for each country | build_shapes |
Construct a base power network with buses, transformers, HVAC lines, HVDC links | base_network |
Determine Voronoi cells from network buses and shapes | build_bus_regions |
Build renewable profiles for each Voronoi cell:
| build_cutouts, build_natura_raster, build_renewable profiles, build_hydro_profile |
Attach existing fossil-fueled power plants | build_powerplants |
Add loads and generators to the base network with costs | add_electricity |
The add_electricity rule:
European network with
Each node has
30
Simplifying networks
31
Make the problem less computationally challenging…
… to allow for co-optimizing generation, storage and transmission capacities!
Transform all transmission lines to 380kV and remove dead ends | simplify_network |
Cluster network with k-means | cluster_network |
Additional components after clustering | add_extra_components |
Aggregate snapshots and add system-wide constraints | prepare_network |
The cluster_network rule:
32
Clustered to 512 buses
Transformed to 380 kV
The cluster_network rule:
33
Clustered to 256 buses
Transformed to 380 kV
The cluster_network rule:
34
Clustered to 128 buses
Transformed to 380 kV
The cluster_network rule:
35
Clustered to 37 buses
Transformed to 380 kV
Reproducible snakemake Workflow
36
(pypsa-eur) $ snakemake solve_all_elec_networks
Single command:
Solving and summarizing networks
Requirements:
Performance (investment planning):
There are scripts to plot and summarise solved networks. These will be reworked soon.
37
Nodes | Snapshots | Memory (RAM) | Solving Time |
350 | 4,780 (2h) | 70 GB | 14 h |
100 | 2,920 (3h) | 21 GB | 1.5 h |
Installation and Dependencies
An environment.yaml ships with the repository to install via conda, i.a. with:
Additionally, you’ll need to install a solver (Cbc, Gurobi, CPLEX)!
Continuous integration testing with Travis, tells us PyPSA-Eur is working with all of Linux, Mac, and Windows!
38
pypsa | atlite | powerplantmatching | snakemake-minimal |
pandas | geopandas | xarray | pyproj |
libgdal | cartopy | glaes | geokit |
More Features Planned!
39
Upcoming in 2020: PyPSA-Eur-Sec
40
Looking at the time...
41
41
Icon made by wanicon from www.flaticon.com
Introductory Slide Deck | 25’ |
Workflow Demo | 10’ |
Installation “break” | 15’ |
Live Coding | 20’ |
You explore some pre-solved networks. | 50’ |
?
Workflow
Live Demo
> conda activate pypsa-eur
> snakemake solve_all_scenarios
42
Installation
“Break”
Install PyPSA and download networks (~1 GB)
First:
$ git clone https://github.com/lisazeyen/pypsa-eur-tut
Then, follow instructions at README.md
43
Interactive Session
Let’s explore some pre-solved networks!
For one of the networks,
Or,
44
PyPSA-Eur
g
github.com/pypsa/pypsa-eur
pypsa-eur.readthedocs.io
v0.1.0 Release
9 January 2020
Unless otherwise stated, the graphics and text are Copyright © Elisabeth Zeyen, Martha Maria Frysztacki, Fabian Hofmann, Fabian Neumann, Jonas Hörsch, Tom Brown 2020. This work is licensed under a Creative Commons “Attribution 4.0 International” license.