Merge branch 'master' into validation

This commit is contained in:
Fabian Hofmann 2023-07-31 11:20:11 +02:00 committed by GitHub
commit 1ea8cf47d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 642 additions and 411 deletions

View File

@ -6,7 +6,7 @@ cff-version: 1.1.0
message: "If you use this package, please cite it in the following way."
title: "PyPSA-Eur: An open sector-coupled optimisation model of the European energy system"
repository: https://github.com/pypsa/pypsa-eur
version: 0.8.0
version: 0.8.1
license: MIT
authors:
- family-names: Brown

View File

@ -9,7 +9,7 @@ SPDX-License-Identifier: CC-BY-4.0
![Size](https://img.shields.io/github/repo-size/pypsa/pypsa-eur)
[![Zenodo PyPSA-Eur](https://zenodo.org/badge/DOI/10.5281/zenodo.3520874.svg)](https://doi.org/10.5281/zenodo.3520874)
[![Zenodo PyPSA-Eur-Sec](https://zenodo.org/badge/DOI/10.5281/zenodo.3938042.svg)](https://doi.org/10.5281/zenodo.3938042)
[![Snakemake](https://img.shields.io/badge/snakemake-≥5.0.0-brightgreen.svg?style=flat)](https://snakemake.readthedocs.io)
[![Snakemake](https://img.shields.io/badge/snakemake-≥7.7.0-brightgreen.svg?style=flat)](https://snakemake.readthedocs.io)
[![REUSE status](https://api.reuse.software/badge/github.com/pypsa/pypsa-eur)](https://api.reuse.software/info/github.com/pypsa/pypsa-eur)
[![Stack Exchange questions](https://img.shields.io/stackexchange/stackoverflow/t/pypsa)](https://stackoverflow.com/questions/tagged/pypsa)
@ -35,17 +35,18 @@ The model is designed to be imported into the open toolbox
[PyPSA](https://github.com/PyPSA/PyPSA).
**WARNING**: PyPSA-Eur is under active development and has several
[limitations](https://pypsa-eur.readthedocs.io/en/latest/limitations.html)
which you should understand before using the model. The github repository
[limitations](https://pypsa-eur.readthedocs.io/en/latest/limitations.html) which
you should understand before using the model. The github repository
[issues](https://github.com/PyPSA/pypsa-eur/issues) collect known topics we are
working on (please feel free to help or make suggestions). The
[documentation](https://pypsa-eur.readthedocs.io/) remains somewhat patchy. You
can find showcases of the model's capabilities in the preprint [Benefits of a
Hydrogen Network in Europe](https://arxiv.org/abs/2207.05816), a [paper in Joule
with a description of the industry sector](https://arxiv.org/abs/2109.09563), or
in [a 2021 presentation at EMP-E](https://nworbmot.org/energy/brown-empe.pdf).
We cannot support this model if you choose to use it. We do not recommend to use
the full resolution network model for simulations. At high granularity the
can find showcases of the model's capabilities in the Joule paper [The potential
role of a hydrogen network in
Europe](https://doi.org/10.1016/j.joule.2023.06.016), another [paper in Joule
with a description of the industry
sector](https://doi.org/10.1016/j.joule.2022.04.016), or in [a 2021 presentation
at EMP-E](https://nworbmot.org/energy/brown-empe.pdf). 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

View File

@ -3,7 +3,7 @@
# SPDX-License-Identifier: CC0-1.0
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#top-level-configuration
version: 0.8.0
version: 0.8.1
tutorial: false
logging:
@ -238,6 +238,12 @@ lines:
max_extension: .inf
length_factor: 1.25
under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
dynamic_line_rating:
activate: false
cutout: europe-2013-era5
correction_factor: 0.95
max_voltage_difference: false
max_line_rating: false
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#links
links:

View File

@ -60,6 +60,12 @@ renewable:
clustering:
exclude_carriers: ["OCGT", "offwind-ac", "coal"]
lines:
dynamic_line_rating:
activate: true
cutout: be-03-2013-era5
max_line_rating: 1.3
solving:
solver:

View File

@ -1,195 +0,0 @@
technology,year,parameter,value,unit,source
solar-rooftop,2030,discount rate,0.04,per unit,standard for decentral
onwind,2030,lifetime,30,years,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
offwind,2030,lifetime,30,years,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
solar,2030,lifetime,25,years,IEA2010
solar-rooftop,2030,lifetime,25,years,IEA2010
solar-utility,2030,lifetime,25,years,IEA2010
PHS,2030,lifetime,80,years,IEA2010
hydro,2030,lifetime,80,years,IEA2010
ror,2030,lifetime,80,years,IEA2010
OCGT,2030,lifetime,30,years,IEA2010
nuclear,2030,lifetime,45,years,ECF2010 in DIW DataDoc http://hdl.handle.net/10419/80348
CCGT,2030,lifetime,30,years,IEA2010
coal,2030,lifetime,40,years,IEA2010
lignite,2030,lifetime,40,years,IEA2010
geothermal,2030,lifetime,40,years,IEA2010
biomass,2030,lifetime,30,years,ECF2010 in DIW DataDoc http://hdl.handle.net/10419/80348
oil,2030,lifetime,30,years,ECF2010 in DIW DataDoc http://hdl.handle.net/10419/80348
onwind,2030,investment,1040,EUR/kWel,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
offwind,2030,investment,1640,EUR/kWel,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
offwind-ac-station,2030,investment,250,EUR/kWel,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
offwind-ac-connection-submarine,2030,investment,2685,EUR/MW/km,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
offwind-ac-connection-underground,2030,investment,1342,EUR/MW/km,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
offwind-dc-station,2030,investment,400,EUR/kWel,Haertel 2017; assuming one onshore and one offshore node + 13% learning reduction
offwind-dc-connection-submarine,2030,investment,2000,EUR/MW/km,DTU report based on Fig 34 of https://ec.europa.eu/energy/sites/ener/files/documents/2014_nsog_report.pdf
offwind-dc-connection-underground,2030,investment,1000,EUR/MW/km,Haertel 2017; average + 13% learning reduction
solar,2030,investment,600,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
biomass,2030,investment,2209,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
geothermal,2030,investment,3392,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
coal,2030,investment,1300,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
lignite,2030,investment,1500,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
solar-rooftop,2030,investment,725,EUR/kWel,ETIP PV
solar-utility,2030,investment,425,EUR/kWel,ETIP PV
PHS,2030,investment,2000,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
hydro,2030,investment,2000,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
ror,2030,investment,3000,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
OCGT,2030,investment,400,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
nuclear,2030,investment,6000,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
CCGT,2030,investment,800,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
oil,2030,investment,400,EUR/kWel,DIW DataDoc http://hdl.handle.net/10419/80348
onwind,2030,FOM,2.450549,%/year,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
offwind,2030,FOM,2.304878,%/year,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
solar,2030,FOM,4.166667,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
solar-rooftop,2030,FOM,2,%/year,ETIP PV
solar-utility,2030,FOM,3,%/year,ETIP PV
biomass,2030,FOM,4.526935,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
geothermal,2030,FOM,2.358491,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
coal,2030,FOM,1.923076,%/year,DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
lignite,2030,FOM,2.0,%/year,DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
oil,2030,FOM,1.5,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
PHS,2030,FOM,1,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
hydro,2030,FOM,1,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
ror,2030,FOM,2,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
CCGT,2030,FOM,2.5,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
OCGT,2030,FOM,3.75,%/year,DIW DataDoc http://hdl.handle.net/10419/80348
onwind,2030,VOM,2.3,EUR/MWhel,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
offwind,2030,VOM,2.7,EUR/MWhel,DEA https://ens.dk/en/our-services/projections-and-models/technology-data
solar,2030,VOM,0.01,EUR/MWhel,RES costs made up to fix curtailment order
coal,2030,VOM,6,EUR/MWhel,DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
lignite,2030,VOM,7,EUR/MWhel,DIW DataDoc http://hdl.handle.net/10419/80348
CCGT,2030,VOM,4,EUR/MWhel,DIW DataDoc http://hdl.handle.net/10419/80348
OCGT,2030,VOM,3,EUR/MWhel,DIW DataDoc http://hdl.handle.net/10419/80348
nuclear,2030,VOM,8,EUR/MWhel,DIW DataDoc http://hdl.handle.net/10419/80348
gas,2030,fuel,21.6,EUR/MWhth,IEA2011b
uranium,2030,fuel,3,EUR/MWhth,DIW DataDoc http://hdl.handle.net/10419/80348
oil,2030,VOM,3,EUR/MWhel,DIW DataDoc http://hdl.handle.net/10419/80348
nuclear,2030,fuel,3,EUR/MWhth,IEA2011b
biomass,2030,fuel,7,EUR/MWhth,IEA2011b
coal,2030,fuel,8.4,EUR/MWhth,IEA2011b
lignite,2030,fuel,2.9,EUR/MWhth,IEA2011b
oil,2030,fuel,50,EUR/MWhth,IEA WEM2017 97USD/boe = http://www.iea.org/media/weowebsite/2017/WEM_Documentation_WEO2017.pdf
PHS,2030,efficiency,0.75,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
hydro,2030,efficiency,0.9,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
ror,2030,efficiency,0.9,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
OCGT,2030,efficiency,0.39,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
CCGT,2030,efficiency,0.5,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
biomass,2030,efficiency,0.468,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
geothermal,2030,efficiency,0.239,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
nuclear,2030,efficiency,0.337,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
gas,2030,CO2 intensity,0.187,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
coal,2030,efficiency,0.464,per unit,DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
lignite,2030,efficiency,0.447,per unit,DIW DataDoc http://hdl.handle.net/10419/80348
oil,2030,efficiency,0.393,per unit,DIW DataDoc http://hdl.handle.net/10419/80348 CT
coal,2030,CO2 intensity,0.354,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
lignite,2030,CO2 intensity,0.334,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
oil,2030,CO2 intensity,0.248,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
geothermal,2030,CO2 intensity,0.026,tCO2/MWth,https://www.eia.gov/environment/emissions/co2_vol_mass.php
electrolysis,2030,investment,350,EUR/kWel,Palzer Thesis
electrolysis,2030,FOM,4,%/year,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
electrolysis,2030,lifetime,18,years,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
electrolysis,2030,efficiency,0.8,per unit,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
fuel cell,2030,investment,339,EUR/kWel,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
fuel cell,2030,FOM,3,%/year,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
fuel cell,2030,lifetime,20,years,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
fuel cell,2030,efficiency,0.58,per unit,NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013 conservative 2020
hydrogen storage,2030,investment,11.2,USD/kWh,budischak2013
hydrogen storage,2030,lifetime,20,years,budischak2013
hydrogen underground storage,2030,investment,0.5,EUR/kWh,maximum from https://www.nrel.gov/docs/fy10osti/46719.pdf
hydrogen underground storage,2030,lifetime,40,years,http://www.acatech.de/fileadmin/user_upload/Baumstruktur_nach_Website/Acatech/root/de/Publikationen/Materialien/ESYS_Technologiesteckbrief_Energiespeicher.pdf
H2 pipeline,2030,investment,267,EUR/MW/km,Welder et al https://doi.org/10.1016/j.ijhydene.2018.12.156
H2 pipeline,2030,lifetime,40,years,Krieg2012 http://juser.fz-juelich.de/record/136392/files/Energie%26Umwelt_144.pdf
H2 pipeline,2030,FOM,5,%/year,Krieg2012 http://juser.fz-juelich.de/record/136392/files/Energie%26Umwelt_144.pdf
H2 pipeline,2030,efficiency,0.98,per unit,Krieg2012 http://juser.fz-juelich.de/record/136392/files/Energie%26Umwelt_144.pdf
methanation,2030,investment,1000,EUR/kWH2,Schaber thesis
methanation,2030,lifetime,25,years,Schaber thesis
methanation,2030,FOM,3,%/year,Schaber thesis
methanation,2030,efficiency,0.6,per unit,Palzer; Breyer for DAC
helmeth,2030,investment,1000,EUR/kW,no source
helmeth,2030,lifetime,25,years,no source
helmeth,2030,FOM,3,%/year,no source
helmeth,2030,efficiency,0.8,per unit,HELMETH press release
DAC,2030,investment,250,EUR/(tCO2/a),Fasihi/Climeworks
DAC,2030,lifetime,30,years,Fasihi
DAC,2030,FOM,4,%/year,Fasihi
battery inverter,2030,investment,411,USD/kWel,budischak2013
battery inverter,2030,lifetime,20,years,budischak2013
battery inverter,2030,efficiency,0.9,per unit charge/discharge,budischak2013; Lund and Kempton (2008) http://dx.doi.org/10.1016/j.enpol.2008.06.007
battery inverter,2030,FOM,3,%/year,budischak2013
battery storage,2030,investment,192,USD/kWh,budischak2013
battery storage,2030,lifetime,15,years,budischak2013
decentral air-sourced heat pump,2030,investment,1050,EUR/kWth,HP; Palzer thesis
decentral air-sourced heat pump,2030,lifetime,20,years,HP; Palzer thesis
decentral air-sourced heat pump,2030,FOM,3.5,%/year,Palzer thesis
decentral air-sourced heat pump,2030,efficiency,3,per unit,default for costs
decentral air-sourced heat pump,2030,discount rate,0.04,per unit,Palzer thesis
decentral ground-sourced heat pump,2030,investment,1400,EUR/kWth,Palzer thesis
decentral ground-sourced heat pump,2030,lifetime,20,years,Palzer thesis
decentral ground-sourced heat pump,2030,FOM,3.5,%/year,Palzer thesis
decentral ground-sourced heat pump,2030,efficiency,4,per unit,default for costs
decentral ground-sourced heat pump,2030,discount rate,0.04,per unit,Palzer thesis
central air-sourced heat pump,2030,investment,700,EUR/kWth,Palzer thesis
central air-sourced heat pump,2030,lifetime,20,years,Palzer thesis
central air-sourced heat pump,2030,FOM,3.5,%/year,Palzer thesis
central air-sourced heat pump,2030,efficiency,3,per unit,default for costs
retrofitting I,2030,discount rate,0.04,per unit,Palzer thesis
retrofitting I,2030,lifetime,50,years,Palzer thesis
retrofitting I,2030,FOM,1,%/year,Palzer thesis
retrofitting I,2030,investment,50,EUR/m2/fraction reduction,Palzer thesis
retrofitting II,2030,discount rate,0.04,per unit,Palzer thesis
retrofitting II,2030,lifetime,50,years,Palzer thesis
retrofitting II,2030,FOM,1,%/year,Palzer thesis
retrofitting II,2030,investment,250,EUR/m2/fraction reduction,Palzer thesis
water tank charger,2030,efficiency,0.9,per unit,HP
water tank discharger,2030,efficiency,0.9,per unit,HP
decentral water tank storage,2030,investment,860,EUR/m3,IWES Interaktion
decentral water tank storage,2030,FOM,1,%/year,HP
decentral water tank storage,2030,lifetime,20,years,HP
decentral water tank storage,2030,discount rate,0.04,per unit,Palzer thesis
central water tank storage,2030,investment,30,EUR/m3,IWES Interaktion
central water tank storage,2030,FOM,1,%/year,HP
central water tank storage,2030,lifetime,40,years,HP
decentral resistive heater,2030,investment,100,EUR/kWhth,Schaber thesis
decentral resistive heater,2030,lifetime,20,years,Schaber thesis
decentral resistive heater,2030,FOM,2,%/year,Schaber thesis
decentral resistive heater,2030,efficiency,0.9,per unit,Schaber thesis
decentral resistive heater,2030,discount rate,0.04,per unit,Palzer thesis
central resistive heater,2030,investment,100,EUR/kWhth,Schaber thesis
central resistive heater,2030,lifetime,20,years,Schaber thesis
central resistive heater,2030,FOM,2,%/year,Schaber thesis
central resistive heater,2030,efficiency,0.9,per unit,Schaber thesis
decentral gas boiler,2030,investment,175,EUR/kWhth,Palzer thesis
decentral gas boiler,2030,lifetime,20,years,Palzer thesis
decentral gas boiler,2030,FOM,2,%/year,Palzer thesis
decentral gas boiler,2030,efficiency,0.9,per unit,Palzer thesis
decentral gas boiler,2030,discount rate,0.04,per unit,Palzer thesis
central gas boiler,2030,investment,63,EUR/kWhth,Palzer thesis
central gas boiler,2030,lifetime,22,years,Palzer thesis
central gas boiler,2030,FOM,1,%/year,Palzer thesis
central gas boiler,2030,efficiency,0.9,per unit,Palzer thesis
decentral CHP,2030,lifetime,25,years,HP
decentral CHP,2030,investment,1400,EUR/kWel,HP
decentral CHP,2030,FOM,3,%/year,HP
decentral CHP,2030,discount rate,0.04,per unit,Palzer thesis
central CHP,2030,lifetime,25,years,HP
central CHP,2030,investment,650,EUR/kWel,HP
central CHP,2030,FOM,3,%/year,HP
decentral solar thermal,2030,discount rate,0.04,per unit,Palzer thesis
decentral solar thermal,2030,FOM,1.3,%/year,HP
decentral solar thermal,2030,investment,270000,EUR/1000m2,HP
decentral solar thermal,2030,lifetime,20,years,HP
central solar thermal,2030,FOM,1.4,%/year,HP
central solar thermal,2030,investment,140000,EUR/1000m2,HP
central solar thermal,2030,lifetime,20,years,HP
HVAC overhead,2030,investment,400,EUR/MW/km,Hagspiel
HVAC overhead,2030,lifetime,40,years,Hagspiel
HVAC overhead,2030,FOM,2,%/year,Hagspiel
HVDC overhead,2030,investment,400,EUR/MW/km,Hagspiel
HVDC overhead,2030,lifetime,40,years,Hagspiel
HVDC overhead,2030,FOM,2,%/year,Hagspiel
HVDC submarine,2030,investment,2000,EUR/MW/km,DTU report based on Fig 34 of https://ec.europa.eu/energy/sites/ener/files/documents/2014_nsog_report.pdf
HVDC submarine,2030,lifetime,40,years,Hagspiel
HVDC submarine,2030,FOM,2,%/year,Hagspiel
HVDC inverter pair,2030,investment,150000,EUR/MW,Hagspiel
HVDC inverter pair,2030,lifetime,40,years,Hagspiel
HVDC inverter pair,2030,FOM,2,%/year,Hagspiel
1 technology year parameter value unit source
2 solar-rooftop 2030 discount rate 0.04 per unit standard for decentral
3 onwind 2030 lifetime 30 years DEA https://ens.dk/en/our-services/projections-and-models/technology-data
4 offwind 2030 lifetime 30 years DEA https://ens.dk/en/our-services/projections-and-models/technology-data
5 solar 2030 lifetime 25 years IEA2010
6 solar-rooftop 2030 lifetime 25 years IEA2010
7 solar-utility 2030 lifetime 25 years IEA2010
8 PHS 2030 lifetime 80 years IEA2010
9 hydro 2030 lifetime 80 years IEA2010
10 ror 2030 lifetime 80 years IEA2010
11 OCGT 2030 lifetime 30 years IEA2010
12 nuclear 2030 lifetime 45 years ECF2010 in DIW DataDoc http://hdl.handle.net/10419/80348
13 CCGT 2030 lifetime 30 years IEA2010
14 coal 2030 lifetime 40 years IEA2010
15 lignite 2030 lifetime 40 years IEA2010
16 geothermal 2030 lifetime 40 years IEA2010
17 biomass 2030 lifetime 30 years ECF2010 in DIW DataDoc http://hdl.handle.net/10419/80348
18 oil 2030 lifetime 30 years ECF2010 in DIW DataDoc http://hdl.handle.net/10419/80348
19 onwind 2030 investment 1040 EUR/kWel DEA https://ens.dk/en/our-services/projections-and-models/technology-data
20 offwind 2030 investment 1640 EUR/kWel DEA https://ens.dk/en/our-services/projections-and-models/technology-data
21 offwind-ac-station 2030 investment 250 EUR/kWel DEA https://ens.dk/en/our-services/projections-and-models/technology-data
22 offwind-ac-connection-submarine 2030 investment 2685 EUR/MW/km DEA https://ens.dk/en/our-services/projections-and-models/technology-data
23 offwind-ac-connection-underground 2030 investment 1342 EUR/MW/km DEA https://ens.dk/en/our-services/projections-and-models/technology-data
24 offwind-dc-station 2030 investment 400 EUR/kWel Haertel 2017; assuming one onshore and one offshore node + 13% learning reduction
25 offwind-dc-connection-submarine 2030 investment 2000 EUR/MW/km DTU report based on Fig 34 of https://ec.europa.eu/energy/sites/ener/files/documents/2014_nsog_report.pdf
26 offwind-dc-connection-underground 2030 investment 1000 EUR/MW/km Haertel 2017; average + 13% learning reduction
27 solar 2030 investment 600 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
28 biomass 2030 investment 2209 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
29 geothermal 2030 investment 3392 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
30 coal 2030 investment 1300 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
31 lignite 2030 investment 1500 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
32 solar-rooftop 2030 investment 725 EUR/kWel ETIP PV
33 solar-utility 2030 investment 425 EUR/kWel ETIP PV
34 PHS 2030 investment 2000 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
35 hydro 2030 investment 2000 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
36 ror 2030 investment 3000 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
37 OCGT 2030 investment 400 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
38 nuclear 2030 investment 6000 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
39 CCGT 2030 investment 800 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
40 oil 2030 investment 400 EUR/kWel DIW DataDoc http://hdl.handle.net/10419/80348
41 onwind 2030 FOM 2.450549 %/year DEA https://ens.dk/en/our-services/projections-and-models/technology-data
42 offwind 2030 FOM 2.304878 %/year DEA https://ens.dk/en/our-services/projections-and-models/technology-data
43 solar 2030 FOM 4.166667 %/year DIW DataDoc http://hdl.handle.net/10419/80348
44 solar-rooftop 2030 FOM 2 %/year ETIP PV
45 solar-utility 2030 FOM 3 %/year ETIP PV
46 biomass 2030 FOM 4.526935 %/year DIW DataDoc http://hdl.handle.net/10419/80348
47 geothermal 2030 FOM 2.358491 %/year DIW DataDoc http://hdl.handle.net/10419/80348
48 coal 2030 FOM 1.923076 %/year DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
49 lignite 2030 FOM 2.0 %/year DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
50 oil 2030 FOM 1.5 %/year DIW DataDoc http://hdl.handle.net/10419/80348
51 PHS 2030 FOM 1 %/year DIW DataDoc http://hdl.handle.net/10419/80348
52 hydro 2030 FOM 1 %/year DIW DataDoc http://hdl.handle.net/10419/80348
53 ror 2030 FOM 2 %/year DIW DataDoc http://hdl.handle.net/10419/80348
54 CCGT 2030 FOM 2.5 %/year DIW DataDoc http://hdl.handle.net/10419/80348
55 OCGT 2030 FOM 3.75 %/year DIW DataDoc http://hdl.handle.net/10419/80348
56 onwind 2030 VOM 2.3 EUR/MWhel DEA https://ens.dk/en/our-services/projections-and-models/technology-data
57 offwind 2030 VOM 2.7 EUR/MWhel DEA https://ens.dk/en/our-services/projections-and-models/technology-data
58 solar 2030 VOM 0.01 EUR/MWhel RES costs made up to fix curtailment order
59 coal 2030 VOM 6 EUR/MWhel DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
60 lignite 2030 VOM 7 EUR/MWhel DIW DataDoc http://hdl.handle.net/10419/80348
61 CCGT 2030 VOM 4 EUR/MWhel DIW DataDoc http://hdl.handle.net/10419/80348
62 OCGT 2030 VOM 3 EUR/MWhel DIW DataDoc http://hdl.handle.net/10419/80348
63 nuclear 2030 VOM 8 EUR/MWhel DIW DataDoc http://hdl.handle.net/10419/80348
64 gas 2030 fuel 21.6 EUR/MWhth IEA2011b
65 uranium 2030 fuel 3 EUR/MWhth DIW DataDoc http://hdl.handle.net/10419/80348
66 oil 2030 VOM 3 EUR/MWhel DIW DataDoc http://hdl.handle.net/10419/80348
67 nuclear 2030 fuel 3 EUR/MWhth IEA2011b
68 biomass 2030 fuel 7 EUR/MWhth IEA2011b
69 coal 2030 fuel 8.4 EUR/MWhth IEA2011b
70 lignite 2030 fuel 2.9 EUR/MWhth IEA2011b
71 oil 2030 fuel 50 EUR/MWhth IEA WEM2017 97USD/boe = http://www.iea.org/media/weowebsite/2017/WEM_Documentation_WEO2017.pdf
72 PHS 2030 efficiency 0.75 per unit DIW DataDoc http://hdl.handle.net/10419/80348
73 hydro 2030 efficiency 0.9 per unit DIW DataDoc http://hdl.handle.net/10419/80348
74 ror 2030 efficiency 0.9 per unit DIW DataDoc http://hdl.handle.net/10419/80348
75 OCGT 2030 efficiency 0.39 per unit DIW DataDoc http://hdl.handle.net/10419/80348
76 CCGT 2030 efficiency 0.5 per unit DIW DataDoc http://hdl.handle.net/10419/80348
77 biomass 2030 efficiency 0.468 per unit DIW DataDoc http://hdl.handle.net/10419/80348
78 geothermal 2030 efficiency 0.239 per unit DIW DataDoc http://hdl.handle.net/10419/80348
79 nuclear 2030 efficiency 0.337 per unit DIW DataDoc http://hdl.handle.net/10419/80348
80 gas 2030 CO2 intensity 0.187 tCO2/MWth https://www.eia.gov/environment/emissions/co2_vol_mass.php
81 coal 2030 efficiency 0.464 per unit DIW DataDoc http://hdl.handle.net/10419/80348 PC (Advanced/SuperC)
82 lignite 2030 efficiency 0.447 per unit DIW DataDoc http://hdl.handle.net/10419/80348
83 oil 2030 efficiency 0.393 per unit DIW DataDoc http://hdl.handle.net/10419/80348 CT
84 coal 2030 CO2 intensity 0.354 tCO2/MWth https://www.eia.gov/environment/emissions/co2_vol_mass.php
85 lignite 2030 CO2 intensity 0.334 tCO2/MWth https://www.eia.gov/environment/emissions/co2_vol_mass.php
86 oil 2030 CO2 intensity 0.248 tCO2/MWth https://www.eia.gov/environment/emissions/co2_vol_mass.php
87 geothermal 2030 CO2 intensity 0.026 tCO2/MWth https://www.eia.gov/environment/emissions/co2_vol_mass.php
88 electrolysis 2030 investment 350 EUR/kWel Palzer Thesis
89 electrolysis 2030 FOM 4 %/year NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
90 electrolysis 2030 lifetime 18 years NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
91 electrolysis 2030 efficiency 0.8 per unit NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
92 fuel cell 2030 investment 339 EUR/kWel NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
93 fuel cell 2030 FOM 3 %/year NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
94 fuel cell 2030 lifetime 20 years NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013
95 fuel cell 2030 efficiency 0.58 per unit NREL http://www.nrel.gov/docs/fy09osti/45873.pdf; budischak2013 conservative 2020
96 hydrogen storage 2030 investment 11.2 USD/kWh budischak2013
97 hydrogen storage 2030 lifetime 20 years budischak2013
98 hydrogen underground storage 2030 investment 0.5 EUR/kWh maximum from https://www.nrel.gov/docs/fy10osti/46719.pdf
99 hydrogen underground storage 2030 lifetime 40 years http://www.acatech.de/fileadmin/user_upload/Baumstruktur_nach_Website/Acatech/root/de/Publikationen/Materialien/ESYS_Technologiesteckbrief_Energiespeicher.pdf
100 H2 pipeline 2030 investment 267 EUR/MW/km Welder et al https://doi.org/10.1016/j.ijhydene.2018.12.156
101 H2 pipeline 2030 lifetime 40 years Krieg2012 http://juser.fz-juelich.de/record/136392/files/Energie%26Umwelt_144.pdf
102 H2 pipeline 2030 FOM 5 %/year Krieg2012 http://juser.fz-juelich.de/record/136392/files/Energie%26Umwelt_144.pdf
103 H2 pipeline 2030 efficiency 0.98 per unit Krieg2012 http://juser.fz-juelich.de/record/136392/files/Energie%26Umwelt_144.pdf
104 methanation 2030 investment 1000 EUR/kWH2 Schaber thesis
105 methanation 2030 lifetime 25 years Schaber thesis
106 methanation 2030 FOM 3 %/year Schaber thesis
107 methanation 2030 efficiency 0.6 per unit Palzer; Breyer for DAC
108 helmeth 2030 investment 1000 EUR/kW no source
109 helmeth 2030 lifetime 25 years no source
110 helmeth 2030 FOM 3 %/year no source
111 helmeth 2030 efficiency 0.8 per unit HELMETH press release
112 DAC 2030 investment 250 EUR/(tCO2/a) Fasihi/Climeworks
113 DAC 2030 lifetime 30 years Fasihi
114 DAC 2030 FOM 4 %/year Fasihi
115 battery inverter 2030 investment 411 USD/kWel budischak2013
116 battery inverter 2030 lifetime 20 years budischak2013
117 battery inverter 2030 efficiency 0.9 per unit charge/discharge budischak2013; Lund and Kempton (2008) http://dx.doi.org/10.1016/j.enpol.2008.06.007
118 battery inverter 2030 FOM 3 %/year budischak2013
119 battery storage 2030 investment 192 USD/kWh budischak2013
120 battery storage 2030 lifetime 15 years budischak2013
121 decentral air-sourced heat pump 2030 investment 1050 EUR/kWth HP; Palzer thesis
122 decentral air-sourced heat pump 2030 lifetime 20 years HP; Palzer thesis
123 decentral air-sourced heat pump 2030 FOM 3.5 %/year Palzer thesis
124 decentral air-sourced heat pump 2030 efficiency 3 per unit default for costs
125 decentral air-sourced heat pump 2030 discount rate 0.04 per unit Palzer thesis
126 decentral ground-sourced heat pump 2030 investment 1400 EUR/kWth Palzer thesis
127 decentral ground-sourced heat pump 2030 lifetime 20 years Palzer thesis
128 decentral ground-sourced heat pump 2030 FOM 3.5 %/year Palzer thesis
129 decentral ground-sourced heat pump 2030 efficiency 4 per unit default for costs
130 decentral ground-sourced heat pump 2030 discount rate 0.04 per unit Palzer thesis
131 central air-sourced heat pump 2030 investment 700 EUR/kWth Palzer thesis
132 central air-sourced heat pump 2030 lifetime 20 years Palzer thesis
133 central air-sourced heat pump 2030 FOM 3.5 %/year Palzer thesis
134 central air-sourced heat pump 2030 efficiency 3 per unit default for costs
135 retrofitting I 2030 discount rate 0.04 per unit Palzer thesis
136 retrofitting I 2030 lifetime 50 years Palzer thesis
137 retrofitting I 2030 FOM 1 %/year Palzer thesis
138 retrofitting I 2030 investment 50 EUR/m2/fraction reduction Palzer thesis
139 retrofitting II 2030 discount rate 0.04 per unit Palzer thesis
140 retrofitting II 2030 lifetime 50 years Palzer thesis
141 retrofitting II 2030 FOM 1 %/year Palzer thesis
142 retrofitting II 2030 investment 250 EUR/m2/fraction reduction Palzer thesis
143 water tank charger 2030 efficiency 0.9 per unit HP
144 water tank discharger 2030 efficiency 0.9 per unit HP
145 decentral water tank storage 2030 investment 860 EUR/m3 IWES Interaktion
146 decentral water tank storage 2030 FOM 1 %/year HP
147 decentral water tank storage 2030 lifetime 20 years HP
148 decentral water tank storage 2030 discount rate 0.04 per unit Palzer thesis
149 central water tank storage 2030 investment 30 EUR/m3 IWES Interaktion
150 central water tank storage 2030 FOM 1 %/year HP
151 central water tank storage 2030 lifetime 40 years HP
152 decentral resistive heater 2030 investment 100 EUR/kWhth Schaber thesis
153 decentral resistive heater 2030 lifetime 20 years Schaber thesis
154 decentral resistive heater 2030 FOM 2 %/year Schaber thesis
155 decentral resistive heater 2030 efficiency 0.9 per unit Schaber thesis
156 decentral resistive heater 2030 discount rate 0.04 per unit Palzer thesis
157 central resistive heater 2030 investment 100 EUR/kWhth Schaber thesis
158 central resistive heater 2030 lifetime 20 years Schaber thesis
159 central resistive heater 2030 FOM 2 %/year Schaber thesis
160 central resistive heater 2030 efficiency 0.9 per unit Schaber thesis
161 decentral gas boiler 2030 investment 175 EUR/kWhth Palzer thesis
162 decentral gas boiler 2030 lifetime 20 years Palzer thesis
163 decentral gas boiler 2030 FOM 2 %/year Palzer thesis
164 decentral gas boiler 2030 efficiency 0.9 per unit Palzer thesis
165 decentral gas boiler 2030 discount rate 0.04 per unit Palzer thesis
166 central gas boiler 2030 investment 63 EUR/kWhth Palzer thesis
167 central gas boiler 2030 lifetime 22 years Palzer thesis
168 central gas boiler 2030 FOM 1 %/year Palzer thesis
169 central gas boiler 2030 efficiency 0.9 per unit Palzer thesis
170 decentral CHP 2030 lifetime 25 years HP
171 decentral CHP 2030 investment 1400 EUR/kWel HP
172 decentral CHP 2030 FOM 3 %/year HP
173 decentral CHP 2030 discount rate 0.04 per unit Palzer thesis
174 central CHP 2030 lifetime 25 years HP
175 central CHP 2030 investment 650 EUR/kWel HP
176 central CHP 2030 FOM 3 %/year HP
177 decentral solar thermal 2030 discount rate 0.04 per unit Palzer thesis
178 decentral solar thermal 2030 FOM 1.3 %/year HP
179 decentral solar thermal 2030 investment 270000 EUR/1000m2 HP
180 decentral solar thermal 2030 lifetime 20 years HP
181 central solar thermal 2030 FOM 1.4 %/year HP
182 central solar thermal 2030 investment 140000 EUR/1000m2 HP
183 central solar thermal 2030 lifetime 20 years HP
184 HVAC overhead 2030 investment 400 EUR/MW/km Hagspiel
185 HVAC overhead 2030 lifetime 40 years Hagspiel
186 HVAC overhead 2030 FOM 2 %/year Hagspiel
187 HVDC overhead 2030 investment 400 EUR/MW/km Hagspiel
188 HVDC overhead 2030 lifetime 40 years Hagspiel
189 HVDC overhead 2030 FOM 2 %/year Hagspiel
190 HVDC submarine 2030 investment 2000 EUR/MW/km DTU report based on Fig 34 of https://ec.europa.eu/energy/sites/ener/files/documents/2014_nsog_report.pdf
191 HVDC submarine 2030 lifetime 40 years Hagspiel
192 HVDC submarine 2030 FOM 2 %/year Hagspiel
193 HVDC inverter pair 2030 investment 150000 EUR/MW Hagspiel
194 HVDC inverter pair 2030 lifetime 40 years Hagspiel
195 HVDC inverter pair 2030 FOM 2 %/year Hagspiel

View File

@ -82,7 +82,7 @@ author = "Tom Brown (KIT, TUB, FIAS), Jonas Hoersch (KIT, FIAS), Fabian Hofmann
# The short X.Y version.
version = "0.8"
# The full version, including alpha/beta/rc tags.
release = "0.8.0"
release = "0.8.1"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@ -5,3 +5,9 @@ s_nom_max,MW,"float","Global upper limit for the maximum capacity of each extend
max_extension,MW,"float","Upper limit for the extended capacity of each extendable line."
length_factor,--,float,"Correction factor to account for the fact that buses are *not* connected by lines through air-line distance."
under_construction,--,"One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity}","Specifies how to handle lines which are currently under construction."
dynamic_line_rating,,,
-- activate,bool,"true or false","Whether to take dynamic line rating into account"
-- cutout,--,"Should be a folder listed in the configuration ``atlite: cutouts:`` (e.g. 'europe-2013-era5') or reference an existing folder in the directory ``cutouts``. Source module must be ERA5.","Specifies the directory where the relevant weather data ist stored."
-- correction_factor,--,"float","Factor to compensate for overestimation of wind speeds in hourly averaged wind data"
-- max_voltage_difference,deg,"float","Maximum voltage angle difference in degrees or 'false' to disable"
-- max_line_rating,--,"float","Maximum line rating relative to nominal capacity without DLR, e.g. 1.3 or 'false' to disable"

1 Unit Values Description
5 max_extension MW float Upper limit for the extended capacity of each extendable line.
6 length_factor -- float Correction factor to account for the fact that buses are *not* connected by lines through air-line distance.
7 under_construction -- One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity} Specifies how to handle lines which are currently under construction.
8 dynamic_line_rating
9 -- activate bool true or false Whether to take dynamic line rating into account
10 -- cutout -- Should be a folder listed in the configuration ``atlite: cutouts:`` (e.g. 'europe-2013-era5') or reference an existing folder in the directory ``cutouts``. Source module must be ERA5. Specifies the directory where the relevant weather data ist stored.
11 -- correction_factor -- float Factor to compensate for overestimation of wind speeds in hourly averaged wind data
12 -- max_voltage_difference deg float Maximum voltage angle difference in degrees or 'false' to disable
13 -- max_line_rating -- float Maximum line rating relative to nominal capacity without DLR, e.g. 1.3 or 'false' to disable

View File

@ -78,10 +78,10 @@ them:
.. note::
You can find showcases of the model's capabilities in the Supplementary Materials of the
preprint `Benefits of a Hydrogen Network in Europe
<https://arxiv.org/abs/2207.05816>`_, the Supplementary Materials of the `paper in Joule with a
Joule paper `The potential role of a hydrogen network in Europe
<https://doi.org/10.1016/j.joule.2023.06.016>`_, the Supplementary Materials of another `paper in Joule with a
description of the industry sector
<https://arxiv.org/abs/2109.09563>`_, or in `a 2021 presentation
<https://doi.org/10.1016/j.joule.2022.04.016>`_, or in `a 2021 presentation
at EMP-E <https://nworbmot.org/energy/brown-empe.pdf>`_.
The sector-coupled extension of PyPSA-Eur was
initially described in the paper `Synergies of sector coupling and transmission
@ -179,10 +179,13 @@ For sector-coupling studies: ::
@misc{PyPSAEurSec,
author = "Fabian Neumann and Elisabeth Zeyen and Marta Victoria and Tom Brown",
title = "The Potential Role of a Hydrogen Network in Europe",
year = "2022",
title = "The potential role of a hydrogen network in Europe",
journal "Joule",
volume = "7",
pages = "1--25"
year = "2023",
eprint = "2207.05816",
url = "https://arxiv.org/abs/2207.05816",
doi = "10.1016/j.joule.2022.04.016",
}
For sector-coupling studies with pathway optimisation: ::

View File

@ -10,43 +10,129 @@ Release Notes
Upcoming Release
================
* ``param:`` section in rule definition are added to track changed settings in ``config.yaml``. The goal is to automatically re-execute rules whose parameters have changed. See `Non-file parameters for rules <https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules>`_ in the snakemake documentation.
* Updated Global Energy Monitor LNG terminal data to March 2023 version.
* **Important:** The configuration files are now located in the ``config`` directory. This counts for ``config.default.yaml``, ``config.yaml`` as well as the test configuration files which are now located in ``config/test``. Config files that are still in the root directory will be ignored.
PyPSA-Eur 0.8.1 (27th July 2023)
================================
* Bugfix: Correct typo in the CPLEX solver configuration in ``config.default.yaml``.
**New Features**
* Bugfix: Error in ``add_electricity`` where carriers were added multiple times to the network, resulting in a non-unique carriers error.
* Add option to consider dynamic line rating based on wind speeds and
temperature according to `Glaum and Hofmann (2022)
<https://arxiv.org/abs/2208.04716>`_. See configuration section ``lines:
dynamic_line_rating:`` for more details. (https://github.com/PyPSA/pypsa-eur/pull/675)
* Renamed script file from PyPSA-EUR ``build_load_data`` to ``build_electricity_demand`` and ``retrieve_load_data`` to ``retrieve_electricity_demand``.
* Fix docs readthedocs built
* Add option to include a piecewise linear approximation of transmission losses,
e.g. by setting ``solving: options: transmission_losses: 2`` for an
approximation with two tangents. (https://github.com/PyPSA/pypsa-eur/pull/664)
* Add plain hydrogen turbine as additional re-electrification option besides
hydrogen fuel cell. Add switches for both re-electrification options under
``sector: hydrogen_turbine:`` and ``sector: hydrogen_fuel_cell:``.
* A new function named ``sanitize_carrier`` ensures that all unique carrier names are present in the network's carriers attribute, and adds nice names and colors for each carrier according to the provided configuration dictionary.
* Additional tech_color are added to include previously unlisted carriers.
* Remove ``vresutils`` dependency.
(https://github.com/PyPSA/pypsa-eur/pull/647)
* Added configuration option ``lines: max_extension:`` and ``links:
max_extension:``` to control the maximum capacity addition per line or link in
MW.
MW. (https://github.com/PyPSA/pypsa-eur/pull/665)
* Add option to include a piecewise linear approximation of transmission losses,
e.g. by setting ``solving: options: transmission_losses: 2`` for an
approximation with two tangents.
* A ``param:`` section in the snakemake rule definitions was added to track
changed settings in ``config.yaml``. The goal is to automatically re-execute
rules where parameters have changed. See `Non-file parameters for rules
<https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#non-file-parameters-for-rules>`_
in the snakemake documentation. (https://github.com/PyPSA/pypsa-eur/pull/663)
* A new function named ``sanitize_carrier`` ensures that all unique carrier
names are present in the network's carriers attribute, and adds nice names and
colors for each carrier according to the provided configuration dictionary.
(https://github.com/PyPSA/pypsa-eur/pull/653,
https://github.com/PyPSA/pypsa-eur/pull/690)
* The configuration settings have been documented in more detail.
(https://github.com/PyPSA/pypsa-eur/pull/685)
**Breaking Changes**
* The configuration files are now located in the ``config`` directory. This
includes the ``config.default.yaml``, ``config.yaml`` as well as the test
configuration files which are now located in the ``config/test`` directory.
Config files that are still in the root directory will be ignored.
(https://github.com/PyPSA/pypsa-eur/pull/640)
* Renamed script and rule name from ``build_load_data`` to
``build_electricity_demand`` and ``retrieve_load_data`` to
``retrieve_electricity_demand``. (https://github.com/PyPSA/pypsa-eur/pull/642,
https://github.com/PyPSA/pypsa-eur/pull/652)
* Updated to new spatial clustering module introduced in PyPSA v0.25.
(https://github.com/PyPSA/pypsa-eur/pull/696)
**Changes**
* Handling networks with links with multiple inputs/outputs no longer requires
to override component attributes.
(https://github.com/PyPSA/pypsa-eur/pull/695)
* Added configuration option ``enable: retrieve:`` to control whether data
retrieval rules from snakemake are enabled or not. Th default setting ``auto``
will automatically detect and enable/disable the rules based on internet connectivity.
will automatically detect and enable/disable the rules based on internet
connectivity. (https://github.com/PyPSA/pypsa-eur/pull/694)
* Update to ``technology-data`` v0.6.0.
(https://github.com/PyPSA/pypsa-eur/pull/704)
* Handle data bundle extraction paths via ``snakemake.output``.
* Additional technologies are added to ``tech_color`` in the configuration files
to include previously unlisted carriers.
* Doc: Added note that Windows is only tested in CI with WSL.
(https://github.com/PyPSA/pypsa-eur/issues/697)
* Doc: Add support section. (https://github.com/PyPSA/pypsa-eur/pull/656)
* Open ``rasterio`` files with ``rioxarray``.
(https://github.com/PyPSA/pypsa-eur/pull/474)
* Migrate CI to ``micromamba``. (https://github.com/PyPSA/pypsa-eur/pull/700)
**Bugs and Compatibility**
* The new minimum PyPSA version is v0.25.1.
* Removed ``vresutils`` dependency.
(https://github.com/PyPSA/pypsa-eur/pull/662)
* Adapt to new ``powerplantmatching`` version.
(https://github.com/PyPSA/pypsa-eur/pull/687,
https://github.com/PyPSA/pypsa-eur/pull/701)
* Bugfix: Correct typo in the CPLEX solver configuration in
``config.default.yaml``. (https://github.com/PyPSA/pypsa-eur/pull/630)
* Bugfix: Error in ``add_electricity`` where carriers were added multiple times
to the network, resulting in a non-unique carriers error.
* Bugfix of optional reserve constraint.
(https://github.com/PyPSA/pypsa-eur/pull/645)
* Fix broken equity constraints logic.
(https://github.com/PyPSA/pypsa-eur/pull/679)
* Fix addition of load shedding generators.
(https://github.com/PyPSA/pypsa-eur/pull/649)
* Fix automatic building of documentation on readthedocs.org.
(https://github.com/PyPSA/pypsa-eur/pull/658)
* Bugfix: Update network clustering to avoid adding deleted links in clustered
network. (https://github.com/PyPSA/pypsa-eur/pull/678)
* Address ``geopandas`` deprecations.
(https://github.com/PyPSA/pypsa-eur/pull/678)
* Fix bug with underground hydrogen storage creation, where for some small model
regions no cavern storage is available.
(https://github.com/PyPSA/pypsa-eur/pull/672)
PyPSA-Eur 0.8.0 (18th March 2023)

View File

@ -12,74 +12,93 @@ dependencies:
- _libgcc_mutex=0.1
- _openmp_mutex=4.5
- affine=2.4.0
- alsa-lib=1.2.8
- alsa-lib=1.2.9
- ampl-mp=3.1.0
- amply=0.1.5
- amply=0.1.6
- anyio=3.7.1
- appdirs=1.4.4
- argon2-cffi=21.3.0
- argon2-cffi-bindings=21.2.0
- asttokens=2.2.1
- atlite=0.2.10
- async-lru=2.0.3
- atk-1.0=2.38.0
- atlite=0.2.11
- attr=2.5.1
- attrs=22.2.0
- attrs=23.1.0
- aws-c-auth=0.7.0
- aws-c-cal=0.6.0
- aws-c-common=0.8.23
- aws-c-compression=0.2.17
- aws-c-event-stream=0.3.1
- aws-c-http=0.7.11
- aws-c-io=0.13.28
- aws-c-mqtt=0.8.14
- aws-c-s3=0.3.13
- aws-c-sdkutils=0.1.11
- aws-checksums=0.1.16
- aws-crt-cpp=0.20.3
- aws-sdk-cpp=1.10.57
- babel=2.12.1
- backcall=0.2.0
- backports=1.0
- backports.functools_lru_cache=1.6.4
- beautifulsoup4=4.11.2
- blosc=1.21.3
- bokeh=2.4.3
- backports.functools_lru_cache=1.6.5
- beautifulsoup4=4.12.2
- bleach=6.0.0
- blosc=1.21.4
- bokeh=3.2.1
- boost-cpp=1.78.0
- bottleneck=1.3.6
- bottleneck=1.3.7
- branca=0.6.0
- brotli=1.0.9
- brotli-bin=1.0.9
- brotlipy=0.7.0
- brotli-python=1.0.9
- bzip2=1.0.8
- c-ares=1.18.1
- ca-certificates=2022.12.7
- c-ares=1.19.1
- c-blosc2=2.10.0
- ca-certificates=2023.7.22
- cairo=1.16.0
- cartopy=0.21.1
- cdsapi=0.5.1
- certifi=2022.12.7
- cdsapi=0.6.1
- certifi=2023.7.22
- cffi=1.15.1
- cfitsio=4.2.0
- cftime=1.6.2
- charset-normalizer=2.1.1
- click=8.1.3
- charset-normalizer=3.2.0
- click=8.1.6
- click-plugins=1.1.1
- cligj=0.7.2
- cloudpickle=2.2.1
- coin-or-cbc=2.10.8
- coin-or-cgl=0.60.6
- coin-or-clp=1.17.7
- coin-or-osi=0.108.7
- coin-or-utils=2.11.6
- coincbc=2.10.8
- colorama=0.4.6
- configargparse=1.5.3
- comm=0.1.3
- configargparse=1.7
- connection_pool=0.0.3
- country_converter=0.8.0
- cryptography=39.0.1
- curl=7.88.0
- contourpy=1.1.0
- country_converter=1.0.0
- curl=8.2.0
- cycler=0.11.0
- cytoolz=0.12.0
- dask=2023.2.0
- dask-core=2023.2.0
- cytoolz=0.12.2
- dask=2023.7.1
- dask-core=2023.7.1
- datrie=0.8.2
- dbus=1.13.6
- debugpy=1.6.7
- decorator=5.1.1
- defusedxml=0.7.1
- deprecation=2.1.0
- descartes=1.1.0
- distributed=2023.2.0
- distributed=2023.7.1
- distro=1.8.0
- docutils=0.19
- dpath=2.1.4
- entsoe-py=0.5.8
- docutils=0.20.1
- dpath=2.1.6
- entrypoints=0.4
- entsoe-py=0.5.10
- et_xmlfile=1.1.0
- exceptiongroup=1.1.0
- exceptiongroup=1.1.2
- executing=1.2.0
- expat=2.5.0
- fftw=3.3.10
- filelock=3.9.0
- fiona=1.9.1
- filelock=3.12.2
- fiona=1.9.4
- flit-core=3.9.0
- folium=0.14.0
- font-ttf-dejavu-sans-mono=2.37
- font-ttf-inconsolata=3.000
@ -88,293 +107,366 @@ dependencies:
- fontconfig=2.14.2
- fonts-conda-ecosystem=1
- fonts-conda-forge=1
- fonttools=4.38.0
- fonttools=4.41.1
- freetype=2.12.1
- freexl=1.0.6
- fsspec=2023.1.0
- gdal=3.6.2
- fribidi=1.0.10
- fsspec=2023.6.0
- gdal=3.7.0
- gdk-pixbuf=2.42.10
- geographiclib=1.52
- geojson-rewind=1.0.2
- geopandas=0.12.2
- geopandas-base=0.12.2
- geopandas=0.13.2
- geopandas-base=0.13.2
- geopy=2.3.0
- geos=3.11.1
- geos=3.11.2
- geotiff=1.7.1
- gettext=0.21.1
- gflags=2.2.2
- giflib=5.2.1
- gitdb=4.0.10
- gitpython=3.1.30
- glib=2.74.1
- glib-tools=2.74.1
- gitpython=3.1.32
- glib=2.76.4
- glib-tools=2.76.4
- glog=0.6.0
- gmp=6.2.1
- graphite2=1.3.13
- gst-plugins-base=1.22.0
- gstreamer=1.22.0
- gstreamer-orc=0.4.33
- harfbuzz=6.0.0
- graphviz=8.1.0
- gst-plugins-base=1.22.5
- gstreamer=1.22.5
- gtk2=2.24.33
- gts=0.7.6
- harfbuzz=7.3.0
- hdf4=4.2.15
- hdf5=1.12.2
- heapdict=1.0.1
- hdf5=1.14.1
- humanfriendly=10.0
- icu=70.1
- icu=72.1
- idna=3.4
- importlib-metadata=6.0.0
- importlib_resources=5.10.2
- importlib-metadata=6.8.0
- importlib_metadata=6.8.0
- importlib_resources=6.0.0
- iniconfig=2.0.0
- ipopt=3.14.11
- ipython=8.10.0
- jack=1.9.22
- ipopt=3.14.12
- ipykernel=6.24.0
- ipython=8.14.0
- ipython_genutils=0.2.0
- ipywidgets=8.0.7
- jedi=0.18.2
- jinja2=3.1.2
- joblib=1.2.0
- jpeg=9e
- joblib=1.3.0
- json-c=0.16
- jsonschema=4.17.3
- jupyter_core=5.2.0
- kealib=1.5.0
- json5=0.9.14
- jsonschema=4.18.4
- jsonschema-specifications=2023.7.1
- jupyter=1.0.0
- jupyter-lsp=2.2.0
- jupyter_client=8.3.0
- jupyter_console=6.6.3
- jupyter_core=5.3.1
- jupyter_events=0.6.3
- jupyter_server=2.7.0
- jupyter_server_terminals=0.4.4
- jupyterlab=4.0.3
- jupyterlab_pygments=0.2.2
- jupyterlab_server=2.24.0
- jupyterlab_widgets=3.0.8
- kealib=1.5.1
- keyutils=1.6.1
- kiwisolver=1.4.4
- krb5=1.20.1
- krb5=1.21.1
- lame=3.100
- lcms2=2.14
- lcms2=2.15
- ld_impl_linux-64=2.40
- lerc=4.0.0
- libabseil=20230125.3
- libaec=1.0.6
- libarchive=3.6.2
- libarrow=12.0.1
- libblas=3.9.0
- libbrotlicommon=1.0.9
- libbrotlidec=1.0.9
- libbrotlienc=1.0.9
- libcap=2.66
- libcap=2.67
- libcblas=3.9.0
- libclang=15.0.7
- libclang13=15.0.7
- libcrc32c=1.1.2
- libcups=2.3.3
- libcurl=7.88.0
- libdb=6.2.32
- libdeflate=1.17
- libcurl=8.2.0
- libdeflate=1.18
- libedit=3.1.20191231
- libev=4.33
- libevent=2.1.10
- libevent=2.1.12
- libexpat=2.5.0
- libffi=3.4.2
- libflac=1.4.2
- libgcc-ng=12.2.0
- libflac=1.4.3
- libgcc-ng=13.1.0
- libgcrypt=1.10.1
- libgdal=3.6.2
- libgfortran-ng=12.2.0
- libgfortran5=12.2.0
- libglib=2.74.1
- libgomp=12.2.0
- libgpg-error=1.46
- libgd=2.3.3
- libgdal=3.7.0
- libgfortran-ng=13.1.0
- libgfortran5=13.1.0
- libglib=2.76.4
- libgomp=13.1.0
- libgoogle-cloud=2.12.0
- libgpg-error=1.47
- libgrpc=1.56.2
- libiconv=1.17
- libjpeg-turbo=2.1.5.1
- libkml=1.3.0
- liblapack=3.9.0
- liblapacke=3.9.0
- libllvm15=15.0.7
- libnetcdf=4.8.1
- libnghttp2=1.51.0
- libnetcdf=4.9.2
- libnghttp2=1.52.0
- libnsl=2.0.0
- libnuma=2.0.16
- libogg=1.3.4
- libopenblas=0.3.21
- libopenblas=0.3.23
- libopus=1.3.1
- libpng=1.6.39
- libpq=15.2
- libpq=15.3
- libprotobuf=4.23.3
- librsvg=2.56.1
- librttopo=1.1.0
- libsndfile=1.2.0
- libsodium=1.0.18
- libspatialindex=1.9.3
- libspatialite=5.0.1
- libsqlite=3.40.0
- libssh2=1.10.0
- libstdcxx-ng=12.2.0
- libsystemd0=252
- libtiff=4.5.0
- libsqlite=3.42.0
- libssh2=1.11.0
- libstdcxx-ng=13.1.0
- libsystemd0=253
- libthrift=0.18.1
- libtiff=4.5.1
- libtool=2.4.7
- libudev1=252
- libuuid=2.32.1
- libutf8proc=2.8.0
- libuuid=2.38.1
- libvorbis=1.3.7
- libwebp-base=1.2.4
- libxcb=1.13
- libwebp=1.3.1
- libwebp-base=1.3.1
- libxcb=1.15
- libxkbcommon=1.5.0
- libxml2=2.10.3
- libxml2=2.11.4
- libxslt=1.1.37
- libzip=1.9.2
- libzlib=1.2.13
- linopy=0.1.3
- locket=1.0.0
- lxml=4.9.2
- lxml=4.9.3
- lz4=4.3.2
- lz4-c=1.9.4
- lzo=2.10
- mapclassify=2.5.0
- markupsafe=2.1.2
- markupsafe=2.1.3
- matplotlib=3.5.3
- matplotlib-base=3.5.3
- matplotlib-inline=0.1.6
- memory_profiler=0.61.0
- metis=5.1.0
- mpg123=1.31.2
- msgpack-python=1.0.4
- metis=5.1.1
- mistune=3.0.0
- mpg123=1.31.3
- msgpack-python=1.0.5
- mumps-include=5.2.1
- mumps-seq=5.2.1
- munch=2.5.0
- munch=4.0.0
- munkres=1.1.4
- mysql-common=8.0.32
- mysql-libs=8.0.32
- nbformat=5.7.3
- ncurses=6.3
- netcdf4=1.6.2
- networkx=3.0
- mysql-common=8.0.33
- mysql-libs=8.0.33
- nbclient=0.8.0
- nbconvert=7.7.2
- nbconvert-core=7.7.2
- nbconvert-pandoc=7.7.2
- nbformat=5.9.1
- ncurses=6.4
- nest-asyncio=1.5.6
- netcdf4=1.6.4
- networkx=3.1
- nomkl=1.0
- notebook=7.0.0
- notebook-shim=0.2.3
- nspr=4.35
- nss=3.88
- numexpr=2.8.3
- numpy=1.24
- nss=3.89
- numexpr=2.8.4
- numpy=1.25.1
- openjdk=17.0.3
- openjpeg=2.5.0
- openpyxl=3.1.0
- openssl=3.0.8
- packaging=23.0
- pandas=1.5.3
- openpyxl=3.1.2
- openssl=3.1.1
- orc=1.9.0
- overrides=7.3.1
- packaging=23.1
- pandas=2.0.3
- pandoc=3.1.3
- pandocfilters=1.5.0
- pango=1.50.14
- parso=0.8.3
- partd=1.3.0
- partd=1.4.0
- patsy=0.5.3
- pcre2=10.40
- pexpect=4.8.0
- pickleshare=0.7.5
- pillow=9.4.0
- pip=23.0
- pillow=10.0.0
- pip=23.2.1
- pixman=0.40.0
- pkgutil-resolve-name=1.3.10
- plac=1.3.5
- platformdirs=3.0.0
- pluggy=1.0.0
- platformdirs=3.9.1
- pluggy=1.2.0
- ply=3.11
- pooch=1.6.0
- poppler=22.12.0
- pooch=1.7.0
- poppler=23.05.0
- poppler-data=0.4.12
- postgresql=15.2
- powerplantmatching=0.5.6
- postgresql=15.3
- powerplantmatching=0.5.7
- progressbar2=4.2.0
- proj=9.1.0
- prompt-toolkit=3.0.36
- psutil=5.9.4
- proj=9.2.1
- prometheus_client=0.17.1
- prompt-toolkit=3.0.39
- prompt_toolkit=3.0.39
- psutil=5.9.5
- pthread-stubs=0.4
- ptyprocess=0.7.0
- pulp=2.7.0
- pulseaudio=16.1
- pulseaudio-client=16.1
- pure_eval=0.2.2
- py-cpuinfo=9.0.0
- pyarrow=12.0.1
- pycountry=22.3.5
- pycparser=2.21
- pygments=2.14.0
- pyomo=6.4.4
- pyopenssl=23.0.0
- pyparsing=3.0.9
- pyproj=3.4.1
- pypsa=0.22.1
- pygments=2.15.1
- pyomo=6.6.1
- pyparsing=3.1.0
- pyproj=3.6.0
- pyqt=5.15.7
- pyqt5-sip=12.11.0
- pyrsistent=0.19.3
- pyshp=2.3.1
- pysocks=1.7.1
- pytables=3.7.0
- pytest=7.2.1
- python=3.10.9
- pytables=3.8.0
- pytest=7.4.0
- python=3.10.12
- python-dateutil=2.8.2
- python-fastjsonschema=2.16.2
- python-utils=3.5.2
- python-fastjsonschema=2.18.0
- python-json-logger=2.0.7
- python-tzdata=2023.3
- python-utils=3.7.0
- python_abi=3.10
- pytz=2022.7.1
- pytz=2023.3
- pyxlsb=1.0.10
- pyyaml=6.0
- pyzmq=25.1.0
- qt-main=5.15.8
- rasterio=1.3.4
- readline=8.1.2
- requests=2.28.1
- retry=0.9.2
- rich=12.5.1
- rioxarray=0.13.3
- rtree=1.0.0
- s2n=1.0.10
- scikit-learn=1.1.1
- scipy=1.8.1
- qtconsole=5.4.3
- qtconsole-base=5.4.3
- qtpy=2.3.1
- rasterio=1.3.8
- rdma-core=28.9
- re2=2023.03.02
- readline=8.2
- referencing=0.30.0
- requests=2.31.0
- reretry=0.11.8
- rfc3339-validator=0.1.4
- rfc3986-validator=0.1.1
- rioxarray=0.14.1
- rpds-py=0.9.2
- rtree=1.0.1
- s2n=1.3.46
- scikit-learn=1.3.0
- scipy=1.11.1
- scotch=6.0.9
- seaborn=0.12.2
- seaborn-base=0.12.2
- setuptools=67.3.2
- send2trash=1.8.2
- setuptools=68.0.0
- setuptools-scm=7.1.0
- setuptools_scm=7.1.0
- shapely=2.0.1
- sip=6.7.7
- sip=6.7.10
- six=1.16.0
- smart_open=6.3.0
- smmap=3.0.5
- snakemake-minimal=7.22.0
- snappy=1.1.9
- snakemake-minimal=7.30.2
- snappy=1.1.10
- sniffio=1.3.0
- snuggs=1.4.7
- sortedcontainers=2.4.0
- soupsieve=2.3.2.post1
- sqlite=3.40.0
- sqlite=3.42.0
- stack_data=0.6.2
- statsmodels=0.13.5
- statsmodels=0.14.0
- stopit=1.1.2
- tabula-py=2.6.0
- tabulate=0.9.0
- tblib=1.7.0
- threadpoolctl=3.1.0
- terminado=0.17.1
- threadpoolctl=3.2.0
- throttler=1.2.1
- tiledb=2.13.2
- tinycss2=1.2.1
- tk=8.6.12
- toml=0.10.2
- tomli=2.0.1
- toolz=0.12.0
- toposort=1.9
- tornado=6.2
- tqdm=4.64.1
- toposort=1.10
- tornado=6.3.2
- tqdm=4.65.0
- traitlets=5.9.0
- typing-extensions=4.4.0
- typing_extensions=4.4.0
- tzcode=2022g
- tzdata=2022g
- typing-extensions=4.7.1
- typing_extensions=4.7.1
- typing_utils=0.1.0
- tzcode=2023c
- tzdata=2023c
- ucx=1.14.1
- unicodedata2=15.0.0
- unidecode=1.3.6
- unixodbc=2.3.10
- urllib3=1.26.14
- urllib3=2.0.4
- wcwidth=0.2.6
- wheel=0.38.4
- wrapt=1.14.1
- xarray=2023.2.0
- webencodings=0.5.1
- websocket-client=1.6.1
- wheel=0.41.0
- widgetsnbextension=4.0.8
- wrapt=1.15.0
- xarray=2023.7.0
- xcb-util=0.4.0
- xcb-util-image=0.4.0
- xcb-util-keysyms=0.4.0
- xcb-util-renderutil=0.3.9
- xcb-util-wm=0.4.1
- xerces-c=3.2.4
- xkeyboard-config=2.39
- xlrd=2.0.1
- xorg-fixesproto=5.0
- xorg-inputproto=2.3.2
- xorg-kbproto=1.0.7
- xorg-libice=1.0.10
- xorg-libsm=1.2.3
- xorg-libx11=1.7.2
- xorg-libxau=1.0.9
- xorg-libice=1.1.1
- xorg-libsm=1.2.4
- xorg-libx11=1.8.6
- xorg-libxau=1.0.11
- xorg-libxdmcp=1.1.3
- xorg-libxext=1.3.4
- xorg-libxfixes=5.0.3
- xorg-libxi=1.7.10
- xorg-libxrender=0.9.10
- xorg-libxrender=0.9.11
- xorg-libxtst=1.2.3
- xorg-recordproto=1.14.2
- xorg-renderproto=0.11.1
- xorg-xextproto=7.3.0
- xorg-xf86vidmodeproto=2.3.1
- xorg-xproto=7.0.31
- xyzservices=2022.9.0
- xyzservices=2023.7.0
- xz=5.2.6
- yaml=0.2.5
- yte=1.5.1
- zict=2.2.0
- zipp=3.13.0
- zeromq=4.3.4
- zict=3.0.0
- zipp=3.16.2
- zlib=1.2.13
- zlib-ng=2.0.7
- zstd=1.5.2
- pip:
- countrycode==0.2
- highspy==1.5.0.dev0
- pybind11==2.10.3
- tsam==2.2.2
- gurobipy==10.0.2
- linopy==0.2.2
- pypsa==0.25.1
- tsam==2.3.0
- validators==0.20.0

View File

@ -53,6 +53,7 @@ dependencies:
- descartes
- rasterio!=1.2.10
- pip:
- tsam>=1.1.0
- git+https://github.com/pypsa/pypsa.git
- pypsa>=0.25.1

View File

@ -295,6 +295,30 @@ rule build_hydro_profile:
"../scripts/build_hydro_profile.py"
if config["lines"]["dynamic_line_rating"]["activate"]:
rule build_line_rating:
input:
base_network=RESOURCES + "networks/base.nc",
cutout="cutouts/"
+ CDIR
+ config["lines"]["dynamic_line_rating"]["cutout"]
+ ".nc",
output:
output=RESOURCES + "networks/line_rating.nc",
log:
LOGS + "build_line_rating.log",
benchmark:
BENCHMARKS + "build_line_rating"
threads: ATLITE_NPROCESSES
resources:
mem_mb=ATLITE_NPROCESSES * 1000,
conda:
"../envs/environment.yaml"
script:
"../scripts/build_line_rating.py"
rule add_electricity:
params:
length_factor=config["lines"]["length_factor"],
@ -317,6 +341,9 @@ rule add_electricity:
if str(fn).startswith("data/")
},
base_network=RESOURCES + "networks/base.nc",
line_rating=RESOURCES + "networks/line_rating.nc"
if config["lines"]["dynamic_line_rating"]["activate"]
else RESOURCES + "networks/base.nc",
tech_costs=COSTS,
regions=RESOURCES + "regions_onshore.geojson",
powerplants=RESOURCES + "powerplants.csv",

View File

@ -86,7 +86,7 @@ if config["sector"]["gas_network"] or config["sector"]["H2_retrofit"]:
rule build_gas_input_locations:
input:
lng=HTTP.remote(
"https://globalenergymonitor.org/wp-content/uploads/2022/09/Europe-Gas-Tracker-August-2022.xlsx",
"https://globalenergymonitor.org/wp-content/uploads/2023/07/Europe-Gas-Tracker-2023-03-v3.xlsx",
keep_local=True,
),
entry="data/gas_network/scigrid-gas/data/IGGIELGN_BorderPoints.geojson",

View File

@ -782,6 +782,30 @@ def estimate_renewable_capacities(n, year, tech_map, expansion_limit, countries)
)
def attach_line_rating(
n, rating, s_max_pu, correction_factor, max_voltage_difference, max_line_rating
):
# TODO: Only considers overhead lines
n.lines_t.s_max_pu = (rating / n.lines.s_nom[rating.columns]) * correction_factor
if max_voltage_difference:
x_pu = (
n.lines.type.map(n.line_types["x_per_length"])
* n.lines.length
/ (n.lines.v_nom**2)
)
# need to clip here as cap values might be below 1
# -> would mean the line cannot be operated at actual given pessimistic ampacity
s_max_pu_cap = (
np.deg2rad(max_voltage_difference) / (x_pu * n.lines.s_nom)
).clip(lower=1)
n.lines_t.s_max_pu = n.lines_t.s_max_pu.clip(
lower=1, upper=s_max_pu_cap, axis=1
)
if max_line_rating:
n.lines_t.s_max_pu = n.lines_t.s_max_pu.clip(upper=max_line_rating)
n.lines_t.s_max_pu *= s_max_pu
if __name__ == "__main__":
if "snakemake" not in globals():
from _helpers import mock_snakemake
@ -881,6 +905,23 @@ if __name__ == "__main__":
update_p_nom_max(n)
line_rating_config = snakemake.config["lines"]["dynamic_line_rating"]
if line_rating_config["activate"]:
rating = xr.open_dataarray(snakemake.input.line_rating).to_pandas().transpose()
s_max_pu = snakemake.config["lines"]["s_max_pu"]
correction_factor = line_rating_config["correction_factor"]
max_voltage_difference = line_rating_config["max_voltage_difference"]
max_line_rating = line_rating_config["max_line_rating"]
attach_line_rating(
n,
rating,
s_max_pu,
correction_factor,
max_voltage_difference,
max_line_rating,
)
sanitize_carriers(n, snakemake.config)
n.meta = snakemake.config

155
scripts/build_line_rating.py Executable file
View File

@ -0,0 +1,155 @@
# -*- coding: utf-8 -*-
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
#
# SPDX-License-Identifier: MIT
# coding: utf-8
"""
Adds dynamic line rating timeseries to the base network.
Relevant Settings
-----------------
.. code:: yaml
lines:
cutout:
line_rating:
.. seealso::
Documentation of the configuration file ``config.yaml`
Inputs
------
- ``data/cutouts``:
- ``networks/base.nc``: confer :ref:`base`
Outputs
-------
- ``resources/line_rating.nc``
Description
-----------
The rule :mod:`build_line_rating` calculates the line rating for transmission lines.
The line rating provides the maximal capacity of a transmission line considering the heat exchange with the environment.
The following heat gains and losses are considered:
- heat gain through resistive losses
- heat gain through solar radiation
- heat loss through radiation of the trasnmission line
- heat loss through forced convection with wind
- heat loss through natural convection
With a heat balance considering the maximum temperature threshold of the transmission line,
the maximal possible capacity factor "s_max_pu" for each transmission line at each time step is calculated.
"""
import logging
import re
import atlite
import geopandas as gpd
import numpy as np
import pandas as pd
import pypsa
import xarray as xr
from _helpers import configure_logging
from shapely.geometry import LineString as Line
from shapely.geometry import Point
def calculate_resistance(T, R_ref, T_ref=293, alpha=0.00403):
"""
Calculates the resistance at other temperatures than the reference
temperature.
Parameters
----------
T : Temperature at which resistance is calculated in [°C] or [K]
R_ref : Resistance at reference temperature in [Ohm] or [Ohm/Per Length Unit]
T_ref : Reference temperature in [°C] or [K]
alpha: Temperature coefficient in [1/K]
Defaults are:
* T_ref : 20 °C
* alpha : 0.00403 1/K
Returns
-------
Resistance of at given temperature.
"""
R = R_ref * (1 + alpha * (T - T_ref))
return R
def calculate_line_rating(n, cutout):
"""
Calculates the maximal allowed power flow in each line for each time step
considering the maximal temperature.
Parameters
----------
n : pypsa.Network object containing information on grid
Returns
-------
xarray DataArray object with maximal power.
"""
relevant_lines = n.lines[(n.lines["underground"] == False)]
buses = relevant_lines[["bus0", "bus1"]].values
x = n.buses.x
y = n.buses.y
shapes = [Line([Point(x[b0], y[b0]), Point(x[b1], y[b1])]) for (b0, b1) in buses]
shapes = gpd.GeoSeries(shapes, index=relevant_lines.index)
if relevant_lines.r_pu.eq(0).all():
# Overwrite standard line resistance with line resistance obtained from line type
r_per_length = n.line_types["r_per_length"]
R = (
relevant_lines.join(r_per_length, on=["type"])["r_per_length"] / 1000
) # in meters
# If line type with bundles is given retrieve number of conductors per bundle
relevant_lines["n_bundle"] = (
relevant_lines["type"]
.where(relevant_lines["type"].str.contains("bundle"))
.dropna()
.apply(lambda x: int(re.findall(r"(\d+)-bundle", x)[0]))
)
# Set default number of bundles per line
relevant_lines["n_bundle"].fillna(1, inplace=True)
R *= relevant_lines["n_bundle"]
R = calculate_resistance(T=353, R_ref=R)
Imax = cutout.line_rating(shapes, R, D=0.0218, Ts=353, epsilon=0.8, alpha=0.8)
line_factor = relevant_lines.eval("v_nom * n_bundle * num_parallel") / 1e3 # in mW
da = xr.DataArray(
data=np.sqrt(3) * Imax * line_factor.values.reshape(-1, 1),
attrs=dict(
description="Maximal possible power in MW for given line considering line rating"
),
)
return da
if __name__ == "__main__":
if "snakemake" not in globals():
from _helpers import mock_snakemake
snakemake = mock_snakemake(
"build_line_rating",
network="elec",
simpl="",
clusters="5",
ll="v1.0",
opts="Co2L-4H",
)
configure_logging(snakemake)
n = pypsa.Network(snakemake.input.base_network)
cutout = atlite.Cutout(snakemake.input.cutout)
da = calculate_line_rating(n, cutout)
da.to_netcdf(snakemake.output[0])

View File

@ -596,6 +596,7 @@ def extra_functionality(n, snapshots):
def solve_network(n, config, solving, opts="", **kwargs):
set_of_options = solving["solver"]["options"]
cf_solving = solving["options"]
kwargs["solver_options"] = (
solving["solver_options"][set_of_options] if set_of_options else {}
)
@ -605,6 +606,7 @@ def solve_network(n, config, solving, opts="", **kwargs):
kwargs["linearized_unit_commitment"] = cf_solving.get(
"linearized_unit_commitment", False
)
kwargs["assign_all_duals"] = cf_solving.get("assign_all_duals", False)
rolling_horizon = cf_solving.pop("rolling_horizon", False)
skip_iterations = cf_solving.pop("skip_iterations", False)