Merge branch 'release-v0.5' into introduce_modularity_clustering
This commit is contained in:
commit
8d132464bd
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
10
.reuse/dep5
10
.reuse/dep5
@ -4,15 +4,15 @@ Upstream-Contact: Tom Brown <tom.brown@kit.edu>
|
||||
Source: https://github.com/pypsa/pypsa-eur
|
||||
|
||||
Files: doc/img/*
|
||||
Copyright: 2019 Fabian Neumann (KIT)
|
||||
Copyright: 2019 Fabian Neumann (TUB, KIT)
|
||||
License: CC-BY-4.0
|
||||
|
||||
Files: doc/configtables/*
|
||||
Copyright: 2019 Fabian Neumann (KIT)
|
||||
Copyright: 2019 Fabian Neumann (TUB, KIT)
|
||||
License: CC-BY-4.0
|
||||
|
||||
Files: data/*
|
||||
Copyright: 2017-2020 The PyPSA-Eur Authors
|
||||
Copyright: 2017-2022 The PyPSA-Eur Authors
|
||||
License: CC-BY-4.0
|
||||
|
||||
Files: .github/*
|
||||
@ -20,9 +20,9 @@ Copyright: 2019 The PyPSA-Eur Authors
|
||||
License: CC0-1.0
|
||||
|
||||
Files: matplotlibrc
|
||||
Copyright: : 2017-2020 The PyPSA-Eur Authors
|
||||
Copyright: : 2017-2022 The PyPSA-Eur Authors
|
||||
License: CC0-1.0
|
||||
|
||||
Files: borg-it
|
||||
Copyright: : 2017-2020 The PyPSA-Eur Authors
|
||||
Copyright: : 2017-2022 The PyPSA-Eur Authors
|
||||
License: CC0-1.0
|
||||
|
@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright 2017-2021 The PyPSA-Eur Authors
|
||||
Copyright 2017-2022 The PyPSA-Eur Authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2017-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2017-2022 The PyPSA-Eur Authors
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
-->
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
version: 0.4.0
|
||||
version: 0.5.0
|
||||
tutorial: false
|
||||
|
||||
logging:
|
||||
@ -64,7 +64,7 @@ electricity:
|
||||
renewable_carriers: [solar, onwind, offwind-ac, offwind-dc, hydro]
|
||||
|
||||
estimate_renewable_capacities:
|
||||
enable: true
|
||||
enable: false
|
||||
# Add capacities from OPSD data
|
||||
from_opsd: true
|
||||
# Renewable capacities are based on existing capacities reported by IRENA
|
||||
@ -218,7 +218,7 @@ load:
|
||||
|
||||
costs:
|
||||
year: 2030
|
||||
version: v0.1.0
|
||||
version: v0.4.0
|
||||
rooftop_share: 0.14 # based on the potentials, assuming (0.1 kW/m2 and 10 m2/person)
|
||||
fill_values:
|
||||
FOM: 0
|
||||
|
@ -1,8 +1,8 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
version: 0.4.0
|
||||
version: 0.5.0
|
||||
tutorial: true
|
||||
|
||||
logging:
|
||||
@ -155,7 +155,7 @@ load:
|
||||
|
||||
costs:
|
||||
year: 2030
|
||||
version: v0.1.0
|
||||
version: v0.4.0
|
||||
rooftop_share: 0.14
|
||||
fill_values:
|
||||
FOM: 0
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
2
doc/_static/theme_overrides.css
vendored
2
doc/_static/theme_overrides.css
vendored
@ -1,4 +1,4 @@
|
||||
/* SPDX-FileCopyrightText: 2017-2020 The PyPSA-Eur Authors
|
||||
/* SPDX-FileCopyrightText: 2017-2022 The PyPSA-Eur Authors
|
||||
SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
|
@ -66,8 +66,8 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'PyPSA-Eur'
|
||||
copyright = u'2017-2020 Jonas Hoersch (KIT, FIAS), Fabian Hofmann (FIAS), David Schlachtberger (FIAS), Tom Brown (KIT, FIAS); 2019-2020 Fabian Neumann (KIT)'
|
||||
author = u'Jonas Hoersch (KIT, FIAS), Fabian Hofmann (FIAS), David Schlachtberger (FIAS), Tom Brown (KIT, FIAS), Fabian Neumann (KIT)'
|
||||
copyright = u'2017-2022 Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), David Schlachtberger (FIAS), Tom Brown (TUB, KIT, FIAS); 2019-2022 Fabian Neumann (TUB, KIT)'
|
||||
author = u'Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), David Schlachtberger (FIAS), Tom Brown (TUB, KIT, FIAS), Fabian Neumann (TUB, KIT)'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
|
@ -1,19 +1,29 @@
|
||||
,Unit,Values,Description
|
||||
voltages,kV,"Any subset of {220., 300., 380.}",Voltage levels to consider when
|
||||
voltages,kV,"Any subset of {220., 300., 380.}",Voltage levels to consider
|
||||
gaslimit,MWhth,"float or false",Global gas usage limit
|
||||
co2limit,:math:`t_{CO_2-eq}/a`,float,Cap on total annual system carbon dioxide emissions
|
||||
co2base,:math:`t_{CO_2-eq}/a`,float,Reference value of total annual system carbon dioxide emissions if relative emission reduction target is specified in ``{opts}`` wildcard.
|
||||
agg_p_nom_limits,file,path,Reference to ``.csv`` file specifying per carrier generator nominal capacity constraints for individual countries if ``'CCL'`` is in ``{opts}`` wildcard. Defaults to ``data/agg_p_nom_minmax.csv``.
|
||||
extendable_carriers,,,
|
||||
-- Generator,--,"Any extendable carrier",Defines existing or non-existing conventional and renewable power plants to be extendable during the optimization. Conventional generators can only be built/expanded where already existent today. If a listed conventional carrier is not included in the ``conventional_carriers`` list, the lower limit of the capacity expansion is set to 0.
|
||||
-- StorageUnit,--,"Any subset of {'battery','H2'}",Adds extendable storage units (battery and/or hydrogen) at every node/bus after clustering without capacity limits and with zero initial capacity.
|
||||
-- Store,--,"Any subset of {'battery','H2'}",Adds extendable storage units (battery and/or hydrogen) at every node/bus after clustering without capacity limits and with zero initial capacity.
|
||||
-- Link,--,Any subset of {'H2 pipeline'},Adds extendable links (H2 pipelines only) at every connection where there are lines or HVDC links without capacity limits and with zero initial capacity. Hydrogen pipelines require hydrogen storage to be modelled as ``Store``.
|
||||
operational_reserve,,,"Settings for reserve requirements following like `GenX <https://genxproject.github.io/GenX/dev/core/#Reserves>`_"
|
||||
-- activate,bool,"true or false","Whether to take operational reserve requirements into account during optimisation"
|
||||
-- epsilon_load,--,float,share of total load
|
||||
-- epsilon_vres,--,float,share of total renewable supply
|
||||
-- contingency,MW,float,fixed reserve capacity
|
||||
max_hours,,,
|
||||
-- battery,h,float,Maximum state of charge capacity of the battery in terms of hours at full output capacity ``p_nom``. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_.
|
||||
-- H2,h,float,Maximum state of charge capacity of the hydrogen storage in terms of hours at full output capacity ``p_nom``. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_.
|
||||
extendable_carriers,,,
|
||||
-- Generator,--,"Any extendable carrier","Defines existing or non-existing conventional and renewable power plants to be extendable during the optimization. Conventional generators can only be built/expanded where already existent today. If a listed conventional carrier is not included in the ``conventional_carriers`` list, the lower limit of the capacity expansion is set to 0."
|
||||
-- StorageUnit,--,"Any subset of {'battery','H2'}",Adds extendable storage units (battery and/or hydrogen) at every node/bus after clustering without capacity limits and with zero initial capacity.
|
||||
-- Store,--,"Any subset of {'battery','H2'}",Adds extendable storage units (battery and/or hydrogen) at every node/bus after clustering without capacity limits and with zero initial capacity.
|
||||
-- Link,--,Any subset of {'H2 pipeline'},Adds extendable links (H2 pipelines only) at every connection where there are lines or HVDC links without capacity limits and with zero initial capacity. Hydrogen pipelines require hydrogen storage to be modelled as ``Store``.
|
||||
powerplants_filter,--,"use `pandas.query <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html>`_ strings here, e.g. Country not in ['Germany']",Filter query for the default powerplant database.
|
||||
custom_powerplants,--,"use `pandas.query <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html>`_ strings here, e.g. Country in ['Germany']",Filter query for the custom powerplant database.
|
||||
conventional_carriers,--,"Any subset of {nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass}",List of conventional power plants to include in the model from ``resources/powerplants.csv``. If an included carrier is also listed in `extendable_carriers`, the capacity is taken as a lower bound.
|
||||
conventional_carriers,--,"Any subset of {nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass}","List of conventional power plants to include in the model from ``resources/powerplants.csv``. If an included carrier is also listed in `extendable_carriers`, the capacity is taken as a lower bound."
|
||||
renewable_carriers,--,"Any subset of {solar, onwind, offwind-ac, offwind-dc, hydro}",List of renewable generators to include in the model.
|
||||
estimate_renewable_capacities,,,
|
||||
"-- Fueltype [ppm], e.g. Wind",,"list of fueltypes strings in PyPSA-Eur, e.g. [onwind, offwind-ac, offwind-dc]",converts ppm Fueltype to PyPSA-EUR Fueltype
|
||||
-- enable,,bool,"Activate routine to estimate renewable capacities"
|
||||
-- from_opsd,--,bool,"Add capacities from OPSD data"
|
||||
-- year,--,bool,"Renewable capacities are based on existing capacities reported by IRENA for the specified year"
|
||||
-- expansion_limit,--,float or false,"Artificially limit maximum capacities to factor * (IRENA capacities), i.e. 110% of <years>'s capacities => expansion_limit: 1.1 false: Use estimated renewable potentials determine by the workflow"
|
||||
-- technology_mapping,,,"Mapping between powerplantmatching and PyPSA-Eur technology names"
|
Can't render this file because it has a wrong number of fields in line 7.
|
@ -10,4 +10,3 @@ max_depth,m,float,"Maximum sea water depth at which wind turbines can be build.
|
||||
min_shore_distance,m,float,"Minimum distance to the shore below which wind turbines cannot be build. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential."
|
||||
potential,--,"One of {'simple', 'conservative'}","Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`"
|
||||
clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero."
|
||||
keep_all_available_areas,bool,"{'true', 'false'}","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."
|
||||
|
|
@ -10,4 +10,3 @@ max_depth,m,float,"Maximum sea water depth at which wind turbines can be build.
|
||||
min_shore_distance,m,float,"Minimum distance to the shore below which wind turbines cannot be build. Such areas close to the shore are excluded in the process of calculating the AC-connected offshore wind potential."
|
||||
potential,--,"One of {'simple', 'conservative'}","Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`"
|
||||
clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero."
|
||||
keep_all_available_areas,bool,"{'true', 'false'}","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."
|
||||
|
|
@ -11,4 +11,3 @@ corine,,,
|
||||
natura,bool,"{true, false}","Switch to exclude `Natura 2000 <https://en.wikipedia.org/wiki/Natura_2000>`_ natural protection areas. Area is excluded if ``true``."
|
||||
potential,--,"One of {'simple', 'conservative'}","Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`"
|
||||
clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero."
|
||||
keep_all_available_areas,bool,"{'true', 'false'}","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."
|
||||
|
|
@ -12,4 +12,3 @@ corine,--,"Any subset of the `CORINE Land Cover code list <http://www.eea.europa
|
||||
natura,bool,"{true, false}","Switch to exclude `Natura 2000 <https://en.wikipedia.org/wiki/Natura_2000>`_ natural protection areas. Area is excluded if ``true``."
|
||||
potential,--,"One of {'simple', 'conservative'}","Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`"
|
||||
clip_p_max_pu,p.u.,float,"To avoid too small values in the renewables` per-unit availability time series values below this threshold are set to zero."
|
||||
keep_all_available_areas,bool,"{'true', 'false'}","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."
|
||||
|
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -241,8 +241,7 @@ Define additional generator attribute for conventional carrier types. If a scala
|
||||
|
||||
.. literalinclude:: ../config.default.yaml
|
||||
:language: yaml
|
||||
:start-at: load:
|
||||
:end-before: costs:
|
||||
:lines: 212-217
|
||||
|
||||
.. csv-table::
|
||||
:header-rows: 1
|
||||
@ -257,7 +256,7 @@ Define additional generator attribute for conventional carrier types. If a scala
|
||||
.. literalinclude:: ../config.default.yaml
|
||||
:language: yaml
|
||||
:start-after: scaling_factor:
|
||||
:end-before: solving:
|
||||
:end-before: clustering:
|
||||
|
||||
.. csv-table::
|
||||
:header-rows: 1
|
||||
@ -268,6 +267,23 @@ Define additional generator attribute for conventional carrier types. If a scala
|
||||
To change cost assumptions in more detail (i.e. other than ``marginal_cost`` and ``capital_cost``), consider modifying cost assumptions directly in ``resources/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 ``resources/costs.csv`` (e.g. ``data/costs-optimistic.csv``) and set the variable ``COSTS=data/costs-optimistic.csv`` in the ``Snakefile``.
|
||||
|
||||
|
||||
.. _clustering_cf:
|
||||
|
||||
``clustering``
|
||||
==============
|
||||
|
||||
.. literalinclude:: ../config.default.yaml
|
||||
:language: yaml
|
||||
:start-after: co2:
|
||||
:end-before: solving:
|
||||
|
||||
.. csv-table::
|
||||
:header-rows: 1
|
||||
:widths: 25,7,22,30
|
||||
:file: configtables/clustering.csv
|
||||
|
||||
|
||||
.. _solving_cf:
|
||||
|
||||
``solving``
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -7,7 +7,11 @@
|
||||
Cost Assumptions
|
||||
##################
|
||||
|
||||
The database of cost assumptions is retrieved from the repository `PyPSA/technology-data <https://github.com/pypsa/technology-data>`_ and then saved to``resources/costs.csv``. Cost assumptions of previous PyPSA-Eur versions can be restored by setting in the ``Snakefile``: ``COSTS="data/costs.csv".
|
||||
The database of cost assumptions is retrieved from the repository
|
||||
`PyPSA/technology-data <https://github.com/pypsa/technology-data>`_ and then
|
||||
saved to ``resources/costs.csv``. Cost assumptions of previous PyPSA-Eur
|
||||
versions can be restored by setting in the ``Snakefile``:
|
||||
``COSTS="data/costs.csv"``.
|
||||
|
||||
The ``config.yaml`` provides options to choose a reference year (``costs: year:``) and use a specific version of the repository ``costs: version:``.
|
||||
|
||||
@ -32,9 +36,6 @@ with a discount rate of :math:`r` over the economic lifetime :math:`n` using the
|
||||
|
||||
Based on the parameters above the ``marginal_cost`` and ``capital_cost`` of the system components are calculated.
|
||||
|
||||
.. note::
|
||||
|
||||
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
|
||||
==========================
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -71,6 +71,7 @@ PyPSA is known to work with the free software
|
||||
- `Ipopt <https://coin-or.github.io/Ipopt/INSTALL.html>`_
|
||||
- `Cbc <https://projects.coin-or.org/Cbc#DownloadandInstall>`_
|
||||
- `GLPK <https://www.gnu.org/software/glpk/>`_ (`WinGLKP <http://winglpk.sourceforge.net/>`_)
|
||||
- `HiGHS <https://highs.dev/>`_
|
||||
|
||||
and the non-free, commercial software (for some of which free academic licenses are available)
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
REM SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
REM SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
REM SPDX-License-Identifier: MIT
|
||||
|
||||
@ECHO OFF
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2020-2021 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2020-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2021 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -10,95 +10,171 @@ Release Notes
|
||||
Upcoming Release
|
||||
================
|
||||
|
||||
* Add an efficiency factor of 88.55% to offshore wind capacity factors
|
||||
as a proxy for wake losses. More rigorous modelling is `planned <https://github.com/PyPSA/pypsa-eur/issues/153>`_
|
||||
[`#277 <https://github.com/PyPSA/pypsa-eur/pull/277>`_].
|
||||
* new feature
|
||||
|
||||
* The default deployment density of AC- and DC-connected offshore wind capacity is reduced from 3 MW/sqkm
|
||||
to a more conservative estimate of 2 MW/sqkm [`#280 <https://github.com/PyPSA/pypsa-eur/pull/280>`_].
|
||||
PyPSA-Eur 0.5.0 (26th July 2022)
|
||||
=====================================
|
||||
|
||||
* Following discussion in `#285 <https://github.com/PyPSA/pypsa-eur/issues/285>`_ we have disabled the
|
||||
correction factor for solar PV capacity factors by default while satellite data is used.
|
||||
A correction factor of 0.854337 is recommended if reanalysis data like ERA5 is used.
|
||||
|
||||
* Resource definitions for memory usage now follow `Snakemake standard resource definition <https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#standard-resources>`_ ``mem_mb`` rather than ``mem``.
|
||||
|
||||
* Network building is made deterministic by supplying a fixed random state to network clustering routines.
|
||||
**New Features**
|
||||
|
||||
* New network topology extracted from the ENTSO-E interactive map.
|
||||
|
||||
* The unused argument ``simple_hvdc_costs`` in :mod:`add_electricity` was removed.
|
||||
|
||||
* Iterative solving with impedance updates is skipped if there are no expandable lines.
|
||||
|
||||
* Switch from Germany to Belgium for continuous integration and tutorial to save resources.
|
||||
|
||||
* Use updated SARAH-2 and ERA5 cutouts with slightly wider scope to east and additional variables.
|
||||
|
||||
* Added existing renewable capacities for all countries based on IRENA statistics (IRENASTAT) using new ``powerplantmatching`` version:
|
||||
* Added existing renewable capacities for all countries based on IRENA
|
||||
statistics (IRENASTAT) using new ``powerplantmatching`` version:
|
||||
* The corresponding ``config`` entries changed, cf. ``config.default.yaml``:
|
||||
* old: ``estimate_renewable_capacities_from_capacity_stats``
|
||||
* new: ``estimate_renewable_capacities``
|
||||
* The estimation is endabled by setting the subkey ``enable`` to ``True``.
|
||||
* Configuration of reference year for capacities can be configured (default: ``2020``)
|
||||
* The list of renewables provided by the OPSD database can be used as a basis, using the tag ``from_opsd: True``. This adds the renewables from the database and fills up the missing capacities with the heuristic distribution.
|
||||
* Uniform expansion limit of renewable build-up based on existing capacities can be configured using ``expansion_limit`` option
|
||||
(default: ``false``; limited to determined renewable potentials)
|
||||
* Distribution of country-level capacities proportional to maximum annual energy yield for each bus region
|
||||
* Configuration of reference year for capacities can be configured (default:
|
||||
``2020``)
|
||||
* The list of renewables provided by the OPSD database can be used as a basis,
|
||||
using the tag ``from_opsd: True``. This adds the renewables from the
|
||||
database and fills up the missing capacities with the heuristic
|
||||
distribution.
|
||||
* Uniform expansion limit of renewable build-up based on existing capacities
|
||||
can be configured using ``expansion_limit`` option (default: ``false``;
|
||||
limited to determined renewable potentials)
|
||||
* Distribution of country-level capacities proportional to maximum annual
|
||||
energy yield for each bus region
|
||||
* The config key ``renewable_capacities_from_OPSD`` is deprecated and was moved
|
||||
under the section, ``estimate_renewable_capacities``. To enable it, set
|
||||
``from_opsd`` to `True`.
|
||||
|
||||
* The config key ``renewable_capacities_from_OPSD`` is deprecated and was moved under the section, ``estimate_renewable_capacities``. To enable it, set ``from_opsd`` to `True`.
|
||||
* Add operational reserve margin constraint analogous to `GenX implementation
|
||||
<https://genxproject.github.io/GenX/dev/core/#Reserves>`_. Can be activated
|
||||
with config setting ``electricity: operational_reserve:``.
|
||||
|
||||
* Add operational reserve margin constraint analogous to `GenX implementation <https://genxproject.github.io/GenX/dev/core/#Reserves>`_.
|
||||
Can be activated with config setting ``electricity: operational_reserve:``.
|
||||
* Implement country-specific Energy Availability Factors (EAFs) for nuclear
|
||||
power plants based on IAEA 2018-2020 reported country averages. These are
|
||||
specified ``data/nuclear_p_max_pu.csv`` and translate to static ``p_max_pu``
|
||||
values.
|
||||
|
||||
* Add function to add global constraint on use of gas in :mod:`prepare_network`. This can be activated by including the keyword ``CH4L`` in the ``{opts}`` wildcard which enforces the limit set in ``electricity: gaslimit:`` given in MWh thermal. Alternatively, it is possible to append a number in the `{opts}` wildcard, e.g. `CH4L200` which limits the gas use to 200 TWh thermal.
|
||||
* Add function to add global constraint on use of gas in :mod:`prepare_network`.
|
||||
This can be activated by including the keyword ``CH4L`` in the ``{opts}``
|
||||
wildcard which enforces the limit set in ``electricity: gaslimit:`` given in
|
||||
MWh thermal. Alternatively, it is possible to append a number in the `{opts}`
|
||||
wildcard, e.g. `CH4L200` which limits the gas use to 200 TWh thermal.
|
||||
|
||||
* A new section ``conventional`` was added to the config file. This section contains configurations for conventional carriers.
|
||||
|
||||
* Add configuration option to implement arbitrary generator attributes for conventional generation technologies.
|
||||
|
||||
* Implement country-specific Energy Availability Factors (EAFs) for nuclear power plants based on IAEA 2018-2020 reported country averages. These are specified ``data/nuclear_p_max_pu.csv`` and translate to static ``p_max_pu`` values.
|
||||
|
||||
* The powerplants that have been shut down before 2021 are filtered out.
|
||||
|
||||
* ``powerplantmatching>=0.5.1`` is now required for ``IRENASTATS``.
|
||||
|
||||
* The inclusion of renewable carriers is now specified in the config entry ``renewable_carriers``. Before this was done by commenting/uncommenting sub-sections in the `renewable` config section.
|
||||
|
||||
* Now, all carriers that should be extendable have to be listed in the config entry ``extendable_carriers``. Before, renewable carriers were always set to be extendable. For backwards compatibility, the workflow is still looking at the listed carriers under the ``renewable`` key. In the future, all of them have to be listed under ``extendable_carriers``.
|
||||
|
||||
* It is now possible to set conventional power plants as extendable by adding them to the list of extendable ``Generator`` carriers in the config.
|
||||
|
||||
* Listing conventional carriers in ``extendable_carriers`` but not in ``conventional_carriers``, sets the corresponding conventional power plants as extendable without a lower capacity bound of today's capacities.
|
||||
|
||||
* Now, conventional carriers have an assigned capital cost by default.
|
||||
|
||||
* The ``build_year`` and ``lifetime`` column are now defined for conventional power plants.
|
||||
|
||||
* Fix crs bug. Change crs 4236 to 4326.
|
||||
|
||||
* Update rasterio version to correctly calculate exclusion raster
|
||||
|
||||
* Remove rules to build or retrieve rasterized NATURA 2000 dataset. Renewable potential calculation now directly uses the shapefiles.
|
||||
|
||||
* Cache data and cutouts folders. This cache will be updated weekly.
|
||||
|
||||
* Add rule to automatically retrieve Natura2000 natural protection areas. Switch of file format to GPKG.
|
||||
* Add option to set CO2 emission prices through `{opts}` wildcard: `Ep<number>`, e.g. `Ep180`, will set the EUR/tCO2 price.
|
||||
|
||||
* Add option to alter marginal costs of a carrier through `{opts}` wildcard: `<carrier>+m<factor>`, e.g. `gas+m2.5`, will multiply the default marginal cost for gas by factor 2.5.
|
||||
|
||||
* Clustering strategies for generators and buses have moved from distinct scripts to configurables to unify the process and make it more transparent.
|
||||
|
||||
* Hierarchical clustering was introduced. Distance metric is calculated from renewable potentials on hourly (feature entry ends with `-time`) or annual (feature entry in config end with `-cap`) values.
|
||||
* Add option to alter marginal costs of a carrier through `{opts}` wildcard:
|
||||
`<carrier>+m<factor>`, e.g. `gas+m2.5`, will multiply the default marginal
|
||||
cost for gas by factor 2.5.
|
||||
|
||||
* Hierarchical clustering was introduced. Distance metric is calculated from
|
||||
renewable potentials on hourly (feature entry ends with `-time`) or annual
|
||||
(feature entry in config end with `-cap`) values.
|
||||
|
||||
* Greedy modularity clustering was introduced. Distance metric is based on electrical distance taking into account the impedance of all transmission lines of the network.
|
||||
|
||||
* Techno-economic parameters of technologies (e.g. costs and efficiencies) will now be retrieved from a separate repository `PyPSA/technology-data <https://github.com/pypsa/technology-data>`_
|
||||
that collects assumptions from a variety of sources. It is activated by default with ``enable: retrieve_cost_data: true`` and controlled with ``costs: year:`` and ``costs: version:``.
|
||||
The location of this data changed from ``data/costs.csv`` to ``resources/costs.csv``
|
||||
[`#184 <https://github.com/PyPSA/pypsa-eur/pull/184>`_].
|
||||
* Techno-economic parameters of technologies (e.g. costs and efficiencies) will
|
||||
now be retrieved from a separate repository `PyPSA/technology-data
|
||||
<https://github.com/pypsa/technology-data>`_ that collects assumptions from a
|
||||
variety of sources. It is activated by default with ``enable:
|
||||
retrieve_cost_data: true`` and controlled with ``costs: year:`` and ``costs:
|
||||
version:``. The location of this data changed from ``data/costs.csv`` to
|
||||
``resources/costs.csv`` [`#184
|
||||
<https://github.com/PyPSA/pypsa-eur/pull/184>`_].
|
||||
|
||||
* A new section ``conventional`` was added to the config file. This section
|
||||
contains configurations for conventional carriers.
|
||||
|
||||
* Add configuration option to implement arbitrary generator attributes for
|
||||
conventional generation technologies.
|
||||
|
||||
* Add option to set CO2 emission prices through `{opts}` wildcard: `Ep<number>`,
|
||||
e.g. `Ep180`, will set the EUR/tCO2 price.
|
||||
|
||||
**Changes**
|
||||
|
||||
* Add an efficiency factor of 88.55% to offshore wind capacity factors as a
|
||||
proxy for wake losses. More rigorous modelling is `planned
|
||||
<https://github.com/PyPSA/pypsa-eur/issues/153>`_ [`#277
|
||||
<https://github.com/PyPSA/pypsa-eur/pull/277>`_].
|
||||
|
||||
* Following discussion in `#285
|
||||
<https://github.com/PyPSA/pypsa-eur/issues/285>`_ we have disabled the
|
||||
correction factor for solar PV capacity factors by default while satellite
|
||||
data is used. A correction factor of 0.854337 is recommended if reanalysis
|
||||
data like ERA5 is used.
|
||||
|
||||
* The default deployment density of AC- and DC-connected offshore wind capacity
|
||||
is reduced from 3 MW/sqkm to a more conservative estimate of 2 MW/sqkm [`#280
|
||||
<https://github.com/PyPSA/pypsa-eur/pull/280>`_].
|
||||
|
||||
* The inclusion of renewable carriers is now specified in the config entry
|
||||
``renewable_carriers``. Before this was done by commenting/uncommenting
|
||||
sub-sections in the `renewable` config section.
|
||||
|
||||
* Now, all carriers that should be extendable have to be listed in the config
|
||||
entry ``extendable_carriers``. Before, renewable carriers were always set to
|
||||
be extendable. For backwards compatibility, the workflow is still looking at
|
||||
the listed carriers under the ``renewable`` key. In the future, all of them
|
||||
have to be listed under ``extendable_carriers``.
|
||||
|
||||
* It is now possible to set conventional power plants as extendable by adding
|
||||
them to the list of extendable ``Generator`` carriers in the config.
|
||||
|
||||
* Listing conventional carriers in ``extendable_carriers`` but not in
|
||||
``conventional_carriers``, sets the corresponding conventional power plants as
|
||||
extendable without a lower capacity bound of today's capacities.
|
||||
|
||||
* Now, conventional carriers have an assigned capital cost by default.
|
||||
|
||||
* The ``build_year`` and ``lifetime`` column are now defined for conventional
|
||||
power plants.
|
||||
|
||||
* Use updated SARAH-2 and ERA5 cutouts with slightly wider scope to east and
|
||||
additional variables.
|
||||
|
||||
* Resource definitions for memory usage now follow `Snakemake standard resource
|
||||
definition
|
||||
<https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#standard-resources>`_
|
||||
``mem_mb`` rather than ``mem``.
|
||||
|
||||
* The powerplants that have been shut down by 2021 are filtered out.
|
||||
|
||||
* Updated historical `EIA hydro generation data <https://www.eia.gov/international/data/world>`_.
|
||||
|
||||
* Network building is made deterministic by supplying a fixed random state to
|
||||
network clustering routines.
|
||||
|
||||
* Clustering strategies for generator and bus attributes can now be specified directly in the ``config.yaml``.
|
||||
|
||||
* Iterative solving with impedance updates is skipped if there are no expandable
|
||||
lines.
|
||||
|
||||
* The unused argument ``simple_hvdc_costs`` in :mod:`add_electricity` was
|
||||
removed.
|
||||
|
||||
* Switch from Germany to Belgium for continuous integration and tutorial to save
|
||||
resources.
|
||||
|
||||
* It is now possible to skip the progressbar for land eligibility calculations for additional speedup.
|
||||
|
||||
**Bugs and Compatibility**
|
||||
|
||||
* Fix crs bug. Change crs 4236 to 4326.
|
||||
|
||||
* ``powerplantmatching>=0.5.1`` is now required for ``IRENASTATS``.
|
||||
|
||||
* Update rasterio version to correctly calculate exclusion raster.
|
||||
|
||||
* It is now possible to run the workflow with only landlocked countries.
|
||||
|
||||
* Bugfixes for manual load adjustments across years.
|
||||
|
||||
* Enable parallel computing with new dask version.
|
||||
|
||||
* Restore compatibility of ``mock_snakemake`` with lastest Snakemake versions.
|
||||
|
||||
* Script ``build_bus_regions``: move voronoi partition from vresutils to script.
|
||||
|
||||
* Script ``add_electricity``: remove ``vresutils.costdata.annuity`` dependency.
|
||||
|
||||
* Fix the plot_network snakemake rule.
|
||||
|
||||
* Compatibility with pandas 1.4. Address deprecations.
|
||||
|
||||
* Restore Windows compatibility by using ``shutil.move`` rather than ``mv``.
|
||||
|
||||
|
||||
Synchronisation Release - Ukraine and Moldova (17th March 2022)
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2019-2021 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2019-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -83,14 +83,14 @@ For example, we may want to use the ERA-5 dataset for solar and not the default
|
||||
|
||||
.. literalinclude:: ../config.tutorial.yaml
|
||||
:language: yaml
|
||||
:lines: 62,105,106
|
||||
:lines: 63,106,107
|
||||
|
||||
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: 187,197,198
|
||||
:lines: 188,198,199
|
||||
|
||||
.. note::
|
||||
|
||||
@ -272,8 +272,6 @@ the wildcards given in ``scenario`` in the configuration file ``config.yaml`` ar
|
||||
:start-at: scenario:
|
||||
:end-before: countries:
|
||||
|
||||
In this example we would not only solve a 6-node model of Germany but also a 2-node model.
|
||||
|
||||
How to analyse solved networks?
|
||||
===============================
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2022 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -53,7 +53,6 @@ dependencies:
|
||||
- tqdm
|
||||
- pytz
|
||||
- tabula-py
|
||||
- mergedeep
|
||||
- pyxlsb
|
||||
|
||||
- pip:
|
||||
|
@ -1,10 +1,9 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
import pandas as pd
|
||||
from pathlib import Path
|
||||
from collections import OrderedDict
|
||||
|
||||
REGION_COLS = ['geometry', 'name', 'x', 'y', 'country']
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2021 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -77,10 +77,8 @@ from _helpers import configure_logging
|
||||
import pypsa
|
||||
import powerplantmatching as pm
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
from powerplantmatching.export import map_country_bus
|
||||
from scipy.spatial import cKDTree as KDTree
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -70,7 +70,6 @@ Description
|
||||
import logging
|
||||
from _helpers import configure_logging
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
from operator import attrgetter
|
||||
from functools import reduce
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -125,8 +125,6 @@ import logging
|
||||
from _helpers import configure_logging, update_p_nom_max, get_aggregation_strategies
|
||||
|
||||
import pypsa
|
||||
import os
|
||||
import shapely
|
||||
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
@ -137,9 +135,8 @@ import seaborn as sns
|
||||
|
||||
from functools import reduce
|
||||
|
||||
from pypsa.networkclustering import (busmap_by_kmeans, busmap_by_spectral_clustering,
|
||||
busmap_by_hac, busmap_by_greedy_modularity,
|
||||
_make_consense, get_clustering_from_busmap)
|
||||
from pypsa.networkclustering import (busmap_by_kmeans, busmap_by_hac,
|
||||
busmap_by_greedy_modularity, get_clustering_from_busmap)
|
||||
|
||||
import warnings
|
||||
warnings.filterwarnings(action='ignore', category=UserWarning)
|
||||
@ -306,12 +303,6 @@ def busmap_for_n_clusters(n, n_clusters, solver_name, focus_weights=None, algori
|
||||
|
||||
n_clusters = distribute_clusters(n, n_clusters, focus_weights=focus_weights, solver_name=solver_name)
|
||||
|
||||
def reduce_network(n, buses):
|
||||
nr = pypsa.Network()
|
||||
nr.import_components_from_dataframe(buses, "Bus")
|
||||
nr.import_components_from_dataframe(n.lines.loc[n.lines.bus0.isin(buses.index) & n.lines.bus1.isin(buses.index)], "Line")
|
||||
return nr
|
||||
|
||||
def busmap_for_country(x):
|
||||
prefix = x.name[0] + x.name[1] + ' '
|
||||
logger.debug(f"Determining busmap for country {prefix[:-1]}")
|
||||
@ -321,16 +312,12 @@ def busmap_for_n_clusters(n, n_clusters, solver_name, focus_weights=None, algori
|
||||
|
||||
if algorithm == "kmeans":
|
||||
return prefix + busmap_by_kmeans(n, weight, n_clusters[x.name], buses_i=x.index, **algorithm_kwds)
|
||||
elif algorithm == "spectral":
|
||||
return prefix + busmap_by_spectral_clustering(reduce_network(n, x), n_clusters[x.name], **algorithm_kwds)
|
||||
elif algorithm == "louvain":
|
||||
return prefix + busmap_by_louvain(reduce_network(n, x), n_clusters[x.name], **algorithm_kwds)
|
||||
elif algorithm == "hac":
|
||||
return prefix + busmap_by_hac(n, n_clusters[x.name], buses_i=x.index, feature=feature.loc[x.index])
|
||||
elif algorithm == "modularity":
|
||||
return prefix + busmap_by_greedy_modularity(n, n_clusters[x.name], buses_i=x.index)
|
||||
else:
|
||||
raise ValueError(f"`algorithm` must be one of 'kmeans', 'hac', 'spectral' or 'louvain'. Is {algorithm}.")
|
||||
raise ValueError(f"`algorithm` must be one of 'kmeans' or 'hac'. Is {algorithm}.")
|
||||
|
||||
return (n.buses.groupby(['country', 'sub_network'], group_keys=False)
|
||||
.apply(busmap_for_country).squeeze().rename('busmap'))
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright 2019-2020 Fabian Hofmann (FIAS)
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# Copyright 2019-2022 Fabian Hofmann (TUB, FIAS)
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -99,7 +99,7 @@ from functools import reduce
|
||||
|
||||
import pypsa
|
||||
from pypsa.io import import_components_from_dataframe, import_series_from_dataframe
|
||||
from pypsa.networkclustering import busmap_by_stubs, aggregategenerators, aggregateoneport, get_clustering_from_busmap, _make_consense
|
||||
from pypsa.networkclustering import busmap_by_stubs, aggregategenerators, aggregateoneport, get_clustering_from_busmap
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2022 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
version: 0.4.0
|
||||
version: 0.5.0
|
||||
tutorial: true
|
||||
logging:
|
||||
level: INFO
|
||||
@ -153,7 +153,7 @@ load:
|
||||
|
||||
costs:
|
||||
year: 2030
|
||||
version: v0.1.0
|
||||
version: v0.4.0
|
||||
rooftop_share: 0.14
|
||||
fill_values:
|
||||
FOM: 0
|
||||
|
Loading…
Reference in New Issue
Block a user