Skip to content

Open modelling of European power systems in Python: a proof-of-concept

License

Notifications You must be signed in to change notification settings

matteodefelice/pypsa-entsoe

Repository files navigation

Simulating European power systems using open tools and data

This notebook is a sort of proof-of-concept illustrating a simple workflow to simulate the hourly operations of all the European power systems using the following tools and data sources:

The aim of this notebook is to show the possibility to easily simulate current power systems using open data and tools. In principle, this notebook can be used for simple explorations and to analyse specific events, simulating what-if scenarios (e.g., what if we had more wind power installed?) or analysing the impact of climate variability (the used C3S dataset provides a wide set of climatic conditions to test).

Requirements

The file requirements.yml contains the list of the Python modules needed to run the example. The example is using the open-source solver Cbc, which can be installed using Anaconda.

How to use it

The C3S data for wind, solar radiation and air temperature are too big for GitHub (>100 MB). To download them you have two options:

  1. Run the script download_c3s_data.py in the data folder (you need an account to the C3S CDS and cdsapi configured)
  2. Download the data from this Zenodo repository

Open and run the Jupyter notebook main.ipynb

Limitations

Being a proof-of-concept, the simulation shown in the notebook shows the following limitations:

  • Country level: the spatial resolution of the simulation is quite coarse and modelling a national power system as a single node hide transmission bottlenecks and the impact of the geographical distribution of generation. A possible improvement might be switching to a Bidding Zone Level (BZN): in this case the data from the ENTSO-E TP would be available while for the wind/solar/hydro we should use the NUTS2 aggregation.
  • Storage not realistic: storage (both reservoir and closed-loop pumping) is very simplified.
  • Generation costs: the marginal costs set in PyPSA are mostly based on the PyPSA-EUR and on JRC-FF55-MIX-2030 and they are the same for all the countries.
  • Missing countries: in some cases, national data is not available. For example SK and UK in 2022 are not available for the entire year but this happens also in other cases.
  • Missing data points in TP: data in the Transparency Platform can be quite patchy, with missing data points in many cases.
  • Availability factors and efficiency: the availability factors and efficiency of generators are not realistic and the same for all the countries. In some cases, especially for the French nuclear, this leads to behaviours quite different from the reality.

About

Open modelling of European power systems in Python: a proof-of-concept

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published