PyPSA-AT

High resolution, sector-coupled model of the Austrian Energy System.
https://github.com/aggm-ag/pypsa-at

Category: Energy Systems
Sub Category: Global and Regional Energy System Models

Keywords from Contributors

energy-system-model energy-system power-systems energy-model pypsa capacity-expansion-planning energy-data europe power-grid capacity-expansion-model

Last synced: about 4 hours ago
JSON representation

Repository metadata

PyPSA-AT: High resolution, sector-coupled model of the Austrian Energy System

README.md

Version
Size
Test workflows
CodeQL
pre-commit.ci status
Pixi Badge
pixi
Ruff
Snakemake
Python
Docs
Discord

PyPSA-AT: A Sector-Coupled Open Optimisation Model of the Austrian Energy System

[!WARNING]
PyPSA-AT is under very active early development. Expect things to change rapidly.

PyPSA-AT is an Austrian adaptation of the open European energy system
model PyPSA-Eur.
It provides a detailed sector-coupled model of the Austrian energy system, including the majority of relevant energy
carriers (electricity, gas, hydrogen, biomass, heat, coal, oil, methanol and ammonia) and demand profiles for the
industry, transport, residential, commercial, and agriculture sectors.

The project builds upon the methodologies developed in PyPSA-DE - the adaptation of
PyPSA-Eur for the German energy system - while incorporating Austria-specific network topology, energy system
characteristics, and regulatory frameworks.

For more comprehensive documentation on the underlying PyPSA-Eur/DE framework, model decisions, and implementation
details, please refer to the PyPSA-Eur documentation
and PyPSA-DE documentation, respectively.


🟥⬜🟥 Deutschsprachige Beschreibung:

PyPSA-AT ist eine österreichische Adaption des europäischen
Energiesystemmodells PyPSA-Eur.
Es liefert ein detailliertes, sektorgekoppeltes Modell des österreichischen Energiesystems und inkludiert den Großteil
der wichtigsten Energieträger (Elektrizität, Gas, Wasserstoff, Biomasse, Wärme, Kohle, Öl, Methanol und Ammoniak) sowie
Lastprofile für die Bedarfe von Industrie, Transport, Haushalten, Gewerbe und Landwirtschaft.

Das Projekt baut auf den methodischen Ansätzen auf, die in PyPSA-DE - der Adaption
von PyPSA-Eur für das Energiesystem Deutschlands - entwickelt wurden. Gleichzeitig enthält PyPSA-AT
österreichischspezifische Netzwerktopologien mit höherer räumlicher Auflösung innerhalb der Landesgrenzen,
Energiesystemcharakteristika und den regulatorischen Rahmen des Landes.

Für eine umfassendere Beschreibung der zugrundeliegenden Modelle sei hier auf die entsprechenden Dokumentationen
von PyPSA-Eur und PyPSA-DE
verwiesen.


✨ Features

PyPSA-AT extends the PyPSA-Eur model with Austria-specific enhancements.
While some features have already been implemented (✅), some are being actively worked on (🔨) or discussed (💡) and many
more are planned in the future (📌).
An overview of our planned and active features can be found in the following table.
For more detailed implementation information, see
the mods module documentation.

TOPIC FEATURE DESCRIPTION PR STATUS
Modeling High spatial and temporal resolution in AT Maintain NUTS2 and NUTS3 spatial resolution using administrative clustering in AT and at 1H and 3H temporal resolution in the myopic workflow. #53
Methane Pyrolysis (Plasma) — turquoise hydrogen Add methane pyrolysis (plasma variant) as a configurable H₂ production pathway. CH₄ is split into H₂ and solid carbon black; no CO₂ is emitted. Cost data from DEA sheet 104 (2024). #73 🔨
Improve Hydropower technologies Differentiate Open- and Closed Loop PHS, reservoirs with and without inflows and improve inflow time series for Austrian hydro power plants. - 📌
Model coupling Improve biomass sector accuracy by coupling PyPSA-AT with a dedicated carbon cycle model. - 📌
Endogenous industry demands Replace the exogenous energy modal split per industry sub-sector with optimized production paths. - 📌
Austrian climate goals Introduce regional CO2 budgets to comply with Austria's climate goals (CO2 neutral by 2040) -
Depict Austrian policies Include EAG targets for net renewable electricity production by 2030 and other regulatory requirements in the baseline scenario. - 🔨
Calibration Enhanced energy demand profiles for all sectors and Austrian NUTS3 regions Update demand curves for industry, transport, domestic, commercial and agriculture sectors with NUTS3 resolution in AT. - 📌
Calibrate renewable energy production capacity potentials in AT Limit RES deployment in accordance with Studie Erneuerbaren Energiepotenziale - 📌
Restrict technology occurrences Review technology occurrences such as V2G, SynGas, Pyrolysis, etc. and restrict their first appearance years. - 📌
Calibrate Heat sector Review and calibrate heat sector including existing capacities per heat system, demand profiles, and endogenous building thermal retrofitting. - 📌
Validation Compare model results with Eurostat Energy Balance Compare PyPSA-AT baseline scenario results with historical energy demands reported in the Eurostat Energy Balance to validate model results. - 🔨
Input Data Remove import of methane via Ukrainian border points Stop the possibility to import methane from outside the EU into countries bordering Ukraine, where no gas is imported in reality. -
Improved brownfield data for gas and hydrogen infrastructure provided by AGGM Include accurate data on the Austrian methane and hydrogen grids, storage infrastructure, trade volumes and retrofit potentials and costs. - 🔨
Austrian biomass potentials Include Austrian wet and solid biomass potentials as reported by UBA and BeST, respectively. - 📌
Electricity grid brownfield update Update 380 kV network topology and improve resolution of electricity transmission grid for Austrian regions. - 📌

⌨️ Installation

Please note that PyPSA-AT is only supported on Linux platforms. Installations on Windows or macOS require
modifications currently not supported.

  1. Clone the repository:

    git clone https://github.com/AGGM-AG/pypsa-at.git
    cd pypsa-at
    
  2. Installation using pixi (optional):

    Explicit package installation may be skipped since running commands with pixi run installs and activates all
    dependencies in pixi.toml.

    pixi install
    

🚀 Usage

  1. Configure your model by adjusting the base scenario in config/config.at.yaml

  2. Include scenario settings that differ from the base scenario in config/scenarios.manual.yaml

  3. Run the model using the default rule all:

    pixi run snakemake all --cores 'all'
    

    or activate the virtual environment and call the same workflow using a shorthand

    pixi shell && snakemake -call all
    

📖 Documentation

More detailed documentation of PyPSA-AT is hosted on pypsa-at.readthedocs.io.

🤝 Contributing

[!NOTE]
The development team focuses on establishing a well-calibrated representation of the Austrian energy system and
has limited capacity to review contributions from the community at the moment.

In general, please install the pre-commit hooks if you plan to contribute to this project.

pixi run pre-commit install

🗄️ Data sources

Scenario data: Ariadne

ariadne-data/ariadne-database.csv

Data on Ukrainian gas transit: AGGM AG

data/pypsa-at/ukrainian_gas_transit_stop.json

  • Source: experts of AGGM (Austrian Gas Grid Management) AG
  • Format: geojson dataset of affected network.generators.loc[f"{country_code} gas pipeline import"]
  • Description: input of European gas network experts at AGGM on which cross-border transit points between the EU and Ukraine are closed down.

Data on Austrian gas network capacities: AGGM AG

data/pypsa-at/AGGM_gas_network_base_AT10.csv and
data/pypsa-at/AGGM_gas_network_base_AT35.csv

  • Source: experts of AGGM (Austrian Gas Grid Management) AG
  • Format: table of gas transport corridors in Austria and their properties
  • Description: input of experts on the Austrian gas network, clustered for AT-10 (~ NUTS2) and AT-35 (NUTS3). The data contains information on transport corridors - not exact gas pipeline locations - and their properties

The properties improved with expert input are:

  • p_nom: nominal capacity
  • max_pressure_bar: maximum pressure
  • build_year: year of construction

⚖️ License

This project is licensed under the MIT License - see the LICENSE.txt file for details.

Parts of the code that originate from PyPSA-DE
or PyPSA-Eur remain under their original MIT licenses. The copyright and
attribution notices from these original projects are preserved in the respective source files.

🏅 Acknowledgments

PyPSA-AT builds upon PyPSA-Eur and PyPSA-DE,
developed by the PyPSA team at TU Berlin and other contributors.

✏️ Citation

If you use PyPSA-AT in your research, please cite it as:

Worschischek, Philip; Zechner, Nicole; Awetisjan, Vartan; Wernhart, Helmut (2026):
PyPSA-AT - A sector-coupled open optimisation model of the Austrian energy system.
Version 0.1.0. Austrian Gas Grid Management AG.
https://github.com/AGGM-AG/pypsa-at

Or in the German version:

Worschischek, Philip; Zechner, Nicole; Awetisjan, Vartan; Wernhart, Helmut (2026):
PyPSA-AT - Sektorgekoppeltes Energiesystemmodell des österreichischen Energiesystems.
Version 0.1.0. Austrian Gas Grid Management AG.
https://github.com/AGGM-AG/pypsa-at

Citation (CITATION.cff)

# SPDX-FileCopyrightText: Contributors to PyPSA-DE <https://github.com/pypsa/pypsa-de>
#
# SPDX-License-Identifier: CC0-1.0

cff-version: 1.2.0
title: "PyPSA-AT - Sektorgekoppeltes Energiesystemmodell des österreichischen Energiesystems"
repository: https://github.com/AGGM-AG/pypsa-at
version: 0.1.0-alpha
date-released: "none"
license: MIT
authors:
  - family-names: Worschischek
    given-names: Philip
    organisation: Austrian Gas Grid Management AG
  - family-names: Avetisjan
    given-names: Vartan
    organisation: Austrian Gas Grid Management AG
  - family-names: Wernhart
    given-names: Helmut
    organisation: Austrian Gas Grid Management AG
  - family-names: Zechner
    given-names: Nicole
    organisation: Austrian Gas Grid Management AG
  - family-names: Nutz
    given-names: Max
    organisation: University of Life Sciences Vienna BOKU


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 6 days ago

Total Commits: 6,354
Total Committers: 106
Avg Commits per committer: 59.943
Development Distribution Score (DDS): 0.78

Commits in past year: 1,046
Committers in past year: 48
Avg Commits per committer in past year: 21.792
Development Distribution Score (DDS) in past year: 0.442

Name Email Commits
Fabian Neumann f****n@o****e 1398
Philip Worschischek p****k@a****t 686
Michael Lindner m****r@p****e 585
pre-commit-ci[bot] 6****] 490
Fabian f****f@g****e 436
lisazeyen l****n@w****e 364
Tom Brown t****m@n****g 295
Jonas Hörsch j****h@k****u 247
toniseibold t****b@g****m 184
Lukas Trippe l****p@p****e 129
martavp m****z@g****m 119
martacki m****i@k****u 116
Philipp Glaum p****m@t****e 112
JulianGeis J****s@g****t 105
AmosSchledorn a****n@i****m 91
Koen van Greevenbroek k****k@u****o 80
virio-andreyana 1****a 78
github-actions[bot] 4****] 72
Adam-Dvorak1 9****1 63
euronion 4****n 63
Bobby Xiong 3****g 47
Parisra 1****a 38
LukasFrankenQ l****n@e****k 36
Johannes Misensky j****y@a****t 34
Thomas Gilon t****n@o****g 30
cpschau 1****u 28
cpschau c****s@i****e 28
dependabot[bot] 4****] 27
millingermarkus m****r@c****e 27
Max Parzen m****n@e****k 26
and 76 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 6 days ago

Total issues: 0
Total pull requests: 29
Average time to close issues: N/A
Average time to close pull requests: 1 day
Total issue authors: 0
Total pull request authors: 3
Average comments per issue: 0
Average comments per pull request: 0.79
Merged pull request: 22
Bot issues: 0
Bot pull requests: 9

Past year issues: 0
Past year pull requests: 29
Past year average time to close issues: N/A
Past year average time to close pull requests: 1 day
Past year issue authors: 0
Past year pull request authors: 3
Past year average comments per issue: 0
Past year average comments per pull request: 0.79
Past year merged pull request: 22
Past year bot issues: 0
Past year bot pull requests: 9

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/aggm-ag/pypsa-at

Top Issue Authors

Top Pull Request Authors

  • pworschischek-aggmag (19)
  • github-actions[bot] (9)
  • nicolezechneraggm (1)

Top Issue Labels

Top Pull Request Labels


Dependencies

.github/workflows/test.yaml actions
  • actions/cache v5 composite
  • actions/checkout v6 composite
  • actions/upload-artifact v6 composite
  • dorny/paths-filter v3 composite
  • prefix-dev/setup-pixi v0.9.3 composite
.github/workflows/validate.yaml actions
  • PyPSA/pypsa-validator v0.2.5 composite
.devcontainer/Dockerfile docker
  • ghcr.io/prefix-dev/pixi latest build
.github/workflows/push-images.yaml actions
  • actions/checkout v6 composite
  • docker/login-action v3 composite
envs/environment.yaml conda
  • atlite >=0.3
  • bokeh >=3.8.0
  • cartopy >=0.25.0
  • copernicusmarine >=2.2.4
  • country_converter >=1.3.2
  • dask >=2025.10.0
  • descartes >=1.1.0
  • entsoe-py >=0.7.8
  • fiona >=1.10.1
  • folium >=0.20.0
  • geojson >=3.2.0
  • geopandas >=1
  • geopy >=2.4.1
  • glpk >=5.0
  • graphviz >=12.2.1
  • gurobi >=12.0.3
  • highspy >=1.12.0
  • ipython >=9.7.0
  • jpype1
  • jpype1 >=1.6.0
  • jupyter >=1.1.1
  • libgdal-netcdf >=3.10.3
  • linopy >=0.4.4
  • lxml >=6.0.2
  • matplotlib >=3.10.7
  • memory_profiler >=0.61.0
  • netcdf4 >=1.7.2
  • networkx >=3.5
  • numpy >=1.26.4
  • openpyxl >=3.1.5
  • pandas >=2.1
  • plotly >=6.4.0
  • powerplantmatching >=0.5.15
  • pre-commit >=4.3.0
  • proj >=9.6.2
  • pyam >=2.0
  • pycountry
  • pydeck >0.6
  • pylint >=4.0.2
  • pypsa >=0.35.2
  • pyscipopt >=5.6.0
  • pytables >=3.10.2
  • python >=3.10
  • pytz >=2025.2
  • pyxlsb >=1.0.10
  • rasterio >=1.4.3
  • rioxarray >=0.20.0
  • ruamel.yaml
  • ruff >=0.14.3
  • scipy >=1.16.3
  • seaborn >=0.13.2
  • shapely >=2.0
  • snakemake-executor-plugin-cluster-generic >=1.0.9
  • snakemake-executor-plugin-slurm >=1.9.2
  • snakemake-minimal >=9
  • snakemake-storage-plugin-cached-http >=0.1.0
  • snakemake-storage-plugin-http >=0.3
  • tenacity >=9.1.2
  • tqdm >=4.67.1
  • tsam >=2.3.1
  • xarray >=2024.3.0,<2025.7.0
  • xlrd >=2.0.2
  • yaml >=0.2.5
.github/workflows/codeql.yaml actions
  • actions/checkout v6 composite
  • github/codeql-action/analyze v4 composite
  • github/codeql-action/init v4 composite
.github/workflows/release.yaml actions
  • actions/checkout v6 composite
  • actions/create-github-app-token v2 composite
  • prefix-dev/setup-pixi v0.9.3 composite
  • stefanzweifel/git-auto-commit-action v7 composite
.github/workflows/update-lockfile.yaml actions
  • actions/checkout v6 composite
  • actions/download-artifact v7 composite
  • actions/upload-artifact v6 composite
  • peter-evans/create-pull-request v8 composite
  • prefix-dev/setup-pixi v0.9.3 composite

Score: 7.228388451573604