Release v0.3 (#213)

* release_notes: order for release

* doc: fix smaller typos and tidy up

* config: bump version

* doc: fix line references

* doc: bump confpy version

* envs: update fixed versions yaml

* Snakefile: simplify all_elec to all
This commit is contained in:
Fabian Neumann 2020-12-05 17:54:50 +01:00 committed by GitHub
parent 3ad6340c13
commit 08674a6cda
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 338 additions and 326 deletions

View File

@ -31,6 +31,6 @@ before_install:
script:
- cp ./test/config.test1.yaml ./config.yaml
- snakemake -j all solve_all_elec_networks
- snakemake -j all solve_all_networks
- rm -rf resources/*.nc resources/*.geojson resources/*.h5 networks results
# could repeat for more configurations in future

View File

@ -21,19 +21,19 @@ wildcard_constraints:
opts="[-+a-zA-Z0-9\.]*"
rule cluster_all_elec_networks:
rule cluster_all_networks:
input: expand("networks/elec_s{simpl}_{clusters}.nc", **config['scenario'])
rule extra_components_all_elec_networks:
rule extra_components_all_networks:
input: expand("networks/elec_s{simpl}_{clusters}_ec.nc", **config['scenario'])
rule prepare_all_elec_networks:
rule prepare_all_networks:
input: expand("networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc", **config['scenario'])
rule solve_all_elec_networks:
rule solve_all_networks:
input: expand("results/networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc", **config['scenario'])

View File

@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: CC0-1.0
version: 0.2.0
version: 0.3.0
tutorial: false
logging:

View File

@ -2,8 +2,9 @@
#
# SPDX-License-Identifier: CC0-1.0
version: 0.2.0
version: 0.3.0
tutorial: true
logging:
level: INFO
format: '%(levelname)s:%(name)s:%(message)s'

View File

@ -45,11 +45,6 @@
background: #ffffff;
}
.wy-nav-content .highlight .nn,
.wy-nav-content .admonition.warning a {
color: #dddddd;
}
.rst-content code.literal,
.rst-content tt.literal {
color: rgb(34, 97, 156)

View File

@ -60,7 +60,7 @@ Now a window with the machine details will open. You have to configure the follo
You can edit your machine configuration later. So use a cheap machine type configuration to transfer data and
only when everything is ready and tested, your expensive machine type, for instance a custom 8 vCPU with 160 GB memory.
Solvers do not parallelise well, so we recommend not to choose more than 8 vCPU.
Check ``snakemake -j -n 1 solve_all_elec_networks`` as a dry run to see how much memory is required.
Check ``snakemake -n -j 1 solve_all_networks`` as a dry run to see how much memory is required.
The memory requirements will vary depending on the spatial and temporal resoulution of your optimisation.
Example: for an hourly, 181 node full European network, set 8 vCPU and 150 GB memory since the dry-run calculated a 135 GB memory requirement.)
- Boot disk: As default, your VM is created with 10 GB. Depending on how much you want to handle on one VM you should increase the disk size.
@ -85,7 +85,7 @@ Step 3 - Installation of Cloud SDK
sudo apt-get update
sudo apt-get install bzip2 libxml2-dev
sudo apt-get install wget
wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh (Check the link. To be up to date with anaconda, check the Anaconda website https://www.anaconda.com/products/individual )
wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh
ls (to see what anaconda file to bash)
bash Anaconda3-2020.07-Linux-x86_64.sh
source ~/.bashrc

View File

@ -74,9 +74,9 @@ author = u'Jonas Hoersch (KIT, FIAS), Fabian Hofmann (FIAS), David Schlachtberge
# built documents.
#
# The short X.Y version.
version = u'0.2'
version = u'0.3'
# The full version, including alpha/beta/rc tags.
release = u'0.2.0'
release = u'0.3.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@ -1,6 +1,6 @@
Trigger, Description, Definition, Status
``nH``; i.e. ``2H``-``6H``, Resample the time-resolution by averaging over every ``n`` snapshots, ``prepare_network``: `average_every_nhours() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L110>`_ and its `caller <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L146>`_), In active use
``nSEG``; e.g. ``4380SEG``, "Apply time series segmentation with `tsam <https://tsam.readthedocs.io/en/latest/index.html>`_ package to ``n`` adjacent snapshots of varying lengths based on capacity factors of varying renewables, hydro inflow and load.", ``prepare_network``: ``apply_time_segmentation(), In active use
``nSEG``; e.g. ``4380SEG``, "Apply time series segmentation with `tsam <https://tsam.readthedocs.io/en/latest/index.html>`_ package to ``n`` adjacent snapshots of varying lengths based on capacity factors of varying renewables, hydro inflow and load.", ``prepare_network``: apply_time_segmentation(), In active use
``Co2L``, Add an overall absolute carbon-dioxide emissions limit configured in ``electricity: co2limit``. If a float is appended an overall emission limit relative to the emission level given in ``electricity: co2base`` is added (e.g. ``Co2L0.05`` limits emissisions to 5% of what is given in ``electricity: co2base``), ``prepare_network``: `add_co2limit() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L19>`_ and its `caller <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L154>`_, In active use
``Ep``, Add cost for a carbon-dioxide price configured in ``costs: emission_prices: co2`` to ``marginal_cost`` of generators (other emission types listed in ``network.carriers`` possible as well), ``prepare_network``: `add_emission_prices() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L24>`_ and its `caller <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L158>`_, In active use
``CCL``, Add minimum and maximum levels of generator nominal capacity per carrier for individual countries. These can be specified in the file linked at ``electricity: agg_p_nom_limits`` in the configuration. File defaults to ``data/agg_p_nom_minmax.csv``., ``solve_network``, In active use

1 Trigger Description Definition Status
2 ``nH``; i.e. ``2H``-``6H`` Resample the time-resolution by averaging over every ``n`` snapshots ``prepare_network``: `average_every_nhours() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L110>`_ and its `caller <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L146>`_) In active use
3 ``nSEG``; e.g. ``4380SEG`` Apply time series segmentation with `tsam <https://tsam.readthedocs.io/en/latest/index.html>`_ package to ``n`` adjacent snapshots of varying lengths based on capacity factors of varying renewables, hydro inflow and load. ``prepare_network``: ``apply_time_segmentation() ``prepare_network``: apply_time_segmentation() In active use
4 ``Co2L`` Add an overall absolute carbon-dioxide emissions limit configured in ``electricity: co2limit``. If a float is appended an overall emission limit relative to the emission level given in ``electricity: co2base`` is added (e.g. ``Co2L0.05`` limits emissisions to 5% of what is given in ``electricity: co2base``) ``prepare_network``: `add_co2limit() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L19>`_ and its `caller <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L154>`_ In active use
5 ``Ep`` Add cost for a carbon-dioxide price configured in ``costs: emission_prices: co2`` to ``marginal_cost`` of generators (other emission types listed in ``network.carriers`` possible as well) ``prepare_network``: `add_emission_prices() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L24>`_ and its `caller <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/prepare_network.py#L158>`_ In active use
6 ``CCL`` Add minimum and maximum levels of generator nominal capacity per carrier for individual countries. These can be specified in the file linked at ``electricity: agg_p_nom_limits`` in the configuration. File defaults to ``data/agg_p_nom_minmax.csv``. ``solve_network`` In active use

View File

@ -18,7 +18,7 @@ Top-level configuration
.. literalinclude:: ../config.default.yaml
:language: yaml
:lines: 5-12,21,28-34
:lines: 5-12,20,27-34
.. csv-table::
:header-rows: 1
@ -40,9 +40,9 @@ facilitate running multiple scenarios through a single command
.. code:: bash
snakemake -j 1 solve_all_elec_networks
snakemake -j 1 solve_all_networks
For each wildcard, a **list of values** is provided. The rule ``solve_all_elec_networks`` will trigger the rules for creating ``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(...) <https://docs.python.org/2/library/itertools.html#itertools.product>`_ function that snakemake's `expand(...) function <https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#targets>`_ uses.
For each wildcard, a **list of values** is provided. The rule ``solve_all_networks`` will trigger the rules for creating ``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(...) <https://docs.python.org/2/library/itertools.html#itertools.product>`_ function that snakemake's `expand(...) function <https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#targets>`_ uses.
An exemplary dependency graph (starting from the simplification rules) then looks like this:
@ -80,7 +80,7 @@ Specifies the temporal range to build an energy system model for as arguments to
.. literalinclude:: ../config.default.yaml
:language: yaml
:lines: 36-55
:lines: 36-60
.. csv-table::
:header-rows: 1
@ -241,7 +241,6 @@ Specifies the temporal range to build an energy system model for as arguments to
.. note::
To change cost assumptions in more detail (i.e. other than ``marginal_cost`` and ``capital_cost``), consider modifying cost assumptions directly in ``data/costs.csv`` as this is not yet supported through the config file.
You can also build multiple different cost databases. Make a renamed copy of ``data/costs.csv`` (e.g. ``data/costs-optimistic.csv``) and set the variable ``COSTS=data/costs-optimistic.csv`` in the ``Snakefile``.
.. _solving_cf:

View File

@ -12,7 +12,7 @@ be it with new ideas, suggestions, by filing bug reports or contributing code
to our `GitHub repository <https://github.com/PyPSA/PyPSA-Eur>`_.
* If you already have some code changes, you can submit them directly as a `pull request <https://github.com/PyPSA/pypsa-eur/pulls>`_.
* If you are wondering where we would greatly appreciate your efforts, check out the ``help wanted`` tag in the `issues list <https://github.com/PyPSA/pypsa-eur/issues`_ and initiate a discussion there..
* If you are wondering where we would greatly appreciate your efforts, check out the ``help wanted`` tag in the `issues list <https://github.com/PyPSA/pypsa-eur/issues>`_ and initiate a discussion there.
* If you start working on a feature in the code, let us know by opening an issue or a draft pull request.
This helps all of us to keep an overview on what is being done and helps to avoid a situation where we
are doing the same work twice in parallel.

View File

@ -32,7 +32,7 @@ Based on the parameters above the ``marginal_cost`` and ``capital_cost`` of the
.. note::
Another great resource for `cost assumptions <https://ens.dk/en/our-services/projections-and-models/technology-data`_ is the cost database from the Danish Energy Agency.
Another great resource for cost assumptions is the `cost database from the Danish Energy Agency <https://ens.dk/en/our-services/projections-and-models/technology-data>`_.
Modifying Cost Assumptions
==========================

View File

@ -42,6 +42,8 @@ It contains alternating current lines at and above 220 kV voltage level and all
The model is suitable both for operational studies and generation and transmission expansion planning studies. The continental scope and highly resolved spatial scale enables a proper description of the long-range smoothing effects for renewable power generation and their varying resource availability.
.. image:: img/base.png
:width: 50%
:align: center
The restriction to freely available and open data encourages the open exchange of model data developments and eases the comparison of model results. It provides a full, automated software pipeline to assemble the load-flow-ready model from the original datasets, which enables easy replacement and improvement of the individual parts.

View File

@ -17,6 +17,7 @@ Clone the Repository
First of all, clone the `PyPSA-Eur repository <https://github.com/PyPSA/pypsa-eur>`_ using the version control system ``git``.
The path to the directory into which the ``git repository`` is cloned, must **not** have any spaces!
If you do not have ``git`` installed, follow installation instructions `here <https://git-scm.com/book/en/v2/Getting-Started-Installing-Git>`_.
.. code:: bash
@ -24,8 +25,6 @@ The path to the directory into which the ``git repository`` is cloned, must **no
/some/path/without/spaces % git clone https://github.com/PyPSA/pypsa-eur.git
.. note::
If you do not have ``git`` installed, follow installation instructions `here <https://git-scm.com/book/en/v2/Getting-Started-Installing-Git>`_.
.. _deps:
@ -46,9 +45,8 @@ The environment can be installed and activated using
.../pypsa-eur % conda activate pypsa-eur
.. note::
Note that activation is local to the currently open shell!
After opening a new terminal window, one needs to reissue the second command!
Note that activation is local to the currently open shell!
After opening a new terminal window, one needs to reissue the second command!
.. note::
If you have troubles with a slow ``conda`` installation, we recommend to install
@ -74,25 +72,23 @@ PyPSA is known to work with the free software
- `Cbc <https://projects.coin-or.org/Cbc#DownloadandInstall>`_
- `GLPK <https://www.gnu.org/software/glpk/>`_ (`WinGLKP <http://winglpk.sourceforge.net/>`_)
and the non-free, commercial software (for which free academic licenses are available)
and the non-free, commercial software (for some of which free academic licenses are available)
- `Gurobi <https://www.gurobi.com/documentation/quickstart.html>`_
- `CPLEX <https://www.ibm.com/products/ilog-cplex-optimization-studio>`_
- `FICO® Xpress Solver <https://www.fico.com/de/products/fico-xpress-solver>`_
and any other solver that works with the underlying modelling framework `Pyomo <http://www.pyomo.org/>`_.
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.
It might be the case that you can only retrieve solutions by using a commercial solver.
.. seealso::
`Getting a solver in the PyPSA documentation <https://pypsa.readthedocs.io/en/latest/installation.html#getting-a-solver-for-linear-optimisation>`_
.. note::
Commercial solvers such as Gurobi and CPLEX currently significantly outperform open-source solvers for large-scale problems.
It might be the case that you can only retrieve solutions by using a commercial solver.
.. note::
The rules :mod:`cluster_network` and :mod:`simplify_network` solve a quadratic optimisation problem for clustering.
The open-source solvers Cbc and GlPK cannot handle this. A fallback to Ipopt is implemented in this case, but requires
also Ipopt to be installed. For an open-source solver setup install in your `conda` environment on OSX/Linux
also Ipopt to be installed. For an open-source solver setup install in your ``conda`` environment on OSX/Linux
.. code:: bash

View File

@ -64,4 +64,6 @@ Folder Structure
System Requirements
===================
Building the model with the scripts in this repository uses up to 20 GB of memory. Computing optimal investment and operation scenarios requires a strong interior-point solver compatible with the modelling library `Pyomo <https://www.pyomo.org>`_ like `Gurobi <http://www.gurobi.com/>`_ or `CPLEX <https://www.ibm.com/analytics/cplex-optimizer>`_ with up to 100 GB of memory.
Building the model with the scripts in this repository runs on a normal computer.
But computing optimal investment and operation scenarios requires a strong interior-point solver
like `Gurobi <http://www.gurobi.com/>`_ or `CPLEX <https://www.ibm.com/analytics/cplex-optimizer>`_ with more memory.

View File

@ -11,70 +11,114 @@ Release Notes
Upcoming Release
================
PyPSA-Eur 0.3.0 (7th December 2020)
==================================
**New Features**
Using the ``{opts}`` wildcard for scenarios:
* An option is introduced which adds constraints such that each country or node produces on average a minimal share of its total consumption itself.
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. Moreover, line and link capacities can be capped in the ``config.yaml`` at
``lines: s_nom_max:`` and ``links: p_nom_max`` (`#166 <https://github.com/PyPSA/pypsa-eur/pull/166>`_).
cross-border transfer capacities.
[`#166 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/167>`_ and `#207 <https://github.com/PyPSA/pypsa-eur/pull/207>`_).
* Add compatibility for pyomo 5.7.0 in :mod:`cluster_network` and :mod:`simplify_network`.
* Raise a warning if `tech_colors` in the config are not defined for all carriers.
* Corrected HVDC link connections (a) between Norway and Denmark and (b) mainland Italy, Corsica (FR) and Sardinia (IT) (`#181 <https://github.com/PyPSA/pypsa-eur/pull/181>`_)
* Added Google Cloud Platform tutorial (for Windows users).
* Corrected setting of exogenous emission price (in config -> cost -> emission price). This was not weighted by the efficiency and effective emission of the generators. Fixed in `#171 <https://github.com/PyPSA/pypsa-eur/pull/171>`_.
* Don't remove capital costs from lines and links, when imposing a line volume limit (wildcard ``lv``) or a line cost limit (``lc``). Previously, these were removed to move the expansion in direction of the limit.
* Add renewable power plants from `OPSD <https://data.open-power-system-data.org/renewable_power_plants/2020-08-25>`_ to the network for specified technologies. This will overwrite the capacities calculated from the heuristic approach in :func:`estimate_renewable_capacities()`.
* Fix bug of clustering offwind-{ac,dc} sites in the option of high-resolution sites 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. (e.g. elec_s1024_37m.nc: 37 network nodes, 1024 sites)
* Use `mamba` (https://github.com/mamba-org/mamba) for faster Travis CI builds (`#196 <https://github.com/PyPSA/pypsa-eur/pull/196>`_)
* 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.
* The mappings for clustered lines and buses produced by the ``simplify_network`` and ``cluster_network`` rules changed from Hierarchical Data Format (.h5) to Comma-Separated Values format (.csv) (`#198 <https://github.com/PyPSA/pypsa-eur/pull/198>`_)
* Multiple smaller changes: Removed unused ``{network}`` wildcard, moved environment files to dedicated ``envs`` folder,
removed sector-coupling components from configuration files, minor refactoring and code cleaning (`#190 <https://github.com/PyPSA/pypsa-eur/pull 190>`_).
* Added an option to use custom busmaps in rule :mod:`cluster_network`. To use this feature set ``enable: custom_busmap: true``.
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 <https://github.com/PyPSA/pypsa-eur/pull/193>`_).
* 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 <https://github.com/PyPSA/pypsa-eur/pull/202>_).
* Parameter corrections for East-Western and Anglo-Scottish interconnectors (`#206 <https://github.com/PyPSA/pypsa-eur/pull/206>`_)
* 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 <https://github.com/PyPSA/pypsa-eur/pull/205>`_).
* Electricity consumption data is now directly retrieved from the `OPSD website <https://data.open-power-system-data.org/time_series/2019-06-05>`_ using the rule ``build_load_data``. The user can decide whether to take the ENTSOE power statistics data (defaul) or the ENTSOE transparency data.
[`#167 <https://github.com/PyPSA/pypsa-eur/pull/167>`_, `#207 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://tsam.readthedocs.io/en/latest/index.html>`_ package
(#186 <https://github.com/PyPSA/pypsa-eur/pull/186>`_).
[`#186 <https://github.com/PyPSA/pypsa-eur/pull/186>`_].
More OPSD integration:
* Add renewable power plants from `OPSD <https://data.open-power-system-data.org/renewable_power_plants/2020-08-25>`_ to the network for specified technologies.
This will overwrite the capacities calculated from the heuristic approach in :func:`estimate_renewable_capacities()`
[`#212 <https://github.com/PyPSA/pypsa-eur/pull/212>`_].
* Electricity consumption data is now retrieved directly from the `OPSD website <https://data.open-power-system-data.org/time_series/2019-06-05>`_ using the rule :mod:`build_load_data`.
The user can decide whether to take the ENTSO-E power statistics data (default) or the ENTSO-E transparency data
[`#211 <https://github.com/PyPSA/pypsa-eur/pull/211>`_].
Other:
* Added an option to use custom busmaps in rule :mod:`cluster_network`. To use this feature set ``enable: custom_busmap: true``.
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 <https://github.com/PyPSA/pypsa-eur/pull/193>`_].
* Line and link capacities can be capped in the ``config.yaml`` at ``lines: s_nom_max:`` and ``links: p_nom_max``:
[`#166 <https://github.com/PyPSA/pypsa-eur/pull/166>`_].
* Added Google Cloud Platform tutorial (for Windows users)
[`#177 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/205>`_].
* Use ``mamba`` (https://github.com/mamba-org/mamba) for faster Travis CI builds
[`#196 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull 190>`_].
**Bugs and Compatibility**
* Add compatibility for pyomo 5.7.0 in :mod:`cluster_network` and :mod:`simplify_network`
[`#172 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/181>`_, `#206 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/191>`_].
* Raise a warning if ``tech_colors`` in the config are not defined for all carriers
[`#178 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/116>`_].
* An updated extract of the `ENTSO-E Transmission System Map <https://www.entsoe.eu/data/map/>`_ (including Malta) was added to the repository using the `GridKit <https://github.com/PyPSA/GridKit>`_ tool. This tool has been updated to retrieve up-to-date map extracts using a single `script <https://github.com/PyPSA/GridKit/blob/master/entsoe/runall_in_docker.sh>`_. The update extract features 5322 buses, 6574 lines, 46 links. (`#118 <https://github.com/PyPSA/pypsa-eur/pull/118>`_).
* An updated extract of the `ENTSO-E Transmission System Map <https://www.entsoe.eu/data/map/>`_ (including Malta) was added to the repository using the `GridKit <https://github.com/PyPSA/GridKit>`_ tool. This tool has been updated to retrieve up-to-date map extracts using a single `script <https://github.com/PyPSA/GridKit/blob/master/entsoe/runall_in_docker.sh>`_. The update extract features 5322 buses, 6574 lines, 46 links. [`#118 <https://github.com/PyPSA/pypsa-eur/pull/118>`_].
* Added `FSFE REUSE <https://reuse.software>`_ compliant license information. Documentation now licensed under CC-BY-4.0 (`#160 <https://github.com/PyPSA/pypsa-eur/pull/160>`_).
* Added `FSFE REUSE <https://reuse.software>`_ compliant license information. Documentation now licensed under CC-BY-4.0 [`#160 <https://github.com/PyPSA/pypsa-eur/pull/160>`_].
* Added a 30 minute `video introduction <https://pypsa-eur.readthedocs.io/en/latest/introduction.html>`_ and a 20 minute `video tutorial <https://pypsa-eur.readthedocs.io/en/latest/tutorial.html>`_
@ -82,19 +126,19 @@ PyPSA-Eur 0.2.0 (8th June 2020)
* 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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/131>`_].
* Add option ``renewables: {carrier}: keep_all_available_areas:`` to use all availabe weather cells for renewable profile and potential generation. The default ignores weather cells where only less than 1 MW can be installed (`#150 <https://github.com/PyPSA/pypsa-eur/pull/150>`_).
* Add option ``renewables: {carrier}: keep_all_available_areas:`` to use all availabe weather cells for renewable profile and potential generation. The default ignores weather cells where only less than 1 MW can be installed [`#150 <https://github.com/PyPSA/pypsa-eur/pull/150>`_].
* Added a function ``_helpers.load_network()`` which loads a network with overridden components specified in ``snakemake.config['override_components']`` (`#128 <https://github.com/PyPSA/pypsa-eur/pull/128>`_).
* Added a function ``_helpers.load_network()`` which loads a network with overridden components specified in ``snakemake.config['override_components']`` [`#128 <https://github.com/PyPSA/pypsa-eur/pull/128>`_].
* Bugfix in :mod:`base_network` which now finds all closest links, not only the first entry (`#143 <https://github.com/PyPSA/pypsa-eur/pull/143>`_).
* Bugfix in :mod:`base_network` which now finds all closest links, not only the first entry [`#143 <https://github.com/PyPSA/pypsa-eur/pull/143>`_].
* Bugfix in :mod:`cluster_network` which now skips recalculation of link parameters if there are no links (`#149 <https://github.com/PyPSA/pypsa-eur/pull/149>`_).
* Bugfix in :mod:`cluster_network` which now skips recalculation of link parameters if there are no links [`#149 <https://github.com/PyPSA/pypsa-eur/pull/149>`_].
* Added information on pull requests to contribution guidelines (`#151 <https://github.com/PyPSA/pypsa-eur/pull/151>`_).
* Added information on pull requests to contribution guidelines [`#151 <https://github.com/PyPSA/pypsa-eur/pull/151>`_].
* Improved documentation on open-source solver setup and added usage warnings.
@ -105,31 +149,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 <pypsa-eur.readthedocs.io>`_ (`#65 <https://github.com/PyPSA/pypsa-eur/pull/65>`_).
* Documentation on installation, workflows and configuration settings is now available online at `pypsa-eur.readthedocs.io <pypsa-eur.readthedocs.io>`_ [`#65 <https://github.com/PyPSA/pypsa-eur/pull/65>`_].
* The ``conda`` environment files were updated and extended (`#81 <https://github.com/PyPSA/pypsa-eur/pull/81>`_).
* The ``conda`` environment files were updated and extended [`#81 <https://github.com/PyPSA/pypsa-eur/pull/81>`_].
* The power plant database was updated with extensive filtering options via ``pandas.query`` functionality (`#84 <https://github.com/PyPSA/pypsa-eur/pull/84>`_ and `#94 <https://github.com/PyPSA/pypsa-eur/pull/94>`_).
* The power plant database was updated with extensive filtering options via ``pandas.query`` functionality [`#84 <https://github.com/PyPSA/pypsa-eur/pull/84>`_ and `#94 <https://github.com/PyPSA/pypsa-eur/pull/94>`_].
* Continuous integration testing with `Travis CI <https://travis-ci.org>`_ is now included for Linux, Mac and Windows (`#82 <https://github.com/PyPSA/pypsa-eur/pull/82>`_).
* Continuous integration testing with `Travis CI <https://travis-ci.org>`_ is now included for Linux, Mac and Windows [`#82 <https://github.com/PyPSA/pypsa-eur/pull/82>`_].
* Data dependencies were moved to `zenodo <https://zenodo.org/>`_ and are now versioned (`#60 <https://github.com/PyPSA/pypsa-eur/issues/60>`_).
* Data dependencies were moved to `zenodo <https://zenodo.org/>`_ and are now versioned [`#60 <https://github.com/PyPSA/pypsa-eur/issues/60>`_].
* Data dependencies are now retrieved directly from within the snakemake workflow (`#86 <https://github.com/PyPSA/pypsa-eur/pull/86>`_).
* Data dependencies are now retrieved directly from within the snakemake workflow [`#86 <https://github.com/PyPSA/pypsa-eur/pull/86>`_].
* Emission prices can be added to marginal costs of generators through the keyworks ``Ep`` in the ``{opts}`` wildcard (`#100 <https://github.com/PyPSA/pypsa-eur/pull/100>`_).
* Emission prices can be added to marginal costs of generators through the keyworks ``Ep`` in the ``{opts}`` wildcard [`#100 <https://github.com/PyPSA/pypsa-eur/pull/100>`_].
* An option is introduced to add extendable nuclear power plants to the network (`#98 <https://github.com/PyPSA/pypsa-eur/pull/98>`_).
* An option is introduced to add extendable nuclear power plants to the network [`#98 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/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 <https://github.com/PyPSA/pypsa-eur/pull/108>`_].
* Logfiles for all rules of the ``snakemake`` workflow are now written in the folder ``log/`` (`#102 <https://github.com/PyPSA/pypsa-eur/pull/102>`_).
* Logfiles for all rules of the ``snakemake`` workflow are now written in the folder ``log/`` [`#102 <https://github.com/PyPSA/pypsa-eur/pull/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 <script-name>``) and thereby facilitates developing and debugging scripts significantly (`#107 <https://github.com/PyPSA/pypsa-eur/pull/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 <script-name>``) and thereby facilitates developing and debugging scripts significantly [`#107 <https://github.com/PyPSA/pypsa-eur/pull/107>`_].
Release Process
===============
@ -151,7 +195,7 @@ Release Process
* Upload code to `zenodo code repository <https://doi.org/10.5281/zenodo.3520875>`_ with `GNU GPL 3.0 <https://www.gnu.org/licenses/gpl-3.0.en.html>`_ license.
* Create pre-built networks for ``config.default.yaml`` by running ``snakemake -j 1 extra_components_all_elec_networks``.
* Create pre-built networks for ``config.default.yaml`` by running ``snakemake -j 1 extra_components_all_networks``.
* Upload pre-built networks to `zenodo data repository <https://doi.org/10.5281/zenodo.3601882>`_ with `CC BY 4.0 <https://creativecommons.org/licenses/by/4.0/>`_ license.

View File

@ -7,7 +7,7 @@
Solving Networks
##########################################
After generating and simplifying the networks they can be solved through the rule :mod:`solve_network` by using the collection rule :mod:`solve_all_elec_networks`. Moreover, networks can be solved for another focus with the derivative rules :mod:`solve_network` by using the collection rule :mod:`solve_operations_network` for dispatch-only analyses on an already solved network.
After generating and simplifying the networks they can be solved through the rule :mod:`solve_network` by using the collection rule :mod:`solve_all_networks`. Moreover, networks can be solved for another focus with the derivative rules :mod:`solve_network` by using the collection rule :mod:`solve_operations_network` for dispatch-only analyses on an already solved network.
.. toctree::
:caption: Overview

View File

@ -59,35 +59,35 @@ It is also possible to allow less or more carbon-dioxide emissions. Here, we lim
.. literalinclude:: ../config.tutorial.yaml
:language: yaml
:lines: 35,37
:lines: 36,38
PyPSA-Eur also includes a database of existing conventional powerplants.
We can select which types of powerplants we like to be included with fixed capacities:
.. literalinclude:: ../config.tutorial.yaml
:language: yaml
:lines: 35,51
:lines: 36,52
To accurately model the temporal and spatial availability of renewables such as wind and solar energy, we rely on historical weather data.
It is advisable to adapt the required range of coordinates to the selection of countries.
.. literalinclude:: ../config.tutorial.yaml
:language: yaml
:lines: 53-61
:lines: 54-62
We can also decide which weather data source should be used to calculate potentials and capacity factor time-series for each carrier.
For example, we may want to use the ERA-5 dataset for solar and not the default SARAH-2 dataset.
.. literalinclude:: ../config.tutorial.yaml
:language: yaml
:lines: 63,106-107
:lines: 64,107-108
Finally, it is possible to pick a solver. For instance, this tutorial uses the open-source solvers CBC and Ipopt and does not rely
on the commercial solvers Gurobi or CPLEX (for which free academic licenses are available).
.. literalinclude:: ../config.tutorial.yaml
:language: yaml
:lines: 164,175-176
:lines: 170,180-181
.. note::
@ -129,7 +129,7 @@ orders ``snakemake`` to run the script ``solve_network`` that produces the solve
.. warning::
On Windows the previous command may currently cause a ``MissingRuleException`` due to problems with output files in subfolders.
This is an `open issue <https://github.com/snakemake/snakemake/issues/46>`_ at `snakemake <https://snakemake.readthedocs.io/>`_.
Windows users should add the option ``--keep-target-files`` to the command or instead run ``snakemake -j 1 solve_all_elec_networks``.
Windows users should add the option ``--keep-target-files`` to the command or instead run ``snakemake -j 1 solve_all_networks``.
This triggers a workflow of multiple preceding jobs that depend on each rule's inputs and outputs:
@ -271,7 +271,7 @@ the wildcards given in ``scenario`` in the configuration file ``config.yaml`` ar
.. literalinclude:: ../config.tutorial.yaml
:language: yaml
:lines: 13-18
:lines: 14-18
In this example we would not only solve a 6-node model of Germany but also a 2-node model.
@ -286,12 +286,4 @@ The solved networks can be analysed just like any other PyPSA network (e.g. in J
network = pypsa.Network("results/networks/elec_s_6_ec_lcopt_Co2L-24H.nc")
...
For inspiration, read the `examples section in the PyPSA documentation <https://pypsa.readthedocs.io/en/latest/examples.html>`_.
.. note::
There are rules for summaries and plotting available in the repository of PyPSA-Eur.
They are currently under revision and therefore not yet documented.

View File

@ -27,9 +27,6 @@ The ``{simpl}`` wildcard specifies number of buses a detailed
network model should be pre-clustered to in the rule
:mod:`simplify_network` (before :mod:`cluster_network`).
.. seealso::
:mod:`simplify_network`
.. _clusters:
The ``{clusters}`` wildcard
@ -45,9 +42,6 @@ If an `m` is placed behind the number of clusters (e.g. ``100m``),
generators are only moved to the clustered buses but not aggregated
by carrier; i.e. the clustered bus may have more than one e.g. wind generator.
.. seealso::
:mod:`cluster_network`
.. _ll:
The ``{ll}`` wildcard
@ -79,9 +73,6 @@ The wildcard, in general, consists of two parts:
(c) ``c1.25`` will allow to build a transmission network that
costs no more than 25 % more than the current system.
.. seealso::
:mod:`prepare_network`
.. _opts:
The ``{opts}`` wildcard
@ -98,21 +89,18 @@ It may hold multiple triggers separated by ``-``, i.e. ``Co2L-3H`` contains the
:widths: 10,20,10,10
:file: configtables/opts.csv
.. seealso::
:mod:`prepare_network`, :mod:`solve_network`
.. _country:
The ``{country}`` wildcard
==========================
The rules ``make_summary`` and ``plot_summary`` (generating summaries of all or a subselection
of the solved networks) as well as ``plot_p_nom_max`` (for plotting the cumulative
The rules :mod:`make_summary` and :mod:`plot_summary` (generating summaries of all or a subselection
of the solved networks) as well as :mod:`plot_p_nom_map` (for plotting the cumulative
generation potentials for renewable technologies) can be narrowed to
individual countries using the ``{country}`` wildcard.
If ``country = all``, then the rule acts on the network for all countries
defined in ``config.yaml``. If otherwise ``country = DE`` or another 2-letter
If ``country=all``, then the rule acts on the network for all countries
defined in ``config.yaml``. If otherwise ``country=DE`` or another 2-letter
country code, then the network is narrowed to buses of this country
for the rule. For example to get a summary of the energy generated
in Germany (in the solution for Europe) use:
@ -121,9 +109,6 @@ in Germany (in the solution for Europe) use:
snakemake -j 1 results/summaries/elec_s_all_lall_Co2L-3H_DE
.. seealso::
:mod:`make_summary`, :mod:`plot_summary`, :mod:`plot_p_nom_max`
.. _cutout_wc:
The ``{cutout}`` wildcard
@ -133,9 +118,6 @@ The ``{cutout}`` wildcard facilitates running the rule :mod:`build_cutout`
for all cutout configurations specified under ``atlite: cutouts:``.
These cutouts will be stored in a folder specified by ``{cutout}``.
.. seealso::
:mod:`build_cutout`, :ref:`atlite_cf`
.. _technology:
The ``{technology}`` wildcard
@ -151,22 +133,16 @@ For instance ``{technology}`` can be used to plot regionally disaggregated poten
with the rule :mod:`plot_p_nom_max` or to summarize a particular technology's
full load hours in various countries with the rule :mod:`build_country_flh`.
.. seealso::
:mod:`build_renewable_profiles`, :mod:`plot_p_nom_max`, :mod:`build_country_flh`
.. _attr:
The ``{attr}`` wildcard
=======================
The ``{attr}`` wildcard specifies which attribute are used for size
The ``{attr}`` wildcard specifies which attribute is used for size
representations of network components on a map plot produced by the rule
``plot_network``. While it might be extended in the future, ``{attr}``
:mod:`plot_network`. While it might be extended in the future, ``{attr}``
currently only supports plotting of ``p_nom``.
.. seealso::
:mod:`plot_network`
.. _ext:
The ``{ext}`` wildcard
@ -181,6 +157,3 @@ formats depends on the used backend. To query the supported file types on your s
import matplotlib.pyplot as plt
plt.gcf().canvas.get_supported_filetypes()
.. seealso::
:mod:`plot_network`, :mod:`plot_summary`, :mod:`plot_p_nom_max`

View File

@ -1,241 +1,261 @@
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
#
# SPDX-License-Identifier: GPL-3.0-or-later
name: pypsa-eur
channels:
- bioconda
- gurobi
- conda-forge
- defaults
dependencies:
- _libgcc_mutex=0.1
- _openmp_mutex=4.5
- affine=2.3.0
- appdirs=1.4.3
- amply=0.1.4
- appdirs=1.4.4
- atlite=0.0.3
- attrs=19.3.0
- backcall=0.1.0
- beautifulsoup4=4.9.1
- blas=1.0
- blosc=1.16.3
- bokeh=2.0.2
- attrs=20.3.0
- backcall=0.2.0
- backports=1.0
- backports.functools_lru_cache=1.6.1
- beautifulsoup4=4.9.3
- blosc=1.20.1
- bokeh=2.2.3
- boost-cpp=1.72.0
- bottleneck=1.3.2
- brotlipy=0.7.0
- bzip2=1.0.8
- ca-certificates=2020.1.1
- cairo=1.14.12
- c-ares=1.17.1
- ca-certificates=2020.11.8
- cairo=1.16.0
- cartopy=0.17.0
- certifi=2020.4.5.1
- cffi=1.14.0
- certifi=2020.11.8
- cffi=1.14.4
- cfitsio=3.470
- cftime=1.1.2
- cftime=1.3.0
- chardet=3.0.4
- click=7.1.2
- click-plugins=1.1.1
- cligj=0.5.0
- cloudpickle=1.4.1
- cligj=0.7.1
- cloudpickle=1.6.0
- coincbc=2.10.5
- configargparse=1.1
- cryptography=2.9.2
- curl=7.67.0
- conda=4.9.2
- conda-package-handling=1.7.2
- configargparse=1.2.3
- cryptography=3.2.1
- curl=7.71.1
- cycler=0.10.0
- cytoolz=0.10.1
- dask=2.17.2
- dask-core=2.17.2
- cytoolz=0.11.0
- dask=2.30.0
- dask-core=2.30.0
- datrie=0.8.2
- dbus=1.13.14
- decorator=4.4.2
- distributed=2.17.0
- descartes=1.1.0
- distributed=2.30.1
- docutils=0.16
- entsoe-py=0.2.10
- expat=2.2.6
- fiona=1.8.11
- fontconfig=2.13.0
- freetype=2.9.1
- expat=2.2.9
- fiona=1.8.13
- fontconfig=2.13.1
- freetype=2.10.4
- freexl=1.0.5
- fsspec=0.7.4
- gdal=3.0.2
- fsspec=0.8.4
- gdal=3.0.4
- geographiclib=1.50
- geopandas=0.6.1
- geopy=1.22.0
- geos=3.8.0
- geotiff=1.5.1
- giflib=5.1.4
- gitdb=4.0.2
- gitpython=3.1.1
- glib=2.63.1
- gst-plugins-base=1.14.0
- gstreamer=1.14.0
- gurobi=9.0.2
- geopandas=0.8.1
- geopy=2.0.0
- geos=3.8.1
- geotiff=1.6.0
- gettext=0.19.8.1
- giflib=5.2.1
- gitdb=4.0.5
- gitpython=3.1.11
- glib=2.66.3
- glpk=4.65
- gmp=6.2.1
- hdf4=4.2.13
- hdf5=1.10.4
- hdf5=1.10.6
- heapdict=1.0.1
- icu=58.2
- idna=2.9
- importlib-metadata=1.6.0
- importlib_metadata=1.6.0
- intel-openmp=2020.1
- icu=64.2
- idna=2.10
- importlib-metadata=3.1.1
- importlib_metadata=3.1.1
- ipopt=3.13.2
- ipython=7.13.0
- ipython=7.19.0
- ipython_genutils=0.2.0
- jedi=0.17.0
- jedi=0.17.2
- jinja2=2.11.2
- joblib=0.15.1
- jpeg=9b
- joblib=0.17.0
- jpeg=9d
- json-c=0.13.1
- jsonschema=3.2.0
- jupyter_core=4.6.3
- kealib=1.4.7
- kiwisolver=1.2.0
- krb5=1.16.4
- ld_impl_linux-64=2.33.1
- libblas=3.8.0
- libboost=1.67.0
- libcblas=3.8.0
- libcurl=7.67.0
- libdap4=3.19.1
- libedit=3.1.20181209
- jupyter_core=4.7.0
- kealib=1.4.14
- kiwisolver=1.3.1
- krb5=1.17.2
- lcms2=2.11
- ld_impl_linux-64=2.35.1
- libarchive=3.3.3
- libblas=3.9.0
- libcblas=3.9.0
- libcurl=7.71.1
- libdap4=3.20.6
- libedit=3.1.20191231
- libev=4.33
- libffi=3.3
- libgcc-ng=9.1.0
- libgdal=3.0.2
- libgfortran-ng=7.3.0
- libgcc-ng=9.3.0
- libgdal=3.0.4
- libgfortran-ng=7.5.0
- libgfortran4=7.5.0
- libgfortran5=9.3.0
- libglib=2.66.3
- libgomp=9.3.0
- libiconv=1.16
- libkml=1.3.0
- liblapack=3.8.0
- libnetcdf=4.6.1
- liblapack=3.9.0
- libnetcdf=4.7.4
- libnghttp2=1.41.0
- libopenblas=0.3.12
- libpng=1.6.37
- libpq=11.5
- libpq=12.3
- libsolv=0.7.16
- libspatialindex=1.9.3
- libspatialite=4.3.0a
- libssh2=1.9.0
- libstdcxx-ng=9.1.0
- libstdcxx-ng=9.3.0
- libtiff=4.1.0
- libuuid=1.0.3
- libuuid=2.32.1
- libwebp-base=1.1.0
- libxcb=1.13
- libxml2=2.9.9
- libxml2=2.9.10
- libxslt=1.1.33
- locket=0.2.0
- lxml=4.5.0
- lz4-c=1.8.1.2
- lxml=4.6.2
- lz4-c=1.9.2
- lzo=2.10
- mamba=0.7.3
- markupsafe=1.1.1
- matplotlib=3.1.3
- matplotlib-base=3.1.3
- memory_profiler=0.55.0
- matplotlib-base=3.3.3
- memory_profiler=0.58.0
- metis=5.1.0
- mkl=2020.1
- mkl-service=2.3.0
- mkl_fft=1.0.15
- mkl_random=1.1.1
- mock=4.0.2
- more-itertools=8.3.0
- msgpack-python=1.0.0
- munch=2.5.0
- nbformat=5.0.6
- nbformat=5.0.8
- ncurses=6.2
- netcdf4=1.4.2
- networkx=2.4
- netcdf4=1.5.4
- networkx=2.5
- nose=1.3.7
- numexpr=2.7.1
- numpy=1.18.1
- numpy-base=1.18.1
- numpy=1.19.0
- olefile=0.46
- openjpeg=2.3.0
- openssl=1.1.1g
- owslib=0.19.2
- packaging=20.3
- pandas=1.0.3
- parso=0.7.0
- openjpeg=2.3.1
- openssl=1.1.1h
- owslib=0.20.0
- packaging=20.7
- pandas=1.1.4
- parso=0.7.1
- partd=1.1.0
- pcre=8.43
- patsy=0.5.1
- pcre=8.44
- pexpect=4.8.0
- pickleshare=0.7.5
- pillow=7.1.2
- pip=20.0.2
- pillow=8.0.1
- pip=20.3.1
- pixman=0.38.0
- pluggy=0.13.1
- ply=3.11
- poppler=0.65.0
- poppler-data=0.4.9
- postgresql=11.5
- powerplantmatching=0.4.5
- progressbar2=3.37.1
- proj=6.2.1
- prompt-toolkit=3.0.5
- prompt_toolkit=3.0.5
- psutil=5.7.0
- poppler=0.87.0
- poppler-data=0.4.10
- postgresql=12.3
- powerplantmatching=0.4.8
- progressbar2=3.53.1
- proj=7.0.0
- prompt-toolkit=3.0.8
- psutil=5.7.3
- pthread-stubs=0.4
- ptyprocess=0.6.0
- py=1.8.1
- pycountry=19.8.18
- pulp=2.3.1
- pycosat=0.6.3
- pycountry=20.7.3
- pycparser=2.20
- pyepsg=0.4.0
- pygments=2.6.1
- pykdtree=1.3.1
- pyomo=5.6.9
- pyopenssl=19.1.0
- pygments=2.7.2
- pykdtree=1.3.4
- pyomo=5.7.1
- pyopenssl=20.0.0
- pyparsing=2.4.7
- pyproj=2.6.1.post1
- pypsa=0.17.0
- pyqt=5.9.2
- pyrsistent=0.16.0
- pyshp=2.1.0
- pypsa=0.17.1
- pyrsistent=0.17.3
- pyshp=2.1.2
- pysocks=1.7.1
- pytables=3.6.1
- pytest=5.4.2
- pytest-runner=5.2
- python=3.7.7
- python=3.8.6
- python-dateutil=2.8.1
- python-utils=2.3.0
- python_abi=3.7
- pytz=2020.1
- pyutilib=5.8.0
- python-utils=2.4.0
- python_abi=3.8
- pytz=2020.4
- pyutilib=6.0.0
- pyyaml=5.3.1
- qt=5.9.7
- rasterio=1.1.0
- rasterio=1.1.5
- ratelimiter=1.2.0
- readline=8.0
- requests=2.23.0
- reproc=14.2.1
- reproc-cpp=14.2.1
- requests=2.25.0
- rtree=0.9.4
- scikit-learn=0.22.1
- scipy=1.4.1
- seaborn=0.10.1
- setuptools=47.1.1
- shapely=1.7.0
- sip=4.19.8
- ruamel_yaml=0.15.80
- scikit-learn=0.23.2
- scipy=1.5.3
- seaborn=0.11.0
- seaborn-base=0.11.0
- setuptools=49.6.0
- shapely=1.7.1
- six=1.15.0
- smmap=3.0.2
- snakemake-minimal=5.19.2
- snappy=1.1.7
- smmap=3.0.4
- snakemake-minimal=5.30.1
- snuggs=1.4.7
- sortedcontainers=2.1.0
- sortedcontainers=2.3.0
- soupsieve=2.0.1
- sqlite=3.31.1
- tbb=2018.0.5
- sqlite=3.34.0
- statsmodels=0.12.1
- tbb=2020.2
- tblib=1.6.0
- tiledb=1.6.3
- tk=8.6.8
- toolz=0.10.0
- threadpoolctl=2.1.0
- tiledb=1.7.7
- tk=8.6.10
- toolz=0.11.1
- toposort=1.5
- tornado=6.0.4
- traitlets=4.3.3
- typing_extensions=3.7.4.1
- tornado=6.1
- tqdm=4.54.1
- traitlets=5.0.5
- typing_extensions=3.7.4.3
- tzcode=2020a
- urllib3=1.25.8
- wcwidth=0.1.9
- wheel=0.34.2
- urllib3=1.25.11
- wcwidth=0.2.5
- wheel=0.36.1
- wrapt=1.12.1
- xarray=0.15.1
- xarray=0.16.2
- xerces-c=3.2.2
- xlrd=1.2.0
- xorg-kbproto=1.0.7
- xorg-libice=1.0.10
- xorg-libsm=1.2.3
- xorg-libx11=1.6.12
- xorg-libxau=1.0.9
- xorg-libxdmcp=1.1.3
- xorg-libxext=1.3.4
- xorg-libxrender=0.9.10
- xorg-renderproto=0.11.1
- xorg-xextproto=7.3.0
- xorg-xproto=7.0.31
- xz=5.2.5
- yaml=0.1.7
- yaml=0.2.5
- zict=2.0.0
- zipp=3.1.0
- zipp=3.4.0
- zlib=1.2.11
- zstd=1.3.7
- zstd=1.4.5
- pip:
- cdsapi==0.2.7
- cdsapi==0.4.0
- countrycode==0.2
- descartes==1.1.0
- geokit==1.1.2
- glaes==1.1.2
- tqdm==4.46.1
- sklearn==0.0
- tsam==1.1.0
- vresutils==0.3.1

View File

@ -24,15 +24,13 @@ Relevant Settings
conventional_carriers:
co2limit:
extendable_carriers:
Generator:
OPSD_VRES_countries:
include_renewable_capacities_from_OPSD:
estimate_renewable_capacities_from_capacity_stats:
load:
scaling_factor:
renewable: (keys)
renewable:
hydro:
carriers:
hydro_max_hours:
@ -54,9 +52,7 @@ Inputs
.. image:: ../img/hydrocapacities.png
:scale: 34 %
- ``data/geth2015_hydro_capacities.csv``: alternative to capacities above; NOT CURRENTLY USED!
- ``data/geth2015_hydro_capacities.csv``: alternative to capacities above; not currently used!
- ``resources/opsd_load.csv`` Hourly per-country load profiles.
- ``resources/regions_onshore.geojson``: confer :ref:`busregions`
- ``resources/nuts3_shapes.geojson``: confer :ref:`shapes`

View File

@ -43,7 +43,7 @@ Outputs
Description
-----------
The rule :mod:`add_extra_components` attaches additional extendable components to the clustered and simplified network. These can be configured in the ``config.yaml`` at ``electricity: extendable_carriers: ``. It processes ``networks/elec_s{simpl}_{clusters}.nc`` to build ``networks/elec_s{simpl}_{clusters}_ec.nc``, which in contrast to the former (depending on the configuration) contain with **zero** initial capacity
The rule :mod:`add_extra_components` attaches additional extendable components to the clustered and simplified network. These can be configured in the ``config.yaml`` at ``electricity: extendable_carriers:``. It processes ``networks/elec_s{simpl}_{clusters}.nc`` to build ``networks/elec_s{simpl}_{clusters}_ec.nc``, which in contrast to the former (depending on the configuration) contain with **zero** initial capacity
- ``StorageUnits`` of carrier 'H2' and/or 'battery'. If this option is chosen, every bus is given an extendable ``StorageUnit`` of the corresponding carrier. The energy and power capacities are linked through a parameter that specifies the energy capacity as maximum hours at full dispatch power and is configured in ``electricity: max_hours:``. This linkage leads to one investment variable per storage unit. The default ``max_hours`` lead to long-term hydrogen and short-term battery storage units.

View File

@ -17,7 +17,7 @@ Relevant Settings
url:
interpolate_limit:
time_shift_for_large_gaps:
manual_adjustments: true
manual_adjustments:
.. seealso::

View File

@ -10,10 +10,6 @@ Relevant Settings
.. code:: yaml
(electricity:)
(BAU_mincapacities:)
(SAFE_reservemargin:)
solving:
tmpdir:
options:
@ -28,10 +24,6 @@ Relevant Settings
track_iterations:
solver:
name:
(solveroptions):
(plotting:)
(conv_techs:)
.. seealso::
Documentation of the configuration file ``config.yaml`` at

View File

@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: CC0-1.0
version: 0.2.0
version: 0.3.0
tutorial: true
logging:
level: INFO