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
|
||||
/logs
|
||||
/notebooks
|
||||
/data/timezone_mappings.csv
|
||||
/data/urban_percent.csv
|
||||
/data/links_p_nom.csv
|
||||
/data/*totals.csv
|
||||
/data/*Jensen.csv
|
||||
/data/biomass*
|
||||
/data/emobility/
|
||||
/data/eea*
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: 0.5.0
|
||||
version: 0.6.0
|
||||
|
||||
logging_level: INFO
|
||||
|
||||
@ -45,14 +45,14 @@ scenario:
|
||||
# CO2 budget as a fraction of 1990 emissions
|
||||
# this is over-ridden if CO2Lx is set in sector_opts
|
||||
# this is also over-ridden if cb is set in sector_opts
|
||||
co2_budget:
|
||||
2020: 0.7011648746
|
||||
2025: 0.5241935484
|
||||
2030: 0.2970430108
|
||||
2035: 0.1500896057
|
||||
2040: 0.0712365591
|
||||
2045: 0.0322580645
|
||||
2050: 0
|
||||
# co2_budget:
|
||||
# 2020: 0.7011648746
|
||||
# 2025: 0.5241935484
|
||||
# 2030: 0.2970430108
|
||||
# 2035: 0.1500896057
|
||||
# 2040: 0.0712365591
|
||||
# 2045: 0.0322580645
|
||||
# 2050: 0
|
||||
|
||||
# snapshots are originally set in PyPSA-Eur/config.yaml but used again by PyPSA-Eur-Sec
|
||||
snapshots:
|
||||
@ -146,11 +146,11 @@ sector:
|
||||
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
|
||||
# progress = 0 means today's district heating share, progress = 1 means maximum fraction of urban demand is supplied by district heating
|
||||
progress:
|
||||
2020: 0.0
|
||||
2030: 0.3
|
||||
2040: 0.6
|
||||
2050: 1.0
|
||||
progress: 1
|
||||
# 2020: 0.0
|
||||
# 2030: 0.3
|
||||
# 2040: 0.6
|
||||
# 2050: 1.0
|
||||
district_heating_loss: 0.15
|
||||
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
|
||||
@ -170,16 +170,16 @@ sector:
|
||||
bev_avail_mean: 0.8
|
||||
v2g: true #allows feed-in to grid from EV battery
|
||||
#what is not EV or FCEV is oil-fuelled ICE
|
||||
land_transport_fuel_cell_share: # 1 means all FCEVs
|
||||
2020: 0
|
||||
2030: 0.05
|
||||
2040: 0.1
|
||||
2050: 0.15
|
||||
land_transport_electric_share: # 1 means all EVs
|
||||
2020: 0
|
||||
2030: 0.25
|
||||
2040: 0.6
|
||||
2050: 0.85
|
||||
land_transport_fuel_cell_share: 0.15 # 1 means all FCEVs
|
||||
# 2020: 0
|
||||
# 2030: 0.05
|
||||
# 2040: 0.1
|
||||
# 2050: 0.15
|
||||
land_transport_electric_share: 0.85 # 1 means all EVs
|
||||
# 2020: 0
|
||||
# 2030: 0.25
|
||||
# 2040: 0.6
|
||||
# 2050: 0.85
|
||||
transport_fuel_cell_efficiency: 0.5
|
||||
transport_internal_combustion_efficiency: 0.3
|
||||
agriculture_machinery_electric_share: 0
|
||||
@ -187,29 +187,29 @@ sector:
|
||||
agriculture_machinery_electric_efficiency: 0.3 # electricity per use
|
||||
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_share: # 1 means all hydrogen FC
|
||||
2020: 0
|
||||
2025: 0
|
||||
2030: 0.05
|
||||
2035: 0.15
|
||||
2040: 0.3
|
||||
2045: 0.6
|
||||
2050: 1
|
||||
shipping_hydrogen_share: 1 # 1 means all hydrogen FC
|
||||
# 2020: 0
|
||||
# 2025: 0
|
||||
# 2030: 0.05
|
||||
# 2035: 0.15
|
||||
# 2040: 0.3
|
||||
# 2045: 0.6
|
||||
# 2050: 1
|
||||
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
|
||||
# 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)
|
||||
# this can represent e.g. building renovation, building demolition, or if
|
||||
# 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
|
||||
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
|
||||
2030: 0.09
|
||||
2035: 0.11
|
||||
2040: 0.16
|
||||
2045: 0.21
|
||||
2050: 0.29
|
||||
# 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
|
||||
# 2030: 0.09
|
||||
# 2035: 0.11
|
||||
# 2040: 0.16
|
||||
# 2045: 0.21
|
||||
# 2050: 0.29
|
||||
retrofitting : # co-optimises building renovation to reduce space heat demand
|
||||
retro_endogen: false # co-optimise space heat savings
|
||||
cost_factor: 1.0 # weight costs for building renovation
|
||||
@ -251,32 +251,32 @@ sector:
|
||||
|
||||
|
||||
industry:
|
||||
St_primary_fraction: # fraction of steel produced via primary route versus secondary route (scrap+EAF); today fraction is 0.6
|
||||
2020: 0.6
|
||||
2025: 0.55
|
||||
2030: 0.5
|
||||
2035: 0.45
|
||||
2040: 0.4
|
||||
2045: 0.35
|
||||
2050: 0.3
|
||||
DRI_fraction: # fraction of the primary route converted to DRI + EAF
|
||||
2020: 0
|
||||
2025: 0
|
||||
2030: 0.05
|
||||
2035: 0.2
|
||||
2040: 0.4
|
||||
2045: 0.7
|
||||
2050: 1
|
||||
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
|
||||
# 2025: 0.55
|
||||
# 2030: 0.5
|
||||
# 2035: 0.45
|
||||
# 2040: 0.4
|
||||
# 2045: 0.35
|
||||
# 2050: 0.3
|
||||
DRI_fraction: 1 # fraction of the primary route converted to DRI + EAF
|
||||
# 2020: 0
|
||||
# 2025: 0
|
||||
# 2030: 0.05
|
||||
# 2035: 0.2
|
||||
# 2040: 0.4
|
||||
# 2045: 0.7
|
||||
# 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
|
||||
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
|
||||
2020: 0.4
|
||||
2025: 0.375
|
||||
2030: 0.35
|
||||
2035: 0.325
|
||||
2040: 0.3
|
||||
2045: 0.25
|
||||
2050: 0.2
|
||||
Al_primary_fraction: 0.2 # fraction of aluminium produced via the primary route versus scrap; today fraction is 0.4
|
||||
# 2020: 0.4
|
||||
# 2025: 0.375
|
||||
# 2030: 0.35
|
||||
# 2035: 0.325
|
||||
# 2040: 0.3
|
||||
# 2045: 0.25
|
||||
# 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_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)
|
||||
|
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.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
|
||||
progress
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'PyPSA-Eur-Sec'
|
||||
copyright = u'2019-2020 Tom Brown (KIT), Marta Victoria (Aarhus University), Lisa Zeyen (KIT)'
|
||||
author = 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-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
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = u'0.5'
|
||||
version = u'0.6'
|
||||
# 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
|
||||
# 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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
|
@ -66,15 +66,15 @@ Data requirements
|
||||
=================
|
||||
|
||||
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
|
||||
around 640 MB.
|
||||
larger ones are archived in a data bundle on zenodo (`10.5281/zenodo.5546517 <https://doi.org/10.5281/zenodo.5546517>`_).
|
||||
The data bundle's size is around 640 MB.
|
||||
|
||||
To download and extract the data bundle on the command line:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
projects/pypsa-eur-sec/data % wget "https://nworbmot.org/pypsa-eur-sec-data-bundle-210418.tar.gz"
|
||||
projects/pypsa-eur-sec/data % tar xvzf 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.tar.gz
|
||||
|
||||
|
||||
The data licences and sources are given in the following table.
|
||||
|
@ -6,94 +6,193 @@ Future release
|
||||
==============
|
||||
|
||||
.. 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
|
||||
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
|
||||
(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``.
|
||||
|
||||
* 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
|
||||
``data/override_component_attrs`` analogous to ``pypsa/component_attrs``.
|
||||
This reduces verbosity and also allows circumventing the ``n.madd()`` hack
|
||||
for individual components with non-default attributes.
|
||||
This data is also tracked in the Snakefile.
|
||||
|
||||
A function ``helper.override_component_attrs`` was added that loads this data
|
||||
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)
|
||||
|
||||
and can pass the overridden component attributes into ``pypsa.Network()``.
|
||||
|
||||
* 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).
|
||||
|
||||
* Removed stale industry demand rules ``build_industrial_energy_demand_per_country``
|
||||
and ``build_industrial_demand``. These are superseded with more regionally resolved rules.
|
||||
|
||||
* 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:
|
||||
The previous version allocated sites to the closest bus,
|
||||
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
|
||||
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.
|
||||
|
||||
* Show progress in build rules with ``tqdm`` progress bars.
|
||||
|
||||
* Reduced verbosity of ``Snakefile`` through directory prefixes.
|
||||
|
||||
* 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.
|
||||
|
||||
* 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
|
||||
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.
|
||||
* 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.
|
||||
* 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,
|
||||
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.
|
||||
* 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.
|
||||
* 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>`_).
|
||||
|
||||
* Updated data bundle and moved data bundle to zenodo.org (`10.5281/zenodo.5546517 <https://doi.org/10.5281/zenodo.5546517>`_).
|
||||
|
||||
|
||||
**Bugfixes and Compatibility**
|
||||
|
||||
* Compatibility with ``atlite>=0.2``. Older versions of ``atlite`` will no longer work.
|
||||
|
||||
* Corrected calculation of "gas for industry" carbon capture efficiency.
|
||||
|
||||
* Implemented changes to ``n.snapshot_weightings`` in PyPSA v0.18.0.
|
||||
|
||||
* 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.
|
||||
Fuel-switching for machinery from oil to electricity can be set exogenously in the ``config.yaml``
|
||||
`#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>`_].
|
||||
* 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>`_].
|
||||
|
||||
* New dependencies: ``tqdm``, ``atlite>=0.2.4``, ``pytz`` and ``geopy`` (optional).
|
||||
These are included in the environment specifications of PyPSA-Eur v0.3.0.
|
||||
|
||||
Many thanks to all who contributed to this release!
|
||||
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
# difference of max potential and today's share of district heating
|
||||
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
|
||||
print(
|
||||
"The current district heating share compared to the maximum",
|
||||
|
Loading…
Reference in New Issue
Block a user