Merge pull request #174 from PyPSA/release-v0.6
Preparation of release v0.6
This commit is contained in:
commit
056ee67c61
3
.gitignore
vendored
3
.gitignore
vendored
@ -11,11 +11,8 @@ gurobi.log
|
|||||||
/benchmarks
|
/benchmarks
|
||||||
/logs
|
/logs
|
||||||
/notebooks
|
/notebooks
|
||||||
/data/timezone_mappings.csv
|
|
||||||
/data/urban_percent.csv
|
|
||||||
/data/links_p_nom.csv
|
/data/links_p_nom.csv
|
||||||
/data/*totals.csv
|
/data/*totals.csv
|
||||||
/data/*Jensen.csv
|
|
||||||
/data/biomass*
|
/data/biomass*
|
||||||
/data/emobility/
|
/data/emobility/
|
||||||
/data/eea*
|
/data/eea*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
version: 0.5.0
|
version: 0.6.0
|
||||||
|
|
||||||
logging_level: INFO
|
logging_level: INFO
|
||||||
|
|
||||||
@ -45,14 +45,14 @@ scenario:
|
|||||||
# CO2 budget as a fraction of 1990 emissions
|
# CO2 budget as a fraction of 1990 emissions
|
||||||
# this is over-ridden if CO2Lx is set in sector_opts
|
# this is over-ridden if CO2Lx is set in sector_opts
|
||||||
# this is also over-ridden if cb is set in sector_opts
|
# this is also over-ridden if cb is set in sector_opts
|
||||||
co2_budget:
|
# co2_budget:
|
||||||
2020: 0.7011648746
|
# 2020: 0.7011648746
|
||||||
2025: 0.5241935484
|
# 2025: 0.5241935484
|
||||||
2030: 0.2970430108
|
# 2030: 0.2970430108
|
||||||
2035: 0.1500896057
|
# 2035: 0.1500896057
|
||||||
2040: 0.0712365591
|
# 2040: 0.0712365591
|
||||||
2045: 0.0322580645
|
# 2045: 0.0322580645
|
||||||
2050: 0
|
# 2050: 0
|
||||||
|
|
||||||
# snapshots are originally set in PyPSA-Eur/config.yaml but used again by PyPSA-Eur-Sec
|
# snapshots are originally set in PyPSA-Eur/config.yaml but used again by PyPSA-Eur-Sec
|
||||||
snapshots:
|
snapshots:
|
||||||
@ -146,11 +146,11 @@ sector:
|
|||||||
potential: 0.6 # maximum fraction of urban demand which can be supplied by district heating
|
potential: 0.6 # maximum fraction of urban demand which can be supplied by district heating
|
||||||
# increase of today's district heating demand to potential maximum district heating share
|
# increase of today's district heating demand to potential maximum district heating share
|
||||||
# progress = 0 means today's district heating share, progress = 1 means maximum fraction of urban demand is supplied by district heating
|
# progress = 0 means today's district heating share, progress = 1 means maximum fraction of urban demand is supplied by district heating
|
||||||
progress:
|
progress: 1
|
||||||
2020: 0.0
|
# 2020: 0.0
|
||||||
2030: 0.3
|
# 2030: 0.3
|
||||||
2040: 0.6
|
# 2040: 0.6
|
||||||
2050: 1.0
|
# 2050: 1.0
|
||||||
district_heating_loss: 0.15
|
district_heating_loss: 0.15
|
||||||
bev_dsm_restriction_value: 0.75 #Set to 0 for no restriction on BEV DSM
|
bev_dsm_restriction_value: 0.75 #Set to 0 for no restriction on BEV DSM
|
||||||
bev_dsm_restriction_time: 7 #Time at which SOC of BEV has to be dsm_restriction_value
|
bev_dsm_restriction_time: 7 #Time at which SOC of BEV has to be dsm_restriction_value
|
||||||
@ -170,16 +170,16 @@ sector:
|
|||||||
bev_avail_mean: 0.8
|
bev_avail_mean: 0.8
|
||||||
v2g: true #allows feed-in to grid from EV battery
|
v2g: true #allows feed-in to grid from EV battery
|
||||||
#what is not EV or FCEV is oil-fuelled ICE
|
#what is not EV or FCEV is oil-fuelled ICE
|
||||||
land_transport_fuel_cell_share: # 1 means all FCEVs
|
land_transport_fuel_cell_share: 0.15 # 1 means all FCEVs
|
||||||
2020: 0
|
# 2020: 0
|
||||||
2030: 0.05
|
# 2030: 0.05
|
||||||
2040: 0.1
|
# 2040: 0.1
|
||||||
2050: 0.15
|
# 2050: 0.15
|
||||||
land_transport_electric_share: # 1 means all EVs
|
land_transport_electric_share: 0.85 # 1 means all EVs
|
||||||
2020: 0
|
# 2020: 0
|
||||||
2030: 0.25
|
# 2030: 0.25
|
||||||
2040: 0.6
|
# 2040: 0.6
|
||||||
2050: 0.85
|
# 2050: 0.85
|
||||||
transport_fuel_cell_efficiency: 0.5
|
transport_fuel_cell_efficiency: 0.5
|
||||||
transport_internal_combustion_efficiency: 0.3
|
transport_internal_combustion_efficiency: 0.3
|
||||||
agriculture_machinery_electric_share: 0
|
agriculture_machinery_electric_share: 0
|
||||||
@ -187,29 +187,29 @@ sector:
|
|||||||
agriculture_machinery_electric_efficiency: 0.3 # electricity per use
|
agriculture_machinery_electric_efficiency: 0.3 # electricity per use
|
||||||
shipping_average_efficiency: 0.4 #For conversion of fuel oil to propulsion in 2011
|
shipping_average_efficiency: 0.4 #For conversion of fuel oil to propulsion in 2011
|
||||||
shipping_hydrogen_liquefaction: false # whether to consider liquefaction costs for shipping H2 demands
|
shipping_hydrogen_liquefaction: false # whether to consider liquefaction costs for shipping H2 demands
|
||||||
shipping_hydrogen_share: # 1 means all hydrogen FC
|
shipping_hydrogen_share: 1 # 1 means all hydrogen FC
|
||||||
2020: 0
|
# 2020: 0
|
||||||
2025: 0
|
# 2025: 0
|
||||||
2030: 0.05
|
# 2030: 0.05
|
||||||
2035: 0.15
|
# 2035: 0.15
|
||||||
2040: 0.3
|
# 2040: 0.3
|
||||||
2045: 0.6
|
# 2045: 0.6
|
||||||
2050: 1
|
# 2050: 1
|
||||||
time_dep_hp_cop: true #time dependent heat pump coefficient of performance
|
time_dep_hp_cop: true #time dependent heat pump coefficient of performance
|
||||||
heat_pump_sink_T: 55. # Celsius, based on DTU / large area radiators; used in build_cop_profiles.py
|
heat_pump_sink_T: 55. # Celsius, based on DTU / large area radiators; used in build_cop_profiles.py
|
||||||
# conservatively high to cover hot water and space heating in poorly-insulated buildings
|
# conservatively high to cover hot water and space heating in poorly-insulated buildings
|
||||||
reduce_space_heat_exogenously: true # reduces space heat demand by a given factor (applied before losses in DH)
|
reduce_space_heat_exogenously: true # reduces space heat demand by a given factor (applied before losses in DH)
|
||||||
# this can represent e.g. building renovation, building demolition, or if
|
# this can represent e.g. building renovation, building demolition, or if
|
||||||
# the factor is negative: increasing floor area, increased thermal comfort, population growth
|
# the factor is negative: increasing floor area, increased thermal comfort, population growth
|
||||||
reduce_space_heat_exogenously_factor: # per unit reduction in space heat demand
|
reduce_space_heat_exogenously_factor: 0.29 # per unit reduction in space heat demand
|
||||||
# the default factors are determined by the LTS scenario from http://tool.european-calculator.eu/app/buildings/building-types-area/?levers=1ddd4444421213bdbbbddd44444ffffff11f411111221111211l212221
|
# the default factors are determined by the LTS scenario from http://tool.european-calculator.eu/app/buildings/building-types-area/?levers=1ddd4444421213bdbbbddd44444ffffff11f411111221111211l212221
|
||||||
2020: 0.10 # this results in a space heat demand reduction of 10%
|
# 2020: 0.10 # this results in a space heat demand reduction of 10%
|
||||||
2025: 0.09 # first heat demand increases compared to 2020 because of larger floor area per capita
|
# 2025: 0.09 # first heat demand increases compared to 2020 because of larger floor area per capita
|
||||||
2030: 0.09
|
# 2030: 0.09
|
||||||
2035: 0.11
|
# 2035: 0.11
|
||||||
2040: 0.16
|
# 2040: 0.16
|
||||||
2045: 0.21
|
# 2045: 0.21
|
||||||
2050: 0.29
|
# 2050: 0.29
|
||||||
retrofitting : # co-optimises building renovation to reduce space heat demand
|
retrofitting : # co-optimises building renovation to reduce space heat demand
|
||||||
retro_endogen: false # co-optimise space heat savings
|
retro_endogen: false # co-optimise space heat savings
|
||||||
cost_factor: 1.0 # weight costs for building renovation
|
cost_factor: 1.0 # weight costs for building renovation
|
||||||
@ -251,32 +251,32 @@ sector:
|
|||||||
|
|
||||||
|
|
||||||
industry:
|
industry:
|
||||||
St_primary_fraction: # fraction of steel produced via primary route versus secondary route (scrap+EAF); today fraction is 0.6
|
St_primary_fraction: 0.3 # fraction of steel produced via primary route versus secondary route (scrap+EAF); today fraction is 0.6
|
||||||
2020: 0.6
|
# 2020: 0.6
|
||||||
2025: 0.55
|
# 2025: 0.55
|
||||||
2030: 0.5
|
# 2030: 0.5
|
||||||
2035: 0.45
|
# 2035: 0.45
|
||||||
2040: 0.4
|
# 2040: 0.4
|
||||||
2045: 0.35
|
# 2045: 0.35
|
||||||
2050: 0.3
|
# 2050: 0.3
|
||||||
DRI_fraction: # fraction of the primary route converted to DRI + EAF
|
DRI_fraction: 1 # fraction of the primary route converted to DRI + EAF
|
||||||
2020: 0
|
# 2020: 0
|
||||||
2025: 0
|
# 2025: 0
|
||||||
2030: 0.05
|
# 2030: 0.05
|
||||||
2035: 0.2
|
# 2035: 0.2
|
||||||
2040: 0.4
|
# 2040: 0.4
|
||||||
2045: 0.7
|
# 2045: 0.7
|
||||||
2050: 1
|
# 2050: 1
|
||||||
H2_DRI: 1.7 #H2 consumption in Direct Reduced Iron (DRI), MWh_H2,LHV/ton_Steel from 51kgH2/tSt in Vogl et al (2018) doi:10.1016/j.jclepro.2018.08.279
|
H2_DRI: 1.7 #H2 consumption in Direct Reduced Iron (DRI), MWh_H2,LHV/ton_Steel from 51kgH2/tSt in Vogl et al (2018) doi:10.1016/j.jclepro.2018.08.279
|
||||||
elec_DRI: 0.322 #electricity consumption in Direct Reduced Iron (DRI) shaft, MWh/tSt HYBRIT brochure https://ssabwebsitecdn.azureedge.net/-/media/hybrit/files/hybrit_brochure.pdf
|
elec_DRI: 0.322 #electricity consumption in Direct Reduced Iron (DRI) shaft, MWh/tSt HYBRIT brochure https://ssabwebsitecdn.azureedge.net/-/media/hybrit/files/hybrit_brochure.pdf
|
||||||
Al_primary_fraction: # fraction of aluminium produced via the primary route versus scrap; today fraction is 0.4
|
Al_primary_fraction: 0.2 # fraction of aluminium produced via the primary route versus scrap; today fraction is 0.4
|
||||||
2020: 0.4
|
# 2020: 0.4
|
||||||
2025: 0.375
|
# 2025: 0.375
|
||||||
2030: 0.35
|
# 2030: 0.35
|
||||||
2035: 0.325
|
# 2035: 0.325
|
||||||
2040: 0.3
|
# 2040: 0.3
|
||||||
2045: 0.25
|
# 2045: 0.25
|
||||||
2050: 0.2
|
# 2050: 0.2
|
||||||
MWh_CH4_per_tNH3_SMR: 10.8 # 2012's demand from https://ec.europa.eu/docsroom/documents/4165/attachments/1/translations/en/renditions/pdf
|
MWh_CH4_per_tNH3_SMR: 10.8 # 2012's demand from https://ec.europa.eu/docsroom/documents/4165/attachments/1/translations/en/renditions/pdf
|
||||||
MWh_elec_per_tNH3_SMR: 0.7 # same source, assuming 94-6% split methane-elec of total energy demand 11.5 MWh/tNH3
|
MWh_elec_per_tNH3_SMR: 0.7 # same source, assuming 94-6% split methane-elec of total energy demand 11.5 MWh/tNH3
|
||||||
MWh_H2_per_tNH3_electrolysis: 6.5 # from https://doi.org/10.1016/j.joule.2018.04.017, around 0.197 tH2/tHN3 (>3/17 since some H2 lost and used for energy)
|
MWh_H2_per_tNH3_electrolysis: 6.5 # from https://doi.org/10.1016/j.joule.2018.04.017, around 0.197 tH2/tHN3 (>3/17 since some H2 lost and used for energy)
|
||||||
|
25
data/heat_load_profile_DK_AdamJensen.csv
Normal file
25
data/heat_load_profile_DK_AdamJensen.csv
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
hour,weekday,weekend
|
||||||
|
0,0.9181438689,0.9421512708
|
||||||
|
1,0.9172359071,0.9400891069
|
||||||
|
2,0.9269464481,0.9461062015
|
||||||
|
3,0.9415047932,0.9535084941
|
||||||
|
4,0.9656299507,0.9651094993
|
||||||
|
5,1.0221166443,0.9834676747
|
||||||
|
6,1.1553090493,1.0124171051
|
||||||
|
7,1.2093411031,1.0446615927
|
||||||
|
8,1.1470295942,1.088203419
|
||||||
|
9,1.0877191341,1.1110334576
|
||||||
|
10,1.0418327372,1.0926752822
|
||||||
|
11,1.0062977133,1.055488209
|
||||||
|
12,0.9837030359,1.0251266112
|
||||||
|
13,0.9667570278,0.9990015154
|
||||||
|
14,0.9548320932,0.9782897278
|
||||||
|
15,0.9509232061,0.9698167237
|
||||||
|
16,0.9636973319,0.974288587
|
||||||
|
17,0.9799372563,0.9886456216
|
||||||
|
18,1.0046501848,1.0084159643
|
||||||
|
19,1.0079452419,1.0171243296
|
||||||
|
20,0.9860566481,0.9994722379
|
||||||
|
21,0.9705228074,0.982761591
|
||||||
|
22,0.9586485819,0.9698167237
|
||||||
|
23,0.9335023778,0.9515079292
|
|
30
data/urban_percent.csv
Normal file
30
data/urban_percent.csv
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
AT,66
|
||||||
|
BA,40
|
||||||
|
BE,98
|
||||||
|
BG,74
|
||||||
|
CH,74
|
||||||
|
CZ,73
|
||||||
|
DE,75
|
||||||
|
DK,88
|
||||||
|
EE,68
|
||||||
|
ES,80
|
||||||
|
FI,84
|
||||||
|
FR,80
|
||||||
|
GB,83
|
||||||
|
GR,78
|
||||||
|
HR,59
|
||||||
|
HU,71
|
||||||
|
IE,63
|
||||||
|
IT,69
|
||||||
|
LT,67
|
||||||
|
LU,90
|
||||||
|
LV,67
|
||||||
|
NL,90
|
||||||
|
NO,80
|
||||||
|
PL,61
|
||||||
|
PT,63
|
||||||
|
RO,55
|
||||||
|
RS,56
|
||||||
|
SE,86
|
||||||
|
SI,50
|
||||||
|
SK,54
|
|
10
doc/conf.py
10
doc/conf.py
@ -56,23 +56,23 @@ source_suffix = '.rst'
|
|||||||
|
|
||||||
# The encoding of source files.
|
# The encoding of source files.
|
||||||
#source_encoding = 'utf-8-sig'
|
#source_encoding = 'utf-8-sig'
|
||||||
|
progress
|
||||||
# The master toctree document.
|
# The master toctree document.
|
||||||
master_doc = 'index'
|
master_doc = 'index'
|
||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = u'PyPSA-Eur-Sec'
|
project = u'PyPSA-Eur-Sec'
|
||||||
copyright = u'2019-2020 Tom Brown (KIT), Marta Victoria (Aarhus University), Lisa Zeyen (KIT)'
|
copyright = u'2019-2021 Tom Brown (KIT, TUB), Marta Victoria (Aarhus University), Lisa Zeyen (KIT, TUB), Fabian Neumann (TUB)'
|
||||||
author = u'2019-2020 Tom Brown (KIT), Marta Victoria (Aarhus University), Lisa Zeyen (KIT)'
|
author = u'2019-2021 Tom Brown (KIT, TUB), Marta Victoria (Aarhus University), Lisa Zeyen (KIT, TUB), Fabian Neumann (TUB)'
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |version| and |release|, also used in various other places throughout the
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = u'0.5'
|
version = u'0.6'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = u'0.5.0'
|
release = u'0.6.0'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -7,7 +7,6 @@ EEA emission statistics,eea/UNFCCC_v23.csv,EEA standard re-use policy,https://ww
|
|||||||
Eurostat Energy Balances,eurostat-energy_balances-*/,Eurostat,https://ec.europa.eu/eurostat/web/energy/data/energy-balances
|
Eurostat Energy Balances,eurostat-energy_balances-*/,Eurostat,https://ec.europa.eu/eurostat/web/energy/data/energy-balances
|
||||||
Swiss energy statistics from Swiss Federal Office of Energy,switzerland-sfoe/,unknown,http://www.bfe.admin.ch/themen/00526/00541/00542/02167/index.html?dossier_id=02169
|
Swiss energy statistics from Swiss Federal Office of Energy,switzerland-sfoe/,unknown,http://www.bfe.admin.ch/themen/00526/00541/00542/02167/index.html?dossier_id=02169
|
||||||
BASt emobility statistics,emobility/,unknown,http://www.bast.de/DE/Verkehrstechnik/Fachthemen/v2-verkehrszaehlung/Stundenwerte.html?nn=626916
|
BASt emobility statistics,emobility/,unknown,http://www.bast.de/DE/Verkehrstechnik/Fachthemen/v2-verkehrszaehlung/Stundenwerte.html?nn=626916
|
||||||
timezone mappings,timezone_mappings.csv,CC BY 4.0,Tom Brown
|
|
||||||
BDEW heating profile,heat_load_profile_BDEW.csv,unknown,https://github.com/oemof/demandlib
|
BDEW heating profile,heat_load_profile_BDEW.csv,unknown,https://github.com/oemof/demandlib
|
||||||
heating profiles for Aarhus,heat_load_profile_DK_AdamJensen.csv,unknown,Adam Jensen MA thesis at Aarhus University
|
heating profiles for Aarhus,heat_load_profile_DK_AdamJensen.csv,unknown,Adam Jensen MA thesis at Aarhus University
|
||||||
George Lavidas wind/wave costs,WindWaveWEC_GLTB.xlsx,unknown,George Lavidas
|
George Lavidas wind/wave costs,WindWaveWEC_GLTB.xlsx,unknown,George Lavidas
|
||||||
|
|
@ -66,15 +66,15 @@ Data requirements
|
|||||||
=================
|
=================
|
||||||
|
|
||||||
Small data files are included directly in the git repository, while
|
Small data files are included directly in the git repository, while
|
||||||
larger ones are archived in a data bundle. The data bundle's size is
|
larger ones are archived in a data bundle on zenodo (`10.5281/zenodo.5546517 <https://doi.org/10.5281/zenodo.5546517>`_).
|
||||||
around 640 MB.
|
The data bundle's size is around 640 MB.
|
||||||
|
|
||||||
To download and extract the data bundle on the command line:
|
To download and extract the data bundle on the command line:
|
||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
`
|
||||||
projects/pypsa-eur-sec/data % wget "https://nworbmot.org/pypsa-eur-sec-data-bundle-210418.tar.gz"
|
projects/pypsa-eur-sec/data % wget "https://zenodo.org/record/5546517/files/pypsa-eur-sec-data-bundle.tar.gz"
|
||||||
projects/pypsa-eur-sec/data % tar xvzf pypsa-eur-sec-data-bundle-210418.tar.gz
|
projects/pypsa-eur-sec/data % tar xvzf pypsa-eur-sec-data-bundle.tar.gz
|
||||||
|
|
||||||
|
|
||||||
The data licences and sources are given in the following table.
|
The data licences and sources are given in the following table.
|
||||||
|
@ -6,94 +6,193 @@ Future release
|
|||||||
==============
|
==============
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
This unreleased version currently requires the master branches of PyPSA, PyPSA-Eur, and the technology-data repository.
|
This unreleased version currently may require the master branches of PyPSA, PyPSA-Eur, and the technology-data repository.
|
||||||
|
|
||||||
|
PyPSA-Eur-Sec 0.6.0 (4 October 2021)
|
||||||
|
====================================
|
||||||
|
|
||||||
|
This release includes
|
||||||
|
improvements regarding the basic chemical production,
|
||||||
|
the addition of plastics recycling,
|
||||||
|
the addition of the agriculture, forestry and fishing sector,
|
||||||
|
more regionally resolved biomass potentials,
|
||||||
|
CO2 pipeline transport and storage, and
|
||||||
|
more options in setting exogenous transition paths,
|
||||||
|
besides many performance improvements.
|
||||||
|
|
||||||
|
This release is known to work with `PyPSA-Eur
|
||||||
|
<https://github.com/PyPSA/pypsa-eur>`_ Version 0.4.0, `Technology Data
|
||||||
|
<https://github.com/PyPSA/technology-data>`_ Version 0.3.0 and
|
||||||
|
`PyPSA <https://github.com/PyPSA/PyPSA>`_ Version 0.18.0.
|
||||||
|
|
||||||
|
Please note that the data bundle has also been updated.
|
||||||
|
|
||||||
|
|
||||||
|
**General**
|
||||||
|
|
||||||
* With this release, we change the license from copyleft GPLv3 to the more
|
* With this release, we change the license from copyleft GPLv3 to the more
|
||||||
liberal MIT license with the consent of all contributors.
|
liberal MIT license with the consent of all contributors.
|
||||||
|
|
||||||
|
|
||||||
|
**New features and functionality**
|
||||||
|
|
||||||
|
* Distinguish costs for home battery storage and inverter from utility-scale
|
||||||
|
battery costs.
|
||||||
|
|
||||||
|
* Separate basic chemicals into HVC (high-value chemicals), chlorine, methanol and ammonia
|
||||||
|
[`#166 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/166>`_].
|
||||||
|
|
||||||
|
* Add option to specify reuse, primary production, and mechanical and chemical
|
||||||
|
recycling fraction of platics
|
||||||
|
[`#166 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/166>`_].
|
||||||
|
|
||||||
|
* Include energy demands and CO2 emissions for the agriculture, forestry and fishing sector.
|
||||||
|
It is included by default through the option ``A`` in the ``sector_opts`` wildcard.
|
||||||
|
Part of the emissions (1.A.4.c) was previously assigned to "industry non-elec" in the ``co2_totals.csv``.
|
||||||
|
Hence, excluding the agriculture sector will now lead to a tighter CO2 limit.
|
||||||
|
Energy demands are taken from the JRC IDEES database (missing countries filled with eurostat data)
|
||||||
|
and are split into
|
||||||
|
electricity (lighting, ventilation, specific electricity uses, pumping devices (electric)),
|
||||||
|
heat (specific heat uses, low enthalpy heat)
|
||||||
|
machinery oil (motor drives, farming machine drives, pumping devices (diesel)).
|
||||||
|
Heat demand is assigned at "services rural heat" buses.
|
||||||
|
Electricity demands are added to low-voltage buses.
|
||||||
|
Time series for demands are constant and distributed inside countries by population
|
||||||
|
[`#147 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/147>`_].
|
||||||
|
|
||||||
|
* Include today's district heating shares in myopic optimisation and add option
|
||||||
|
to specify exogenous path for district heating share increase under ``sector:
|
||||||
|
district_heating:`` [`#149 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/149>`_].
|
||||||
|
|
||||||
|
* Added option for hydrogen liquefaction costs for hydrogen demand in shipping.
|
||||||
|
This introduces a new ``H2 liquid`` bus at each location. It is activated via
|
||||||
|
``sector: shipping_hydrogen_liquefaction: true``.
|
||||||
|
|
||||||
|
* The share of shipping transformed into hydrogen fuel cell can be now defined
|
||||||
|
for different years in the ``config.yaml`` file. The carbon emission from the
|
||||||
|
remaining share is treated as a negative load on the atmospheric carbon dioxide
|
||||||
|
bus, just like aviation and land transport emissions.
|
||||||
|
|
||||||
|
* The transformation of the Steel and Aluminium production can be now defined
|
||||||
|
for different years in the ``config.yaml`` file.
|
||||||
|
|
||||||
|
* Include the option to alter the maximum energy capacity of a store via the
|
||||||
|
``carrier+factor`` in the ``{sector_opts}`` wildcard. This can be useful for
|
||||||
|
sensitivity analyses. Example: ``co2 stored+e2`` multiplies the ``e_nom_max`` by
|
||||||
|
factor 2. In this example, ``e_nom_max`` represents the CO2 sequestration
|
||||||
|
potential in Europe.
|
||||||
|
|
||||||
|
* Use `JRC ENSPRESO database <https://data.jrc.ec.europa.eu/dataset/74ed5a04-7d74-4807-9eab-b94774309d9f>`_ to
|
||||||
|
spatially disaggregate biomass potentials to PyPSA-Eur regions based on
|
||||||
|
overlaps with NUTS2 regions from ENSPRESO (proportional to area) (`#151
|
||||||
|
<https://github.com/PyPSA/pypsa-eur-sec/pull/151>`_).
|
||||||
|
|
||||||
|
* Add option to regionally disaggregate biomass potential to individual nodes
|
||||||
|
(previously given per country, then distributed by population density within)
|
||||||
|
and allow the transport of solid biomass. The transport costs are determined
|
||||||
|
based on the `JRC-EU-Times Bioenergy report
|
||||||
|
<http://dx.doi.org/10.2790/01017>`_ in the new optional rule
|
||||||
|
``build_biomass_transport_costs``. Biomass transport can be activated with the
|
||||||
|
setting ``sector: biomass_transport: true``.
|
||||||
|
|
||||||
|
* Add option to regionally resolve CO2 storage and add CO2 pipeline transport
|
||||||
|
because geological storage potential,
|
||||||
|
CO2 utilisation sites and CO2 capture sites may be separated. The CO2 network
|
||||||
|
is built from zero based on the topology of the electricity grid (greenfield).
|
||||||
|
Pipelines are assumed to be bidirectional and lossless. Furthermore, neither
|
||||||
|
retrofitting of natural gas pipelines (required pressures are too high, 80-160
|
||||||
|
bar vs <80 bar) nor other modes of CO2 transport (by ship, road or rail) are
|
||||||
|
considered. The regional representation of CO2 is activated with the config
|
||||||
|
setting ``sector: co2_network: true`` but is deactivated by default. The
|
||||||
|
global limit for CO2 sequestration now applies to the sum of all CO2 stores
|
||||||
|
via an ``extra_functionality`` constraint.
|
||||||
|
|
||||||
|
* The myopic option can now be used together with different clustering for the
|
||||||
|
generators and the network. The existing renewable capacities are split evenly
|
||||||
|
among the regions in every country [`#144 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/144>`_].
|
||||||
|
|
||||||
|
* Add optional function to use ``geopy`` to locate entries of the Hotmaps
|
||||||
|
database of industrial sites with missing location based on city and country,
|
||||||
|
which reduces missing entries by half. It can be activated by setting
|
||||||
|
``industry: hotmaps_locate_missing: true``, takes a few minutes longer, and
|
||||||
|
should only be used if spatial resolution is coarser than city level.
|
||||||
|
|
||||||
|
|
||||||
|
**Performance and Structure**
|
||||||
|
|
||||||
* Extended use of ``multiprocessing`` for much better performance
|
* Extended use of ``multiprocessing`` for much better performance
|
||||||
(from up to 20 minutes to less than one minute).
|
(from up to 20 minutes to less than one minute).
|
||||||
* Compatibility with ``atlite>=0.2``. Older versions of ``atlite`` will no longer work.
|
|
||||||
* Handle most input files (or base directories) via ``snakemake.input``.
|
* Handle most input files (or base directories) via ``snakemake.input``.
|
||||||
|
|
||||||
* Use of ``mock_snakemake`` from PyPSA-Eur.
|
* Use of ``mock_snakemake`` from PyPSA-Eur.
|
||||||
* Update ``solve_network`` rule to match implementation in PyPSA-Eur by using ``n.ilopf()`` and remove outdated code using ``pyomo``.
|
|
||||||
Allows the new setting to skip iterated impedance updates with ``solving: options: skip_iterations: true``.
|
* Update ``solve_network`` rule to match implementation in PyPSA-Eur by using
|
||||||
|
``n.ilopf()`` and remove outdated code using ``pyomo``.
|
||||||
|
Allows the new setting to skip iterated impedance updates with ``solving:
|
||||||
|
options: skip_iterations: true``.
|
||||||
|
|
||||||
* The component attributes that are to be overridden are now stored in the folder
|
* The component attributes that are to be overridden are now stored in the folder
|
||||||
``data/override_component_attrs`` analogous to ``pypsa/component_attrs``.
|
``data/override_component_attrs`` analogous to ``pypsa/component_attrs``.
|
||||||
This reduces verbosity and also allows circumventing the ``n.madd()`` hack
|
This reduces verbosity and also allows circumventing the ``n.madd()`` hack
|
||||||
for individual components with non-default attributes.
|
for individual components with non-default attributes.
|
||||||
This data is also tracked in the Snakefile.
|
This data is also tracked in the Snakefile.
|
||||||
|
|
||||||
A function ``helper.override_component_attrs`` was added that loads this data
|
A function ``helper.override_component_attrs`` was added that loads this data
|
||||||
and can pass the overridden component attributes into ``pypsa.Network()``:
|
and can pass the overridden component attributes into ``pypsa.Network()``.
|
||||||
|
|
||||||
>>> from helper import override_component_attrs
|
|
||||||
>>> overrides = override_component_attrs(snakemake.input.overrides)
|
|
||||||
>>> n = pypsa.Network("mynetwork.nc", override_component_attrs=overrides)
|
|
||||||
|
|
||||||
* Add various parameters to ``config.default.yaml`` which were previously hardcoded inside the scripts
|
* Add various parameters to ``config.default.yaml`` which were previously hardcoded inside the scripts
|
||||||
(e.g. energy reference years, BEV settings, solar thermal collector models, geomap colours).
|
(e.g. energy reference years, BEV settings, solar thermal collector models, geomap colours).
|
||||||
|
|
||||||
* Removed stale industry demand rules ``build_industrial_energy_demand_per_country``
|
* Removed stale industry demand rules ``build_industrial_energy_demand_per_country``
|
||||||
and ``build_industrial_demand``. These are superseded with more regionally resolved rules.
|
and ``build_industrial_demand``. These are superseded with more regionally resolved rules.
|
||||||
|
|
||||||
* Use simpler and shorter ``gdf.sjoin()`` function to allocate industrial sites
|
* Use simpler and shorter ``gdf.sjoin()`` function to allocate industrial sites
|
||||||
from the Hotmaps database to onshore regions.
|
from the Hotmaps database to onshore regions.
|
||||||
|
|
||||||
This change also fixes a bug:
|
This change also fixes a bug:
|
||||||
The previous version allocated sites to the closest bus,
|
The previous version allocated sites to the closest bus,
|
||||||
but at country borders (where Voronoi cells are distorted by the borders),
|
but at country borders (where Voronoi cells are distorted by the borders),
|
||||||
this had resulted in e.g. a Spanish site close to the French border
|
this had resulted in e.g. a Spanish site close to the French border
|
||||||
being wrongly allocated to the French bus if the bus center was closer.
|
being wrongly allocated to the French bus if the bus center was closer.
|
||||||
* Bugfix: Corrected calculation of "gas for industry" carbon capture efficiency.
|
|
||||||
* Retrofitting rule is now only triggered if endogeneously optimised.
|
* Retrofitting rule is now only triggered if endogeneously optimised.
|
||||||
|
|
||||||
* Show progress in build rules with ``tqdm`` progress bars.
|
* Show progress in build rules with ``tqdm`` progress bars.
|
||||||
|
|
||||||
* Reduced verbosity of ``Snakefile`` through directory prefixes.
|
* Reduced verbosity of ``Snakefile`` through directory prefixes.
|
||||||
|
|
||||||
* Improve legibility of ``config.default.yaml`` and remove unused options.
|
* Improve legibility of ``config.default.yaml`` and remove unused options.
|
||||||
* Add optional function to use ``geopy`` to locate entries of the Hotmaps database of industrial sites
|
|
||||||
with missing location based on city and country, which reduces missing entries by half. It can be
|
|
||||||
activated by setting ``industry: hotmaps_locate_missing: true``, takes a few minutes longer,
|
|
||||||
and should only be used if spatial resolution is coarser than city level.
|
|
||||||
* Use the country-specific time zone mappings from ``pytz`` rather than a manual mapping.
|
* Use the country-specific time zone mappings from ``pytz`` rather than a manual mapping.
|
||||||
|
|
||||||
* A function ``add_carrier_buses()`` was added to the ``prepare_network`` rule to reduce code duplication.
|
* A function ``add_carrier_buses()`` was added to the ``prepare_network`` rule to reduce code duplication.
|
||||||
|
|
||||||
* In the ``prepare_network`` rule the cost and potential adjustment was moved into an
|
* In the ``prepare_network`` rule the cost and potential adjustment was moved into an
|
||||||
own function ``maybe_adjust_costs_and_potentials()``.
|
own function ``maybe_adjust_costs_and_potentials()``.
|
||||||
* Use ``matplotlibrc`` to set the default plotting style and backend``.
|
|
||||||
|
* Use ``matplotlibrc`` to set the default plotting style and backend.
|
||||||
|
|
||||||
* Added benchmark files for each rule.
|
* Added benchmark files for each rule.
|
||||||
* Implements changes to ``n.snapshot_weightings`` in upcoming PyPSA version (cf. `PyPSA/#227 <https://github.com/PyPSA/PyPSA/pull/227>`_).
|
|
||||||
* New dependencies: ``tqdm``, ``atlite>=0.2.4``, ``pytz`` and ``geopy`` (optional).
|
|
||||||
These are included in the environment specifications of PyPSA-Eur.
|
|
||||||
* Consistent use of ``__main__`` block and further unspecific code cleaning.
|
* Consistent use of ``__main__`` block and further unspecific code cleaning.
|
||||||
* Distinguish costs for home battery storage and inverter from utility-scale battery costs.
|
|
||||||
* Add option to regionally resolve CO2 storage and add CO2 pipeline transport because geological storage potential,
|
* Updated data bundle and moved data bundle to zenodo.org (`10.5281/zenodo.5546517 <https://doi.org/10.5281/zenodo.5546517>`_).
|
||||||
CO2 utilisation sites and CO2 capture sites may be separated.
|
|
||||||
The CO2 network is built from zero based on the topology of the electricity grid (greenfield).
|
|
||||||
Pipelines are assumed to be bidirectional and lossless.
|
**Bugfixes and Compatibility**
|
||||||
Furthermore, neither retrofitting of natural gas pipelines (required pressures are too high, 80-160 bar vs <80 bar)
|
|
||||||
nor other modes of CO2 transport (by ship, road or rail) are considered.
|
* Compatibility with ``atlite>=0.2``. Older versions of ``atlite`` will no longer work.
|
||||||
The regional representation of CO2 is activated with the config setting ``sector: co2_network: true`` but is deactivated by default.
|
|
||||||
The global limit for CO2 sequestration now applies to the sum of all CO2 stores via an ``extra_functionality`` constraint.
|
* Corrected calculation of "gas for industry" carbon capture efficiency.
|
||||||
* Added option for hydrogen liquefaction costs for hydrogen demand in shipping.
|
|
||||||
This introduces a new ``H2 liquid`` bus at each location.
|
* Implemented changes to ``n.snapshot_weightings`` in PyPSA v0.18.0.
|
||||||
It is activated via ``sector: shipping_hydrogen_liquefaction: true``.
|
|
||||||
* The share of shipping transformed into hydrogen fuel cell can be now defined for different years in the ``config.yaml`` file. The carbon emission from the remaining share is treated as a negative load on the atmospheric carbon dioxide bus, just like aviation and land transport emissions.
|
|
||||||
* The transformation of the Steel and Aluminium production can be now defined for different years in the ``config.yaml`` file.
|
|
||||||
* Include the option to alter the maximum energy capacity of a store via the ``carrier+factor`` in the ``{sector_opts}`` wildcard. This can be useful for sensitivity analyses. Example: ``co2 stored+e2`` multiplies the ``e_nom_max`` by factor 2. In this example, ``e_nom_max`` represents the CO2 sequestration potential in Europe.
|
|
||||||
* Add option to regionally disaggregate biomass potential to individual nodes
|
|
||||||
(currently given per country, then distributed by population density within)
|
|
||||||
and allow the transport of solid biomass.
|
|
||||||
The transport costs are determined based on the `JRC-EU-Times Bioenergy report <http://dx.doi.org/10.2790/01017>`_
|
|
||||||
in the new optional rule ``build_biomass_transport_costs``.
|
|
||||||
Biomass transport can be activated with the setting ``sector: biomass_transport: true``.
|
|
||||||
* Use `JRC ENSPRESO database <https://data.jrc.ec.europa.eu/dataset/74ed5a04-7d74-4807-9eab-b94774309d9f>`_ to
|
|
||||||
spatially disaggregate biomass potentials to PyPSA-Eur regions based on overlaps with NUTS2 regions from ENSPRESO
|
|
||||||
(proportional to area) (`#151 <https://github.com/PyPSA/pypsa-eur-sec/pull/151>`_).
|
|
||||||
* Compatibility with ``xarray`` version 0.19.
|
* Compatibility with ``xarray`` version 0.19.
|
||||||
* Added option to include emissions and energy demands of agriculture, forestry and fishing sector via the letter ``A`` in the ``{sector_opts}`` wildcard.
|
|
||||||
Demands are separated into electricity, heat and oil for machinery.
|
* New dependencies: ``tqdm``, ``atlite>=0.2.4``, ``pytz`` and ``geopy`` (optional).
|
||||||
Fuel-switching for machinery from oil to electricity can be set exogenously in the ``config.yaml``
|
These are included in the environment specifications of PyPSA-Eur v0.3.0.
|
||||||
`#147 <https://github.com/PyPSA/PyPSA/pull/147>`_.
|
|
||||||
* Separate basic chemicals into HVC, chlorine, methanol and ammonia [`#166 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/166>`_].
|
Many thanks to all who contributed to this release!
|
||||||
* Add option to specify reuse, primary production, and mechanical and chemical recycling fraction of platics [`#166 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/166>`_].
|
|
||||||
* Include today's district heating shares in myopic optimisation and add option to specify exogenous path for district heating share increase under ``sector: district_heating:`` [`#149 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/149>`_].
|
|
||||||
* The myopic option can now be used together with different clustering for the generators and the network. The existing renewable capacities are split evenly among the regions in every country [`#144 <https://github.com/PyPSA/PyPSA-Eur-Sec/pull/144>`_].
|
|
||||||
|
|
||||||
PyPSA-Eur-Sec 0.5.0 (21st May 2021)
|
PyPSA-Eur-Sec 0.5.0 (21st May 2021)
|
||||||
===================================
|
===================================
|
||||||
@ -274,4 +373,4 @@ To make a new release of the data bundle, make an archive of the files in ``data
|
|||||||
|
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
data % tar pczf pypsa-eur-sec-data-bundle-YYMMDD.tar.gz eea/UNFCCC_v23.csv switzerland-sfoe biomass eurostat-energy_balances-* jrc-idees-2015 emobility urban_percent.csv timezone_mappings.csv heat_load_profile_DK_AdamJensen.csv WindWaveWEC_GLTB.xlsx myb1-2017-nitro.xls Industrial_Database.csv retro/tabula-calculator-calcsetbuilding.csv
|
data % tar pczf pypsa-eur-sec-data-bundle.tar.gz eea/UNFCCC_v23.csv switzerland-sfoe biomass eurostat-energy_balances-* jrc-idees-2015 emobility WindWaveWEC_GLTB.xlsx myb1-2017-nitro.xls Industrial_Database.csv retro/tabula-calculator-calcsetbuilding.csv nuts/NUTS_RG_10M_2013_4326_LEVL_2.geojson
|
||||||
|
@ -1697,7 +1697,7 @@ def create_nodes_for_heat_sector():
|
|||||||
axis=1).max(axis=1)
|
axis=1).max(axis=1)
|
||||||
# difference of max potential and today's share of district heating
|
# difference of max potential and today's share of district heating
|
||||||
diff = (urban_fraction * central_fraction) - dist_fraction_node
|
diff = (urban_fraction * central_fraction) - dist_fraction_node
|
||||||
progress = get(options["district_heating"]["potential"], investment_year)
|
progress = get(options["district_heating"]["progress"], investment_year)
|
||||||
dist_fraction_node += diff * progress
|
dist_fraction_node += diff * progress
|
||||||
print(
|
print(
|
||||||
"The current district heating share compared to the maximum",
|
"The current district heating share compared to the maximum",
|
||||||
|
Loading…
Reference in New Issue
Block a user