execute pre-commit

This commit is contained in:
Fabian Neumann 2020-09-11 15:26:43 +02:00
parent f6dd2e12f3
commit cbd22c2efd
54 changed files with 135 additions and 141 deletions

View File

@ -11,7 +11,7 @@ assignees: ''
## Checklist ## Checklist
- [ ] I am using the current [`master`](https://github.com/PyPSA/pypsa-eur/tree/master) branch or the latest [release](https://github.com/PyPSA/pypsa-eur/releases). Please indicate. - [ ] I am using the current [`master`](https://github.com/PyPSA/pypsa-eur/tree/master) branch or the latest [release](https://github.com/PyPSA/pypsa-eur/releases). Please indicate.
- [ ] I am running on an up-to-date [`pypsa-eur` environment](https://github.com/PyPSA/pypsa-eur/blob/master/environment.yaml). Update via `conda env update -f environment.yaml`. - [ ] I am running on an up-to-date [`pypsa-eur` environment](https://github.com/PyPSA/pypsa-eur/blob/master/envs/environment.yaml). Update via `conda env update -f envs/environment.yaml`.
## Describe the Bug ## Describe the Bug
@ -24,4 +24,4 @@ assignees: ''
``` ```
<paste here> <paste here>
``` ```

View File

@ -2,4 +2,4 @@ blank_issues_enabled: false
contact_links: contact_links:
- name: PyPSA Mailing List - name: PyPSA Mailing List
url: https://groups.google.com/forum/#!forum/pypsa url: https://groups.google.com/forum/#!forum/pypsa
about: Please ask and answer general usage questions here. about: Please ask and answer general usage questions here.

View File

@ -7,7 +7,7 @@ Closes # (if applicable).
- [ ] I tested my contribution locally and it seems to work fine. - [ ] I tested my contribution locally and it seems to work fine.
- [ ] Code and workflow changes are sufficiently documented. - [ ] Code and workflow changes are sufficiently documented.
- [ ] Newly introduced dependencies are added to `environment.yaml` and `environment.docs.yaml`. - [ ] Newly introduced dependencies are added to `envs/environment.yaml` and `envs/environment.docs.yaml`.
- [ ] Changes in configuration options are added in all of `config.default.yaml`, `config.tutorial.yaml`, and `test/config.test1.yaml`. - [ ] Changes in configuration options are added in all of `config.default.yaml`, `config.tutorial.yaml`, and `test/config.test1.yaml`.
- [ ] Changes in configuration options are also documented in `doc/configtables/*.csv` and line references are adjusted in `doc/configuration.rst` and `doc/tutorial.rst`. - [ ] Changes in configuration options are also documented in `doc/configtables/*.csv` and line references are adjusted in `doc/configuration.rst` and `doc/tutorial.rst`.
- [ ] A note for the release notes `doc/release_notes.rst` is amended in the format of previous release notes. - [ ] A note for the release notes `doc/release_notes.rst` is amended in the format of previous release notes.

8
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,8 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files

View File

@ -5,4 +5,4 @@
version: 2 version: 2
conda: conda:
environment: environment.docs.yaml environment: envs/environment.docs.yaml

View File

@ -25,4 +25,4 @@ License: CC0-1.0
Files: borg-it Files: borg-it
Copyright: : 2017-2020 The PyPSA-Eur Authors Copyright: : 2017-2020 The PyPSA-Eur Authors
License: CC0-1.0 License: CC0-1.0

View File

@ -15,11 +15,12 @@ before_install:
- source conda4travis.sh - source conda4travis.sh
# install conda environment # install conda environment
- conda env create -f ./environment.yaml - conda install -c conda-forge mamba
- mamba env create -f ./envs/environment.yaml
- conda activate pypsa-eur - conda activate pypsa-eur
# install open-source solver # install open-source solver
- conda install -c conda-forge ipopt glpk - mamba install -c conda-forge ipopt glpk
script: script:
- cp ./test/config.test1.yaml ./config.yaml - cp ./test/config.test1.yaml ./config.yaml

View File

@ -36,7 +36,7 @@ and local grid
bottlenecks may cause unrealistic load-shedding or generator bottlenecks may cause unrealistic load-shedding or generator
curtailment. We recommend to cluster the network to a couple of curtailment. We recommend to cluster the network to a couple of
hundred nodes to remove these local inconsistencies. See the hundred nodes to remove these local inconsistencies. See the
discussion in Section 3.4 "Model validation" of the paper. discussion in Section 3.4 "Model validation" of the paper.
![PyPSA-Eur Grid Model](doc/img/base.png) ![PyPSA-Eur Grid Model](doc/img/base.png)

View File

@ -46,11 +46,11 @@ if config['enable'].get('prepare_links_p_nom', False):
script: 'scripts/prepare_links_p_nom.py' script: 'scripts/prepare_links_p_nom.py'
datafiles = ['ch_cantons.csv', 'je-e-21.03.02.xls', datafiles = ['ch_cantons.csv', 'je-e-21.03.02.xls',
'eez/World_EEZ_v8_2014.shp', 'EIA_hydro_generation_2000_2014.csv', 'eez/World_EEZ_v8_2014.shp', 'EIA_hydro_generation_2000_2014.csv',
'hydro_capacities.csv', 'naturalearth/ne_10m_admin_0_countries.shp', 'hydro_capacities.csv', 'naturalearth/ne_10m_admin_0_countries.shp',
'NUTS_2013_60M_SH/data/NUTS_RG_60M_2013.shp', 'nama_10r_3popgdp.tsv.gz', 'NUTS_2013_60M_SH/data/NUTS_RG_60M_2013.shp', 'nama_10r_3popgdp.tsv.gz',
'nama_10r_3gdp.tsv.gz', 'time_series_60min_singleindex_filtered.csv', 'nama_10r_3gdp.tsv.gz', 'time_series_60min_singleindex_filtered.csv',
'corine/g250_clc06_V18_5.tif'] 'corine/g250_clc06_V18_5.tif']
@ -131,7 +131,7 @@ rule build_bus_regions:
script: "scripts/build_bus_regions.py" script: "scripts/build_bus_regions.py"
if config['enable'].get('build_cutout', False): if config['enable'].get('build_cutout', False):
rule build_cutout: rule build_cutout:
output: directory("cutouts/{cutout}") output: directory("cutouts/{cutout}")
log: "logs/build_cutout/{cutout}.log" log: "logs/build_cutout/{cutout}.log"
@ -148,9 +148,9 @@ if config['enable'].get('retrieve_cutout', True):
script: 'scripts/retrieve_cutout.py' script: 'scripts/retrieve_cutout.py'
if config['enable'].get('build_natura_raster', False): if config['enable'].get('build_natura_raster', False):
rule build_natura_raster: rule build_natura_raster:
input: input:
natura="data/bundle/natura/Natura2000_end2015.shp", natura="data/bundle/natura/Natura2000_end2015.shp",
cutouts=expand("cutouts/{cutouts}", **config['atlite']) cutouts=expand("cutouts/{cutouts}", **config['atlite'])
output: "resources/natura.tiff" output: "resources/natura.tiff"
@ -179,7 +179,7 @@ rule build_renewable_profiles:
if w.technology in ('onwind', 'solar') if w.technology in ('onwind', 'solar')
else "resources/regions_offshore.geojson"), else "resources/regions_offshore.geojson"),
cutout=lambda w: "cutouts/" + config["renewable"][w.technology]['cutout'] cutout=lambda w: "cutouts/" + config["renewable"][w.technology]['cutout']
output: output:
profile="resources/profile_{technology}.nc", profile="resources/profile_{technology}.nc",
log: "logs/build_renewable_profile_{technology}.log" log: "logs/build_renewable_profile_{technology}.log"
benchmark: "benchmarks/build_renewable_profiles_{technology}" benchmark: "benchmarks/build_renewable_profiles_{technology}"
@ -210,7 +210,7 @@ rule add_electricity:
geth_hydro_capacities='data/geth2015_hydro_capacities.csv', geth_hydro_capacities='data/geth2015_hydro_capacities.csv',
opsd_load='data/bundle/time_series_60min_singleindex_filtered.csv', opsd_load='data/bundle/time_series_60min_singleindex_filtered.csv',
nuts3_shapes='resources/nuts3_shapes.geojson', nuts3_shapes='resources/nuts3_shapes.geojson',
**{'profile_' + tech: "resources/profile_" + tech + ".nc" **{f"profile_{tech}": f"resources/profile_{tech}.nc"
for tech in config['renewable']} for tech in config['renewable']}
output: "networks/elec.nc" output: "networks/elec.nc"
log: "logs/add_electricity.log" log: "logs/add_electricity.log"

View File

@ -23,4 +23,4 @@ HVDC Ultranet,Osterath (DE),Philippsburg (DE),,314,600,in permitting,,https://ty
Gridlink,Kingsnorth (UK),Warande (FR),160,,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/285,0.596111111111111,51.41972,2.376776,51.034368 Gridlink,Kingsnorth (UK),Warande (FR),160,,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/285,0.596111111111111,51.41972,2.376776,51.034368
NeuConnect,Grain (UK),Fedderwarden (DE),680,,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/309,0.716666666666667,51.44,8.046524,53.562763 NeuConnect,Grain (UK),Fedderwarden (DE),680,,1400,in permitting,,https://tyndp.entsoe.eu/tyndp2018/projects/projects/309,0.716666666666667,51.44,8.046524,53.562763
NordBalt,Klaipeda (LT),Nybro (SE),450,,700,built,,https://en.wikipedia.org/wiki/NordBalt,21.256667,55.681667,15.854167,56.767778 NordBalt,Klaipeda (LT),Nybro (SE),450,,700,built,,https://en.wikipedia.org/wiki/NordBalt,21.256667,55.681667,15.854167,56.767778
Estlink 1,Harku (EE),Espoo (FI),105,,350,built,,https://en.wikipedia.org/wiki/Estlink,24.560278,59.384722,24.551667,60.203889 Estlink 1,Harku (EE),Espoo (FI),105,,350,built,,https://en.wikipedia.org/wiki/Estlink,24.560278,59.384722,24.551667,60.203889

1 Name Converterstation 1 Converterstation 2 Length (given) (km) Length (distance*1.2) (km) Power (MW) status replaces Ref x1 y1 x2 y2
23 Gridlink Kingsnorth (UK) Warande (FR) 160 1400 in permitting https://tyndp.entsoe.eu/tyndp2018/projects/projects/285 0.596111111111111 51.41972 2.376776 51.034368
24 NeuConnect Grain (UK) Fedderwarden (DE) 680 1400 in permitting https://tyndp.entsoe.eu/tyndp2018/projects/projects/309 0.716666666666667 51.44 8.046524 53.562763
25 NordBalt Klaipeda (LT) Nybro (SE) 450 700 built https://en.wikipedia.org/wiki/NordBalt 21.256667 55.681667 15.854167 56.767778
26 Estlink 1 Harku (EE) Espoo (FI) 105 350 built https://en.wikipedia.org/wiki/Estlink 24.560278 59.384722 24.551667 60.203889

View File

@ -33,12 +33,12 @@ Link:
"14559": "6240" # fix wrong bus allocation from 6241 "14559": "6240" # fix wrong bus allocation from 6241
"12998": "1333" # combine link 12998 + 12997 in 12998 "12998": "1333" # combine link 12998 + 12997 in 12998
"5627": '2309' # combine link 5627 + 5628 in 5627 "5627": '2309' # combine link 5627 + 5628 in 5627
length: length:
index: index:
"12998": 409.0 "12998": 409.0
"5627": 26.39 "5627": 26.39
bus0: bus0:
index: index:
# set bus0 == bus1 for removing the link in remove_unconnected_components # set bus0 == bus1 for removing the link in remove_unconnected_components
"5628": "7276" "5628": "7276"
"12997": "7276" "12997": "7276"

View File

@ -11,7 +11,7 @@
white-space: normal !important; white-space: normal !important;
/* background: #eeeeee !important; */ /* background: #eeeeee !important; */
} }
.wy-table-responsive { .wy-table-responsive {
max-width: 100%; max-width: 100%;
overflow: visible !important; overflow: visible !important;
@ -20,4 +20,4 @@
.wy-nav-content { .wy-nav-content {
max-width: 910px !important; max-width: 910px !important;
} }
} }

View File

@ -1,6 +1,6 @@
.. ..
SPDX-FileCopyrightText: 2020 Maximilian Parzen and Emmanuel Paez SPDX-FileCopyrightText: 2020 Maximilian Parzen and Emmanuel Paez
SPDX-License-Identifier: CC-BY-4.0 SPDX-License-Identifier: CC-BY-4.0
@ -18,7 +18,7 @@ Google Cloud Platform (GCP)
We are happy to take pull requests explaining where the procedures deviate from the descriptions below for other operating systems. We are happy to take pull requests explaining where the procedures deviate from the descriptions below for other operating systems.
Likewise, tutorials for other cloud computing solutions are also highly welcome. Likewise, tutorials for other cloud computing solutions are also highly welcome.
The Google Cloud Platform (GCP) is a cloud computing service you can use to run PyPSA-Eur calculations, especially if The Google Cloud Platform (GCP) is a cloud computing service you can use to run PyPSA-Eur calculations, especially if
- you do not have immediate access to high-performance computating facilities, - you do not have immediate access to high-performance computating facilities,
- you have problems with the Windows operating system and want a quick run on a linux-based system, - you have problems with the Windows operating system and want a quick run on a linux-based system,
@ -26,7 +26,7 @@ The Google Cloud Platform (GCP) is a cloud computing service you can use to run
- you need quick results (trial version includes 32 vCPU cores and up to 800 GB of memory). - you need quick results (trial version includes 32 vCPU cores and up to 800 GB of memory).
With the Google Cloud Platform you set up a virtual machine in the cloud which can store and operate data. With the Google Cloud Platform you set up a virtual machine in the cloud which can store and operate data.
Like on your local computer, you have to install all software and solvers, and create paths on the virtual machine to set up the required environment. Like on your local computer, you have to install all software and solvers, and create paths on the virtual machine to set up the required environment.
The 300$ free trial budget is offered which equals roughly 10-20 simulations with 180 nodes at hourly basis. The 300$ free trial budget is offered which equals roughly 10-20 simulations with 180 nodes at hourly basis.
The following steps are required: The following steps are required:
@ -38,7 +38,7 @@ The following steps are required:
Step 1 - Google Cloud Platform registration Step 1 - Google Cloud Platform registration
------------------------------------------- -------------------------------------------
First, register at the `Google Cloud Platform <https://console.cloud.google.com>`_ (GCP). First, register at the `Google Cloud Platform <https://console.cloud.google.com>`_ (GCP).
Ann active bank account is required, which will not be charged unless you exceed the trial budget. Ann active bank account is required, which will not be charged unless you exceed the trial budget.
Step 2 - Create your Virtual Machine instance Step 2 - Create your Virtual Machine instance
@ -73,26 +73,26 @@ Step 3 - Installation of Cloud SDK
- Download Google Cloud SDK `SDK <https://cloud.google.com/sdk>`_. Check that you are logged in in your Google account. The link should lead you to the Windows installation of Google Cloud SDK. - Download Google Cloud SDK `SDK <https://cloud.google.com/sdk>`_. Check that you are logged in in your Google account. The link should lead you to the Windows installation of Google Cloud SDK.
- Follow the "Quickstart for Windows - Before you begin" steps. - Follow the "Quickstart for Windows - Before you begin" steps.
- After the successfull installation and initialization, close the Google Cloud SDK reopen it again. Type the following command into the "Google Cloud SDK Shell": - After the successfull installation and initialization, close the Google Cloud SDK reopen it again. Type the following command into the "Google Cloud SDK Shell":
.. code:: bash .. code:: bash
gcloud compute ssh <your VM instance name> -- -L 8888:localhost:8888 gcloud compute ssh <your VM instance name> -- -L 8888:localhost:8888
- This command above will open a PuTTy command window that is connected to your Virtual Machine. Time to celebrate if it works! - This command above will open a PuTTy command window that is connected to your Virtual Machine. Time to celebrate if it works!
- Now install all necessary tools. As little help, the first steps: - Now install all necessary tools. As little help, the first steps:
.. code:: bash .. code:: bash
sudo apt-get update sudo apt-get update
sudo apt-get install bzip2 libxml2-dev sudo apt-get install bzip2 libxml2-dev
sudo apt-get install wget 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 (Check the link. To be up to date with anaconda, check the Anaconda website https://www.anaconda.com/products/individual )
ls (to see what anaconda file to bash) ls (to see what anaconda file to bash)
bash Anaconda3-2020.07-Linux-x86_64.sh bash Anaconda3-2020.07-Linux-x86_64.sh
source ~/.bashrc source ~/.bashrc
- Close and reopen the PuTTy file (-> open Google Cloud SDK -> initialize again with the command above to open the PuTTY command window). Now ``conda`` can be listed with ``conda list``. - Close and reopen the PuTTy file (-> open Google Cloud SDK -> initialize again with the command above to open the PuTTY command window). Now ``conda`` can be listed with ``conda list``.
Noq you can follow the standard installation instructions to finalize your machine (don't forget the solvers - for bigger simulations use commercial solvers such as Gurobi). Noq you can follow the standard installation instructions to finalize your machine (don't forget the solvers - for bigger simulations use commercial solvers such as Gurobi).
Step 4 - Installation of WinSCP Step 4 - Installation of WinSCP
------------------------------- -------------------------------
@ -102,22 +102,22 @@ Make sure that your instance is operating for the next steps.
- Download `WinSCP <https://winscp.net/eng/download.php>`_ and follow the default installation steps. - Download `WinSCP <https://winscp.net/eng/download.php>`_ and follow the default installation steps.
- Open WinSCP after the installation. A login window will open. - Open WinSCP after the installation. A login window will open.
- Keep SFTP as file protocol. - Keep SFTP as file protocol.
- As host name insert the External IP of your VM (click in your internet browser on your GCP VM instance to see the external IP) - As host name insert the External IP of your VM (click in your internet browser on your GCP VM instance to see the external IP)
- Set the User name in WinSCP to the name you see in your PuTTy window (check step 3 - for instance [username]@[VM-name]:~$) - Set the User name in WinSCP to the name you see in your PuTTy window (check step 3 - for instance [username]@[VM-name]:~$)
- Click on the advanced setting. SSH -> Authentication. - Click on the advanced setting. SSH -> Authentication.
- Option 1. Click on the Tools button and "Install Public Key into Server..". Somewhere in your folder structure must be a public key. I found it with the following folder syntax on my local windows computer -> :\Users\...\.ssh (there should be a PKK file). - Option 1. Click on the Tools button and "Install Public Key into Server..". Somewhere in your folder structure must be a public key. I found it with the following folder syntax on my local windows computer -> :\Users\...\.ssh (there should be a PKK file).
- Option 2. Click on the Tools button and "Generate new key pair...". Save the private key at a folder you remember and add it to the "private key file" field in WinSCP. Upload the public key to the metadeta of your instance. - Option 2. Click on the Tools button and "Generate new key pair...". Save the private key at a folder you remember and add it to the "private key file" field in WinSCP. Upload the public key to the metadeta of your instance.
- Click ok and save. Then click Login. If successfull WinSCP will open on the left side your local computer folder structure and on the right side the folder strucutre of your VM. (If you followed Option 2 and its not initially working. Stop your instance, refresh the website, reopen the WinSCP field. Afterwards your your Login should be successfull) - Click ok and save. Then click Login. If successfull WinSCP will open on the left side your local computer folder structure and on the right side the folder strucutre of your VM. (If you followed Option 2 and its not initially working. Stop your instance, refresh the website, reopen the WinSCP field. Afterwards your your Login should be successfull)
If you had struggle with the above steps, you could also try `this video <https://www.youtube.com/watch?v=lYx1oQkEF0E>`_. If you had struggle with the above steps, you could also try `this video <https://www.youtube.com/watch?v=lYx1oQkEF0E>`_.
.. note:: .. note::
Double check the External IP of your VM before you try to login with WinSCP. It's often a cause for an error. Double check the External IP of your VM before you try to login with WinSCP. It's often a cause for an error.
Step 5 - Extra. Copying your instance with all its data and paths included Step 5 - Extra. Copying your instance with all its data and paths included
-------------------------------------------------------------------------- --------------------------------------------------------------------------
Especially if you think about operating several instance for quicker simulations, you can create a so called `"image" <https://console.cloud.google.com/compute/images?authuser=1&project=exalted-country-284917>`_ of the virtual machine. Especially if you think about operating several instance for quicker simulations, you can create a so called `"image" <https://console.cloud.google.com/compute/images?authuser=1&project=exalted-country-284917>`_ of the virtual machine.
The "image" includes all the data and software set-ups from your VM. Afterwards you can create a VM from an image and avoid all the installation steps above. The "image" includes all the data and software set-ups from your VM. Afterwards you can create a VM from an image and avoid all the installation steps above.
Important points when to solve networks in PyPSA Important points when to solve networks in PyPSA
------------------------------------------------ ------------------------------------------------
@ -126,4 +126,4 @@ If you use the GCP with the default PyPSA-Eur settings, your budget will be used
- Always test using low resolution networks; i.e. a single country at 5 nodes and 24h resolution for 2 month of weather data. - Always test using low resolution networks; i.e. a single country at 5 nodes and 24h resolution for 2 month of weather data.
- Adjust your solver in the ``config.yaml`` file. Set ``solving: skip_iterations: true``. - Adjust your solver in the ``config.yaml`` file. Set ``solving: skip_iterations: true``.
This will lead to a single solver iteration which is often precise enough. This will lead to a single solver iteration which is often precise enough.

View File

@ -5,4 +5,4 @@ cutouts,,,
-- -- module,--,"One of {'era5','sarah'}","Source of the reanalysis weather dataset (e.g. `ERA5 <https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5>`_ or `SARAH-2 <https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=SARAH_V002>`_)" -- -- module,--,"One of {'era5','sarah'}","Source of the reanalysis weather dataset (e.g. `ERA5 <https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5>`_ or `SARAH-2 <https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=SARAH_V002>`_)"
-- -- xs,°,"Float interval within [-180, 180]","Range of longitudes to download weather data for." -- -- xs,°,"Float interval within [-180, 180]","Range of longitudes to download weather data for."
-- -- ys,°,"Float interval within [-90, 90]","Range of latitudes to download weather data for." -- -- ys,°,"Float interval within [-90, 90]","Range of latitudes to download weather data for."
-- -- years,--,"Integer interval within [1979,2018]","Range of years to download weather data for." -- -- years,--,"Integer interval within [1979,2018]","Range of years to download weather data for."

1 Unit Values Description
5 -- -- module -- One of {'era5','sarah'} Source of the reanalysis weather dataset (e.g. `ERA5 <https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5>`_ or `SARAH-2 <https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=SARAH_V002>`_)
6 -- -- xs ° Float interval within [-180, 180] Range of longitudes to download weather data for.
7 -- -- ys ° Float interval within [-90, 90] Range of latitudes to download weather data for.
8 -- -- years -- Integer interval within [1979,2018] Range of years to download weather data for.

View File

@ -5,4 +5,4 @@ USD2013_to_EUR2013,--,float,"Exchange rate from USD :math:`_{2013}` to EUR :math
capital_cost,EUR/MW,"Keys should be in the 'technology' column of ``data/costs.csv``. Values can be any float.","For the given technologies, assumptions about their capital investment costs are set to the corresponding value. Optional; overwrites cost assumptions from ``data/costs.csv``." capital_cost,EUR/MW,"Keys should be in the 'technology' column of ``data/costs.csv``. Values can be any float.","For the given technologies, assumptions about their capital investment costs are set to the corresponding value. Optional; overwrites cost assumptions from ``data/costs.csv``."
marginal_cost,EUR/MWh,"Keys should be in the 'technology' column of ``data/costs.csv``. Values can be any float.","For the given technologies, assumptions about their marginal operating costs are set to the corresponding value. Optional; overwrites cost assumptions from ``data/costs.csv``." marginal_cost,EUR/MWh,"Keys should be in the 'technology' column of ``data/costs.csv``. Values can be any float.","For the given technologies, assumptions about their marginal operating costs are set to the corresponding value. Optional; overwrites cost assumptions from ``data/costs.csv``."
emission_prices,,,"Specify exogenous prices for emission types listed in ``network.carriers`` to marginal costs." emission_prices,,,"Specify exogenous prices for emission types listed in ``network.carriers`` to marginal costs."
-- co2,EUR/t,float,"Exogenous price of carbon-dioxide added to the marginal costs of fossil-fuelled generators according to their carbon intensity. Added through the keyword ``Ep`` in the ``{opts}`` wildcard only in the rule :mod:`prepare_network``." -- co2,EUR/t,float,"Exogenous price of carbon-dioxide added to the marginal costs of fossil-fuelled generators according to their carbon intensity. Added through the keyword ``Ep`` in the ``{opts}`` wildcard only in the rule :mod:`prepare_network``."

1 Unit Values Description
5 capital_cost EUR/MW Keys should be in the 'technology' column of ``data/costs.csv``. Values can be any float. For the given technologies, assumptions about their capital investment costs are set to the corresponding value. Optional; overwrites cost assumptions from ``data/costs.csv``.
6 marginal_cost EUR/MWh Keys should be in the 'technology' column of ``data/costs.csv``. Values can be any float. For the given technologies, assumptions about their marginal operating costs are set to the corresponding value. Optional; overwrites cost assumptions from ``data/costs.csv``.
7 emission_prices Specify exogenous prices for emission types listed in ``network.carriers`` to marginal costs.
8 -- co2 EUR/t float Exogenous price of carbon-dioxide added to the marginal costs of fossil-fuelled generators according to their carbon intensity. Added through the keyword ``Ep`` in the ``{opts}`` wildcard only in the rule :mod:`prepare_network``.

View File

@ -3,4 +3,4 @@ cutout,--,"Must be 'europe-2013-era5'","Specifies the directory where the releva
carriers,--,"Any subset of {'ror', 'PHS', 'hydro'}","Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams." carriers,--,"Any subset of {'ror', 'PHS', 'hydro'}","Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams."
PHS_max_hours,h,float,"Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom``. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_." PHS_max_hours,h,float,"Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom``. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_."
hydro_max_hours,h,"Any of {float, 'energy_capacity_totals_by_country', 'estimate_by_large_installations'}","Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom`` or heuristically determined. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_." hydro_max_hours,h,"Any of {float, 'energy_capacity_totals_by_country', 'estimate_by_large_installations'}","Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom`` or heuristically determined. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_."
clip_min_inflow,MW,float,"To avoid too small values in the inflow time series, values below this threshold are set to zero." clip_min_inflow,MW,float,"To avoid too small values in the inflow time series, values below this threshold are set to zero."

1 Unit Values Description
3 carriers -- Any subset of {'ror', 'PHS', 'hydro'} Specifies the types of hydro power plants to build per-unit availability time series for. 'ror' stands for run-of-river plants, 'PHS' represents pumped-hydro storage, and 'hydro' stands for hydroelectric dams.
4 PHS_max_hours h float Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom``. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_.
5 hydro_max_hours h Any of {float, 'energy_capacity_totals_by_country', 'estimate_by_large_installations'} Maximum state of charge capacity of the pumped-hydro storage (PHS) in terms of hours at full output capacity ``p_nom`` or heuristically determined. Cf. `PyPSA documentation <https://pypsa.readthedocs.io/en/latest/components.html#storage-unit>`_.
6 clip_min_inflow MW float To avoid too small values in the inflow time series, values below this threshold are set to zero.

View File

@ -2,4 +2,4 @@
types,--,"Values should specify a `line type in PyPSA <https://pypsa.readthedocs.io/en/latest/components.html#line-types>`_. Keys should specify the corresponding voltage level (e.g. 220., 300. and 380. kV)","Specifies line types to assume for the different voltage levels of the ENTSO-E grid extraction. Should normally handle voltage levels 220, 300, and 380 kV" types,--,"Values should specify a `line type in PyPSA <https://pypsa.readthedocs.io/en/latest/components.html#line-types>`_. Keys should specify the corresponding voltage level (e.g. 220., 300. and 380. kV)","Specifies line types to assume for the different voltage levels of the ENTSO-E grid extraction. Should normally handle voltage levels 220, 300, and 380 kV"
s_max_pu,--,"Value in [0.,1.]","Correction factor for line capacities (``s_nom``) to approximate :math:`N-1` security and reserve capacity for reactive power flows" s_max_pu,--,"Value in [0.,1.]","Correction factor for line capacities (``s_nom``) to approximate :math:`N-1` security and reserve capacity for reactive power flows"
length_factor,--,float,"Correction factor to account for the fact that buses are *not* connected by lines through air-line distance." length_factor,--,float,"Correction factor to account for the fact that buses are *not* connected by lines through air-line distance."
under_construction,--,"One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity}","Specifies how to handle lines which are currently under construction." under_construction,--,"One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity}","Specifies how to handle lines which are currently under construction."

1 Unit Values Description
2 types -- Values should specify a `line type in PyPSA <https://pypsa.readthedocs.io/en/latest/components.html#line-types>`_. Keys should specify the corresponding voltage level (e.g. 220., 300. and 380. kV) Specifies line types to assume for the different voltage levels of the ENTSO-E grid extraction. Should normally handle voltage levels 220, 300, and 380 kV
3 s_max_pu -- Value in [0.,1.] Correction factor for line capacities (``s_nom``) to approximate :math:`N-1` security and reserve capacity for reactive power flows
4 length_factor -- float Correction factor to account for the fact that buses are *not* connected by lines through air-line distance.
5 under_construction -- One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity} Specifies how to handle lines which are currently under construction.

View File

@ -1,4 +1,4 @@
,Unit,Values,Description ,Unit,Values,Description
p_max_pu,--,"Value in [0.,1.]","Correction factor for link capacities ``p_nom``." p_max_pu,--,"Value in [0.,1.]","Correction factor for link capacities ``p_nom``."
include_tyndp,bool,"{'true', 'false'}","Specifies whether to add HVDC link projects from the `TYNDP 2018 <https://tyndp.entsoe.eu/tyndp2018/projects/>`_ which are at least in permitting." include_tyndp,bool,"{'true', 'false'}","Specifies whether to add HVDC link projects from the `TYNDP 2018 <https://tyndp.entsoe.eu/tyndp2018/projects/>`_ which are at least in permitting."
under_construction,--,"One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity}","Specifies how to handle lines which are currently under construction." under_construction,--,"One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity}","Specifies how to handle lines which are currently under construction."

1 Unit Values Description
2 p_max_pu -- Value in [0.,1.] Correction factor for link capacities ``p_nom``.
3 include_tyndp bool {'true', 'false'} Specifies whether to add HVDC link projects from the `TYNDP 2018 <https://tyndp.entsoe.eu/tyndp2018/projects/>`_ which are at least in permitting.
4 under_construction -- One of {'zero': set capacity to zero, 'remove': remove completely, 'keep': keep with full capacity} Specifies how to handle lines which are currently under construction.

View File

@ -1,2 +1,2 @@
,Unit,Values,Description ,Unit,Values,Description
scaling_factor,--,float,"Global correction factor for the load time series." scaling_factor,--,float,"Global correction factor for the load time series."

1 Unit Values Description
2 scaling_factor -- float Global correction factor for the load time series.

View File

@ -10,4 +10,4 @@ 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." 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`" 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." 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." 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 Unit Values Description
10 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.
11 potential -- One of {'simple', 'conservative'} Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`
12 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.
13 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.

View File

@ -10,4 +10,4 @@ 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." 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`" 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." 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." 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 Unit Values Description
10 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.
11 potential -- One of {'simple', 'conservative'} Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`
12 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.
13 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.

View File

@ -11,4 +11,4 @@ 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``." 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`" 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." 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." 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 Unit Values Description
11 natura bool {true, false} Switch to exclude `Natura 2000 <https://en.wikipedia.org/wiki/Natura_2000>`_ natural protection areas. Area is excluded if ``true``.
12 potential -- One of {'simple', 'conservative'} Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`
13 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.
14 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.

View File

@ -5,4 +5,4 @@ Trigger, Description, Definition, Status
``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 ``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
``BAU``, Add a per-``carrier`` minimal overall capacity; i.e. at least ``40GW`` of ``OCGT`` in Europe; configured in ``electricity: BAU_mincapacities``, ``solve_network``: `add_opts_constraints() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/solve_network.py#L66>`_, Untested ``BAU``, Add a per-``carrier`` minimal overall capacity; i.e. at least ``40GW`` of ``OCGT`` in Europe; configured in ``electricity: BAU_mincapacities``, ``solve_network``: `add_opts_constraints() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/solve_network.py#L66>`_, Untested
``SAFE``, Add a capacity reserve margin of a certain fraction above the peak demand to which renewable generators and storage do *not* contribute. Ignores network., ``solve_network`` `add_opts_constraints() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/solve_network.py#L73>`_, Untested ``SAFE``, Add a capacity reserve margin of a certain fraction above the peak demand to which renewable generators and storage do *not* contribute. Ignores network., ``solve_network`` `add_opts_constraints() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/solve_network.py#L73>`_, Untested
``carrier+factor``, "Alter the capital cost of a carrier by a factor. Example: ``solar+0.5`` reduces the capital cost of solar to 50\% of original values.", ``prepare_network``, In active use ``carrier+factor``, "Alter the capital cost of a carrier by a factor. Example: ``solar+0.5`` reduces the capital cost of solar to 50\% of original values.", ``prepare_network``, In active use

1 Trigger Description Definition Status
5 ``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
6 ``BAU`` Add a per-``carrier`` minimal overall capacity; i.e. at least ``40GW`` of ``OCGT`` in Europe; configured in ``electricity: BAU_mincapacities`` ``solve_network``: `add_opts_constraints() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/solve_network.py#L66>`_ Untested
7 ``SAFE`` Add a capacity reserve margin of a certain fraction above the peak demand to which renewable generators and storage do *not* contribute. Ignores network. ``solve_network`` `add_opts_constraints() <https://github.com/PyPSA/pypsa-eur/blob/6b964540ed39d44079cdabddee8333f486d0cd63/scripts/solve_network.py#L73>`_ Untested
8 ``carrier+factor`` Alter the capital cost of a carrier by a factor. Example: ``solar+0.5`` reduces the capital cost of solar to 50\% of original values. ``prepare_network`` In active use

View File

@ -11,4 +11,4 @@ energy_max,TWh,float,"Upper y-axis limit in energy bar plots."
energy_min,TWh,float,"Lower y-axis limit in energy bar plots." energy_min,TWh,float,"Lower y-axis limit in energy bar plots."
energy_threshold,TWh,float,"Threshold below which technologies will not be shown in energy bar plots." energy_threshold,TWh,float,"Threshold below which technologies will not be shown in energy bar plots."
tech_colors,--,"carrier -> HEX colour code","Mapping from network ``carrier`` to a colour (`HEX colour code <https://en.wikipedia.org/wiki/Web_colors#Hex_triplet>`_)." tech_colors,--,"carrier -> HEX colour code","Mapping from network ``carrier`` to a colour (`HEX colour code <https://en.wikipedia.org/wiki/Web_colors#Hex_triplet>`_)."
nice_names,--,"str -> str","Mapping from network ``carrier`` to a more readable name." nice_names,--,"str -> str","Mapping from network ``carrier`` to a more readable name."

1 Unit Values Description
11 energy_min TWh float Lower y-axis limit in energy bar plots.
12 energy_threshold TWh float Threshold below which technologies will not be shown in energy bar plots.
13 tech_colors -- carrier -> HEX colour code Mapping from network ``carrier`` to a colour (`HEX colour code <https://en.wikipedia.org/wiki/Web_colors#Hex_triplet>`_).
14 nice_names -- str -> str Mapping from network ``carrier`` to a more readable name.

View File

@ -2,4 +2,4 @@
simpl,--,cf. :ref:`simpl`,"List of ``{simpl}`` wildcards to run." simpl,--,cf. :ref:`simpl`,"List of ``{simpl}`` wildcards to run."
clusters,--,cf. :ref:`clusters`,"List of ``{clusters}`` wildcards to run." clusters,--,cf. :ref:`clusters`,"List of ``{clusters}`` wildcards to run."
ll,--,cf. :ref:`ll`,"List of ``{ll}`` wildcards to run." ll,--,cf. :ref:`ll`,"List of ``{ll}`` wildcards to run."
opts,--,cf. :ref:`opts`,"List of ``{opts}`` wildcards to run." opts,--,cf. :ref:`opts`,"List of ``{opts}`` wildcards to run."

1 Unit Values Description
2 simpl -- cf. :ref:`simpl` List of ``{simpl}`` wildcards to run.
3 clusters -- cf. :ref:`clusters` List of ``{clusters}`` wildcards to run.
4 ll -- cf. :ref:`ll` List of ``{ll}`` wildcards to run.
5 opts -- cf. :ref:`opts` List of ``{opts}`` wildcards to run.

View File

@ -1,4 +1,4 @@
,Unit,Values,Description ,Unit,Values,Description
start,--,"str or datetime-like; e.g. YYYY-MM-DD","Left bound of date range" start,--,"str or datetime-like; e.g. YYYY-MM-DD","Left bound of date range"
end,--,"str or datetime-like; e.g. YYYY-MM-DD","Right bound of date range" end,--,"str or datetime-like; e.g. YYYY-MM-DD","Right bound of date range"
closed,--,"One of {None, left, right}","Make the time interval closed to the ``left``, ``right``, or both sides ``None``." closed,--,"One of {None, left, right}","Make the time interval closed to the ``left``, ``right``, or both sides ``None``."

1 Unit Values Description
2 start -- str or datetime-like; e.g. YYYY-MM-DD Left bound of date range
3 end -- str or datetime-like; e.g. YYYY-MM-DD Right bound of date range
4 closed -- One of {None, ‘left’, ‘right’} Make the time interval closed to the ``left``, ``right``, or both sides ``None``.

View File

@ -12,4 +12,4 @@ 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``." 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`" 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." 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." 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 Unit Values Description
12 natura bool {true, false} Switch to exclude `Natura 2000 <https://en.wikipedia.org/wiki/Natura_2000>`_ natural protection areas. Area is excluded if ``true``.
13 potential -- One of {'simple', 'conservative'} Method to compute the maximal installable potential for a node; confer :ref:`renewableprofiles`
14 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.
15 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.

View File

@ -7,4 +7,4 @@ max_iterations,--,int,"Maximum number of solving iterations in between which res
nhours,--,int,"Specifies the :math:`n` first snapshots to take into account. Must be less than the total number of snapshots. Rather recommended only for debugging." nhours,--,int,"Specifies the :math:`n` first snapshots to take into account. Must be less than the total number of snapshots. Rather recommended only for debugging."
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." 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."
skip_iterations,bool,"{'true','false'}","Skip iterating, do not update impedances of branches." skip_iterations,bool,"{'true','false'}","Skip iterating, do not update impedances of branches."
track_iterations,bool,"{'true','false'}","Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in ``network.lines['s_nom_opt_X']`` (where ``X`` labels the iteration)" track_iterations,bool,"{'true','false'}","Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in ``network.lines['s_nom_opt_X']`` (where ``X`` labels the iteration)"

1 Unit Values Description
7 nhours -- int Specifies the :math:`n` first snapshots to take into account. Must be less than the total number of snapshots. Rather recommended only for debugging.
8 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.
9 skip_iterations bool {'true','false'} Skip iterating, do not update impedances of branches.
10 track_iterations bool {'true','false'} Flag whether to store the intermediate branch capacities and objective function values are recorded for each iteration in ``network.lines['s_nom_opt_X']`` (where ``X`` labels the iteration)

View File

@ -1,3 +1,3 @@
,Unit,Values,Description ,Unit,Values,Description
name,--,"One of {'gurobi', 'cplex', 'cbc', 'glpk', 'ipopt'}; potentially more possible","Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow." name,--,"One of {'gurobi', 'cplex', 'cbc', 'glpk', 'ipopt'}; potentially more possible","Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow."
opts,--,"Parameter list for `Gurobi <https://www.gurobi.com/documentation/8.1/refman/parameters.html>`_ and `CPLEX <https://www.ibm.com/support/knowledgecenter/SSSA5P_12.5.1/ilog.odms.cplex.help/CPLEX/Parameters/topics/introListAlpha.html>`_","Solver specific parameter settings." opts,--,"Parameter list for `Gurobi <https://www.gurobi.com/documentation/8.1/refman/parameters.html>`_ and `CPLEX <https://www.ibm.com/support/knowledgecenter/SSSA5P_12.5.1/ilog.odms.cplex.help/CPLEX/Parameters/topics/introListAlpha.html>`_","Solver specific parameter settings."

1 Unit Values Description
2 name -- One of {'gurobi', 'cplex', 'cbc', 'glpk', 'ipopt'}; potentially more possible Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow.
3 opts -- Parameter list for `Gurobi <https://www.gurobi.com/documentation/8.1/refman/parameters.html>`_ and `CPLEX <https://www.ibm.com/support/knowledgecenter/SSSA5P_12.5.1/ilog.odms.cplex.help/CPLEX/Parameters/topics/introListAlpha.html>`_ Solver specific parameter settings.

View File

@ -13,4 +13,4 @@ enable,,,
-- build_cutout,bool,"{true, false}","Switch to enable the building of cutouts via the rule :mod:`build_cutout`." -- build_cutout,bool,"{true, false}","Switch to enable the building of cutouts via the rule :mod:`build_cutout`."
-- retrieve_cutout,bool,"{true, false}","Switch to enable the retrieval of cutouts from zenodo with :mod:`retrieve_cutout`." -- retrieve_cutout,bool,"{true, false}","Switch to enable the retrieval of cutouts from zenodo with :mod:`retrieve_cutout`."
-- build_natura_raster,bool,"{true, false}","Switch to enable the creation of the raster ``natura.tiff`` via the rule :mod:`build_natura_raster`." -- build_natura_raster,bool,"{true, false}","Switch to enable the creation of the raster ``natura.tiff`` via the rule :mod:`build_natura_raster`."
-- retrieve_natura_raster,bool,"{true, false}","Switch to enable the retrieval of ``natura.tiff`` from zenodo with :mod:`retrieve_natura_raster`." -- retrieve_natura_raster,bool,"{true, false}","Switch to enable the retrieval of ``natura.tiff`` from zenodo with :mod:`retrieve_natura_raster`."

1 Unit Values Description
13 -- build_cutout bool {true, false} Switch to enable the building of cutouts via the rule :mod:`build_cutout`.
14 -- retrieve_cutout bool {true, false} Switch to enable the retrieval of cutouts from zenodo with :mod:`retrieve_cutout`.
15 -- build_natura_raster bool {true, false} Switch to enable the creation of the raster ``natura.tiff`` via the rule :mod:`build_natura_raster`.
16 -- retrieve_natura_raster bool {true, false} Switch to enable the retrieval of ``natura.tiff`` from zenodo with :mod:`retrieve_natura_raster`.

View File

@ -1,4 +1,4 @@
,Unit,Values,Description ,Unit,Values,Description
x,p.u.,float,"Series reactance (per unit, using ``s_nom`` as base power of the transformer. Overwritten if ``type`` is specified." x,p.u.,float,"Series reactance (per unit, using ``s_nom`` as base power of the transformer. Overwritten if ``type`` is specified."
s_nom,MVA,float,"Limit of apparent power which can pass through branch. Overwritten if ``type`` is specified." s_nom,MVA,float,"Limit of apparent power which can pass through branch. Overwritten if ``type`` is specified."
type,--,"A `transformer type in PyPSA <https://pypsa.readthedocs.io/en/latest/components.html#transformer-types>`_.","Specifies transformer types to assume for the transformers of the ENTSO-E grid extraction." type,--,"A `transformer type in PyPSA <https://pypsa.readthedocs.io/en/latest/components.html#transformer-types>`_.","Specifies transformer types to assume for the transformers of the ENTSO-E grid extraction."

1 Unit Values Description
2 x p.u. float Series reactance (per unit, using ``s_nom`` as base power of the transformer. Overwritten if ``type`` is specified.
3 s_nom MVA float Limit of apparent power which can pass through branch. Overwritten if ``type`` is specified.
4 type -- A `transformer type in PyPSA <https://pypsa.readthedocs.io/en/latest/components.html#transformer-types>`_. Specifies transformer types to assume for the transformers of the ENTSO-E grid extraction.

View File

@ -36,10 +36,10 @@ investment changes as more ambitious greenhouse-gas emission reduction targets a
The ``scenario`` section is an extraordinary section of the config file The ``scenario`` section is an extraordinary section of the config file
that is strongly connected to the :ref:`wildcards` and is designed to that is strongly connected to the :ref:`wildcards` and is designed to
facilitate running multiple scenarios through a single command facilitate running multiple scenarios through a single command
.. code:: bash .. code:: bash
snakemake -j 1 solve_all_elec_networks snakemake -j 1 solve_all_elec_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_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.

View File

@ -50,4 +50,4 @@ Default Cost Assumptions
.. csv-table:: .. csv-table::
:header-rows: 1 :header-rows: 1
:widths: 10,3,5,4,6,8 :widths: 10,3,5,4,6,8
:file: ../data/costs.csv :file: ../data/costs.csv

View File

@ -8,7 +8,7 @@ PyPSA-Eur: An Open Optimisation Model of the European Transmission System
.. image:: https://img.shields.io/github/v/release/pypsa/pypsa-eur?include_prereleases .. image:: https://img.shields.io/github/v/release/pypsa/pypsa-eur?include_prereleases
:alt: GitHub release (latest by date including pre-releases) :alt: GitHub release (latest by date including pre-releases)
.. image:: https://travis-ci.org/PyPSA/pypsa-eur.svg?branch=master .. image:: https://travis-ci.org/PyPSA/pypsa-eur.svg?branch=master
:target: https://travis-ci.org/PyPSA/pypsa-eur :target: https://travis-ci.org/PyPSA/pypsa-eur
@ -101,9 +101,9 @@ Documentation
simplification simplification
solving solving
plotting plotting
**References** **References**
* :doc:`release_notes` * :doc:`release_notes`
* :doc:`limitations` * :doc:`limitations`
* :doc:`contributing` * :doc:`contributing`
@ -183,7 +183,7 @@ There are pre-built networks available as a dataset on Zenodo as well for every
The included ``.nc`` files are PyPSA network files which can be imported with PyPSA via: The included ``.nc`` files are PyPSA network files which can be imported with PyPSA via:
.. code:: python .. code:: python
import pypsa import pypsa
filename = "elec_s_1024_ec.nc" # example filename = "elec_s_1024_ec.nc" # example
@ -202,7 +202,7 @@ PyPSA-Eur work is released under multiple licenses:
See the individual files and the `dep5 <.reuse/dep5>`_ file for license details. See the individual files and the `dep5 <.reuse/dep5>`_ file for license details.
Additionally, different licenses and terms of use also apply to the various input data, which are summarised below. Additionally, different licenses and terms of use also apply to the various input data, which are summarised below.
More details are included in More details are included in
`the description of the data bundles on zenodo <https://zenodo.org/record/3517935#.XbGeXvzRZGo>`_. `the description of the data bundles on zenodo <https://zenodo.org/record/3517935#.XbGeXvzRZGo>`_.
.. csv-table:: .. csv-table::

View File

@ -1,6 +1,6 @@
.. ..
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
SPDX-License-Identifier: CC-BY-4.0 SPDX-License-Identifier: CC-BY-4.0
.. _installation: .. _installation:
@ -37,12 +37,12 @@ We recommend using the package manager and environment management system ``conda
Install `miniconda <https://docs.conda.io/en/latest/miniconda.html>`_, which is a mini version of `Anaconda <https://www.anaconda.com/>`_ that includes only ``conda`` and its dependencies or make sure ``conda`` is already installed on your system. Install `miniconda <https://docs.conda.io/en/latest/miniconda.html>`_, which is a mini version of `Anaconda <https://www.anaconda.com/>`_ that includes only ``conda`` and its dependencies or make sure ``conda`` is already installed on your system.
For instructions for your operating system follow the ``conda`` `installation guide <https://docs.conda.io/projects/conda/en/latest/user-guide/install/>`_. For instructions for your operating system follow the ``conda`` `installation guide <https://docs.conda.io/projects/conda/en/latest/user-guide/install/>`_.
The python package requirements are curated in the `environment.yaml <https://github.com/PyPSA/pypsa-eur/blob/master/environment.yaml>`_ file. The python package requirements are curated in the `envs/environment.yaml <https://github.com/PyPSA/pypsa-eur/blob/master/envs/environment.yaml>`_ file.
The environment can be installed and activated using The environment can be installed and activated using
.. code:: bash .. code:: bash
.../pypsa-eur % conda env create -f environment.yaml .../pypsa-eur % conda env create -f envs/environment.yaml
.../pypsa-eur % conda activate pypsa-eur .../pypsa-eur % conda activate pypsa-eur
@ -55,14 +55,14 @@ The environment can be installed and activated using
`mamba <https://github.com/QuantStack/mamba>`_ as a fast drop-in replacement via `mamba <https://github.com/QuantStack/mamba>`_ as a fast drop-in replacement via
.. code:: bash .. code:: bash
conda install -c conda-forge mamba conda install -c conda-forge mamba
and then install the environment with and then install the environment with
.. code:: bash .. code:: bash
mamba env create -f environment.yaml mamba env create -f envs/environment.yaml
Install a Solver Install a Solver
================ ================
@ -102,10 +102,10 @@ For installation instructions of these solvers for your operating system, follow
and on Windows and on Windows
.. code:: bash .. code:: bash
conda activate pypsa-eur conda activate pypsa-eur
conda install -c conda-forge ipopt glpk conda install -c conda-forge ipopt glpk
.. _defaultconfig: .. _defaultconfig:
@ -113,7 +113,7 @@ Set Up the Default Configuration
================================ ================================
PyPSA-Eur has several configuration options that must be specified in a ``config.yaml`` file located in the root directory. PyPSA-Eur has several configuration options that must be specified in a ``config.yaml`` file located in the root directory.
An example configuration ``config.default.yaml`` is maintained in the repository. An example configuration ``config.default.yaml`` is maintained in the repository.
More details on the configuration options are in :ref:`config`. More details on the configuration options are in :ref:`config`.
Before first use, create a ``config.yaml`` by copying the example. Before first use, create a ``config.yaml`` by copying the example.

View File

@ -1,6 +1,6 @@
.. ..
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
SPDX-License-Identifier: CC-BY-4.0 SPDX-License-Identifier: CC-BY-4.0
.. _intro: .. _intro:
@ -64,4 +64,4 @@ Folder Structure
System Requirements 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 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.

View File

@ -37,7 +37,7 @@ improving the approximations.
not spatially disaggregated; assuming, as we have done, that the load time series not spatially disaggregated; assuming, as we have done, that the load time series
shape is the same at each node within each country ignores local differences. shape is the same at each node within each country ignores local differences.
- **Currently installed renewable capacities:** - **Currently installed renewable capacities:**
Information on existing wind, solar and small hydro, geothermal, marine and Information on existing wind, solar and small hydro, geothermal, marine and
biomass power plants are excluded from the dataset because of a lack of data biomass power plants are excluded from the dataset because of a lack of data
availability in many countries. Approximate distributions of wind and solar availability in many countries. Approximate distributions of wind and solar
@ -56,4 +56,3 @@ improving the approximations.
Belarus, Ukraine, Turkey and Morocco have not been taken into account; Belarus, Ukraine, Turkey and Morocco have not been taken into account;
islands which are not connected to the main European system, such as Malta, islands which are not connected to the main European system, such as Malta,
Crete and Cyprus, are also excluded from the model. Crete and Cyprus, are also excluded from the model.

View File

@ -173,4 +173,4 @@ Rule ``plot_network``
.. automodule:: plot_network .. automodule:: plot_network
.. image:: img/tech-colors.png .. image:: img/tech-colors.png
:align: center :align: center

View File

@ -2,7 +2,7 @@
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
SPDX-License-Identifier: CC-BY-4.0 SPDX-License-Identifier: CC-BY-4.0
.. _base: .. _base:
Rule ``base_network`` Rule ``base_network``
@ -51,4 +51,4 @@ Rule ``base_network``
| |
.. automodule:: base_network .. automodule:: base_network

View File

@ -48,4 +48,4 @@ Rule ``build_bus_regions``
| |
.. automodule:: build_bus_regions .. automodule:: build_bus_regions

View File

@ -39,4 +39,4 @@ Rule ``build_cutout``
| |
.. automodule:: build_cutout .. automodule:: build_cutout

View File

@ -23,7 +23,7 @@ Upcoming Release
* 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>`_. * 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. * 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.
PyPSA-Eur 0.2.0 (8th June 2020) PyPSA-Eur 0.2.0 (8th June 2020)
================================== ==================================
@ -86,7 +86,7 @@ This is the first release of PyPSA-Eur, a model of the European power system at
* 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>`_).
@ -97,8 +97,8 @@ Release Process
* Finalise release notes at ``doc/release_notes.rst``. * Finalise release notes at ``doc/release_notes.rst``.
* Update ``environment.fixedversions.yaml`` via * Update ``envs/environment.fixed.yaml`` via
``conda env export -n pypsa-eur -f environment.fixedversions.yaml --no-builds`` ``conda env export -n pypsa-eur -f envs/environment.fixed.yaml --no-builds``
from an up-to-date `pypsa-eur` environment. from an up-to-date `pypsa-eur` environment.
* Update version number in ``doc/conf.py`` and ``*config.*.yaml``. * Update version number in ``doc/conf.py`` and ``*config.*.yaml``.

View File

@ -22,7 +22,7 @@ After simplification and clustering of the network, additional components may be
.. toctree:: .. toctree::
:caption: Overview :caption: Overview
simplification/simplify_network simplification/simplify_network
simplification/cluster_network simplification/cluster_network
simplification/add_extra_components simplification/add_extra_components

View File

@ -1,6 +1,6 @@
.. ..
SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors SPDX-FileCopyrightText: 2019-2020 The PyPSA-Eur Authors
SPDX-License-Identifier: CC-BY-4.0 SPDX-License-Identifier: CC-BY-4.0
.. _tutorial: .. _tutorial:
@ -48,7 +48,7 @@ The model can be adapted to only include selected countries (e.g. Germany) inste
.. literalinclude:: ../config.tutorial.yaml .. literalinclude:: ../config.tutorial.yaml
:language: yaml :language: yaml
:lines: 16 :lines: 16
Likewise, the example's temporal scope can be restricted (e.g. to a single month). Likewise, the example's temporal scope can be restricted (e.g. to a single month).
.. literalinclude:: ../config.tutorial.yaml .. literalinclude:: ../config.tutorial.yaml
@ -132,7 +132,7 @@ orders ``snakemake`` to run the script ``solve_network`` that produces the solve
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_elec_networks``.
This triggers a workflow of multiple preceding jobs that depend on each rule's inputs and outputs: This triggers a workflow of multiple preceding jobs that depend on each rule's inputs and outputs:
.. graphviz:: .. graphviz::
:align: center :align: center
@ -184,7 +184,7 @@ This triggers a workflow of multiple preceding jobs that depend on each rule's i
7 -> 11 7 -> 11
5 -> 11 5 -> 11
12 -> 11 12 -> 11
} }
| |
@ -229,8 +229,8 @@ A job (here ``simplify_network``) will display its attributes and normally some
INFO:__main__:Mapping all network lines onto a single 380kV layer INFO:__main__:Mapping all network lines onto a single 380kV layer
INFO:__main__:Simplifying connected link components INFO:__main__:Simplifying connected link components
INFO:__main__:Removing stubs INFO:__main__:Removing stubs
INFO:__main__:Displacing offwind-ac generator(s) and adding connection costs to capital_costs: 20128 Eur/MW/a for `5718 offwind-ac` INFO:__main__:Displacing offwind-ac generator(s) and adding connection costs to capital_costs: 20128 Eur/MW/a for `5718 offwind-ac`
INFO:__main__:Displacing offwind-dc generator(s) and adding connection costs to capital_costs: 14994 Eur/MW/a for `5718 offwind-dc`, 26939 Eur/MW/a for `5724 offwind-dc`, 29621 Eur/MW/a for `5725 offwind-dc` INFO:__main__:Displacing offwind-dc generator(s) and adding connection costs to capital_costs: 14994 Eur/MW/a for `5718 offwind-dc`, 26939 Eur/MW/a for `5724 offwind-dc`, 29621 Eur/MW/a for `5725 offwind-dc`
INFO:pypsa.io:Exported network elec_s.nc has lines, carriers, links, storage_units, loads, buses, generators INFO:pypsa.io:Exported network elec_s.nc has lines, carriers, links, storage_units, loads, buses, generators
[<DATETIME>] [<DATETIME>]
Finished job 3. Finished job 3.
@ -293,5 +293,5 @@ For inspiration, read the `examples section in the PyPSA documentation <https://
.. note:: .. note::
There are rules for summaries and plotting available in the repository of PyPSA-Eur. There are rules for summaries and plotting available in the repository of PyPSA-Eur.
They are currently under revision and therefore not yet documented. They are currently under revision and therefore not yet documented.

View File

@ -65,7 +65,7 @@ The wildcard, in general, consists of two parts:
2. The second part can be 2. The second part can be
``opt`` or a float bigger than one (e.g. 1.25). ``opt`` or a float bigger than one (e.g. 1.25).
(a) If ``opt`` is chosen line expansion is optimised (a) If ``opt`` is chosen line expansion is optimised
according to its capital cost according to its capital cost
(where the choice ``v`` only considers overhead costs for HVDC transmission lines, while (where the choice ``v`` only considers overhead costs for HVDC transmission lines, while
@ -74,7 +74,7 @@ The wildcard, in general, consists of two parts:
(b) ``v1.25`` will limit the total volume of line expansion (b) ``v1.25`` will limit the total volume of line expansion
to 25 % of currently installed capacities weighted by to 25 % of currently installed capacities weighted by
individual line lengths; investment costs are neglected. individual line lengths; investment costs are neglected.
(c) ``c1.25`` will allow to build a transmission network that (c) ``c1.25`` will allow to build a transmission network that
costs no more than 25 % more than the current system. costs no more than 25 % more than the current system.

View File

@ -5,19 +5,15 @@
name: pypsa-eur-docs name: pypsa-eur-docs
channels: channels:
- conda-forge - conda-forge
#- bioconda
dependencies: dependencies:
#- python
- pip - pip
- pypsa>=0.17.1 - pypsa>=0.17.1
- atlite=0.0.3 - atlite=0.0.3
# Dependencies of the workflow itself # Dependencies of the workflow itself
#- xlrd
- scikit-learn - scikit-learn
- pycountry - pycountry
- seaborn - seaborn
#- snakemake-minimal
- memory_profiler - memory_profiler
- yaml - yaml
- pytables - pytables
@ -25,28 +21,19 @@ dependencies:
# Second order dependencies which should really be deps of atlite # Second order dependencies which should really be deps of atlite
- xarray - xarray
#- netcdf4
#- bottleneck
#- toolz
#- dask
- progressbar2 - progressbar2
- pyyaml>=5.1.0 - pyyaml>=5.1.0
# Include ipython so that one does not inadvertently drop out of the conda
# environment by calling ipython
# - ipython
# GIS dependencies have to come all from conda-forge # GIS dependencies have to come all from conda-forge
- conda-forge::cartopy - cartopy
- conda-forge::fiona - fiona
- conda-forge::proj - proj
- conda-forge::pyshp - pyshp
- conda-forge::geopandas - geopandas
- conda-forge::rasterio - rasterio
- conda-forge::shapely - shapely
- conda-forge::libgdal - libgdal
# The FRESNA/KIT stuff is not packaged for conda yet
- pip: - pip:
- vresutils==0.3.1 - vresutils==0.3.1
- git+https://github.com/PyPSA/glaes.git#egg=glaes - git+https://github.com/PyPSA/glaes.git#egg=glaes

View File

@ -373,7 +373,7 @@ def attach_hydro(n, costs, ppl):
.where(lambda df: df<=1., other=1.))) .where(lambda df: df<=1., other=1.)))
if 'PHS' in carriers and not phs.empty: if 'PHS' in carriers and not phs.empty:
# fill missing max hours to config value and # fill missing max hours to config value and
# assume no natural inflow due to lack of data # assume no natural inflow due to lack of data
phs = phs.replace({'max_hours': {0: c['PHS_max_hours']}}) phs = phs.replace({'max_hours': {0: c['PHS_max_hours']}})
n.madd('StorageUnit', phs.index, n.madd('StorageUnit', phs.index,

View File

@ -312,18 +312,18 @@ def _set_electrical_parameters_links(links):
links['p_min_pu'] = -p_max_pu links['p_min_pu'] = -p_max_pu
links_p_nom = pd.read_csv(snakemake.input.links_p_nom) links_p_nom = pd.read_csv(snakemake.input.links_p_nom)
# filter links that are not in operation anymore # filter links that are not in operation anymore
removed_b = links_p_nom.Remarks.str.contains('Shut down|Replaced', na=False) removed_b = links_p_nom.Remarks.str.contains('Shut down|Replaced', na=False)
links_p_nom = links_p_nom[~removed_b] links_p_nom = links_p_nom[~removed_b]
# find closest link for all links in links_p_nom # find closest link for all links in links_p_nom
links_p_nom['j'] = _find_closest_links(links, links_p_nom) links_p_nom['j'] = _find_closest_links(links, links_p_nom)
links_p_nom = links_p_nom.groupby(['j'],as_index=False).agg({'Power (MW)': 'sum'}) links_p_nom = links_p_nom.groupby(['j'],as_index=False).agg({'Power (MW)': 'sum'})
p_nom = links_p_nom.dropna(subset=["j"]).set_index("j")["Power (MW)"] p_nom = links_p_nom.dropna(subset=["j"]).set_index("j")["Power (MW)"]
# Don't update p_nom if it's already set # Don't update p_nom if it's already set
p_nom_unset = p_nom.drop(links.index[links.p_nom.notnull()], errors='ignore') if "p_nom" in links else p_nom p_nom_unset = p_nom.drop(links.index[links.p_nom.notnull()], errors='ignore') if "p_nom" in links else p_nom
links.loc[p_nom_unset.index, "p_nom"] = p_nom_unset links.loc[p_nom_unset.index, "p_nom"] = p_nom_unset

View File

@ -115,7 +115,7 @@ Exemplary unsolved network clustered to 37 nodes:
.. image:: ../img/elec_s_37.png .. image:: ../img/elec_s_37.png
:scale: 40 % :scale: 40 %
:align: center :align: center
""" """

View File

@ -307,7 +307,7 @@ def calculate_prices(n,label,prices):
def calculate_weighted_prices(n,label,weighted_prices): def calculate_weighted_prices(n,label,weighted_prices):
logger.warning("Weighted prices don't include storage units as loads") logger.warning("Weighted prices don't include storage units as loads")
weighted_prices = weighted_prices.reindex(pd.Index(["electricity","heat","space heat","urban heat","space urban heat","gas","H2"])) weighted_prices = weighted_prices.reindex(pd.Index(["electricity","heat","space heat","urban heat","space urban heat","gas","H2"]))

View File

@ -131,7 +131,7 @@ def set_transmission_limit(n, ll_type, factor, Nyears=1):
n.add('GlobalConstraint', f'l{ll_type}_limit', n.add('GlobalConstraint', f'l{ll_type}_limit',
type=f'transmission_{con_type}_limit', type=f'transmission_{con_type}_limit',
sense='<=', constant=rhs, carrier_attribute='AC, DC') sense='<=', constant=rhs, carrier_attribute='AC, DC')
return n return n

View File

@ -186,4 +186,3 @@ solving:
# solutiontype: 2 # non basic solution, ie no crossover # solutiontype: 2 # non basic solution, ie no crossover
# barrier_convergetol: 1.e-5 # barrier_convergetol: 1.e-5
# feasopt_tolerance: 1.e-6 # feasopt_tolerance: 1.e-6