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:
parent
3ad6340c13
commit
08674a6cda
@ -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
|
||||
|
@ -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'])
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
version: 0.2.0
|
||||
version: 0.3.0
|
||||
tutorial: false
|
||||
|
||||
logging:
|
||||
|
@ -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'
|
||||
|
5
doc/_static/theme_overrides.css
vendored
5
doc/_static/theme_overrides.css
vendored
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
|
@ -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:
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
==========================
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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`
|
||||
|
@ -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
|
||||
|
@ -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`
|
||||
|
@ -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.
|
||||
|
||||
|
@ -17,7 +17,7 @@ Relevant Settings
|
||||
url:
|
||||
interpolate_limit:
|
||||
time_shift_for_large_gaps:
|
||||
manual_adjustments: true
|
||||
manual_adjustments:
|
||||
|
||||
|
||||
.. seealso::
|
||||
|
@ -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
|
||||
|
@ -2,7 +2,7 @@
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
version: 0.2.0
|
||||
version: 0.3.0
|
||||
tutorial: true
|
||||
logging:
|
||||
level: INFO
|
||||
|
Loading…
Reference in New Issue
Block a user