diff --git a/CITATION.cff b/CITATION.cff index 54a78722..b10377e7 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,7 +2,7 @@ cff-version: 1.1.0 message: "If you use this package, please cite the corresponding manuscript in Energy Strategy Reviews." title: "PyPSA-Eur: An open optimisation model of the European transmission system" repository: https://github.com/pypsa/pypsa-eur -version: 0.3.0 +version: 0.4.0 license: GPLv3 journal: Energy Strategy Reviews doi: 10.1016/j.esr.2018.08.012 diff --git a/config.default.yaml b/config.default.yaml index 27ca63d0..a20e4d04 100755 --- a/config.default.yaml +++ b/config.default.yaml @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: CC0-1.0 -version: 0.3.0 +version: 0.4.0 tutorial: false logging: diff --git a/config.tutorial.yaml b/config.tutorial.yaml index e551e460..c199712a 100755 --- a/config.tutorial.yaml +++ b/config.tutorial.yaml @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: CC0-1.0 -version: 0.3.0 +version: 0.4.0 tutorial: true logging: diff --git a/doc/conf.py b/doc/conf.py index b2b220a0..00084a48 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -76,7 +76,7 @@ author = u'Jonas Hoersch (KIT, FIAS), Fabian Hofmann (FIAS), David Schlachtberge # The short X.Y version. version = u'0.3' # The full version, including alpha/beta/rc tags. -release = u'0.3.0' +release = u'0.4.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 1e9e4bc3..3c59f79f 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -11,24 +11,121 @@ Release Notes Upcoming Release ================ -* Switch to new major release, ``>=v0.2.1`` of ``atlite``. The version upgrade comes along with significant speed up for the rule ``build_renewable_profiles.py`` (~factor 2). A lot of the code which calculated the landuse availability is now outsourced and does not rely on ``glaes``, ``geokit`` anymore. This facilitates the environment building and version compatibility of ``gdal``, ``libgdal`` with other packages. -* The minimum python version was set to ``3.8``. -* The rule and script ``build_country_flh`` are removed as they're no longer used or maintained. -* The flag ``keep_all_available_areas`` in the configuration for renewable potentials (config.yaml -> renewable -> {technology}) was deprecated and now defaults to ``True``. -* The tutorial cutout was renamed from ``cutouts/europe-2013-era5.nc`` to ``cutouts/europe-2013-era5-tutorial.nc`` to accomodate tutorial and productive cutouts side-by-side. -* Fix: Value for ``co2base`` in ``config.yaml`` adjusted to 1.487e9 t CO2-eq (from 3.1e9 t CO2-eq). The new value represents emissions related to the electricity sector for EU+UK. The old value was ~2x too high and used when the emissions wildcard in ``{opts}`` was used. -* Add option to include marginal costs of links representing fuel cells, electrolysis, and battery inverters +* add new features and bugfixes here + + +PyPSA-Eur 0.4.0 (15th September 2021) +===================================== + +**New Features and Changes** + + +* Switch to the new major ``atlite`` release v0.2. The version upgrade comes + along with significant speed up for the rule ``build_renewable_profiles.py`` + (~factor 2). A lot of the code which calculated the land-use availability is now + outsourced and does not rely on ``glaes``, ``geokit`` anymore. This facilitates + the environment building and version compatibility of ``gdal``, ``libgdal`` with + other packages [`#224 `_]. + +* Implemented changes to ``n.snapshot_weightings`` in new PyPSA version v0.18 + (cf. `PyPSA/PyPSA/#227 `_) + [`#259 `_]. + +* Add option to pre-aggregate nodes without power injections (positive or + negative, i.e. generation or demand) to electrically closest nodes or neighbors + in ``simplify_network``. Defaults to ``False``. This affects nodes that are no + substations or have no offshore connection. + +* In :mod:`simplify_network`, bus columns with no longer correct entries are + removed (symbol, tags, under_construction, substation_lv, substation_off) + [`#219 `_] + +* Add option to include marginal costs of links representing fuel cells, + electrolysis, and battery inverters [`#232 `_]. -* Add option to pre-aggregate nodes without power injections (positive or negative, i.e. generation or demand) to electrically closest nodes or neighbors in ``simplify_network``. Defaults to ``False``. This affects nodes that are no substations or have no offshore connection. -* Fix: Add escape in :mod:`base_network` if all TYNDP links are already contained in the network [`#246 `_]. -* Bugfix in :mod:`solve_operations_network`: optimised capacities are now fixed for all extendable links, not only HVDC links [`#244 `_]. -* The ``focus_weights`` are now also considered when pre-clustering in the :mod:`simplify_network` rule [`#241 `_]. -* Continuous integration testing switches to Github Actions from Travis CI [`#252 `_]. -* Bugfix in :mod:`build_renewable_profile` where offshore wind profiles could no longer be created [`#249 `_]. -* Implements changes to ``n.snapshot_weightings`` in upcoming PyPSA version (cf. `PyPSA/PyPSA/#227 `_) [`#259 `_]. -* Bugfix: Lower expansion limit of extendable carriers is now set to the existing capacity, i.e. ``p_nom_min = p_nom`` (0 before). Simultaneously, the upper limit (``p_nom_max``) is now the maximum of the installed capacity (``p_nom``) and the previous estimate based on land availability (``p_nom_max``) [`#260 `_]. -* Bugfix: Solving an operations network now includes optimized store capacities as well. Before only lines, links, generators and storage units were considered. -* Bugfix: With ``load_shedding: true`` in the solving options of ``config.yaml`` load shedding generators are only added at the AC buses, excluding buses for H2 and battery stores. + +* The rule and script ``build_country_flh`` are removed as they are no longer + used or maintained. + +* The connection cost of generators in :mod:`simplify_network` are now reported + in ``resources/connection_costs_s{simpl}.csv`` + [`#261 `_]. + +* The tutorial cutout was renamed from ``cutouts/europe-2013-era5.nc`` to + ``cutouts/europe-2013-era5-tutorial.nc`` to accomodate tutorial and productive + cutouts side-by-side. + +* The flag ``keep_all_available_areas`` in the configuration for renewable + potentials was deprecated and now defaults to ``True``. + +* Update dependencies in ``envs/environment.yaml`` + [`#257 `_] + +* Continuous integration testing switches to Github Actions from Travis CI + [`#252 `_]. + +* Documentation on readthedocs.io is now built with ``pip`` only and no longer + requires ``conda`` [`#267 `_]. + +* Use ``Citation.cff`` [`#273 `_]. + +**Bugs and Compatibility** + + +* Support for PyPSA v0.18 [`#268 `_]. + +* Minimum Python version set to ``3.8``. + +* Removed ``six`` dependency [`#245 `_]. + +* Update :mod:`plot_network` and :mod:`make_summary` rules to latest PyPSA + versions [`#270 `_]. + +* Bugfix: Keep converter links to store components when using the ``ATK`` + wildcard and only remove DC links [`#214 `_]. + +* Bugfix: Value for ``co2base`` in ``config.yaml`` adjusted to 1.487e9 t CO2-eq + (from 3.1e9 t CO2-eq). The new value represents emissions related to the + electricity sector for EU+UK+Balkan. The old value was too high and used when + the emissions wildcard in ``{opts}`` was used + [`#233 `_]. + +* Bugfix: Add escape in :mod:`base_network` if all TYNDP links are already + contained in the network + [`#246 `_]. + +* Bugfix: In :mod:`solve_operations_network` the optimised capacities are now + fixed for all extendable links, not only HVDC links + [`#244 `_]. + +* Bugfix: The ``focus_weights`` are now also considered when pre-clustering in + the :mod:`simplify_network` rule + [`#241 `_]. + +* Bugfix: in :mod:`build_renewable_profile` where offshore wind profiles could + no longer be created [`#249 `_]. + +* Bugfix: Lower expansion limit of extendable carriers is now set to the + existing capacity, i.e. ``p_nom_min = p_nom`` (0 before). Simultaneously, the + upper limit (``p_nom_max``) is now the maximum of the installed capacity + (``p_nom``) and the previous estimate based on land availability (``p_nom_max``) + [`#260 `_]. + +* Bugfix: Solving an operations network now includes optimized store capacities + as well. Before only lines, links, generators and storage units were considered + [`#269 `_]. + +* Bugfix: With ``load_shedding: true`` in the solving options of ``config.yaml`` + load shedding generators are only added at the AC buses, excluding buses for H2 + and battery stores [`#269 `_]. + +* Bugfix: Delete duplicated capital costs at battery discharge link + [`#240 `_]. + +* Bugfix: Propagate the solver log file name to the solver. Previously, the + PyPSA network solving functions were not told about the solver logfile specified + in the Snakemake file [`#247 `_] + PyPSA-Eur 0.3.0 (7th December 2020) =================================== diff --git a/envs/environment.fixed.yaml b/envs/environment.fixed.yaml index 558db60e..dc5ee621 100644 --- a/envs/environment.fixed.yaml +++ b/envs/environment.fixed.yaml @@ -1,7 +1,3 @@ -# SPDX-FileCopyrightText: : 2017-2020 The PyPSA-Eur Authors -# -# SPDX-License-Identifier: GPL-3.0-or-later - name: pypsa-eur channels: - bioconda @@ -11,255 +7,301 @@ dependencies: - _libgcc_mutex=0.1 - _openmp_mutex=4.5 - affine=2.3.0 + - alsa-lib=1.2.3 - amply=0.1.4 - appdirs=1.4.4 - - atlite=0.0.3 - - attrs=20.3.0 + - atlite=0.2.5 + - attrs=21.2.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 + - backports.functools_lru_cache=1.6.4 + - beautifulsoup4=4.10.0 + - blosc=1.21.0 + - bokeh=2.3.3 + - boost-cpp=1.74.0 - bottleneck=1.3.2 - brotlipy=0.7.0 - bzip2=1.0.8 - - c-ares=1.17.1 - - ca-certificates=2020.11.8 + - c-ares=1.17.2 + - ca-certificates=2021.5.30 - cairo=1.16.0 - - cartopy=0.17.0 - - certifi=2020.11.8 - - cffi=1.14.4 + - cartopy=0.19.0.post1 + - cdsapi=0.5.1 + - certifi=2021.5.30 + - cffi=1.14.6 - cfitsio=3.470 - - cftime=1.3.0 - - chardet=3.0.4 + - cftime=1.5.0 + - chardet=4.0.0 + - charset-normalizer=2.0.0 - click=7.1.2 - click-plugins=1.1.1 - - cligj=0.7.1 - - cloudpickle=1.6.0 + - cligj=0.7.2 + - cloudpickle=2.0.0 - coincbc=2.10.5 - - conda=4.9.2 - - conda-package-handling=1.7.2 - - configargparse=1.2.3 - - cryptography=3.2.1 - - curl=7.71.1 + - colorama=0.4.4 + - conda=4.10.3 + - conda-package-handling=1.7.3 + - configargparse=1.5.2 + - connection_pool=0.0.3 + - country_converter=0.7.3 + - cryptography=3.4.7 + - curl=7.78.0 - cycler=0.10.0 - cytoolz=0.11.0 - - dask=2.30.0 - - dask-core=2.30.0 + - dask=2021.3.1 + - dask-core=2021.3.1 - datrie=0.8.2 + - dbus=1.13.6 - decorator=4.4.2 + - deprecation=2.1.0 - descartes=1.1.0 - - distributed=2.30.1 - - docutils=0.16 - - entsoe-py=0.2.10 - - expat=2.2.9 - - fiona=1.8.13 + - distributed=2021.4.1 + - distro=1.5.0 + - docutils=0.17.1 + - entsoe-py=0.3.7 + - et_xmlfile=1.0.1 + - expat=2.4.1 + - filelock=3.0.12 + - fiona=1.8.18 - fontconfig=2.13.1 - freetype=2.10.4 - - freexl=1.0.5 - - fsspec=0.8.4 - - gdal=3.0.4 - - geographiclib=1.50 - - geopandas=0.8.1 - - geopy=2.0.0 - - geos=3.8.1 + - freexl=1.0.6 + - fsspec=2021.8.1 + - gdal=3.2.1 + - geographiclib=1.52 + - geopandas=0.9.0 + - geopandas-base=0.9.0 + - geopy=2.2.0 + - geos=3.9.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 + - gitdb=4.0.7 + - gitpython=3.1.23 + - glib=2.68.4 + - glib-tools=2.68.4 + - graphite2=1.3.13 + - gst-plugins-base=1.18.5 + - gstreamer=1.18.5 + - harfbuzz=2.9.1 + - hdf4=4.2.15 - hdf5=1.10.6 - heapdict=1.0.1 - - icu=64.2 - - idna=2.10 - - importlib-metadata=3.1.1 - - importlib_metadata=3.1.1 - - ipopt=3.13.2 - - ipython=7.19.0 + - icu=68.1 + - idna=3.1 + - importlib-metadata=4.8.1 + - iniconfig=1.1.1 + - ipython=7.27.0 - ipython_genutils=0.2.0 - - jedi=0.17.2 - - jinja2=2.11.2 - - joblib=0.17.0 + - jdcal=1.4.1 + - jedi=0.18.0 + - jinja2=3.0.1 + - joblib=1.0.1 - jpeg=9d - - json-c=0.13.1 + - json-c=0.15 - jsonschema=3.2.0 - - jupyter_core=4.7.0 + - jupyter_core=4.7.1 - 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 + - kiwisolver=1.3.2 + - krb5=1.19.2 + - lcms2=2.12 + - ld_impl_linux-64=2.36.1 + - libarchive=3.5.1 - libblas=3.9.0 - libcblas=3.9.0 - - libcurl=7.71.1 + - libclang=11.1.0 + - libcurl=7.78.0 - libdap4=3.20.6 - libedit=3.1.20191231 - libev=4.33 + - libevent=2.1.10 - libffi=3.3 - - 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 + - libgcc-ng=11.1.0 + - libgdal=3.2.1 + - libgfortran-ng=11.1.0 + - libgfortran5=11.1.0 + - libglib=2.68.4 + - libgomp=11.1.0 - libiconv=1.16 - libkml=1.3.0 - liblapack=3.9.0 + - libllvm11=11.1.0 - libnetcdf=4.7.4 - - libnghttp2=1.41.0 - - libopenblas=0.3.12 + - libnghttp2=1.43.0 + - libogg=1.3.4 + - libopenblas=0.3.17 + - libopus=1.3.1 - libpng=1.6.37 - - libpq=12.3 - - libsolv=0.7.16 + - libpq=13.3 + - librttopo=1.1.0 + - libsolv=0.7.19 - libspatialindex=1.9.3 - - libspatialite=4.3.0a - - libssh2=1.9.0 - - libstdcxx-ng=9.3.0 - - libtiff=4.1.0 + - libspatialite=5.0.1 + - libssh2=1.10.0 + - libstdcxx-ng=11.1.0 + - libtiff=4.2.0 - libuuid=2.32.1 - - libwebp-base=1.1.0 + - libvorbis=1.3.7 + - libwebp-base=1.2.1 - libxcb=1.13 - - libxml2=2.9.10 + - libxkbcommon=1.0.3 + - libxml2=2.9.12 - libxslt=1.1.33 - locket=0.2.0 - - lxml=4.6.2 - - lz4-c=1.9.2 + - lxml=4.6.3 + - lz4-c=1.9.3 - lzo=2.10 - - mamba=0.7.3 - - markupsafe=1.1.1 - - matplotlib-base=3.3.3 + - mamba=0.15.3 + - mapclassify=2.4.3 + - markupsafe=2.0.1 + - matplotlib=3.4.3 + - matplotlib-base=3.4.3 + - matplotlib-inline=0.1.3 - memory_profiler=0.58.0 - - metis=5.1.0 - - mock=4.0.2 - - msgpack-python=1.0.0 + - mock=4.0.3 + - more-itertools=8.9.0 + - msgpack-python=1.0.2 - munch=2.5.0 - - nbformat=5.0.8 + - mysql-common=8.0.25 + - mysql-libs=8.0.25 + - nbformat=5.1.3 - ncurses=6.2 - - netcdf4=1.5.4 - - networkx=2.5 - - nose=1.3.7 - - numexpr=2.7.1 - - numpy=1.19.0 + - netcdf4=1.5.6 + - networkx=2.6.3 + - nspr=4.30 + - nss=3.69 + - numexpr=2.7.3 + - numpy=1.21.2 - olefile=0.46 - - 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 + - openjdk=11.0.9.1 + - openjpeg=2.4.0 + - openpyxl=3.0.8 + - openssl=1.1.1l + - packaging=21.0 + - pandas=1.2.5 + - parso=0.8.2 + - partd=1.2.0 - patsy=0.5.1 - - pcre=8.44 + - pcre=8.45 - pexpect=4.8.0 - pickleshare=0.7.5 - - pillow=8.0.1 - - pip=20.3.1 - - pixman=0.38.0 + - pillow=8.2.0 + - pip=21.2.4 + - pixman=0.40.0 + - pluggy=1.0.0 - ply=3.11 - - poppler=0.87.0 - - poppler-data=0.4.10 - - postgresql=12.3 + - poppler=0.89.0 + - poppler-data=0.4.11 + - postgresql=13.3 - powerplantmatching=0.4.8 - progressbar2=3.53.1 - - proj=7.0.0 - - prompt-toolkit=3.0.8 - - psutil=5.7.3 + - proj=7.2.0 + - prompt-toolkit=3.0.20 + - psutil=5.8.0 - pthread-stubs=0.4 - - ptyprocess=0.6.0 - - pulp=2.3.1 + - ptyprocess=0.7.0 + - pulp=2.5.0 + - py=1.10.0 - pycosat=0.6.3 - pycountry=20.7.3 - pycparser=2.20 - - pyepsg=0.4.0 - - pygments=2.7.2 - - pykdtree=1.3.4 - - pyomo=5.7.1 - - pyopenssl=20.0.0 + - pygments=2.10.0 + - pyomo=6.1.2 + - pyopenssl=20.0.1 - pyparsing=2.4.7 - - pyproj=2.6.1.post1 - - pypsa=0.17.1 + - pyproj=3.1.0 + - pypsa=0.18.0 + - pyqt=5.12.3 + - pyqt-impl=5.12.3 + - pyqt5-sip=4.19.18 + - pyqtchart=5.12 + - pyqtwebengine=5.12.1 - pyrsistent=0.17.3 - - pyshp=2.1.2 + - pyshp=2.1.3 - pysocks=1.7.1 - pytables=3.6.1 - - python=3.8.6 - - python-dateutil=2.8.1 - - python-utils=2.4.0 - - python_abi=3.8 - - pytz=2020.4 - - pyutilib=6.0.0 - - pyyaml=5.3.1 - - rasterio=1.1.5 + - pytest=6.2.5 + - python=3.9.7 + - python-dateutil=2.8.2 + - python-utils=2.5.6 + - python_abi=3.9 + - pytz=2021.1 + - pyyaml=5.4.1 + - qt=5.12.9 + - rasterio=1.2.6 - ratelimiter=1.2.0 - - readline=8.0 - - reproc=14.2.1 - - reproc-cpp=14.2.1 - - requests=2.25.0 - - rtree=0.9.4 + - readline=8.1 + - reproc=14.2.3 + - reproc-cpp=14.2.3 + - requests=2.26.0 + - rtree=0.9.7 - 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 + - scikit-learn=0.24.2 + - scipy=1.7.1 + - seaborn=0.11.2 + - seaborn-base=0.11.2 + - setuptools=58.0.4 + - setuptools-scm=6.3.2 + - setuptools_scm=6.3.2 - shapely=1.7.1 - - six=1.15.0 - - smmap=3.0.4 - - snakemake-minimal=5.30.1 + - six=1.16.0 + - smart_open=5.2.1 + - smmap=3.0.5 + - snakemake-minimal=6.8.0 - snuggs=1.4.7 - - sortedcontainers=2.3.0 + - sortedcontainers=2.4.0 - soupsieve=2.0.1 - - sqlite=3.34.0 - - statsmodels=0.12.1 - - tbb=2020.2 - - tblib=1.6.0 - - threadpoolctl=2.1.0 - - tiledb=1.7.7 - - tk=8.6.10 + - sqlite=3.36.0 + - statsmodels=0.12.2 + - stopit=1.1.2 + - tabula-py=2.2.0 + - tabulate=0.8.9 + - tblib=1.7.0 + - threadpoolctl=2.2.0 + - tiledb=2.2.9 + - tk=8.6.11 + - toml=0.10.2 + - tomli=1.2.1 - toolz=0.11.1 - - toposort=1.5 + - toposort=1.6 - tornado=6.1 - - tqdm=4.54.1 - - traitlets=5.0.5 - - typing_extensions=3.7.4.3 - - tzcode=2020a - - urllib3=1.25.11 + - tqdm=4.62.2 + - traitlets=5.1.0 + - typing_extensions=3.10.0.0 + - tzcode=2021a + - tzdata=2021a + - urllib3=1.26.6 - wcwidth=0.2.5 - - wheel=0.36.1 + - wheel=0.37.0 - wrapt=1.12.1 - - xarray=0.16.2 - - xerces-c=3.2.2 - - xlrd=1.2.0 + - xarray=0.19.0 + - xerces-c=3.2.3 + - xlrd=2.0.1 + - xorg-fixesproto=5.0 + - xorg-inputproto=2.3.2 - xorg-kbproto=1.0.7 - xorg-libice=1.0.10 - xorg-libsm=1.2.3 - - xorg-libx11=1.6.12 + - xorg-libx11=1.7.2 - xorg-libxau=1.0.9 - xorg-libxdmcp=1.1.3 - xorg-libxext=1.3.4 + - xorg-libxfixes=5.0.3 + - xorg-libxi=1.7.10 - xorg-libxrender=0.9.10 + - xorg-libxtst=1.2.3 + - xorg-recordproto=1.14.2 - xorg-renderproto=0.11.1 - xorg-xextproto=7.3.0 - xorg-xproto=7.0.31 - xz=5.2.5 - yaml=0.2.5 - zict=2.0.0 - - zipp=3.4.0 + - zipp=3.5.0 - zlib=1.2.11 - - zstd=1.4.5 + - zstd=1.4.9 - pip: - - cdsapi==0.4.0 - countrycode==0.2 - - geokit==1.1.2 - - glaes==1.1.2 - sklearn==0.0 - - tsam==1.1.0 + - tsam==1.1.1 - vresutils==0.3.1 diff --git a/test/config.test1.yaml b/test/config.test1.yaml index 83ce38ad..aea3dbc2 100755 --- a/test/config.test1.yaml +++ b/test/config.test1.yaml @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: CC0-1.0 -version: 0.3.0 +version: 0.4.0 tutorial: true logging: level: INFO