From cb7061d6030d73e3d01b7f0c192c65263977d7b5 Mon Sep 17 00:00:00 2001 From: chrstphtrs Date: Thu, 11 Apr 2024 15:55:11 +0200 Subject: [PATCH] Change all documentation links to be anonymous by adding double underscore suffix to avoid automatic target creation (which is triggered by single underscore suffix) --- doc/configuration.rst | 12 +- doc/costs.rst | 4 +- doc/foresight.rst | 4 +- doc/index.rst | 44 +++--- doc/installation.rst | 26 ++-- doc/introduction.rst | 14 +- doc/licenses.rst | 12 +- doc/limitations.rst | 2 +- doc/preparation.rst | 8 +- doc/release_notes.rst | 298 ++++++++++++++++++------------------- doc/retrieve.rst | 20 +-- doc/sector.rst | 11 +- doc/simplification.rst | 4 +- doc/spatial_resolution.rst | 14 +- doc/supply_demand.rst | 184 +++++++++++------------ doc/support.rst | 10 +- doc/tutorial.rst | 2 +- doc/validation.rst | 2 +- doc/wildcards.rst | 2 +- 19 files changed, 340 insertions(+), 333 deletions(-) diff --git a/doc/configuration.rst b/doc/configuration.rst index dae91380..d531ee66 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -90,9 +90,9 @@ For each wildcard, a **list of values** is provided. The rule ``results/networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc`` for **all combinations** of the provided wildcard values as defined by Python's `itertools.product(...) -`_ function +`__ function that snakemake's `expand(...) function -`_ +`__ uses. An exemplary dependency graph (starting from the simplification rules) then looks like this: @@ -129,7 +129,7 @@ An exemplary dependency graph (starting from the simplification rules) then look ``snapshots`` ============= -Specifies the temporal range to build an energy system model for as arguments to `pandas.date_range `_ +Specifies the temporal range to build an energy system model for as arguments to `pandas.date_range `__ .. literalinclude:: ../config/config.default.yaml :language: yaml @@ -197,7 +197,7 @@ Switches for some rules and optional features. ``atlite`` ========== -Define and specify the ``atlite.Cutout`` used for calculating renewable potentials and time-series. All options except for ``features`` are directly used as `cutout parameters `_. +Define and specify the ``atlite.Cutout`` used for calculating renewable potentials and time-series. All options except for ``features`` are directly used as `cutout parameters `__. .. literalinclude:: ../config/config.default.yaml :language: yaml @@ -427,7 +427,7 @@ overwrite the existing values. :widths: 22,7,22,33 :file: configtables/biomass.csv -The list of available biomass is given by the category in `ENSPRESO_BIOMASS `_, namely: +The list of available biomass is given by the category in `ENSPRESO_BIOMASS `__, namely: - Agricultural waste - Manure solid, liquid @@ -564,7 +564,7 @@ The list of available biomass is given by the category in `ENSPRESO_BIOMASS `_ and then +`PyPSA/technology-data `__ and then saved to a file ``resources/costs_{year}.csv``. The ``config/config.yaml`` provides options to choose a reference year and use a specific version of the repository. @@ -30,7 +30,7 @@ years compiled from various sources, namely for - carbon-dioxide intensity. Many values are taken from a database published by the Danish Energy Agency (`DEA -`_). +`__). The given overnight capital costs are annualised to net present costs diff --git a/doc/foresight.rst b/doc/foresight.rst index c749c84c..400f67ce 100644 --- a/doc/foresight.rst +++ b/doc/foresight.rst @@ -166,13 +166,13 @@ Options The total carbon budget for the entire transition path can be indicated in the `sector_opts -`_ +`__ in ``config/config.yaml``. The carbon budget can be split among the ``planning_horizons`` following an exponential or beta decay. E.g. ``'cb40ex0'`` splits a carbon budget equal to 40 Gt :math:`_{CO_2}` following an exponential decay whose initial linear growth rate r is zero. They can also follow some user-specified path, if defined `here -`_. +`__. The paper `Speed of technological transformations required in Europe to achieve different climate goals (2022) `__ defines CO_2 budgets corresponding to global temperature increases (1.5C – 2C) diff --git a/doc/index.rst b/doc/index.rst index acff820b..07ee28d1 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -81,16 +81,16 @@ them: .. note:: You can find showcases of the model's capabilities in the Supplementary Materials of the Joule paper `The potential role of a hydrogen network in Europe - `_, the Supplementary Materials of another `paper in Joule with a + `__, the Supplementary Materials of another `paper in Joule with a description of the industry sector - `_, or in `a 2021 presentation - at EMP-E `_. + `__, or in `a 2021 presentation + at EMP-E `__. The sector-coupled extension of PyPSA-Eur was initially described in the paper `Synergies of sector coupling and transmission reinforcement in a cost-optimised, highly renewable European energy system - `_ (2018) but it differs by being based on the + `__ (2018) but it differs by being based on the higher resolution electricity transmission model `PyPSA-Eur - `_ rather than a one-node-per-country model, + `__ rather than a one-node-per-country model, and by including biomass, industry, industrial feedstocks, aviation, shipping, better carbon management, carbon capture and usage/sequestration, and gas networks. @@ -99,8 +99,8 @@ About ===== PyPSA-Eur is designed to be imported into the open energy system modelling -framework `PyPSA `_ for which `documentation -`_ is available as well. However, since the +framework `PyPSA `__ for which `documentation +`__ is available as well. However, since the workflow is modular, it should be easy to adapt the data workflow to other modelling frameworks. @@ -114,22 +114,22 @@ of the individual parts. PyPSA-Eur is under active development and has several :doc:`limitations` which you should understand before using the model. The Github repository - `issues `_ collect known + `issues `__ collect known topics we are working on. Please feel free to help or make suggestions. This project is currently maintained by the `Department of Digital -Transformation in Energy Systems `_ at the -`Technische Universität Berlin `_. Previous versions were -developed within the `IAI `_ at the `Karlsruhe Institute -of Technology (KIT) `_ which was funded by -the `Helmholtz Association `_, and by the +Transformation in Energy Systems `__ at the +`Technische Universität Berlin `__. Previous versions were +developed within the `IAI `__ at the `Karlsruhe Institute +of Technology (KIT) `__ which was funded by +the `Helmholtz Association `__, and by the `Renewable Energy Group -`_ -at `FIAS `_ to carry out simulations for the -`CoNDyNet project `_, financed by the `German Federal -Ministry for Education and Research (BMBF) `_ +`__ +at `FIAS `__ to carry out simulations for the +`CoNDyNet project `__, financed by the `German Federal +Ministry for Education and Research (BMBF) `__ as part of the `Stromnetze Research Initiative -`_. +`__. Workflow @@ -153,10 +153,10 @@ to reading this documentation. - Documentation of `PyPSA `__, the package for modelling energy systems which PyPSA-Eur uses under the hood. -- Course on `Energy Systems `_ given at - Technical University of Berlin by `Prof. Dr. Tom Brown `_. -- Course on `Data Science for Energy System Modelling `_ - given at Technical University of Berlin by `Dr. Fabian Neumann `_. +- Course on `Energy Systems `__ given at + Technical University of Berlin by `Prof. Dr. Tom Brown `__. +- Course on `Data Science for Energy System Modelling `__ + given at Technical University of Berlin by `Dr. Fabian Neumann `__. Citing PyPSA-Eur diff --git a/doc/installation.rst b/doc/installation.rst index fbabfd15..dd5c912e 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -15,7 +15,7 @@ directory in which the commands following the ``%`` should be entered. Clone the Repository ==================== -First of all, clone the `PyPSA-Eur repository `_ using the version control system ``git`` in the command line. +First of all, clone the `PyPSA-Eur repository `__ using the version control system ``git`` in the command line. .. code:: bash @@ -30,11 +30,11 @@ Install Python Dependencies =============================== PyPSA-Eur relies on a set of other Python packages to function. -We recommend using the package manager `mamba `_ to install them and manage your environments. -For instructions for your operating system follow the ``mamba`` `installation guide `_. +We recommend using the package manager `mamba `__ to install them and manage your environments. +For instructions for your operating system follow the ``mamba`` `installation guide `__. You can also use ``conda`` equivalently. -The package requirements are curated in the `envs/environment.yaml `_ file. +The package requirements are curated in the `envs/environment.yaml `__ file. The environment can be installed and activated using .. code:: bash @@ -59,16 +59,16 @@ Install a Solver PyPSA passes the PyPSA-Eur network model to an external solver for performing the optimisation. PyPSA is known to work with the free software -- `HiGHS `_ -- `Cbc `_ -- `GLPK `_ (`WinGLKP `_) -- `Ipopt `_ +- `HiGHS `__ +- `Cbc `__ +- `GLPK `__ (`WinGLKP `__) +- `Ipopt `__ and the non-free, commercial software (for some of which free academic licenses are available) -- `Gurobi `_ -- `CPLEX `_ -- `FICO Xpress Solver `_ +- `Gurobi `__ +- `CPLEX `__ +- `FICO Xpress Solver `__ For installation instructions of these solvers for your operating system, follow the links above. Commercial solvers such as Gurobi and CPLEX currently significantly outperform open-source solvers for large-scale problems, and @@ -76,7 +76,7 @@ it might be the case that you can only retrieve solutions by using a commercial Nevertheless, you can still use open-source solvers for smaller problems. .. seealso:: - `Instructions how to install a solver in the documentation of PyPSA `_ + `Instructions how to install a solver in the documentation of PyPSA `__ .. note:: The rules :mod:`cluster_network` and :mod:`simplify_network` solve a mixed-integer quadratic optimisation problem for clustering. @@ -88,7 +88,7 @@ Nevertheless, you can still use open-source solvers for smaller problems. mamba activate pypsa-eur mamba install -c gurobi gurobi - Additionally, you need to setup your `Gurobi license `_. + Additionally, you need to setup your `Gurobi license `__. .. _defaultconfig: diff --git a/doc/introduction.rst b/doc/introduction.rst index d271391c..7cfa0e43 100644 --- a/doc/introduction.rst +++ b/doc/introduction.rst @@ -14,7 +14,7 @@ .. note:: - Find the introductory slides `here `_. + Find the introductory slides `here `__. .. warning:: The video only introduces the electricity-only part of PyPSA-Eur. @@ -23,7 +23,7 @@ Workflow ========= The generation of the model is controlled by the open workflow management system -`Snakemake `_. In a nutshell, the ``Snakefile`` +`Snakemake `__. In a nutshell, the ``Snakefile`` declares for each script in the ``scripts`` directory a rule which describes which files the scripts consume and produce (their corresponding input and output files). The ``snakemake`` tool then runs the scripts in the correct order @@ -54,9 +54,9 @@ preceding rules which another rule takes as input data. For the use of ``snakemake``, it makes sense to familiarize yourself quickly with the `basic tutorial -`_ and then +`__ and then read carefully through the documentation of the `command line interface -`_, noting the +`__, noting the arguments ``-j``, ``-c``, ``-f``, ``-F``, ``-n``, ``-r``, ``--dag`` and ``-t`` in particular. @@ -64,10 +64,10 @@ Scenarios, Configuration and Modification ========================================= It is easy to run PyPSA-Eur for multiple scenarios using the `wildcards feature -`_ +`__ of ``snakemake``. Wildcards allow to generalise a rule to produce all files that follow a `regular expression -`_ pattern, which defines +`__ pattern, which defines a particular scenario. One can think of a wildcard as a parameter that shows up in the input/output file names and thereby determines which rules to run, what data to retrieve and what files to produce. Details are explained in @@ -97,5 +97,5 @@ System Requirements Building the model with the scripts in this repository runs on a regular computer. But optimising for investment and operation decisions across many scenarios requires a strong interior-point solver -like `Gurobi `_ or `CPLEX `_ with more memory. +like `Gurobi `__ or `CPLEX `__ with more memory. Open-source solvers like `HiGHS ` can also be used for smaller problems. diff --git a/doc/licenses.rst b/doc/licenses.rst index 74640ea5..af531660 100644 --- a/doc/licenses.rst +++ b/doc/licenses.rst @@ -10,12 +10,12 @@ Licenses PyPSA-Eur is released under multiple licenses: -* All original source code is licensed as free software under `MIT `_. -* The documentation is licensed under `CC-BY-4.0 `_. -* Configuration files are mostly licensed under `CC0-1.0 `_. -* Data files are licensed under `CC-BY-4.0 `_. +* All original source code is licensed as free software under `MIT `__. +* The documentation is licensed under `CC-BY-4.0 `__. +* Configuration files are mostly licensed under `CC0-1.0 `__. +* Data files are licensed under `CC-BY-4.0 `__. -See the individual files and the `dep5 <.reuse/dep5>`_ file for license details. +See the individual files and the `dep5 <.reuse/dep5>`__ file for license details. Additionally, different licenses and terms of use also apply to the various input data for both electricity-only and sector-coupled modelling exercises, @@ -26,7 +26,7 @@ Electricity Systems Databundle .. note:: More details are included in `the description of the - data bundles on zenodo `_. + data bundles on zenodo `__. .. csv-table:: :header-rows: 1 diff --git a/doc/limitations.rst b/doc/limitations.rst index 2aa8ecfe..aeec5da6 100644 --- a/doc/limitations.rst +++ b/doc/limitations.rst @@ -19,7 +19,7 @@ improving the approximations. This list of limitations is incomplete and will be added to over time. .. seealso:: - See also the `GitHub repository issues `_. + See also the `GitHub repository issues `__. - **Electricity transmission network topology:** The grid data is based on a map of the ENTSO-E area that is known diff --git a/doc/preparation.rst b/doc/preparation.rst index bb55ba6b..f608e031 100644 --- a/doc/preparation.rst +++ b/doc/preparation.rst @@ -15,18 +15,18 @@ Instead we provide separate data bundles which can be obtained using the ``retrieve*`` rules (:ref:`data`). Having downloaded the necessary data, -- :mod:`build_shapes` generates GeoJSON files with shapes of the countries, exclusive economic zones and `NUTS3 `_ areas. -- :mod:`build_cutout` prepares smaller weather data portions from `ERA5 `_ for cutout ``europe-2013-era5`` and SARAH for cutout ``europe-2013-sarah``. +- :mod:`build_shapes` generates GeoJSON files with shapes of the countries, exclusive economic zones and `NUTS3 `__ areas. +- :mod:`build_cutout` prepares smaller weather data portions from `ERA5 `__ for cutout ``europe-2013-era5`` and SARAH for cutout ``europe-2013-sarah``. With these and the externally extracted ENTSO-E online map topology (``data/entsoegridkit``), it can build a base PyPSA network with the following rules: - :mod:`base_network` builds and stores the base network with all buses, HVAC lines and HVDC links, while -- :mod:`build_bus_regions` determines `Voronoi cells `_ for all substations. +- :mod:`build_bus_regions` determines `Voronoi cells `__ for all substations. Then the process continues by calculating conventional power plant capacities, potentials, and per-unit availability time series for variable renewable energy carriers and hydro power plants with the following rules: -- :mod:`build_powerplants` for today's thermal power plant capacities using `powerplantmatching `_ allocating these to the closest substation for each powerplant, +- :mod:`build_powerplants` for today's thermal power plant capacities using `powerplantmatching `__ allocating these to the closest substation for each powerplant, - :mod:`build_natura_raster` for rasterising NATURA2000 natural protection areas, - :mod:`build_ship_raster` for building shipping traffic density, - :mod:`build_renewable_profiles` for the hourly capacity factors and installation potentials constrained by land-use in each substation's Voronoi cell for PV, onshore and offshore wind, and diff --git a/doc/release_notes.rst b/doc/release_notes.rst index c5099943..74ca724b 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -51,20 +51,20 @@ Upcoming Release - Include time series of Swiss number of passenger vehicles from the `Swiss Federal Statistical Office - `_. + `__. - Updated hydro-electricity generation and capacity data from EIA. - The easiest way to sweep over multiple weather years is to use the new scenario management. An example for the necessary `create_scenarios.py` script can be found in this `Github gist - `_. + `__. * Removed rule ``copy_config``. Instead, a config file is created for each network output of the ``solve_*`` rules, with the same content as ``n.meta``. * Added new HVDC transmission projects from `TYNDP 2024 draft projects - `_. + `__. * Upgrade to Snakemake v8.5+. This version is the new minimum version required. To upgrade an existing environment, run ``conda install -c bioconda @@ -80,7 +80,7 @@ Upcoming Release * The Eurostat data was updated to the 2023 version in :mod:`build_energy_totals`. * The latest `Swiss energy totals - `_ + `__ have been updated to the 2023 version. * The JRC-IDEES data is only available until 2015. For energy totals years (``energy: energy_totals_year``) after @@ -269,10 +269,10 @@ PyPSA-Eur 0.10.0 (19th February 2024) * Default settings for recycling rates and primary product shares of high-value chemicals have been set in accordance with the values used in `Neumann et al. - (2023) `_ linearly interpolated + (2023) `__ linearly interpolated between 2020 and 2050. The recycling rates are based on data from `Agora Energiewende (2021) - `_. + `__. * Air-sourced heat pumps can now also be built in rural areas. Previously, only ground-sourced heat pumps were considered for this category @@ -390,7 +390,7 @@ PyPSA-Eur 0.10.0 (19th February 2024) (https://github.com/PyPSA/pypsa-eur/pull/861). Special thanks for this release to Koen van Greevenbroek (`@koen-vg -`_) for various new features, bugfixes and taking +`__) for various new features, bugfixes and taking care of deprecations. @@ -427,18 +427,18 @@ PyPSA-Eur 0.9.0 (5th January 2024) * Add locations, capacities and costs of existing gas storage using Global Energy Monitor's `Europe Gas Tracker - `_ + `__ (https://github.com/PyPSA/pypsa-eur/pull/835). * Add option to use `LUISA Base Map - `_ 50m land + `__ 50m land coverage dataset for land eligibility analysis in :mod:`build_renewable_profiles`. Settings are analogous to the CORINE dataset but with the key ``luisa:`` in the configuration file. To leverage the dataset's full advantages, set the excluder resolution to 50m (``excluder_resolution: 50``). For land category codes, see `Annex 1 of the technical documentation - `_ + `__ (https://github.com/PyPSA/pypsa-eur/pull/842). * Add option to capture CO2 contained in biogas when upgrading (``sector: @@ -681,7 +681,7 @@ PyPSA-Eur 0.8.1 (27th July 2023) * Add option to consider dynamic line rating based on wind speeds and temperature according to `Glaum and Hofmann (2022) - `_. See configuration section ``lines: + `__. See configuration section ``lines: dynamic_line_rating:`` for more details. (https://github.com/PyPSA/pypsa-eur/pull/675) * Add option to include a piecewise linear approximation of transmission losses, @@ -700,7 +700,7 @@ PyPSA-Eur 0.8.1 (27th July 2023) * 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 - `_ + `__ in the snakemake documentation. (https://github.com/PyPSA/pypsa-eur/pull/663) * A new function named ``sanitize_carrier`` ensures that all unique carrier @@ -809,7 +809,7 @@ PyPSA-Eur 0.8.0 (18th March 2023) * The :mod:`solve_network` script now uses the ``linopy`` backend of PyPSA and is applied for both electricity-only and sector-coupled models. This requires an adjustment of custom ``extra_functionality``. - See the `migration guide `_ in the PyPSA documentation. + See the `migration guide `__ in the PyPSA documentation. * The configuration file ``config.default.yaml`` now also includes settings for sector-coupled models, which will be ignored when the user runs @@ -914,7 +914,7 @@ PyPSA-Eur 0.7.0 (16th February 2023) inclusive:`` to address the upstream deprecation with ``pandas=1.4``. The previous setting ``None`` is no longer supported and replaced by ``both``, see the `pandas documentation - `_. + `__. Minimum version is now ``pandas>=1.4``. * The configuration setting ``summary_dir`` was removed. @@ -968,7 +968,7 @@ PyPSA-Eur 0.6.1 (20th September 2022) * Individual commits are now tested against pre-commit hooks. This includes black style formatting, sorting of package imports, Snakefile formatting and others. Installation instructions can for the pre-commit can be found `here - `_. + `__. * Pre-commit CI is now part of the repository's CI. @@ -991,7 +991,7 @@ PyPSA-Eur 0.6.0 (10th September 2022) * Functionality to consider shipping routes when calculating the available area for offshore technologies were added. Data for the shipping density comes from the `Global Shipping Traffic Density dataset - `_. + `__. * When transforming all transmission lines to a unified voltage level of 380kV, the workflow now preserves the transmission capacity rather than electrical @@ -1028,7 +1028,7 @@ PyPSA-Eur 0.5.0 (27th July 2022) ``from_opsd`` to ``True``. * Add operational reserve margin constraint analogous to `GenX implementation - `_. Can be activated + `__. Can be activated with config setting ``electricity: operational_reserve:``. * Implement country-specific Energy Availability Factors (EAFs) for nuclear @@ -1054,12 +1054,12 @@ PyPSA-Eur 0.5.0 (27th July 2022) * Techno-economic parameters of technologies (e.g. costs and efficiencies) will now be retrieved from a separate repository `PyPSA/technology-data - `_ that collects assumptions from a + `__ that collects assumptions from a variety of sources. It is activated by default with ``enable: retrieve_cost_data: true`` and controlled with ``costs: year:`` and ``costs: version:``. The location of this data changed from ``data/costs.csv`` to ``resources/costs.csv`` [`#184 - `_]. + `__]. * A new section ``conventional`` was added to the config file. This section contains configurations for conventional carriers. @@ -1074,18 +1074,18 @@ PyPSA-Eur 0.5.0 (27th July 2022) * Add an efficiency factor of 88.55% to offshore wind capacity factors as a proxy for wake losses. More rigorous modelling is `planned - `_ [`#277 - `_]. + `__ [`#277 + `__]. * Following discussion in `#285 - `_ we have disabled the + `__ we have disabled the correction factor for solar PV capacity factors by default while satellite data is used. A correction factor of 0.854337 is recommended if reanalysis data like ERA5 is used. * The default deployment density of AC- and DC-connected offshore wind capacity is reduced from 3 MW/sqkm to a more conservative estimate of 2 MW/sqkm [`#280 - `_]. + `__]. * The inclusion of renewable carriers is now specified in the config entry ``renewable_carriers``. Before this was done by commenting/uncommenting @@ -1114,12 +1114,12 @@ PyPSA-Eur 0.5.0 (27th July 2022) * Resource definitions for memory usage now follow `Snakemake standard resource definition - `_ + `__ ``mem_mb`` rather than ``mem``. * The powerplants that have been shut down by 2021 are filtered out. -* Updated historical `EIA hydro generation data `_. +* Updated historical `EIA hydro generation data `__. * Network building is made deterministic by supplying a fixed random state to network clustering routines. @@ -1168,24 +1168,24 @@ Synchronisation Release - Ukraine and Moldova (17th March 2022) --------------------------------------------------------------- On March 16, 2022, the transmission networks of Ukraine and Moldova have -successfully been `synchronised with the continental European grid `_. We have taken +successfully been `synchronised with the continental European grid `__. We have taken this as an opportunity to add the power systems of Ukraine and Moldova to PyPSA-Eur. This includes: .. image:: img/synchronisation.png :width: 500 -* the transmission network topology from the `ENTSO-E interactive map `_. +* the transmission network topology from the `ENTSO-E interactive map `__. -* existing power plants (incl. nuclear, coal, gas and hydro) from the `powerplantmatching `_ tool +* existing power plants (incl. nuclear, coal, gas and hydro) from the `powerplantmatching `__ tool -* country-level load time series from ENTSO-E through the `OPSD platform `_, which are then distributed heuristically to substations by GDP and population density. +* country-level load time series from ENTSO-E through the `OPSD platform `__, which are then distributed heuristically to substations by GDP and population density. * wind and solar profiles based on ERA5 and SARAH-2 weather data -* hydro profiles based on historical `EIA generation data `_ +* hydro profiles based on historical `EIA generation data `__ -* a simplified calculation of wind and solar potentials based on the `Copernicus Land Cover dataset `_. +* a simplified calculation of wind and solar potentials based on the `Copernicus Land Cover dataset `__. * electrical characteristics of 750 kV transmission lines @@ -1206,18 +1206,18 @@ PyPSA-Eur 0.4.0 (22th September 2021) * With this release, we change the license from copyleft GPLv3 to the more liberal MIT license with the consent of all contributors - [`#276 `_]. + [`#276 `__]. * Switch to the new major ``atlite`` release v0.2. The version upgrade comes along with significant speed up for the rule ``build_renewable_profiles.py`` (~factor 2). A lot of the code which calculated the land-use availability is now outsourced and does not rely on ``glaes``, ``geokit`` anymore. This facilitates the environment building and version compatibility of ``gdal``, ``libgdal`` with - other packages [`#224 `_]. + other packages [`#224 `__]. * Implemented changes to ``n.snapshot_weightings`` in new PyPSA version v0.18 - (cf. `PyPSA/PyPSA/#227 `_) - [`#259 `_]. + (cf. `PyPSA/PyPSA/#227 `__) + [`#259 `__]. * Add option to pre-aggregate nodes without power injections (positive or negative, i.e. generation or demand) to electrically closest nodes or neighbors @@ -1226,18 +1226,18 @@ PyPSA-Eur 0.4.0 (22th September 2021) * In :mod:`simplify_network`, bus columns with no longer correct entries are removed (symbol, tags, under_construction, substation_lv, substation_off) - [`#219 `_] + [`#219 `__] * Add option to include marginal costs of links representing fuel cells, electrolysis, and battery inverters - [`#232 `_]. + [`#232 `__]. * The rule and script ``build_country_flh`` are removed as they are no longer used or maintained. * The connection cost of generators in :mod:`simplify_network` are now reported in ``resources/connection_costs_s{simpl}.csv`` - [`#261 `_]. + [`#261 `__]. * The tutorial cutout was renamed from ``cutouts/europe-2013-era5.nc`` to ``cutouts/be-03-2013-era5.nc`` to accommodate tutorial and productive @@ -1247,72 +1247,72 @@ PyPSA-Eur 0.4.0 (22th September 2021) potentials was deprecated and now defaults to ``True``. * Update dependencies in ``envs/environment.yaml`` - [`#257 `_] + [`#257 `__] * Continuous integration testing switches to Github Actions from Travis CI - [`#252 `_]. + [`#252 `__]. * Documentation on readthedocs.io is now built with ``pip`` only and no longer - requires ``conda`` [`#267 `_]. + requires ``conda`` [`#267 `__]. -* Use ``Citation.cff`` [`#273 `_]. +* Use ``Citation.cff`` [`#273 `__]. **Bugs and Compatibility** -* Support for PyPSA v0.18 [`#268 `_]. +* Support for PyPSA v0.18 [`#268 `__]. * Minimum Python version set to ``3.8``. -* Removed ``six`` dependency [`#245 `_]. +* Removed ``six`` dependency [`#245 `__]. * Update :mod:`plot_network` and :mod:`make_summary` rules to latest PyPSA - versions [`#270 `_]. + versions [`#270 `__]. * Keep converter links to store components when using the ``ATK`` - wildcard and only remove DC links [`#214 `_]. + wildcard and only remove DC links [`#214 `__]. * Value for ``co2base`` in ``config.yaml`` adjusted to 1.487e9 t CO2-eq (from 3.1e9 t CO2-eq). The new value represents emissions related to the electricity sector for EU+UK+Balkan. The old value was too high and used when the emissions wildcard in ``{opts}`` was used - [`#233 `_]. + [`#233 `__]. * Add escape in :mod:`base_network` if all TYNDP links are already contained in the network - [`#246 `_]. + [`#246 `__]. * In :mod:`solve_operations_network` the optimised capacities are now fixed for all extendable links, not only HVDC links - [`#244 `_]. + [`#244 `__]. * The ``focus_weights`` are now also considered when pre-clustering in the :mod:`simplify_network` rule - [`#241 `_]. + [`#241 `__]. * in :mod:`build_renewable_profile` where offshore wind profiles could - no longer be created [`#249 `_]. + no longer be created [`#249 `__]. * Lower expansion limit of extendable carriers is now set to the existing capacity, i.e. ``p_nom_min = p_nom`` (0 before). Simultaneously, the upper limit (``p_nom_max``) is now the maximum of the installed capacity (``p_nom``) and the previous estimate based on land availability (``p_nom_max``) - [`#260 `_]. + [`#260 `__]. * Solving an operations network now includes optimized store capacities as well. Before only lines, links, generators and storage units were considered - [`#269 `_]. + [`#269 `__]. * With ``load_shedding: true`` in the solving options of ``config.yaml`` load shedding generators are only added at the AC buses, excluding buses for H2 - and battery stores [`#269 `_]. + and battery stores [`#269 `__]. * Delete duplicated capital costs at battery discharge link - [`#240 `_]. + [`#240 `__]. * Propagate the solver log file name to the solver. Previously, the PyPSA network solving functions were not told about the solver logfile specified - in the Snakemake file [`#247 `_] + in the Snakemake file [`#247 `__] PyPSA-Eur 0.3.0 (7th December 2020) ----------------------------------- @@ -1325,29 +1325,29 @@ Using the ``{opts}`` wildcard for scenario: For example ``EQ0.5c`` set in the ``{opts}`` wildcard requires each country to produce on average at least 50% of its consumption. Additionally, the option ``ATK`` requires autarky at each node and removes all means of power transmission through lines and links. ``ATKc`` only removes cross-border transfer capacities. - [`#166 `_]. + [`#166 `__]. * Added an option to alter the capital cost (``c``) or installable potentials (``p``) of carriers by a factor via ``carrier+{c,p}factor`` in the ``{opts}`` wildcard. This can be useful for exploring uncertain cost parameters. Example: ``solar+c0.5`` reduces the capital cost of solar to 50% of original values - [`#167 `_, `#207 `_]. + [`#167 `__, `#207 `__]. * Added an option to the ``{opts}`` wildcard that applies a time series segmentation algorithm based on renewables, hydro inflow and load time series to produce a given total number of adjacent snapshots of varying lengths. This feature is an alternative to downsampling the temporal resolution by simply averaging and - uses the `tsam `_ package - [`#186 `_]. + uses the `tsam `__ package + [`#186 `__]. More OPSD integration: -* Add renewable power plants from `OPSD `_ to the network for specified technologies. +* Add renewable power plants from `OPSD `__ to the network for specified technologies. This will overwrite the capacities calculated from the heuristic approach in :func:`estimate_renewable_capacities()` - [`#212 `_]. + [`#212 `__]. -* Electricity consumption data is now retrieved directly from the `OPSD website `_ using the rule :mod:`build_electricity_demand`. +* Electricity consumption data is now retrieved directly from the `OPSD website `__ using the rule :mod:`build_electricity_demand`. The user can decide whether to take the ENTSO-E power statistics data (default) or the ENTSO-E transparency data - [`#211 `_]. + [`#211 `__]. Other: @@ -1355,93 +1355,93 @@ Other: Then, the rule looks for custom busmaps at ``data/custom_busmap_elec_s{simpl}_{clusters}.csv``, which should have the same format as ``resources/busmap_elec_s{simpl}_{clusters}.csv``. i.e. the index should contain the buses of ``networks/elec_s{simpl}.nc`` - [`#193 `_]. + [`#193 `__]. * Line and link capacities can be capped in the ``config.yaml`` at ``lines: s_nom_max:`` and ``links: p_nom_max``: - [`#166 `_]. + [`#166 `__]. * Added Google Cloud Platform tutorial (for Windows users) - [`#177 `_]. + [`#177 `__]. **Changes** * Don't remove capital costs from lines and links, when imposing a line volume limit (``lv``) or a line cost limit (``lc``). Previously, these were removed to move the expansion in direction of the limit - [`#183 `_]. + [`#183 `__]. * The mappings for clustered lines and buses produced by the :mod:`simplify_network` and :mod:`cluster_network` rules changed from Hierarchical Data Format (``.h5``) to Comma-Separated Values format (``.csv``) for ease of use. - [`#198 `_] + [`#198 `__] * The N-1 security margin for transmission lines is now fixed to a provided value in ``config.yaml``, removing an undocumented linear interpolation between 0.5 and 0.7 in the range between 37 and 200 nodes. - [`#199 `_]. + [`#199 `__]. * Modelling hydrogen and battery storage with Store and Link components is now the default, rather than using StorageUnit components with fixed power-to-energy ratio - [`#205 `_]. + [`#205 `__]. * Use ``mamba`` (https://github.com/mamba-org/mamba) for faster Travis CI builds - [`#196 `_]. + [`#196 `__]. * Multiple smaller changes: Removed unused ``{network}`` wildcard, moved environment files to dedicated ``envs`` folder, removed sector-coupling components from configuration files, updated documentation colors, minor refactoring and code cleaning - [`#190 `_]. + [`#190 `__]. **Bugs and Compatibility** * Add compatibility for pyomo 5.7.0 in :mod:`cluster_network` and :mod:`simplify_network` - [`#172 `_]. + [`#172 `__]. * Fixed a bug for storage units such that individual store and dispatch efficiencies are correctly taken account of rather than only their round-trip efficiencies. In the cost database (``data/costs.csv``) the efficiency of battery inverters should be stated as per discharge/charge rather than per roundtrip - [`#202 `_]. + [`#202 `__]. * Corrected exogenous emission price setting (in ``config: cost: emission price:``), which now correctly accounts for the efficiency and effective emission of the generators - [`#171 `_]. + [`#171 `__]. * Corrected HVDC link connections (a) between Norway and Denmark and (b) mainland Italy, Corsica (FR) and Sardinia (IT) as well as for East-Western and Anglo-Scottish interconnectors - [`#181 `_, `#206 `_]. + [`#181 `__, `#206 `__]. * Fix bug of clustering ``offwind-{ac,dc}`` generators in the option of high-resolution generators for renewables. Now, there are more sites for ``offwind-{ac,dc}`` available than network nodes. Before, they were clustered to the resolution of the network (``elec_s1024_37m.nc``: 37 network nodes, 1024 generators) - [`#191 `_]. + [`#191 `__]. * Raise a warning if ``tech_colors`` in the config are not defined for all carriers - [`#178 `_]. + [`#178 `__]. PyPSA-Eur 0.2.0 (8th June 2020) ------------------------------- -* The optimization is now performed using the ``pyomo=False`` setting in the :func:`pypsa.lopf.network_lopf`. This speeds up the solving process significantly and consumes much less memory. The inclusion of additional constraints were adjusted to the new implementation. They are all passed to the :func:`network_lopf` function via the ``extra_functionality`` argument. The rule ``trace_solve_network`` was integrated into the rule :mod:`solve_network` and can be activated via configuration with ``solving: options: track_iterations: true``. The charging and discharging capacities of batteries modelled as store-link combination are now coupled [`#116 `_]. +* The optimization is now performed using the ``pyomo=False`` setting in the :func:`pypsa.lopf.network_lopf`. This speeds up the solving process significantly and consumes much less memory. The inclusion of additional constraints were adjusted to the new implementation. They are all passed to the :func:`network_lopf` function via the ``extra_functionality`` argument. The rule ``trace_solve_network`` was integrated into the rule :mod:`solve_network` and can be activated via configuration with ``solving: options: track_iterations: true``. The charging and discharging capacities of batteries modelled as store-link combination are now coupled [`#116 `__]. -* An updated extract of the `ENTSO-E Transmission System Map `_ (including Malta) was added to the repository using the `GridKit `_ tool. This tool has been updated to retrieve up-to-date map extracts using a single `script `_. The update extract features 5322 buses, 6574 lines, 46 links. [`#118 `_]. +* An updated extract of the `ENTSO-E Transmission System Map `__ (including Malta) was added to the repository using the `GridKit `__ tool. This tool has been updated to retrieve up-to-date map extracts using a single `script `__. The update extract features 5322 buses, 6574 lines, 46 links. [`#118 `__]. -* Added `FSFE REUSE `_ compliant license information. Documentation now licensed under CC-BY-4.0 [`#160 `_]. +* Added `FSFE REUSE `__ compliant license information. Documentation now licensed under CC-BY-4.0 [`#160 `__]. -* Added a 30 minute `video introduction `_ and a 20 minute `video tutorial `_ +* Added a 30 minute `video introduction `__ and a 20 minute `video tutorial `__ * Networks now store a color and a nicely formatted name for each carrier, accessible via ``n.carrier['color']`` and ``n.carrier['nice_name'] ``(networks after ``elec.nc``). * Added an option to skip iterative solving usually performed to update the line impedances of expanded lines at ``solving: options: skip_iterations:``. -* ``snakemake`` rules for retrieving cutouts and the natura raster can now be disabled independently from their respective rules to build them; via ``config.*yaml`` [`#136 `_]. +* ``snakemake`` rules for retrieving cutouts and the natura raster can now be disabled independently from their respective rules to build them; via ``config.*yaml`` [`#136 `__]. -* Removed the ``id`` column for custom power plants in ``data/custom_powerplants.csv`` to avoid custom power plants with conflicting ids getting attached to the wrong bus [`#131 `_]. +* Removed the ``id`` column for custom power plants in ``data/custom_powerplants.csv`` to avoid custom power plants with conflicting ids getting attached to the wrong bus [`#131 `__]. -* Add option ``renewables: {carrier}: keep_all_available_areas:`` to use all available weather cells for renewable profile and potential generation. The default ignores weather cells where only less than 1 MW can be installed [`#150 `_]. +* Add option ``renewables: {carrier}: keep_all_available_areas:`` to use all available weather cells for renewable profile and potential generation. The default ignores weather cells where only less than 1 MW can be installed [`#150 `__]. -* Added a function ``_helpers.load_network()`` which loads a network with overridden components specified in ``snakemake.config['override_components']`` [`#128 `_]. +* Added a function ``_helpers.load_network()`` which loads a network with overridden components specified in ``snakemake.config['override_components']`` [`#128 `__]. -* Bugfix in :mod:`base_network` which now finds all closest links, not only the first entry [`#143 `_]. +* Bugfix in :mod:`base_network` which now finds all closest links, not only the first entry [`#143 `__]. -* Bugfix in :mod:`cluster_network` which now skips recalculation of link parameters if there are no links [`#149 `_]. +* Bugfix in :mod:`cluster_network` which now skips recalculation of link parameters if there are no links [`#149 `__]. -* Added information on pull requests to contribution guidelines [`#151 `_]. +* Added information on pull requests to contribution guidelines [`#151 `__]. * Improved documentation on open-source solver setup and added usage warnings. @@ -1452,31 +1452,31 @@ PyPSA-Eur 0.1.0 (9th January 2020) This is the first release of PyPSA-Eur, a model of the European power system at the transmission network level. Recent changes include: -* Documentation on installation, workflows and configuration settings is now available online at `pypsa-eur.readthedocs.io `_ [`#65 `_]. +* Documentation on installation, workflows and configuration settings is now available online at `pypsa-eur.readthedocs.io `__ [`#65 `__]. -* The ``conda`` environment files were updated and extended [`#81 `_]. +* The ``conda`` environment files were updated and extended [`#81 `__]. -* The power plant database was updated with extensive filtering options via ``pandas.query`` functionality [`#84 `_ and `#94 `_]. +* The power plant database was updated with extensive filtering options via ``pandas.query`` functionality [`#84 `__ and `#94 `__]. -* Continuous integration testing with `Travis CI `_ is now included for Linux, Mac and Windows [`#82 `_]. +* Continuous integration testing with `Travis CI `__ is now included for Linux, Mac and Windows [`#82 `__]. -* Data dependencies were moved to `zenodo `_ and are now versioned [`#60 `_]. +* Data dependencies were moved to `zenodo `__ and are now versioned [`#60 `__]. -* Data dependencies are now retrieved directly from within the snakemake workflow [`#86 `_]. +* Data dependencies are now retrieved directly from within the snakemake workflow [`#86 `__]. -* Emission prices can be added to marginal costs of generators through the keywords ``Ep`` in the ``{opts}`` wildcard [`#100 `_]. +* Emission prices can be added to marginal costs of generators through the keywords ``Ep`` in the ``{opts}`` wildcard [`#100 `__]. -* An option is introduced to add extendable nuclear power plants to the network [`#98 `_]. +* An option is introduced to add extendable nuclear power plants to the network [`#98 `__]. -* Focus weights can now be specified for particular countries for the network clustering, which allows to set a proportion of the total number of clusters for particular countries [`#87 `_]. +* Focus weights can now be specified for particular countries for the network clustering, which allows to set a proportion of the total number of clusters for particular countries [`#87 `__]. -* A new rule :mod:`add_extra_components` allows to add additional components to the network only after clustering. It is thereby possible to model storage units (e.g. battery and hydrogen) in more detail via a combination of ``Store``, ``Link`` and ``Bus`` elements [`#97 `_]. +* A new rule :mod:`add_extra_components` allows to add additional components to the network only after clustering. It is thereby possible to model storage units (e.g. battery and hydrogen) in more detail via a combination of ``Store``, ``Link`` and ``Bus`` elements [`#97 `__]. -* Hydrogen pipelines (including cost assumptions) can now be added alongside clustered network connections in the rule :mod:`add_extra_components` . Set ``electricity: extendable_carriers: Link: [H2 pipeline]`` and ensure hydrogen storage is modelled as a ``Store``. This is a first simplified stage [`#108 `_]. +* Hydrogen pipelines (including cost assumptions) can now be added alongside clustered network connections in the rule :mod:`add_extra_components` . Set ``electricity: extendable_carriers: Link: [H2 pipeline]`` and ensure hydrogen storage is modelled as a ``Store``. This is a first simplified stage [`#108 `__]. -* Logfiles for all rules of the ``snakemake`` workflow are now written in the folder ``log/`` [`#102 `_]. +* Logfiles for all rules of the ``snakemake`` workflow are now written in the folder ``log/`` [`#102 `__]. -* The new function ``_helpers.mock_snakemake`` creates a ``snakemake`` object which mimics the actual ``snakemake`` object produced by workflow by parsing the ``Snakefile`` and setting all paths for inputs, outputs, and logs. This allows running all scripts within a (I)python terminal (or just by calling ``python ``) and thereby facilitates developing and debugging scripts significantly [`#107 `_]. +* The new function ``_helpers.mock_snakemake`` creates a ``snakemake`` object which mimics the actual ``snakemake`` object produced by workflow by parsing the ``Snakefile`` and setting all paths for inputs, outputs, and logs. This allows running all scripts within a (I)python terminal (or just by calling ``python ``) and thereby facilitates developing and debugging scripts significantly [`#107 `__]. PyPSA-Eur-Sec Releases (pre-merge) @@ -1493,13 +1493,13 @@ biomass, and explicit modelling of methanol and ammonia as separate energy carriers. This release is known to work with `PyPSA-Eur -`_ Version 0.7.0 and `Technology Data -`_ Version 0.5.0. +`__ Version 0.7.0 and `Technology Data +`__ Version 0.5.0. **Gas Transmission Network** * New rule ``retrieve_gas_infrastructure_data`` that downloads and extracts the - SciGRID_gas `IGGIELGN `_ dataset from + SciGRID_gas `IGGIELGN `__ dataset from zenodo. It includes data on the transmission routes, pipe diameters, capacities, pressure, and whether the pipeline is bidirectional and carries H-Gas or L-Gas. @@ -1510,7 +1510,7 @@ This release is known to work with `PyPSA-Eur * New rule ``build_gas_input_locations`` compiles the LNG import capacities (from the Global Energy Monitor's `Europe Gas Tracker - `_, pipeline + `__, pipeline entry capacities and local production capacities for each region of the model. These are the regions where fossil gas can eventually enter the model. @@ -1523,7 +1523,7 @@ This release is known to work with `PyPSA-Eur * With the option ``sector: gas_network:``, the existing gas network is added with a lossless transport model. A length-weighted `k-edge augmentation algorithm - `_ + `__ can be run to add new candidate gas pipelines such that all regions of the model can be connected to the gas network. The number of candidates can be controlled via the setting ``sector: gas_network_connectivity_upgrade:``. When @@ -1554,7 +1554,7 @@ This release is known to work with `PyPSA-Eur * Add option for regionally-resolved geological carbon dioxide sequestration potentials through new rule ``build_sequestration_potentials`` based on - `CO2StoP `_. This + `CO2StoP `__. This can be controlled in the section ``regional_co2_sequestration_potential`` of the ``config.yaml``. It includes options to select the level of conservatism, whether onshore potentials should be included, the respective upper and lower @@ -1566,7 +1566,7 @@ This release is known to work with `PyPSA-Eur ``seq200`` in the ``{sector_opts}`` wildcard (for limit of 200 Mt CO2). * Add option to include `Allam cycle gas power plants - `_ (``allam_cycle``). + `__ (``allam_cycle``). * Add option for planning a new carbon dioxide network (``co2network``). @@ -1585,7 +1585,7 @@ This release is known to work with `PyPSA-Eur * Add regionalised hydrogen salt cavern storage potentials from `Technical Potential of Salt Caverns for Hydrogen Storage in Europe - `_. This data is compiled in + `__. This data is compiled in a new rule ``build_salt_cavern_potentials``. * Add option to resolve ammonia as separate energy carrier with Haber-Bosch @@ -1602,11 +1602,11 @@ This release is known to work with `PyPSA-Eur * Demand for liquid hydrogen in international shipping is now geographically distributed by port trade volumes in a new rule ``build_shipping_demand`` using data from the `World Bank Data Catalogue - `_. + `__. Domestic shipping remains distributed by population. * Add option to aggregate network temporally using representative snapshots or - segments (with `tsam `_). + segments (with `tsam `__). * Add option for minimum part load for Fischer-Tropsch plants (default: 90%) and methanolisation plants (default: 50%). @@ -1659,7 +1659,7 @@ This release is known to work with `PyPSA-Eur PyPSA network. * Updated `data bundle - `_ + `__ that includes the hydrogan salt cavern storage potentials. * Updated and extended documentation in @@ -1687,7 +1687,7 @@ This release is known to work with `PyPSA-Eur expansion of previous iteration as minimum capacity for next iteration. * Further rather minor bugfixes for myopic optimisation code (see `#256 - `_). + `__). Many thanks to all who contributed to this release! @@ -1706,9 +1706,9 @@ more options in setting exogenous transition paths, besides many performance improvements. This release is known to work with `PyPSA-Eur -`_ Version 0.4.0, `Technology Data -`_ Version 0.3.0 and -`PyPSA `_ Version 0.18.0. +`__ Version 0.4.0, `Technology Data +`__ Version 0.3.0 and +`PyPSA `__ Version 0.18.0. Please note that the data bundle has also been updated. @@ -1725,11 +1725,11 @@ Please note that the data bundle has also been updated. battery costs. * Separate basic chemicals into HVC (high-value chemicals), chlorine, methanol and ammonia - [`#166 `_]. + [`#166 `__]. * Add option to specify reuse, primary production, and mechanical and chemical recycling fraction of platics - [`#166 `_]. + [`#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. @@ -1743,11 +1743,11 @@ Please note that the data bundle has also been updated. 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 `_]. + [`#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 `_]. + district_heating:`` [`#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 @@ -1767,16 +1767,16 @@ Please note that the data bundle has also been updated. factor 2. In this example, ``e_nom_max`` represents the CO2 sequestration potential in Europe. -* Use `JRC ENSPRESO database `_ to +* Use `JRC ENSPRESO database `__ to spatially disaggregate biomass potentials to PyPSA-Eur regions based on overlaps with NUTS2 regions from ENSPRESO (proportional to area) (`#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 - `_ in the new optional rule + `__ in the new optional rule ``build_biomass_transport_costs``. Biomass transport can be activated with the setting ``sector: biomass_transport: true``. @@ -1794,7 +1794,7 @@ Please note that the data bundle has also been updated. * 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 `_]. + among the regions in every country [`#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, @@ -1860,7 +1860,7 @@ Please note that the data bundle has also been updated. * Consistent use of ``__main__`` block and further unspecific code cleaning. -* Updated data bundle and moved data bundle to zenodo.org (`10.5281/zenodo.5546517 `_). +* Updated data bundle and moved data bundle to zenodo.org (`10.5281/zenodo.5546517 `__). **Bugfixes and Compatibility** @@ -1884,7 +1884,7 @@ PyPSA-Eur-Sec 0.5.0 (21st May 2021) This release includes improvements to the cost database for building retrofits, carbon budget management and wildcard settings, as well as an important bugfix for the emissions from land transport. -This release is known to work with `PyPSA-Eur `_ Version 0.3.0 and `Technology Data `_ Version 0.2.0. +This release is known to work with `PyPSA-Eur `__ Version 0.3.0 and `Technology Data `__ Version 0.2.0. Please note that the data bundle has also been updated. @@ -1905,15 +1905,15 @@ PyPSA-Eur-Sec 0.4.0 (11th December 2020) This release includes a more accurate nodal disaggregation of industry demand within each country, fixes to CHP and CCS representations, as well as changes to some configuration settings. -It has been released to coincide with `PyPSA-Eur `_ Version 0.3.0 and `Technology Data `_ Version 0.2.0, and is known to work with these releases. +It has been released to coincide with `PyPSA-Eur `__ Version 0.3.0 and `Technology Data `__ Version 0.2.0, and is known to work with these releases. New features: -* The `Hotmaps Industrial Database `_ is used to disaggregate the industrial demand spatially to the nodes inside each country (previously it was distributed by population density). +* The `Hotmaps Industrial Database `__ is used to disaggregate the industrial demand spatially to the nodes inside each country (previously it was distributed by population density). * Electricity demand from industry is now separated from the regular electricity demand and distributed according to the industry demand. Only the remaining regular electricity demand for households and services is distributed according to GDP and population. -* A cost database for the retrofitting of the thermal envelope of residential and services buildings has been integrated, as well as endogenous optimisation of the level of retrofitting. This is described in the paper `Mitigating heat demand peaks in buildings in a highly renewable European energy system `_. Retrofitting can be activated both exogenously and endogenously from the ``config.yaml``. -* The biomass and gas combined heat and power (CHP) parameters ``c_v`` and ``c_b`` were read in assuming they were extraction plants rather than back pressure plants. The data is now corrected in `Technology Data `_ Version 0.2.0 to the correct DEA back pressure assumptions and they are now implemented as single links with a fixed ratio of electricity to heat output (even as extraction plants, they were always sitting on the backpressure line in simulations, so there was no point in modelling the full heat-electricity feasibility polygon). The old assumptions underestimated the heat output. -* The Danish Energy Agency released `new assumptions for carbon capture `_ in October 2020, which have now been incorporated in PyPSA-Eur-Sec, including direct air capture (DAC) and post-combustion capture on CHPs, cement kilns and other industrial facilities. The electricity and heat demand for DAC is modelled for each node (with heat coming from district heating), but currently the electricity and heat demand for industrial capture is not modelled very cleanly (for process heat, 10% of the energy is assumed to go to carbon capture) - a new issue will be opened on this. +* A cost database for the retrofitting of the thermal envelope of residential and services buildings has been integrated, as well as endogenous optimisation of the level of retrofitting. This is described in the paper `Mitigating heat demand peaks in buildings in a highly renewable European energy system `__. Retrofitting can be activated both exogenously and endogenously from the ``config.yaml``. +* The biomass and gas combined heat and power (CHP) parameters ``c_v`` and ``c_b`` were read in assuming they were extraction plants rather than back pressure plants. The data is now corrected in `Technology Data `__ Version 0.2.0 to the correct DEA back pressure assumptions and they are now implemented as single links with a fixed ratio of electricity to heat output (even as extraction plants, they were always sitting on the backpressure line in simulations, so there was no point in modelling the full heat-electricity feasibility polygon). The old assumptions underestimated the heat output. +* The Danish Energy Agency released `new assumptions for carbon capture `__ in October 2020, which have now been incorporated in PyPSA-Eur-Sec, including direct air capture (DAC) and post-combustion capture on CHPs, cement kilns and other industrial facilities. The electricity and heat demand for DAC is modelled for each node (with heat coming from district heating), but currently the electricity and heat demand for industrial capture is not modelled very cleanly (for process heat, 10% of the energy is assumed to go to carbon capture) - a new issue will be opened on this. * Land transport is separated by energy carrier (fossil, hydrogen fuel cell electric vehicle, and electric vehicle), but still needs to be separated into heavy and light vehicles (the data is there, just not the code yet). * For assumptions that change with the investment year, there is a new time-dependent format in the ``config.yaml`` using a dictionary with keys for each year. Implemented examples include the CO2 budget, exogenous retrofitting share and land transport energy carrier; more parameters will be dynamised like this in future. * Some assumptions have been moved out of the code and into the ``config.yaml``, including the carbon sequestration potential and cost, the heat pump sink temperature, reductions in demand for high value chemicals, and some BEV DSM parameters and transport efficiencies. @@ -1936,7 +1936,7 @@ New features: * The script ``build_industrial_production_per_country_tomorrow.py`` determines the future industrial production of materials based on today's levels as well as assumed recycling and demand change measures. * The energy demand for each industry sector and each location in 2015 is also calculated, so that it can be later incorporated in the pathway optimization. * Ammonia production data is taken from the USGS and deducted from JRC-IDEES's "basic chemicals" so that it ammonia can be handled separately from the others (olefins, aromatics and chlorine). -* Solid biomass is no longer allowed to be used for process heat in cement and basic chemicals, since the wastes and residues cannot be guaranteed to reach the high temperatures required. Instead, solid biomass is used in the paper and pulp as well as food, beverages and tobacco industries, where required temperatures are lower (see `DOI:10.1002/er.3436 `_ and `DOI:10.1007/s12053-017-9571-y `_). +* Solid biomass is no longer allowed to be used for process heat in cement and basic chemicals, since the wastes and residues cannot be guaranteed to reach the high temperatures required. Instead, solid biomass is used in the paper and pulp as well as food, beverages and tobacco industries, where required temperatures are lower (see `DOI:10.1002/er.3436 `__ and `DOI:10.1007/s12053-017-9571-y `__). * National installable potentials for salt caverns are now applied. * When electricity distribution grids are activated, new industry electricity demand, resistive heaters and micro-CHPs are now connected to the lower voltage levels. * Gas distribution grid costs are included for gas boilers and micro-CHPs. @@ -1948,15 +1948,15 @@ New features: PyPSA-Eur-Sec 0.2.0 (21st August 2020) -------------------------------------- -This release introduces pathway optimization over many years (e.g. 2020, 2030, 2040, 2050) with myopic foresight, as well as outsourcing the technology assumptions to the `technology-data `_ repository. +This release introduces pathway optimization over many years (e.g. 2020, 2030, 2040, 2050) with myopic foresight, as well as outsourcing the technology assumptions to the `technology-data `__ repository. It is known to work with PyPSA-Eur v0.1.0 (commit bb3477cd69), PyPSA v0.17.1 and technology-data v0.1.0. New features: -* Option for pathway optimization with myopic foresight, based on the paper `Early decarbonisation of the European Energy system pays off (2020) `_. Investments are optimized sequentially for multiple years (e.g. 2020, 2030, 2040, 2050) taking account of existing assets built in previous years and their lifetimes. The script uses data on the existing assets for electricity and building heating technologies, but there are no assumptions yet for existing transport and industry (if you include these, the model will greenfield them). There are also some `outstanding issues `_ on e.g. the distribution of existing wind, solar and heating technologies within each country. To use myopic foresight, set ``foresight : 'myopic'`` in the ``config.yaml`` instead of the default ``foresight : 'overnight'``. An example configuration can be found in ``config.myopic.yaml``. More details on the implementation can be found in :doc:`myopic`. +* Option for pathway optimization with myopic foresight, based on the paper `Early decarbonisation of the European Energy system pays off (2020) `__. Investments are optimized sequentially for multiple years (e.g. 2020, 2030, 2040, 2050) taking account of existing assets built in previous years and their lifetimes. The script uses data on the existing assets for electricity and building heating technologies, but there are no assumptions yet for existing transport and industry (if you include these, the model will greenfield them). There are also some `outstanding issues `__ on e.g. the distribution of existing wind, solar and heating technologies within each country. To use myopic foresight, set ``foresight : 'myopic'`` in the ``config.yaml`` instead of the default ``foresight : 'overnight'``. An example configuration can be found in ``config.myopic.yaml``. More details on the implementation can be found in :doc:`myopic`. -* Technology assumptions (costs, efficiencies, etc.) are no longer stored in the repository. Instead, you have to install the `technology-data `_ database in a parallel directory. These assumptions are largely based on the `Danish Energy Agency Technology Data `_. More details on the installation can be found in :doc:`installation`. +* Technology assumptions (costs, efficiencies, etc.) are no longer stored in the repository. Instead, you have to install the `technology-data `__ database in a parallel directory. These assumptions are largely based on the `Danish Energy Agency Technology Data `__. More details on the installation can be found in :doc:`installation`. * Logs and benchmarks are now stored with the other model outputs in ``results/run-name/``. @@ -1979,7 +1979,7 @@ It is known to work with PyPSA-Eur v0.1.0 (commit bb3477cd69) and PyPSA v0.17.0. We are making this release since in version 0.2.0 we will introduce changes to allow myopic investment planning that will require minor changes for users of the overnight investment planning. PyPSA-Eur-Sec builds on the electricity generation and transmission -model `PyPSA-Eur `_ to add demand +model `PyPSA-Eur `__ to add demand and supply for the following sectors: transport, space and water heating, biomass, industry and industrial feedstocks. This completes the energy system and includes all greenhouse gas emitters except @@ -1988,17 +1988,17 @@ waste management, agriculture, forestry and land use. PyPSA-Eur-Sec was initially based on the model PyPSA-Eur-Sec-30 (Version 0.0.1 below) described in the paper `Synergies of sector coupling and transmission reinforcement in a cost-optimised, highly renewable European energy -system `_ (2018) but it differs by +system `__ (2018) but it differs by being based on the higher resolution electricity transmission model -`PyPSA-Eur `_ rather than a +`PyPSA-Eur `__ rather than a one-node-per-country model, and by including biomass, industry, industrial feedstocks, aviation, shipping, better carbon management, carbon capture and usage/sequestration, and gas networks. PyPSA-Eur-Sec includes PyPSA-Eur as a -`snakemake `_ -`subworkflow `_. PyPSA-Eur-Sec +`snakemake `__ +`subworkflow `__. PyPSA-Eur-Sec uses PyPSA-Eur to build the clustered transmission model along with wind, solar PV and hydroelectricity potentials and time series. Then PyPSA-Eur-Sec adds other conventional generators, storage units and @@ -2013,13 +2013,13 @@ PyPSA-Eur-Sec 0.0.2 (4th September 2020) This version, also called PyPSA-Eur-Sec-30-Path, built on PyPSA-Eur-Sec 0.0.1 (also called PyPSA-Eur-Sec-30) to include myopic pathway optimisation for the paper `Early decarbonisation of the -European energy system pays off `_ +European energy system pays off `__ (2020). The myopic pathway optimisation was then merged into the main PyPSA-Eur-Sec codebase in Version 0.2.0 above. This model has `its own github repository -`_ and is `archived -on Zenodo `_. +`__ and is `archived +on Zenodo `__. @@ -2030,12 +2030,12 @@ This is the first published version of PyPSA-Eur-Sec, also called PyPSA-Eur-Sec-30. It was first used in the research paper `Synergies of sector coupling and transmission reinforcement in a cost-optimised, highly renewable European energy system -`_ (2018). The model covers 30 +`__ (2018). The model covers 30 European countries with one node per country. It includes demand and supply for electricity, space and water heating in buildings, and land transport. -It is `archived on Zenodo `_. +It is `archived on Zenodo `__. Release Process @@ -2058,6 +2058,6 @@ Release Process * Tag a release on Github via ``git tag v0.x.x``, ``git push``, ``git push --tags``. Include release notes in the tag message. -* Make a `GitHub release `_, which automatically triggers archiving to the `zenodo code repository `_ with `MIT license `_. +* Make a `GitHub release `__, which automatically triggers archiving to the `zenodo code repository `__ with `MIT license `__. -* Send announcement on the `PyPSA mailing list `_. +* Send announcement on the `PyPSA mailing list `__. diff --git a/doc/retrieve.rst b/doc/retrieve.rst index f9d6e2a7..d21a74b4 100644 --- a/doc/retrieve.rst +++ b/doc/retrieve.rst @@ -25,12 +25,12 @@ Rule ``retrieve_cutout`` .. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6382570.svg :target: https://doi.org/10.5281/zenodo.6382570 -Cutouts are spatio-temporal subsets of the European weather data from the `ECMWF ERA5 `_ reanalysis dataset and the `CMSAF SARAH-2 `_ solar surface radiation dataset for the year 2013. -They have been prepared by and are for use with the `atlite `_ tool. You can either generate them yourself using the ``build_cutouts`` rule or retrieve them directly from `zenodo `__ through the rule ``retrieve_cutout``. +Cutouts are spatio-temporal subsets of the European weather data from the `ECMWF ERA5 `__ reanalysis dataset and the `CMSAF SARAH-2 `__ solar surface radiation dataset for the year 2013. +They have been prepared by and are for use with the `atlite `__ tool. You can either generate them yourself using the ``build_cutouts`` rule or retrieve them directly from `zenodo `__ through the rule ``retrieve_cutout``. The :ref:`tutorial` uses a smaller cutout than required for the full model (30 MB), which is also automatically downloaded. .. note:: - To download cutouts yourself from the `ECMWF ERA5 `_ you need to `set up the CDS API `_. + To download cutouts yourself from the `ECMWF ERA5 `__ you need to `set up the CDS API `__. **Relevant Settings** @@ -47,10 +47,10 @@ The :ref:`tutorial` uses a smaller cutout than required for the full model (30 M **Outputs** -- ``cutouts/{cutout}``: weather data from either the `ERA5 `_ reanalysis weather dataset or `SARAH-2 `_ satellite-based historic weather data. +- ``cutouts/{cutout}``: weather data from either the `ERA5 `__ reanalysis weather dataset or `SARAH-2 `__ satellite-based historic weather data. .. seealso:: - For details see :mod:`build_cutout` and read the `atlite documentation `_. + For details see :mod:`build_cutout` and read the `atlite documentation `__. Rule ``retrieve_natura_raster`` @@ -59,7 +59,7 @@ Rule ``retrieve_natura_raster`` .. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4706686.svg :target: https://doi.org/10.5281/zenodo.4706686 -This rule, as a substitute for :mod:`build_natura_raster`, downloads an already rasterized version (`natura.tiff `_) of `Natura 2000 `_ natural protection areas to reduce computation times. The file is placed into the ``resources`` sub-directory. +This rule, as a substitute for :mod:`build_natura_raster`, downloads an already rasterized version (`natura.tiff `__) of `Natura 2000 `__ natural protection areas to reduce computation times. The file is placed into the ``resources`` sub-directory. **Relevant Settings** @@ -74,7 +74,7 @@ This rule, as a substitute for :mod:`build_natura_raster`, downloads an already **Outputs** -- ``resources/natura.tiff``: Rasterized version of `Natura 2000 `_ natural protection areas to reduce computation times. +- ``resources/natura.tiff``: Rasterized version of `Natura 2000 `__ natural protection areas to reduce computation times. .. seealso:: For details see :mod:`build_natura_raster`. @@ -83,7 +83,7 @@ This rule, as a substitute for :mod:`build_natura_raster`, downloads an already Rule ``retrieve_electricity_demand`` ==================================== -This rule downloads hourly electric load data for each country from the `OPSD platform `_. +This rule downloads hourly electric load data for each country from the `OPSD platform `__. **Relevant Settings** @@ -97,7 +97,7 @@ None. Rule ``retrieve_cost_data`` ================================ -This rule downloads techno-economic assumptions from the `technology-data repository `_. +This rule downloads techno-economic assumptions from the `technology-data repository `__. **Relevant Settings** @@ -126,7 +126,7 @@ Rule ``retrieve_irena`` Rule ``retrieve_ship_raster`` ================================ -This rule downloads data on global shipping traffic density from the `World Bank Data Catalogue `_. +This rule downloads data on global shipping traffic density from the `World Bank Data Catalogue `__. **Relevant Settings** diff --git a/doc/sector.rst b/doc/sector.rst index ba3aa3e6..bdfc5386 100644 --- a/doc/sector.rst +++ b/doc/sector.rst @@ -7,8 +7,15 @@ Building Sector-Coupled Networks ########################################## -.. warning:: - This part of the documentation is under development. +The preparation process of the sector-coupled version of the PyPSA-Eur energy system model consists of a group of ``snakemake`` rules which are briefly outlined and explained in detail in the sections below. + +Not all data dependencies are shipped with the git repository. +Instead we provide separate data bundles which can be obtained +using the ``retrieve*`` rules (:ref:`data`). +Having downloaded the necessary data, + +- :mod:`add_brownfield` builds and stores the base network with all buses, HVAC lines and HVDC links, while + Rule ``add_brownfield`` ============================================================================== diff --git a/doc/simplification.rst b/doc/simplification.rst index 2272505d..cb048461 100644 --- a/doc/simplification.rst +++ b/doc/simplification.rst @@ -12,11 +12,11 @@ Simplifying Electricity Networks The simplification ``snakemake`` rules prepare **approximations** of the full model, for which it is computationally viable to co-optimize generation, storage and transmission capacities. - :mod:`simplify_network` transforms the transmission grid to a 380 kV only equivalent network, while -- :mod:`cluster_network` uses a `k-means `_ based clustering technique to partition the network into a given number of zones and then reduce the network to a representation with one bus per zone. +- :mod:`cluster_network` uses a `k-means `__ based clustering technique to partition the network into a given number of zones and then reduce the network to a representation with one bus per zone. The simplification and clustering steps are described in detail in the paper -- Jonas Hörsch and Tom Brown. `The role of spatial scale in joint optimisations of generation and transmission for European highly renewable scenarios `_), *14th International Conference on the European Energy Market*, 2017. `arXiv:1705.07617 `_, `doi:10.1109/EEM.2017.7982024 `_. +- Jonas Hörsch and Tom Brown. `The role of spatial scale in joint optimisations of generation and transmission for European highly renewable scenarios `__), *14th International Conference on the European Energy Market*, 2017. `arXiv:1705.07617 `__, `doi:10.1109/EEM.2017.7982024 `__. After simplification and clustering of the network, additional components may be appended in the rule :mod:`add_extra_components` and the network is prepared for solving in :mod:`prepare_network`. diff --git a/doc/spatial_resolution.rst b/doc/spatial_resolution.rst index a408f464..20158ab6 100644 --- a/doc/spatial_resolution.rst +++ b/doc/spatial_resolution.rst @@ -9,7 +9,7 @@ Spatial resolution ########################################## -The default nodal resolution of the model follows the electricity generation and transmission model `PyPSA-Eur `_, which clusters down the electricity transmission substations in each European country based on the k-means algorithm (See `cluster_network `_ for a complete explanation). This gives nodes which correspond to major load and generation centres (typically cities). +The default nodal resolution of the model follows the electricity generation and transmission model `PyPSA-Eur `__, which clusters down the electricity transmission substations in each European country based on the k-means algorithm (See `cluster_network `__ for a complete explanation). This gives nodes which correspond to major load and generation centres (typically cities). The total number of nodes for Europe is set in the ``config/config.yaml`` file under ``clusters``. The number of nodes can vary between 37, the number of independent countries / synchronous areas, and several hundred. With 200-300 nodes the model needs 100-150 GB RAM to solve with a commercial solver like Gurobi. @@ -21,7 +21,7 @@ Exemplary unsolved network clustered to 37 nodes: .. image:: ../graphics/elec_s_37.png -The total number of nodes for Europe is set in the ``config/config.yaml`` file under `clusters `_. The number of nodes can vary between 37, the number of independent countries/synchronous areas, and several hundred. With 200-300 nodes, the model needs 100-150 GB RAM to solve with a commercial solver like Gurobi. +The total number of nodes for Europe is set in the ``config/config.yaml`` file under `clusters `__. The number of nodes can vary between 37, the number of independent countries/synchronous areas, and several hundred. With 200-300 nodes, the model needs 100-150 GB RAM to solve with a commercial solver like Gurobi. Not all of the sectors are at the full nodal resolution, and some demand for some sectors is distributed to nodes using heuristics that need to be corrected. Some networks are copper-plated to reduce computational times. Here are some examples of how spatial resolution is set for different sectors in PyPSA-Eur-Sec: @@ -37,18 +37,18 @@ Here are some examples of how spatial resolution is set for different sectors in • Electricity demand in industry: Modeled as nodal, based on the location of industrial facilities from HotMaps database. • Industry demand (heat, chemicals, etc.) : Modeled as nodal, distributed in each country based on locations of industry from HotMaps database. -• Hydrogen network: Modeled as nodal (if activated in the `config `_ file). +• Hydrogen network: Modeled as nodal (if activated in the `config `__ file). -• Methane network: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config `_. One node can be considered reasonable since future demand is expected to be low and no bottlenecks are expected. Also, the nodally resolved methane grid is based on SciGRID_gas data. +• Methane network: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config `__. One node can be considered reasonable since future demand is expected to be low and no bottlenecks are expected. Also, the nodally resolved methane grid is based on SciGRID_gas data. -• Solid biomass: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config `_. Nodal modeling includes modeling biomass potential per country (given per country, then distributed by population density within) and the transport of solid biomass between countries. +• Solid biomass: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config `__. Nodal modeling includes modeling biomass potential per country (given per country, then distributed by population density within) and the transport of solid biomass between countries. -• CO2: It can be modeled as a single node for Europe or it can be nodally resolved with CO2 transport pipelines if activated in the `config `_. It should mentioned that in single node mode a transport and storage cost is added for sequestered CO2, the cost of which can be adjusted in the `config `_. +• CO2: It can be modeled as a single node for Europe or it can be nodally resolved with CO2 transport pipelines if activated in the `config `__. It should mentioned that in single node mode a transport and storage cost is added for sequestered CO2, the cost of which can be adjusted in the `config `__. • Carbonaceous fuels: Modeled as a single node for Europe by default, since transport costs for liquids are low and no bottlenecks are expected. Can be regionally resolved in configuration. **Electricity distribution network** -Contrary to the transmission grid, the grid topology at the distribution level (at and below 110 kV) is not included due to the very high computational burden. However, a link per node can be used (if activated in the `Config `_ file) to represent energy transferred between distribution and transmission levels at every node. In essence, the total energy capacity connecting the transmission grid and the low-voltage level is optimized. The cost assumptions for this link can be adjusted in Config file `options `_ , and is currently assumed to be 500 Eur/kW. +Contrary to the transmission grid, the grid topology at the distribution level (at and below 110 kV) is not included due to the very high computational burden. However, a link per node can be used (if activated in the `Config `__ file) to represent energy transferred between distribution and transmission levels at every node. In essence, the total energy capacity connecting the transmission grid and the low-voltage level is optimized. The cost assumptions for this link can be adjusted in Config file `options `__ , and is currently assumed to be 500 Eur/kW. Rooftop PV, heat pumps, resistive heater, home batteries chargers for passenger EVs, as well as individual heating technologies (heat pumps and resistive heaters) are connected to low-voltage level. All the remaining generation and storage technologies are connected to the transmission grid. In practice, this means that the distribution grid capacity is only extended if it is necessary to balance the mismatch between local generation and demand. diff --git a/doc/supply_demand.rst b/doc/supply_demand.rst index 8f6edcad..cc598aaf 100644 --- a/doc/supply_demand.rst +++ b/doc/supply_demand.rst @@ -11,7 +11,7 @@ An initial orientation to the supply and demand options in the model PyPSA-Eur-Sec can be found in the description of the model PyPSA-Eur-Sec-30 in the paper `Synergies of sector coupling and transmission reinforcement in a cost-optimised, highly renewable -European energy system `_ (2018). +European energy system `__ (2018). The latest version of PyPSA-Eur-Sec differs by including biomass, industry, industrial feedstocks, aviation, shipping, better carbon management, carbon capture and usage/sequestration, and gas networks. @@ -26,13 +26,13 @@ Electricity supply and demand ============================= Electricity supply and demand follows the electricity generation and -transmission model `PyPSA-Eur `_, +transmission model `PyPSA-Eur `__, except that hydrogen storage is integrated into the hydrogen supply, demand and network, and PyPSA-Eur-Sec includes CHPs. Unlike PyPSA-Eur, PyPSA-Eur-Sec does not distribution electricity demand for industry according to population and GDP, but uses the geographical data from the `Hotmaps Industrial Database -`_. +`__. Also unlike PyPSA-Eur, PyPSA-Eur-Sec subtracts existing electrified heating from the existing electricity demand, so that power-to-heat can be optimised separately. @@ -44,7 +44,7 @@ Heat demand =========== Building heating in residential and services sectors is resolved regionally, both for individual buildings and district heating systems, which include different supply options (see :ref:`heat-supply`.) -Annual heat demands per country are retrieved from `JRC-IDEES `_ and split into space and water heating. For space heating, the annual demands are converted to daily values based on the population-weighted Heating Degree Day (HDD) using the `atlite tool `_, where space heat demand is proportional to the difference between the daily average ambient temperature (read from `ERA5 `_) and a threshold temperature above which space heat demand is zero. A threshold temperature of 15 °C is assumed by default. The daily space heat demand is distributed to the hours of the day following heat demand profiles from `BDEW `_. These differ for weekdays and weekends/holidays and between residential and services demand. +Annual heat demands per country are retrieved from `JRC-IDEES `__ and split into space and water heating. For space heating, the annual demands are converted to daily values based on the population-weighted Heating Degree Day (HDD) using the `atlite tool `__, where space heat demand is proportional to the difference between the daily average ambient temperature (read from `ERA5 `__) and a threshold temperature above which space heat demand is zero. A threshold temperature of 15 °C is assumed by default. The daily space heat demand is distributed to the hours of the day following heat demand profiles from `BDEW `__. These differ for weekdays and weekends/holidays and between residential and services demand. *Space heating* @@ -54,11 +54,11 @@ The space heating demand can be exogenously reduced by retrofitting measures tha :language: yaml :lines: 205 -Co-optimsing of building renovation is also possible, if it is activated in the `config file `_. +Co-optimsing of building renovation is also possible, if it is activated in the `config file `__. Renovation of the thermal envelope reduces the space heating demand and is optimised at each node for every heat bus. Renovation measures through additional insulation material and replacement of energy inefficient windows are considered. -In a first step, costs per energy savings are estimated in `build_retro_cost.py `_. They depend on the insulation condition of the building stock and costs for renovation of the building elements. In a second step, for those cost per energy savings two possible renovation strengths are determined: a moderate renovation with lower costs, a lower maximum possible space heat savings, and an ambitious renovation with associated higher costs and higher efficiency gains. They are added by step-wise linearisation in form of two additional generations in `prepare_sector_network.py `_. +In a first step, costs per energy savings are estimated in `build_retro_cost.py `__. They depend on the insulation condition of the building stock and costs for renovation of the building elements. In a second step, for those cost per energy savings two possible renovation strengths are determined: a moderate renovation with lower costs, a lower maximum possible space heat savings, and an ambitious renovation with associated higher costs and higher efficiency gains. They are added by step-wise linearisation in form of two additional generations in `prepare_sector_network.py `__. Further information are given in the publication : - `Mitigating heat demand peaks in buildings in a highly renewable European energy system, (2021) `_. +`Mitigating heat demand peaks in buildings in a highly renewable European energy system, (2021) `__. *Water heating* @@ -66,7 +66,7 @@ Hot water demand is assumed to be constant throughout the year. *Urban and rural heating* -For every country, heat demand is split between low and high population density areas. These country-level totals are then distributed to each region in proportion to their rural and urban populations respectively. Urban areas with dense heat demand can be supplied with large-scale district heating systems. The percentage of urban heat demand that can be supplied by district heating networks as well as lump-sum losses in district heating systems is exogenously determined in the `config file `_. +For every country, heat demand is split between low and high population density areas. These country-level totals are then distributed to each region in proportion to their rural and urban populations respectively. Urban areas with dense heat demand can be supplied with large-scale district heating systems. The percentage of urban heat demand that can be supplied by district heating networks as well as lump-sum losses in district heating systems is exogenously determined in the `config file `__. *Cooling demand* @@ -96,41 +96,41 @@ Different supply options are available depending on whether demand is met centra **Urban central heat** -For large-scale district heating systems the following options are available: combined heat and power (CHP) plants consuming gas or biomass from waste and residues with and without carbon capture (CC), large-scale air-sourced heat pumps, gas and oil boilers, resistive heaters, and fuel cell CHPs. Additionally, waste heat from the `Fischer-Tropsch `_ and `Sabatier `_ processes for the production of synthetic hydrocarbons can supply district heating systems. For more detailed explanation of these processes, see :ref:`Oil-based products supply` and :ref:`Methane supply`. +For large-scale district heating systems the following options are available: combined heat and power (CHP) plants consuming gas or biomass from waste and residues with and without carbon capture (CC), large-scale air-sourced heat pumps, gas and oil boilers, resistive heaters, and fuel cell CHPs. Additionally, waste heat from the `Fischer-Tropsch `__ and `Sabatier `__ processes for the production of synthetic hydrocarbons can supply district heating systems. For more detailed explanation of these processes, see :ref:`Oil-based products supply` and :ref:`Methane supply`. **Residential and Urban decentral heat** Supply options in individual buildings include gas and oil boilers, air- and ground-sourced heat pumps, resistive heaters, and solar thermal collectors. -Ground-source heat pumps are only allowed in rural areas because of space constraints. Thus, only air- source heat pumps are allowed in urban areas. This is a conservative assumption, since there are many possible sources of low-temperature heat that could be tapped in cities (e.g. waste water, ground water, or natural bodies of water). Costs, lifetimes and efficiencies for these technologies are retrieved from the `technology-data repository `_. +Ground-source heat pumps are only allowed in rural areas because of space constraints. Thus, only air- source heat pumps are allowed in urban areas. This is a conservative assumption, since there are many possible sources of low-temperature heat that could be tapped in cities (e.g. waste water, ground water, or natural bodies of water). Costs, lifetimes and efficiencies for these technologies are retrieved from the `technology-data repository `__. -Below are more detailed explanations for each heating supply component, all of which are modelled as `links `_ in PyPSA-Eur-Sec. +Below are more detailed explanations for each heating supply component, all of which are modelled as `links `__ in PyPSA-Eur-Sec. .. _Large-scale CHP: **Large-scale CHP** -Large Combined Heat and Power plants are included in the model if it is specified in the `config file `_. +Large Combined Heat and Power plants are included in the model if it is specified in the `config file `__. -CHPs are based on back pressure plants operating with a fixed ratio of electricity to heat output. The efficiencies of each are given on the back pressure line, where the back pressure coefficient cb is the electricity output divided by the heat output. (For a more complete explanation of the operation of CHPs refer to the study by Dahl et al. : `Cost sensitivity of optimal sector-coupled district heating production systems `_. +CHPs are based on back pressure plants operating with a fixed ratio of electricity to heat output. The efficiencies of each are given on the back pressure line, where the back pressure coefficient cb is the electricity output divided by the heat output. (For a more complete explanation of the operation of CHPs refer to the study by Dahl et al. : `Cost sensitivity of optimal sector-coupled district heating production systems `__. PyPSA-Eur-Sec includes CHP plants fueled by methane and solid biomass from waste and residues. Hydrogen fuel cells also produce both electricity and heat. -The methane CHP is modeled on the Danish Energy Agency (DEA) “Gas turbine simple cycle (large)” while the solid biomass CHP is based on the DEA’s “09b Wood Pellets Medium”. For biomass CHP, cb = `0.46 `_ , whereas for gas CHP, cb = `1 `_. +The methane CHP is modeled on the Danish Energy Agency (DEA) “Gas turbine simple cycle (large)” while the solid biomass CHP is based on the DEA’s “09b Wood Pellets Medium”. For biomass CHP, cb = `0.46 `__ , whereas for gas CHP, cb = `1 `__. -NB: The old PyPSA-Eur-Sec-30 model assumed an extraction plant (like the DEA coal CHP) for gas which has flexible production of heat and electricity within the feasibility diagram of Figure 4 in the study by `Brown et al. `_ We have switched to the DEA back pressure plants since these are more common for smaller plants for biomass, and because the extraction plants were on the back pressure line for 99.5% of the time anyway. The plants were all changed to back pressure in PyPSA-Eur-Sec v0.4.0. +NB: The old PyPSA-Eur-Sec-30 model assumed an extraction plant (like the DEA coal CHP) for gas which has flexible production of heat and electricity within the feasibility diagram of Figure 4 in the study by `Brown et al. `__ We have switched to the DEA back pressure plants since these are more common for smaller plants for biomass, and because the extraction plants were on the back pressure line for 99.5% of the time anyway. The plants were all changed to back pressure in PyPSA-Eur-Sec v0.4.0. **Micro-CHP** -PyPSA-Eur-Sec allows individual buildings to make use of `micro gas CHPs `_ that are assumed to be installed at the distribution grid level. +PyPSA-Eur-Sec allows individual buildings to make use of `micro gas CHPs `__ that are assumed to be installed at the distribution grid level. **Heat pumps** -The coefficient of performance (COP) of air- and ground-sourced heat pumps depends on the ambient or soil temperature respectively. Hence, the COP is a time-varying parameter (refer to `Config `_ file). Generally, the COP will be lower during winter when temperatures are low. Because the ambient temperature is more volatile than the soil temperature, the COP of ground-sourced heat pumps is less variable. Moreover, the COP depends on the difference between the source and sink temperatures: +The coefficient of performance (COP) of air- and ground-sourced heat pumps depends on the ambient or soil temperature respectively. Hence, the COP is a time-varying parameter (refer to `Config `__ file). Generally, the COP will be lower during winter when temperatures are low. Because the ambient temperature is more volatile than the soil temperature, the COP of ground-sourced heat pumps is less variable. Moreover, the COP depends on the difference between the source and sink temperatures: .. math:: \Delta T = T_{sink} − T_{source} -For the sink water temperature Tsink we assume 55 °C [`Config `_ file]. For the time- and location-dependent source temperatures Tsource, we rely on the `ERA5 `_ reanalysis weather data. The temperature differences are converted into COP time series using results from a regression analysis performed in the study by `Stafell et al. `_. For air-sourced heat pumps (ASHP), we use the function: +For the sink water temperature Tsink we assume 55 °C [`Config `__ file]. For the time- and location-dependent source temperatures Tsource, we rely on the `ERA5 `__ reanalysis weather data. The temperature differences are converted into COP time series using results from a regression analysis performed in the study by `Stafell et al. `__. For air-sourced heat pumps (ASHP), we use the function: .. math:: COP (\Delta T) = 6.81 - 0.121\Delta T + 0.000630\Delta T^2 @@ -142,44 +142,44 @@ for ground-sourced heat pumps (GSHP), we use the function: **Resistive heaters** -Can be activated in Config from the `boilers `_ option. -Resistive heaters produce heat with a fixed conversion efficiency (refer to `Technology-data repository `_ ). +Can be activated in Config from the `boilers `__ option. +Resistive heaters produce heat with a fixed conversion efficiency (refer to `Technology-data repository `__ ). **Gas, oil, and biomass boilers** -Can be activated in Config from the `boilers `_ , `oil boilers `_ , and `biomass boiler `_ option. +Can be activated in Config from the `boilers `__ , `oil boilers `__ , and `biomass boiler `__ option. Similar to resistive heaters, boilers have a fixed efficiency and produce heat using gas, oil or biomass. **Solar thermal collectors** -Can be activated in the config file from the `solar_thermal `_ option. -Solar thermal profiles are built based on weather data and also have the `options `_ for setting the sky model and the orientation of the panel in the config file, which are then used by the atlite tool to calculate the solar resource time series. +Can be activated in the config file from the `solar_thermal `__ option. +Solar thermal profiles are built based on weather data and also have the `options `__ for setting the sky model and the orientation of the panel in the config file, which are then used by the atlite tool to calculate the solar resource time series. **Waste heat from Fuel Cells, Methanation and Fischer-Tropsch plants** -Waste heat from `fuel cells `_ in addition to processes like `Fischer-Tropsch `_, methanation, and Direct Air Capture (DAC) is dumped into district heating networks. +Waste heat from `fuel cells `__ in addition to processes like `Fischer-Tropsch `__, methanation, and Direct Air Capture (DAC) is dumped into district heating networks. **Existing heating capacities and decommissioning** -For the myopic transition paths, capacities already existing for technologies supplying heat are retrieved from `“Mapping and analyses of the current and future (2020 - 2030)” `_ . For the sake of simplicity, coal, oil and gas boiler capacities are assimilated to gas boilers. Besides that, existing capacities for heat resistors, air-sourced and ground-sourced heat pumps are included in the model. For heating capacities, 25% of existing capacities in 2015 are assumed to be decommissioned in every 5-year time step after 2020. +For the myopic transition paths, capacities already existing for technologies supplying heat are retrieved from `“Mapping and analyses of the current and future (2020 - 2030)” `__ . For the sake of simplicity, coal, oil and gas boiler capacities are assimilated to gas boilers. Besides that, existing capacities for heat resistors, air-sourced and ground-sourced heat pumps are included in the model. For heating capacities, 25% of existing capacities in 2015 are assumed to be decommissioned in every 5-year time step after 2020. **Thermal Energy Storage** -Activated in Config from the `tes `_ option. +Activated in Config from the `tes `__ option. -Thermal energy can be stored in large water pits associated with district heating systems and individual thermal energy storage (TES), i.e., small water tanks. Water tanks are modelled as `stores `_. -A thermal energy density of 46.8 kWh :math:`_{th}`/m3 is assumed, corresponding to a temperature difference of 40 K. The decay of thermal energy in the stores: 1- :math:`e^{-1/24τ}` is assumed to have a time constant of  τ=180 days for central TES and  τ=3 days for individual TES, both modifiable through `tes_tau `_ in config file. Charging and discharging efficiencies are 90% due to pipe losses. +Thermal energy can be stored in large water pits associated with district heating systems and individual thermal energy storage (TES), i.e., small water tanks. Water tanks are modelled as `stores `__. +A thermal energy density of 46.8 kWh :math:`_{th}`/m3 is assumed, corresponding to a temperature difference of 40 K. The decay of thermal energy in the stores: 1- :math:`e^{-1/24τ}` is assumed to have a time constant of  τ=180 days for central TES and  τ=3 days for individual TES, both modifiable through `tes_tau `__ in config file. Charging and discharging efficiencies are 90% due to pipe losses. **Retrofitting of the thermal envelope of buildings** -Co-optimising building renovation is only enabled if in the `config `_ file. To reduce the computational burden, +Co-optimising building renovation is only enabled if in the `config `__ file. To reduce the computational burden, default setting is set as false. Renovation of the thermal envelope reduces the space heating demand and is optimised at each node for every heat bus. Renovation measures through additional insulation material and replacement of energy inefficient windows are considered. -In a first step, costs per energy savings are estimated in the `build_retro_cost.py `_ script. +In a first step, costs per energy savings are estimated in the `build_retro_cost.py `__ script. They depend on the insulation condition of the building stock and costs for renovation of the building elements. In a second step, for those cost per energy savings two possible renovation @@ -187,12 +187,12 @@ strengths are determined: a moderate renovation with lower costs and lower maximum possible space heat savings, and an ambitious renovation with associated higher costs and higher efficiency gains. They are added by step-wise linearisation in form of two additional generations in -the `prepare_sector_network.py `_ script. +the `prepare_sector_network.py `__ script. Settings in the ``config/config.yaml`` concerning the endogenously optimisation of building -renovation include `cost factor `_, `interest rate `_, `annualised cost `_, `tax weighting `_, and `construction index `_. +renovation include `cost factor `__, `interest rate `__, `annualised cost `__, `tax weighting `__, and `construction index `__. -Further information are given in the study by Zeyen et al. : `Mitigating heat demand peaks in buildings in a highly renewable European energy system, (2021) `_. +Further information are given in the study by Zeyen et al. : `Mitigating heat demand peaks in buildings in a highly renewable European energy system, (2021) `__. .. _Hydrogen demand: @@ -200,7 +200,7 @@ Hydrogen demand ============================= Hydrogen is consumed in the industry sector (see :ref:`Industry demand`) to produce ammonia (see :ref:`Chemicals Industry`) and direct reduced iron (DRI) (see :ref:`Iron and Steel`). Hydrogen is also consumed to produce synthetic methane (see :ref:`Methane supply`) and liquid hydrocarbons (see :ref:`Oil-based products supply`) which have multiple uses in industry and other sectors. -Hydrogen is also used for transport applications (see :ref:`Transportation`), where it is exogenously fixed. It is used in `heavy-duty land transport `_ and as liquified hydrogen in the shipping sector (see :ref:`Shipping`). Furthermore, stationary fuel cells may re-electrify hydrogen (with waste heat as a byproduct) to balance renewable fluctuations (see :ref:`Electricity supply and demand`). The waste heat from the stationary fuel cells can be used in `district-heating systems `_. +Hydrogen is also used for transport applications (see :ref:`Transportation`), where it is exogenously fixed. It is used in `heavy-duty land transport `__ and as liquified hydrogen in the shipping sector (see :ref:`Shipping`). Furthermore, stationary fuel cells may re-electrify hydrogen (with waste heat as a byproduct) to balance renewable fluctuations (see :ref:`Electricity supply and demand`). The waste heat from the stationary fuel cells can be used in `district-heating systems `__. .. _Hydrogen supply: @@ -220,7 +220,7 @@ combined with a water-gas shift reaction CO + H_2O \xrightarrow{} CO_2 + H_2 -SMR is included `here `_. +SMR is included `here `__. PyPSA-Eur-Sec allows this route of :math:`H_2` production with and without [carbon capture (CC)] (see :ref:`Carbon dioxide capture, usage and sequestration (CCU/S)`). These routes are often referred to as blue and grey hydrogen. Here, methane input can be both of fossil or synthetic origin. Green hydrogen can be produced by electrolysis to split water into hydrogen and oxygen @@ -234,12 +234,12 @@ For the electrolysis, alkaline electrolysers are chosen since they have lower co **Transport** -Hydrogen is transported by pipelines. :math:`H_2` pipelines are endogenously generated, either via a greenfield :math:`H_2` network, or by `retrofitting natural gas pipelines `_). Retrofitting is implemented in such a way that for every unit of decommissioned gas pipeline, a share (60% is used in the study by `Neumann et al. `_) of its nominal capacity (exogenously determined in the `config file `_.) is available for hydrogen transport. When the gas network is not resolved, this input denotes the potential for gas pipelines repurposed into hydrogen pipelines. +Hydrogen is transported by pipelines. :math:`H_2` pipelines are endogenously generated, either via a greenfield :math:`H_2` network, or by `retrofitting natural gas pipelines `__). Retrofitting is implemented in such a way that for every unit of decommissioned gas pipeline, a share (60% is used in the study by `Neumann et al. `__) of its nominal capacity (exogenously determined in the `config file `__.) is available for hydrogen transport. When the gas network is not resolved, this input denotes the potential for gas pipelines repurposed into hydrogen pipelines. New pipelines can be built additionally on all routes where there currently is a gas or electricity network connection. These new pipelines will be built where no sufficient retrofitting options are available. The capacities of new and repurposed pipelines are a result of the optimisation. **Storage** -Hydrogen can be stored in overground steel tanks or `underground salt caverns `_. For the latter, energy storage capacities in every country are limited to the potential estimation for onshore salt caverns within `50 km `_ of shore to avoid environmental issues associated with brine solution disposal. Underground storage potentials for hydrogen in European salt caverns is acquired from `Caglayan et al. `_ +Hydrogen can be stored in overground steel tanks or `underground salt caverns `__. For the latter, energy storage capacities in every country are limited to the potential estimation for onshore salt caverns within `50 km `__ of shore to avoid environmental issues associated with brine solution disposal. Underground storage potentials for hydrogen in European salt caverns is acquired from `Caglayan et al. `__ .. _Methane demand: @@ -253,7 +253,7 @@ Methane is used in individual and large-scale gas boilers, in CHP plants with an Methane supply =================================== -In addition to methane from fossil origins, the model also considers biogenic and synthetic sources. `The gas network can either be modelled, or it can be assumed that gas transport is not limited `_. If gas infrastructure is regionally resolved, fossil gas can enter the system only at existing and planned LNG terminals, pipeline entry-points, and intra- European gas extraction sites, which are retrieved from the SciGRID Gas IGGIELGN dataset and the GEM Wiki. +In addition to methane from fossil origins, the model also considers biogenic and synthetic sources. `The gas network can either be modelled, or it can be assumed that gas transport is not limited `__. If gas infrastructure is regionally resolved, fossil gas can enter the system only at existing and planned LNG terminals, pipeline entry-points, and intra- European gas extraction sites, which are retrieved from the SciGRID Gas IGGIELGN dataset and the GEM Wiki. Biogas can be upgraded to methane. Synthetic methane can be produced by processing hydrogen and captures :math:`CO_2` in the Sabatier reaction @@ -275,7 +275,7 @@ The following figure shows the unclustered European gas transmission network bas Biomass Supply ===================== -Biomass supply potentials for each European country are taken from the `JRC ENSPRESO database `_ where data is available for various years (2010, 2020, 2030, 2040 and 2050) and scenarios (low, medium, high). No biomass import from outside Europe is assumed. More information on the data set can be found `here `_. +Biomass supply potentials for each European country are taken from the `JRC ENSPRESO database `__ where data is available for various years (2010, 2020, 2030, 2040 and 2050) and scenarios (low, medium, high). No biomass import from outside Europe is assumed. More information on the data set can be found `here `__. .. _Biomass demand: @@ -283,19 +283,19 @@ Biomass demand ===================== -Biomass supply potentials for every NUTS2 region are taken from the `JRC ENSPRESO database `_ where data is available for various years (2010, 2020, 2030, 2040 and 2050) and different availability scenarios (low, medium, high). No biomass import from outside Europe is assumed. More information on the data set can be found `here `_. The data for NUTS2 regions is mapped to PyPSA-Eur-Sec model regions in proportion to the area overlap. +Biomass supply potentials for every NUTS2 region are taken from the `JRC ENSPRESO database `__ where data is available for various years (2010, 2020, 2030, 2040 and 2050) and different availability scenarios (low, medium, high). No biomass import from outside Europe is assumed. More information on the data set can be found `here `__. The data for NUTS2 regions is mapped to PyPSA-Eur-Sec model regions in proportion to the area overlap. -The desired scenario can be selected in the PyPSA-Eur-Sec `configuration `_. The script for building the biomass potentials from the JRC ENSPRESO data base is located `here `_. Consult the script to see the keywords that specify the scenario options. +The desired scenario can be selected in the PyPSA-Eur-Sec `configuration `__. The script for building the biomass potentials from the JRC ENSPRESO data base is located `here `__. Consult the script to see the keywords that specify the scenario options. -The `configuration `_ also allows the user to define how the various types of biomass are used in the model by using the following categories: biogas, solid biomass, and not included. Feedstocks categorized as biogas, typically manure and sludge waste, are available to the model as biogas, which can be upgraded to biomethane. Feedstocks categorized as solid biomass, e.g. secondary forest residues or municipal waste, are available for combustion in combined-heat-and power (CHP) plants and for medium temperature heat (below 500 °C) applications in industry. It can also converted to gas or liquid fuels. +The `configuration `__ also allows the user to define how the various types of biomass are used in the model by using the following categories: biogas, solid biomass, and not included. Feedstocks categorized as biogas, typically manure and sludge waste, are available to the model as biogas, which can be upgraded to biomethane. Feedstocks categorized as solid biomass, e.g. secondary forest residues or municipal waste, are available for combustion in combined-heat-and power (CHP) plants and for medium temperature heat (below 500 °C) applications in industry. It can also converted to gas or liquid fuels. Feedstocks labeled as not included are ignored by the model. -A `typical use case for biomass `_ would be the medium availability scenario for 2030 where only residues from agriculture and forestry as well as biodegradable municipal waste are considered as energy feedstocks. Fuel crops are avoided because they compete with scarce land for food production, while primary wood, as well as wood chips and pellets, are avoided because of concerns about sustainability. See the supporting materials of the `paper `_ for more details. +A `typical use case for biomass `__ would be the medium availability scenario for 2030 where only residues from agriculture and forestry as well as biodegradable municipal waste are considered as energy feedstocks. Fuel crops are avoided because they compete with scarce land for food production, while primary wood, as well as wood chips and pellets, are avoided because of concerns about sustainability. See the supporting materials of the `paper `__ for more details. *Solid biomass conversion and use* @@ -303,19 +303,19 @@ A `typical use case for biomass `_ would be th Solid biomass can be used directly to provide process heat up to 500˚C in the industry. It can also be burned in CHP plants and boilers associated with heating systems. These technologies are described elsewhere (see :ref:`Large-scale CHP` and :ref:`Industry demand`). -Solid biomass can be converted to syngas if the option is enabled in the `config file `_. In this case the model will enable the technology BioSNG both with and without the option for carbon capture (see `Technology-data repository `_). +Solid biomass can be converted to syngas if the option is enabled in the `config file `__. In this case the model will enable the technology BioSNG both with and without the option for carbon capture (see `Technology-data repository `__). -Liquefaction of solid biomass `can be enabled `_ allowing the model to convert it into liquid hydrocarbons that can replace conventional oil products. This technology also comes with and without carbon capture (see `Technology-data repository `_). +Liquefaction of solid biomass `can be enabled `__ allowing the model to convert it into liquid hydrocarbons that can replace conventional oil products. This technology also comes with and without carbon capture (see `Technology-data repository `__). *Transport of solid biomass* -The transport of solid biomass can either be assumed unlimited between countries or it can be associated with a country specific cost per MWh/km. In the config file these options are toggled `here `_. If the option is off, use of solid biomass is transport. If it is turned on, a biomass transport network will be `created `_ between all nodes. This network resembles road transport of biomass and the cost of transportation is a variable cost which is proportional to distance and a country specific cost per MWh/km. The latter is `estimated `_ from the country specific costs per ton/km used in the publication `“The JRC-EU-TIMES model. Bioenergy potentials for EU and neighbouring countries” `_. +The transport of solid biomass can either be assumed unlimited between countries or it can be associated with a country specific cost per MWh/km. In the config file these options are toggled `here `__. If the option is off, use of solid biomass is transport. If it is turned on, a biomass transport network will be `created `__ between all nodes. This network resembles road transport of biomass and the cost of transportation is a variable cost which is proportional to distance and a country specific cost per MWh/km. The latter is `estimated `__ from the country specific costs per ton/km used in the publication `“The JRC-EU-TIMES model. Bioenergy potentials for EU and neighbouring countries” `__. *Biogas transport and use* -Biogas will be aggregated into a common European resources if a gas network is not modelled explicitly, i.e., the `gas_network `_ option is set to false. If, on the other hand, a gas network is included, the biogas potential will be associated with each node of origin. +Biogas will be aggregated into a common European resources if a gas network is not modelled explicitly, i.e., the `gas_network `__ option is set to false. If, on the other hand, a gas network is included, the biogas potential will be associated with each node of origin. The model can only use biogas by first upgrading it to natural gas quality [see :ref:`Methane supply`] (bio methane) which is fed into the general gas network. .. _Oil-based products demand: @@ -338,7 +338,7 @@ Oil-based products can be either of fossil origin or synthetically produced by c 𝑛CO+(2𝑛+1)H_2 → C_{n}H_{2n + 2} +𝑛H_2O -with costs as included from the `technology-data repository `_. The waste heat from the Fischer-Tropsch process is supplied to `district heating networks `_. The share of fossil and synthetic oil is an optimisation result depending on the techno-economic assumptions. +with costs as included from the `technology-data repository `__. The waste heat from the Fischer-Tropsch process is supplied to `district heating networks `__. The share of fossil and synthetic oil is an optimisation result depending on the techno-economic assumptions. *Oil-based transport* @@ -361,24 +361,24 @@ The Subsection overview below provides a general description of the modelling ap Greenhouse gas emissions associated with industry can be classified into energy-related and process-related emissions. Today, fossil fuels are used for process heat energy in the chemicals industry, but also as a non-energy feedstock for chemicals like ammonia ( :math:`NH_3`), ethylene ( :math:`C_2H_4`) and methanol ( :math:`CH_3OH`). Energy-related emissions can be curbed by using low-emission energy sources. The only option to reduce process-related emissions is by using an alternative manufacturing process or by assuming a certain rate of recycling so that a lower amount of virgin material is needed. -The overarching modelling procedure can be described as follows. First, the energy demands and process emissions for every unit of material output are estimated based on data from the `JRC-IDEES database `_ and the fuel and process switching described in the subsequent sections. Second, the 2050 energy demands and process emissions are calculated using the per-unit-of-material ratios based on the industry transformations and the `country-level material production in 2015 `_, assuming constant material demand. +The overarching modelling procedure can be described as follows. First, the energy demands and process emissions for every unit of material output are estimated based on data from the `JRC-IDEES database `__ and the fuel and process switching described in the subsequent sections. Second, the 2050 energy demands and process emissions are calculated using the per-unit-of-material ratios based on the industry transformations and the `country-level material production in 2015 `__, assuming constant material demand. -Missing or too coarsely aggregated data in the JRC-IDEES database is supplemented with additional datasets: `Eurostat energy balances `_, `United States `_, `Geological Survey `_ for ammonia production, `DECHEMA `_ for methanol and chlorine, and `national statistics from Switzerland `_. +Missing or too coarsely aggregated data in the JRC-IDEES database is supplemented with additional datasets: `Eurostat energy balances `__, `United States `__, `Geological Survey `__ for ammonia production, `DECHEMA `__ for methanol and chlorine, and `national statistics from Switzerland `__. Where there are fossil and electrified alternatives for the same process (e.g. in glass manufacture or drying), we assume that the process is completely electrified. Current electricity demands (lighting, air compressors, motor drives, fans, pumps) will remain electric. Processes that require temperatures below 500 °C are supplied with solid biomass, since we assume that residues and wastes are not suitable for high-temperature applications. We see solid biomass use primarily in the pulp and paper industry, where it is already widespread, and in food, beverages and tobacco, where it replaces natural gas. Industries which require high temperatures (above 500 °C), such as metals, chemicals and non-metallic minerals are either electrified where suitable processes already exist, or the heat is provided with synthetic methane. Hydrogen for high-temperature process heat is not part of the model currently. -Where process heat is required, our approach depends on the necessary temperature. For example, due to the high share of high-temperature process heat demand (see `Naegler et al. `_ and `Rehfeldt el al. `_), we disregard geothermal and solar thermal energy as sources for process heat since they cannot attain high-temperature heat. +Where process heat is required, our approach depends on the necessary temperature. For example, due to the high share of high-temperature process heat demand (see `Naegler et al. `__ and `Rehfeldt el al. `__), we disregard geothermal and solar thermal energy as sources for process heat since they cannot attain high-temperature heat. -The following figure shows the final consumption of energy and non-energy feedstocks in industry today in comparison to the scenario in 2050 assumed in `Neumann et al `_. +The following figure shows the final consumption of energy and non-energy feedstocks in industry today in comparison to the scenario in 2050 assumed in `Neumann et al `__. .. image:: ../graphics/fec_industry_today_tomorrow.png The following figure shows the process emissions in industry today (top bar) and in 2050 without -carbon capture (bottom bar) assumed in `Neumann et al `_. +carbon capture (bottom bar) assumed in `Neumann et al `__. @@ -386,7 +386,7 @@ carbon capture (bottom bar) assumed in `Neumann et al `_, which is illustrated in the figure below. This open database includes georeferenced industrial sites of energy-intensive industry sectors in EU28, including cement, basic chemicals, glass, iron and steel, non-ferrous metals, non-metallic minerals, paper, and refineries subsectors. The use of this spatial dataset enables the calculation of regional and process-specific energy demands. This approach assumes that there will be no significant migration of energy-intensive industries. +Inside each country the industrial demand is then distributed using the `Hotmaps Industrial Database `__, which is illustrated in the figure below. This open database includes georeferenced industrial sites of energy-intensive industry sectors in EU28, including cement, basic chemicals, glass, iron and steel, non-ferrous metals, non-metallic minerals, paper, and refineries subsectors. The use of this spatial dataset enables the calculation of regional and process-specific energy demands. This approach assumes that there will be no significant migration of energy-intensive industries. .. image:: ../graphics/hotmaps.png @@ -395,7 +395,7 @@ Inside each country the industrial demand is then distributed using the `Hotmaps **Iron and Steel** -Two alternative routes are used today to manufacture steel in Europe. The primary route (integrated steelworks) represents 60% of steel production, while the secondary route (electric arc furnaces, EAF), represents the other 40% `(Lechtenböhmer et. al) `_. +Two alternative routes are used today to manufacture steel in Europe. The primary route (integrated steelworks) represents 60% of steel production, while the secondary route (electric arc furnaces, EAF), represents the other 40% `(Lechtenböhmer et. al) `__. The primary route uses blast furnaces in which coke is used to reduce iron ore into molten iron, which is then converted into steel: @@ -415,9 +415,9 @@ The primary route uses blast furnaces in which coke is used to reduce iron ore i FeO + CO \xrightarrow{} Fe + CO_2 -The primary route of steelmaking implies large process emissions of 0.22 t :math:`_{CO_2}` /t of steel, amounting to 7% of global greenhouse gas emissions `(Vogl et. al) `_. +The primary route of steelmaking implies large process emissions of 0.22 t :math:`_{CO_2}` /t of steel, amounting to 7% of global greenhouse gas emissions `(Vogl et. al) `__. -In the secondary route, electric arc furnaces are used to melt scrap metal. This limits the :math:`CO_2` emissions to the burning of graphite electrodes `(Friedrichsen et. al) `_, and reduces process emissions to 0.03 t :math:`_{CO_2}` /t of steel. +In the secondary route, electric arc furnaces are used to melt scrap metal. This limits the :math:`CO_2` emissions to the burning of graphite electrodes `(Friedrichsen et. al) `__, and reduces process emissions to 0.03 t :math:`_{CO_2}` /t of steel. We assume that the primary route can be replaced by a third route in 2050, using direct reduced iron (DRI) and subsequent processing in an EAF. @@ -433,10 +433,10 @@ We assume that the primary route can be replaced by a third route in 2050, using FeO + H_2 \xrightarrow{} Fe + H_2O -This circumvents the process emissions associated with the use of coke. For hydrogen- based DRI, we assume energy requirements of 1.7 MWh :math:`_{H_2}` /t steel `(Vogl et. al) `_ and 0.322 MWh :math:`_{el}`/t steel `(HYBRIT 2016) `_. +This circumvents the process emissions associated with the use of coke. For hydrogen- based DRI, we assume energy requirements of 1.7 MWh :math:`_{H_2}` /t steel `(Vogl et. al) `__ and 0.322 MWh :math:`_{el}`/t steel `(HYBRIT 2016) `__. -The share of steel produced via the primary route is exogenously set in the `config file `_. The share of steel obtained via hydrogen-based DRI plus EAF is also set exogenously in the `config file `_. The remaining share is manufactured through the secondary route using scrap metal in EAF. Bioenergy as alternative to coke in blast furnaces is not considered in the model (`Mandova et.al `_, `Suopajärvi et.al `_). +The share of steel produced via the primary route is exogenously set in the `config file `__. The share of steel obtained via hydrogen-based DRI plus EAF is also set exogenously in the `config file `__. The remaining share is manufactured through the secondary route using scrap metal in EAF. Bioenergy as alternative to coke in blast furnaces is not considered in the model (`Mandova et.al `__, `Suopajärvi et.al `__). For the remaining subprocesses in this sector, the following transformations are assumed. Methane is used as energy source for the smelting process. Activities associated with furnaces, refining and rolling, and product finishing are electrified assuming the current efficiency values for these cases. These transformations result in changes in process emissions as outlined in the process emissions figure presented in the industry overview section (see :ref:`Overview`). @@ -446,28 +446,28 @@ For the remaining subprocesses in this sector, the following transformations are The chemicals industry includes a wide range of diverse industries, including the production of basic organic compounds (olefins, alcohols, aromatics), basic inorganic compounds (ammonia, chlorine), polymers (plastics), and end-user products (cosmetics, pharmaceutics). -The chemicals industry consumes large amounts of fossil-fuel based feedstocks (see `Levi et. al `_), which can also be produced from renewables as outlined for hydrogen (see :ref:`Hydrogen supply`), for methane (see :ref:`Methane supply`), and for oil-based products (see :ref:`Oil-based products supply`). The ratio between synthetic and fossil-based fuels used in the industry is an endogenous result of the optimisation. +The chemicals industry consumes large amounts of fossil-fuel based feedstocks (see `Levi et. al `__), which can also be produced from renewables as outlined for hydrogen (see :ref:`Hydrogen supply`), for methane (see :ref:`Methane supply`), and for oil-based products (see :ref:`Oil-based products supply`). The ratio between synthetic and fossil-based fuels used in the industry is an endogenous result of the optimisation. -The basic chemicals consumption data from the `JRC IDEES `_ database comprises high- value chemicals (ethylene, propylene and BTX), chlorine, methanol and ammonia. However, it is necessary to separate out these chemicals because their current and future production routes are different. +The basic chemicals consumption data from the `JRC IDEES `__ database comprises high- value chemicals (ethylene, propylene and BTX), chlorine, methanol and ammonia. However, it is necessary to separate out these chemicals because their current and future production routes are different. -Statistics for the production of ammonia, which is commonly used as a fertilizer, are taken from the `USGS `_ for every country. Ammonia can be made from hydrogen and nitrogen using the Haber-Bosch process. +Statistics for the production of ammonia, which is commonly used as a fertilizer, are taken from the `USGS `__ for every country. Ammonia can be made from hydrogen and nitrogen using the Haber-Bosch process. .. math:: N_2 + 3H_2 \xrightarrow{} 2NH_3 -The Haber-Bosch process is not explicitly represented in the model, such that demand for ammonia enters the model as a demand for hydrogen ( 6.5 MWh :math:`_{H_2}` / t :math:`_{NH_3}` ) and electricity ( 1.17 MWh :math:`_{el}` /t :math:`_{NH_3}` ) (see `Wang et. al `_). Today, natural gas dominates in Europe as the source for the hydrogen used in the Haber-Bosch process, but the model can choose among the various hydrogen supply options described in the hydrogen section (see :ref:`Hydrogen supply`) +The Haber-Bosch process is not explicitly represented in the model, such that demand for ammonia enters the model as a demand for hydrogen ( 6.5 MWh :math:`_{H_2}` / t :math:`_{NH_3}` ) and electricity ( 1.17 MWh :math:`_{el}` /t :math:`_{NH_3}` ) (see `Wang et. al `__). Today, natural gas dominates in Europe as the source for the hydrogen used in the Haber-Bosch process, but the model can choose among the various hydrogen supply options described in the hydrogen section (see :ref:`Hydrogen supply`) -The total production and specific energy consumption of chlorine and methanol is taken from a `DECHEMA report `_. According to this source, the production of chlorine amounts to 9.58 MtCl/a, which is assumed to require electricity at 3.6 MWh :math:`_{el}`/t of chlorine and yield hydrogen at 0.937 MWh :math:`_{H_2}`/t of chlorine in the chloralkali process. The production of methanol adds up to 1.5 MtMeOH/a, requiring electricity at 0.167 MWh :math:`_{el}`/t of methanol and methane at 10.25 MWh :math:`_{CH_4}`/t of methanol. +The total production and specific energy consumption of chlorine and methanol is taken from a `DECHEMA report `__. According to this source, the production of chlorine amounts to 9.58 MtCl/a, which is assumed to require electricity at 3.6 MWh :math:`_{el}`/t of chlorine and yield hydrogen at 0.937 MWh :math:`_{H_2}`/t of chlorine in the chloralkali process. The production of methanol adds up to 1.5 MtMeOH/a, requiring electricity at 0.167 MWh :math:`_{el}`/t of methanol and methane at 10.25 MWh :math:`_{CH_4}`/t of methanol. -The production of ammonia, methanol, and chlorine production is deducted from the JRC IDEES basic chemicals, leaving the production totals of high-value chemicals. For this, we assume that the liquid hydrocarbon feedstock comes from synthetic or fossil- origin naphtha (14 MWh :math:`_{naphtha}`/t of HVC, similar to `Lechtenböhmer et al `_), ignoring the methanol-to-olefin route. Furthermore, we assume the following transformations of the energy-consuming processes in the production of plastics: the final energy consumption in steam processing is converted to methane since requires temperature above 500 °C (4.1 MWh :math:`_{CH_4}` /t of HVC, see `Rehfeldt et al. `_); and the remaining processes are electrified using the current efficiency of microwave for high-enthalpy heat processing, electric furnaces, electric process cooling and electric generic processes (2.85 MWh :math:`_{el}`/t of HVC). +The production of ammonia, methanol, and chlorine production is deducted from the JRC IDEES basic chemicals, leaving the production totals of high-value chemicals. For this, we assume that the liquid hydrocarbon feedstock comes from synthetic or fossil- origin naphtha (14 MWh :math:`_{naphtha}`/t of HVC, similar to `Lechtenböhmer et al `__), ignoring the methanol-to-olefin route. Furthermore, we assume the following transformations of the energy-consuming processes in the production of plastics: the final energy consumption in steam processing is converted to methane since requires temperature above 500 °C (4.1 MWh :math:`_{CH_4}` /t of HVC, see `Rehfeldt et al. `__); and the remaining processes are electrified using the current efficiency of microwave for high-enthalpy heat processing, electric furnaces, electric process cooling and electric generic processes (2.85 MWh :math:`_{el}`/t of HVC). The process emissions from feedstock in the chemical industry are as high as 0.369 t :math:`_{CO_2}`/t of ethylene equivalent. We consider process emissions for all the material output, which is a conservative approach since it assumes that all plastic-embedded :math:`CO_2` will eventually be released into the atmosphere. However, plastic disposal in landfilling will avoid, or at least delay, associated :math:`CO_2` emissions. -Circular economy practices drastically reduce the amount of primary feedstock needed for the production of plastics in the model (see `Kullmann et al. `_, `Meys et al. (2021) `_, `Meys et al. (2020) `_, `Gu et al. `_) and consequently, also the energy demands and level of process emission. The percentage of plastics that are assumed to be mechanically recycled can be selected in the `config file `_, as well as -the percentage that is chemically recycled, see `config file `_ The energy consumption for those recycling processes are respectively 0.547 MWh :math:`_{el}`/t of HVC (as indicated in the `config file `_) (`Meys et al. (2020) `_), and 6.9 MWh :math:`_{el}`/t of HVC (as indicated in the `config file `_) based on pyrolysis and electric steam cracking (see `Materials Economics `_ report). +Circular economy practices drastically reduce the amount of primary feedstock needed for the production of plastics in the model (see `Kullmann et al. `__, `Meys et al. (2021) `__, `Meys et al. (2020) `__, `Gu et al. `__) and consequently, also the energy demands and level of process emission. The percentage of plastics that are assumed to be mechanically recycled can be selected in the `config file `__, as well as +the percentage that is chemically recycled, see `config file `__ The energy consumption for those recycling processes are respectively 0.547 MWh :math:`_{el}`/t of HVC (as indicated in the `config file `__) (`Meys et al. (2020) `__), and 6.9 MWh :math:`_{el}`/t of HVC (as indicated in the `config file `__) based on pyrolysis and electric steam cracking (see `Materials Economics `__ report). **Non-metallic Mineral Products** @@ -476,7 +476,7 @@ This subsector includes the manufacturing of cement, ceramics, and glass. *Cement* -Cement is used in construction to make concrete. The production of cement involves high energy consumption and large process emissions. The calcination of limestone to chemically reactive calcium oxide, also known as lime, involves process emissions of 0.54 t :math:`_{CO_2}` /t cement (see `Akhtar et al. `_. +Cement is used in construction to make concrete. The production of cement involves high energy consumption and large process emissions. The calcination of limestone to chemically reactive calcium oxide, also known as lime, involves process emissions of 0.54 t :math:`_{CO_2}` /t cement (see `Akhtar et al. `__. .. math:: @@ -487,16 +487,16 @@ Additionally, :math:`CO_2` is emitted from the combustion of fossil fuels to pro Cement process emissions can be captured assuming a capture rate of 90%. Whether emissions are captured is decided by the model taking into account the capital costs of carbon capture modules. The electricity and heat demand of process emission carbon capture is currently ignored. For net-zero emission scenarios, the remaining process emissions need to be compensated by negative emissions. -With the exception of electricity demand and biomass demand for low-temperature heat (0.06 MWh/t and 0.2 MWh/t), the final energy consumption of this subsector is assumed to be supplied by methane (0.52 MWh/t), which is capable of delivering the required high-temperature heat. This implies a switch from burning solid fuels to burning gas which will require adjustments of the `kilns <10.1109/CITCON.2013.6525276>`_. The share of fossil vs. synthetic methane consumed is a result of the optimisation +With the exception of electricity demand and biomass demand for low-temperature heat (0.06 MWh/t and 0.2 MWh/t), the final energy consumption of this subsector is assumed to be supplied by methane (0.52 MWh/t), which is capable of delivering the required high-temperature heat. This implies a switch from burning solid fuels to burning gas which will require adjustments of the `kilns <10.1109/CITCON.2013.6525276>`__. The share of fossil vs. synthetic methane consumed is a result of the optimisation *Ceramics* -The ceramics sector is assumed to be fully electrified based on the current efficiency of already electrified processes which include microwave drying and sintering of raw materials, electric kilns for primary production processes, electric furnaces for the `product finishing `_. In total, the final electricity consumption is 0.44 MWh/t of ceramic. The manufacturing of ceramics includes process emissions of 0.03 t :math:`_{CO_2}`/t of ceramic. For a detailed overview of the ceramics industry sector see `Furszyfer Del Rio et al `_. +The ceramics sector is assumed to be fully electrified based on the current efficiency of already electrified processes which include microwave drying and sintering of raw materials, electric kilns for primary production processes, electric furnaces for the `product finishing `__. In total, the final electricity consumption is 0.44 MWh/t of ceramic. The manufacturing of ceramics includes process emissions of 0.03 t :math:`_{CO_2}`/t of ceramic. For a detailed overview of the ceramics industry sector see `Furszyfer Del Rio et al `__. *Glass* -The production of glass is assumed to be fully electrified based on the current efficiency of electric melting tanks and electric annealing which adds up to an electricity demand of 2.07 MWh :math:`_{el}`/t of `glass `_. The manufacturing of glass incurs process emissions of 0.1 t :math:`_{CO_2}`/t of glass. Potential efficiency improvements, which according to `Lechtenböhmer et al `_ could reduce energy demands to 0.85 MW :math:`_{el}`/t of glass, have not been considered. For a detailed overview of the glass industry sector see `Furszyfer Del Rio et al `_. +The production of glass is assumed to be fully electrified based on the current efficiency of electric melting tanks and electric annealing which adds up to an electricity demand of 2.07 MWh :math:`_{el}`/t of `glass `__. The manufacturing of glass incurs process emissions of 0.1 t :math:`_{CO_2}`/t of glass. Potential efficiency improvements, which according to `Lechtenböhmer et al `__ could reduce energy demands to 0.85 MW :math:`_{el}`/t of glass, have not been considered. For a detailed overview of the glass industry sector see `Furszyfer Del Rio et al `__. **Non-ferrous Metals** @@ -511,75 +511,75 @@ The primary route involves two energy-intensive processes: the production of alu 2Al_2O_3 +3C \xrightarrow{} 4Al+3CO_2 -The primary route requires high-enthalpy heat (2.3 MWh/t) to produce alumina which is supplied by methane and causes process emissions of 1.5 t :math:`_{CO_2}`/t aluminium. According to `Friedrichsen et al. `_, inert anodes might become commercially available by 2030 that would eliminate the process emissions, but they are not included in the model. Assuming all subprocesses are electrified, the primary route requires 15.4 MWh :math:`_{el}`/t of aluminium. +The primary route requires high-enthalpy heat (2.3 MWh/t) to produce alumina which is supplied by methane and causes process emissions of 1.5 t :math:`_{CO_2}`/t aluminium. According to `Friedrichsen et al. `__, inert anodes might become commercially available by 2030 that would eliminate the process emissions, but they are not included in the model. Assuming all subprocesses are electrified, the primary route requires 15.4 MWh :math:`_{el}`/t of aluminium. -In the secondary route, scrap aluminium is remelted. The energy demand for this process is only 10% of the primary route and there are no associated process emissions. Assuming all subprocesses are electrified, the secondary route requires 1.7 MWh/t of aluminium. The share of aliminum manufactured by the primary and secondary route can be selected in the `config file `_] +In the secondary route, scrap aluminium is remelted. The energy demand for this process is only 10% of the primary route and there are no associated process emissions. Assuming all subprocesses are electrified, the secondary route requires 1.7 MWh/t of aluminium. The share of aliminum manufactured by the primary and secondary route can be selected in the `config file `__] For the other non-ferrous metals, we assume the electrification of the entire manufacturing process with an average electricity demand of 3.2 MWh :math:`_{el}`/t lead equivalent. **Other Industry Subsectors** -The remaining industry subsectors include (a) pulp, paper, printing, (b) food, beverages, tobacco, (c) textiles and leather, (d) machinery equipment, (e) transport equipment, (f) wood and wood products, (g) others. Low- and mid-temperature process heat in these industries is assumed to be `supplied by biomass `_ while the remaining processes are electrified. None of the subsectors involve process emissions. +The remaining industry subsectors include (a) pulp, paper, printing, (b) food, beverages, tobacco, (c) textiles and leather, (d) machinery equipment, (e) transport equipment, (f) wood and wood products, (g) others. Low- and mid-temperature process heat in these industries is assumed to be `supplied by biomass `__ while the remaining processes are electrified. None of the subsectors involve process emissions. Agriculture demand ========================= -Energy demands for the agriculture, forestry and fishing sector per country are taken from the `JRC-IDEES database `_. Missing countries are filled with `Eurostat data `_. Agricultural energy demands are split into electricity (lighting, ventilation, specific electricity uses, electric pumping devices), heat (specific heat uses, low enthalpy heat), and machinery oil (motor drives, farming machine drives, diesel-fueled pumping devices). Heat demand is assigned at “services rural heat” buses. Time series for demands are assumed to be constant and distributed inside countries by population. +Energy demands for the agriculture, forestry and fishing sector per country are taken from the `JRC-IDEES database `__. Missing countries are filled with `Eurostat data `__. Agricultural energy demands are split into electricity (lighting, ventilation, specific electricity uses, electric pumping devices), heat (specific heat uses, low enthalpy heat), and machinery oil (motor drives, farming machine drives, diesel-fueled pumping devices). Heat demand is assigned at “services rural heat” buses. Time series for demands are assumed to be constant and distributed inside countries by population. .. _Transportation: Transportation ========================= -Annual energy demands for land transport, aviation and shipping for every country are retrieved from `JRC-IDEES data set `_. Below, the details of how each of these categories are treated is explained. +Annual energy demands for land transport, aviation and shipping for every country are retrieved from `JRC-IDEES data set `__. Below, the details of how each of these categories are treated is explained. .. _Land transport: **Land transport** -Both road and rail transport is combined as `land transport demand `_ although electrified rail transport is excluded because that demand is included in the current electricity demand. +Both road and rail transport is combined as `land transport demand `__ although electrified rail transport is excluded because that demand is included in the current electricity demand. -The most important settings for land transport are the exogenously fixed fuel mix (an option enabling the endogeous optimization of transport electrification is planned but not yet implemented). In the `config file `_, the share of battery electric vehicles (BEV) and hydrogen fuel cell vehicles (FCEV) can be set. The remaining percentage will be treated as internal combustion engines (ICE) that consume oil products. +The most important settings for land transport are the exogenously fixed fuel mix (an option enabling the endogeous optimization of transport electrification is planned but not yet implemented). In the `config file `__, the share of battery electric vehicles (BEV) and hydrogen fuel cell vehicles (FCEV) can be set. The remaining percentage will be treated as internal combustion engines (ICE) that consume oil products. *Battery Electric vehicles (BEV)* -For the electrified land transport, country-specific factors are computed by comparing the `current car final energy consumption per km in `_ (average for Europe 0.7 kWh/km) to the 0.18 kWh/km value assumed for battery-to-wheels efficiency in EVs. The characteristic `weekly profile `_ provided by the German Federal Highway Research Institute (BASt) is used to obtain hourly time series for European countries taking into account the corresponding local times. Furthermore, a temperature dependence is included in the time series to account for heating/cooling demand in transport. For temperatures `below `_/`above `_ certain threshold values, e.g. 15 °C/20 °C, `temperature coefficients `_ of typically 0.98%/°C and 0.63%/°C are assumed, based on the `paper `_. +For the electrified land transport, country-specific factors are computed by comparing the `current car final energy consumption per km in `__ (average for Europe 0.7 kWh/km) to the 0.18 kWh/km value assumed for battery-to-wheels efficiency in EVs. The characteristic `weekly profile `__ provided by the German Federal Highway Research Institute (BASt) is used to obtain hourly time series for European countries taking into account the corresponding local times. Furthermore, a temperature dependence is included in the time series to account for heating/cooling demand in transport. For temperatures `below `__/`above `__ certain threshold values, e.g. 15 °C/20 °C, `temperature coefficients `__ of typically 0.98%/°C and 0.63%/°C are assumed, based on the `paper `__. -For BEVs the user can define the `storage energy capacity `_, `charging power capacity `_, and `charging efficiency `_. +For BEVs the user can define the `storage energy capacity `__, `charging power capacity `__, and `charging efficiency `__. -For BEV, smart charging is an option. A `certain share `_ of the BEV fleet can shift their charging time. The BEV state of charge is forced to be higher than a `set percentage `_, e.g. 75%, every day at a `specified hour `_, e.g., 7 am, to ensure that the batteries are sufficiently charged for peak usage in the morning and they not behave as seasonal storage. They also have the option to participate in vehicle-to-grid (V2G) services to facilitate system operation if that `is enabled `_. +For BEV, smart charging is an option. A `certain share `__ of the BEV fleet can shift their charging time. The BEV state of charge is forced to be higher than a `set percentage `__, e.g. 75%, every day at a `specified hour `__, e.g., 7 am, to ensure that the batteries are sufficiently charged for peak usage in the morning and they not behave as seasonal storage. They also have the option to participate in vehicle-to-grid (V2G) services to facilitate system operation if that `is enabled `__. The battery cost of BEV is not included in the model since it is assumed that BEV owners buy them to primarily satisfy their mobility needs. *Hydrogen fuel cell vehicles (FCEV)* The share of all land transport that is specified to be be FCEV will be converted to a demand for hydrogen (see :ref:`Hydrogen supply`) using the `FCEV efficiency -`_. +`__. FCEVs are typically used to simulate demand for transport that is hard to electrify directly, e.g. heavy construction machinery. But it may also be used to investigate a more widespread adoption of the technology. *Internal combustion engine vehicles (ICE)* All land transport that is not specified to be either BEV or FCEV will be treated as conventional ICEs. The transport demand is converted to a demand for oil products (see :ref:`Oil-based products supply`) using the `ICE efficiency -`_. +`__. .. _Aviation: **Aviation** -The `demand for aviation `_ includes international and domestic use. It is modelled as an oil demand since aviation consumes kerosene. This can be produced synthetically or have fossil-origin (see :ref:`Oil-based products supply`). +The `demand for aviation `__ includes international and domestic use. It is modelled as an oil demand since aviation consumes kerosene. This can be produced synthetically or have fossil-origin (see :ref:`Oil-based products supply`). .. _Shipping: **Shipping** -Shipping energy demand is covered by a combination of oil and hydrogen. Other fuel options, like methanol or ammonia, are currently not included in PyPSA-Eur-Sec. The share of shipping that is assumed to be supplied by hydrogen can be selected in the `config file `_. +Shipping energy demand is covered by a combination of oil and hydrogen. Other fuel options, like methanol or ammonia, are currently not included in PyPSA-Eur-Sec. The share of shipping that is assumed to be supplied by hydrogen can be selected in the `config file `__. -To estimate the `hydrogen demand `_, the average fuel efficiency of the fleet is used in combination with the efficiency of the fuel cell defined in the technology-data repository. The average fuel efficiency is set in the `config file `_. +To estimate the `hydrogen demand `__, the average fuel efficiency of the fleet is used in combination with the efficiency of the fuel cell defined in the technology-data repository. The average fuel efficiency is set in the `config file `__. The consumed hydrogen comes from the general hydrogen bus where it can be produced by SMR, SMR+CC or electrolysers (see :ref:`Hydrogen supply`). The fraction that is not converted into hydrogen use oil products, i.e. is connected to the general oil bus. -The energy demand for liquefaction of the hydrogen used for shipping can be `included `_. If this option is selected, liquifaction will happen at the `node where the shipping demand occurs `_. +The energy demand for liquefaction of the hydrogen used for shipping can be `included `__. If this option is selected, liquifaction will happen at the `node where the shipping demand occurs `__. .. _Carbon dioxide capture, usage and sequestration (CCU/S): @@ -600,12 +600,12 @@ For the following point source emissions, carbon capture is applicable: • CHP plants using biomass or methane -• `Coal power plants `_. +• `Coal power plants `__. -Point source emissions are captured assuming a capture rate, e.g. 90%, which can be specified in the `config file `_. The electricity and heat demand of process emission carbon capture +Point source emissions are captured assuming a capture rate, e.g. 90%, which can be specified in the `config file `__. The electricity and heat demand of process emission carbon capture is currently ignored. -DAC (if `included `_) includes the adsorption phase where electricity and heat consumptionsare required to assist the adsorption process and regenerate the adsorbent. It also includes the drying and compression of :math:`CO_2` prior to storage which consumes electricity and rejects heat. +DAC (if `included `__) includes the adsorption phase where electricity and heat consumptionsare required to assist the adsorption process and regenerate the adsorbent. It also includes the drying and compression of :math:`CO_2` prior to storage which consumes electricity and rejects heat. *Carbon dioxide usage* @@ -614,8 +614,8 @@ naphtha). If captured carbon is used, the :math:`CO_2` emissions of the syntheti *Carbon dioxide sequestration* -Captured :math:`CO_2` can also be sequestered underground up to an annual sequestration limit of 200 Mt :math:`_{CO_2}`/a. This limit can be chosen in the `config file `_. As stored carbon dioxide is modelled as a single node for Europe, :math:`CO_2` transport constraints are neglected. Since :math:`CO_2` sequestration is an immature technology, the cost assumption is defined in the `config file `_. +Captured :math:`CO_2` can also be sequestered underground up to an annual sequestration limit of 200 Mt :math:`_{CO_2}`/a. This limit can be chosen in the `config file `__. As stored carbon dioxide is modelled as a single node for Europe, :math:`CO_2` transport constraints are neglected. Since :math:`CO_2` sequestration is an immature technology, the cost assumption is defined in the `config file `__. *Carbon dioxide transport* -Carbon dioxide can be modelled as a single node for Europe (in this case, :math:`CO_2` transport constraints are neglected). A network for modelling the transport of :math:`CO_2` among the different nodes can also be created if selected in the `config file `_. +Carbon dioxide can be modelled as a single node for Europe (in this case, :math:`CO_2` transport constraints are neglected). A network for modelling the transport of :math:`CO_2` among the different nodes can also be created if selected in the `config file `__. diff --git a/doc/support.rst b/doc/support.rst index 1a3e6d08..fc86a998 100644 --- a/doc/support.rst +++ b/doc/support.rst @@ -7,8 +7,8 @@ Support ####################### -* In case of code-related **questions**, please post on `stack overflow `_. -* For non-programming related and more general questions please refer to the `mailing list `_. -* To **discuss** with other PyPSA users, organise projects, share news, and get in touch with the community you can use the `discord server `_. -* For **bugs and feature requests**, please use the `issue tracker `_. -* We strongly welcome anyone interested in providing **contributions** to this project. If you have any ideas, suggestions or encounter problems, feel invited to file issues or make pull requests on `Github `_. For further information on how to contribute, please refer to :ref:`contributing`. +* In case of code-related **questions**, please post on `stack overflow `__. +* For non-programming related and more general questions please refer to the `mailing list `__. +* To **discuss** with other PyPSA users, organise projects, share news, and get in touch with the community you can use the `discord server `__. +* For **bugs and feature requests**, please use the `issue tracker `__. +* We strongly welcome anyone interested in providing **contributions** to this project. If you have any ideas, suggestions or encounter problems, feel invited to file issues or make pull requests on `Github `__. For further information on how to contribute, please refer to :ref:`contributing`. diff --git a/doc/tutorial.rst b/doc/tutorial.rst index 4f272292..93bb8e54 100644 --- a/doc/tutorial.rst +++ b/doc/tutorial.rst @@ -323,4 +323,4 @@ Jupyter Notebooks). n = pypsa.Network("results/networks/elec_s_6_ec_lcopt_Co2L-24H.nc") -For inspiration, read the `examples section in the PyPSA documentation `_. +For inspiration, read the `examples section in the PyPSA documentation `__. diff --git a/doc/validation.rst b/doc/validation.rst index e538717c..afe7a7f3 100644 --- a/doc/validation.rst +++ b/doc/validation.rst @@ -9,7 +9,7 @@ Validation The PyPSA-Eur model workflow provides a built-in mechanism for validation. This allows users to contrast the outcomes of network optimization against the historical behaviour of the European power system. The snakemake rule ``validate_elec_networks`` enables this by generating comparative figures that encapsulate key data points such as dispatch carrier, cross-border flows, and market prices per price zone. -These comparisons utilize data from the 2019 ENTSO-E Transparency Platform. To enable this, an ENTSO-E API key must be inserted into the ``config.yaml`` file. Detailed steps for this process can be found in the user guide `here `_. +These comparisons utilize data from the 2019 ENTSO-E Transparency Platform. To enable this, an ENTSO-E API key must be inserted into the ``config.yaml`` file. Detailed steps for this process can be found in the user guide `here `__. Once the API key is set, the validation workflow can be triggered by running the following command: diff --git a/doc/wildcards.rst b/doc/wildcards.rst index f86ff311..1fd1646f 100644 --- a/doc/wildcards.rst +++ b/doc/wildcards.rst @@ -17,7 +17,7 @@ what data to retrieve and what files to produce. .. note:: Detailed explanations of how wildcards work in ``snakemake`` can be found in the - `relevant section of the documentation `_. + `relevant section of the documentation `__. .. _cutout_wc: