draft validation section in config
This commit is contained in:
parent
ade7e17d57
commit
fc140c5f38
@ -1,22 +1,21 @@
|
|||||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
run:
|
run:
|
||||||
name: "validation" # use this to keep track of runs with different settings
|
name: "validation"
|
||||||
|
|
||||||
scenario:
|
scenario:
|
||||||
ll: # allowed transmission line volume expansion, can be any float >= 1.0 with a prefix v|c (today) or "copt"
|
ll:
|
||||||
- v1.0
|
- v1.0
|
||||||
clusters: # number of nodes in Europe, any integer between 37 (1 node per country-zone) and several hundred
|
clusters:
|
||||||
- 37
|
- 37
|
||||||
opts: # only relevant for PyPSA-Eur
|
opts:
|
||||||
- 'Ept'
|
- 'Ept'
|
||||||
|
|
||||||
snapshots:
|
snapshots:
|
||||||
start: "2019-01-01"
|
start: "2019-01-01"
|
||||||
end: "2020-01-01"
|
end: "2020-01-01"
|
||||||
inclusive: 'left' # include start, not end
|
inclusive: 'left'
|
||||||
|
|
||||||
enable:
|
enable:
|
||||||
retrieve_cutout: false
|
retrieve_cutout: false
|
||||||
@ -26,11 +25,10 @@ electricity:
|
|||||||
|
|
||||||
extendable_carriers:
|
extendable_carriers:
|
||||||
Generator: []
|
Generator: []
|
||||||
StorageUnit: [] # battery, H2
|
StorageUnit: []
|
||||||
Store: []
|
Store: []
|
||||||
Link: [] # H2 pipeline
|
Link: []
|
||||||
|
|
||||||
# use pandas query strings here, e.g. Country not in ['Germany']
|
|
||||||
powerplants_filter: not (DateOut < 2019)
|
powerplants_filter: not (DateOut < 2019)
|
||||||
|
|
||||||
conventional_carriers: [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass]
|
conventional_carriers: [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass]
|
||||||
@ -39,22 +37,17 @@ electricity:
|
|||||||
estimate_renewable_capacities:
|
estimate_renewable_capacities:
|
||||||
year: 2019
|
year: 2019
|
||||||
|
|
||||||
|
|
||||||
atlite:
|
atlite:
|
||||||
default_cutout: europe-2019-era5
|
default_cutout: europe-2019-era5
|
||||||
cutouts:
|
cutouts:
|
||||||
# use 'base' to determine geographical bounds and time span from config
|
|
||||||
# base:
|
|
||||||
# module: era5
|
|
||||||
europe-2019-era5:
|
europe-2019-era5:
|
||||||
module: era5 # in priority order
|
module: era5
|
||||||
x: [-12., 35.]
|
x: [-12., 35.]
|
||||||
y: [33., 72]
|
y: [33., 72]
|
||||||
dx: 0.3
|
dx: 0.3
|
||||||
dy: 0.3
|
dy: 0.3
|
||||||
time: ['2019', '2019']
|
time: ['2019', '2019']
|
||||||
|
|
||||||
|
|
||||||
renewable:
|
renewable:
|
||||||
onwind:
|
onwind:
|
||||||
cutout: europe-2019-era5
|
cutout: europe-2019-era5
|
||||||
@ -69,29 +62,26 @@ renewable:
|
|||||||
flatten_dispatch: 0.01
|
flatten_dispatch: 0.01
|
||||||
|
|
||||||
conventional:
|
conventional:
|
||||||
unit_commitment: true
|
unit_commitment: false
|
||||||
dynamic_fuel_price: true
|
dynamic_fuel_price: true
|
||||||
nuclear:
|
nuclear:
|
||||||
p_max_pu: "data/nuclear_p_max_pu.csv" # float of file name
|
p_max_pu: "data/nuclear_p_max_pu.csv"
|
||||||
biomass:
|
biomass:
|
||||||
p_max_pu: 0.65
|
p_max_pu: 0.65
|
||||||
|
|
||||||
|
|
||||||
load:
|
load:
|
||||||
power_statistics: false # only for files from <2019; set false in order to get ENTSOE transparency data
|
power_statistics: false
|
||||||
|
|
||||||
|
|
||||||
lines:
|
lines:
|
||||||
s_max_pu: 0.23
|
s_max_pu: 0.23
|
||||||
under_construction: 'remove' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
|
under_construction: 'remove'
|
||||||
|
|
||||||
|
|
||||||
links:
|
links:
|
||||||
include_tyndp: false
|
include_tyndp: false
|
||||||
|
|
||||||
costs:
|
costs:
|
||||||
year: 2020
|
year: 2020
|
||||||
emission_prices: # in currency per tonne emission, only used with the option Ep
|
emission_prices:
|
||||||
co2: 25
|
co2: 25
|
||||||
|
|
||||||
clustering:
|
clustering:
|
||||||
@ -100,9 +90,7 @@ clustering:
|
|||||||
cluster_network:
|
cluster_network:
|
||||||
consider_efficiency_classes: true
|
consider_efficiency_classes: true
|
||||||
|
|
||||||
|
|
||||||
solving:
|
solving:
|
||||||
#tmpdir: "path/to/tmp"
|
|
||||||
options:
|
options:
|
||||||
load_shedding: true
|
load_shedding: true
|
||||||
rolling_horizon: false
|
rolling_horizon: false
|
||||||
|
@ -280,6 +280,7 @@ The PyPSA-Eur workflow is continuously tested for Linux, macOS and Windows (WSL
|
|||||||
|
|
||||||
release_notes
|
release_notes
|
||||||
licenses
|
licenses
|
||||||
|
validation
|
||||||
limitations
|
limitations
|
||||||
contributing
|
contributing
|
||||||
support
|
support
|
||||||
|
53
doc/validation.rst
Normal file
53
doc/validation.rst
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
..
|
||||||
|
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||||
|
|
||||||
|
SPDX-License-Identifier: CC-BY-4.0
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
Validation
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
The PyPSA-Eur model workflow provides a built-in mechanism for validation. This allows users to contrast the outcomes of network optimization against the historical performance of the European power system. The snakemake rule ``validate_elec_networks`` enables this by generating comparative figures that encapsulate key data points such as dispatch carrier, cross-border flows, and market prices per price zone.
|
||||||
|
|
||||||
|
These comparisons utilize data from the 2019 ENTSO-E Transparency Platform. To enable this, an ENTSO-E API key must be inserted into the ``config.yaml`` file. Detailed steps for this process can be found in the user guide `here <https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html>`_.
|
||||||
|
|
||||||
|
Once the API key is set, the validation workflow can be triggered by running the following command:
|
||||||
|
|
||||||
|
snakemake validate_elec_networks --configfile config/config.validation.yaml -c8
|
||||||
|
|
||||||
|
|
||||||
|
The configuration file `config/config.validation.yaml` contains the following parameters:
|
||||||
|
|
||||||
|
.. literalinclude:: ../config/config.validation.yaml
|
||||||
|
:language: yaml
|
||||||
|
|
||||||
|
The setup uses monthly varying fuel prices for gas, lignite, coal and oil as well as CO2 prices, which are created by the script ``build_monthly_prices``. Upon completion of the validation process, the resulting network and generated figures will be stored in the ``results/validation`` directory for further analysis.
|
||||||
|
|
||||||
|
|
||||||
|
Results
|
||||||
|
=======
|
||||||
|
|
||||||
|
By the time of writing the comparison with the historical data shows partially accurate, partially improvable results. The following figures show the comparison of the dispatch of the different carriers.
|
||||||
|
|
||||||
|
.. image:: ../graphics/validation_seasonal_operation_area_elec_s_37_ec_lv1.0_Ept.png
|
||||||
|
:width: 100%
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
.. image:: ../graphics/validation_production_bar_elec_s_37_ec_lv1.0_Ept.png
|
||||||
|
:width: 100%
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Issues and possible improvements
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
**Overestimated dispatch of wind and solar:** Renewable potentials of wind and solar are slightly overestimated in the model. This leads to a higher dispatch of these carriers than in the historical data. In particular, the solar dispatch during winter is overestimated.
|
||||||
|
|
||||||
|
**Coal - Lignite fuel switch:** The model has a fuel switch from coal to lignite. This might result from non-captured subsidies for lignite and coal in the model. In order to fix the fuel switch from coal to lignite, a manual cost correction was added to the script ``build_monthly_prices``.
|
||||||
|
|
||||||
|
**Planned outages of nuclear power plants:** Planned outages of nuclear power plants are not captured in the model. This leads to a underestimated dispatch of nuclear power plants in winter and a overestimated dispatch in summer. This point is hard to fix, since the planned outages are not published in the ENTSO-E Transparency Platform.
|
||||||
|
|
||||||
|
**False classification of run-of-river power plants:** Some run-of-river power plants are classified as hydro power plants in the model. This leads to a general overestimation of the hydro power dispatch. In particular, Swedish hydro power plants are overestimated.
|
||||||
|
|
||||||
|
**Load shedding:** Due to constraint NTC's (crossborder capacities), the model has to shed load in some regions. This leads to a high market prices in the regions which drive the average market price up. Further fine-tuning of the NTC's is needed to avoid load shedding.
|
BIN
graphics/validation_production_bar_elec_s_37_ec_lv1.0_Ept.png
Normal file
BIN
graphics/validation_production_bar_elec_s_37_ec_lv1.0_Ept.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 99 KiB |
Binary file not shown.
After Width: | Height: | Size: 801 KiB |
@ -5,3 +5,4 @@ font.family: sans-serif
|
|||||||
font.sans-serif: Ubuntu, DejaVu Sans
|
font.sans-serif: Ubuntu, DejaVu Sans
|
||||||
image.cmap: viridis
|
image.cmap: viridis
|
||||||
figure.autolayout : True
|
figure.autolayout : True
|
||||||
|
figure.dpi: 300
|
||||||
|
Loading…
Reference in New Issue
Block a user