pypsa-eur
pypsa-eur copied to clipboard
Support Ukraine and Moldova in the country list and in the dataset.
TODO list
New country keys to be supported:
MD: Moldova, Republic ofUA: Ukraine
TODOs
- [x] Crimea: Is automatically included or not when using "UA" key (
country_shapes.json)? (Crimea not included - [x] Keep Crimea as part of "UA" key or not?
- [x] Updated power plants list incl. Moldova @FabianHofmann
- [x] OPSD (load demand) @martacki
- [x] ENTSO-E grid extract
- [x] 750 kV transmission electrical params @fneum @p-glaum
- [x] 750 kV lines types -> point release PyPSA to use with pypsa-eur @fneum -> 0.19.2 (conda may take 24h)
- [x] 750 kV transmission include in simplify_network & enable in pypsa-eur config line type & enforce min. version in
environment.yamlfor pypsa point release @p-glaum (alt.: 380kV assumptions) - [x] GDP/POP data for assigning load data to bus regions. @euronion @martacki (decided to use GDP data only, i.e. no population)
- [x] No pop data considered for
add_electricityfor MD, UA (simlification) - [x] Cutout containing Ukraine: ERA5 @euronion @fneum
- [x] Cutout containing Ukraine: SARAH @euronion
- [x] Hydro profiles for Ukraine (Moldova has only ~100 MW hydro if seen correctly, so less relevant) @euronion [Needs update to databundle, see below]
- [ ] Renewable potentials?
Additions to databundle
- [x] EIA data (https://github.com/PyPSA/pypsa-eur/pull/321#issuecomment-1059728440)
- [x] @martacki gdp data for UA, MD (Link: https://github.com/martacki/pypsa-ua_gdp_data)
- [x] Update cutouts from here @fneum https://zenodo.org/record/6350001#.Yi3p9Lko8UE
Release
- [ ] Release notes
Checklist
- [ ] I tested my contribution locally and it seems to work fine.
- [ ] Code and workflow changes are sufficiently documented.
- [ ] Newly introduced dependencies are added to
envs/environment.yamlandenvs/environment.docs.yaml. - [ ] Changes in configuration options are added in all of
config.default.yaml,config.tutorial.yaml, andtest/config.test1.yaml. - [ ] Changes in configuration options are also documented in
doc/configtables/*.csvand line references are adjusted indoc/configuration.rstanddoc/tutorial.rst. - [ ] A note for the release notes
doc/release_notes.rstis amended in the format of previous release notes.
So one problem currently is that PyPSA-Eur thinks UA is synchronized with continental Europe, which it is not. Well not all of it, there is a small Island in the border region that is synchronized with continental Europe. I tried to find out where the B2B converters are, but I couldn't find them. As all studies EU + UA I can think of will assume synchronisation, I'd propose to keep synchronised.
If somebody wants to extend this investigation:
- https://www.lowcarbonukraine.com/wp-content/uploads/Synchronising-Ukraine%C2%B4s-and-Europe%C2%B4s-electricity-grids.pdf
- https://op.europa.eu/en/publication-detail/-/publication/785f224b-93cd-11e9-9369-01aa75ed71a1
- https://en.wikipedia.org/wiki/Burshtyn_TES
- https://en.wikipedia.org/wiki/Rzesz%C3%B3w%E2%80%93Khmelnytskyi_powerline
- https://en.wikipedia.org/wiki/Vetrino%E2%80%93Isaccea%E2%80%93Yuzhnoukrainsk_powerline
- https://en.wikipedia.org/wiki/Albertirsa%E2%80%93Zakhidnoukrainska%E2%80%93Vinnytsia_powerline
PR for new 750kV standard line type in PyPSA created at https://github.com/PyPSA/PyPSA/pull/369
build_hydro requires input from the EIA. The last time we retrieved the data from there was 2017, they changed their data access and csv format since then quite abit. For prototyping, instead of adjusting all scripts and rule, I've added the values for Ukraine and Moldova to the EIA data file. See attached.
EIA_hydro_generation_2000_2014.csv
- [x] Needs to be added to the databundle.
edit:
With the updated EIA data build_hydro runs without issues for MD. I have no reason to believe it would not work for UA, I can' test it atm as I don't have access to the new cutouts right now.
Two things we should track (seperate issues):
Quality
Plotting inflow from build_hydro reveals unrealistic peaks for MD. A similar peak is also present for DE, other countries were not investigated. The peaks in both cases exceed what is possible with existing hydro capacities (DE: factor 2 ca. 4.5 GW installed, MD: factor 5-10, ca. 50 MW installed)

Since these are only temporary peaks they probably don't affect the results too much, also because they are relatively low.
Workflow The EIA data format from our datasource changed. Suggestions
- Automatic download of EIA data OR update the EIA .csv file with hydro generation to new dataformat
- substitute the
vresutilsdependency inbuild_hydroby writing thepd.read_csvstatement directl.y
if you want to run the last commits yourself (add_electricity), you need to generate or download the input data GDP_PPP_30arcsec_v3_mapped.csv once and move the file into pypsa-eur/data/bundle.
edit: in case you download the data and don't re-generate it, you should rename GDP_PPP_30arcsec_v3_mapped_default.csv to GDP_PPP_30arcsec_v3_mapped.csv
Available here: https://github.com/martacki/pypsa-ua_gdp_data
Caution: Quick&Dirty solution; in case you execute the script - it runs very slow!! (~2h on my local machine)
if you want to run the last commits yourself (
add_electricity), you need to generate or download the input dataGDP_PPP_30arcsec_v3_mapped.csvonce and move the file intopypsa-eur/data/bundle. edit: in case you download the data and don't re-generate it, you should renameGDP_PPP_30arcsec_v3_mapped_default.csvtoGDP_PPP_30arcsec_v3_mapped.csvAvailable here: https://github.com/martacki/pypsa-ua_gdp_data
Caution: Quick&Dirty solution; in case you execute the script - it runs very slow!! (~2h on my local machine)
How does the quality of distributing load based on this look? We two already talked about it, but we could use the same datasets and roll-out the same approach for everywhere and instead drop the NUTS3 approach currently used.
PyPSA 0.19.2 is out on PyPI with 750kV line type, conda may take 24h.
new cutouts now available at: https://zenodo.org/record/6350001#.Yi3p9Lko8UE
Looking at the potentials for renewables for UA, MD, @fneum was right: The potentials are currently 0, as Corine is not extending to there.
I quickly used the Copernicus Land Cover dataset to see how well that could substitute Corine, here the results (onshore wind only):

The match is pretty poor for densily populated areas. I believe that is because the Copernicus dataset does not differentiate between build-on areas, while the Corine dataset differentiates between different types of buildings.
We could set the renewable potentials to 0 (current status), set them to np.inf (hacky, but ok for now) or manually set them to values based on the Copernicus dataset (quick and dirty, hardcoded, probably the most accurate).
What do you think?
+1 for hardcoded Copernicus for UA/MD profiles look ok?
EDIT: Forget my comment, the copernicus land cover dataset available from https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover appears to be a repackaged version of what i called ESA-CCI LC. They're the same.
~~Just a shout-out that in principle one could also switch to using the ESA-CCI land cover dataset which has global coverage: https://www.esa-landcover-cci.org/. It does not have different categories of build-on land.~~
~~http://maps.elie.ucl.ac.be/CCI/viewer/index.php for a quick view, http://maps.elie.ucl.ac.be/CCI/viewer/download/CCI-LC_Maps_Legend.pdf for a legend.~~
@fneum do you still need someone to test run this on a fresh pypsa-eur clone? Could do it this week
would be great! Thanks @energyLS !
Successful. Steps I have done:
Fresh repo: git clone https://github.com/PyPSA/pypsa-eur.git
Switch to branch ukraine_hackathon
Changed config to clusters: [39, 128] and opts: [Co2L-144H] to reduce solving time
Run: snakemake -c1 solve_all_networks
Worked all fine, did some additional plotting of the solved network and looks good. Ready to merge from my point of view @fneum
Just for reference. This PR is merged because of ENTSO-E news:
"Continental European TSOs announce completion of synchronisation project with Ukrenergo and significant increase in export capacity from Continental Europe to Ukraine. https://www.entsoe.eu/news/2023/11/28/continental-european-tsos-announce-completion-of-synchronisation-project-with-ukrenergo-and-significant-increase-in-export-capacity-from-continental-europe-to-ukraine/" :eu: