pypsa-meets-earth / pypsa-earth

PyPSA-Earth: A flexible Python-based open optimisation model to study energy system futures around the world.
https://pypsa-earth.readthedocs.io/en/latest/
207 stars 167 forks source link
energy-system-model energy-system-planning investment-optimization operational-optimization power-system-model power-system-planning pypsa-africa pypsa-earth python scenario-analysis

PyPSA-Earth. A Flexible Python-based Open Optimisation Model to Study Energy System Futures around the World.

by

Development Status: Stable and Active

Status Linux Status Mac Status Windows Documentation Status Size License: AGPL v3 REUSE status Code style: black pre-commit.ci status Discord Google Drive

PyPSA-Earth is the first open-source global energy system model with data in high spatial and temporal resolution. It enables large-scale collaboration by providing a tool that can model the world energy system or any subset of it. This work is derived from the European PyPSA-Eur model using new data and functions. It is suitable for operational as well as combined generation, storage and transmission expansion studies. The model provides two main features: (1) customizable data extraction and preparation scripts with global coverage and (2) a PyPSA energy modelling framework integration. The data includes electricity demand, generation and medium to high-voltage networks from open sources, yet additional data can be further integrated. A broad range of clustering and grid meshing strategies help adapt the model to computational and practical needs.

The model is described in the Applied Energy article "PyPSA-Earth. A new global open energy system optimization model demonstrated in Africa", 2023, https://doi.org/10.1016/j.apenergy.2023.121096 (BibTeX). The documentation provides additional information.

PyPSA meets Earth is a free and open source software initiative aiming to develop a powerful energy system model for Earth. We work on open data, open source modelling, open source solver support and open communities. Stay tuned and join our mission - We look for users, co-developers and leaders! Check out our website for results and our projects. Happy coding!

Figure: Example power systems build with PyPSA-Earth. See images of ~193 more countries at https://zenodo.org/records/10080766

Livetracker. Most popular global models:

## Get involved There are multiple ways to get involved and learn more about our work. That's how we organise ourselves: - [**Discord NEW! (Open)**](https://discord.gg/AnuJBk23FU) - chat with the community, team up on features, exchange with developers, code in voice channels - registration and usage is for free

- **General initiative meeting (Open)** - every forth Thursday each month Thursday 16-17:00 (UK time) `download .ics` - join for project news and high-level code updates - meeting hosted on Discord - [open agenda](https://docs.google.com/document/d/1r6wm2RBe0DWFngmItpFfSFHA-CnUmVcVTkIKmthdW3g/edit?usp=sharing). See what we will discuss. Invited members have edit rights. - **Buddy talk (Open)** - book a 30min meeting with Max to discuss anything you like - booking link: [calendly.com/pypsa-meets-earth](https://calendly.com/max-parzen/pypsa-meets-earth-exchange-30min) - **Specific code meeting (Open)** - meeting hosted on Discord - join updates, demos, Q&A's, discussions and the coordination of each work package 1. Demand creation and prediction meeting, on demand 2. AI asset detection meeting, on demand 3. Sector coupling meeting, every Thursday 09:00 (UK time), `download .ics` 4. PyPSA-Earth meeting, every Thursday 16:00 (UK time), `download .ics` - **Outreach meeting (Open)** - every second week, Tuesday 17:00 (UK time) - planning, discussing events, workshops, communication, community activities - [**Google Drive**](https://drive.google.com/drive/folders/13Z8Y9zgsh5IZaDNkkRyo1wkoMgbdUxT5?usp=sharing) - access to minutes, presentations, lists, documents (access to minutes) ## Installation 1. Open your terminal at a location where you want to install pypsa-earth. Type the following in your terminal to download the package from GitHub: ```bash .../some/path/without/spaces % git clone https://github.com/pypsa-meets-earth/pypsa-earth.git ``` 2. The python package requirements are curated in the `envs/environment.yaml` file. The environment can be installed using: ```bash .../pypsa-earth % conda env create -f envs/environment.yaml ``` If the above takes longer than 30min, you might want to try mamba for faster installation: ```bash (base) conda install -c conda-forge mamba .../pypsa-earth % mamba env create -f envs/environment.yaml ``` 3. For running the optimization one has to install the solver. We can recommend the open source HiGHs solver which installation manual is given [here](https://github.com/PyPSA/PyPSA/blob/633669d3f940ea256fb0a2313c7a499cbe0122a5/pypsa/linopt.py#L608-L632). 4. To use jupyter lab (new jupyter notebooks) **continue** with the [ipython kernel installation](http://echrislynch.com/2019/02/01/adding-an-environment-to-jupyter-notebooks/) and test if your jupyter lab works: ```bash .../pypsa-earth % ipython kernel install --user --name=pypsa-earth .../pypsa-earth % jupyter lab ``` 5. Verify or install a java redistribution from the [official website](https://www.oracle.com/java/technologies/downloads/) or equivalent. To verify the successful installation the following code can be tested from bash: ```bash .../pypsa-earth % java -version ``` The expected output should resemble the following: ```bash java version "1.8.0_341" Java(TM) SE Runtime Environment (build 1.8.0_341-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode) ``` ## Test run on tutorial - In the folder open a terminal/command window to be located at this path `~/pypsa-earth/` - Activate the environment `conda activate pypsa-earth` - Rename config.tutorial.yaml to config.yaml. For instance in Linux: ```bash mv config.tutorial.yaml config.yaml ``` - Run a dryrun of the Snakemake workflow by typing simply in the terminal: ```bash snakemake -j 1 solve_all_networks -n ``` Remove the -n to do a real run. Follow the tutorial of PyPSA-Eur 1 and 2 on [YouTube](https://www.youtube.com/watch?v=ty47YU1_eeQ) to continue with an analysis. ## Training - We recently updated some [hackathon material](https://github.com/pypsa-meets-earth/documentation) for PyPSA-Earth. The hackathon contains jupyter notebooks with exercises. After going through the 1 day theoretical and practical material you should have a suitable coding setup and feel confident about contributing. - The get a general feeling about the PyPSA functionality, we further recommend going through the [PyPSA](https://github.com/PyPSA/PyPSA/tree/master/examples) and [Atlite](https://github.com/PyPSA/atlite/tree/master/examples) examples. ## Questions and Issues - We are happy to answer questions and help with issues **if they are public**. Through being public the wider community can benefit from the raised points. Some tips. **Bugs** and **feature requests** should be raised in the [**GitHub Issues**](https://github.com/pypsa-meets-earth/pypsa-earth/issues/new/choose). **General workflow** or **user questions** as well as discussion points should be posted at the [**GitHub Discussions**](https://github.com/pypsa-meets-earth/pypsa-earth/discussions/categories/q-a) tab. Happy coding. ## Documentation The documentation is available here: [documentation](https://pypsa-earth.readthedocs.io/en/latest/index.html). ## Collaborators
hazemful
Hazemful
fneum
Fabian Neumann
ekatef
Ekaterina
euronion
Euronion
Justus-coded
Justus Ilemobayo
mnm-matin
Mnm-matin
martacki
Martha Frysztacki
LukasFrankenQ
Lukas Franken
pz-max
Max Parzen
davide-f
Davide-f
koen-vg
Koen Van Greevenbroek
hazemakhalek
Hazem
energyLS
EnergyLS
AnasAlgarei
AnasAlgarei
yerbol-akhmetov
Yerbol Akhmetov
DeniseGiub
DeniseGiub
GbotemiB
Emmanuel Bolarinwa
Tomkourou
Thomas Kouroughli
GridGrapher
GridGrapher
Emre-Yorat89
Emre_Yorat
virio-andreyana
Null
giacfalk
Giacomo Falchetta
Ekaterina-Vo
Ekaterina-Vo
finozzifa
Finozzifa
cpschau
Cschau
Tooblippe
Tobias
doneachh
Anton Achhammer
carlosfv92
Carlos Fernandez
asolavi
Null
stephenjlee
Stephen J Lee
juli-a-ko
Juli-a-ko
squoilin
Sylvain Quoilin
siddharth-krishna
Siddharth Krishna
pitmonticone
Pietro Monticone
Netotse
Null
kma33
Katherine M. Antonio
jessLryan
Jess
jarry7
Jarrad Wright
HanaElattar
HanaElattar
EmreYorat
EmreYorat
AndreCNF
André Cristóvão Neves Ferreira
AlexanderMeisinger
Null