Skip to content

open-energy-transition/form-energy-storage

 
 

Repository files navigation

GitHub release (latest by date including pre-releases) Test workflows Documentation Size Zenodo PyPSA-Eur Zenodo PyPSA-Eur-Sec Snakemake REUSE status Stack Exchange questions

The Role of Energy Storage in Germany

Open Energy Transition Logo

This repository is a soft-fork of OET/PyPSA-Eur and contains the entire project The Role of Energy Storage in Germany supported by Open Energy Transition (OET)*, including code and report. The philosophy behind this repository is that no intermediary results are included, but all results are computed from raw data and code. The structure is also inspired by cookiecutter-project.

This repository is maintained using OET's soft-fork strategy. OET's primary aim is to contribute as much as possible to the open source (OS) upstream repositories. For long-term changes that cannot be directly merged upstream, the strategy organizes and maintains OET forks, ensuring they remain up-to-date and compatible with upstream, while also supporting future contributions back to the OS repositories.

Repository structure

  • benchmarks: will store snakemake benchmarks (does not exist initially)
  • config: configurations used in the study
  • cutouts: will store raw weather data cutouts from atlite (does not exist initially)
  • data: includes input data that is not produced by any snakemake rule
  • doc: includes all files necessary to build the readthedocs documentation of PyPSA-Eur
  • envs: includes all the mamba environment specifications to run the workflow
  • logs: will store log files (does not exist initially)
  • notebooks: includes all the notebooks used for ad-hoc analysis
  • report: contains all files necessary to build the report; plots and result files are generated automatically
  • rules: includes all the snakemakerules loaded in the Snakefile
  • resources: will store intermediate results of the workflow which can be picked up again by subsequent rules (does not exist initially)
  • results: will store the solved PyPSA network data, summary files and plots (does not exist initially)
  • scripts: includes all the Python scripts executed by the snakemake rules to build the model

Installation and Usage

1. Installation

Clone the repository:

git clone https://github.com/open-energy-transition/form-energy-storage

You need mamba to run the analysis. Users may also prefer to use micromamba or conda. Using mamba, you can create an environment from within you can run it:

mamba env create -f environment.yaml

Activate the newly created fe-storage environment:

mamba activate fe-storage

2. Run the analysis

snakemake -call

This will run all analysis steps to reproduce results and build the report.

To generate a PDF of the dependency graph of all steps resources/dag.pdf run:

snakemake -c1 dag

* Open Energy Transition (g)GmbH, Königsallee 52, 95448 Bayreuth, Germany



PyPSA-Eur: A Sector-Coupled Open Optimisation Model of the European Energy System

PyPSA-Eur is an open model dataset of the European energy system at the transmission network level that covers the full ENTSO-E area. The model is suitable both for operational studies and generation and transmission expansion planning studies. The continental scope and highly resolved spatial scale enables a proper description of the long-range smoothing effects for renewable power generation and their varying resource availability.

The model is described in the documentation and in the paper PyPSA-Eur: An Open Optimisation Model of the European Transmission System, 2018, arXiv:1806.01613. The model building routines are defined through a snakemake workflow. Please see the documentation for installation instructions and other useful information about the snakemake workflow. The model is designed to be imported into the open toolbox PyPSA.

WARNING: PyPSA-Eur is under active development and has several limitations which you should understand before using the model. The github repository issues collect known topics we are working on (please feel free to help or make suggestions). The documentation remains somewhat patchy. You can find showcases of the model's capabilities in the Joule paper The potential role of a hydrogen network in Europe, another paper in Joule with a description of the industry sector, or in a 2021 presentation at EMP-E. We do not recommend to use the full resolution network model for simulations. At high granularity the assignment of loads and generators to the nearest network node may not be a correct assumption, depending on the topology of the underlying distribution grid, and local grid bottlenecks may cause unrealistic load-shedding or generator curtailment. We recommend to cluster the network to a couple of hundred nodes to remove these local inconsistencies. See the discussion in Section 3.4 "Model validation" of the paper.

PyPSA-Eur Grid Model

The dataset consists of:

  • A grid model based on a modified GridKit extraction of the ENTSO-E Transmission System Map. The grid model contains 7072 lines (alternating current lines at and above 220kV voltage level and all high voltage direct current lines) and 3803 substations.
  • The open power plant database powerplantmatching.
  • Electrical demand time series from the OPSD project.
  • Renewable time series based on ERA5 and SARAH, assembled using the atlite tool.
  • Geographical potentials for wind and solar generators based on land use (CORINE) and excluding nature reserves (Natura2000) are computed with the atlite library.

A sector-coupled extension adds demand and supply for the following sectors: transport, space and water heating, biomass, industry and industrial feedstocks, agriculture, forestry and fishing. This completes the energy system and includes all greenhouse gas emitters except waste management and land use.

This diagram gives an overview of the sectors and the links between them:

sector diagram

Each of these sectors is built up on the transmission network nodes from PyPSA-Eur:

network diagram

For computational reasons the model is usually clustered down to 50-200 nodes.

Already-built versions of the model can be found in the accompanying Zenodo repository.

Contributing and Support

We strongly welcome anyone interested in contributing to this project. If you have any ideas, suggestions or encounter problems, feel invited to file issues or make pull requests on GitHub.

  • In case of code-related questions, please post on stack overflow.
  • For non-programming related and more general questions please refer to the mailing list.
  • To discuss with other PyPSA users, organise projects, share news, and get in touch with the community you can use the discord server.
  • For bugs and feature requests, please use the PyPSA-Eur Github Issues page.

Licence

The code in PyPSA-Eur is released as free software under the MIT License, see doc/licenses.rst. However, different licenses and terms of use may apply to the various input data, see doc/data_sources.rst.

About

PyPSA-Eur: A Sector-Coupled Open Optimisation Model of the European Energy System

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.4%
  • Other 0.6%