16 KiB
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 [#232].
- Techno-economic parameters of technologies (e.g. costs and efficiencies) will now be retrieved from a separate repository PyPSA/technology-data that collects assumptions from a 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].
PyPSA-Eur 0.3.0 (7th December 2020)
System Message: WARNING/2 (<stdin>, line 29)
Title underline too short.
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. [#166].
- Added an option to alter the capital cost (c) or installable potentials (p) of carriers by a factor via carrier+{c,p}factor in the {opts} wildcard. This can be useful for exploring uncertain cost parameters. Example: solar+c0.5 reduces the capital cost of solar to 50% of original values [#167, #207].
- Added an option to the {opts} wildcard that applies a time series segmentation algorithm based on renewables, hydro inflow and load time series to produce a given total number of adjacent snapshots of varying lengths. This feature is an alternative to downsampling the temporal resolution by simply averaging and uses the tsam package [#186].
More OPSD integration:
Add renewable power plants from OPSD to the network for specified technologies. This will overwrite the capacities calculated from the heuristic approach in :func:`estimate_renewable_capacities()` [#212].
System Message: ERROR/3 (<stdin>, line 54); backlink
Unknown interpreted text role "func".
Electricity consumption data is now retrieved directly from the OPSD website 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].
System Message: ERROR/3 (<stdin>, line 58); backlink
Unknown interpreted text role "mod".
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].
System Message: ERROR/3 (<stdin>, line 64); backlink
Unknown interpreted text role "mod".
Line and link capacities can be capped in the config.yaml at lines: s_nom_max: and links: p_nom_max: [#166].
Added Google Cloud Platform tutorial (for Windows users) [#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].
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]
System Message: ERROR/3 (<stdin>, line 82); backlink
Unknown interpreted text role "mod".
System Message: ERROR/3 (<stdin>, line 82); backlink
Unknown interpreted text role "mod".
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].
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].
Use mamba (https://github.com/mamba-org/mamba) for faster Travis CI builds [#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].
Bugs and Compatibility
Add compatibility for pyomo 5.7.0 in :mod:`cluster_network` and :mod:`simplify_network` [#172].
System Message: ERROR/3 (<stdin>, line 103); backlink
Unknown interpreted text role "mod".
System Message: ERROR/3 (<stdin>, line 103); backlink
Unknown interpreted text role "mod".
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].
Corrected exogenous emission price setting (in config: cost: emission price:), which now correctly accounts for the efficiency and effective emission of the generators [#171].
Corrected HVDC link connections (a) between Norway and Denmark and (b) mainland Italy, Corsica (FR) and Sardinia (IT) as well as for East-Western and Anglo-Scottish interconnectors [#181, #206].
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].
Raise a warning if tech_colors in the config are not defined for all carriers [#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].
System Message: ERROR/3 (<stdin>, line 130); backlink
Unknown interpreted text role "func".
System Message: ERROR/3 (<stdin>, line 130); backlink
Unknown interpreted text role "func".
System Message: ERROR/3 (<stdin>, line 130); backlink
Unknown interpreted text role "mod".
An updated extract of the ENTSO-E Transmission System Map (including Malta) was added to the repository using the GridKit tool. This tool has been updated to retrieve up-to-date map extracts using a single script. The update extract features 5322 buses, 6574 lines, 46 links. [#118].
Added FSFE REUSE compliant license information. Documentation now licensed under CC-BY-4.0 [#160].
Added a 30 minute video introduction and a 20 minute video tutorial
Networks now store a color and a nicely formatted name for each carrier, accessible via n.carrier['color'] and n.carrier['nice_name'] ``(networks after ``elec.nc).
Added an option to skip iterative solving usually performed to update the line impedances of expanded lines at solving: options: skip_iterations:.
snakemake rules for retrieving cutouts and the natura raster can now be disabled independently from their respective rules to build them; via config.*yaml [#136].
Removed the id column for custom power plants in data/custom_powerplants.csv to avoid custom power plants with conflicting ids getting attached to the wrong bus [#131].
Add option renewables: {carrier}: keep_all_available_areas: to use all availabe weather cells for renewable profile and potential generation. The default ignores weather cells where only less than 1 MW can be installed [#150].
Added a function _helpers.load_network() which loads a network with overridden components specified in snakemake.config['override_components'] [#128].
Bugfix in :mod:`base_network` which now finds all closest links, not only the first entry [#143].
System Message: ERROR/3 (<stdin>, line 150); backlink
Unknown interpreted text role "mod".
Bugfix in :mod:`cluster_network` which now skips recalculation of link parameters if there are no links [#149].
System Message: ERROR/3 (<stdin>, line 152); backlink
Unknown interpreted text role "mod".
Added information on pull requests to contribution guidelines [#151].
Improved documentation on open-source solver setup and added usage warnings.
Updated conda environment regarding pypsa, pyproj, gurobi, lxml. This release requires PyPSA v0.17.0.
PyPSA-Eur 0.1.0 (9th January 2020)
This is the first release of PyPSA-Eur, a model of the European power system at the transmission network level. Recent changes include:
Documentation on installation, workflows and configuration settings is now available online at pypsa-eur.readthedocs.io [#65].
The conda environment files were updated and extended [#81].
The power plant database was updated with extensive filtering options via pandas.query functionality [#84 and #94].
Continuous integration testing with Travis CI is now included for Linux, Mac and Windows [#82].
Data dependencies were moved to zenodo and are now versioned [#60].
Data dependencies are now retrieved directly from within the snakemake workflow [#86].
Emission prices can be added to marginal costs of generators through the keyworks Ep in the {opts} wildcard [#100].
An option is introduced to add extendable nuclear power plants to the network [#98].
Focus weights can now be specified for particular countries for the network clustering, which allows to set a proportion of the total number of clusters for particular countries [#87].
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].
System Message: ERROR/3 (<stdin>, line 183); backlink
Unknown interpreted text role "mod".
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].
System Message: ERROR/3 (<stdin>, line 185); backlink
Unknown interpreted text role "mod".
Logfiles for all rules of the snakemake workflow are now written in the folder log/ [#102].
The new function _helpers.mock_snakemake creates a snakemake object which mimics the actual snakemake object produced by workflow by parsing the Snakefile and setting all paths for inputs, outputs, and logs. This allows running all scripts within a (I)python terminal (or just by calling python <script-name>) and thereby facilitates developing and debugging scripts significantly [#107].
Release Process
- Checkout a new release branch git checkout -b release-v0.x.x.
- Finalise release notes at doc/release_notes.rst.
- Update envs/environment.fixed.yaml via conda env export -n pypsa-eur -f envs/environment.fixed.yaml --no-builds from an up-to-date pypsa-eur environment.
- Update version number in doc/conf.py and *config.*.yaml.
- Open, review and merge pull request for branch release-v0.x.x. Make sure to close issues and PRs or the release milestone with it (e.g. closes #X).
- Tag a release on Github via git tag v0.x.x, git push, git push --tags. Include release notes in the tag message.
- Upload code to zenodo code repository with GNU GPL 3.0 license.
- 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 with CC BY 4.0 license.
- Send announcement on the PyPSA and PyPSA-Eur mailing list.