Merge branch 'master' of github.com:PyPSA/pypsa-eur into implement-floating
This commit is contained in:
commit
da617be276
@ -6,3 +6,4 @@
|
||||
5d1ef8a64055a039aa4a0834d2d26fe7752fe9a0
|
||||
92080b1cd2ca5f123158571481722767b99c2b27
|
||||
13769f90af4500948b0376d57df4cceaa13e78b5
|
||||
9865a970893d9e515786f33c629b14f71645bf1e
|
||||
|
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
37
.github/workflows/ci.yaml
vendored
37
.github/workflows/ci.yaml
vendored
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2021-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2021-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
@ -19,7 +19,7 @@ on:
|
||||
- cron: "0 5 * * TUE"
|
||||
|
||||
env:
|
||||
DATA_CACHE_NUMBER: 2
|
||||
DATA_CACHE_NUMBER: 1
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@ -32,7 +32,14 @@ jobs:
|
||||
- ubuntu-latest
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
|
||||
inhouse:
|
||||
- stable
|
||||
- master
|
||||
exclude:
|
||||
- os: macos-latest
|
||||
inhouse: master
|
||||
- os: windows-latest
|
||||
inhouse: master
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
defaults:
|
||||
@ -46,16 +53,6 @@ jobs:
|
||||
run: |
|
||||
echo -ne "url: ${CDSAPI_URL}\nkey: ${CDSAPI_TOKEN}\n" > ~/.cdsapirc
|
||||
|
||||
- name: Add solver to environment
|
||||
run: |
|
||||
echo -e "- glpk\n- ipopt<3.13.3" >> envs/environment.yaml
|
||||
if: ${{ matrix.os }} == 'windows-latest'
|
||||
|
||||
- name: Add solver to environment
|
||||
run: |
|
||||
echo -e "- glpk\n- ipopt" >> envs/environment.yaml
|
||||
if: ${{ matrix.os }} != 'windows-latest'
|
||||
|
||||
- name: Setup micromamba
|
||||
uses: mamba-org/setup-micromamba@v1
|
||||
with:
|
||||
@ -66,6 +63,11 @@ jobs:
|
||||
cache-environment: true
|
||||
cache-downloads: true
|
||||
|
||||
- name: Install inhouse packages
|
||||
run: |
|
||||
pip install git+https://github.com/PyPSA/atlite.git@master git+https://github.com/PyPSA/powerplantmatching.git@master git+https://github.com/PyPSA/linopy.git@master
|
||||
if: ${{ matrix.inhouse }} == 'master'
|
||||
|
||||
- name: Set cache dates
|
||||
run: |
|
||||
echo "WEEK=$(date +'%Y%U')" >> $GITHUB_ENV
|
||||
@ -79,14 +81,10 @@ jobs:
|
||||
key: data-cutouts-${{ env.WEEK }}-${{ env.DATA_CACHE_NUMBER }}
|
||||
|
||||
- name: Test snakemake workflow
|
||||
run: |
|
||||
snakemake -call solve_elec_networks --configfile config/test/config.electricity.yaml --rerun-triggers=mtime
|
||||
snakemake -call all --configfile config/test/config.overnight.yaml --rerun-triggers=mtime
|
||||
snakemake -call all --configfile config/test/config.myopic.yaml --rerun-triggers=mtime
|
||||
snakemake -call all --configfile config/test/config.perfect.yaml --rerun-triggers=mtime
|
||||
run: ./test.sh
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4.3.0
|
||||
with:
|
||||
name: resources-results
|
||||
path: |
|
||||
@ -94,3 +92,4 @@ jobs:
|
||||
results
|
||||
if-no-files-found: warn
|
||||
retention-days: 1
|
||||
if: matrix.os == 'ubuntu' && matrix.inhouse == 'stable'
|
||||
|
22
.gitignore
vendored
22
.gitignore
vendored
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
@ -20,10 +20,18 @@ gurobi.log
|
||||
/notebooks
|
||||
/data
|
||||
/cutouts
|
||||
|
||||
/tmp
|
||||
doc/_build
|
||||
|
||||
/scripts/old
|
||||
/scripts/create_scenarios.py
|
||||
/config/create_scenarios.py
|
||||
|
||||
config/config.yaml
|
||||
config/scenarios.yaml
|
||||
|
||||
config.yaml
|
||||
config/config.yaml
|
||||
|
||||
dconf
|
||||
/data/links_p_nom.csv
|
||||
@ -53,25 +61,15 @@ d1gam3xoknrgr2.cloudfront.net/
|
||||
*.nc
|
||||
|
||||
*~
|
||||
/scripts/old
|
||||
|
||||
*.pyc
|
||||
/cutouts
|
||||
/tmp
|
||||
/pypsa
|
||||
|
||||
*.xlsx
|
||||
|
||||
config.yaml
|
||||
|
||||
doc/_build
|
||||
|
||||
*.xls
|
||||
|
||||
*.geojson
|
||||
|
||||
*.ipynb
|
||||
|
||||
data/costs_*
|
||||
|
||||
merger-todos.md
|
||||
|
@ -5,7 +5,7 @@ exclude: "^LICENSES"
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.5.0
|
||||
rev: v4.6.0
|
||||
hooks:
|
||||
- id: check-merge-conflict
|
||||
- id: end-of-file-fixer
|
||||
@ -51,7 +51,7 @@ repos:
|
||||
|
||||
# Formatting with "black" coding style
|
||||
- repo: https://github.com/psf/black-pre-commit-mirror
|
||||
rev: 23.12.1
|
||||
rev: 24.4.2
|
||||
hooks:
|
||||
# Format Python files
|
||||
- id: black
|
||||
@ -67,14 +67,14 @@ repos:
|
||||
|
||||
# Do YAML formatting (before the linter checks it for misses)
|
||||
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
|
||||
rev: v2.12.0
|
||||
rev: v2.13.0
|
||||
hooks:
|
||||
- id: pretty-format-yaml
|
||||
args: [--autofix, --indent, "2", --preserve-quotes]
|
||||
|
||||
# Format Snakemake rule / workflow files
|
||||
- repo: https://github.com/snakemake/snakefmt
|
||||
rev: v0.8.5
|
||||
rev: v0.10.1
|
||||
hooks:
|
||||
- id: snakefmt
|
||||
|
||||
@ -87,6 +87,6 @@ repos:
|
||||
|
||||
# Check for FSFE REUSE compliance (licensing)
|
||||
- repo: https://github.com/fsfe/reuse-tool
|
||||
rev: v2.1.0
|
||||
rev: v3.0.2
|
||||
hooks:
|
||||
- id: reuse
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
16
.reuse/dep5
16
.reuse/dep5
@ -4,33 +4,33 @@ Upstream-Contact: Tom Brown <t.brown@tu-berlin.de>
|
||||
Source: https://github.com/pypsa/pypsa-eur
|
||||
|
||||
Files: doc/img/*
|
||||
Copyright: 2019-2023 The PyPSA-Eur Authors
|
||||
Copyright: 2019-2024 The PyPSA-Eur Authors
|
||||
License: CC-BY-4.0
|
||||
|
||||
Files: doc/data.csv
|
||||
Copyright: 2019-2023 The PyPSA-Eur Authors
|
||||
Copyright: 2019-2024 The PyPSA-Eur Authors
|
||||
License: CC-BY-4.0
|
||||
|
||||
Files: doc/configtables/*
|
||||
Copyright: 2019-2023 The PyPSA-Eur Authors
|
||||
Copyright: 2019-2024 The PyPSA-Eur Authors
|
||||
License: CC-BY-4.0
|
||||
|
||||
Files: data/*
|
||||
Copyright: 2017-2023 The PyPSA-Eur Authors
|
||||
Copyright: 2017-2024 The PyPSA-Eur Authors
|
||||
License: CC-BY-4.0
|
||||
|
||||
Files: .github/*
|
||||
Copyright: 2019-2023 The PyPSA-Eur Authors
|
||||
Copyright: 2019-2024 The PyPSA-Eur Authors
|
||||
License: CC0-1.0
|
||||
|
||||
Files: matplotlibrc
|
||||
Copyright: 2017-2023 The PyPSA-Eur Authors
|
||||
Copyright: 2017-2024 The PyPSA-Eur Authors
|
||||
License: CC0-1.0
|
||||
|
||||
Files: borg-it
|
||||
Copyright: 2017-2023 The PyPSA-Eur Authors
|
||||
Copyright: 2017-2024 The PyPSA-Eur Authors
|
||||
License: CC0-1.0
|
||||
|
||||
Files: graphics/*
|
||||
Copyright: 2017-2023 The PyPSA-Eur Authors
|
||||
Copyright: 2017-2024 The PyPSA-Eur Authors
|
||||
License: CC-BY-4.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2021-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2021-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
@ -6,7 +6,7 @@ cff-version: 1.1.0
|
||||
message: "If you use this package, please cite it in the following way."
|
||||
title: "PyPSA-Eur: An open sector-coupled optimisation model of the European energy system"
|
||||
repository: https://github.com/pypsa/pypsa-eur
|
||||
version: 0.9.0
|
||||
version: 0.10.0
|
||||
license: MIT
|
||||
authors:
|
||||
- family-names: Brown
|
||||
|
@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright 2017-2023 The PyPSA-Eur Authors
|
||||
Copyright 2017-2024 The PyPSA-Eur Authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2017-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2017-2024 The PyPSA-Eur Authors
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
-->
|
||||
|
||||
|
57
Snakefile
57
Snakefile
@ -1,36 +1,34 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
from pathlib import Path
|
||||
import yaml
|
||||
from os.path import normpath, exists
|
||||
from shutil import copyfile, move, rmtree
|
||||
|
||||
from snakemake.remote.HTTP import RemoteProvider as HTTPRemoteProvider
|
||||
|
||||
HTTP = HTTPRemoteProvider()
|
||||
|
||||
from snakemake.utils import min_version
|
||||
|
||||
min_version("7.7")
|
||||
min_version("8.11")
|
||||
|
||||
from scripts._helpers import path_provider, copy_default_files, get_scenarios, get_rdir
|
||||
|
||||
|
||||
if not exists("config/config.yaml") and exists("config/config.default.yaml"):
|
||||
copyfile("config/config.default.yaml", "config/config.yaml")
|
||||
copy_default_files(workflow)
|
||||
|
||||
|
||||
configfile: "config/config.default.yaml"
|
||||
configfile: "config/config.yaml"
|
||||
|
||||
|
||||
COSTS = f"data/costs_{config['costs']['year']}.csv"
|
||||
ATLITE_NPROCESSES = config["atlite"].get("nprocesses", 4)
|
||||
run = config["run"]
|
||||
scenarios = get_scenarios(run)
|
||||
RDIR = get_rdir(run)
|
||||
|
||||
run = config.get("run", {})
|
||||
RDIR = run["name"] + "/" if run.get("name") else ""
|
||||
CDIR = RDIR if not run.get("shared_cutouts") else ""
|
||||
logs = path_provider("logs/", RDIR, run["shared_resources"])
|
||||
benchmarks = path_provider("benchmarks/", RDIR, run["shared_resources"])
|
||||
resources = path_provider("resources/", RDIR, run["shared_resources"])
|
||||
|
||||
LOGS = "logs/" + RDIR
|
||||
BENCHMARKS = "benchmarks/" + RDIR
|
||||
RESOURCES = "resources/" + RDIR if not run.get("shared_resources") else "resources/"
|
||||
CDIR = "" if run["shared_cutouts"] else RDIR
|
||||
RESULTS = "results/" + RDIR
|
||||
|
||||
|
||||
@ -41,9 +39,9 @@ localrules:
|
||||
wildcard_constraints:
|
||||
simpl="[a-zA-Z0-9]*",
|
||||
clusters="[0-9]+(m|c)?|all",
|
||||
ll="(v|c)([0-9\.]+|opt)",
|
||||
opts="[-+a-zA-Z0-9\.]*",
|
||||
sector_opts="[-+a-zA-Z0-9\.\s]*",
|
||||
ll=r"(v|c)([0-9\.]+|opt)",
|
||||
opts=r"[-+a-zA-Z0-9\.]*",
|
||||
sector_opts=r"[-+a-zA-Z0-9\.\s]*",
|
||||
|
||||
|
||||
include: "rules/common.smk"
|
||||
@ -73,10 +71,19 @@ if config["foresight"] == "perfect":
|
||||
|
||||
rule all:
|
||||
input:
|
||||
RESULTS + "graphs/costs.pdf",
|
||||
expand(RESULTS + "graphs/costs.pdf", run=config["run"]["name"]),
|
||||
default_target: True
|
||||
|
||||
|
||||
rule create_scenarios:
|
||||
output:
|
||||
config["run"]["scenarios"]["file"],
|
||||
conda:
|
||||
"envs/retrieve.yaml"
|
||||
script:
|
||||
"config/create_scenarios.py"
|
||||
|
||||
|
||||
rule purge:
|
||||
run:
|
||||
import builtins
|
||||
@ -97,13 +104,13 @@ rule dag:
|
||||
message:
|
||||
"Creating DAG of workflow."
|
||||
output:
|
||||
dot=RESOURCES + "dag.dot",
|
||||
pdf=RESOURCES + "dag.pdf",
|
||||
png=RESOURCES + "dag.png",
|
||||
dot=resources("dag.dot"),
|
||||
pdf=resources("dag.pdf"),
|
||||
png=resources("dag.png"),
|
||||
conda:
|
||||
"envs/environment.yaml"
|
||||
shell:
|
||||
"""
|
||||
r"""
|
||||
snakemake --rulegraph all | sed -n "/digraph/,\$p" > {output.dot}
|
||||
dot -Tpdf -o {output.pdf} {output.dot}
|
||||
dot -Tpng -o {output.png} {output.dot}
|
||||
|
@ -1,9 +1,9 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#top-level-configuration
|
||||
version: 0.9.0
|
||||
version: 0.10.0
|
||||
tutorial: false
|
||||
|
||||
logging:
|
||||
@ -20,7 +20,11 @@ remote:
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#run
|
||||
run:
|
||||
prefix: ""
|
||||
name: ""
|
||||
scenarios:
|
||||
enable: false
|
||||
file: config/scenarios.yaml
|
||||
disable_progressbar: false
|
||||
shared_resources: false
|
||||
shared_cutouts: true
|
||||
@ -44,7 +48,7 @@ scenario:
|
||||
opts:
|
||||
- ''
|
||||
sector_opts:
|
||||
- Co2L0-3H-T-H-B-I-A-solar+p3-dist1
|
||||
- Co2L0-3H-T-H-B-I-A-dist1
|
||||
planning_horizons:
|
||||
# - 2020
|
||||
# - 2030
|
||||
@ -59,9 +63,6 @@ snapshots:
|
||||
start: "2013-01-01"
|
||||
end: "2014-01-01"
|
||||
inclusive: 'left'
|
||||
resolution: false
|
||||
segmentation: false
|
||||
#representative: false
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#enable
|
||||
enable:
|
||||
@ -71,11 +72,11 @@ enable:
|
||||
retrieve_sector_databundle: true
|
||||
retrieve_cost_data: true
|
||||
build_cutout: false
|
||||
retrieve_irena: false
|
||||
retrieve_cutout: true
|
||||
build_natura_raster: false
|
||||
retrieve_natura_raster: true
|
||||
custom_busmap: false
|
||||
drop_leap_day: true
|
||||
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#co2-budget
|
||||
@ -114,7 +115,7 @@ electricity:
|
||||
Store: [battery, H2]
|
||||
Link: [] # H2 pipeline
|
||||
|
||||
powerplants_filter: (DateOut >= 2022 or DateOut != DateOut)
|
||||
powerplants_filter: (DateOut >= 2023 or DateOut != DateOut) and not (Country == 'Germany' and Fueltype == 'Nuclear')
|
||||
custom_powerplants: false
|
||||
everywhere_powerplants: [nuclear, oil, OCGT, CCGT, coal, lignite, geothermal, biomass]
|
||||
|
||||
@ -257,6 +258,9 @@ renewable:
|
||||
flatten_dispatch: false
|
||||
flatten_dispatch_buffer: 0.2
|
||||
clip_min_inflow: 1.0
|
||||
eia_norm_year: false
|
||||
eia_correct_by_capacity: false
|
||||
eia_approximate_missing: false
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#conventional
|
||||
conventional:
|
||||
@ -302,11 +306,12 @@ transformers:
|
||||
|
||||
# docs-load in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#load
|
||||
load:
|
||||
power_statistics: true
|
||||
interpolate_limit: 3
|
||||
time_shift_for_large_gaps: 1w
|
||||
manual_adjustments: true # false
|
||||
scaling_factor: 1.0
|
||||
fixed_year: false # false or year (e.g. 2013)
|
||||
supplement_synthetic: true
|
||||
|
||||
# docs
|
||||
# TODO: PyPSA-Eur merge issue in prepare_sector_network.py
|
||||
@ -334,9 +339,8 @@ pypsa_eur:
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#energy
|
||||
energy:
|
||||
energy_totals_year: 2011
|
||||
energy_totals_year: 2019
|
||||
base_emissions_year: 1990
|
||||
eurostat_report_year: 2016
|
||||
emissions: CO2
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#biomass
|
||||
@ -371,12 +375,14 @@ solar_thermal:
|
||||
orientation:
|
||||
slope: 45.
|
||||
azimuth: 180.
|
||||
cutout: default
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#existing-capacities
|
||||
existing_capacities:
|
||||
grouping_years_power: [1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025, 2030]
|
||||
grouping_years_heat: [1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2019] # these should not extend 2020
|
||||
grouping_years_power: [1895, 1920, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025, 2030]
|
||||
grouping_years_heat: [1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020] # heat grouping years >= baseyear will be ignored
|
||||
threshold_capacity: 10
|
||||
default_heating_lifetime: 20
|
||||
conventional_carriers:
|
||||
- lignite
|
||||
- coal
|
||||
@ -385,6 +391,11 @@ existing_capacities:
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#sector
|
||||
sector:
|
||||
transport: true
|
||||
heating: true
|
||||
biomass: true
|
||||
industry: true
|
||||
agriculture: true
|
||||
district_heating:
|
||||
potential: 0.6
|
||||
progress:
|
||||
@ -396,7 +407,8 @@ sector:
|
||||
2045: 0.8
|
||||
2050: 1.0
|
||||
district_heating_loss: 0.15
|
||||
cluster_heat_buses: false
|
||||
cluster_heat_buses: true
|
||||
heat_demand_cutout: default
|
||||
bev_dsm_restriction_value: 0.75
|
||||
bev_dsm_restriction_time: 7
|
||||
transport_heating_deadband_upper: 20.
|
||||
@ -502,6 +514,7 @@ sector:
|
||||
resistive_heaters: true
|
||||
oil_boilers: false
|
||||
biomass_boiler: true
|
||||
overdimension_individual_heating: 1.1 #to cover demand peaks bigger than data
|
||||
chp: true
|
||||
micro_chp: false
|
||||
solar_thermal: true
|
||||
@ -519,9 +532,14 @@ sector:
|
||||
SMR_cc: true
|
||||
regional_methanol_demand: false
|
||||
regional_oil_demand: false
|
||||
regional_coal_demand: false
|
||||
regional_co2_sequestration_potential:
|
||||
enable: false
|
||||
attribute: 'conservative estimate Mt'
|
||||
attribute:
|
||||
- conservative estimate Mt
|
||||
- conservative estimate GAS Mt
|
||||
- conservative estimate OIL Mt
|
||||
- conservative estimate aquifer Mt
|
||||
include_onshore: false
|
||||
min_size: 3
|
||||
max_size: 25
|
||||
@ -548,6 +566,7 @@ sector:
|
||||
use_methanation_waste_heat: true
|
||||
use_fuel_cell_waste_heat: true
|
||||
use_electrolysis_waste_heat: true
|
||||
electricity_transmission_grid: true
|
||||
electricity_distribution_grid: true
|
||||
electricity_distribution_grid_cost_factor: 1.0
|
||||
electricity_grid_connection: true
|
||||
@ -556,8 +575,8 @@ sector:
|
||||
efficiency_static: 0.98
|
||||
efficiency_per_1000km: 0.977
|
||||
H2 pipeline:
|
||||
efficiency_per_1000km: 1 # 0.979
|
||||
compression_per_1000km: 0.019
|
||||
efficiency_per_1000km: 1 # 0.982
|
||||
compression_per_1000km: 0.018
|
||||
gas pipeline:
|
||||
efficiency_per_1000km: 1 #0.977
|
||||
compression_per_1000km: 0.01
|
||||
@ -626,9 +645,43 @@ industry:
|
||||
MWh_NH3_per_MWh_H2_cracker: 1.46 # https://github.com/euronion/trace/blob/44a5ff8401762edbef80eff9cfe5a47c8d3c8be4/data/efficiencies.csv
|
||||
NH3_process_emissions: 24.5
|
||||
petrochemical_process_emissions: 25.5
|
||||
HVC_primary_fraction: 1.
|
||||
HVC_mechanical_recycling_fraction: 0.
|
||||
HVC_chemical_recycling_fraction: 0.
|
||||
#HVC primary/recycling based on values used in Neumann et al https://doi.org/10.1016/j.joule.2023.06.016, linearly interpolated between 2020 and 2050
|
||||
#2020 recycling rates based on Agora https://static.agora-energiewende.de/fileadmin/Projekte/2021/2021_02_EU_CEAP/A-EW_254_Mobilising-circular-economy_study_WEB.pdf
|
||||
#fractions refer to the total primary HVC production in 2020
|
||||
#assumes 6.7 Mtplastics produced from recycling in 2020
|
||||
HVC_primary_fraction:
|
||||
2020: 1.0
|
||||
2025: 0.9
|
||||
2030: 0.8
|
||||
2035: 0.7
|
||||
2040: 0.6
|
||||
2045: 0.5
|
||||
2050: 0.4
|
||||
HVC_mechanical_recycling_fraction:
|
||||
2020: 0.12
|
||||
2025: 0.15
|
||||
2030: 0.18
|
||||
2035: 0.21
|
||||
2040: 0.24
|
||||
2045: 0.27
|
||||
2050: 0.30
|
||||
HVC_chemical_recycling_fraction:
|
||||
2020: 0.0
|
||||
2025: 0.0
|
||||
2030: 0.04
|
||||
2035: 0.08
|
||||
2040: 0.12
|
||||
2045: 0.16
|
||||
2050: 0.20
|
||||
sector_ratios_fraction_future:
|
||||
2020: 0.0
|
||||
2025: 0.1
|
||||
2030: 0.3
|
||||
2035: 0.5
|
||||
2040: 0.7
|
||||
2045: 0.9
|
||||
2050: 1.0
|
||||
basic_chemicals_without_NH3_production_today: 69. #Mt/a, = 86 Mtethylene-equiv - 17 MtNH3
|
||||
HVC_production_today: 52.
|
||||
MWh_elec_per_tHVC_mechanical_recycling: 0.547
|
||||
MWh_elec_per_tHVC_chemical_recycling: 6.9
|
||||
@ -645,7 +698,7 @@ industry:
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#costs
|
||||
costs:
|
||||
year: 2030
|
||||
version: 1e6e79a
|
||||
version: v0.8.1
|
||||
rooftop_share: 0.14 # based on the potentials, assuming (0.1 kW/m2 and 10 m2/person)
|
||||
social_discountrate: 0.02
|
||||
fill_values:
|
||||
@ -695,6 +748,14 @@ clustering:
|
||||
committable: any
|
||||
ramp_limit_up: max
|
||||
ramp_limit_down: max
|
||||
temporal:
|
||||
resolution_elec: false
|
||||
resolution_sector: false
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#adjustments
|
||||
adjustments:
|
||||
electricity: false
|
||||
sector: false
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#solving
|
||||
solving:
|
||||
@ -707,6 +768,7 @@ solving:
|
||||
rolling_horizon: false
|
||||
seed: 123
|
||||
custom_extra_functionality: "../data/custom_extra_functionality.py"
|
||||
# io_api: "direct" # Increases performance but only supported for the highs and gurobi solvers
|
||||
# options that go into the optimize function
|
||||
track_iterations: false
|
||||
min_iterations: 4
|
||||
@ -727,7 +789,7 @@ solving:
|
||||
|
||||
solver_options:
|
||||
highs-default:
|
||||
# refer to https://ergo-code.github.io/HiGHS/options/definitions.html#solver
|
||||
# refer to https://ergo-code.github.io/HiGHS/dev/options/definitions/
|
||||
threads: 4
|
||||
solver: "ipm"
|
||||
run_crossover: "off"
|
||||
@ -748,7 +810,6 @@ solving:
|
||||
PreDual: 0
|
||||
GURO_PAR_BARDENSETHRESH: 200
|
||||
gurobi-numeric-focus:
|
||||
name: gurobi
|
||||
NumericFocus: 3 # Favour numeric stability over speed
|
||||
method: 2 # barrier
|
||||
crossover: 0 # do not use crossover
|
||||
@ -760,7 +821,6 @@ solving:
|
||||
threads: 8
|
||||
Seed: 123
|
||||
gurobi-fallback: # Use gurobi defaults
|
||||
name: gurobi
|
||||
crossover: 0
|
||||
method: 2 # barrier
|
||||
BarHomogeneous: 1 # Use homogeneous barrier if standard does not converge
|
||||
@ -775,11 +835,16 @@ solving:
|
||||
solutiontype: 2 # non basic solution, ie no crossover
|
||||
barrier.convergetol: 1.e-5
|
||||
feasopt.tolerance: 1.e-6
|
||||
copt-default:
|
||||
Threads: 8
|
||||
LpMethod: 2
|
||||
Crossover: 0
|
||||
cbc-default: {} # Used in CI
|
||||
glpk-default: {} # Used in CI
|
||||
|
||||
mem: 30000 #memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2
|
||||
walltime: "12:00:00"
|
||||
mem_mb: 30000 #memory in MB; 20 GB enough for 50+B+I+H2; 100 GB for 181+B+I+H2
|
||||
runtime: 6h #runtime in humanfriendly style https://humanfriendly.readthedocs.io/en/latest/
|
||||
|
||||
|
||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#plotting
|
||||
plotting:
|
||||
@ -788,6 +853,13 @@ plotting:
|
||||
color_geomap:
|
||||
ocean: white
|
||||
land: white
|
||||
projection:
|
||||
name: "EqualEarth"
|
||||
# See https://scitools.org.uk/cartopy/docs/latest/reference/projections.html for alternatives, for example:
|
||||
# name: "LambertConformal"
|
||||
# central_longitude: 10.
|
||||
# central_latitude: 50.
|
||||
# standard_parallels: [35, 65]
|
||||
eu_node_location:
|
||||
x: -5.5
|
||||
y: 46.
|
||||
@ -828,7 +900,7 @@ plotting:
|
||||
offshore wind (DC): "#74c6f2"
|
||||
offshore wind dc: "#74c6f2"
|
||||
offwind-float: "#b5e2fa"
|
||||
offshore wind (float): "#b5e2fa"
|
||||
offshore wind (Float): "#b5e2fa"
|
||||
offshore wind float: "#b5e2fa"
|
||||
# water
|
||||
hydro: '#298c81'
|
||||
@ -838,7 +910,6 @@ plotting:
|
||||
hydroelectricity: '#298c81'
|
||||
PHS: '#51dbcc'
|
||||
hydro+PHS: "#08ad97"
|
||||
wave: '#a7d4cf'
|
||||
# solar
|
||||
solar: "#f9d002"
|
||||
solar PV: "#f9d002"
|
||||
@ -987,9 +1058,11 @@ plotting:
|
||||
air heat pump: '#36eb41'
|
||||
residential urban decentral air heat pump: '#48f74f'
|
||||
services urban decentral air heat pump: '#5af95d'
|
||||
services rural air heat pump: '#5af95d'
|
||||
urban central air heat pump: '#6cfb6b'
|
||||
ground heat pump: '#2fb537'
|
||||
residential rural ground heat pump: '#48f74f'
|
||||
residential rural air heat pump: '#48f74f'
|
||||
services rural ground heat pump: '#5af95d'
|
||||
Ambient: '#98eb9d'
|
||||
CHP: '#8a5751'
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
run:
|
||||
@ -19,13 +19,16 @@ scenario:
|
||||
opts:
|
||||
- ''
|
||||
sector_opts:
|
||||
- 1p5-4380H-T-H-B-I-A-solar+p3-dist1
|
||||
- 1p7-4380H-T-H-B-I-A-solar+p3-dist1
|
||||
- 2p0-4380H-T-H-B-I-A-solar+p3-dist1
|
||||
- 1p5-4380H-T-H-B-I-A-dist1
|
||||
- 1p7-4380H-T-H-B-I-A-dist1
|
||||
- 2p0-4380H-T-H-B-I-A-dist1
|
||||
planning_horizons:
|
||||
- 2020
|
||||
- 2025
|
||||
- 2030
|
||||
- 2035
|
||||
- 2040
|
||||
- 2045
|
||||
- 2050
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
run:
|
||||
@ -69,9 +69,6 @@ conventional:
|
||||
biomass:
|
||||
p_max_pu: 0.65
|
||||
|
||||
load:
|
||||
power_statistics: false
|
||||
|
||||
lines:
|
||||
s_max_pu: 0.23
|
||||
under_construction: 'remove'
|
||||
|
37
config/create_scenarios.py
Normal file
37
config/create_scenarios.py
Normal file
@ -0,0 +1,37 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# SPDX-FileCopyrightText: : 2023-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
# This script helps to generate a scenarios.yaml file for PyPSA-Eur.
|
||||
# You can modify the template to your needs and define all possible combinations of config values that should be considered.
|
||||
|
||||
if "snakemake" in globals():
|
||||
filename = snakemake.output[0]
|
||||
else:
|
||||
filename = "../config/scenarios.yaml"
|
||||
|
||||
import itertools
|
||||
|
||||
# Insert your config values that should be altered in the template.
|
||||
# Change `config_section` and `config_section2` to the actual config sections.
|
||||
template = """
|
||||
scenario{scenario_number}:
|
||||
config_section:
|
||||
config_key: {config_value}
|
||||
config_section2:
|
||||
config_key2: {config_value2}
|
||||
"""
|
||||
|
||||
# Define all possible combinations of config values.
|
||||
# This must define all config values that are used in the template.
|
||||
config_values = dict(config_value=["true", "false"], config_value2=[1, 2, 3, 4])
|
||||
|
||||
combinations = [
|
||||
dict(zip(config_values.keys(), values))
|
||||
for values in itertools.product(*config_values.values())
|
||||
]
|
||||
|
||||
with open(filename, "w") as f:
|
||||
for i, config in enumerate(combinations):
|
||||
f.write(template.format(scenario_number=i, **config))
|
28
config/scenarios.template.yaml
Normal file
28
config/scenarios.template.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
# This file is used to define the scenarios that are run by snakemake. Each entry on the first level is a scenario. Each scenario can contain configuration overrides with respect to the config/config.yaml settings.
|
||||
#
|
||||
# Example
|
||||
#
|
||||
# custom-scenario: # name of the scenario
|
||||
# electricity:
|
||||
# renewable_carriers: [wind, solar] # override the list of renewable carriers
|
||||
|
||||
normal:
|
||||
electricity:
|
||||
renewable_carriers:
|
||||
- solar
|
||||
- onwind
|
||||
- offwind-ac
|
||||
- offwind-dc
|
||||
- hydro
|
||||
|
||||
no-offwind:
|
||||
electricity:
|
||||
renewable_carriers:
|
||||
- solar
|
||||
- onwind
|
||||
- hydro
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
@ -8,14 +8,14 @@ tutorial: true
|
||||
run:
|
||||
name: "test-elec" # use this to keep track of runs with different settings
|
||||
disable_progressbar: true
|
||||
shared_resources: true
|
||||
shared_resources: "test"
|
||||
shared_cutouts: true
|
||||
|
||||
scenario:
|
||||
clusters:
|
||||
- 5
|
||||
opts:
|
||||
- Co2L-24H
|
||||
- Co2L-24h
|
||||
|
||||
countries: ['BE']
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
@ -7,7 +7,7 @@ tutorial: true
|
||||
run:
|
||||
name: "test-sector-myopic"
|
||||
disable_progressbar: true
|
||||
shared_resources: true
|
||||
shared_resources: "test"
|
||||
shared_cutouts: true
|
||||
|
||||
foresight: myopic
|
||||
@ -18,7 +18,7 @@ scenario:
|
||||
clusters:
|
||||
- 5
|
||||
sector_opts:
|
||||
- 24H-T-H-B-I-A-solar+p3-dist1
|
||||
- 24h-T-H-B-I-A-dist1
|
||||
planning_horizons:
|
||||
- 2030
|
||||
- 2040
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
@ -7,7 +7,7 @@ tutorial: true
|
||||
run:
|
||||
name: "test-sector-overnight"
|
||||
disable_progressbar: true
|
||||
shared_resources: true
|
||||
shared_resources: "test"
|
||||
shared_cutouts: true
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ scenario:
|
||||
clusters:
|
||||
- 5
|
||||
sector_opts:
|
||||
- CO2L0-24H-T-H-B-I-A-solar+p3-dist1
|
||||
- CO2L0-24h-T-H-B-I-A-dist1
|
||||
planning_horizons:
|
||||
- 2030
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
@ -7,7 +7,7 @@ tutorial: true
|
||||
run:
|
||||
name: "test-sector-perfect"
|
||||
disable_progressbar: true
|
||||
shared_resources: true
|
||||
shared_resources: "test"
|
||||
shared_cutouts: true
|
||||
|
||||
foresight: perfect
|
||||
@ -18,7 +18,7 @@ scenario:
|
||||
clusters:
|
||||
- 5
|
||||
sector_opts:
|
||||
- 8760H-T-H-B-I-A-solar+p3-dist1
|
||||
- 8760h-T-H-B-I-A-dist1
|
||||
planning_horizons:
|
||||
- 2030
|
||||
- 2040
|
||||
|
60
config/test/config.scenarios.yaml
Normal file
60
config/test/config.scenarios.yaml
Normal file
@ -0,0 +1,60 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
tutorial: true
|
||||
|
||||
run:
|
||||
name:
|
||||
- test-elec-no-offshore-wind
|
||||
- test-elec-no-onshore-wind
|
||||
scenarios:
|
||||
enable: true
|
||||
file: "config/test/scenarios.yaml"
|
||||
disable_progressbar: true
|
||||
shared_resources: base
|
||||
shared_cutouts: true
|
||||
|
||||
scenario:
|
||||
clusters:
|
||||
- 5
|
||||
opts:
|
||||
- Co2L-24H
|
||||
|
||||
countries: ['BE']
|
||||
|
||||
snapshots:
|
||||
start: "2013-03-01"
|
||||
end: "2013-03-08"
|
||||
|
||||
electricity:
|
||||
extendable_carriers:
|
||||
Generator: [OCGT]
|
||||
StorageUnit: [battery, H2]
|
||||
Store: []
|
||||
|
||||
atlite:
|
||||
default_cutout: be-03-2013-era5
|
||||
cutouts:
|
||||
be-03-2013-era5:
|
||||
module: era5
|
||||
x: [4., 15.]
|
||||
y: [46., 56.]
|
||||
time: ["2013-03-01", "2013-03-08"]
|
||||
|
||||
renewable:
|
||||
onwind:
|
||||
cutout: be-03-2013-era5
|
||||
offwind-ac:
|
||||
cutout: be-03-2013-era5
|
||||
max_depth: false
|
||||
offwind-dc:
|
||||
cutout: be-03-2013-era5
|
||||
max_depth: false
|
||||
solar:
|
||||
cutout: be-03-2013-era5
|
||||
|
||||
solving:
|
||||
solver:
|
||||
name: glpk
|
||||
options: "glpk-default"
|
11
config/test/scenarios.yaml
Normal file
11
config/test/scenarios.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
test-elec-no-offshore-wind:
|
||||
electricity:
|
||||
renewable_carriers: [solar, onwind]
|
||||
|
||||
test-elec-no-onshore-wind:
|
||||
electricity:
|
||||
renewable_carriers: [solar, offwind-ac, offwind-dc]
|
@ -2,36 +2,36 @@
|
||||
1266,Khmelnitskiy,Nuclear,,PP,UA,1901.8916595755832,,0.0,0.0,0.0,0.0,1988.0,2005.0,,,50.3023,26.6466,[nan],"{'GEO': ['GEO3842'], 'GPD': ['WRI1005111'], 'CARMA': ['CARMA22000']}"
|
||||
1268,Kaniv,Hydro,Reservoir,PP,UA,452.1656050955414,,0.0,0.0,0.0,0.0,1972.0,2003.0,,,49.76653,31.47165,[nan],"{'GEO': ['GEO43017'], 'GPD': ['WRI1005122'], 'CARMA': ['CARMA21140']}"
|
||||
1269,Kahovska kakhovka,Hydro,Reservoir,PP,UA,352.45222929936307,,0.0,0.0,0.0,0.0,1955.0,1956.0,,,46.77858,33.36965,[nan],"{'GEO': ['GEO43018'], 'GPD': ['WRI1005118'], 'CARMA': ['CARMA20855']}"
|
||||
1347,Kharkiv,Natural Gas,Steam Turbine,CHP,UA,494.94274967602314,,0.0,0.0,0.0,0.0,1979.0,1980.0,,,49.9719,36107,[nan],"{'GEO': ['GEO43027'], 'GPD': ['WRI1005126'], 'CARMA': ['CARMA21972']}"
|
||||
1347,Kharkiv,Natural Gas,Steam Turbine,CHP,UA,494.94274967602314,,0.0,0.0,0.0,0.0,1979.0,1980.0,,,49.9719,36.107,[nan],"{'GEO': ['GEO43027'], 'GPD': ['WRI1005126'], 'CARMA': ['CARMA21972']}"
|
||||
1348,Kremenchuk,Hydro,Reservoir,PP,UA,617.0382165605096,,0.0,0.0,0.0,0.0,1959.0,1960.0,,,49.07759,33.2505,[nan],"{'GEO': ['GEO43019'], 'GPD': ['WRI1005121'], 'CARMA': ['CARMA23072']}"
|
||||
1377,Krivorozhskaya,Hard Coal,Steam Turbine,PP,UA,2600.0164509342876,,0.0,0.0,0.0,0.0,1965.0,1992.0,,,47.5432,33.6583,[nan],"{'GEO': ['GEO42989'], 'GPD': ['WRI1005100'], 'CARMA': ['CARMA23176']}"
|
||||
1407,Zmiyevskaya zmiivskaya,Hard Coal,Steam Turbine,PP,UA,2028.3816283884514,,0.0,0.0,0.0,0.0,1960.0,2005.0,,,49.5852,36.5231,[nan],"{'GEO': ['GEO42999'], 'GPD': ['WRI1005103'], 'CARMA': ['CARMA51042']}"
|
||||
1408,Pridneprovskaya,Hard Coal,Steam Turbine,CHP,UA,1627.3152609570984,,0.0,0.0,0.0,0.0,1959.0,1966.0,,,48.4051,35.1131,[nan],"{'GEO': ['GEO42990'], 'GPD': ['WRI1005102'], 'CARMA': ['CARMA35874']}"
|
||||
1409,Kurakhovskaya,Hard Coal,Steam Turbine,PP,UA,1371.0015824607397,,0.0,0.0,0.0,0.0,1972.0,2003.0,,,47.9944,37.24022,[nan],"{'GEO': ['GEO42994'], 'GPD': ['WRI1005104'], 'CARMA': ['CARMA23339']}"
|
||||
1410,Dobrotvorsky,Hard Coal,Steam Turbine,PP,UA,553.1949895604868,,0.0,0.0,0.0,0.0,1960.0,1964.0,,,50.2133,24375,[nan],"{'GEO': ['GEO42992'], 'GPD': ['WRI1005096'], 'CARMA': ['CARMA10971']}"
|
||||
1410,Dobrotvorsky,Hard Coal,Steam Turbine,PP,UA,553.1949895604868,,0.0,0.0,0.0,0.0,1960.0,1964.0,,,50.2133,24.375,[nan],"{'GEO': ['GEO42992'], 'GPD': ['WRI1005096'], 'CARMA': ['CARMA10971']}"
|
||||
1422,Zuyevskaya,Hard Coal,Steam Turbine,PP,UA,1147.87960333801,,0.0,0.0,0.0,0.0,1982.0,2007.0,,,48.0331,38.28615,[nan],"{'GEO': ['GEO42995'], 'GPD': ['WRI1005106'], 'CARMA': ['CARMA51083']}"
|
||||
1423,Zaporozhye,Nuclear,,PP,UA,5705.67497872675,,0.0,0.0,0.0,0.0,1985.0,1996.0,,,47.5119,34.5863,[nan],"{'GEO': ['GEO6207'], 'GPD': ['WRI1005114'], 'CARMA': ['CARMA50875']}"
|
||||
1424,Trypilska,Hard Coal,Steam Turbine,PP,UA,1659.5849686814602,,0.0,0.0,0.0,0.0,1969.0,1972.0,,,50.1344,30.7468,[nan],"{'GEO': ['GEO43000'], 'GPD': ['WRI1005099'], 'CARMA': ['CARMA46410']}"
|
||||
1425,Tashlyk,Hydro,Pumped Storage,Store,UA,285.55968954109585,,0.0,0.0,0.0,0.0,2006.0,2007.0,,,47.7968,31.1811,[nan],"{'GEO': ['GEO43025'], 'GPD': ['WRI1005117'], 'CARMA': ['CARMA44696']}"
|
||||
1426,Starobeshivska,Hard Coal,Steam Turbine,PP,UA,1636.5351774497733,,0.0,0.0,0.0,0.0,1961.0,1967.0,,,47.7997,38.00612,[nan],"{'GEO': ['GEO43003'], 'GPD': ['WRI1005105'], 'CARMA': ['CARMA43083']}"
|
||||
1427,South,Nuclear,,PP,UA,2852.837489363375,,0.0,0.0,0.0,0.0,1983.0,1989.0,,,47812,31.22,[nan],"{'GEO': ['GEO5475'], 'GPD': ['WRI1005113'], 'CARMA': ['CARMA42555']}"
|
||||
1427,South,Nuclear,,PP,UA,2852.837489363375,,0.0,0.0,0.0,0.0,1983.0,1989.0,,,47.812,31.22,[nan],"{'GEO': ['GEO5475'], 'GPD': ['WRI1005113'], 'CARMA': ['CARMA42555']}"
|
||||
1428,Rovno rivne,Nuclear,,PP,UA,2695.931427448389,,0.0,0.0,0.0,0.0,1981.0,2006.0,,,51.3245,25.89744,[nan],"{'GEO': ['GEO5174'], 'GPD': ['WRI1005112'], 'CARMA': ['CARMA38114']}"
|
||||
1429,Ladyzhinska,Hard Coal,Steam Turbine,PP,UA,1659.5849686814602,,0.0,0.0,0.0,0.0,1970.0,1971.0,,,48706,29.2202,[nan],"{'GEO': ['GEO42993'], 'GPD': ['WRI1005098'], 'CARMA': ['CARMA24024']}"
|
||||
1430,Kiev,Hydro,Pumped Storage,PP,UA,635.8694635681177,,0.0,0.0,0.0,0.0,1964.0,1972.0,,,50.5998,30501,"[nan, nan]","{'GEO': ['GEO43024', 'GEO43023'], 'GPD': ['WRI1005123', 'WRI1005124'], 'CARMA': ['CARMA23516', 'CARMA23517']}"
|
||||
1429,Ladyzhinska,Hard Coal,Steam Turbine,PP,UA,1659.5849686814602,,0.0,0.0,0.0,0.0,1970.0,1971.0,,,48.706,29.2202,[nan],"{'GEO': ['GEO42993'], 'GPD': ['WRI1005098'], 'CARMA': ['CARMA24024']}"
|
||||
1430,Kiev,Hydro,Pumped Storage,PP,UA,635.8694635681177,,0.0,0.0,0.0,0.0,1964.0,1972.0,,,50.5998,30.501,"[nan, nan]","{'GEO': ['GEO43024', 'GEO43023'], 'GPD': ['WRI1005123', 'WRI1005124'], 'CARMA': ['CARMA23516', 'CARMA23517']}"
|
||||
2450,Cet chisinau,Natural Gas,,PP,MD,306.0,,0.0,0.0,0.0,0.0,,,,,47.027550000000005,28.8801,"[nan, nan]","{'GPD': ['WRI1002985', 'WRI1002984'], 'CARMA': ['CARMA8450', 'CARMA8451']}"
|
||||
2460,Hydropower che costesti,Hydro,,PP,MD,16.0,,0.0,0.0,0.0,0.0,1978.0,,,,47.8381,27.2246,[nan],"{'GPD': ['WRI1002987'], 'CARMA': ['CARMA9496']}"
|
||||
2465,Moldavskaya gres,Hard Coal,,PP,MD,2520.0,,0.0,0.0,0.0,0.0,,,,,46.6292,29.9407,[nan],"{'GPD': ['WRI1002989'], 'CARMA': ['CARMA28979']}"
|
||||
2466,Hydropower dubasari,Hydro,,PP,MD,48.0,,0.0,0.0,0.0,0.0,,,,,47.2778,29123,[nan],"{'GPD': ['WRI1002988'], 'CARMA': ['CARMA11384']}"
|
||||
2466,Hydropower dubasari,Hydro,,PP,MD,48.0,,0.0,0.0,0.0,0.0,,,,,47.2778,29.123,[nan],"{'GPD': ['WRI1002988'], 'CARMA': ['CARMA11384']}"
|
||||
2676,Cet nord balti,Natural Gas,,PP,MD,24.0,,0.0,0.0,0.0,0.0,,,,,47.7492,27.8938,[nan],"{'GPD': ['WRI1002986'], 'CARMA': ['CARMA3071']}"
|
||||
2699,Dniprodzerzhynsk,Hydro,Reservoir,PP,UA,360.3503184713376,,0.0,0.0,0.0,0.0,1963.0,1964.0,,,48.5485,34.541015,[nan],"{'GEO': ['GEO43020'], 'GPD': ['WRI1005119']}"
|
||||
2707,Burshtynska tes,Hard Coal,Steam Turbine,PP,UA,2212.779958241947,,0.0,0.0,0.0,0.0,1965.0,1984.0,,,49.21038,24.66654,[nan],"{'GEO': ['GEO42991'], 'GPD': ['WRI1005097']}"
|
||||
2708,Danipro dnieper,Hydro,Reservoir,PP,UA,1484.8407643312103,,0.0,0.0,0.0,0.0,1932.0,1947.0,,,47.86944,35.08611,[nan],"{'GEO': ['GEO43016'], 'GPD': ['WRI1005120']}"
|
||||
2709,Dniester,Hydro,Pumped Storage,Store,UA,612.7241020616891,,0.0,0.0,0.0,0.0,2009.0,2011.0,,,48.51361,27.47333,[nan],"{'GEO': ['GEO43022'], 'GPD': ['WRI1005116', 'WRI1005115']}"
|
||||
2710,Kiev,Natural Gas,Steam Turbine,CHP,UA,458.2803237740955,,0.0,0.0,0.0,0.0,1982.0,1984.0,,,50532,30.6625,[nan],"{'GEO': ['GEO42998'], 'GPD': ['WRI1005125']}"
|
||||
2710,Kiev,Natural Gas,Steam Turbine,CHP,UA,458.2803237740955,,0.0,0.0,0.0,0.0,1982.0,1984.0,,,50.532,30.6625,[nan],"{'GEO': ['GEO42998'], 'GPD': ['WRI1005125']}"
|
||||
2712,Luganskaya,Hard Coal,Steam Turbine,PP,UA,1060.2903966575996,,0.0,0.0,0.0,0.0,1962.0,1969.0,,,48.74781,39.2624,[nan],"{'GEO': ['GEO42996'], 'GPD': ['WRI1005110']}"
|
||||
2713,Slavyanskaya,Hard Coal,Steam Turbine,PP,UA,737.5933194139823,,0.0,0.0,0.0,0.0,1971.0,1971.0,,,48872,37.76567,[nan],"{'GEO': ['GEO43002'], 'GPD': ['WRI1005109']}"
|
||||
2713,Slavyanskaya,Hard Coal,Steam Turbine,PP,UA,737.5933194139823,,0.0,0.0,0.0,0.0,1971.0,1971.0,,,48.872,37.76567,[nan],"{'GEO': ['GEO43002'], 'GPD': ['WRI1005109']}"
|
||||
2714,Vuhlehirska uglegorskaya,Hard Coal,Steam Turbine,PP,UA,3319.1699373629203,,0.0,0.0,0.0,0.0,1972.0,1977.0,,,48.4633,38.20328,[nan],"{'GEO': ['GEO43001'], 'GPD': ['WRI1005107']}"
|
||||
2715,Zaporiska,Hard Coal,Steam Turbine,PP,UA,3319.1699373629203,,0.0,0.0,0.0,0.0,1972.0,1977.0,,,47.5089,34.6253,[nan],"{'GEO': ['GEO42988'], 'GPD': ['WRI1005101']}"
|
||||
3678,Mironovskaya,Hard Coal,,PP,UA,815.0,,0.0,0.0,0.0,0.0,,,,,48.3407,38.4049,[nan],"{'GPD': ['WRI1005108'], 'CARMA': ['CARMA28679']}"
|
||||
3679,Kramatorskaya,Hard Coal,,PP,UA,120.0,,0.0,0.0,0.0,0.0,1974.0,,,,48.7477,37.5723,[nan],"{'GPD': ['WRI1075856'], 'CARMA': ['CARMA54560']}"
|
||||
3680,Chernihiv,Hard Coal,,PP,UA,200.0,,0.0,0.0,0.0,0.0,1968.0,,,,51455,31.2602,[nan],"{'GPD': ['WRI1075853'], 'CARMA': ['CARMA8190']}"
|
||||
3680,Chernihiv,Hard Coal,,PP,UA,200.0,,0.0,0.0,0.0,0.0,1968.0,,,,51.455,31.2602,[nan],"{'GPD': ['WRI1075853'], 'CARMA': ['CARMA8190']}"
|
||||
|
|
53
data/eia_hydro_annual_capacity.csv
Normal file
53
data/eia_hydro_annual_capacity.csv
Normal file
@ -0,0 +1,53 @@
|
||||
# https://www.eia.gov/international/data/world/electricity/electricity-generation?pd=2&p=00000000000000000000008&u=1&f=A&v=mapbubble&a=-&i=none&vo=value&t=R&g=000000000000002&l=73-1028i008017kg6368g80a4k000e0ag00gg0004g8g0ho00g000400008&l=72-00000000000000000000000000080000000000000000000g&s=315532800000&e=1609459200000&ev=false&
|
||||
Report generated on: 03-14-2024 13:39:49
|
||||
"API","","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021"
|
||||
"","hydroelectricity installed capacity (million kW)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
|
||||
"INTL.33-7-EURO-MK.A"," Europe","136.143","137.425","141.734","143.763","142.894","144.738","147.631","150.428","153.428","153.345","139.346","134.524","137.463","138.338","139.688","141.47","142.121","143.595","143.957","146.4204","147.3512","147.736","152.173","152.938","150.4894","151.424","152.276","154.198","155.405","156.988","159.495","162.112","165.452","170.146","171.588","174.906","176.998","178.221","180.212","181.039","184.728","185.46"
|
||||
"INTL.33-7-ALB-MK.A"," Albania","0.5","0.525","0.55","0.6","0.625","0.65","0.675","0.68","0.69","0.69","1.668","1.668","1.668","1.668","1.668","1.445","1.445","1.445","1.445","1.445","1.445","1.445","1.445","1.445","1.445","1.432","1.432","1.432","1.45","1.45","1.461","1.508","1.628","1.781","1.725","1.798","1.913","2.047","2.105","2.193","2.39","2.39"
|
||||
"INTL.33-7-AUT-MK.A"," Austria","8.206","9.157","9.51","9.582","10.034","10.171","10.423","10.691","10.762","10.858","7.028","7.129","7.204","7.202","7.245","7.323","7.385","7.54","7.685","7.669","7.676","7.703","7.567","7.607","7.613","7.667","7.684","7.845","7.848","7.827","7.913","7.947","7.97","8.272","8.321","8.457","8.493","8.506","8.591","8.63","9.001","9.151"
|
||||
"INTL.33-7-BEL-MK.A"," Belgium","0.073","0.08","0.086","0.086","0.086","0.087","0.089","0.09","0.093","0.095","0.094","0.094","0.094","0.095","0.095","0.096","0.096","0.096","0.097","0.103","0.103","0.111","0.111","0.11","0.115","0.105","0.107","0.11","0.111","0.11","0.118","0.119","0.12","0.119","0.121","0.112","0.115","0.107","0.108","0.108","0.12","0.12"
|
||||
"INTL.33-7-BIH-MK.A"," Bosnia and Herzegovina","--","--","--","--","--","--","--","--","--","--","--","--","1.2","1.2","1.139","1.219","1.219","1.219","1.624","1.983","1.983","1.993","2.38","2.38","2.38","2.38","2.411","2.411","2.117","2.117","2.117","2.117","2.12","2.12","2.049","2.055","2.084","2.084","2.09","2.09","2.093","1.747"
|
||||
"INTL.33-7-BGR-MK.A"," Bulgaria","1.895","1.895","1.895","1.975","1.975","1.975","1.975","1.975","1.975","1.973","1.973","1.401","1.401","1.401","1.401","1.401","1.401","1.803","1.803","1.803","1.881","1.706","1.948","1.984","1.984","1.984","1.984","2.012","2.12","2.137","2.184","2.035","2.095","2.165","2.19","2.206","2.206","2.21","1.725","1.725","1.725","1.725"
|
||||
"INTL.33-7-HRV-MK.A"," Croatia","--","--","--","--","--","--","--","--","--","--","--","--","1.769","1.77","1.77","1.781","1.785","1.785","1.785","1.785","1.785","1.785","1.775","1.783","1.79","1.804","1.804","1.782","1.782","1.799","1.848","1.848","1.848","1.897","1.9","1.915","1.912","1.912","1.913","1.913","1.848","1.874"
|
||||
"INTL.33-7-CYP-MK.A"," Cyprus","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"
|
||||
"INTL.33-7-CZE-MK.A"," Czechia","--","--","--","--","--","--","--","--","--","--","--","--","--","0.911","0.906","0.908","0.868","0.905","0.888","1.008","0.952","1","1","1.004","1.015","1.02","1.016","1.024","1.029","1.037","1.049","1.05","1.065","1.08","1.08","1.088","1.09","1.093","1.094","1.096","1.097","1.109"
|
||||
"INTL.33-7-DNK-MK.A"," Denmark","0.008","0.008","0.01","0.009","0.009","0.009","0.009","0.009","0.009","0.011","0.01","0.01","0.01","0.01","0.008","0.01","0.01","0.01","0.011","0.011","0.01","0.011","0.011","0.011","0.011","0.011","0.009","0.009","0.009","0.009","0.009","0.009","0.009","0.009","0.009","0.007","0.009","0.009","0.009","0.009","0.009","0.007"
|
||||
"INTL.33-7-EST-MK.A"," Estonia","--","--","--","--","--","--","--","--","--","--","--","--","0.001","0.001","0.001","0.001","0.001","0.001","0.001","0.0012","0.0012","0.003","0.003","0.004","0.004","0.005","0.005","0.005","0.005","0.007","0.006","0.005","0.008","0.008","0.005","0.006","0.006","0.007","0.007","0.007","0.008","0.004"
|
||||
"INTL.33-7-FRO-MK.A"," Faroe Islands","0.018","0.018","0.018","0.018","0.018","0.018","0.018","0.031","0.031","0.031","0.031","0.031","0.031","0.031","0.031","0.031","0.031","0.031","0.031","0.0314","0.032","0.032","0.032","0.032","0.0314","0.031","0.031","0.031","0.031","0.031","0.031","0.031","0.039","0.039","0.04","0.04","0.04","0.04","0.04","0.04","0.039","0.039"
|
||||
"INTL.33-7-FIN-MK.A"," Finland","2.42","2.467","2.474","2.503","2.497","2.505","2.555","2.586","2.597","2.586","2.621","2.648","2.679","2.731","2.736","2.777","2.785","2.861","2.881","2.881","2.882","2.926","2.964","2.966","2.999","3.035","3.062","3.102","3.122","3.145","3.155","3.196","3.196","3.224","3.248","3.249","3.249","3.272","3.287","3.287","3.263","3.263"
|
||||
"INTL.33-7-CSK-MK.A"," Former Czechoslovakia","2.578","2.832","2.84","2.84","2.875","2.897","2.89","2.975","2.988","3.042","3.036","3.061","3.061","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-7-SCG-MK.A"," Former Serbia and Montenegro","--","--","--","--","--","--","--","--","--","--","--","--","2.25","2.25","2.25","2.25","2.25","2.25","2.25","2.296","2.296","2.296","2.296","2.296","2.206","2.206","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-7-YUG-MK.A"," Former Yugoslavia","6.2","6.25","5.886","5.886","6.386","6.736","7.086","7.386","7.625","7.686","7.386","7.386","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-7-FRA-MK.A"," France","17.431","17.63","18.247","18.4","18.661","19.034","19.786","19.991","20.174","20.338","17.717","17.655","17.767","17.837","17.902","17.898","18","18.018","18.024","17.947","17.646","17.674","17.775","17.927","17.812","17.808","17.82","17.832","17.922","18.009","18.156","18.373","18.388","18.379","18.392","18.415","18.486","18.561","18.857","18.88","19.671","19.657"
|
||||
"INTL.33-7-DEU-MK.A"," Germany","--","--","--","--","--","--","--","--","--","--","--","3.31","3.317","3.385","3.471","3.624","3.563","3.569","3.642","3.802","4.086","4.101","4.193","4.088","4.209","4.134","4.117","4.083","4.104","4.283","4.252","4.469","4.451","4.433","4.424","4.433","4.442","4.449","4.456","4.456","4.658","4.684"
|
||||
"INTL.33-7-DDR-MK.A"," Germany, East","1.852","1.845","1.852","1.851","1.845","1.844","1.844","1.844","1.844","1.844","1.844","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-7-DEUW-MK.A"," Germany, West","6.45","6.509","6.531","6.631","6.668","6.71","6.71","6.71","6.85","6.86","6.86","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-7-GIB-MK.A"," Gibraltar","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"
|
||||
"INTL.33-7-GRC-MK.A"," Greece","1.415","1.714","1.714","1.714","1.714","1.822","1.822","1.822","1.836","1.986","2.093","2.197","2.208","2.208","2.208","2.208","2.207","2.412","2.241","2.344","2.373","2.377","2.379","2.38","2.4","2.407","2.435","2.451","2.477","2.502","2.516","2.525","2.537","2.539","2.69","2.693","2.693","2.693","2.71","2.71","2.697","2.722"
|
||||
"INTL.33-7-HUN-MK.A"," Hungary","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.048","0.054","0.049","0.049","0.049","0.049","0.051","0.053","0.053","0.055","0.056","0.057","0.057","0.057","0.057","0.057","0.057","0.057","0.056","0.058"
|
||||
"INTL.33-7-ISL-MK.A"," Iceland","0.545","0.615","0.755","0.755","0.755","0.755","0.756","0.756","0.756","0.756","0.756","0.779","0.879","0.879","0.884","0.884","0.884","0.923","0.956","1.016","1.064","1.109","1.155","1.155","1.163","1.163","1.163","1.758","1.879","1.875","1.883","1.884","1.877","1.984","1.984","1.987","1.987","1.995","2.099","2.099","2.086","2.086"
|
||||
"INTL.33-7-IRL-MK.A"," Ireland","0.224","0.224","0.225","0.225","0.226","0.226","0.221","0.222","0.222","0.222","0.223","0.226","0.226","0.226","0.227","0.227","0.232","0.233","0.233","0.236","0.236","0.238","0.24","0.24","0.24","0.234","0.234","0.234","0.234","0.234","0.237","0.237","0.237","0.237","0.237","0.237","0.237","0.237","0.237","0.237","0.237","0.216"
|
||||
"INTL.33-7-ITA-MK.A"," Italy","15.826","15.766","16.877","17.125","12.166","12.16","12.419","12.435","12.495","12.547","12.582","12.692","12.718","12.788","12.864","12.964","12.999","13.06","13.058","13.417","13.389","13.456","13.557","13.703","13.789","13.89","13.528","13.573","13.732","13.827","13.976","14.193","14.325","14.454","14.506","14.628","14.991","15.109","15.182","15.583","14.908","14.908"
|
||||
"INTL.33-7-XKS-MK.A"," Kosovo","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","0.043","0.043","0.045","0.046","0.046","0.046","0.046","0.046","0.078","0.08","0.096","0.096","0.092","0.092"
|
||||
"INTL.33-7-LVA-MK.A"," Latvia","--","--","--","--","--","--","--","--","--","--","--","--","1.499","1.504","1.506","1.521","1.521","1.487","1.517","1.523","1.523","1.565","1.565","1.537","1.536","1.536","1.536","1.536","1.536","1.536","1.576","1.576","1.576","1.587","1.588","1.588","1.564","1.564","1.565","1.565","1.576","1.588"
|
||||
"INTL.33-7-LTU-MK.A"," Lithuania","--","--","--","--","--","--","--","--","--","--","--","--","0.106","0.106","0.108","0.108","0.108","0.108","0.108","0.112","0.112","0.113","0.103","0.109","0.11","0.117","0.117","0.115","0.115","0.116","0.116","0.116","0.116","0.116","0.117","0.117","0.117","0.117","0.117","0.117","0.116","0.128"
|
||||
"INTL.33-7-LUX-MK.A"," Luxembourg","0.029","0.029","0.029","0.032","0.032","0.032","0.032","0.032","0.032","0.032","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.039","0.039","0.039","0.039","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.034","0.035","0.034","0.034","0.034","0.037"
|
||||
"INTL.33-7-MLT-MK.A"," Malta","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"
|
||||
"INTL.33-7-MNE-MK.A"," Montenegro","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","0.658","0.658","0.658","0.658","0.658","0.658","0.658","0.651","0.651","0.651","0.651","0.652","0.652","0.652","0.658","0.649"
|
||||
"INTL.33-7-NLD-MK.A"," Netherlands","0","0","0","0","0","0.002","0.002","0.002","0.002","0.025","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.037","0.038","0.038"
|
||||
"INTL.33-7-MKD-MK.A"," North Macedonia","--","--","--","--","--","--","--","--","--","--","--","--","0.426","0.426","0.413","0.423","0.423","0.434","0.434","0.4338","0.434","0.436","0.436","0.448","0.516","0.54","0.545","0.546","0.552","0.553","0.555","0.556","0.595","0.603","0.617","0.632","0.66","0.674","0.674","0.674","0.674","0.644"
|
||||
"INTL.33-7-NOR-MK.A"," Norway","19.443","20.963","21.789","22.37","22.628","23.076","23.555","24.358","24.453","25.728","25.817","25.823","25.963","25.983","26.215","27.379","27.494","27.327","26.982","27.54","26.766","26.319","26.604","26.947","26.721","27.222","27.398","27.647","28.062","28.188","28.367","28.618","29.158","29.682","29.889","29.939","30.281","30.382","31.12","31.182","31.556","31.952"
|
||||
"INTL.33-7-POL-MK.A"," Poland","0.647","0.647","0.647","0.647","0.645","0.646","0.646","0.646","0.772","0.647","0.467","0.467","0.468","0.475","0.489","0.482","0.492","0.495","0.501","0.505","0.509","0.517","0.517","0.524","0.535","0.542","0.549","0.546","0.553","0.556","0.56","0.564","0.569","0.573","0.582","0.588","0.597","0.591","0.592","0.592","0.605","0.605"
|
||||
"INTL.33-7-PRT-MK.A"," Portugal","2.516","2.615","2.854","2.944","3.016","2.721","2.818","2.82","2.722","2.799","2.783","2.772","3.146","3.613","3.697","3.848","3.867","3.877","3.94","3.93","3.918","3.943","3.966","3.966","3.974","3.968","4.004","4.012","4.009","4.042","4.057","4.49","4.414","4.363","4.368","4.446","4.458","4.462","4.484","4.484","4.373","4.372"
|
||||
"INTL.33-7-ROU-MK.A"," Romania","3.455","3.533","3.734","3.885","4.062","4.42","4.706","5.057","5.421","5.583","5.666","5.723","5.687","5.872","5.938","6.011","6.038","6.074","6.081","6.082","6.12","6.122","6.242","6.248","6.279","6.289","6.282","6.331","6.362","6.358","6.382","6.391","6.456","6.249","6.256","6.359","6.377","6.328","6.328","6.328","6.221","6.221"
|
||||
"INTL.33-7-SRB-MK.A"," Serbia","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","2.206","2.206","2.206","2.221","2.293","2.322","2.352","2.317","2.403","2.408","2.416","2.424","2.424","2.424","2.484","2.491"
|
||||
"INTL.33-7-SVK-MK.A"," Slovakia","--","--","--","--","--","--","--","--","--","--","--","--","--","0.925","1.208","1.525","1.655","1.664","1.682","1.684","1.685","1.586","1.586","1.588","1.602","1.596","1.597","1.599","1.632","1.571","1.6","1.607","1.606","1.607","1.607","1.606","1.608","1.607","1.612","1.612","1.505","1.505"
|
||||
"INTL.33-7-SVN-MK.A"," Slovenia","--","--","--","--","--","--","--","--","--","--","--","--","0.755","0.755","0.756","0.757","0.734","0.734","0.861","0.846","0.846","0.839","0.983","0.974","0.974","0.979","1.009","1.018","1.027","1.07","1.074","1.073","1.074","1.119","1.116","1.115","1.113","1.167","1.163","1.163","1.163","1.121"
|
||||
"INTL.33-7-ESP-MK.A"," Spain","13.473","10.869","10.945","10.917","10.935","10.959","11.153","10.556","10.984","11.597","11.32","11.429","11.484","11.484","11.545","11.689","11.793","11.596","11.537","11.802","12.672","12.744","15.55","15.525","12.82","12.808","12.907","12.961","13.04","13.069","13.275","13.283","13.293","14.076","14.081","14.086","14.053","14.052","14.053","14.053","14.292","14.308"
|
||||
"INTL.33-7-SWE-MK.A"," Sweden","14.859","14.919","15.215","15.29","15.445","15.69","15.813","15.996","16.112","15.759","15.904","15.891","16.021","15.867","16.072","15.725","15.776","16.371","16.169","16.432","16.506","16.523","16.187","16.098","16.302","16.302","16.234","16.592","16.352","16.544","16.624","16.478","16.315","16.395","15.897","16.23","16.367","16.403","16.332","16.332","16.379","16.379"
|
||||
"INTL.33-7-CHE-MK.A"," Switzerland","11.45","11.46","11.47","11.47","11.48","11.48","11.51","11.51","11.52","11.58","3.474","3.484","3.504","3.509","3.526","3.541","3.55","3.553","3.584","3.614","3.636","3.642","3.653","3.669","3.65","3.682","3.694","3.7","3.709","3.749","3.81","3.852","3.882","3.896","3.948","3.996","4.06","4.112","4.193","4.193","4.193","4.193"
|
||||
"INTL.33-7-TUR-MK.A"," Turkiye","2.131","2.356","3.082","3.239","3.875","3.875","3.878","5.003","6.219","6.598","6.764","7.114","8.379","9.682","9.865","9.863","9.935","10.102","10.307","10.537","11.175","11.673","12.241","12.579","12.645","12.906","13.063","13.395","13.829","14.553","15.831","17.137","19.609","22.289","23.643","25.868","26.681","27.273","28.291","28.503","30.984","31.497"
|
||||
"INTL.33-7-GBR-MK.A"," United Kingdom","2.451","2.451","2.451","2.721","4.188","4.19","4.192","4.197","4.196","1.424","1.11","1.415","1.423","1.425","1.425","1.432","1.455","1.488","1.475","1.477","1.485","1.629","1.59","1.486","1.499","1.501","1.515","1.522","1.626","1.638","1.637","1.673","1.693","1.709","1.73","1.777","1.836","1.873","1.878","1.878","1.879","1.88"
|
||||
""," Eurasia","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
|
||||
"INTL.33-7-MDA-MK.A"," Moldova","--","--","--","--","--","--","--","--","--","--","--","--","0.064","0.064","0.064","0.056","0.056","0.064","0.064","0.064","0.064","0.06","0.06","0.06","0.059","0.059","0.056","0.056","0.064","0.064","0.064","0.064","0.064","0.064","0.064","0.064","0.064","0.064","0.064","0.064","0.076","0.076"
|
||||
"INTL.33-7-UKR-MK.A"," Ukraine","--","--","--","--","--","--","--","--","--","--","--","--","4.705","4.706","4.706","4.706","4.706","4.706","4.706","4.7","4.7","4.731","4.758","4.766","4.781","4.717","4.746","4.731","4.798","4.795","4.596","4.607","4.608","4.632","4.665","4.697","4.658","4.668","4.668","4.668","4.666","4.43"
|
Can't render this file because it has a wrong number of fields in line 3.
|
@ -1,53 +1,53 @@
|
||||
https://www.eia.gov/international/data/world/electricity/electricity-generation?pd=2&p=000000000000000000000000000000g&u=1&f=A&v=mapbubble&a=-&i=none&vo=value&t=R&g=000000000000002&l=73-1028i008017kg6368g80a4k000e0ag00gg0004g8g0ho00g000400008&l=72-00000000000000000000000000080000000000000000000g&s=315532800000&e=1609459200000&ev=false&,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Report generated on: 01-06-2023 21:17:46,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
API,,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021
|
||||
,hydroelectricity net generation (billion kWh),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
INTL.33-12-EURO-BKWH.A, Europe,"458,018","464,155","459,881","473,685","481,241","476,739","459,535","491,085","534,517","465,365","474,466","475,47","509,041","526,448","531,815","543,743","529,114164","543,845616","562,491501","566,861453","588,644662","584,806195","539,051405","503,7067","542,112443","542,974669","535,006084","538,449707","565,143111","561,761402","617,547148","540,926277","598,055253","629,44709","617,111295","613,079848","627,720566217","560,362524","616,5081462","606,5997419","644,1106599","628,1390143"
|
||||
INTL.33-12-ALB-BKWH.A, Albania,"2,919","3,018","3,093","3,167","3,241","3,315","3,365","3,979","3,713","3,846","2,82","3,483","3,187","3,281","3,733","4,162","5,669","4,978","4,872","5,231","4,548","3,519","3,477","5,117","5,411","5,319","4,951","2,76","3,759","5,201","7,49133","4,09068","4,67775","6,88941","4,67676","5,83605","7,70418","4,47975","8,46648","5,15394","5,281","8,891943"
|
||||
INTL.33-12-AUT-BKWH.A, Austria,"28,501","30,008","29,893","29,577","28,384","30,288","30,496","25,401","35,151","34,641","31,179","31,112","34,483","36,336","35,349","36,696","33,874","35,744","36,792","40,292","41,418","40,05","39,825","32,883","36,394","36,31","35,48","36,732","37,969","40,487","36,466","32,511","41,862","40,138","39,001","35,255","37,954","36,462","35,73","40,43655","41,9356096","38,75133"
|
||||
INTL.33-12-BEL-BKWH.A, Belgium,"0,274","0,377","0,325","0,331","0,348","0,282","0,339","0,425","0,354","0,3","0,263","0,226","0,338","0,252","0,342","0,335","0,237","0,30195","0,38511","0,338","0,455","0,437","0,356","0,245","0,314","0,285","0,355","0,385","0,406","0,325","0,298","0,193","0,353","0,376","0,289","0,314","0,367","0,268","0,3135","0,302","0,2669","0,3933"
|
||||
INTL.33-12-BIH-BKWH.A, Bosnia and Herzegovina,--,--,--,--,--,--,--,--,--,--,--,--,"3,374","2,343","3,424","3,607","5,104","4,608","4,511","5,477","5,043","5,129","5,215","4,456","5,919","5,938","5,798","3,961","4,818","6,177","7,946","4,343","4,173","7,164","5,876","5,495","5,585","3,7521","6,35382","6,02019","4,58","6,722"
|
||||
INTL.33-12-BGR-BKWH.A, Bulgaria,"3,674","3,58","3,018","3,318","3,226","2,214","2,302","2,512","2,569","2,662","1,859","2,417","2,042","1,923","1,453","2,291","2,89","2,726","3,066","2,725","2,646","1,72","2,172","2,999","3,136","4,294","4,196","2,845","2,796","3,435","4,98168","2,84328","3,14622","3,99564","4,55598","5,59845","3,8412","2,79972","5,09553","2,929499","2,820398","4,819205"
|
||||
INTL.33-12-HRV-BKWH.A, Croatia,--,--,--,--,--,--,--,--,--,--,--,--,"4,298","4,302","4,881","5,212","7,156","5,234","5,403","6,524","5,794","6,482","5,311","4,827","6,888","6,27","5,94","4,194","5,164","6,663","9,035","4,983","4,789","8,536","8,917","6,327","6,784","5,255","7,62399","5,87268","5,6624","7,1277"
|
||||
INTL.33-12-CYP-BKWH.A, Cyprus,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
INTL.33-12-CZE-BKWH.A, Czechia,--,--,--,--,--,--,--,--,--,--,--,--,--,"1,355","1,445","1,982","1,949","1,68201","1,382","1,664","1,7404","2,033","2,467","1,369","1,999","2,356","2,525","2,068","2,004","2,405","2,775","1,95","2,107","2,704","1,909","1,779","1,983","1,852","1,615","1,98792","2,143884","2,40852"
|
||||
INTL.33-12-DNK-BKWH.A, Denmark,"0,03","0,031","0,028","0,036","0,028","0,027","0,029","0,029","0,032","0,027","0,027","0,026","0,028","0,027","0,033","0,03","0,019","0,019","0,02673","0,031","0,03","0,028","0,032","0,021","0,027","0,023","0,023","0,028","0,026","0,019","0,021","0,017","0,017","0,013","0,015","0,01803","0,01927","0,017871","0,0148621","0,0172171","0,017064","0,016295"
|
||||
INTL.33-12-EST-BKWH.A, Estonia,--,--,--,--,--,--,--,--,--,--,--,--,"0,001","0,001","0,003","0,002","0,002","0,003","0,004","0,004","0,005","0,007","0,006","0,013","0,022","0,022","0,014","0,021","0,028","0,032","0,027","0,029999","0,042","0,026","0,027","0,027","0,035","0,025999","0,0150003","0,0189999","0,03","0,0248"
|
||||
INTL.33-12-FRO-BKWH.A, Faroe Islands,"0,049","0,049","0,049","0,049","0,049","0,049","0,049","0,049","0,062","0,071","0,074","0,074","0,083","0,073","0,075","0,075","0,069564","0,075066","0,076501","0,069453","0,075262","0,075195","0,095535","0,08483","0,093443","0,097986","0,099934","0,103407","0,094921","0,091482","0,06676","0,092","0,099","0,091","0,121","0,132","0,105","0,11","0,107","0,102","0,11","0,11"
|
||||
INTL.33-12-FIN-BKWH.A, Finland,"10,115","13,518","12,958","13,445","13,115","12,211","12,266","13,658","13,229","12,9","10,75","13,065","14,956","13,341","11,669","12,796","11,742","12,11958","14,9","12,652","14,513","13,073","10,668","9,495","14,919","13,646","11,379","14,035","16,941","12,559","12,743","12,278001","16,666998","12,672","13,240001","16,583999","15,634127","14,609473","13,1369998","12,2454823","15,883","15,766"
|
||||
INTL.33-12-CSK-BKWH.A, Former Czechoslovakia,"4,8","4,2","3,7","3,9","3,2","4,3",4,"4,853","4,355","4,229","3,919","3,119","3,602",--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--
|
||||
INTL.33-12-SCG-BKWH.A, Former Serbia and Montenegro,--,--,--,--,--,--,--,--,--,--,--,--,"11,23","10,395","11,016","12,071","14,266","12,636","12,763","13,243","11,88","12,326","11,633","9,752","11,01","11,912",--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--
|
||||
INTL.33-12-YUG-BKWH.A, Former Yugoslavia,"27,868","25,044","23,295","21,623","25,645","24,363","27,474","25,98","25,612","23,256","19,601","18,929",--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--
|
||||
INTL.33-12-FRA-BKWH.A, France,"68,253","70,358","68,6","67,515","64,01","60,248","60,953","68,623","73,952","45,744","52,796","56,277","68,313","64,3","78,057","72,196","64,43","63,151","61,479","71,832","66,466","73,888","59,992","58,567","59,276","50,965","55,741","57,029","63,017","56,428","61,945","45,184","59,099","71,042","62,993","54,876","60,094","49,389","64,485","56,913891","62,06191","58,856657"
|
||||
INTL.33-12-DEU-BKWH.A, Germany,--,--,--,--,--,--,--,--,--,--,--,"14,742","17,223","17,699","19,731","21,562","21,737","17,18343","17,044","19,451","21,515","22,506","22,893","19,071","20,866","19,442","19,808","20,957","20,239","18,841","20,678","17,323","21,331","22,66","19,31","18,664","20,214","19,985","17,694","19,731","18,322","19,252"
|
||||
INTL.33-12-DDR-BKWH.A," Germany, East","1,658","1,718","1,748","1,683","1,748","1,758","1,767","1,726","1,719","1,551","1,389",--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--
|
||||
INTL.33-12-DEUW-BKWH.A," Germany, West","17,125","17,889","17,694","16,713","16,434","15,354","16,526","18,36","18,128","16,482","15,769",--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--
|
||||
INTL.33-12-GIB-BKWH.A, Gibraltar,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
INTL.33-12-GRC-BKWH.A, Greece,"3,396","3,398","3,551","2,331","2,852","2,792","3,222","2,768","2,354","1,888","1,751","3,068","2,181","2,26","2,573","3,494","4,305","3,84318","3,68","4,546","3,656","2,076","2,772","4,718","4,625","4,967","5,806","2,565","3,279","5,32","7,431","3,998","4,387","6,337","4,464","5,782","5,543","3,962","5,035","3,9798","3,343687","5,909225"
|
||||
INTL.33-12-HUN-BKWH.A, Hungary,"0,111","0,166","0,158","0,153","0,179","0,153","0,152","0,167","0,167","0,156","0,176","0,192","0,156","0,164","0,159","0,161","0,205","0,21384","0,15345","0,179","0,176","0,184","0,192","0,169","0,203","0,2","0,184","0,208","0,211","0,226","0,184","0,215999","0,205999","0,207999","0,294001","0,226719","0,253308","0,213999","0,216","0,2129999","0,238","0,202379"
|
||||
INTL.33-12-ISL-BKWH.A, Iceland,"3,053","3,085","3,407","3,588","3,738","3,667","3,846","3,918","4,169","4,217","4,162","4,162","4,267","4,421","4,47","4,635","4,724","5,15493","5,565","5,987","6,292","6,512","6,907","7,017","7,063","6,949","7,22","8,31","12,303","12,156","12,509999","12,381999","12,213999","12,747001","12,554","13,541","13,091609","13,891929","13,679377","13,32911","12,9196201","13,5746171"
|
||||
INTL.33-12-IRL-BKWH.A, Ireland,"0,833","0,855","0,792","0,776","0,68","0,824","0,91","0,673","0,862","0,684","0,69","0,738","0,809","0,757","0,911","0,706","0,715","0,67122","0,907","0,838","0,838","0,59","0,903","0,592","0,624","0,625","0,717","0,66","0,959","0,893","0,593","0,699","0,795","0,593","0,701","0,798","0,674","0,685","0,687","0,87813","0,932656","0,750122"
|
||||
INTL.33-12-ITA-BKWH.A, Italy,"44,997","42,782","41,216","40,96","41,923","40,616","40,626","39,05","40,205","33,647","31,31","41,817","41,778","41,011","44,212","37,404","41,617","41,18697","40,808","44,911","43,763","46,343","39,125","33,303","41,915","35,706","36,624","32,488","41,207","48,647","50,506","45,36477","41,45625","52,24626","57,95955","45,08163","42,00768","35,83701","48,29913","45,31824","47,551784","44,739"
|
||||
INTL.33-12-XKS-BKWH.A, Kosovo,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,"0,075","0,119","0,154","0,104","0,095","0,142","0,149","0,139","0,243","0,177","0,27027","0,2079","0,262826","0,300635"
|
||||
INTL.33-12-LVA-BKWH.A, Latvia,--,--,--,--,--,--,--,--,--,--,--,--,"2,498","2,846","3,272","2,908","1,841","2,922","2,99","2,729","2,791","2,805","2,438","2,243","3,078","3,293","2,671","2,706","3,078","3,422","3,487998","2,8568","3,677","2,838","1,953","1,841","2,522819","4,355513","2,4170639","2,0958919","2,5840101","2,6889293"
|
||||
INTL.33-12-LTU-BKWH.A, Lithuania,--,--,--,--,--,--,--,--,--,--,--,--,"0,308","0,389","0,447","0,369","0,323","0,291","0,413","0,409","0,336","0,322","0,35","0,323","0,417","0,446193","0,393","0,417","0,398","0,42","0,535","0,475","0,419","0,516","0,395","0,346","0,45","0,597","0,427","0,34254","0,3006","0,3837"
|
||||
INTL.33-12-LUX-BKWH.A, Luxembourg,"0,086","0,095","0,084","0,083","0,088","0,071","0,084","0,101","0,097","0,072","0,07","0,083","0,069","0,066","0,117","0,087","0,059","0,082","0,114","0,084","0,119","0,117","0,098","0,078","0,103","0,093","0,11","0,116","0,131","0,105","0,104","0,061","0,095","0,114","0,104","0,095","0,111","0,082","0,089","0,10593","0,091602","0,1068"
|
||||
INTL.33-12-MLT-BKWH.A, Malta,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
INTL.33-12-MNE-BKWH.A, Montenegro,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,"1,733","1,271","1,524","2,05","2,723","1,192","1,462","2,479","1,734","1,476","1,825","1,014","1,693443","1,262781","0,867637","1,212652"
|
||||
INTL.33-12-NLD-BKWH.A, Netherlands,0,0,0,0,0,"0,003","0,003","0,001","0,002","0,037","0,119","0,079","0,119","0,091","0,1","0,087","0,079","0,09108","0,111","0,089","0,141","0,116","0,109","0,071","0,094","0,087","0,105","0,106","0,101","0,097","0,105","0,057","0,104389","0,11431","0,112202","0,0927","0,100078","0,060759","0,0723481","0,074182","0,0462851","0,0838927"
|
||||
INTL.33-12-MKD-BKWH.A, North Macedonia,--,--,--,--,--,--,--,--,--,--,--,--,"0,817","0,517","0,696","0,793","0,842","0,891","1,072","1,375","1,158","0,62","0,749","1,36","1,467","1,477","1,634",1,"0,832","1,257","2,407","1,419","1,031","1,568","1,195","1,846","1,878","1,099","1,773","1,15236","1,277144","1,451623"
|
||||
INTL.33-12-NOR-BKWH.A, Norway,"82,717","91,876","91,507","104,704","104,895","101,464","95,321","102,341","107,919","117,369","119,933","109,032","115,505","118,024","110,398","120,315","102,823","108,677","114,546","120,237","140,4","119,258","128,078","104,425","107,693","134,331","118,175","132,319","137,654","124,03","116,257","119,78","141,189","127,551","134,844","136,662","142,244","141,651","138,202","123,66288","141,69",144
|
||||
INTL.33-12-POL-BKWH.A, Poland,"2,326","2,116","1,528","1,658","1,394","1,833","1,534","1,644","1,775","1,593","1,403","1,411","1,492","1,473","1,716","1,868","1,912","1,941","2,286","2,133","2,085","2,302","2,256","1,654","2,06","2,179","2,022","2,328","2,13","2,351","2,9","2,313","2,02","2,421","2,165","1,814","2,117","2,552","1,949","1,93842","2,118337","2,339192"
|
||||
INTL.33-12-PRT-BKWH.A, Portugal,"7,873","4,934","6,82","7,897","9,609","10,512","8,364","9,005","12,037","5,72","9,065","8,952","4,599","8,453","10,551","8,26","14,613","12,97395","12,853","7,213","11,21","13,894","7,722","15,566","9,77","4,684","10,892","9,991","6,73","8,201","15,954","11,423","5,589","13,652","15,471","8,615","15,608","5,79","12,316","8,6526","12,082581","11,846464"
|
||||
INTL.33-12-ROU-BKWH.A, Romania,"12,506","12,605","11,731","9,934","11,208","11,772","10,688","11,084","13,479","12,497","10,87","14,107","11,583","12,64","12,916","16,526","15,597","17,334","18,69","18,107","14,63","14,774","15,886","13,126","16,348","20,005","18,172","15,806","17,023","15,379","19,684","14,581","11,945","14,807","18,618","16,467","17,848","14,349","17,48736","15,580622","15,381243","17,376933"
|
||||
INTL.33-12-SRB-BKWH.A, Serbia,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,--,"10,855","9,937","9,468","10,436","11,772","8,58","9,193","10,101","10,893","9,979","10,684","9,061","10,53261","9,457175","9,034496","11,284232"
|
||||
INTL.33-12-SVK-BKWH.A, Slovakia,--,--,--,--,--,--,--,--,--,--,--,--,--,"3,432","4,311","4,831","4,185","4,023","4,224","4,429","4,569","4,878","5,215","3,4452","4,059","4,592","4,355","4,406",4,"4,324","5,184","3,211","3,687","4,329","3,762","3,701","4,302","4,321","3,506","4,27383","4,517","4,17"
|
||||
INTL.33-12-SVN-BKWH.A, Slovenia,--,--,--,--,--,--,--,--,--,--,--,--,"3,379","2,974","3,348","3,187","3,616","3,046","3,4","3,684","3,771","3,741","3,265","2,916","4,033","3,426","3,555","3,233","3,978","4,666","4,452","3,506","3,841","4,562","6,011","3,75","4,443","3,814","4,643","4,43421","4,93406","4,711944"
|
||||
INTL.33-12-ESP-BKWH.A, Spain,"29,16","21,64","25,99","26,696","31,088","30,895","26,105","27,016","34,76","19,046","25,16","27,01","18,731","24,133","27,898","22,881","39,404","34,43","33,665","22,634","29,274","40,617","22,691","40,643","31,359","18,209","25,699","27,036","23,13","26,147","41,576","30,07","20,192","36,45","38,815","27,656","35,77","18,007","33,743","24,23025","30,507","29,626"
|
||||
INTL.33-12-SWE-BKWH.A, Sweden,"58,133","59,006","54,369","62,801","67,106","70,095","60,134","70,95","69,016","70,911","71,778","62,603","73,588","73,905","58,508","67,421","51,2226","68,365","74,25","70,974","77,798","78,269","65,696","53,005","59,522","72,075","61,106","65,497","68,378","65,193","66,279","66,047","78,333","60,81","63,227","74,734","61,645","64,651","61,79","64,46583","71,6","71,086"
|
||||
INTL.33-12-CHE-BKWH.A, Switzerland,"32,481","35,13","35,974","35,069","29,871","31,731","32,576","34,328","35,437","29,477","29,497","31,756","32,373","35,416","38,678","34,817","28,458","33,70257","33,136","37,104","33,854","38,29","32,323","31,948","30,938","28,664","28,273","32,362","33,214","32,833","33,261","29,906","35,783","35,628","35,122","35,378","31,984","31,47968","32,095881","35,156989","37,867647","36,964485"
|
||||
INTL.33-12-TUR-BKWH.A, Turkey,"11,159","12,308","13,81","11,13","13,19","11,822","11,637","18,314","28,447","17,61","22,917","22,456","26,302","33,611","30,28","35,186","40,07","39,41784","41,80671","34,33","30,57","23,77","33,346","34,977","45,623","39,165","43,802","35,492","32,937","35,598","51,423001","51,154999","56,668998","58,225","39,750001","65,856","66,685883","57,823851","59,490211","88,2094218","78,094369","55,1755392"
|
||||
INTL.33-12-GBR-BKWH.A, United Kingdom,"3,921","4,369","4,543","4,548","3,992","4,08","4,767","4,13","4,915","4,732","5,119","4,534","5,329","4,237","5,043","4,79","3,359","4,127","5,117","5,336","5,085","4,055","4,78787","3,22767","4,844","4,92149","4,59315","5,0773","5,14119","5,22792","3,59138","5,69175","5,30965","4,70147","5,8878","6,29727","5,370412217","5,88187","5,44327","5,84628","6,75391","5,0149"
|
||||
, Eurasia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||
INTL.33-12-MDA-BKWH.A, Moldova,--,--,--,--,--,--,--,--,--,--,--,--,"0,255","0,371","0,275","0,321","0,362","0,378","0,387","0,363","0,392","0,359","0,348","0,358","0,35","0,359","0,365","0,354","0,385","0,354","0,403","0,348","0,266","0,311","0,317","0,265","0,228","0,282","0,27324","0,29799","0,276","0,316"
|
||||
INTL.33-12-UKR-BKWH.A, Ukraine,--,--,--,--,--,--,--,--,--,--,--,--,"7,725","10,929","11,997","9,853","8,546","9,757","15,756","14,177","11,161","11,912","9,531","9,146","11,635","12,239","12,757","10,042","11,397","11,817","13,02","10,837","10,374","13,663","8,393","5,343","7,594","8,856","10,32372","6,5083","7,5638","10,3326"
|
||||
# https://www.eia.gov/international/data/world/electricity/electricity-generation?pd=2&p=000000000000000000000000000000g&u=1&f=A&v=mapbubble&a=-&i=none&vo=value&t=R&g=000000000000002&l=73-1028i008017kg6368g80a4k000e0ag00gg0004g8g0ho00g000400008&l=72-00000000000000000000000000080000000000000000000g&s=315532800000&e=1609459200000&ev=false&
|
||||
Report generated on: 03-14-2024 13:40:38
|
||||
"API","","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021"
|
||||
"","hydroelectricity net generation (billion kWh)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
|
||||
"INTL.33-12-EURO-BKWH.A"," Europe","458.018","464.155","459.881","473.685","481.241","476.739","459.535","491.085","534.517","465.365","474.466","475.47","509.041","526.448","531.815","543.743","529.114164","543.845616","562.491501","566.861453","588.644662","584.806195","539.051405","503.7067","542.112443","542.974669","535.006084","538.449707","565.143111","561.761402","617.547148","540.926277","598.055253","629.44709","617.111295","613.079848","627.720566217","560.362524","616.5081462","606.5997419","644.1106599","628.1390143"
|
||||
"INTL.33-12-ALB-BKWH.A"," Albania","2.919","3.018","3.093","3.167","3.241","3.315","3.365","3.979","3.713","3.846","2.82","3.483","3.187","3.281","3.733","4.162","5.669","4.978","4.872","5.231","4.548","3.519","3.477","5.117","5.411","5.319","4.951","2.76","3.759","5.201","7.49133","4.09068","4.67775","6.88941","4.67676","5.83605","7.70418","4.47975","8.46648","5.15394","5.281","8.891943"
|
||||
"INTL.33-12-AUT-BKWH.A"," Austria","28.501","30.008","29.893","29.577","28.384","30.288","30.496","25.401","35.151","34.641","31.179","31.112","34.483","36.336","35.349","36.696","33.874","35.744","36.792","40.292","41.418","40.05","39.825","32.883","36.394","36.31","35.48","36.732","37.969","40.487","36.466","32.511","41.862","40.138","39.001","35.255","37.954","36.462","35.73","40.43655","41.9356096","38.75133"
|
||||
"INTL.33-12-BEL-BKWH.A"," Belgium","0.274","0.377","0.325","0.331","0.348","0.282","0.339","0.425","0.354","0.3","0.263","0.226","0.338","0.252","0.342","0.335","0.237","0.30195","0.38511","0.338","0.455","0.437","0.356","0.245","0.314","0.285","0.355","0.385","0.406","0.325","0.298","0.193","0.353","0.376","0.289","0.314","0.367","0.268","0.3135","0.302","0.2669","0.3933"
|
||||
"INTL.33-12-BIH-BKWH.A"," Bosnia and Herzegovina","--","--","--","--","--","--","--","--","--","--","--","--","3.374","2.343","3.424","3.607","5.104","4.608","4.511","5.477","5.043","5.129","5.215","4.456","5.919","5.938","5.798","3.961","4.818","6.177","7.946","4.343","4.173","7.164","5.876","5.495","5.585","3.7521","6.35382","6.02019","4.58","6.722"
|
||||
"INTL.33-12-BGR-BKWH.A"," Bulgaria","3.674","3.58","3.018","3.318","3.226","2.214","2.302","2.512","2.569","2.662","1.859","2.417","2.042","1.923","1.453","2.291","2.89","2.726","3.066","2.725","2.646","1.72","2.172","2.999","3.136","4.294","4.196","2.845","2.796","3.435","4.98168","2.84328","3.14622","3.99564","4.55598","5.59845","3.8412","2.79972","5.09553","2.929499","2.820398","4.819205"
|
||||
"INTL.33-12-HRV-BKWH.A"," Croatia","--","--","--","--","--","--","--","--","--","--","--","--","4.298","4.302","4.881","5.212","7.156","5.234","5.403","6.524","5.794","6.482","5.311","4.827","6.888","6.27","5.94","4.194","5.164","6.663","9.035","4.983","4.789","8.536","8.917","6.327","6.784","5.255","7.62399","5.87268","5.6624","7.1277"
|
||||
"INTL.33-12-CYP-BKWH.A"," Cyprus","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"
|
||||
"INTL.33-12-CZE-BKWH.A"," Czechia","--","--","--","--","--","--","--","--","--","--","--","--","--","1.355","1.445","1.982","1.949","1.68201","1.382","1.664","1.7404","2.033","2.467","1.369","1.999","2.356","2.525","2.068","2.004","2.405","2.775","1.95","2.107","2.704","1.909","1.779","1.983","1.852","1.615","1.98792","2.143884","2.40852"
|
||||
"INTL.33-12-DNK-BKWH.A"," Denmark","0.03","0.031","0.028","0.036","0.028","0.027","0.029","0.029","0.032","0.027","0.027","0.026","0.028","0.027","0.033","0.03","0.019","0.019","0.02673","0.031","0.03","0.028","0.032","0.021","0.027","0.023","0.023","0.028","0.026","0.019","0.021","0.017","0.017","0.013","0.015","0.01803","0.01927","0.017871","0.0148621","0.0172171","0.017064","0.016295"
|
||||
"INTL.33-12-EST-BKWH.A"," Estonia","--","--","--","--","--","--","--","--","--","--","--","--","0.001","0.001","0.003","0.002","0.002","0.003","0.004","0.004","0.005","0.007","0.006","0.013","0.022","0.022","0.014","0.021","0.028","0.032","0.027","0.029999","0.042","0.026","0.027","0.027","0.035","0.025999","0.0150003","0.0189999","0.03","0.0248"
|
||||
"INTL.33-12-FRO-BKWH.A"," Faroe Islands","0.049","0.049","0.049","0.049","0.049","0.049","0.049","0.049","0.062","0.071","0.074","0.074","0.083","0.073","0.075","0.075","0.069564","0.075066","0.076501","0.069453","0.075262","0.075195","0.095535","0.08483","0.093443","0.097986","0.099934","0.103407","0.094921","0.091482","0.06676","0.092","0.099","0.091","0.121","0.132","0.105","0.11","0.107","0.102","0.11","0.11"
|
||||
"INTL.33-12-FIN-BKWH.A"," Finland","10.115","13.518","12.958","13.445","13.115","12.211","12.266","13.658","13.229","12.9","10.75","13.065","14.956","13.341","11.669","12.796","11.742","12.11958","14.9","12.652","14.513","13.073","10.668","9.495","14.919","13.646","11.379","14.035","16.941","12.559","12.743","12.278001","16.666998","12.672","13.240001","16.583999","15.634127","14.609473","13.1369998","12.2454823","15.883","15.766"
|
||||
"INTL.33-12-CSK-BKWH.A"," Former Czechoslovakia","4.8","4.2","3.7","3.9","3.2","4.3","4","4.853","4.355","4.229","3.919","3.119","3.602","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-12-SCG-BKWH.A"," Former Serbia and Montenegro","--","--","--","--","--","--","--","--","--","--","--","--","11.23","10.395","11.016","12.071","14.266","12.636","12.763","13.243","11.88","12.326","11.633","9.752","11.01","11.912","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-12-YUG-BKWH.A"," Former Yugoslavia","27.868","25.044","23.295","21.623","25.645","24.363","27.474","25.98","25.612","23.256","19.601","18.929","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-12-FRA-BKWH.A"," France","68.253","70.358","68.6","67.515","64.01","60.248","60.953","68.623","73.952","45.744","52.796","56.277","68.313","64.3","78.057","72.196","64.43","63.151","61.479","71.832","66.466","73.888","59.992","58.567","59.276","50.965","55.741","57.029","63.017","56.428","61.945","45.184","59.099","71.042","62.993","54.876","60.094","49.389","64.485","56.913891","62.06191","58.856657"
|
||||
"INTL.33-12-DEU-BKWH.A"," Germany","--","--","--","--","--","--","--","--","--","--","--","14.742","17.223","17.699","19.731","21.562","21.737","17.18343","17.044","19.451","21.515","22.506","22.893","19.071","20.866","19.442","19.808","20.957","20.239","18.841","20.678","17.323","21.331","22.66","19.31","18.664","20.214","19.985","17.694","19.731","18.322","19.252"
|
||||
"INTL.33-12-DDR-BKWH.A"," Germany, East","1.658","1.718","1.748","1.683","1.748","1.758","1.767","1.726","1.719","1.551","1.389","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-12-DEUW-BKWH.A"," Germany, West","17.125","17.889","17.694","16.713","16.434","15.354","16.526","18.36","18.128","16.482","15.769","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--"
|
||||
"INTL.33-12-GIB-BKWH.A"," Gibraltar","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"
|
||||
"INTL.33-12-GRC-BKWH.A"," Greece","3.396","3.398","3.551","2.331","2.852","2.792","3.222","2.768","2.354","1.888","1.751","3.068","2.181","2.26","2.573","3.494","4.305","3.84318","3.68","4.546","3.656","2.076","2.772","4.718","4.625","4.967","5.806","2.565","3.279","5.32","7.431","3.998","4.387","6.337","4.464","5.782","5.543","3.962","5.035","3.9798","3.343687","5.909225"
|
||||
"INTL.33-12-HUN-BKWH.A"," Hungary","0.111","0.166","0.158","0.153","0.179","0.153","0.152","0.167","0.167","0.156","0.176","0.192","0.156","0.164","0.159","0.161","0.205","0.21384","0.15345","0.179","0.176","0.184","0.192","0.169","0.203","0.2","0.184","0.208","0.211","0.226","0.184","0.215999","0.205999","0.207999","0.294001","0.226719","0.253308","0.213999","0.216","0.2129999","0.238","0.202379"
|
||||
"INTL.33-12-ISL-BKWH.A"," Iceland","3.053","3.085","3.407","3.588","3.738","3.667","3.846","3.918","4.169","4.217","4.162","4.162","4.267","4.421","4.47","4.635","4.724","5.15493","5.565","5.987","6.292","6.512","6.907","7.017","7.063","6.949","7.22","8.31","12.303","12.156","12.509999","12.381999","12.213999","12.747001","12.554","13.541","13.091609","13.891929","13.679377","13.32911","12.9196201","13.5746171"
|
||||
"INTL.33-12-IRL-BKWH.A"," Ireland","0.833","0.855","0.792","0.776","0.68","0.824","0.91","0.673","0.862","0.684","0.69","0.738","0.809","0.757","0.911","0.706","0.715","0.67122","0.907","0.838","0.838","0.59","0.903","0.592","0.624","0.625","0.717","0.66","0.959","0.893","0.593","0.699","0.795","0.593","0.701","0.798","0.674","0.685","0.687","0.87813","0.932656","0.750122"
|
||||
"INTL.33-12-ITA-BKWH.A"," Italy","44.997","42.782","41.216","40.96","41.923","40.616","40.626","39.05","40.205","33.647","31.31","41.817","41.778","41.011","44.212","37.404","41.617","41.18697","40.808","44.911","43.763","46.343","39.125","33.303","41.915","35.706","36.624","32.488","41.207","48.647","50.506","45.36477","41.45625","52.24626","57.95955","45.08163","42.00768","35.83701","48.29913","45.31824","47.551784","44.739"
|
||||
"INTL.33-12-XKS-BKWH.A"," Kosovo","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","0.075","0.119","0.154","0.104","0.095","0.142","0.149","0.139","0.243","0.177","0.27027","0.2079","0.262826","0.300635"
|
||||
"INTL.33-12-LVA-BKWH.A"," Latvia","--","--","--","--","--","--","--","--","--","--","--","--","2.498","2.846","3.272","2.908","1.841","2.922","2.99","2.729","2.791","2.805","2.438","2.243","3.078","3.293","2.671","2.706","3.078","3.422","3.487998","2.8568","3.677","2.838","1.953","1.841","2.522819","4.355513","2.4170639","2.0958919","2.5840101","2.6889293"
|
||||
"INTL.33-12-LTU-BKWH.A"," Lithuania","--","--","--","--","--","--","--","--","--","--","--","--","0.308","0.389","0.447","0.369","0.323","0.291","0.413","0.409","0.336","0.322","0.35","0.323","0.417","0.446193","0.393","0.417","0.398","0.42","0.535","0.475","0.419","0.516","0.395","0.346","0.45","0.597","0.427","0.34254","0.3006","0.3837"
|
||||
"INTL.33-12-LUX-BKWH.A"," Luxembourg","0.086","0.095","0.084","0.083","0.088","0.071","0.084","0.101","0.097","0.072","0.07","0.083","0.069","0.066","0.117","0.087","0.059","0.082","0.114","0.084","0.119","0.117","0.098","0.078","0.103","0.093","0.11","0.116","0.131","0.105","0.104","0.061","0.095","0.114","0.104","0.095","0.111","0.082","0.089","0.10593","0.091602","0.1068"
|
||||
"INTL.33-12-MLT-BKWH.A"," Malta","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"
|
||||
"INTL.33-12-MNE-BKWH.A"," Montenegro","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","1.733","1.271","1.524","2.05","2.723","1.192","1.462","2.479","1.734","1.476","1.825","1.014","1.693443","1.262781","0.867637","1.212652"
|
||||
"INTL.33-12-NLD-BKWH.A"," Netherlands","0","0","0","0","0","0.003","0.003","0.001","0.002","0.037","0.119","0.079","0.119","0.091","0.1","0.087","0.079","0.09108","0.111","0.089","0.141","0.116","0.109","0.071","0.094","0.087","0.105","0.106","0.101","0.097","0.105","0.057","0.104389","0.11431","0.112202","0.0927","0.100078","0.060759","0.0723481","0.074182","0.0462851","0.0838927"
|
||||
"INTL.33-12-MKD-BKWH.A"," North Macedonia","--","--","--","--","--","--","--","--","--","--","--","--","0.817","0.517","0.696","0.793","0.842","0.891","1.072","1.375","1.158","0.62","0.749","1.36","1.467","1.477","1.634","1","0.832","1.257","2.407","1.419","1.031","1.568","1.195","1.846","1.878","1.099","1.773","1.15236","1.277144","1.451623"
|
||||
"INTL.33-12-NOR-BKWH.A"," Norway","82.717","91.876","91.507","104.704","104.895","101.464","95.321","102.341","107.919","117.369","119.933","109.032","115.505","118.024","110.398","120.315","102.823","108.677","114.546","120.237","140.4","119.258","128.078","104.425","107.693","134.331","118.175","132.319","137.654","124.03","116.257","119.78","141.189","127.551","134.844","136.662","142.244","141.651","138.202","123.66288","141.69","144"
|
||||
"INTL.33-12-POL-BKWH.A"," Poland","2.326","2.116","1.528","1.658","1.394","1.833","1.534","1.644","1.775","1.593","1.403","1.411","1.492","1.473","1.716","1.868","1.912","1.941","2.286","2.133","2.085","2.302","2.256","1.654","2.06","2.179","2.022","2.328","2.13","2.351","2.9","2.313","2.02","2.421","2.165","1.814","2.117","2.552","1.949","1.93842","2.118337","2.339192"
|
||||
"INTL.33-12-PRT-BKWH.A"," Portugal","7.873","4.934","6.82","7.897","9.609","10.512","8.364","9.005","12.037","5.72","9.065","8.952","4.599","8.453","10.551","8.26","14.613","12.97395","12.853","7.213","11.21","13.894","7.722","15.566","9.77","4.684","10.892","9.991","6.73","8.201","15.954","11.423","5.589","13.652","15.471","8.615","15.608","5.79","12.316","8.6526","12.082581","11.846464"
|
||||
"INTL.33-12-ROU-BKWH.A"," Romania","12.506","12.605","11.731","9.934","11.208","11.772","10.688","11.084","13.479","12.497","10.87","14.107","11.583","12.64","12.916","16.526","15.597","17.334","18.69","18.107","14.63","14.774","15.886","13.126","16.348","20.005","18.172","15.806","17.023","15.379","19.684","14.581","11.945","14.807","18.618","16.467","17.848","14.349","17.48736","15.580622","15.381243","17.376933"
|
||||
"INTL.33-12-SRB-BKWH.A"," Serbia","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","--","10.855","9.937","9.468","10.436","11.772","8.58","9.193","10.101","10.893","9.979","10.684","9.061","10.53261","9.457175","9.034496","11.284232"
|
||||
"INTL.33-12-SVK-BKWH.A"," Slovakia","--","--","--","--","--","--","--","--","--","--","--","--","--","3.432","4.311","4.831","4.185","4.023","4.224","4.429","4.569","4.878","5.215","3.4452","4.059","4.592","4.355","4.406","4","4.324","5.184","3.211","3.687","4.329","3.762","3.701","4.302","4.321","3.506","4.27383","4.517","4.17"
|
||||
"INTL.33-12-SVN-BKWH.A"," Slovenia","--","--","--","--","--","--","--","--","--","--","--","--","3.379","2.974","3.348","3.187","3.616","3.046","3.4","3.684","3.771","3.741","3.265","2.916","4.033","3.426","3.555","3.233","3.978","4.666","4.452","3.506","3.841","4.562","6.011","3.75","4.443","3.814","4.643","4.43421","4.93406","4.711944"
|
||||
"INTL.33-12-ESP-BKWH.A"," Spain","29.16","21.64","25.99","26.696","31.088","30.895","26.105","27.016","34.76","19.046","25.16","27.01","18.731","24.133","27.898","22.881","39.404","34.43","33.665","22.634","29.274","40.617","22.691","40.643","31.359","18.209","25.699","27.036","23.13","26.147","41.576","30.07","20.192","36.45","38.815","27.656","35.77","18.007","33.743","24.23025","30.507","29.626"
|
||||
"INTL.33-12-SWE-BKWH.A"," Sweden","58.133","59.006","54.369","62.801","67.106","70.095","60.134","70.95","69.016","70.911","71.778","62.603","73.588","73.905","58.508","67.421","51.2226","68.365","74.25","70.974","77.798","78.269","65.696","53.005","59.522","72.075","61.106","65.497","68.378","65.193","66.279","66.047","78.333","60.81","63.227","74.734","61.645","64.651","61.79","64.46583","71.6","71.086"
|
||||
"INTL.33-12-CHE-BKWH.A"," Switzerland","32.481","35.13","35.974","35.069","29.871","31.731","32.576","34.328","35.437","29.477","29.497","31.756","32.373","35.416","38.678","34.817","28.458","33.70257","33.136","37.104","33.854","38.29","32.323","31.948","30.938","28.664","28.273","32.362","33.214","32.833","33.261","29.906","35.783","35.628","35.122","35.378","31.984","31.47968","32.095881","35.156989","37.867647","36.964485"
|
||||
"INTL.33-12-TUR-BKWH.A"," Turkiye","11.159","12.308","13.81","11.13","13.19","11.822","11.637","18.314","28.447","17.61","22.917","22.456","26.302","33.611","30.28","35.186","40.07","39.41784","41.80671","34.33","30.57","23.77","33.346","34.977","45.623","39.165","43.802","35.492","32.937","35.598","51.423001","51.154999","56.668998","58.225","39.750001","65.856","66.685883","57.823851","59.490211","88.2094218","78.094369","55.1755392"
|
||||
"INTL.33-12-GBR-BKWH.A"," United Kingdom","3.921","4.369","4.543","4.548","3.992","4.08","4.767","4.13","4.915","4.732","5.119","4.534","5.329","4.237","5.043","4.79","3.359","4.127","5.117","5.336","5.085","4.055","4.78787","3.22767","4.844","4.92149","4.59315","5.0773","5.14119","5.22792","3.59138","5.69175","5.30965","4.70147","5.8878","6.29727","5.370412217","5.88187","5.44327","5.84628","6.75391","5.0149"
|
||||
""," Eurasia","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
|
||||
"INTL.33-12-MDA-BKWH.A"," Moldova","--","--","--","--","--","--","--","--","--","--","--","--","0.255","0.371","0.275","0.321","0.362","0.378","0.387","0.363","0.392","0.359","0.348","0.358","0.35","0.359","0.365","0.354","0.385","0.354","0.403","0.348","0.266","0.311","0.317","0.265","0.228","0.282","0.27324","0.29799","0.276","0.316"
|
||||
"INTL.33-12-UKR-BKWH.A"," Ukraine","--","--","--","--","--","--","--","--","--","--","--","--","7.725","10.929","11.997","9.853","8.546","9.757","15.756","14.177","11.161","11.912","9.531","9.146","11.635","12.239","12.757","10.042","11.397","11.817","13.02","10.837","10.374","13.663","8.393","5.343","7.594","8.856","10.32372","6.5083","7.5638","10.3326"
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
34
data/era5-annual-HDD-per-country.csv
Normal file
34
data/era5-annual-HDD-per-country.csv
Normal file
@ -0,0 +1,34 @@
|
||||
name,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023
|
||||
AL,73,70,62,70,74,64,59,65,62,57,56,58,65,67,55,70,58,59,61,54,54,62,62,62,68,59,60,57,57,58,61,57,64,60,61,61,54,63,57,65,63,58,61,57,57,58,61,62,56,53,67,62,62,53,61,61,60,60,56,58,57,53,61,58,65,64,55,55,54,53,58,58,50,46,54,50,54,47,49,50,54,74,47
|
||||
AT,448,429,391,433,413,406,403,399,376,383,374,416,379,422,419,449,387,393,378,389,367,437,425,406,424,376,385,400,409,413,394,407,408,379,384,400,380,414,405,428,397,384,377,411,420,406,409,378,369,372,415,373,383,334,380,416,371,373,368,343,371,337,370,370,384,362,333,340,351,388,337,353,358,302,324,336,347,315,320,322,358,456,307
|
||||
BE,107,109,89,104,96,100,101,90,92,101,95,105,94,102,109,113,91,97,88,89,84,111,114,100,100,91,94,101,102,101,96,102,101,90,97,97,92,103,108,105,99,94,96,99,112,107,108,85,84,83,101,92,94,82,89,110,90,89,84,79,89,78,89,90,87,86,76,87,87,107,75,90,99,69,81,88,82,81,80,71,89,107,74
|
||||
BG,358,373,318,329,339,331,304,319,305,299,283,294,334,367,295,363,306,283,320,268,277,303,324,313,323,259,297,292,320,286,300,306,323,303,296,314,287,310,293,326,301,312,295,306,326,313,333,320,276,272,332,303,318,266,307,335,325,303,273,275,284,272,322,277,298,296,259,266,266,273,313,295,258,250,261,265,281,261,232,250,277,372,228
|
||||
BA,192,189,158,181,181,174,168,168,167,155,144,164,167,183,158,194,157,157,152,143,141,173,180,176,176,155,162,157,165,165,163,154,170,156,153,168,145,170,153,176,163,154,157,159,167,160,166,158,146,139,174,152,162,143,157,171,156,158,147,132,145,130,156,146,164,148,134,132,139,147,144,147,133,113,137,134,144,128,125,127,141,179,116
|
||||
CH,245,231,213,239,230,222,215,217,210,212,214,225,210,226,221,240,211,215,203,214,200,234,231,214,229,213,217,219,225,227,217,221,224,213,216,220,208,219,220,229,216,208,208,227,224,217,217,200,202,200,217,204,208,183,206,217,195,205,203,192,200,189,199,204,209,193,187,194,193,213,179,196,204,178,181,189,191,174,184,176,197,245,171
|
||||
CZ,373,366,311,341,326,330,353,313,299,316,297,344,307,351,350,377,313,322,301,314,294,358,361,345,351,297,296,320,342,336,319,326,322,282,296,315,299,330,328,347,316,308,298,323,350,326,346,297,280,283,333,299,316,279,312,364,319,296,288,265,309,285,308,302,311,300,269,275,289,338,281,298,306,242,261,283,287,262,255,259,302,378,248
|
||||
DE,1563,1537,1250,1388,1316,1354,1464,1255,1205,1315,1254,1428,1237,1416,1484,1567,1282,1342,1229,1266,1183,1486,1528,1390,1399,1269,1211,1341,1447,1429,1300,1388,1356,1184,1258,1339,1221,1377,1433,1433,1348,1288,1273,1384,1492,1425,1491,1201,1156,1135,1367,1241,1312,1155,1295,1548,1288,1220,1172,1085,1250,1168,1269,1236,1239,1198,1072,1159,1202,1459,1112,1232,1305,992,1095,1188,1148,1092,1070,1019,1230,1509,1021
|
||||
DK,200,198,151,167,158,171,185,158,142,164,160,176,152,175,186,190,163,178,154,169,154,184,194,176,182,181,153,170,182,186,159,166,159,147,147,172,161,171,190,177,175,164,155,162,191,181,190,151,137,132,160,147,166,154,162,191,162,154,147,134,161,148,158,151,150,144,134,137,150,193,144,159,160,125,138,145,139,142,134,125,150,193,138
|
||||
ES,1045,986,927,1012,830,994,860,807,904,853,962,911,927,948,785,1092,934,848,821,890,742,952,981,967,949,878,890,839,933,899,971,961,943,931,928,928,797,906,887,911,793,787,807,920,860,891,781,783,684,767,911,852,889,724,627,759,605,735,796,750,757,677,746,813,856,714,776,785,736,856,673,810,830,649,684,722,688,768,708,672,728,933,655
|
||||
EE,373,352,266,284,307,298,320,274,250,285,297,310,283,297,321,336,278,310,281,305,253,298,323,292,306,324,283,310,333,317,285,285,289,256,245,327,302,324,299,313,289,278,260,271,328,294,332,281,232,240,257,257,285,288,265,306,281,278,262,235,273,271,278,270,270,260,250,230,268,315,253,286,259,254,225,261,255,254,235,209,270,365,246
|
||||
FI,3989,3729,3012,3160,3611,3348,3577,3151,3012,3213,3285,3442,3085,3179,3880,3819,3296,3626,3180,3386,3065,3513,3467,3329,3526,3873,3284,3693,3640,3494,3572,3178,3458,2963,3074,3691,3490,3743,3419,3607,3572,3331,3296,3192,3894,3516,3793,3402,2888,3075,3209,3163,3319,3341,3213,3343,3302,3468,3259,2915,3303,3307,3231,3159,2998,3101,3018,3009,3219,3604,2961,3351,2985,2983,2795,3030,3127,3061,3116,2726,3260,4325,3109
|
||||
FR,1671,1578,1350,1586,1458,1490,1421,1336,1381,1447,1430,1480,1422,1489,1396,1633,1338,1378,1240,1332,1196,1584,1630,1499,1471,1331,1408,1412,1473,1469,1475,1453,1545,1356,1462,1445,1312,1454,1502,1545,1396,1315,1424,1484,1599,1518,1520,1269,1237,1227,1501,1375,1389,1168,1280,1454,1222,1337,1263,1190,1299,1132,1294,1346,1376,1263,1199,1301,1277,1522,1060,1300,1408,1034,1143,1266,1236,1150,1165,1043,1279,1535,1075
|
||||
GB,946,965,835,869,773,860,910,819,781,890,906,934,809,901,925,935,813,890,787,849,825,1000,1046,912,970,917,839,874,894,869,805,880,862,842,838,851,863,873,972,880,896,823,824,838,923,944,903,801,764,746,859,824,857,793,794,886,738,752,745,771,816,726,751,743,748,734,706,790,777,930,707,832,841,683,759,769,720,764,750,725,764,985,690
|
||||
GR,218,222,205,217,223,201,166,200,192,177,166,162,210,211,160,215,184,169,196,164,172,182,184,192,199,162,185,176,171,164,184,185,195,186,188,190,160,186,172,191,184,192,190,179,174,180,194,193,176,165,206,197,195,161,179,191,192,180,167,177,174,164,191,172,184,189,161,158,155,143,188,179,148,136,165,150,164,139,146,148,156,230,138
|
||||
HR,160,166,131,147,151,147,145,138,127,131,116,140,140,155,137,166,131,132,122,119,114,149,158,152,144,124,133,129,143,138,137,131,144,124,124,139,121,140,130,149,133,132,130,133,148,141,144,128,118,114,143,123,138,115,126,145,132,129,124,106,120,109,135,127,140,123,109,110,116,130,123,123,118,92,114,116,119,111,102,105,119,153,96
|
||||
HU,304,332,268,281,302,285,297,277,251,262,236,291,282,321,289,333,272,273,246,248,235,288,321,309,298,244,272,268,293,283,276,264,283,244,255,281,267,287,271,311,272,282,265,274,313,294,305,274,243,238,299,262,288,240,271,310,291,272,267,232,269,243,300,267,289,265,229,230,243,275,267,259,250,198,235,251,255,234,211,228,259,331,211
|
||||
IE,219,217,194,196,175,204,220,191,176,210,216,215,191,208,213,211,190,204,184,205,195,234,250,208,232,210,216,213,222,214,190,226,204,213,198,211,210,205,239,212,209,204,201,211,229,241,217,200,192,192,209,209,213,201,195,219,180,186,191,204,206,189,192,193,187,188,173,202,204,241,192,205,210,186,205,199,184,200,191,194,189,258,166
|
||||
IT,806,757,663,758,734,704,693,675,666,652,652,683,660,700,615,778,640,653,616,631,587,715,726,674,710,665,655,656,682,672,678,639,695,659,655,670,604,681,675,729,684,645,657,695,688,671,676,630,616,610,712,626,650,555,623,639,578,618,619,563,585,546,629,612,675,597,548,568,590,637,562,602,587,481,541,528,570,529,540,520,577,746,495
|
||||
LT,439,424,323,336,358,357,382,323,303,336,344,371,342,368,368,405,318,353,329,346,303,355,386,362,371,354,322,365,401,372,330,345,339,312,289,388,348,370,370,382,342,326,301,326,393,352,397,335,275,272,313,311,336,329,325,377,335,325,306,274,323,313,328,324,325,316,299,277,316,366,305,332,314,298,273,308,296,302,267,252,327,431,273
|
||||
LU,10,10,8,9,9,9,9,8,8,9,8,9,8,9,10,10,8,9,8,8,7,10,10,9,9,8,8,9,9,9,9,9,9,8,9,9,8,9,10,10,9,9,9,9,10,10,10,8,8,8,9,8,9,8,8,10,8,8,8,7,8,7,8,8,8,8,7,8,8,9,7,8,9,6,7,8,8,7,7,7,8,10,7
|
||||
LV,489,461,348,366,392,389,413,352,325,369,383,402,372,394,407,439,351,391,361,384,326,386,420,385,402,401,360,401,434,407,361,372,371,337,316,424,385,411,392,411,372,357,330,354,425,379,428,362,300,301,334,337,366,366,348,402,365,358,334,302,353,346,357,352,354,337,324,300,346,402,330,365,342,329,297,337,330,328,297,272,351,473,308
|
||||
MK,83,80,72,80,83,75,69,73,72,67,64,66,74,79,66,79,67,66,71,63,64,72,73,70,77,66,69,66,67,67,70,67,75,69,70,69,62,72,66,73,71,69,70,67,69,67,70,71,65,63,76,68,69,59,69,70,71,68,64,65,65,62,69,64,70,68,60,59,61,59,67,66,56,53,61,58,62,54,55,57,63,85,54
|
||||
ME,52,48,43,48,49,45,43,46,46,41,40,43,45,48,41,50,42,42,42,39,39,44,45,45,48,43,43,42,42,43,43,41,44,43,42,45,39,45,42,46,45,41,43,42,42,41,44,44,42,39,47,43,43,38,43,44,42,43,39,39,40,37,42,41,45,43,38,38,38,38,39,40,36,32,37,36,39,34,35,35,39,53,34
|
||||
NL,132,136,106,120,109,119,129,107,106,119,113,126,110,121,130,137,108,118,107,107,104,132,141,121,120,114,105,119,124,122,111,120,116,104,111,116,107,120,133,122,118,112,110,118,134,127,130,99,99,94,119,106,113,102,109,138,111,102,97,93,106,98,109,103,100,100,87,102,103,131,93,108,117,82,95,104,96,98,93,85,105,128,87
|
||||
NO,3658,3823,3379,3441,3537,3479,3726,3442,3268,3480,3339,3541,3020,3307,3639,3731,3315,3547,3122,3353,3400,3807,3641,3496,3783,3951,3259,3533,3425,3431,3339,3128,3312,3028,3094,3405,3369,3436,3457,3380,3502,3181,3141,3117,3541,3359,3449,3200,2890,2848,3057,3032,3196,3207,3170,3301,3060,3203,3062,2878,3166,3028,2983,2943,2874,2828,2918,2954,3018,3442,2796,3157,2946,2754,2793,2859,2963,2930,2981,2711,3035,4108,3040
|
||||
PL,1615,1584,1275,1356,1364,1378,1517,1290,1230,1296,1249,1438,1294,1478,1446,1586,1279,1349,1269,1305,1215,1435,1527,1450,1467,1280,1193,1321,1504,1431,1293,1347,1314,1200,1184,1419,1270,1393,1431,1491,1336,1265,1178,1304,1494,1377,1507,1255,1077,1078,1312,1252,1310,1197,1302,1512,1326,1249,1171,1052,1268,1192,1296,1230,1262,1244,1117,1092,1220,1426,1177,1274,1251,1068,1063,1163,1158,1120,1019,1017,1252,1599,1033
|
||||
PT,114,114,102,113,86,110,95,79,94,96,107,103,99,109,80,131,106,93,93,97,78,106,104,115,103,98,103,97,112,110,115,116,106,109,109,109,99,139,107,102,89,90,95,104,99,108,85,89,75,87,104,96,104,85,66,88,62,82,96,90,90,78,87,97,103,90,91,91,84,96,80,101,100,81,79,87,79,96,81,72,78,98,75
|
||||
RO,931,939,801,813,874,851,839,815,799,780,736,811,883,948,822,968,810,789,826,731,744,826,890,867,873,706,791,776,858,792,787,798,838,782,752,855,772,836,780,880,801,811,763,807,917,815,882,827,710,700,846,801,848,701,806,869,842,805,740,710,760,721,844,754,799,780,684,695,695,757,793,781,709,662,681,721,720,690,624,648,740,973,611
|
||||
RS,292,305,246,274,285,276,265,263,261,239,222,252,273,300,249,313,248,249,254,231,226,270,283,271,274,233,253,243,267,254,251,246,272,242,243,265,233,265,241,273,251,255,244,253,275,256,268,254,231,220,275,243,263,223,250,270,259,250,237,217,234,217,262,238,265,247,217,214,222,229,251,244,214,192,222,223,232,211,197,212,234,306,192
|
||||
SK,221,219,199,207,209,201,212,202,189,189,178,210,195,217,208,228,192,193,185,185,178,208,213,211,219,179,187,192,203,200,192,188,195,178,178,197,188,204,193,215,191,190,180,193,212,198,207,187,172,173,202,186,191,171,186,204,193,184,177,162,184,174,190,184,191,182,163,161,170,188,175,179,174,142,161,170,176,157,152,158,180,231,150
|
||||
SI,81,77,66,74,72,71,72,69,61,65,61,72,67,73,69,78,65,66,62,61,59,75,75,73,73,62,65,67,71,69,67,68,71,62,61,69,62,71,68,74,67,65,65,69,73,71,71,63,59,58,70,61,63,55,61,71,63,62,62,54,59,55,65,63,67,61,54,57,57,65,58,59,59,46,55,57,58,53,52,53,61,77,51
|
||||
SE,4509,4537,3713,3939,4134,4059,4374,3918,3633,4015,3891,4219,3560,3919,4426,4488,3950,4223,3662,3988,3814,4451,4260,4021,4358,4613,3929,4280,4255,4254,4043,3806,3975,3634,3625,4238,4132,4314,4246,4287,4301,3913,3840,3819,4588,4139,4376,3931,3476,3446,3785,3695,3893,3991,3916,4073,3757,3950,3781,3446,3898,3778,3755,3769,3632,3561,3606,3590,3806,4397,3474,3935,3675,3452,3421,3635,3693,3705,3689,3247,3807,5084,3769
|
|
34
data/era5-annual-runoff-per-country.csv
Normal file
34
data/era5-annual-runoff-per-country.csv
Normal file
@ -0,0 +1,34 @@
|
||||
name,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023
|
||||
AL,18102.536984526414,9362.260840506311,6061.862820153789,14283.904408113205,9819.184491956023,10228.254519456263,13788.284450369407,9581.270108803017,7938.384836547995,9040.045836743586,9921.845743062182,13900.722955927391,9710.931748556879,10574.663320350839,19341.246363906943,17818.135264440367,11442.713887022777,18086.801216289034,15090.128262650946,21363.26299103702,9091.698545327283,15645.252953546536,26744.08978638467,15193.032691775385,15984.127347228396,21350.165383112253,12855.252167834218,13420.929958145927,18491.92173822311,23127.97840031047,15647.322475185589,18621.138651647332,15899.845988546795,17394.46706381624,9941.517004312835,15056.517227865626,13546.145796746823,19078.487245825123,21734.889469128113,18681.018783118114,17330.7404590047,11854.58505075189,8621.019687739607,10958.633158319248,11928.114867207425,14053.437518158384,11478.547049310142,9794.162917024925,9309.704198107493,7531.383319836307,13417.032891488734,9396.693750356952,9409.269914411027,9602.245346872442,13721.093186096236,18546.848247572612,10075.274288997707,13160.130634381218,14979.3178626011,11173.442130939595,10656.167120597063,11333.102860367679,12218.649211273396,16968.134523176956,13531.444805168734,12351.485474236735,7777.709342414358,9395.578415692386,13162.74078695902,21279.522933687273,7131.262505063414,9979.8596278608,14852.708775826433,10550.911120633964,9976.081734060937,14930.01135394502,8322.107101243482,14871.511785547276,8735.240828081134,9201.521447196284,15965.927842545672,17077.541703886527,14104.446634983404
|
||||
AT,86531.51734236983,70042.82795415918,55673.922583448926,73201.56141483008,77917.51024365649,61393.73261184873,55048.20583071285,91666.41522182143,63572.87951011166,70463.32537160354,82083.36248472283,77811.80736180999,72623.28291775129,92135.9214601233,96990.37023646115,85097.60090834703,90540.2512560922,87926.80279582532,87840.33332785149,95771.51050456028,80100.0597367668,89961.83970292915,94250.95465501286,83836.27750897587,127502.64206362939,114305.16098508416,109841.9915507258,94950.56912780282,78607.44609072198,109558.29937241938,70075.51296406337,91798.91825728992,87743.39136454638,99172.3185471974,112079.92282492586,77403.35720896415,141634.05110901658,127491.44958971704,103513.31397365611,94072.4808516721,90719.06004331182,74178.70850428617,71954.43763473642,75430.93523721115,83080.51606488624,68680.54577957527,88997.37641681913,78365.83036558417,88108.35920540475,70055.7892534604,83590.790849829,80943.05621285089,88054.73669568839,64323.72991620271,76516.31784700113,88537.52869871816,74980.7275243927,76703.23963260197,90699.65433828124,82618.46892777775,70279.06284438398,76864.90473420777,38883.771847486016,64333.37459685728,71147.24783545699,61897.64030624322,56722.92181769331,64364.47029441406,80300.64217575881,73731.45518976511,60840.309523971024,77575.9681355992,74925.98195655535,87076.27014563217,55659.14157544586,71826.27744178762,65790.17399828041,62758.61938425757,63451.07652587882,63443.71962749899,60531.78695214822,73567.34222821795,63977.67627260971
|
||||
BE,1961.4766789766115,1152.2739476527088,818.2925521347668,792.0469723263222,1593.7272156934505,1164.481755817633,873.079191781097,1304.591358175381,1034.616549532147,1222.8331458954544,2265.3933295931465,2299.7187477495568,1601.6287456097295,903.9162052526016,1681.6717933948885,1553.0826978024484,2040.8513201770277,2596.453742857211,1572.1256345899858,1777.5813929080084,2626.96550179367,2109.9419394561014,1095.552430877252,1153.3090754765356,2926.2047527605378,3273.3444811813465,2455.1462895729287,2709.4254348359373,2044.223080485547,3206.6821776003253,1403.4368531879622,1739.01009962226,1509.0861879549796,2489.4865224203572,2440.1073430603583,1152.6261514941527,2218.937185944037,2759.156597708309,2657.6330859359005,2904.764428136616,3657.83503348807,2493.2486286738635,2917.270148862828,2660.3113890881846,1897.0141168954808,2027.0116832611525,2822.5902787959144,2964.8457470488684,1943.761175974426,1192.1713008070133,1419.0119225208746,1475.2557281855488,1769.9742186132778,2647.8931490311224,2842.9882619071104,880.5015070232031,1197.5019163599245,2093.4616667083587,2614.387699318041,2455.605567526133,2964.8707630509653,2512.265466519676,1585.2842393930487,929.2255532772314,1281.2863306004592,1121.936801130382,2183.018089275124,2209.175694512598,1603.8823576630593,1544.7801250586733,1495.8450265096008,1698.4561860883377,1826.3476500921734,1803.4120415623293,1828.4613155494794,2424.4009518987536,1091.1596112517386,1814.2183897620703,1171.4609814371709,2056.8674333110275,2031.8962335362714,2907.836627473,2067.170862372187
|
||||
BG,17071.604805088016,14499.026058918833,7232.927769745818,11963.806716811183,6134.985167502051,6976.20752617876,9144.48113078865,10476.930594688338,7275.174931794049,5983.600586215025,7806.165358407907,7617.879584469116,9313.915986883927,12665.103843530671,18165.703005314856,20925.111917073817,12315.95137614649,14307.215196342033,11652.743586791588,16042.778215050708,15000.011504505326,15411.367697482856,23959.284980030086,13749.537818599603,14477.782616320155,19301.913180173906,18779.64649297375,14471.754083245778,21905.976678210158,20337.934359162857,20009.368056844236,22642.8256575709,23291.544303799303,14596.266505770593,16672.574320967968,18465.93977853061,15123.0740003407,16401.953223276385,17509.31598177905,19228.19892146255,14599.539868168713,16192.551398587811,14129.882713144674,15395.87601647586,11853.583066311567,12273.885630367266,13296.879487675578,12962.17913948413,10178.141531948864,10101.748861881337,17833.95419276747,11290.360773903032,7050.797194092144,7109.831367133397,12879.727662239184,15849.231621819281,14036.330428384765,14600.701492135015,14377.532715491632,7705.7385359122845,8414.14109970378,12768.14503989922,11390.56673556146,10492.153643864705,15665.526881990423,13518.231074072748,9896.670696858979,8514.724851169687,10495.74229946015,14331.982881842356,7228.669024198985,6779.132502990354,8418.829006301234,16447.848686603495,15740.35987338571,11179.883037182273,8789.581276892988,11591.504961624405,6993.71096793164,8046.946588923506,10797.966046345515,10462.980330774792,8581.638814176174
|
||||
BA,31614.29255116213,25762.18251896169,12898.683737355397,30643.34571996033,20289.25506629573,16692.532556519098,20416.06449106326,23823.10383354778,16264.762900161431,21522.105898137404,23467.52324346034,27732.028396263388,21355.39127202247,21518.57483169428,38198.02048713121,26864.382517947488,20815.045478598513,30820.77172304343,26041.454718573805,32434.848569531026,20613.68138756547,29427.6067241259,33216.04695823398,35126.00882914745,35434.02869793576,33198.240125653894,27292.13451964922,28870.288475787063,34855.527471322755,40158.11721181478,26000.45986387781,30818.815452611776,25386.059210704487,29741.547122355205,28211.934365516674,30030.474291377286,28262.88980319508,36551.088477619196,29006.131913946814,27659.528119372964,23600.138376555304,18313.888493525537,16009.416242480263,24722.92263318226,19189.890721764787,24683.705818314953,20989.732351804592,20569.866983400992,18470.90664070533,14851.755901997987,25891.954823722892,19819.186826010166,18921.820235243023,20522.576037546467,27525.961934821684,30713.034955646464,21412.918614981576,21344.870107122344,26543.94285666588,19942.69654945001,23180.52553450498,25225.421682786062,17217.841128593398,25342.758536033023,22647.27040540609,20311.586220306715,13360.715771642963,18725.9052067595,21814.111731615874,31110.03238839381,11170.209355889527,11624.972537489217,20618.808518471225,26321.87815471064,18023.46871599901,20293.60245322545,15351.515268991054,23732.8659965382,19641.494693119246,14018.69083089969,18476.061736021245,20106.92588679312,25396.55419340511
|
||||
CH,71147.26157637448,54904.32201155619,50017.90208838156,60290.759721214985,73027.45831149221,73481.642346746,55618.537744757035,90032.09246974687,51962.38939916655,67177.84116696635,96134.70662377033,78280.50065735803,75567.82823680741,75624.52378636891,84437.3353706146,82858.22758683441,70824.92066589095,89311.09471805945,65693.73271567532,95736.9646979805,81823.38979168108,71941.93730231738,93291.72439376163,67130.87226350856,103459.16116112942,100678.84780651607,97724.23622167954,103707.47043615916,84031.35407618036,103162.60292359442,67550.72288370335,80436.85045155323,87045.62560332651,91431.67032188186,103676.61542793321,68303.04781353423,112322.8911282786,90003.61666202937,91028.65800738563,79435.56403729375,84362.27602442491,71967.17653868764,71356.17066607098,70327.74412176231,72852.24726422041,60501.17532436925,83372.98013161327,74234.0349385613,61890.14596593614,54336.52856303606,58271.018596959824,62644.46734396249,75790.31562737533,69637.43067630196,63290.99710001813,60360.96649160057,57476.7610131337,62343.013781750116,78693.52307555292,73667.98513148604,75122.7031133837,70327.33051388402,33043.59766466136,48968.55545142022,47632.62274536815,48588.59714178414,58398.342285916435,57742.38347363473,42559.51792407362,59408.23894223828,57129.80243604273,71163.63652517287,70858.4268509181,119263.66699527185,55000.17388464577,60563.73895679769,51249.64855691976,45607.547672961526,60542.786248766475,50488.945849740405,62587.04259357905,67091.5970044437,65549.52567888667
|
||||
CZ,21212.78579882691,10928.058379661825,3384.888399390222,4480.397678992209,6399.719467990146,6768.6515946008185,5799.446185009577,9411.786777037812,5860.23463242501,5599.396992120427,5741.811363153907,6430.8701452824125,6608.002211449021,5547.98412657507,11139.03676570244,9975.869136026628,10340.80877548634,13532.930674695574,7705.735677184478,7812.801872929193,10964.355351867012,10646.504003233118,9719.560436989883,9722.51782291833,19015.37334991238,15549.667939948402,15927.255735311868,12882.876953226223,10353.403919517015,11853.576269226234,10677.61771918624,10413.95103805089,6895.283030051313,9424.903567027312,12922.392855988994,9137.874616036986,17532.348544152504,18533.830228515635,15250.542039808313,10190.043701741004,11537.335951365127,9452.574932230946,5833.228549596612,5329.206957903766,7580.6976645678615,7069.4638232187235,11641.01844987317,9790.145937530902,7320.767578365769,5406.873869997462,5625.637231646826,7239.835546851702,6440.471526964078,10089.617439184036,12468.55796361433,12603.058166229213,11520.381274473184,9364.18293733304,10411.740148030329,8903.525346614548,9434.353552398077,14463.707947162726,8297.335864348554,6305.0428212307515,9383.102792968806,9420.905095490103,7053.530866655102,7934.504156979587,9131.766698685136,11027.709419784474,7973.011990884055,6406.065926850977,10728.184944007047,6645.433895571247,6345.82145823084,6499.675988954033,7016.463805946017,5619.135413529,4807.786670051716,5785.96568493957,7986.497102061061,9207.147123091028,7072.340654546769
|
||||
DE,60501.03103951161,38175.41955606091,20879.426305645527,28284.75340336476,36103.32351052005,34891.089702429555,28788.726755549767,47593.248184570766,29278.51011479424,29170.60074491641,37514.09293381361,41854.44001450301,38958.042582957896,35908.26729908446,54302.825387264325,53900.0627595872,49537.22949846474,58655.764340031456,37627.8257805545,42967.11131060519,58392.899587658314,47246.42956098116,36543.949785170116,36184.44504543948,76454.75505815547,77563.28089874369,65706.46393994696,62713.75591115003,50646.052126013274,74501.93068438585,33965.80961685558,36936.195615288314,42537.597915180464,56616.68921207296,56744.68927682596,34807.98202654087,56642.02192030585,72249.78534694383,61866.53633607989,55155.47864420242,60392.13262306467,54016.67652252674,53772.61604029787,44957.681101902934,45340.54136937088,48213.458592237475,66703.44582319073,60862.17019199549,41014.24992391146,32890.656129618095,33561.7114818598,35496.398391557115,43529.12222860253,55750.09930602895,59293.24549493131,37708.06634825865,37073.71374151417,42227.76427477898,55642.269571505705,50261.32889407123,50099.1653624443,63663.80803911536,33932.84222448403,24148.0930626651,39327.588161226195,34424.75266875371,37774.7468462978,39904.36386097259,38761.37664135111,43371.39725264248,35879.97041420226,37163.99533546333,50391.241894760955,37073.97568394232,36139.75677566728,42435.96482981362,34097.15586833773,36767.50341472353,28228.762854078665,31841.550922412007,39703.58319343355,47521.52513933251,37833.900158720804
|
||||
DK,200.778317198711,183.58783222570864,184.92589840547043,103.64850861603549,315.2220887719417,314.1000544312628,214.28103955721934,161.43191114338694,185.2111475627714,358.69279426367336,540.6494487174206,225.87222027671936,240.57818634617777,370.37587945377,297.48979685029366,176.69208006156848,208.79213770008658,418.4554011794129,292.8102234525168,354.1220188699609,405.97396851309696,497.6042583966885,394.062076725445,291.3295691524654,304.5438623304028,591.4756757289098,629.1912050409122,479.19182164984767,353.75286712188796,454.0799499391422,338.48620130918835,357.676218196066,271.5200039604648,288.04880490856954,389.1757124784286,200.03398963977796,391.555913715114,397.29527898061724,379.8043799580585,514.7861201159348,505.7304478209306,381.57816134966373,489.3522161731293,301.717309458533,340.1024114463131,377.00536197863613,349.05617800662674,489.4227950883326,223.23589869898433,269.17110101837187,288.12441629799764,229.5796362727797,293.635637901186,464.89056739838395,386.583686695923,100.62743648672041,155.50324274468716,357.89273417380645,451.04208007822723,403.3432275318107,376.8995908622044,395.3896113505339,169.30459202493293,211.16687292699712,238.87912856891634,225.9981737610454,469.5229598902774,334.5021223766927,213.88993390188736,267.6283833775911,319.04746406617295,376.09256801086406,317.617725512616,353.26516627601364,404.2285931109035,408.5235836651241,351.86517079981496,305.15203377590285,361.8170659996248,441.45504335438466,312.14518786073575,466.99320427604425,510.02659659134173
|
||||
ES,78876.635611407,38950.09623429436,33841.47292664868,23156.438140457663,24925.319205598968,36553.92702862067,59420.41145835762,44448.20001757085,23003.718514410986,25989.029770929596,49381.7181466273,42506.42487287232,29823.22966835847,33520.89863652133,42189.87541544434,45018.59980204108,27387.4917761516,45602.58407624375,62626.425244916936,94141.56249288519,66884.65469167147,67115.06386526441,82553.38984370838,62483.82642486853,54633.78478265801,97009.71651609142,47073.863176177474,55800.125131342014,85746.55555964066,72028.42027117872,75395.28981871007,97165.39237066667,52196.13272216457,55183.75674414718,44434.367388636274,45688.29479796517,107175.1885102772,376352.4882722023,122222.92956502433,46652.32256081546,42283.296882354574,45745.627884904505,49745.69531403085,62249.891346371536,58920.93920695715,48705.91089393512,49506.55303300167,60104.870297070986,41417.79510072781,40561.22111509541,48584.70074175896,41980.59062088254,40901.640882458836,43899.80095828514,42846.07384845135,68844.74333042726,58684.98840324564,44556.941393617584,38670.78308215774,46815.51322723987,68212.19494117319,35011.91030341564,50475.76713743041,37227.78564631605,21874.579431867896,35771.95151620915,29462.81813629621,28957.890173503936,32351.242924601538,48787.03990347552,31409.59113067243,24367.630996980257,54440.48961905899,50212.19464108009,33563.81874118821,47043.00929278407,21662.04001863739,49011.344970588914,40719.843457258816,40971.905822060144,45241.676643808205,43434.78481736922,37030.44475893774
|
||||
EE,539.9157561831089,506.40067622283726,641.2579701177458,634.8633672657788,801.3715228148297,966.9758840524717,584.81736437269,583.7023862826877,945.7850249371241,794.7615397417561,1013.5168183220601,680.8524541483096,896.074617741102,657.0814978199126,1138.8891299468455,1033.2360728791764,1360.240006093535,1004.6950457068739,934.8774758153143,610.9977141696028,1048.0576885162222,1477.5046721309996,819.8347754595931,595.9919701101757,664.1717649435486,1178.672290642306,1112.7122616720162,1003.3658496852601,739.8499843054013,970.7396668771637,1156.5986195943308,988.0643633892423,963.0153554345143,973.0118510683724,980.7669857762866,637.7376743732589,1121.0664931638019,1485.3090062847518,1014.4287893275732,701.3843644468006,1196.8127434491068,1136.1215677919786,956.0911286121622,761.6620263988196,1109.6559596693944,945.8137139982223,1246.4435124663337,1081.0063689141978,1180.9951778617858,1433.4526339800395,1044.4962572791317,875.9289554452553,699.3911738148247,770.5276589427534,923.6083617038047,353.16555295606884,572.4961222214871,770.5595680360855,811.3520528619258,480.6204379373417,526.2783934002991,624.0252970776874,317.7449195254128,502.6073570248072,523.2149143909173,201.10844695565802,516.5064948459781,787.1638506300568,929.6905631193786,943.6792182991617,682.831069893961,933.1072250631543,692.097322772721,449.72254117947216,392.4173074585239,635.9676582877272,753.2897252561945,692.2577760060705,496.359994444626,685.8431112730673,512.1207984775516,963.0464221974397,483.833486345915
|
||||
FI,19863.633124385666,19889.46363566243,43612.48513693398,40476.15110774358,37963.60387525601,30946.988617446677,26642.94999177761,35266.32524904611,44524.796955378566,33134.502072929165,37605.30609105331,44212.92045299994,43354.55443946037,40909.90249435943,45502.4817028443,31224.476747778986,41198.39417754888,37433.6293362709,28205.152814527217,22733.614552593714,36790.55908786393,45364.155643266684,28818.806516416316,35920.468538637644,43898.27049057533,41064.81684006838,48740.383821508905,37939.33952866352,30918.72594548001,32676.177851908644,33754.05667642144,33605.2810320407,40213.26757169686,46999.65997165162,40988.91471061698,26205.15827640759,41167.74001571865,25866.031354509407,34538.39918373158,28474.82496101674,52752.27216474974,31970.598763267328,35752.18054352296,34628.515223969094,27958.317625583102,31764.196982878522,30015.16030263079,26346.04561795855,37548.80632649389,27745.021972655202,27337.35846234453,42346.93155636462,32896.698992597754,22520.879762748657,23208.41547315833,19884.31515309925,22475.195958848508,33947.011695157635,26939.65172877202,32198.274008146243,28319.0878193112,25068.601753935876,16735.56947336933,29510.104024439464,31518.153863523567,22455.334677451585,28461.18834411878,38706.997170480194,29619.48059832548,29700.763598820195,30127.95453034573,45678.82538666528,31580.034602099753,29256.819253905658,43076.06538538077,49489.04536337738,37281.852766328535,33818.560580958125,35465.53242057822,41410.545080415,41567.72109759498,59630.270126901065,45592.22770628446
|
||||
FR,104970.07553291276,54987.520121202884,58127.609672438644,63952.96688103039,76761.15501948349,76267.11605975665,80986.06867218221,93733.93578796726,58479.255039973585,73543.6737690567,135094.49763612094,106772.95460342853,80280.31347296045,74490.3783289433,106687.24245156738,78827.6552216503,82482.11027901788,110101.24506868717,102231.57173723538,134019.59611286796,107848.78158188045,101612.59295931137,120079.53146371644,89568.66448178052,139585.30725052828,153772.55334552698,108799.90779570332,132530.25240249874,145056.24077647954,157344.40874499045,121182.68180087653,135378.15307040678,100408.75538533325,132164.7891142495,122382.6612084835,103706.50937621434,174240.52624537304,149853.10658224527,139992.58441391244,124892.14391178945,138893.07653615897,136102.17909683278,136298.85434619425,112484.75227834118,103842.75366698352,105453.40277549413,121935.76619549586,138379.45234918175,71924.60006455882,68830.14474115185,82603.77634528138,113556.04015089742,104293.46882473862,133822.28230897718,106263.7222156586,102481.34621013676,87080.48957235571,78895.08319488679,105735.9820525235,105626.7734987112,124313.3006359069,92144.11932119,73537.29646152578,78137.60525599915,58286.814348802,68928.05802270533,75743.7796112372,83489.37862547796,61518.93775410048,71311.23184506799,58810.65089438103,62581.66694545332,108566.1756738168,106810.3035898108,64981.51870529863,80829.27869961815,55203.39988738071,99034.47679069567,69318.43286028007,80169.78942387344,91015.86505778233,86376.11895764538,79293.98493428944
|
||||
GB,22702.364220315787,23680.52284249295,26272.032009932474,26333.09456007779,26845.290009259897,23656.475751452526,24568.79566354481,30136.97835561064,27079.44100895935,30643.318549445074,30949.55733300973,26701.9428167181,24834.423901258084,36292.29933386541,21223.79048684261,23695.358277919488,25987.57619398849,29907.138025215598,20532.262685247148,29689.355990879158,29755.7349738537,26456.609914217806,26827.642866860373,23873.145060634775,28779.074240844395,32368.78110647752,35977.394307138864,31071.326823875082,26446.212227329706,32888.07880400224,26015.735528737063,30161.596277105604,23017.874991984525,33287.290870143,28286.810808036254,25581.658649545065,33234.01349421005,31886.616851943854,36147.13303532815,34133.94123938026,36553.158784009356,34512.41082508442,31536.090754720717,28572.314934249887,33275.60304522956,33665.001595891976,29575.879486696827,34513.91395990196,28917.71257427291,33609.176553253485,26240.381135352633,32589.192149993025,28862.78621634025,32807.4074928576,28488.125666145854,20034.93309228305,23116.389736102017,36396.90134863421,35532.192401610075,39288.48780281492,29384.81519197965,36157.931892943554,21622.405196644995,32040.743170655453,30471.91526631006,28610.855281883465,33870.42864117695,37281.10394972126,33227.13302814586,22275.90424618414,30588.672790028984,34121.358436958675,27706.739428180073,37230.134388487466,33699.78058075289,31403.25713954576,26791.643973463473,25928.83232662774,30294.933954035565,36884.703709615125,29006.326905891798,39928.21741502616,32593.01729082114
|
||||
GR,21241.640655847503,17837.993739159116,8331.553303186349,18980.73391736116,15389.589824927982,17680.338927422024,17876.06808235439,10232.387409542045,7698.396804685536,9934.422230608423,10056.853784361187,12820.948661755581,12880.09713386794,18009.367077161973,21378.182658177288,29473.438101212807,11770.791493072751,17561.986308683798,14068.336209442465,21036.22984593777,10600.651816726047,19253.94027167335,33903.71393281602,18899.558983910043,17444.093386496537,23383.013428670623,15695.74724949063,19981.88173635776,22837.72155515553,20477.278624856677,21882.21250746782,25630.65513791745,23207.036995448034,22044.998521881807,12010.599831751206,19432.667576547075,10483.216379681078,17709.119022396855,23856.615736538963,24868.152661457774,21212.948012018598,19349.21918097175,12988.230031417628,16765.76278511076,15711.921661553248,14768.388537620414,15953.652684601051,12434.694106124754,8265.22849298033,8609.897588471382,14667.4570613014,8511.641075667938,10022.119539267658,13526.966234241496,13788.166042309897,20514.65575034389,13890.655920759986,13637.35506363307,17713.539092926785,10603.937587040999,9085.188935046803,13431.534902143163,18237.093734480102,15007.784707319466,15322.74478671021,15189.508916238075,9627.363919501071,7964.610286111404,17730.814440852053,21625.83796282357,10692.331430067703,11630.957871879938,16037.311332863352,13770.795305947142,17211.823293162783,14042.921372422215,9179.230226001768,15781.789228215457,11036.807907632012,8148.5700551254695,17837.056638784255,15741.120020191216,14783.113316616393
|
||||
HR,10616.868981781858,8773.16604903597,5244.73498702366,9536.576803956808,6559.078522391053,5970.043528122038,9472.615822894124,8274.401876717038,4545.145600490753,7872.286618923516,11579.119396857217,11616.785819262946,7841.411279590863,7071.274416413621,12992.083400898755,8164.444623202054,7347.788717816701,10332.483465428491,10537.238741811467,14479.677080073134,8479.661662510043,11787.072656273116,12862.758623825672,13371.003032039336,15990.668161905827,14470.61427957732,10644.752476691014,11929.91211438134,13611.162472968235,14159.968181810045,8748.9998436583,15752.17883640428,8576.387915317433,13121.48137750286,9754.915357083264,10574.934113880938,12339.192872828058,13526.82683401755,12407.125261525374,13314.467203516846,10589.407510915647,8240.264291214513,7438.667886688274,10422.72691638502,8167.94266416981,9179.047407118169,8517.079324039581,8574.526688740114,7000.526114186264,6044.501432950472,8424.638032244015,7640.079353180473,8493.38568955205,7673.466816227631,10113.96973112034,10475.583854629525,8161.447547783003,7730.598307694147,9688.392563588315,7721.732973546704,8547.91442119075,9110.630144082634,5654.409914846469,10449.908940883637,8544.776426500835,7703.363550389989,5356.181480736791,7888.76450496884,7981.496673656482,12159.302077747214,4232.3935344941665,4890.509308451722,11184.320641158047,12936.9950624162,6984.475921997467,9245.055929521772,6446.204647314787,9728.03403894923,7468.897556955247,6117.536838412799,7342.634549696792,8157.817278196762,11474.85293662869
|
||||
HU,1086.1958142470096,978.3249526234807,212.97414604675294,340.3983517473703,430.1881201465951,194.65656630284064,473.19850543225607,261.9192709197555,196.10367582160737,215.18183697898402,455.56009955160323,446.6314758325084,756.8984035642842,450.9800559529234,596.2398492658431,618.0772176598714,433.5306920564666,626.6699838105968,736.6623236995524,901.6628598550868,955.0588428000881,1010.9577650474141,1739.1969813800204,989.7527773708749,1794.409065735425,2141.779921355298,1587.224990709883,671.8419282109866,1725.8355118081338,2716.2211930211206,1024.7764676942138,1478.4297579371664,1174.856199808959,1380.70450266654,1412.5023358393119,740.4722294240396,2077.892875467242,1382.2122922975911,1644.3319455706533,1323.8387691522125,1268.4319727220777,1050.1561979992803,938.7640185853782,701.18673897032,1176.2218406698482,1296.5341770126697,1360.4975641937087,1113.61620590335,686.0888933448485,340.9577501900905,585.7771480398817,710.4671894364953,683.5190908209308,901.0768559915952,882.6855336512624,1696.8667744778322,1072.391017559335,1091.9628754375356,1986.255314199332,1224.1891103332646,723.3105004079888,525.4091579835733,484.84230756145246,965.526984284363,1182.1048527111184,1188.8833398485922,413.588170351592,480.2721461089437,695.3047160171476,1875.1966820116616,1424.9690036241302,335.4105482008909,1504.9089491398734,1485.372787096725,1238.0161031995012,1379.3214547239281,769.0933902263423,1164.4795232335282,401.1056623458921,586.967649321741,686.5594518266915,503.19975913371877,1084.6060135452235
|
||||
IE,2938.9562959168748,3198.9169680516616,3187.5912945813584,2803.8552573374072,3777.1449651405105,4362.104175198847,3412.9484028266015,4033.7677356343165,3724.1620931207913,4522.92029724601,4646.742323576806,3498.3840852321937,2544.6578209214726,5419.077105100732,3195.826410242899,2135.0862825425293,3896.6031468108818,5166.0575828547335,3059.5430902455864,4420.523688067632,3920.565970045664,2677.658691610785,3238.0778129090736,2814.899041865502,4169.640537659651,4975.659864222032,4131.237385306254,4051.6063579500055,3501.9810380506974,4162.222738923252,3277.97066925379,4149.907266073347,3535.126191101705,5127.397347805918,3672.8392481603883,3233.4968306810615,4670.955668853978,4602.662496185422,5486.794576286672,5974.860239294209,4958.279351735843,5539.220771177308,4814.939874910363,4704.080605250908,5214.372862088697,5579.052373684467,4424.669817520398,5645.170219782959,4099.107666436778,4291.534915722901,4394.7348113611615,4474.842169491055,4574.431496810677,5809.6920444413845,4586.044007664658,4500.049573188483,4158.002042556449,5864.151573833777,5389.317421868625,5602.682945402753,3910.7950042057882,5664.313605042361,3809.963053559503,4119.424688220842,4183.3641097691625,4756.243128847813,4885.19842669336,5839.576896771334,6529.030637616166,3851.468550158534,4739.247453475783,5116.873230654843,4346.868803644192,5780.6460718128965,5283.18966576195,5253.677788447396,4182.318532051922,4579.528423701424,5332.55258145869,6160.501534866154,5064.7000821427855,7011.136828867076,6289.684272273017
|
||||
IT,111872.14392769105,83456.12455924545,65177.42783168641,92174.45776985734,93705.54545517343,102552.6760192628,102231.02170173851,123449.91092719955,75535.87312511557,87009.71778444933,172598.9057049173,100312.33974168803,109683.21050744873,113141.95504995789,104153.60992530867,105687.75931391625,108887.88674499927,120408.08444781008,120463.4718424679,176044.98820314519,110983.47718210719,108661.3888675,154479.99952596257,116866.21274767391,140970.07450678368,148795.1431459142,123467.91624840492,141856.2012294592,135145.74559391223,121025.70232844367,123064.2692081519,158675.8479818625,126408.22188494769,122698.61897984576,134048.90222163082,141351.40587318933,183551.69201916258,152672.0987165877,152463.24070715246,129214.69623803807,126406.52003570941,111266.52387106014,105493.22493839792,124930.0152276459,118811.00097800085,107475.13484215035,108705.61617459086,105553.12911266208,89696.47047566871,79022.57929325203,102862.21537887226,110384.19134436303,114736.91039530469,100806.28542965792,84803.88252804938,120635.19844583895,89284.70639754581,91327.36842742827,112272.49254052607,121214.98394688763,100240.69732658492,110327.24980482439,67667.3134977533,93496.05161894935,74054.55044130566,77775.69469931335,75858.44303177306,92083.61659880447,94760.12813659209,130298.81027721112,113068.08204604911,102862.27823880903,124544.42911673438,173919.9577739064,87247.90399947706,91232.2769509342,68511.40136893332,110593.38607511377,103785.63569256017,87869.12433673623,92697.61009264145,89877.21983741673,96543.33467044581
|
||||
LT,2330.311115607803,1278.321859711663,1329.382406669865,1835.9539018834093,1806.4585215317375,2463.9928727279507,1216.0039899784208,1896.293414052239,1974.9185999663864,2624.3584436168967,3126.90226977831,1475.6787373817235,2475.307120672793,1105.461669987713,2895.355169108127,2328.291848466701,2773.100951693534,3565.1300060634676,1726.340017569786,2441.2869150017605,2739.255286641479,3393.627534013301,1948.972938917477,1503.9304931932238,2081.2181025571476,2387.4356286402945,2953.7202011167815,2442.643404228762,1575.9037853337413,3106.077653607497,2438.6998492607095,2321.3335398002305,2455.4955733417105,2703.979150849733,2983.428649152806,1271.81865757996,2291.2165997279003,3624.3054978962264,3066.52482874976,2692.4730181815085,3077.131323187848,2583.193918114293,2346.227785803459,1679.5438811966314,3224.9829735377853,3118.546035682447,2841.2519919875017,2793.689370450914,2688.2457239306805,3241.443663108373,2559.3234295762136,1702.002348908642,2110.46892607847,2728.2093372090403,2507.383271401867,987.8894968242066,1210.6320667482842,2619.0625969612056,2041.7494156189375,1077.1024719580128,1501.0630179433206,2093.0805484121715,761.1714789679556,1438.6161577229564,2052.75406588365,780.7629955514127,1806.053023318598,1637.6952437203324,1294.75789506843,2045.7605537026564,2014.9263059368886,1513.2399919084748,1700.3251444304037,1310.6134461272318,707.068706016363,991.8607300754669,2210.5243412620116,1945.761381971759,656.9514438734058,938.7049363615082,1091.9224609932446,2359.271808740987,1316.3428075862207
|
||||
LU,410.92374814105005,160.31307322354917,118.4486719933025,98.1780404815946,219.99495836090017,162.18791666671726,138.32051761008012,209.31021249802274,188.8584966582342,199.41682878475427,418.42920407960173,402.65326898169104,245.66041042705334,140.5213247873591,281.65083355306945,239.8578158452654,369.22101543741394,483.78479198242695,296.9130979040409,276.1232951910135,459.8791399297912,360.88050800564,165.48000564979304,183.08661927563494,549.4327262552889,615.540914852196,430.5724249074097,464.9649192455573,366.43220700786026,562.8555247965114,228.93628708423907,211.2546971696525,190.68337965968735,337.11947715404034,376.86900759463407,153.06162250371963,361.9412034686643,457.17182659872975,474.4467062976349,501.35146460886807,586.4359860050876,446.87720467222556,554.4763793156474,495.34599197145104,293.22338952418016,311.9404169698979,470.26963100793296,539.1966800252237,318.1508533879876,216.80440341571304,213.96493869659722,161.79868975175182,244.05142665329072,449.452274496719,514.0163752203341,140.3179752581265,173.96942733863747,312.73695003201067,389.83220575942556,401.09422881834865,533.6829497064967,363.9324325652479,243.9448809708681,141.83825708815394,174.8785415794147,180.93947242990794,337.92060394534246,342.3576188750888,243.21751195509597,234.05807708972188,220.32797632404777,264.38928306703747,336.6463620917912,349.32621250528973,289.85643977541105,421.5786735040934,195.16848080033785,348.6723038250213,181.01976524286118,391.4073725411393,335.53788814460387,454.30136063817054,354.9932023222274
|
||||
LV,2075.0062187312337,1183.1651412244635,1388.2608755110323,1633.9975845005233,2100.728221746779,2307.307714455485,1183.142585833944,1669.1622848941527,2049.0129879285278,2215.5671267410553,2742.6556866506367,1837.8325027812643,2554.170761349389,1408.345733539928,2983.189997195677,2825.061612760662,3252.3974243255384,2886.2924715658505,1956.4363533791625,2047.5738516633846,2396.823663944175,4066.8157610189646,1865.1937720377932,1213.3814003625498,1799.0008428733133,2700.1570058485836,2685.678969351212,2489.884608424664,1643.1417843905015,2409.13500668555,2592.9272177648704,2235.207139152776,2147.227486416904,2582.289866216919,2592.1022950383003,1400.2389662856958,2360.0229699498527,4017.8529783072768,2384.614549536931,2229.7220033855633,3208.439621353169,2678.7332051326716,2668.5315414635693,1705.3124319563372,2816.1467857724074,2779.7212753206704,2548.8356765576805,2583.5815153824487,2861.3233286998366,3801.9993997175525,2885.329135114707,2265.350140707051,1837.2956559244064,2087.5337557102102,2249.8356476827344,853.5386928200795,1689.684828383291,2653.3751344813045,2109.0096432617606,1182.3316650686795,1487.9132295244858,1974.1178903388873,1027.3242775723352,1736.361793878124,1741.9204323497202,701.3946960765046,1526.0106468283361,1844.9956663852768,1722.690767934754,2194.735679264339,1757.0892689497684,1974.9007736328324,1883.6056453393867,1405.6090440523008,1355.4439688992024,1295.7921755717964,2182.9434502570357,1620.95881111662,955.2966396067089,1490.1655775988,1270.5915407733335,2073.003327028273,1565.9994997763404
|
||||
MK,6885.807602475421,5074.413420314535,2741.8766807152024,6785.078522769966,3818.8527078184798,3928.4886922987157,5350.383608273902,4779.5936944428995,3468.062322874052,3554.9350756385556,3934.258904454459,3692.0813330320566,3668.815892166788,5481.091007849558,8488.277349663611,8514.814821434962,4861.071723840239,6878.625964986481,6399.572820343104,7510.160197503697,3410.068805763449,5394.1653784487335,11852.098687247973,6238.562291909563,5957.282159254423,7239.168545674971,6704.994620967638,5343.254672711665,7690.122171456297,7543.1707758996035,6080.923842798452,9518.22452251825,7931.36999814296,7898.373553315725,5296.06496225987,7158.993856907015,5568.700579027411,6653.618095140364,7658.60790313609,7384.3372015299765,6359.355811805509,6311.4116310067075,4303.248848133382,4384.047563174607,4091.082807237865,4939.915122052565,4226.085259691547,2768.0039025432975,3428.9467644601264,2294.222990992098,4834.495252793617,3325.6396521134557,2522.690466358069,2976.927612194815,4721.490759581051,6218.919122814915,3840.4729075548557,4211.680380445357,5623.802967061423,3683.311545054556,3010.5387111938044,4030.600677147787,3746.016920616422,4369.907262961726,4375.170573617275,4171.022704527618,2702.082556773276,2500.5709190188645,4370.4076446296785,5204.859735574909,2501.3689966568136,2522.4142074268602,3898.568577966785,4120.496629723428,4145.529030725163,3980.5145191045517,2967.8383253548755,4325.530795978238,2351.320803369623,2869.298937488066,4644.825806471018,4443.426947798344,4862.542134317402
|
||||
ME,17887.124634490927,10608.377394539566,7624.148328862119,18300.25523347599,11276.651201832965,10903.50785537606,13234.193237094172,12631.716364532,11223.474429487562,12340.195715253074,11787.036249138713,18552.496612764233,11097.228684668844,11567.930061084586,19293.29710814638,13959.20571478613,13046.18440612437,18177.491235848003,15681.709335959564,19349.950981118494,11658.5954682407,15979.557715971854,21966.784229466284,16319.44299708603,17409.40677448169,19267.118980997075,14169.834731486397,15882.152400499632,19649.60512617265,23317.326436161944,15993.83236649745,16724.197023812518,13680.494674103275,16947.38155713745,13396.216553276576,17144.464963358845,16187.204710073258,20417.876685607593,22530.120155126962,16197.908505488407,14818.545420474018,12719.274460270883,9622.464989039141,13369.875886578782,13078.849292203078,14951.85122042927,13681.691957367619,12435.207850184568,11885.89235643587,9516.042262408026,16926.063160570764,13462.909968102742,10042.999218445517,11916.714437943356,15158.632522247093,19735.53511234594,11491.695345503264,14075.890065382568,13952.132515246369,11677.32833931845,13022.018989752623,13358.031703205903,11534.177624564669,17635.48411958614,14124.491791464301,12392.738752899031,9187.905148236658,11106.432128782126,13780.482580236776,19889.70854314474,7004.765863876614,8204.168680103983,13925.208337027952,12712.182323875111,8528.030231315688,13924.890575378206,9037.809310147335,13972.095665379566,11360.358971424077,10280.43536084397,13775.545442858487,18675.41168703515,16242.925847180693
|
||||
NL,99.18845393334344,83.88743307052296,56.20087850777987,37.585642699707755,99.89955066870836,85.24103376999277,67.24342284849837,62.39508342046794,36.26442939184667,68.54685542245758,132.53876435280281,105.25304624029256,97.45390390948565,59.629996943856206,126.17294913858377,100.92785922135535,110.87608266899032,166.47617616014315,115.03831975395074,102.21679880589629,222.71184206736731,164.32395798051633,88.95057195947412,70.61286255591416,116.64203846425596,229.2598570422647,176.71083656110923,163.34614915846544,135.23541074052787,153.03725726999411,84.2996330000842,75.50229060079856,87.79575328623356,149.0911400069578,185.89892961221338,65.86854604814957,122.15247506918442,163.86971747802477,177.38160465294413,173.97671792234624,210.94537197363266,138.15528852664815,157.7989701791954,164.8431327190436,156.27033317337316,144.7881412408737,172.55396177597567,195.57239229094031,113.32208112175368,57.91841778157319,69.80575559844598,81.95247611107445,154.25504072397393,213.16593963287744,185.6861094126344,50.88580789479815,88.6770750590963,180.59511129061775,175.09641999581325,134.73866646771805,175.89672487625361,170.10222446753016,112.93557838603432,69.46018341018433,89.82211025011819,57.645723008783136,122.86182387892966,128.20825436811367,82.72980960226074,90.07937846739043,113.22245968360778,109.86527486394354,113.13774281842522,111.87536788688416,113.53271254663122,140.01537175074324,68.64291161119651,101.90820271032081,52.313311323047174,116.8375292031251,120.98114114085548,164.29761287763637,131.20083352074832
|
||||
NO,210079.934684001,272449.26769557595,393598.97632244934,344434.1421584134,309228.23588460323,302048.4910019859,239994.31574717446,322040.9441520717,407801.21594778565,321823.44753004133,268338.23623559956,311516.6976002237,354741.82081862347,287750.3093395867,277336.7794878445,277384.3177020413,343804.7636848019,309909.39898200217,279870.8316011512,240316.6988310159,337135.04130569333,320967.163231472,302346.276731951,373063.16157364036,335043.0981929385,271478.1367425455,378240.8226290755,318135.4534804216,235625.6466770364,244547.82624561962,342177.033729037,330660.24479289196,373161.4848287328,318697.1789732917,345399.49658985186,314419.8189439592,230963.73709983748,236070.00307120252,312676.53469423676,195102.01076090848,231756.2941107393,196457.66930311252,255890.52889680286,207980.18388759278,250218.19793663023,221472.83820330602,212315.28230042476,222774.69138098884,210372.25250462766,210846.3448041017,177438.35447152023,214108.95671057343,190417.02324135366,175558.31404488848,199041.30532793878,154342.13931409398,175902.47007757265,215120.2640019617,216733.8944940455,261370.58822336013,212333.63219332727,174324.40313248086,166539.1770850326,202012.88317391058,238213.58919108333,170401.06338583003,217109.81457913358,185684.48673203168,210764.408869451,180452.94255978477,359959.68381729786,220133.80814962948,201815.91045998363,193256.2376798832,225141.35101977925,194502.14845672756,241700.45583039062,203049.47691663646,189440.21996991744,241270.48318453485,196628.83730256284,369452.758534526,226746.71170530186
|
||||
PL,19040.141287526196,13600.003649707409,4232.940272903036,6263.550300160282,11725.980915175824,9423.536450722735,7520.9931031649085,15128.087437533712,12302.274212909391,11903.809643162125,10323.210329129464,10102.880830361863,15243.556644277647,6316.576710839603,13844.440254769646,15125.266765937784,15697.445163802722,20547.692524530372,11483.751822471613,12736.801698643669,14242.313560202334,19975.533453959804,14197.61841088385,13385.258603233342,17555.946503015533,19526.389852009346,24990.22970093532,18554.95543612019,10610.557656768206,19356.459381427685,19657.930603206125,18732.50311338716,16842.606570419066,21220.5523273715,24157.44207211756,15607.0096942104,21677.41127186343,21298.26291533998,22732.35472759213,23096.919661671975,20539.587419825057,15690.593097829358,10514.527177352287,9757.003902443616,18214.127020951153,14743.470132504332,14160.372458977477,15574.81487531224,12340.373515759937,8851.92371521615,10791.411372967183,10330.247763133175,10795.54750377256,14738.227630388099,14374.438386354948,12177.648415014886,14450.3889852054,16473.394758962142,14491.781691174727,11650.64866730713,13724.64695911459,14468.081620316902,7425.533290488975,8039.550610683221,9468.54351850099,6656.34004885665,7842.310345436549,9593.638690519654,8828.256800239144,15874.058827778785,13537.338641985261,6174.396712827303,9509.500411581042,9436.102173346171,5360.954908688417,6309.399306468634,12402.024613286878,10602.512257049677,4725.103685514244,6963.3130148445025,9124.964758601689,11007.49968811077,9338.109838427506
|
||||
PT,17389.910347609384,7956.13238827081,8339.728858321132,2075.556471824434,3081.9400195534536,5428.965709165979,13519.093138173732,8266.183051247071,2305.611210847845,4751.414112923152,8372.129135066036,5969.31083523099,2397.6586063764958,3916.9962424030286,9654.699566273128,9603.363148222781,4163.162870337118,9179.465624121007,12131.854156488425,23406.646477036124,10635.077955993413,11029.404714084018,16475.917880350513,12087.55769685171,9804.492049893286,26178.184180984652,5669.820254013018,7559.528320921835,15405.930172416956,11163.387795923936,7088.025310785357,10191.330496756716,7128.069257230898,9335.631563569985,5236.13128329125,4572.251664471752,32605.577182903042,149323.86523586328,34294.81803755196,6061.11721308257,5836.654497517657,4843.7020037722705,7814.782411245904,9395.759000250582,14057.157961109715,8192.288977642056,7655.760207241933,9203.645337709624,7637.7450966202805,7971.812432879156,7421.37678917759,2935.2871895485287,6329.939163930326,8820.796560748415,8944.109217212255,14719.27363438586,11050.779819799696,8379.75073967695,5590.525909815882,10485.131539563748,20476.028147427794,7715.162648805314,11939.81827695821,5116.2596877306005,3047.0903835389504,9273.489011971804,5135.313604526994,3331.418010762715,6338.048693933388,12105.616460835923,7097.468638389797,3348.213951094401,11773.920694867731,13465.586888738457,4379.602415677836,11394.463621230614,3104.8789319036796,7216.150544702967,6653.765864361187,5720.580737490315,6685.493238874142,8486.079863634486,8329.192253601708
|
||||
RO,46545.50823036229,35517.718755954746,12007.97895282227,19448.903832688356,20440.973051620913,15132.394486734484,21523.767710605425,32075.68337603852,20312.088233477134,14653.654680967496,19346.344374357534,19295.50358149612,27702.617554877004,24644.67023787785,52797.882559506776,42262.7162454671,34689.01143849651,42583.74114324521,28973.147767939397,36882.64868179707,29063.471368254675,39575.626278602576,31898.858414072816,36283.98261870408,42207.50410750205,41714.957670180156,43270.313090823794,40474.54716426176,53565.91349208634,74865.02611452111,48190.11154819992,57257.26135564704,46523.80416861758,44300.83791323246,54901.1701096736,47361.27151969814,49156.09266449866,56461.30009557872,56062.45724028393,58506.511677323855,48499.732173446595,45901.64074770707,33171.12855766741,38310.49272614435,39377.41586450999,28638.803870927226,29424.553978129992,39429.14347226504,39300.73151290347,27525.04968129815,47095.77682827757,30948.90232192865,32939.14262154816,30155.99148400138,35067.04977301419,35592.25066656211,45790.67404045973,42596.77718301701,39223.35618808953,25767.93476452563,30963.38609617001,30034.908201595936,23323.05819720473,28517.276888551194,41560.85308154171,43999.15897330077,21427.19650317167,25084.131072037453,18450.764512377853,38182.39266803458,20422.517191285966,14090.243196787245,21998.55223596247,30809.187151501046,22071.90474198888,31906.454754357772,20763.073093214778,25620.747974742615,19248.368008063957,23289.011422937554,26669.846131314298,27207.74766143675,29386.08741874402
|
||||
RS,12898.821957973714,11760.375115749226,5762.823681912337,10868.645457667955,6851.647476795101,6489.091511565737,8016.427124526303,11096.059611708006,8784.092785314235,6844.044739629848,5968.673897869134,7450.873145908507,8457.218084424714,10466.134979346216,18700.932768467817,18783.264457747777,9647.157790116991,14650.396388121844,12360.14810912279,11640.673528541236,8882.446980807292,14762.619600006037,18399.930168952076,13646.806400326906,14489.119148714197,14104.804002759012,15462.34970923992,10894.228431882033,15095.088711819322,17853.281396922546,12916.46431873845,14207.379133135786,14418.834370720482,12752.5957180177,15544.588217112372,15820.904121022999,13534.055257847373,15215.146639151637,12996.626380040323,13029.919161637963,10196.668003968522,10284.440766030819,7022.693160251435,8401.249663323453,8435.803252725058,10265.915943082338,8623.546341166757,7782.429841191159,9309.259412625106,4849.32865233776,9480.40891035497,8237.330612702019,6688.9341497267815,7113.796951355988,8945.392918392941,11391.406447517316,8770.78174795334,7797.074404297926,11205.567652241964,7490.638744688466,6890.626375097134,8721.152535625733,6986.899718851523,10014.515393386338,11863.685949406314,12576.12226693591,6930.903954576986,6933.68818306879,8436.351253425808,11680.836931112251,5673.257881932308,4512.930178739657,6094.8735580904795,11616.485592765608,8423.704814584986,9582.260510301834,6280.960312130538,10196.683253538626,5869.428152205924,6637.126459584064,8223.324863109141,9163.49600405833,11744.973584261521
|
||||
SK,10526.703178382486,6581.841291454129,2779.6437301689157,6043.293021386589,8068.711762338472,4716.572547513843,4263.788112757618,7436.446538154413,5733.7942336519345,5091.94458281141,6885.47211985414,6956.591212284293,7116.928783228905,4573.269245439668,8169.130903254093,6799.092645889461,7190.199390340817,8819.311158887818,6679.080394471699,8681.76846617681,6714.688996801623,8780.135433744465,9674.052829336924,7510.89080672348,12315.672504913706,11551.288938768861,10658.095118642217,7760.467099195778,7334.701885838525,11743.053621084162,9101.455526104724,11252.254293590808,7089.2297957961755,11692.575497480175,11870.620362608648,8320.411050776946,12664.612697391287,10840.053026355938,9544.145158945727,8285.851845920657,6554.955003499832,6014.385824757616,5119.229272436076,5566.197178944401,8283.751441606055,4576.739002618681,5529.727054286627,4884.285979430572,7030.767074231632,6380.185010419688,6092.06334940043,4789.6919845964085,3988.728835990378,6100.445127127096,6174.336930810738,5839.492530664778,6739.897695678873,6073.547495791424,6239.663814901599,5985.626769812626,5946.910319392802,5350.4706690989715,2897.742723724252,3812.447551889599,5110.734824948982,5466.7571969447445,3822.1224333717755,4189.745228198809,3608.9397299109723,8925.718578619328,5520.297117401385,2338.023634704523,3634.014208205775,5079.021357670912,3789.3939110245783,3599.858750509022,4222.707040620564,3096.1701009538024,2158.8092391216674,4542.203594136759,4220.210061470592,2961.7796555712353,3705.0055429796116
|
||||
SI,8932.252857660058,6769.672897729603,3971.443731895907,6727.0196008878875,5996.060296331706,4552.96378417224,7787.375795346372,9548.071392837826,4890.204133819321,7094.028640574649,11752.798116380785,9378.602450871665,7169.30972105447,8221.267552376507,10568.142173580174,7705.119699907013,8559.440940655051,9496.2682906945,10641.418485889739,13644.09405840664,8756.865265119286,10877.994032024846,13095.473005855994,10408.222250010325,17110.767148034232,13257.44359305617,10163.420442559087,10743.809603872312,11213.570708968457,12419.028940460184,8518.188189494229,14975.496301661744,10217.449212514946,10521.007791805137,10759.209828867228,9699.803414833696,14530.647692616923,14530.715084460895,12439.143395173185,11990.046930204517,9001.647305603035,10111.423546501868,6824.172499114327,10267.968760960974,10233.709492652128,9562.175707725224,11231.941186997657,8178.692540046128,8568.526412713521,8103.883097000008,9639.895318751553,9157.43571368136,6814.50158997294,8089.913064615838,8170.645053083449,10765.044719853075,6713.170108103339,8936.8362631332,9542.147586182518,8964.110093884974,8653.114721452737,8353.75428643612,4558.589088593759,9432.405903987477,6927.92152111369,7408.760392367348,5834.871486466167,9336.912851251047,8839.494837985663,10766.693939731143,5073.937522450624,6475.598951785893,9482.419717110955,13414.771212079502,5906.5584945059145,9942.151265372298,7696.092255607837,9521.835825354157,8476.124990692872,6361.010018809483,7504.908031281684,6349.444363482254,12494.86342976942
|
||||
SE,97729.33612275522,104893.13349064675,152164.30605691054,147567.81837152236,172633.569885874,142454.06079467706,109264.12507808255,145966.80578917114,158733.59492028368,161670.6171803483,134822.12256461562,136958.6213484757,175679.6273876132,133962.36617697845,126787.36233921513,130861.49290945902,151133.2982760823,140247.52694114187,130508.52271890236,137421.63579450184,164132.0529341604,142467.57286064525,135886.87305352974,163762.3962091317,161128.38161511483,148196.28633931337,167892.87677861055,132017.696130452,105953.99289036485,119407.22923207263,147139.6039546916,151309.55114963037,164893.61323375857,137608.18237925606,149284.78771947857,108749.15747050248,131859.531763871,117290.48017785426,131751.97960784068,111117.27409251402,110551.615114603,81550.1135393761,114677.940027603,102356.46697333359,128977.80283219383,94483.98267503879,114937.96457142044,93256.91327642264,96751.29026217168,91074.34139788701,87931.96567208324,96560.83822983531,116746.94389793588,64626.25905820224,75156.91767736348,51489.37512699482,74729.26978432719,134673.01513808029,110440.65771030058,149033.9827088587,143576.83069821307,93040.02354987273,64075.160200006496,102493.08906248632,106664.82884715112,90351.43771324471,94801.81222609026,92445.93458012305,88919.20770998915,108111.72872590217,127440.80298482065,124444.06618883039,98961.91573013023,87913.90602563386,115956.48217115598,95526.84265190935,103459.08985036932,86058.90377748368,99040.9103276256,110493.22773914765,94182.7249029169,169752.66741900297,99896.09236620825
|
|
@ -1,34 +0,0 @@
|
||||
Country/area,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022
|
||||
Albania,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Austria,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Belgium,,,,,,,,,,31.5,196.5,196.5,381.0,707.7,707.7,712.0,712.2,877.2,1185.9,1555.5,2261.8,2261.8,2261.8
|
||||
Bosnia Herzg,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Bulgaria,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Croatia,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Czechia,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Denmark,49.95,49.95,213.95,423.35,423.35,423.35,423.35,423.35,423.35,660.85,867.85,871.45,921.85,1271.05,1271.05,1271.05,1271.05,1263.8,1700.8,1700.8,1700.8,2305.6,2305.6
|
||||
Estonia,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Finland,,,,,,,,,24.0,24.0,26.3,26.3,26.3,26.3,26.3,32.0,32.0,72.7,72.7,73.0,73.0,73.0,73.0
|
||||
France,,,,,,,,,,,,,,,,,,2.0,2.0,2.0,2.0,2.0,482.0
|
||||
Germany,,,,,,,,,,35.0,80.0,188.0,268.0,508.0,994.0,3283.0,4132.0,5406.0,6393.0,7555.0,7787.0,7787.0,8129.0
|
||||
Greece,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Hungary,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Ireland,,,,,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2,25.2
|
||||
Italy,,,,,,,,,,,,,,,,,,,,,,,30.0
|
||||
Latvia,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Lithuania,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Luxembourg,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Montenegro,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Netherlands,,,,,,,108.0,108.0,228.0,228.0,228.0,228.0,228.0,228.0,228.0,357.0,957.0,957.0,957.0,957.0,2459.5,2459.5,2571.0
|
||||
North Macedonia,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Norway,,,,,,,,,,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,2.3,6.3,66.3
|
||||
Poland,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Portugal,,,,,,,,,,,,1.86,2.0,2.0,2.0,2.0,,,,,25.0,25.0,25.0
|
||||
Romania,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Serbia,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Slovakia,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Slovenia,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Spain,,,,,,,,,,,,,,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0
|
||||
Sweden,13.0,22.0,22.0,22.0,22.0,22.0,22.0,131.0,133.0,163.0,163.0,163.0,163.0,212.0,213.0,213.0,203.0,203.0,203.0,203.0,203.0,193.0,193.0
|
||||
Switzerland,,,,,,,,,,,,,,,,,,,,,,,
|
||||
UK,4.0,4.0,4.0,64.0,124.0,214.0,304.0,394.0,596.2,951.0,1341.0,1838.0,2995.0,3696.0,4501.0,5093.0,5293.0,6988.0,8181.0,9888.0,10383.0,11255.0,13928.0
|
|
@ -1,34 +0,0 @@
|
||||
Country/area,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022
|
||||
Albania,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Austria,50.0,67.0,109.0,322.0,581.0,825.22,968.27,991.16,991.97,1000.99,1015.83,1105.97,1337.15,1674.54,2110.28,2488.73,2730.0,2886.7,3132.71,3224.12,3225.98,3407.81,3735.81
|
||||
Belgium,14.0,26.0,31.0,67.0,96.0,167.0,212.0,276.0,324.0,576.5,715.5,872.5,985.9,1061.3,1225.0,1469.3,1621.6,1902.2,2119.0,2308.0,2410.9,2686.6,2989.6
|
||||
Bosnia Herzg,,,,,,,,,,,,0.3,0.3,0.3,0.3,0.3,0.3,0.3,51.0,87.0,87.0,135.0,135.0
|
||||
Bulgaria,,,,,1.0,8.0,27.0,30.0,114.0,333.0,488.0,541.0,677.0,683.0,699.0,699.0,699.0,698.39,698.92,703.12,702.8,704.38,704.38
|
||||
Croatia,,,,,6.0,6.0,17.0,17.0,17.0,70.0,79.0,130.0,180.0,254.0,339.0,418.0,483.0,576.1,586.3,646.3,801.3,986.9,1042.9
|
||||
Czechia,2.0,,6.4,10.6,16.5,22.0,43.5,113.8,150.0,193.0,213.0,213.0,258.0,262.0,278.0,281.0,282.0,308.21,316.2,339.41,339.42,339.41,339.41
|
||||
Denmark,2340.07,2447.2,2680.58,2696.57,2700.36,2704.49,2712.35,2700.86,2739.52,2821.24,2933.98,3080.53,3240.09,3547.87,3615.35,3805.92,3974.09,4225.15,4421.86,4409.74,4566.23,4715.24,4782.24
|
||||
Estonia,,,1.0,3.0,7.0,31.0,31.0,50.0,77.0,104.0,108.0,180.0,266.0,248.0,275.0,300.0,310.0,311.8,310.0,316.0,317.0,315.0,315.0
|
||||
Finland,38.0,39.0,43.0,52.0,82.0,82.0,86.0,110.0,119.0,123.0,170.7,172.7,230.7,420.7,600.7,973.0,1533.0,1971.3,1968.3,2211.0,2513.0,3184.0,5541.0
|
||||
France,38.0,66.0,138.0,218.0,358.0,690.0,1412.0,2223.0,3403.0,4582.0,5912.0,6758.02,7607.5,8155.96,9201.42,10298.18,11566.56,13497.35,14898.14,16424.85,17512.0,18737.98,20637.98
|
||||
Germany,6095.0,8754.0,12001.0,14381.0,16419.0,18248.0,20474.0,22116.0,22794.0,25697.0,26823.0,28524.0,30711.0,32969.0,37620.0,41297.0,45303.0,50174.0,52328.0,53187.0,54414.0,56046.0,58165.0
|
||||
Greece,226.0,270.0,287.0,371.0,470.0,491.0,749.0,846.0,1022.0,1171.0,1298.0,1640.0,1753.0,1809.0,1978.0,2091.0,2370.0,2624.0,2877.5,3589.0,4119.25,4649.13,4879.13
|
||||
Hungary,,1.0,1.0,3.0,3.0,17.0,33.0,61.0,134.0,203.0,293.0,331.0,325.0,329.0,329.0,329.0,329.0,329.0,329.0,323.0,323.0,324.0,324.0
|
||||
Ireland,116.5,122.9,134.8,210.3,311.2,468.1,651.3,715.3,917.1,1226.1,1365.2,1559.4,1679.15,1898.1,2258.05,2425.95,2776.45,3293.95,3648.65,4101.25,4281.5,4313.84,4593.84
|
||||
Italy,363.0,664.0,780.0,874.0,1127.0,1635.0,1902.0,2702.0,3525.0,4879.0,5794.0,6918.0,8102.0,8542.0,8683.0,9137.0,9384.0,9736.58,10230.25,10679.46,10870.62,11253.73,11749.73
|
||||
Latvia,2.0,2.0,22.0,26.0,26.0,26.0,26.0,26.0,28.0,29.0,30.0,36.0,59.0,65.89,68.92,68.17,69.91,77.11,78.17,78.07,78.07,77.13,136.13
|
||||
Lithuania,,,,,1.0,1.0,31.0,47.0,54.0,98.0,133.0,202.0,275.0,279.0,288.0,436.0,509.0,518.0,533.0,534.0,540.0,671.0,814.0
|
||||
Luxembourg,14.0,13.9,13.9,20.5,34.9,34.9,34.9,34.9,42.92,42.93,43.73,44.53,58.33,58.33,58.34,63.79,119.69,119.69,122.89,135.79,152.74,136.44,165.44
|
||||
Montenegro,,,,,,,,,,,,,,,,,,72.0,72.0,118.0,118.0,118.0,118.0
|
||||
Netherlands,447.0,486.0,672.0,905.0,1075.0,1224.0,1453.0,1641.0,1921.0,1994.0,2009.0,2088.0,2205.0,2485.0,2637.0,3033.84,3300.12,3245.0,3436.11,3527.16,4188.38,5309.87,6176.0
|
||||
North Macedonia,,,,,,,,,,,,,,,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0
|
||||
Norway,13.0,13.0,97.0,97.0,152.0,265.0,284.0,348.0,395.0,420.7,422.7,509.7,702.7,815.7,856.7,864.7,880.7,1204.7,1707.7,2911.7,4027.7,5042.7,5067.7
|
||||
Poland,4.0,19.0,32.0,35.0,40.0,121.0,172.0,306.0,526.0,709.0,1108.0,1800.0,2564.0,3429.0,3836.0,4886.0,5747.0,5759.36,5766.08,5837.76,6298.25,6967.34,7987.34
|
||||
Portugal,83.0,125.0,190.0,268.0,553.0,1064.0,1681.0,2201.0,2857.0,3326.0,3796.0,4254.35,4409.55,4607.95,4854.56,4934.84,5124.1,5124.1,5172.36,5222.75,5097.26,5402.33,5430.33
|
||||
Romania,,,,,,1.0,1.0,3.0,5.0,15.0,389.0,988.0,1822.0,2773.0,3244.0,3130.0,3025.0,3029.8,3032.26,3037.52,3012.53,3014.96,3014.96
|
||||
Serbia,,,,,,,,,,,,,0.5,0.5,0.5,10.4,17.0,25.0,227.0,398.0,398.0,398.0,398.0
|
||||
Slovakia,,,,3.0,3.0,5.0,5.0,5.0,5.0,3.0,3.0,3.0,3.0,5.0,3.0,3.0,3.0,4.0,3.0,4.0,4.0,4.0,4.0
|
||||
Slovenia,,,,,,,,,,,,,2.0,2.0,3.0,3.0,3.0,3.3,3.3,3.3,3.3,3.33,3.33
|
||||
Spain,2206.0,3397.0,4891.0,5945.0,8317.0,9918.0,11722.0,14820.0,16555.0,19176.0,20693.0,21529.0,22789.0,22953.0,22920.0,22938.0,22985.0,23119.48,23400.06,25585.08,26814.19,27902.65,29302.84
|
||||
Sweden,196.0,273.0,335.0,395.0,453.0,500.0,563.0,692.0,956.0,1312.0,1854.0,2601.0,3443.0,3982.0,4875.0,5606.0,6232.0,6408.0,7097.0,8478.0,9773.0,11923.0,14364.0
|
||||
Switzerland,3.0,5.0,5.0,5.0,9.0,12.0,12.0,12.0,14.0,18.0,42.0,46.0,49.0,60.0,60.0,60.0,75.0,75.0,75.0,75.0,87.0,87.0,87.0
|
||||
UK,431.0,490.0,531.0,678.0,809.0,1351.0,1651.0,2083.0,2849.8,3468.0,4080.0,4758.0,6035.0,7586.0,8573.0,9212.0,10833.0,12597.0,13425.0,13999.0,14075.0,14492.0,14832.0
|
|
@ -1,34 +0,0 @@
|
||||
Country/area,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022
|
||||
Albania,,0.1,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.3,0.4,0.56,0.68,0.76,0.87,1.05,1.0,1.0,1.0,14.0,21.0,23.0,28.6
|
||||
Austria,5.0,7.0,9.0,23.0,27.0,18.49,19.61,21.42,27.0,45.56,85.27,169.88,333.09,620.78,779.76,931.56,1089.53,1262.01,1447.94,1694.4,2034.74,2773.91,3538.91
|
||||
Belgium,,,1.0,1.0,1.0,2.0,2.0,20.0,62.0,386.0,1006.6,1978.6,2646.6,2901.6,3015.0,3131.6,3328.8,3620.6,4000.0,4636.6,5572.8,6012.4,6898.4
|
||||
Bosnia Herzg,,,,0.1,0.2,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.35,1.34,7.17,8.17,14.12,16.0,18.15,22.35,34.89,56.51,107.47
|
||||
Bulgaria,,,,,,,,0.03,0.1,2.0,25.0,154.0,921.99,1038.54,1028.92,1027.89,1029.89,1030.7,1033.06,1044.39,1100.21,1274.71,1948.36
|
||||
Croatia,,,,,,,,,,0.3,0.3,0.3,4.0,19.0,33.0,47.8,55.8,60.0,67.7,84.8,108.5,138.3,182.3
|
||||
Czechia,0.1,0.1,0.2,0.3,0.4,0.59,0.84,3.96,39.5,464.6,1727.0,1913.0,2022.0,2063.5,2067.4,2074.9,2067.9,2075.44,2081.05,2110.67,2171.96,2246.09,2627.09
|
||||
Denmark,1.0,1.0,2.0,2.0,2.0,3.0,3.0,3.0,3.0,5.0,7.0,17.0,402.0,571.0,607.0,782.11,850.95,906.35,998.0,1080.0,1304.29,1704.04,3122.04
|
||||
Estonia,,,,,,,,,,0.1,0.1,0.2,0.38,1.5,3.34,6.5,10.0,15.0,31.9,120.6,207.67,394.77,534.77
|
||||
Finland,2.0,3.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,7.0,8.0,9.0,11.0,17.0,39.0,82.0,140.0,222.0,318.0,425.0,590.6
|
||||
France,7.0,7.0,8.0,9.0,11.0,13.0,15.0,26.0,80.0,277.0,1044.0,3003.57,4358.75,5277.29,6034.42,7137.52,7702.08,8610.44,9638.88,10738.39,11812.2,14436.97,17036.97
|
||||
Germany,114.0,195.0,260.0,435.0,1105.0,2056.0,2899.0,4170.0,6120.0,10564.0,18004.0,25914.0,34075.0,36708.0,37898.0,39222.0,40677.0,42291.0,45156.0,48912.0,53669.0,59371.0,66662.0
|
||||
Greece,,1.0,1.0,1.0,1.0,1.0,5.0,9.0,12.0,46.0,202.0,612.0,1536.0,2579.0,2596.0,2604.0,2604.0,2605.53,2651.57,2833.79,3287.72,4277.42,5557.42
|
||||
Hungary,,,,,,,,0.4,1.0,1.0,2.0,4.0,12.0,35.0,89.0,172.0,235.0,344.0,728.0,1400.0,2131.0,2968.0,2988.0
|
||||
Ireland,,,,,,,,,,,,,,,,,,,,,,,
|
||||
Italy,19.0,20.0,22.0,26.0,31.0,34.0,45.0,110.0,483.0,1264.0,3592.0,13131.0,16785.0,18185.0,18594.0,18901.0,19283.0,19682.29,20107.59,20865.28,21650.04,22594.26,25076.56
|
||||
Latvia,,,,,,,,,,,,,,,,,0.69,0.69,1.96,3.3,5.1,7.16,56.16
|
||||
Lithuania,,,,,,,,,0.1,0.1,0.1,0.3,7.0,68.0,69.0,69.0,70.0,70.08,72.0,73.0,80.0,84.0,397.0
|
||||
Luxembourg,,0.16,1.59,14.17,23.56,23.58,23.7,23.93,24.56,26.36,29.45,40.67,74.65,95.02,109.93,116.27,121.9,128.1,130.62,159.74,186.64,277.16,319.16
|
||||
Montenegro,,,,,,,,,,,,,,,,,,,,,2.57,2.57,22.2
|
||||
Netherlands,13.0,21.0,26.0,46.0,50.0,51.0,53.0,54.0,59.0,69.0,90.0,149.0,287.0,650.0,1007.0,1526.26,2135.02,2910.89,4608.0,7226.0,11108.43,14910.69,18848.69
|
||||
North Macedonia,,,,,,,,,,,,2.0,4.0,7.0,15.0,17.0,16.7,16.7,16.7,16.71,84.93,84.93,84.93
|
||||
Norway,6.0,6.0,6.0,7.0,7.0,7.0,8.0,8.0,8.3,8.7,9.1,9.5,10.0,11.0,13.0,15.0,26.7,44.9,53.11,102.53,141.53,186.53,302.53
|
||||
Poland,,,,,,,,,,,,1.11,1.3,2.39,27.15,107.78,187.25,287.09,561.98,1539.26,3954.96,7415.52,11166.52
|
||||
Portugal,1.0,1.0,1.0,2.0,2.0,2.0,3.0,24.0,59.0,115.0,134.0,169.6,235.6,293.6,412.6,441.75,493.05,539.42,617.85,832.74,1010.07,1474.78,2364.78
|
||||
Romania,,,,,,,,,0.1,0.1,0.1,1.0,41.0,761.0,1293.0,1326.0,1372.0,1374.13,1385.82,1397.71,1382.54,1393.92,1413.92
|
||||
Serbia,,,,,,0.1,0.2,0.4,0.9,1.2,1.3,1.5,3.1,4.7,6.0,9.0,11.0,10.0,11.0,11.0,11.5,11.94,11.94
|
||||
Slovakia,,,,,,,,,,,19.0,496.0,513.0,533.0,533.0,533.0,533.0,528.0,472.0,590.0,535.0,537.0,537.0
|
||||
Slovenia,1.0,1.0,,,,0.05,0.19,0.59,1.0,4.0,12.0,57.0,142.0,187.0,223.0,238.0,233.0,246.8,246.8,277.88,369.78,461.16,632.16
|
||||
Spain,1.0,3.0,6.0,10.0,19.0,37.0,113.0,476.0,3365.0,3403.0,3851.0,4260.0,4545.0,4665.0,4672.0,4677.0,4687.0,4696.0,4730.7,8772.02,10100.42,13678.4,18176.73
|
||||
Sweden,3.0,3.0,3.0,4.0,4.0,4.0,5.0,6.0,8.0,9.0,11.0,12.0,24.0,43.0,60.0,104.0,153.0,231.0,411.0,698.0,1090.0,1587.0,2587.0
|
||||
Switzerland,16.0,18.0,20.0,22.0,24.0,28.0,30.0,37.0,49.0,79.0,125.0,223.0,437.0,756.0,1061.0,1394.0,1664.0,1906.0,2173.0,2498.0,2973.0,3655.0,4339.92
|
||||
UK,2.0,3.0,4.0,6.0,8.0,11.0,14.0,18.0,23.0,27.0,95.0,1000.0,1753.0,2937.0,5528.0,9601.0,11914.0,12760.0,13059.0,13345.0,13579.0,13965.0,14660.0
|
|
45
data/gr-e-11.03.02.01.01-cc.csv
Normal file
45
data/gr-e-11.03.02.01.01-cc.csv
Normal file
@ -0,0 +1,45 @@
|
||||
year,passenger cars,passenger vehicles,goods vehicles,agricultural vehicles,industrial vehicles,motorcycles,mopeds (incl. fast e-bikes)¹
|
||||
1980,2246752,11087,169402,137685,0,137340,671473
|
||||
1981,2394455,11122,167846,151238,0,152508,687517
|
||||
1982,2473318,11341,178313,156631,0,178398,656102
|
||||
1983,2520610,11255,189920,165332,0,187090,674710
|
||||
1984,2552132,10853,192708,164078,0,199302,647391
|
||||
1985,2617164,10771,200537,175161,0,217974,644175
|
||||
1986,2678911,10800,207014,183689,0,225676,627523
|
||||
1987,2732720,11027,217750,189984,0,240102,613093
|
||||
1988,2819548,26869,236649,152693,43519,219987,581270
|
||||
1989,2895842,29270,241488,157867,44326,261715,551808
|
||||
1990,2985397,31180,252136,162932,45920,299264,464609
|
||||
1991,3057798,32968,257646,165571,46938,319779,418251
|
||||
1992,3091228,34136,256611,169277,47281,336448,381236
|
||||
1993,3109523,34852,253461,171414,47229,348159,358732
|
||||
1994,3165042,35676,256285,172300,47373,357252,336367
|
||||
1995,3229176,36517,262352,174026,47693,370700,317783
|
||||
1996,3268093,37662,263020,174247,47622,381986,301009
|
||||
1997,3323455,38508,264200,175689,47743,410750,280467
|
||||
1998,3383307,39012,267380,176712,47754,435042,265422
|
||||
1999,3467311,39692,273954,177148,48265,464357,246018
|
||||
2000,3545247,40260,278518,177963,48949,493781,218932
|
||||
2001,3629713,41342,285246,179321,49549,521390,199033
|
||||
2002,3700951,42401,290142,180063,50227,545132,186811
|
||||
2003,3753890,43629,292329,180295,50795,567358,173486
|
||||
2004,3811351,44784,298193,180898,50957,583010,165000
|
||||
2005,3863807,45785,307264,182093,51860,592194,156095
|
||||
2006,3899917,46445,314020,185450,53437,608648,150563
|
||||
2007,3955787,48026,324153,184062,55149,619166,144704
|
||||
2008,3989811,48536,326232,188218,55808,636540,141549
|
||||
2009,4009602,50675,327808,185902,56533,642777,139220
|
||||
2010,4075825,52751,335200,186485,58492,651202,139548
|
||||
2011,4163003,55422,348553,187130,60324,665870,142834
|
||||
2012,4254725,58278,361926,188358,62219,679822,145984
|
||||
2013,4320885,60151,371361,189305,63950,687990,147247
|
||||
2014,4384490,62436,382281,190095,65563,699219,152962
|
||||
2015,4458069,65720,393598,191132,67101,710022,161292
|
||||
2016,4524029,69676,405566,192139,68721,720381,176030
|
||||
2017,4570823,73814,416501,192858,70113,729149,188053
|
||||
2018,4602688,77985,428808,193283,71683,739344,201423
|
||||
2019,4623952,83054,440795,193834,74085,744542,211480
|
||||
2020,4658335,88293,452186,195082,75659,771586,229421
|
||||
2021,4709366,97805,466857,196530,77672,791323,244572
|
||||
2022,4721280,105158,475714,196942,79691,789794,257753
|
||||
2023,4760948,114299,485303,197678,81241,805653,
|
|
@ -1,25 +0,0 @@
|
||||
hour,weekday,weekend
|
||||
0,0.9181438689,0.9421512708
|
||||
1,0.9172359071,0.9400891069
|
||||
2,0.9269464481,0.9461062015
|
||||
3,0.9415047932,0.9535084941
|
||||
4,0.9656299507,0.9651094993
|
||||
5,1.0221166443,0.9834676747
|
||||
6,1.1553090493,1.0124171051
|
||||
7,1.2093411031,1.0446615927
|
||||
8,1.1470295942,1.088203419
|
||||
9,1.0877191341,1.1110334576
|
||||
10,1.0418327372,1.0926752822
|
||||
11,1.0062977133,1.055488209
|
||||
12,0.9837030359,1.0251266112
|
||||
13,0.9667570278,0.9990015154
|
||||
14,0.9548320932,0.9782897278
|
||||
15,0.9509232061,0.9698167237
|
||||
16,0.9636973319,0.974288587
|
||||
17,0.9799372563,0.9886456216
|
||||
18,1.0046501848,1.0084159643
|
||||
19,1.0079452419,1.0171243296
|
||||
20,0.9860566481,0.9994722379
|
||||
21,0.9705228074,0.982761591
|
||||
22,0.9586485819,0.9698167237
|
||||
23,0.9335023778,0.9515079292
|
|
@ -1,31 +0,0 @@
|
||||
ct,TWh
|
||||
AT,
|
||||
BA,
|
||||
BE,
|
||||
BG,
|
||||
CH,
|
||||
CZ,
|
||||
DE,4500
|
||||
DK,700
|
||||
EE,
|
||||
ES,350
|
||||
FI,
|
||||
FR,
|
||||
GB,1050
|
||||
GR,120
|
||||
HR,
|
||||
HU,
|
||||
IE,
|
||||
IT,
|
||||
LT,
|
||||
LU,
|
||||
LV,
|
||||
NL,150
|
||||
NO,
|
||||
PL,120
|
||||
PT,400
|
||||
RO,
|
||||
RS,
|
||||
SE,
|
||||
SI,
|
||||
SK,
|
|
@ -26,3 +26,16 @@ NordBalt,Klaipeda (LT),Nybro (SE),450,,700,built,,https://en.wikipedia.org/wiki/
|
||||
Estlink 1,Harku (EE),Espoo (FI),105,,350,built,,https://en.wikipedia.org/wiki/Estlink,24.560278,59.384722,24.551667,60.203889
|
||||
Greenlink,Waterford (IE),Pembroke (UK),,180,500,under construction,,https://tyndp2022-project-platform.azurewebsites.net/projectsheets/transmission/286,-6.987,52.260,-4.986,51.686
|
||||
Celtic Interconnector,Aghada (IE),La Martyre (FR),,572,700,under consideration,,https://tyndp2022-project-platform.azurewebsites.net/projectsheets/transmission/107,-8.16642,51.91413,-4.184,48.459
|
||||
GiLA,Bordeaux (FR),Nantes (FR),,312,640,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,-1.209,46.901,-0.576,44.960
|
||||
HG North Tyrrhenian Corridor,Milan (IT),Viterbo (IT),,500,2000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,9.409,45.553,12.015,42.244
|
||||
HG Adriatic Corridor,Ferrara (IT),Foggia (IT),,582,2000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,11.661,44.855,15.550,41.513
|
||||
SAPEI 2,Fioumesanto (IT),Montalto (IT),,390,1000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,8.283,40.790,11.602,42.331
|
||||
HG Ionian-Tyrrhenian Corridor,Rossano (IT),Latina (IT),,496,2000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,16.629,39.568,12.779,41.430
|
||||
HG Ionian-Tyrrhenian Corridor 2,Rossano (IT),Catania (IT),,330,2000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,16.629,39.568,15.049,37.408
|
||||
Germany-UK Hybrid Interconnector,Fetteresso (UK),Emden (DE),800,,2000,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,-2.383,56.991,7.207,53.376
|
||||
NU-Link Interconnector,Hornsea (UK),Moerdijk (NL),,460,1200,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,-0.261,53.655,4.586,51.661
|
||||
APOLLO-LINK,La Farga (ES),La Spezia (IT),,725,2091,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,2.883,42.062,9.884,44.107
|
||||
Baltic WindConnector (BWC),Lubmin (DE),Lihula (EE),,960,2000,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,13.686,54.139,23.818,58.675
|
||||
High-Voltage Direct Current Interconnector Project Romania-Hungary,Constanta (RO),Albertirsa (HU),,930,2500,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,28.588,44.201,19.584,47.224
|
||||
Rhine-Main-Link,Ovelgönne (DE),Marxheim (DE),,433,4000,in permitting,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,8.379,53.315,8.435,50.078
|
||||
Green Aegean Interconnector,Arachthos (GR),Ottenhofen (DE),,600,3000,under consideration,,https://eepublicdownloads.blob.core.windows.net/public-cdn-container/tyndp-documents/TYNDP2024/240220_TYNDP2024_project_portfolio.xlsx,20.967,39.185,11.868,48.207
|
||||
|
|
25
data/switzerland-new_format-all_years.csv
Normal file
25
data/switzerland-new_format-all_years.csv
Normal file
@ -0,0 +1,25 @@
|
||||
country,item,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022
|
||||
CH,total residential,268.2,223.4,243.4,261.3,214.2,229.1,241.2,236.5,223.7,226.5,219.1,241.2,211.3
|
||||
CH,total residential space,192.2,149,168.1,185.5,139.7,154.4,167.3,161.5,147.2,150.4,140.2,166.2,131.9
|
||||
CH,total residential water,32.2,31.6,31.9,32.2,31.7,31.9,31.8,31.8,31.8,31.7,33.3,32.5,32.5
|
||||
CH,total residential cooking,9.3,9.3,9.3,9.4,9.5,9.6,9.9,10,10.1,10.2,10.5,10.3,10.3
|
||||
CH,electricity residential,67.9,63.7,65.7,67.6,63,64.4,69.7,69.2,67.7,68.1,68.7,70.8,66.8
|
||||
CH,electricity residential space,15.9,12.8,14.3,15.8,12.3,13.5,15.8,15.6,14.7,15.3,14.8,17.8,14.8
|
||||
CH,electricity residential water,8.8,8.5,8.5,8.6,8.5,8.6,8.9,9,9.2,9.3,9.7,9.5,9.5
|
||||
CH,electricity residential cooking,4.9,4.9,4.9,4.9,5,5,5,5.1,5.1,5.1,5.4,5.2,5.3
|
||||
CH,total services,145.9,127.4,136.7,144,124.5,132.5,150.5,147.7,141.5,143.1,129.7,144.2,122.5
|
||||
CH,total services space,80,62.2,70.8,77.4,58.3,64.3,77,74.4,68.2,69.8,64.3,75.7,58.7
|
||||
CH,total services water,10.1,10,10.1,10.1,10,10,11.4,11.3,11.2,11.1,9.7,10.4,12
|
||||
CH,total services cooking,2.5,2.4,2.3,2.3,2.4,2.3,3.1,3.1,3.2,3.3,2.1,2.6,3.2
|
||||
CH,electricity services,60.5,59.2,60.3,61.4,60.3,62.6,65.9,65.7,65.5,65.6,58.8,61.6,61.6
|
||||
CH,electricity services space,4,3.2,3.8,4.2,3.3,3.6,2.7,2.5,2.3,2.3,2.2,2.5,2.5
|
||||
CH,electricity services water,0.7,0.7,0.7,0.7,0.7,0.7,1.2,1.1,1.1,1.1,0.9,1,1
|
||||
CH,electricity services cooking,2.5,2.4,2.3,2.3,2.4,2.3,3.1,3.1,3.1,3.2,3.3,2.1,3.2
|
||||
CH,total rail,11.5,11.1,11.2,11.4,11.1,11.4,11.6,11.4,11.2,11,10.2,10.6,10.8
|
||||
CH,total road,199.4,200.4,200.4,201.2,202,203.1,203.9,203.7,202.6,200.5,182.6,188.3,193.3
|
||||
CH,electricity road,0,0,0,0,0,0,0.1,0.2,0.3,0.4,0.5,0.8,1.3
|
||||
CH,electricity rail,11.5,11.1,11.2,11.4,11.1,11.4,11.5,11.3,11.1,11,10.1,10.6,10.7
|
||||
CH,total domestic aviation,3.3,3.2,3.4,3.4,3.5,3.5,3.6,3.1,3.1,2.9,2.5,2.8,3
|
||||
CH,total international aviation,58,62,63.5,64.2,64.5,66.8,70.6,72.8,77.2,78.2,28.2,31.2,56.8
|
||||
CH,total domestic navigation,1.6,1.6,1.6,1.6,1.6,1.6,1.4,1.4,1.4,1.4,1.4,1.4,1.4
|
||||
CH,total international navigation,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
23
doc/conf.py
23
doc/conf.py
@ -34,10 +34,10 @@ sys.path.insert(0, os.path.abspath("../scripts"))
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
#'sphinx.ext.autodoc',
|
||||
"sphinx.ext.autodoc",
|
||||
#'sphinx.ext.autosummary',
|
||||
"myst_parser",
|
||||
"sphinx.ext.autosectionlabel",
|
||||
# "sphinx.ext.autosectionlabel",
|
||||
"sphinx.ext.intersphinx",
|
||||
"sphinx.ext.todo",
|
||||
"sphinx.ext.mathjax",
|
||||
@ -50,6 +50,19 @@ extensions = [
|
||||
"sphinx.ext.imgconverter", # for SVG conversion
|
||||
]
|
||||
|
||||
autodoc_mock_imports = [
|
||||
"atlite",
|
||||
"snakemake",
|
||||
"pycountry",
|
||||
"rioxarray",
|
||||
"country_converter",
|
||||
"tabula",
|
||||
"memory_profiler",
|
||||
"powerplantmatching",
|
||||
"rasterio",
|
||||
"dask.distributed",
|
||||
]
|
||||
|
||||
autodoc_default_flags = ["members"]
|
||||
autosummary_generate = True
|
||||
|
||||
@ -72,7 +85,7 @@ master_doc = "index"
|
||||
|
||||
# General information about the project.
|
||||
project = "PyPSA-Eur"
|
||||
copyright = "2017-2023 Tom Brown (KIT, TUB, FIAS), Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), Fabian Neumann (TUB, KIT), Marta Victoria (Aarhus University), Lisa Zeyen (KIT, TUB)"
|
||||
copyright = "2017-2024 Tom Brown (KIT, TUB, FIAS), Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), Fabian Neumann (TUB, KIT), Marta Victoria (Aarhus University), Lisa Zeyen (KIT, TUB)"
|
||||
author = "Tom Brown (KIT, TUB, FIAS), Jonas Hoersch (KIT, FIAS), Fabian Hofmann (TUB, FIAS), Fabian Neumann (TUB, KIT), Marta Victoria (Aarhus University), Lisa Zeyen (KIT, TUB)"
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
@ -80,9 +93,9 @@ author = "Tom Brown (KIT, TUB, FIAS), Jonas Hoersch (KIT, FIAS), Fabian Hofmann
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = "0.9"
|
||||
version = "0.10"
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = "0.9.0"
|
||||
release = "0.10.0"
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
8
doc/configtables/adjustments.csv
Normal file
8
doc/configtables/adjustments.csv
Normal file
@ -0,0 +1,8 @@
|
||||
,Unit,Values,Description
|
||||
adjustments,,,
|
||||
-- electricity,bool or dict,,"Parameter adjustments for capital cost, marginal cost, and maximum capacities of carriers. Applied in :mod:`prepare_network.`"
|
||||
-- -- {attr},,,"Attribute can be ``e_nom_opt``, ``p_nom_opt``, ``marginal_cost`` or ``capital_cost``"
|
||||
-- -- -- {carrier},float,per-unit,"Any carrier of the network to which parameter adjustment factor should be applied."
|
||||
-- sector,bool or dict,,"Parameter adjustments for capital cost, marginal cost, and maximum capacities of carriers. Applied in :mod:`prepare_sector_network.`"
|
||||
-- -- {attr},,,"Attribute can be ``e_nom_opt``, ``p_nom_opt``, ``marginal_cost`` or ``capital_cost``"
|
||||
-- -- -- {carrier},float,per-unit,"Any carrier of the network to which parameter adjustment factor should be applied."
|
|
@ -17,3 +17,6 @@ aggregation_strategies,,,
|
||||
-- -- {key},str,"{key} can be any of the component of the generator (str). It’s value can be any that can be converted to pandas.Series using getattr(). For example one of {min, max, sum}.","Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new generator."
|
||||
-- buses,,,
|
||||
-- -- {key},str,"{key} can be any of the component of the bus (str). It’s value can be any that can be converted to pandas.Series using getattr(). For example one of {min, max, sum}.","Aggregates the component according to the given strategy. For example, if sum, then all values within each cluster are summed to represent the new bus."
|
||||
temporal,,,Options for temporal resolution
|
||||
-- resolution_elec,--,"{false,``nH``; i.e. ``2H``-``6H``}","Resample the time-resolution by averaging over every ``n`` snapshots in :mod:`prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks."
|
||||
-- resolution_sector,--,"{false,``nH``; i.e. ``2H``-``6H``}","Resample the time-resolution by averaging over every ``n`` snapshots in :mod:`prepare_sector_network`."
|
||||
|
|
@ -1,6 +1,6 @@
|
||||
,Unit,Values,Description
|
||||
year,--,YYYY; e.g. '2030',Year for which to retrieve cost assumptions of ``resources/costs.csv``.
|
||||
version,--,vX.X.X; e.g. 'v0.5.0',Version of ``technology-data`` repository to use.
|
||||
version,--,vX.X.X or <user>/<repo>/vX.X.X; e.g. 'v0.5.0',Version of ``technology-data`` repository to use. If this string is of the form <user>/<repo>/<version> then costs are instead retrieved from ``github.com/<user>/<repo>`` at the <version> tag.
|
||||
rooftop_share,--,float,Share of rooftop PV when calculating capital cost of solar (joint rooftop and utility-scale PV).
|
||||
social_discountrate,p.u.,float,Social discount rate to compare costs in different investment periods. 0.02 corresponds to a social discount rate of 2%.
|
||||
fill_values,--,float,Default values if not specified for a technology in ``resources/costs.csv``.
|
||||
|
|
@ -5,8 +5,8 @@ retrieve_databundle,bool,"{true, false}","Switch to retrieve databundle from zen
|
||||
retrieve_sector_databundle,bool,"{true, false}","Switch to retrieve sector databundle from zenodo via the rule :mod:`retrieve_sector_databundle` or whether to keep a custom databundle located in the corresponding folder."
|
||||
retrieve_cost_data,bool,"{true, false}","Switch to retrieve technology cost data from `technology-data repository <https://github.com/PyPSA/technology-data>`_."
|
||||
build_cutout,bool,"{true, false}","Switch to enable the building of cutouts via the rule :mod:`build_cutout`."
|
||||
retrieve_irena,bool,"{true, false}",Switch to enable the retrieval of ``existing_capacities`` from IRENASTAT with :mod:`retrieve_irena`.
|
||||
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`."
|
||||
retrieve_natura_raster,bool,"{true, false}","Switch to enable the retrieval of ``natura.tiff`` from zenodo with :mod:`retrieve_natura_raster`."
|
||||
custom_busmap,bool,"{true, false}","Switch to enable the use of custom busmaps in rule :mod:`cluster_network`. If activated the rule looks for provided 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``."
|
||||
drop_leap_day,bool,"{true, false}","Switch to drop February 29 from all time-dependent data in leap years"
|
||||
|
|
@ -1,7 +1,4 @@
|
||||
,Unit,Values,Description
|
||||
energy_totals_year ,--,"{1990,1995,2000,2005,2010,2011,…} ",The year for the sector energy use. The year must be avaliable in the Eurostat report
|
||||
base_emissions_year ,--,"YYYY; e.g. 1990","The base year for the sector emissions. See `European Environment Agency (EEA) <https://www.eea.europa.eu/data-and-maps/data/national-emissions-reported-to-the-unfccc-and-to-the-eu-greenhouse-gas-monitoring-mechanism-16>`_."
|
||||
|
||||
eurostat_report_year ,--,"{2016,2017,2018}","The publication year of the Eurostat report. 2016 includes Bosnia and Herzegovina, 2017 does not"
|
||||
|
||||
emissions ,--,"{CO2, All greenhouse gases - (CO2 equivalent)}","Specify which sectoral emissions are taken into account. Data derived from EEA. Currently only CO2 is implemented."
|
||||
|
|
@ -3,4 +3,5 @@ grouping_years_power ,--,A list of years,Intervals to group existing capacities
|
||||
grouping_years_heat ,--,A list of years below 2020,Intervals to group existing capacities for heat
|
||||
|
||||
threshold_capacity ,MW,float,Capacities generators and links of below threshold are removed during add_existing_capacities
|
||||
default_heating_lifetime ,years,int,Default lifetime for heating technologies
|
||||
conventional_carriers ,--,"Any subset of {uranium, coal, lignite, oil} ",List of conventional power plants to include in the sectoral network
|
||||
|
|
@ -6,3 +6,6 @@ hydro_max_hours,h,"Any of {float, 'energy_capacity_totals_by_country', 'estimate
|
||||
flatten_dispatch,bool,"{true, false}",Consider an upper limit for the hydro dispatch. The limit is given by the average capacity factor plus the buffer given in ``flatten_dispatch_buffer``
|
||||
flatten_dispatch_buffer,--,float,"If ``flatten_dispatch`` is true, specify the value added above the average capacity factor."
|
||||
clip_min_inflow,MW,float,"To avoid too small values in the inflow time series, values below this threshold are set to zero."
|
||||
eia_norm_year,--,"Year in EIA hydro generation dataset; or False to disable","To specify a specific year by which hydro inflow is normed that deviates from the snapshots' year"
|
||||
eia_correct_by_capacity,--,boolean,"Correct EIA annual hydro generation data by installed capacity."
|
||||
eia_approximate_missing,--,boolean,"Approximate hydro generation data for years not included in EIA dataset through a regression based on annual runoff."
|
||||
|
|
@ -17,6 +17,8 @@ HVC_primary_fraction,--,float,The fraction of high value chemicals (HVC) produce
|
||||
HVC_mechanical_recycling _fraction,--,float,The fraction of high value chemicals (HVC) produced using mechanical recycling
|
||||
HVC_chemical_recycling _fraction,--,float,The fraction of high value chemicals (HVC) produced using chemical recycling
|
||||
,,,
|
||||
sector_ratios_fraction_future,--,Dictionary with planning horizons as keys.,The fraction of total progress in fuel and process switching achieved in the industry sector.
|
||||
basic_chemicals_without_NH3_production_today,Mt/a,float,"The amount of basic chemicals produced without ammonia (= 86 Mtethylene-equiv - 17 MtNH3)."
|
||||
HVC_production_today,MtHVC/a,float,"The amount of high value chemicals (HVC) produced. This includes ethylene, propylene and BTX. From `DECHEMA (2017) <https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf>`_, Figure 16, page 107"
|
||||
Mwh_elec_per_tHVC _mechanical_recycling,MWh/tHVC,float,"The energy amount of electricity needed to produce a ton of high value chemical (HVC) using mechanical recycling. From SI of `Meys et al (2020) <https://doi.org/10.1016/j.resconrec.2020.105010>`_, Table S5, for HDPE, PP, PS, PET. LDPE would be 0.756."
|
||||
Mwh_elec_per_tHVC _chemical_recycling,MWh/tHVC,float,"The energy amount of electricity needed to produce a ton of high value chemical (HVC) using chemical recycling. The default value is based on pyrolysis and electric steam cracking. From `Material Economics (2019) <https://materialeconomics.com/latest-updates/industrial-transformation-2050>`_, page 125"
|
||||
|
|
@ -1,17 +1,14 @@
|
||||
description,file/folder,licence,source
|
||||
JRC IDEES database,jrc-idees-2015/,CC BY 4.0,https://ec.europa.eu/jrc/en/potencia/jrc-idees
|
||||
urban/rural fraction,urban_percent.csv,unknown,unknown
|
||||
JRC biomass potentials,biomass/,unknown,https://doi.org/10.2790/39014
|
||||
JRC ENSPRESO biomass potentials,remote,CC BY 4.0,https://data.jrc.ec.europa.eu/dataset/74ed5a04-7d74-4807-9eab-b94774309d9f
|
||||
EEA emission statistics,eea/UNFCCC_v23.csv,EEA standard re-use policy,https://www.eea.europa.eu/data-and-maps/data/national-emissions-reported-to-the-unfccc-and-to-the-eu-greenhouse-gas-monitoring-mechanism-16
|
||||
Eurostat Energy Balances,eurostat-energy_balances-*/,Eurostat,https://ec.europa.eu/eurostat/web/energy/data/energy-balances
|
||||
Swiss energy statistics from Swiss Federal Office of Energy,switzerland-sfoe/,unknown,http://www.bfe.admin.ch/themen/00526/00541/00542/02167/index.html?dossier_id=02169
|
||||
BASt emobility statistics,emobility/,unknown,http://www.bast.de/DE/Verkehrstechnik/Fachthemen/v2-verkehrszaehlung/Stundenwerte.html?nn=626916
|
||||
BDEW heating profile,heat_load_profile_BDEW.csv,unknown,https://github.com/oemof/demandlib
|
||||
heating profiles for Aarhus,heat_load_profile_DK_AdamJensen.csv,unknown,Adam Jensen MA thesis at Aarhus University
|
||||
George Lavidas wind/wave costs,WindWaveWEC_GLTB.xlsx,unknown,George Lavidas
|
||||
co2 budgets,co2_budget.csv,CC BY 4.0,https://arxiv.org/abs/2004.11009
|
||||
existing heating potentials,existing_infrastructure/existing_heating_raw.csv,unknown,https://ec.europa.eu/energy/studies/mapping-and-analyses-current-and-future-2020-2030-heatingcooling-fuel-deployment_en?redir=1
|
||||
existing heating potentials,existing_infrastructure/existing_heating_raw.csv,unknown,https://energy.ec.europa.eu/publications/mapping-and-analyses-current-and-future-2020-2030-heatingcooling-fuel-deployment-fossilrenewables-1_en
|
||||
IRENA existing VRE capacities,existing_infrastructure/{solar|onwind|offwind}_capcity_IRENA.csv,unknown,https://www.irena.org/Statistics/Download-Data
|
||||
USGS ammonia production,myb1-2017-nitro.xls,unknown,https://www.usgs.gov/centers/nmic/nitrogen-statistics-and-information
|
||||
hydrogen salt cavern potentials,h2_salt_caverns_GWh_per_sqkm.geojson,CC BY 4.0,https://doi.org/10.1016/j.ijhydene.2019.12.161 https://doi.org/10.20944/preprints201910.0187.v1
|
||||
|
|
@ -1,6 +1,7 @@
|
||||
,Unit,Values,Description
|
||||
power_statistics,bool,"{true, false}",Whether to load the electricity consumption data of the ENTSOE power statistics (only for files from 2019 and before) or from the ENTSOE transparency data (only has load data from 2015 onwards).
|
||||
interpolate_limit,hours,integer,"Maximum gap size (consecutive nans) which interpolated linearly."
|
||||
time_shift_for_large_gaps,string,string,"Periods which are used for copying time-slices in order to fill large gaps of nans. Have to be valid ``pandas`` period strings."
|
||||
manual_adjustments,bool,"{true, false}","Whether to adjust the load data manually according to the function in :func:`manual_adjustment`."
|
||||
scaling_factor,--,float,"Global correction factor for the load time series."
|
||||
fixed_year,--,Year or False,"To specify a fixed year for the load time series that deviates from the snapshots' year"
|
||||
supplement_synthetic,bool,"{true, false}","Whether to supplement missing data for selected time period should be supplemented by synthetic data from https://zenodo.org/record/10820928."
|
||||
|
|
@ -2,7 +2,7 @@
|
||||
cutout,--,"Should be a folder listed in the configuration ``atlite: cutouts:`` (e.g. 'europe-2013-era5') or reference an existing folder in the directory ``cutouts``. Source module must be ERA5.","Specifies the directory where the relevant weather data ist stored."
|
||||
resource,,,
|
||||
-- method,--,"Must be 'wind'","A superordinate technology type."
|
||||
-- turbine,--,"One of turbine types included in `atlite <https://github.com/PyPSA/atlite/tree/master/atlite/resources/windturbine>`_","Specifies the turbine type and its characteristic power curve."
|
||||
-- turbine,--,"One of turbine types included in `atlite <https://github.com/PyPSA/atlite/tree/master/atlite/resources/windturbine>`_. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available.","Specifies the turbine type and its characteristic power curve."
|
||||
capacity_per_sqkm,:math:`MW/km^2`,float,"Allowable density of wind turbine placement."
|
||||
correction_factor,--,float,"Correction factor for capacity factor time series."
|
||||
excluder_resolution,m,float,"Resolution on which to perform geographical elibility analysis."
|
||||
|
|
@ -2,7 +2,7 @@
|
||||
cutout,--,"Should be a folder listed in the configuration ``atlite: cutouts:`` (e.g. 'europe-2013-era5') or reference an existing folder in the directory ``cutouts``. Source module must be ERA5.","Specifies the directory where the relevant weather data ist stored."
|
||||
resource,,,
|
||||
-- method,--,"Must be 'wind'","A superordinate technology type."
|
||||
-- turbine,--,"One of turbine types included in `atlite <https://github.com/PyPSA/atlite/tree/master/atlite/resources/windturbine>`__","Specifies the turbine type and its characteristic power curve."
|
||||
-- turbine,--,"One of turbine types included in `atlite <https://github.com/PyPSA/atlite/tree/master/atlite/resources/windturbine>`_. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available.","Specifies the turbine type and its characteristic power curve."
|
||||
capacity_per_sqkm,:math:`MW/km^2`,float,"Allowable density of wind turbine placement."
|
||||
correction_factor,--,float,"Correction factor for capacity factor time series."
|
||||
excluder_resolution,m,float,"Resolution on which to perform geographical elibility analysis."
|
||||
|
|
@ -2,7 +2,7 @@
|
||||
cutout,--,"Should be a folder listed in the configuration ``atlite: cutouts:`` (e.g. 'europe-2013-era5') or reference an existing folder in the directory ``cutouts``. Source module must be ERA5.","Specifies the directory where the relevant weather data ist stored."
|
||||
resource,,,
|
||||
-- method,--,"Must be 'wind'","A superordinate technology type."
|
||||
-- turbine,--,"One of turbine types included in `atlite <https://github.com/PyPSA/atlite/tree/master/atlite/resources/windturbine>`__","Specifies the turbine type and its characteristic power curve."
|
||||
-- turbine,--,"One of turbine types included in `atlite <https://github.com/PyPSA/atlite/tree/master/atlite/resources/windturbine>`_. Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available.","Specifies the turbine type and its characteristic power curve."
|
||||
capacity_per_sqkm,:math:`MW/km^2`,float,"Allowable density of wind turbine placement."
|
||||
corine,,,
|
||||
-- grid_codes,--,"Any subset of the `CORINE Land Cover code list <http://www.eea.europa.eu/data-and-maps/data/corine-land-cover-2006-raster-1/corine-land-cover-classes-and/clc_legend.csv/at_download/file>`_","Specifies areas according to CORINE Land Cover codes which are generally eligible for wind turbine placement."
|
||||
|
|
@ -1,6 +1,9 @@
|
||||
,Unit,Values,Description
|
||||
map,,,
|
||||
-- boundaries,°,"[x1,x2,y1,y2]",Boundaries of the map plots in degrees latitude (y) and longitude (x)
|
||||
projection,,,,
|
||||
-- name,--,"Valid Cartopy projection name","See https://scitools.org.uk/cartopy/docs/latest/reference/projections.html for list of available projections."
|
||||
-- args,--,--,"Other entries under 'projection' are passed as keyword arguments to the projection constructor, e.g. ``central_longitude: 10.``."
|
||||
costs_max,bn Euro,float,Upper y-axis limit in cost bar plots.
|
||||
costs_threshold,bn Euro,float,Threshold below which technologies will not be shown in cost bar plots.
|
||||
energy_max,TWh,float,Upper y-axis limit in energy bar plots.
|
||||
|
Can't render this file because it has a wrong number of fields in line 4.
|
@ -1,5 +1,9 @@
|
||||
,Unit,Values,Description
|
||||
name,--,"any string","Specify a name for your run. Results will be stored under this name."
|
||||
disable_progrssbar,bool,"{true, false}","Switch to select whether progressbar should be disabled."
|
||||
shared_resources,bool,"{true, false}","Switch to select whether resources should be shared across runs."
|
||||
name,--,str/list,"Specify a name for your run. Results will be stored under this name. If ``scenario: enable:`` is set to ``true``, the name must contain a subset of scenario names defined in ``scenario: file:``. If the name is 'all', all defined scenarios will be run."
|
||||
prefix,--,str,"Prefix for the run name which is used as a top-layer directory name in the results and resources folders."
|
||||
scenarios,,,
|
||||
-- enable,bool,"{true, false}","Switch to select whether workflow should generate scenarios based on ``file``."
|
||||
-- file,str,,"Path to the scenario yaml file. The scenario file contains config overrides for each scenario. In order to be taken account, ``run: scenarios`` has to be set to ``true`` and ``run: name`` has to be a subset of top level keys given in the scenario file. In order to automatically create a `scenario.yaml` file based on a combination of settings, alter and use the ``config/create_scenarios.py`` script in the ``config`` directory."
|
||||
disable_progressbar,bool,"{true, false}","Switch to select whether progressbar should be disabled."
|
||||
shared_resources,bool/str,,"Switch to select whether resources should be shared across runs. If a string is passed, this is used as a subdirectory name for shared resources. If set to 'base', only resources before creating the elec.nc file are shared."
|
||||
shared_cutouts,bool,"{true, false}","Switch to select whether cutouts should be shared across runs."
|
||||
|
|
@ -7,5 +7,5 @@ Trigger, Description, Definition, Status
|
||||
``B``,Add biomass,,In active use
|
||||
``I``,Add industry sector,,In active use
|
||||
``A``,Add agriculture sector,,In active use
|
||||
``dist``+``n``,Add distribution grid with investment costs of ``n`` times costs in ``data/costs_{cost_year}.csv``,,In active use
|
||||
``dist``+``n``,Add distribution grid with investment costs of ``n`` times costs in ``resources/costs_{cost_year}.csv``,,In active use
|
||||
``seq``+``n``,Sets the CO2 sequestration potential to ``n`` Mt CO2 per year,,In active use
|
||||
|
|
@ -1,4 +1,9 @@
|
||||
,Unit,Values,Description
|
||||
transport,--,"{true, false}",Flag to include transport sector.
|
||||
heating,--,"{true, false}",Flag to include heating sector.
|
||||
biomass,--,"{true, false}",Flag to include biomass sector.
|
||||
industry,--,"{true, false}",Flag to include industry sector.
|
||||
agriculture,--,"{true, false}",Flag to include agriculture sector.
|
||||
district_heating,--,,`prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`_
|
||||
-- potential,--,float,maximum fraction of urban demand which can be supplied by district heating
|
||||
-- progress,--,Dictionary with planning horizons as keys., Increase of today's district heating demand to potential maximum district heating share. Progress = 0 means today's district heating share. Progress = 1 means maximum fraction of urban demand is supplied by district heating
|
||||
@ -66,6 +71,7 @@ boilers,--,"{true, false}",Add option for transforming gas into heat using gas b
|
||||
resistive_heaters,--,"{true, false}",Add option for transforming electricity into heat using resistive heaters (independently from gas boilers)
|
||||
oil_boilers,--,"{true, false}",Add option for transforming oil into heat using boilers
|
||||
biomass_boiler,--,"{true, false}",Add option for transforming biomass into heat using boilers
|
||||
overdimension_individual_heating,--,"float",Add option for overdimensioning individual heating systems by a certain factor. This allows them to cover heat demand peaks e.g. 10% higher than those in the data with a setting of 1.1.
|
||||
chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP)
|
||||
micro_chp,--,"{true, false}",Add option for using Combined Heat and Power (CHP) for decentral areas.
|
||||
solar_thermal,--,"{true, false}",Add option for using solar thermal to generate heat.
|
||||
@ -84,7 +90,7 @@ regional_methanol_demand,--,"{true, false}",Spatially resolve methanol demand. S
|
||||
regional_oil_demand,--,"{true, false}",Spatially resolve oil demand. Set to true if regional CO2 constraints needed.
|
||||
regional_co2 _sequestration_potential,,,
|
||||
-- enable,--,"{true, false}",Add option for regionally-resolved geological carbon dioxide sequestration potentials based on `CO2StoP <https://setis.ec.europa.eu/european-co2-storage-database_en>`_.
|
||||
-- attribute,--,string,Name of the attribute for the sequestration potential
|
||||
-- attribute,--,string or list,Name (or list of names) of the attribute(s) for the sequestration potential
|
||||
-- include_onshore,--,"{true, false}",Add options for including onshore sequestration potentials
|
||||
-- min_size,Gt ,float,Any sites with lower potential than this value will be excluded
|
||||
-- max_size,Gt ,float,The maximum sequestration potential for any one site.
|
||||
@ -108,6 +114,7 @@ min_part_load _methanolisation,per unit of p_nom ,float,The minimum unit dispatc
|
||||
use_fischer_tropsch _waste_heat,--,"{true, false}",Add option for using waste heat of Fischer Tropsch in district heating networks
|
||||
use_fuel_cell_waste_heat,--,"{true, false}",Add option for using waste heat of fuel cells in district heating networks
|
||||
use_electrolysis_waste _heat,--,"{true, false}",Add option for using waste heat of electrolysis in district heating networks
|
||||
electricity_transmission _grid,--,"{true, false}",Switch for enabling/disabling the electricity transmission grid.
|
||||
electricity_distribution _grid,--,"{true, false}",Add a simplified representation of the exchange capacity between transmission and distribution grid level through a link.
|
||||
electricity_distribution _grid_cost_factor,,,Multiplies the investment cost of the electricity distribution grid
|
||||
,,,
|
||||
@ -136,5 +143,5 @@ limit_max_growth,,,
|
||||
-- factor,p.u.,float,The maximum growth factor of a carrier (e.g. 1.3 allows 30% larger than max historic growth)
|
||||
-- max_growth,,,
|
||||
-- -- {carrier},GW,float,The historic maximum growth of a carrier
|
||||
-- max_relative_growth,
|
||||
-- max_relative_growth,,,
|
||||
-- -- {carrier},p.u.,float,The historic maximum relative growth of a carrier
|
||||
|
Can't render this file because it has a wrong number of fields in line 139.
|
@ -2,5 +2,3 @@
|
||||
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
|
||||
inclusive,--,"One of {'neither', 'both', ‘left’, ‘right’}","Make the time interval closed to the ``left``, ``right``, or both sides ``both`` or neither side ``None``."
|
||||
resolution ,--,"{false,``nH``; i.e. ``2H``-``6H``}",Resample the time-resolution by averaging over every ``n`` snapshots
|
||||
segmentation,--,"{false,``n``; e.g. ``4380``}","Apply time series segmentation with `tsam <https://tsam.readthedocs.io/en/latest/index.html>`_ package to ``n`` adjacent snapshots of varying lengths based on capacity factors of varying renewables, hydro inflow and load."
|
||||
|
|
@ -2,7 +2,7 @@
|
||||
cutout,--,"Should be a folder listed in the configuration ``atlite: cutouts:`` (e.g. 'europe-2013-era5') or reference an existing folder in the directory ``cutouts``. Source module can be ERA5 or SARAH-2.","Specifies the directory where the relevant weather data ist stored that is specified at ``atlite/cutouts`` configuration. Both ``sarah`` and ``era5`` work."
|
||||
resource,,,
|
||||
-- method,--,"Must be 'pv'","A superordinate technology type."
|
||||
-- panel,--,"One of {'Csi', 'CdTe', 'KANENA'} as defined in `atlite <https://github.com/PyPSA/atlite/tree/master/atlite/resources/solarpanel>`__","Specifies the solar panel technology and its characteristic attributes."
|
||||
-- panel,--,"One of {'Csi', 'CdTe', 'KANENA'} as defined in `atlite <https://github.com/PyPSA/atlite/tree/master/atlite/resources/solarpanel>`_ . Can be a string or a dictionary with years as keys which denote the year another turbine model becomes available.","Specifies the solar panel technology and its characteristic attributes."
|
||||
-- orientation,,,
|
||||
-- -- slope,°,"Realistically any angle in [0., 90.]","Specifies the tilt angle (or slope) of the solar panel. A slope of zero corresponds to the face of the panel aiming directly overhead. A positive tilt angle steers the panel towards the equator."
|
||||
-- -- azimuth,°,"Any angle in [0., 360.]","Specifies the `azimuth <https://en.wikipedia.org/wiki/Azimuth>`_ orientation of the solar panel. South corresponds to 180.°."
|
||||
|
|
@ -7,6 +7,7 @@ options,,,
|
||||
-- rolling_horizon,bool,"{'true','false'}","Whether to optimize the network in a rolling horizon manner, where the snapshot range is split into slices of size `horizon` which are solved consecutively."
|
||||
-- seed,--,int,Random seed for increased deterministic behaviour.
|
||||
-- custom_extra_functionality,--,str,Path to a Python file with custom extra functionality code to be injected into the solving rules of the workflow relative to ``rules`` directory.
|
||||
-- io_api,string,"{'lp','mps','direct'}",Passed to linopy and determines the API used to communicate with the solver. With the ``'lp'`` and ``'mps'`` options linopy passes a file to the solver; with the ``'direct'`` option (only supported for HIGHS and Gurobi) linopy uses an in-memory python API resulting in better performance.
|
||||
-- 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)
|
||||
-- min_iterations,--,int,Minimum number of solving iterations in between which resistance and reactence (``x/r``) are updated for branches according to ``s_nom_opt`` of the previous run.
|
||||
-- max_iterations,--,int,Maximum number of solving iterations in between which resistance and reactence (``x/r``) are updated for branches according to ``s_nom_opt`` of the previous run.
|
||||
@ -19,7 +20,7 @@ constraints ,,,
|
||||
-- BAU,bool,"{'true','false'}",Add a per-``carrier`` minimal overall capacity; i.e. at least ``40GW`` of ``OCGT`` in Europe; configured in ``electricity: BAU_mincapacities``
|
||||
-- SAFE,bool,"{'true','false'}",Add a capacity reserve margin of a certain fraction above the peak demand to which renewable generators and storage do *not* contribute. Ignores network.
|
||||
solver,,,
|
||||
-- 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', 'highs', 'cbc', 'glpk'}; potentially more possible",Solver to use for optimisation problems in the workflow; e.g. clustering and linear optimal power flow.
|
||||
-- options,--,Key listed under ``solver_options``.,Link to specific parameter settings.
|
||||
solver_options,,dict,Dictionaries with solver-specific parameter settings.
|
||||
mem,MB,int,Estimated maximum memory requirement for solving networks.
|
||||
|
|
@ -1,9 +1,9 @@
|
||||
,Unit,Values,Description
|
||||
version,--,0.x.x,Version of PyPSA-Eur. Descriptive only.
|
||||
tutorial,bool,"{true, false}",Switch to retrieve the tutorial data set instead of the full data set.
|
||||
version,--,0.x.x,"Version of PyPSA-Eur. Descriptive only."
|
||||
tutorial,bool,"{true, false}","Switch to retrieve the tutorial data set instead of the full data set."
|
||||
logging,,,
|
||||
-- level,--,"Any of {'INFO', 'WARNING', 'ERROR'}","Restrict console outputs to all infos, warning or errors only"
|
||||
-- format,--,,Custom format for log messages. See `LogRecord <https://docs.python.org/3/library/logging.html#logging.LogRecord>`_ attributes.
|
||||
-- format,--,"","Custom format for log messages. See `LogRecord <https://docs.python.org/3/library/logging.html#logging.LogRecord>`_ attributes."
|
||||
private,,,
|
||||
-- keys,,,
|
||||
-- -- entsoe_api,--,,Optionally specify the ENTSO-E API key. See the guidelines to get `ENTSO-E API key <https://transparency.entsoe.eu/content/static_content/Static%20content/web%20api/Guide.html>`_
|
||||
|
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
Configuration
|
||||
##########################################
|
||||
|
||||
PyPSA-Eur has several configuration options which are documented in this section and are collected in a ``config/config.yaml`` file located in the root directory. Users should copy the provided default configuration (``config/config.default.yaml``) and amend their own modifications and assumptions in the user-specific configuration file (``config/config.yaml``); confer installation instructions at :ref:`defaultconfig`.
|
||||
PyPSA-Eur has several configuration options which are documented in this section and are collected in a ``config/config.yaml`` file. This file defines deviations from the default configuration (``config/config.default.yaml``); confer installation instructions at :ref:`defaultconfig`.
|
||||
|
||||
.. _toplevel_cf:
|
||||
|
||||
@ -31,7 +31,7 @@ Top-level configuration
|
||||
.. _run_cf:
|
||||
|
||||
``run``
|
||||
=======
|
||||
=============
|
||||
|
||||
It is common conduct to analyse energy system optimisation models for **multiple scenarios** for a variety of reasons,
|
||||
e.g. assessing their sensitivity towards changing the temporal and/or geographical resolution or investigating how
|
||||
@ -90,9 +90,9 @@ For each wildcard, a **list of values** is provided. The rule
|
||||
``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
|
||||
<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>`_
|
||||
<https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#targets>`__
|
||||
uses.
|
||||
|
||||
An exemplary dependency graph (starting from the simplification rules) then looks like this:
|
||||
@ -129,7 +129,7 @@ An exemplary dependency graph (starting from the simplification rules) then look
|
||||
``snapshots``
|
||||
=============
|
||||
|
||||
Specifies the temporal range to build an energy system model for as arguments to `pandas.date_range <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.date_range.html>`_
|
||||
Specifies the temporal range to build an energy system model for as arguments to `pandas.date_range <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.date_range.html>`__
|
||||
|
||||
.. literalinclude:: ../config/config.default.yaml
|
||||
:language: yaml
|
||||
@ -197,7 +197,7 @@ Switches for some rules and optional features.
|
||||
``atlite``
|
||||
==========
|
||||
|
||||
Define and specify the ``atlite.Cutout`` used for calculating renewable potentials and time-series. All options except for ``features`` are directly used as `cutout parameters <https://atlite.readthedocs.io/en/latest/ref_api.html#cutout>`_.
|
||||
Define and specify the ``atlite.Cutout`` used for calculating renewable potentials and time-series. All options except for ``features`` are directly used as `cutout parameters <https://atlite.readthedocs.io/en/latest/ref_api.html#cutout>`__.
|
||||
|
||||
.. literalinclude:: ../config/config.default.yaml
|
||||
:language: yaml
|
||||
@ -443,7 +443,7 @@ overwrite the existing values.
|
||||
:widths: 22,7,22,33
|
||||
:file: configtables/biomass.csv
|
||||
|
||||
The list of available biomass is given by the category in `ENSPRESO_BIOMASS <https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx>`_, namely:
|
||||
The list of available biomass is given by the category in `ENSPRESO_BIOMASS <https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/ENSPRESO/ENSPRESO_BIOMASS.xlsx>`__, namely:
|
||||
|
||||
- Agricultural waste
|
||||
- Manure solid, liquid
|
||||
@ -577,6 +577,21 @@ The list of available biomass is given by the category in `ENSPRESO_BIOMASS <htt
|
||||
use ``min`` in ``p_nom_max:`` for more `
|
||||
conservative assumptions.
|
||||
|
||||
.. _adjustments_cf:
|
||||
|
||||
``adjustments``
|
||||
===============
|
||||
|
||||
.. literalinclude:: ../config/config.default.yaml
|
||||
:language: yaml
|
||||
:start-at: adjustments:
|
||||
:end-before: # docs
|
||||
|
||||
.. csv-table::
|
||||
:header-rows: 1
|
||||
:widths: 22,7,22,33
|
||||
:file: configtables/adjustments.csv
|
||||
|
||||
.. _solving_cf:
|
||||
|
||||
``solving``
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -35,3 +35,15 @@ including our own are reviewed by a second person before they are incorporated i
|
||||
If you are unfamiliar with pull requests, the GitHub help pages have a nice `guide <https://help.github.com/en/articles/about-pull-requests>`_.
|
||||
|
||||
To ask and answer general usage questions, join the `PyPSA mailing list <https://groups.google.com/forum/#!forum/pypsa>`_.
|
||||
|
||||
Contributing to the documentation
|
||||
====================================
|
||||
|
||||
We strive to keep documentation useful and up to date for all PyPSA users. If you encounter an area where documentation is not available or insufficient, we very much welcome your contribution. Here is How To:
|
||||
|
||||
#. Install the conda environment for documentation from the `PyPSA repository <https://github.com/PyPSA/PyPSA/blob/master/environment_docs.yml>`_.
|
||||
(Here is `how to install a conda environment <https://pypsa-eur.readthedocs.io/en/latest/installation.html#install-python-dependencies>`_.)
|
||||
#. Make your changes in the corresponding .rst file under ``pypsa-eur/doc``.
|
||||
#. Compile your changes by running the following command in your terminal in the ``doc`` folder: ``make html``
|
||||
You may encounter some warnings, but end up with a message such as ``build succeeded, XX warnings.``. html files to review your changes can then be found under ``doc/_build/html``.
|
||||
#. Contribute your documentation in a pull request (`here is a guide <https://help.github.com/en/articles/about-pull-requests>`_).
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -8,8 +8,8 @@ Techno-Economic Assumptions
|
||||
############################
|
||||
|
||||
The database of cost assumptions is retrieved from the repository
|
||||
`PyPSA/technology-data <https://github.com/pypsa/technology-data>`_ and then
|
||||
saved to a file ``data/costs_{year}.csv``. The ``config/config.yaml`` provides options
|
||||
`PyPSA/technology-data <https://github.com/pypsa/technology-data>`__ and then
|
||||
saved to a file ``resources/costs_{year}.csv``. The ``config/config.yaml`` provides options
|
||||
to choose a reference year and use a specific version of the repository.
|
||||
|
||||
.. literalinclude:: ../config/config.default.yaml
|
||||
@ -30,7 +30,7 @@ years compiled from various sources, namely for
|
||||
- carbon-dioxide intensity.
|
||||
|
||||
Many values are taken from a database published by the Danish Energy Agency (`DEA
|
||||
<https://ens.dk/en/our-services/projections-and-models/technology-data>`_).
|
||||
<https://ens.dk/en/our-services/projections-and-models/technology-data>`__).
|
||||
|
||||
|
||||
The given overnight capital costs are annualised to net present costs
|
||||
@ -50,7 +50,7 @@ Modifying Assumptions
|
||||
Some cost assumptions (e.g. marginal cost and capital cost) can be directly
|
||||
set in the ``config/config.yaml`` (cf. Section :ref:`costs_cf` in
|
||||
:ref:`config`). To change cost assumptions in more detail, make a copy of
|
||||
``data/costs_{year}.csv`` and reference the new cost file in the ``Snakefile``:
|
||||
``resources/costs_{year}.csv`` and reference the new cost file in the ``Snakefile``:
|
||||
|
||||
.. literalinclude:: ../Snakefile
|
||||
:start-at: COSTS
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2021-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2021-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -166,13 +166,13 @@ Options
|
||||
|
||||
The total carbon budget for the entire transition path can be indicated in the
|
||||
`sector_opts
|
||||
<https://github.com/PyPSA/pypsa-eur-sec/blob/f13902510010b734c510c38c4cae99356f683058/config.default.yaml#L25>`_
|
||||
<https://github.com/PyPSA/pypsa-eur-sec/blob/f13902510010b734c510c38c4cae99356f683058/config.default.yaml#L25>`__
|
||||
in ``config/config.yaml``. The carbon budget can be split among the
|
||||
``planning_horizons`` following an exponential or beta decay. E.g. ``'cb40ex0'``
|
||||
splits a carbon budget equal to 40 Gt :math:`_{CO_2}` following an exponential
|
||||
decay whose initial linear growth rate r is zero. They can also follow some
|
||||
user-specified path, if defined `here
|
||||
<https://github.com/PyPSA/pypsa-eur-sec/blob/413254e241fb37f55b41caba7264644805ad8e97/config.default.yaml#L56>`_.
|
||||
<https://github.com/PyPSA/pypsa-eur-sec/blob/413254e241fb37f55b41caba7264644805ad8e97/config.default.yaml#L56>`__.
|
||||
The paper `Speed of technological transformations required in Europe to achieve
|
||||
different climate goals (2022) <https://doi.org/10.1016/j.joule.2022.04.016>`__
|
||||
defines CO_2 budgets corresponding to global temperature increases (1.5C – 2C)
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 227 KiB After Width: | Height: | Size: 208 KiB |
BIN
doc/img/workflow.png
Normal file
BIN
doc/img/workflow.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 700 KiB |
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -81,16 +81,16 @@ them:
|
||||
.. note::
|
||||
You can find showcases of the model's capabilities in the Supplementary Materials of the
|
||||
Joule paper `The potential role of a hydrogen network in Europe
|
||||
<https://doi.org/10.1016/j.joule.2023.06.016>`_, the Supplementary Materials of another `paper in Joule with a
|
||||
<https://doi.org/10.1016/j.joule.2023.06.016>`__, the Supplementary Materials of another `paper in Joule with a
|
||||
description of the industry sector
|
||||
<https://doi.org/10.1016/j.joule.2022.04.016>`_, or in `a 2021 presentation
|
||||
at EMP-E <https://nworbmot.org/energy/brown-empe.pdf>`_.
|
||||
<https://doi.org/10.1016/j.joule.2022.04.016>`__, or in `a 2021 presentation
|
||||
at EMP-E <https://nworbmot.org/energy/brown-empe.pdf>`__.
|
||||
The sector-coupled extension of PyPSA-Eur was
|
||||
initially described in the paper `Synergies of sector coupling and transmission
|
||||
reinforcement in a cost-optimised, highly renewable European energy system
|
||||
<https://arxiv.org/abs/1801.05290>`_ (2018) but it differs by being based on the
|
||||
<https://arxiv.org/abs/1801.05290>`__ (2018) but it differs by being based on the
|
||||
higher resolution electricity transmission model `PyPSA-Eur
|
||||
<https://github.com/PyPSA/pypsa-eur>`_ rather than a one-node-per-country model,
|
||||
<https://github.com/PyPSA/pypsa-eur>`__ rather than a one-node-per-country model,
|
||||
and by including biomass, industry, industrial feedstocks, aviation, shipping,
|
||||
better carbon management, carbon capture and usage/sequestration, and gas
|
||||
networks.
|
||||
@ -99,8 +99,8 @@ About
|
||||
=====
|
||||
|
||||
PyPSA-Eur is designed to be imported into the open energy system modelling
|
||||
framework `PyPSA <https://www.pypsa.org>`_ for which `documentation
|
||||
<https://pypsa.readthedocs.io>`_ is available as well. However, since the
|
||||
framework `PyPSA <https://www.pypsa.org>`__ for which `documentation
|
||||
<https://pypsa.readthedocs.io>`__ is available as well. However, since the
|
||||
workflow is modular, it should be easy to adapt the data workflow to other
|
||||
modelling frameworks.
|
||||
|
||||
@ -114,28 +114,28 @@ of the individual parts.
|
||||
PyPSA-Eur is under active development and has several
|
||||
:doc:`limitations` which
|
||||
you should understand before using the model. The Github repository
|
||||
`issues <https://github.com/PyPSA/pypsa-eur/issues>`_ collect known
|
||||
`issues <https://github.com/PyPSA/pypsa-eur/issues>`__ collect known
|
||||
topics we are working on. Please feel free to help or make suggestions.
|
||||
|
||||
This project is currently maintained by the `Department of Digital
|
||||
Transformation in Energy Systems <https://www.tu.berlin/en/ensys>`_ at the
|
||||
`Technische Universität Berlin <https://www.tu.berlin>`_. Previous versions were
|
||||
developed within the `IAI <http://www.iai.kit.edu>`_ at the `Karlsruhe Institute
|
||||
of Technology (KIT) <http://www.kit.edu/english/index.php>`_ which was funded by
|
||||
the `Helmholtz Association <https://www.helmholtz.de/en/>`_, and by the
|
||||
Transformation in Energy Systems <https://www.tu.berlin/en/ensys>`__ at the
|
||||
`Technische Universität Berlin <https://www.tu.berlin>`__. Previous versions were
|
||||
developed within the `IAI <http://www.iai.kit.edu>`__ at the `Karlsruhe Institute
|
||||
of Technology (KIT) <http://www.kit.edu/english/index.php>`__ which was funded by
|
||||
the `Helmholtz Association <https://www.helmholtz.de/en/>`__, and by the
|
||||
`Renewable Energy Group
|
||||
<https://fias.uni-frankfurt.de/physics/schramm/renewable-energy-system-and-network-analysis/>`_
|
||||
at `FIAS <https://fias.uni-frankfurt.de/>`_ to carry out simulations for the
|
||||
`CoNDyNet project <http://condynet.de/>`_, financed by the `German Federal
|
||||
Ministry for Education and Research (BMBF) <https://www.bmbf.de/en/index.html>`_
|
||||
<https://fias.uni-frankfurt.de/physics/schramm/renewable-energy-system-and-network-analysis/>`__
|
||||
at `FIAS <https://fias.uni-frankfurt.de/>`__ to carry out simulations for the
|
||||
`CoNDyNet project <http://condynet.de/>`__, financed by the `German Federal
|
||||
Ministry for Education and Research (BMBF) <https://www.bmbf.de/en/index.html>`__
|
||||
as part of the `Stromnetze Research Initiative
|
||||
<http://forschung-stromnetze.info/projekte/grundlagen-und-konzepte-fuer-effiziente-dezentrale-stromnetze/>`_.
|
||||
<http://forschung-stromnetze.info/projekte/grundlagen-und-konzepte-fuer-effiziente-dezentrale-stromnetze/>`__.
|
||||
|
||||
|
||||
Workflow
|
||||
========
|
||||
|
||||
.. image:: ../graphics/workflow.png
|
||||
.. image:: img/workflow.png
|
||||
:class: full-width
|
||||
:align: center
|
||||
|
||||
@ -153,10 +153,10 @@ to reading this documentation.
|
||||
|
||||
- Documentation of `PyPSA <https://pypsa.readthedocs.io>`__, the package for
|
||||
modelling energy systems which PyPSA-Eur uses under the hood.
|
||||
- Course on `Energy Systems <https://nworbmot.org/courses/es-22/>`_ given at
|
||||
Technical University of Berlin by `Prof. Dr. Tom Brown <https://nworbmot.org>`_.
|
||||
- Course on `Data Science for Energy System Modelling <https://fneum.github.io/data-science-for-esm/intro.html>`_
|
||||
given at Technical University of Berlin by `Dr. Fabian Neumann <https://neumann.fyi>`_.
|
||||
- Course on `Energy Systems <https://nworbmot.org/courses/es-22/>`__ given at
|
||||
Technical University of Berlin by `Prof. Dr. Tom Brown <https://nworbmot.org>`__.
|
||||
- Course on `Data Science for Energy System Modelling <https://fneum.github.io/data-science-for-esm/intro.html>`__
|
||||
given at Technical University of Berlin by `Dr. Fabian Neumann <https://neumann.fyi>`__.
|
||||
|
||||
|
||||
Citing PyPSA-Eur
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -15,7 +15,7 @@ directory in which the commands following the ``%`` should be entered.
|
||||
Clone the Repository
|
||||
====================
|
||||
|
||||
First of all, clone the `PyPSA-Eur repository <https://github.com/PyPSA/pypsa-eur>`_ using the version control system ``git`` in the command line.
|
||||
First of all, clone the `PyPSA-Eur repository <https://github.com/PyPSA/pypsa-eur>`__ using the version control system ``git`` in the command line.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
@ -30,11 +30,11 @@ Install Python Dependencies
|
||||
===============================
|
||||
|
||||
PyPSA-Eur relies on a set of other Python packages to function.
|
||||
We recommend using the package manager `mamba <https://mamba.readthedocs.io/en/latest/>`_ to install them and manage your environments.
|
||||
For instructions for your operating system follow the ``mamba`` `installation guide <https://mamba.readthedocs.io/en/latest/installation.html>`_.
|
||||
We recommend using the package manager `mamba <https://mamba.readthedocs.io/en/latest/>`__ to install them and manage your environments.
|
||||
For instructions for your operating system follow the ``mamba`` `installation guide <https://mamba.readthedocs.io/en/latest/installation/mamba-installation.html>`__.
|
||||
You can also use ``conda`` equivalently.
|
||||
|
||||
The package requirements are curated in the `envs/environment.yaml <https://github.com/PyPSA/pypsa-eur/blob/master/envs/environment.yaml>`_ file.
|
||||
The 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
|
||||
|
||||
.. code:: bash
|
||||
@ -59,16 +59,16 @@ Install a Solver
|
||||
PyPSA passes the PyPSA-Eur network model to an external solver for performing the optimisation.
|
||||
PyPSA is known to work with the free software
|
||||
|
||||
- `HiGHS <https://highs.dev/>`_
|
||||
- `Cbc <https://projects.coin-or.org/Cbc#DownloadandInstall>`_
|
||||
- `GLPK <https://www.gnu.org/software/glpk/>`_ (`WinGLKP <http://winglpk.sourceforge.net/>`_)
|
||||
- `Ipopt <https://coin-or.github.io/Ipopt/INSTALL.html>`_
|
||||
- `HiGHS <https://highs.dev/>`__
|
||||
- `Cbc <https://projects.coin-or.org/Cbc#DownloadandInstall>`__
|
||||
- `GLPK <https://www.gnu.org/software/glpk/>`__ (`WinGLKP <http://winglpk.sourceforge.net/>`__)
|
||||
- `SCIP <https://scipopt.github.io/PySCIPOpt/docs/html/index.html>`__
|
||||
|
||||
and the non-free, commercial software (for some of which free academic licenses are available)
|
||||
|
||||
- `Gurobi <https://www.gurobi.com/documentation/quickstart.html>`_
|
||||
- `CPLEX <https://www.ibm.com/products/ilog-cplex-optimization-studio>`_
|
||||
- `FICO Xpress Solver <https://www.fico.com/de/products/fico-xpress-solver>`_
|
||||
- `Gurobi <https://www.gurobi.com/documentation/quickstart.html>`__
|
||||
- `CPLEX <https://www.ibm.com/products/ilog-cplex-optimization-studio>`__
|
||||
- `FICO Xpress Solver <https://www.fico.com/de/products/fico-xpress-solver>`__
|
||||
|
||||
For installation instructions of these solvers for your operating system, follow the links above.
|
||||
Commercial solvers such as Gurobi and CPLEX currently significantly outperform open-source solvers for large-scale problems, and
|
||||
@ -76,41 +76,19 @@ it might be the case that you can only retrieve solutions by using a commercial
|
||||
Nevertheless, you can still use open-source solvers for smaller problems.
|
||||
|
||||
.. seealso::
|
||||
`Instructions how to install a solver in the documentation of PyPSA <https://pypsa.readthedocs.io/en/latest/installation.html#getting-a-solver-for-linear-optimisation>`_
|
||||
`Instructions how to install a solver in the documentation of PyPSA <https://pypsa.readthedocs.io/en/latest/installation.html#getting-a-solver-for-linear-optimisation>`__
|
||||
|
||||
.. note::
|
||||
The rules :mod:`cluster_network` and :mod:`simplify_network` solve a quadratic optimisation problem for clustering.
|
||||
The open-source solvers Cbc and GlPK cannot handle this. A fallback to Ipopt is implemented in this case, but requires
|
||||
it to be installed. For an open-source solver setup install in your ``conda`` environment on OSX/Linux
|
||||
|
||||
.. code:: bash
|
||||
|
||||
mamba activate pypsa-eur
|
||||
mamba install -c conda-forge ipopt coincbc
|
||||
|
||||
and on Windows
|
||||
|
||||
.. code:: bash
|
||||
|
||||
mamba activate pypsa-eur
|
||||
mamba install -c conda-forge ipopt glpk
|
||||
|
||||
For HiGHS, run
|
||||
|
||||
.. code:: bash
|
||||
|
||||
mamba activate pypsa-eur
|
||||
mamba install -c conda-forge ipopt
|
||||
pip install highspy
|
||||
|
||||
For Gurobi, run
|
||||
The rules :mod:`cluster_network` and :mod:`simplify_network` solve a mixed-integer quadratic optimisation problem for clustering.
|
||||
The open-source solvers HiGHS, Cbc and GlPK cannot handle this. A fallback to SCIP is implemented in this case, which is included in the standard environment specifications.
|
||||
For an open-source solver setup install in your ``conda`` environment on OSX/Linux. To install the default solver Gurobi, run
|
||||
|
||||
.. code:: bash
|
||||
|
||||
mamba activate pypsa-eur
|
||||
mamba install -c gurobi gurobi
|
||||
|
||||
Additionally, you need to setup your `Gurobi license <https://www.gurobi.com/solutions/licensing/>`_.
|
||||
Additionally, you need to setup your `Gurobi license <https://www.gurobi.com/solutions/licensing/>`__.
|
||||
|
||||
|
||||
.. _defaultconfig:
|
||||
@ -118,11 +96,10 @@ Nevertheless, you can still use open-source solvers for smaller problems.
|
||||
Handling Configuration Files
|
||||
============================
|
||||
|
||||
PyPSA-Eur has several configuration options that must be specified in a
|
||||
``config/config.yaml`` file located in the root directory. An example configuration
|
||||
``config/config.default.yaml`` is maintained in the repository, which will be used to
|
||||
automatically create your customisable ``config/config.yaml`` on first use. More
|
||||
details on the configuration options are in :ref:`config`.
|
||||
PyPSA-Eur has several configuration options that users can specify in a
|
||||
``config/config.yaml`` file. The default configuration
|
||||
``config/config.default.yaml`` is maintained in the repository. More details on
|
||||
the configuration options are in :ref:`config`.
|
||||
|
||||
You can also use ``snakemake`` to specify another file, e.g.
|
||||
``config/config.mymodifications.yaml``, to update the settings of the ``config/config.yaml``.
|
||||
@ -130,8 +107,3 @@ You can also use ``snakemake`` to specify another file, e.g.
|
||||
.. code:: bash
|
||||
|
||||
.../pypsa-eur % snakemake -call --configfile config/config.mymodifications.yaml
|
||||
|
||||
.. warning::
|
||||
Users are advised to regularly check their own ``config/config.yaml`` against changes
|
||||
in the ``config/config.default.yaml`` when pulling a new version from the remote
|
||||
repository.
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
<iframe width="832" height="468" src="https://www.youtube.com/embed/ty47YU1_eeQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
|
||||
.. note::
|
||||
Find the introductory slides `here <https://docs.google.com/presentation/d/e/2PACX-1vQGQZD7KIVdocRZzRVu8Uk-JC_ltEow5zjtIarhyws46IMJpaqGuux695yincmJA_i5bVEibEs7z2eo/pub?start=false&loop=true&delayms=3000>`_.
|
||||
Find the introductory slides `here <https://docs.google.com/presentation/d/e/2PACX-1vQGQZD7KIVdocRZzRVu8Uk-JC_ltEow5zjtIarhyws46IMJpaqGuux695yincmJA_i5bVEibEs7z2eo/pub?start=false&loop=true&delayms=3000>`__.
|
||||
|
||||
.. warning::
|
||||
The video only introduces the electricity-only part of PyPSA-Eur.
|
||||
@ -23,7 +23,7 @@ Workflow
|
||||
=========
|
||||
|
||||
The generation of the model is controlled by the open workflow management system
|
||||
`Snakemake <https://snakemake.github.io/>`_. In a nutshell, the ``Snakefile``
|
||||
`Snakemake <https://snakemake.github.io/>`__. In a nutshell, the ``Snakefile``
|
||||
declares for each script in the ``scripts`` directory a rule which describes
|
||||
which files the scripts consume and produce (their corresponding input and
|
||||
output files). The ``snakemake`` tool then runs the scripts in the correct order
|
||||
@ -54,9 +54,9 @@ preceding rules which another rule takes as input data.
|
||||
|
||||
For the use of ``snakemake``, it makes sense to familiarize yourself quickly
|
||||
with the `basic tutorial
|
||||
<https://snakemake.readthedocs.io/en/stable/tutorial/basics.html>`_ and then
|
||||
<https://snakemake.readthedocs.io/en/stable/tutorial/basics.html>`__ and then
|
||||
read carefully through the documentation of the `command line interface
|
||||
<https://snakemake.readthedocs.io/en/stable/executing/cli.html>`_, noting the
|
||||
<https://snakemake.readthedocs.io/en/stable/executing/cli.html>`__, noting the
|
||||
arguments ``-j``, ``-c``, ``-f``, ``-F``, ``-n``, ``-r``, ``--dag`` and ``-t``
|
||||
in particular.
|
||||
|
||||
@ -64,17 +64,17 @@ Scenarios, Configuration and Modification
|
||||
=========================================
|
||||
|
||||
It is easy to run PyPSA-Eur for multiple scenarios using the `wildcards feature
|
||||
<https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#wildcards>`_
|
||||
<https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#wildcards>`__
|
||||
of ``snakemake``. Wildcards allow to generalise a rule to produce all files that
|
||||
follow a `regular expression
|
||||
<https://en.wikipedia.org/wiki/Regular_expression>`_ pattern, which defines
|
||||
<https://en.wikipedia.org/wiki/Regular_expression>`__ pattern, which defines
|
||||
a particular scenario. One can think of a wildcard as a parameter that shows
|
||||
up in the input/output file names and thereby determines which rules to run,
|
||||
what data to retrieve and what files to produce. Details are explained in
|
||||
:ref:`wildcards` and :ref:`scenario`.
|
||||
|
||||
The model also has several further configuration options collected in the
|
||||
``config/config.yaml`` file located in the root directory, which that are not part of
|
||||
``config/config.default.yaml`` file located in the root directory, which that are not part of
|
||||
the scenarios. Options are explained in :ref:`config`.
|
||||
|
||||
Folder Structure
|
||||
@ -97,5 +97,5 @@ System Requirements
|
||||
|
||||
Building the model with the scripts in this repository runs on a regular computer.
|
||||
But optimising for investment and operation decisions across many scenarios requires a strong interior-point solver
|
||||
like `Gurobi <http://www.gurobi.com/>`_ or `CPLEX <https://www.ibm.com/analytics/cplex-optimizer>`_ with more memory.
|
||||
like `Gurobi <http://www.gurobi.com/>`__ or `CPLEX <https://www.ibm.com/analytics/cplex-optimizer>`__ with more memory.
|
||||
Open-source solvers like `HiGHS <https://highs.dev>` can also be used for smaller problems.
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2023-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -10,12 +10,12 @@ Licenses
|
||||
|
||||
PyPSA-Eur is released under multiple licenses:
|
||||
|
||||
* All original source code is licensed as free software under `MIT <LICENSES/MIT.txt>`_.
|
||||
* The documentation is licensed under `CC-BY-4.0 <LICENSES/CC-BY-4.0.txt>`_.
|
||||
* Configuration files are mostly licensed under `CC0-1.0 <LICENSES/CC0-1.0.txt>`_.
|
||||
* Data files are licensed under `CC-BY-4.0 <LICENSES/CC-BY-4.0.txt>`_.
|
||||
* All original source code is licensed as free software under `MIT <LICENSES/MIT.txt>`__.
|
||||
* The documentation is licensed under `CC-BY-4.0 <LICENSES/CC-BY-4.0.txt>`__.
|
||||
* Configuration files are mostly licensed under `CC0-1.0 <LICENSES/CC0-1.0.txt>`__.
|
||||
* Data files are licensed under `CC-BY-4.0 <LICENSES/CC-BY-4.0.txt>`__.
|
||||
|
||||
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 for both electricity-only and sector-coupled modelling exercises,
|
||||
@ -26,7 +26,7 @@ Electricity Systems Databundle
|
||||
|
||||
.. note::
|
||||
More details are included in `the description of the
|
||||
data bundles on zenodo <https://zenodo.org/record/3517935#.XbGeXvzRZGo>`_.
|
||||
data bundles on zenodo <https://zenodo.org/record/3517935#.XbGeXvzRZGo>`__.
|
||||
|
||||
.. csv-table::
|
||||
:header-rows: 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -19,7 +19,7 @@ improving the approximations.
|
||||
This list of limitations is incomplete and will be added to over time.
|
||||
|
||||
.. seealso::
|
||||
See also the `GitHub repository issues <https://github.com/PyPSA/pypsa-eur/issues>`_.
|
||||
See also the `GitHub repository issues <https://github.com/PyPSA/pypsa-eur/issues>`__.
|
||||
|
||||
- **Electricity transmission network topology:**
|
||||
The grid data is based on a map of the ENTSO-E area that is known
|
||||
|
@ -1,4 +1,4 @@
|
||||
REM SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
REM SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
REM SPDX-License-Identifier: MIT
|
||||
|
||||
@ECHO OFF
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -22,7 +22,22 @@ Rule ``plot_summary``
|
||||
|
||||
.. _map_plot:
|
||||
|
||||
Rule ``plot_network``
|
||||
========================
|
||||
Rule ``plot_power_network``
|
||||
===========================
|
||||
|
||||
.. automodule:: plot_network
|
||||
.. automodule:: plot_power_network
|
||||
|
||||
Rule ``plot_power_network_perfect``
|
||||
===================================
|
||||
|
||||
.. automodule:: plot_power_network_perfect
|
||||
|
||||
Rule ``plot_hydrogen_network``
|
||||
==============================
|
||||
|
||||
.. automodule:: plot_hydrogen_network
|
||||
|
||||
Rule ``plot_gas_network``
|
||||
=========================
|
||||
|
||||
.. automodule:: plot_gas_network
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -15,18 +15,17 @@ Instead we provide separate data bundles which can be obtained
|
||||
using the ``retrieve*`` rules (:ref:`data`).
|
||||
Having downloaded the necessary data,
|
||||
|
||||
- :mod:`build_shapes` generates GeoJSON files with shapes of the countries, exclusive economic zones and `NUTS3 <https://en.wikipedia.org/wiki/Nomenclature_of_Territorial_Units_for_Statistics>`_ areas.
|
||||
- :mod:`build_cutout` prepares smaller weather data portions from `ERA5 <https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5>`_ for cutout ``europe-2013-era5`` and SARAH for cutout ``europe-2013-sarah``.
|
||||
- :mod:`build_shapes` generates GeoJSON files with shapes of the countries, exclusive economic zones and `NUTS3 <https://en.wikipedia.org/wiki/Nomenclature_of_Territorial_Units_for_Statistics>`__ areas.
|
||||
- :mod:`build_cutout` prepares smaller weather data portions from `ERA5 <https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5>`__ for cutout ``europe-2013-era5`` and SARAH for cutout ``europe-2013-sarah``.
|
||||
|
||||
With these and the externally extracted ENTSO-E online map topology
|
||||
(``data/entsoegridkit``), it can build a base PyPSA network with the following rules:
|
||||
|
||||
- :mod:`base_network` builds and stores the base network with all buses, HVAC lines and HVDC links, while
|
||||
- :mod:`build_bus_regions` determines `Voronoi cells <https://en.wikipedia.org/wiki/Voronoi_diagram>`_ for all substations.
|
||||
- :mod:`base_network` builds and stores the base network with all buses, HVAC lines and HVDC links, and determines `Voronoi cells <https://en.wikipedia.org/wiki/Voronoi_diagram>`__ for all substations.
|
||||
|
||||
Then the process continues by calculating conventional power plant capacities, potentials, and per-unit availability time series for variable renewable energy carriers and hydro power plants with the following rules:
|
||||
|
||||
- :mod:`build_powerplants` for today's thermal power plant capacities using `powerplantmatching <https://github.com/FRESNA/powerplantmatching>`_ allocating these to the closest substation for each powerplant,
|
||||
- :mod:`build_powerplants` for today's thermal power plant capacities using `powerplantmatching <https://github.com/FRESNA/powerplantmatching>`__ allocating these to the closest substation for each powerplant,
|
||||
- :mod:`build_natura_raster` for rasterising NATURA2000 natural protection areas,
|
||||
- :mod:`build_ship_raster` for building shipping traffic density,
|
||||
- :mod:`build_renewable_profiles` for the hourly capacity factors and installation potentials constrained by land-use in each substation's Voronoi cell for PV, onshore and offshore wind, and
|
||||
@ -35,13 +34,6 @@ Then the process continues by calculating conventional power plant capacities, p
|
||||
The central rule :mod:`add_electricity` then ties all the different data inputs
|
||||
together into a detailed PyPSA network stored in ``networks/elec.nc``.
|
||||
|
||||
.. _busregions:
|
||||
|
||||
Rule ``build_bus_regions``
|
||||
=============================
|
||||
|
||||
.. automodule:: build_bus_regions
|
||||
|
||||
.. _cutout:
|
||||
|
||||
Rule ``build_cutout``
|
||||
|
@ -1,5 +1,5 @@
|
||||
@Comment{
|
||||
SPDX-FileCopyrightText: 2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2023-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2023-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2019-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2019-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -25,12 +25,12 @@ Rule ``retrieve_cutout``
|
||||
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6382570.svg
|
||||
:target: https://doi.org/10.5281/zenodo.6382570
|
||||
|
||||
Cutouts are spatio-temporal subsets of the European weather data from the `ECMWF ERA5 <https://software.ecmwf.int/wiki/display/CKB/ERA5+data+documentation>`_ reanalysis dataset and the `CMSAF SARAH-2 <https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=SARAH_V002>`_ solar surface radiation dataset for the year 2013.
|
||||
They have been prepared by and are for use with the `atlite <https://github.com/PyPSA/atlite>`_ tool. You can either generate them yourself using the ``build_cutouts`` rule or retrieve them directly from `zenodo <https://doi.org/10.5281/zenodo.6382570>`__ through the rule ``retrieve_cutout``.
|
||||
Cutouts are spatio-temporal subsets of the European weather data from the `ECMWF ERA5 <https://software.ecmwf.int/wiki/display/CKB/ERA5+data+documentation>`__ reanalysis dataset and the `CMSAF SARAH-2 <https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=SARAH_V002>`__ solar surface radiation dataset for the year 2013.
|
||||
They have been prepared by and are for use with the `atlite <https://github.com/PyPSA/atlite>`__ tool. You can either generate them yourself using the ``build_cutouts`` rule or retrieve them directly from `zenodo <https://doi.org/10.5281/zenodo.6382570>`__ through the rule ``retrieve_cutout``.
|
||||
The :ref:`tutorial` uses a smaller cutout than required for the full model (30 MB), which is also automatically downloaded.
|
||||
|
||||
.. note::
|
||||
To download cutouts yourself from the `ECMWF ERA5 <https://software.ecmwf.int/wiki/display/CKB/ERA5+data+documentation>`_ you need to `set up the CDS API <https://cds.climate.copernicus.eu/api-how-to>`_.
|
||||
To download cutouts yourself from the `ECMWF ERA5 <https://software.ecmwf.int/wiki/display/CKB/ERA5+data+documentation>`__ you need to `set up the CDS API <https://cds.climate.copernicus.eu/api-how-to>`__.
|
||||
|
||||
|
||||
**Relevant Settings**
|
||||
@ -47,10 +47,10 @@ The :ref:`tutorial` uses a smaller cutout than required for the full model (30 M
|
||||
|
||||
**Outputs**
|
||||
|
||||
- ``cutouts/{cutout}``: weather data from either the `ERA5 <https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5>`_ reanalysis weather dataset or `SARAH-2 <https://wui.cmsaf.eu/safira/action/viewProduktSearch>`_ satellite-based historic weather data.
|
||||
- ``cutouts/{cutout}``: weather data from either the `ERA5 <https://www.ecmwf.int/en/forecasts/datasets/reanalysis-datasets/era5>`__ reanalysis weather dataset or `SARAH-2 <https://wui.cmsaf.eu/safira/action/viewProduktSearch>`__ satellite-based historic weather data.
|
||||
|
||||
.. seealso::
|
||||
For details see :mod:`build_cutout` and read the `atlite documentation <https://atlite.readthedocs.io>`_.
|
||||
For details see :mod:`build_cutout` and read the `atlite documentation <https://atlite.readthedocs.io>`__.
|
||||
|
||||
|
||||
Rule ``retrieve_natura_raster``
|
||||
@ -59,7 +59,7 @@ Rule ``retrieve_natura_raster``
|
||||
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4706686.svg
|
||||
:target: https://doi.org/10.5281/zenodo.4706686
|
||||
|
||||
This rule, as a substitute for :mod:`build_natura_raster`, downloads an already rasterized version (`natura.tiff <https://zenodo.org/record/4706686/files/natura.tiff>`_) of `Natura 2000 <https://en.wikipedia.org/wiki/Natura_2000>`_ natural protection areas to reduce computation times. The file is placed into the ``resources`` sub-directory.
|
||||
This rule, as a substitute for :mod:`build_natura_raster`, downloads an already rasterized version (`natura.tiff <https://zenodo.org/record/4706686/files/natura.tiff>`__) of `Natura 2000 <https://en.wikipedia.org/wiki/Natura_2000>`__ natural protection areas to reduce computation times. The file is placed into the ``resources`` sub-directory.
|
||||
|
||||
**Relevant Settings**
|
||||
|
||||
@ -74,7 +74,7 @@ This rule, as a substitute for :mod:`build_natura_raster`, downloads an already
|
||||
|
||||
**Outputs**
|
||||
|
||||
- ``resources/natura.tiff``: Rasterized version of `Natura 2000 <https://en.wikipedia.org/wiki/Natura_2000>`_ natural protection areas to reduce computation times.
|
||||
- ``resources/natura.tiff``: Rasterized version of `Natura 2000 <https://en.wikipedia.org/wiki/Natura_2000>`__ natural protection areas to reduce computation times.
|
||||
|
||||
.. seealso::
|
||||
For details see :mod:`build_natura_raster`.
|
||||
@ -83,7 +83,7 @@ This rule, as a substitute for :mod:`build_natura_raster`, downloads an already
|
||||
Rule ``retrieve_electricity_demand``
|
||||
====================================
|
||||
|
||||
This rule downloads hourly electric load data for each country from the `OPSD platform <https://data.open-power-system-data.org/time_series/2019-06-05/time_series_60min_singleindex.csv>`_.
|
||||
This rule downloads hourly electric load data for each country from the `OPSD platform <https://data.open-power-system-data.org/time_series/2019-06-05/time_series_60min_singleindex.csv>`__.
|
||||
|
||||
**Relevant Settings**
|
||||
|
||||
@ -91,13 +91,13 @@ None.
|
||||
|
||||
**Outputs**
|
||||
|
||||
- ``resources/load_raw.csv``
|
||||
- ``data/electricity_demand_raw.csv``
|
||||
|
||||
|
||||
Rule ``retrieve_cost_data``
|
||||
================================
|
||||
|
||||
This rule downloads techno-economic assumptions from the `technology-data repository <https://github.com/pypsa/technology-data>`_.
|
||||
This rule downloads techno-economic assumptions from the `technology-data repository <https://github.com/pypsa/technology-data>`__.
|
||||
|
||||
**Relevant Settings**
|
||||
|
||||
@ -118,15 +118,10 @@ This rule downloads techno-economic assumptions from the `technology-data reposi
|
||||
|
||||
- ``resources/costs.csv``
|
||||
|
||||
Rule ``retrieve_irena``
|
||||
================================
|
||||
|
||||
.. automodule:: retrieve_irena
|
||||
|
||||
Rule ``retrieve_ship_raster``
|
||||
================================
|
||||
|
||||
This rule downloads data on global shipping traffic density from the `World Bank Data Catalogue <https://datacatalog.worldbank.org/search/dataset/0037580/Global-Shipping-Traffic-Density>`_.
|
||||
This rule downloads data on global shipping traffic density from the `World Bank Data Catalogue <https://datacatalog.worldbank.org/search/dataset/0037580/Global-Shipping-Traffic-Density>`__.
|
||||
|
||||
**Relevant Settings**
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2023-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -7,8 +7,15 @@
|
||||
Building Sector-Coupled Networks
|
||||
##########################################
|
||||
|
||||
.. warning::
|
||||
This part of the documentation is under development.
|
||||
The preparation process of the sector-coupled version of the PyPSA-Eur energy system model consists of a group of ``snakemake`` rules which are briefly outlined and explained in detail in the sections below.
|
||||
|
||||
Not all data dependencies are shipped with the git repository.
|
||||
Instead we provide separate data bundles which can be obtained
|
||||
using the ``retrieve*`` rules (:ref:`data`).
|
||||
Having downloaded the necessary data,
|
||||
|
||||
- :mod:`add_brownfield` builds and stores the base network with all buses, HVAC lines and HVDC links, while
|
||||
|
||||
|
||||
Rule ``add_brownfield``
|
||||
==============================================================================
|
||||
@ -20,6 +27,12 @@ Rule ``add_existing_baseyear``
|
||||
|
||||
.. automodule:: add_existing_baseyear
|
||||
|
||||
Rule ``build_existing_heating_distribution``
|
||||
==============================================================================
|
||||
|
||||
.. automodule:: build_existing_heating_distribution
|
||||
|
||||
|
||||
Rule ``build_ammonia_production``
|
||||
==============================================================================
|
||||
|
||||
@ -50,6 +63,11 @@ Rule ``build_energy_totals``
|
||||
|
||||
.. automodule:: build_energy_totals
|
||||
|
||||
Rule ``build_heat_totals``
|
||||
==============================================================================
|
||||
|
||||
.. automodule:: build_heat_totals
|
||||
|
||||
Rule ``build_gas_input_locations``
|
||||
==============================================================================
|
||||
|
||||
@ -60,10 +78,20 @@ Rule ``build_gas_network``
|
||||
|
||||
.. automodule:: build_gas_network
|
||||
|
||||
Rule ``build_heat_demand``
|
||||
Rule ``build_daily_heat_demand``
|
||||
==============================================================================
|
||||
|
||||
.. automodule:: build_heat_demand
|
||||
.. automodule:: build_daily_heat_demand
|
||||
|
||||
Rule ``build_hourly_heat_demand``
|
||||
==============================================================================
|
||||
|
||||
.. automodule:: build_hourly_heat_demand
|
||||
|
||||
Rule ``build_district_heat_share``
|
||||
==============================================================================
|
||||
|
||||
.. automodule:: build_district_heat_share
|
||||
|
||||
Rule ``build_industrial_distribution_key``
|
||||
==============================================================================
|
||||
@ -155,11 +183,6 @@ Rule ``cluster_gas_network``
|
||||
|
||||
.. automodule:: cluster_gas_network
|
||||
|
||||
Rule ``copy_config``
|
||||
==============================================================================
|
||||
|
||||
.. automodule:: copy_config
|
||||
|
||||
Rule ``prepare_sector_network``
|
||||
==============================================================================
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -12,11 +12,11 @@ Simplifying Electricity Networks
|
||||
The simplification ``snakemake`` rules prepare **approximations** of the full model, for which it is computationally viable to co-optimize generation, storage and transmission capacities.
|
||||
|
||||
- :mod:`simplify_network` transforms the transmission grid to a 380 kV only equivalent network, while
|
||||
- :mod:`cluster_network` uses a `k-means <https://en.wikipedia.org/wiki/K-means_clustering>`_ based clustering technique to partition the network into a given number of zones and then reduce the network to a representation with one bus per zone.
|
||||
- :mod:`cluster_network` uses a `k-means <https://en.wikipedia.org/wiki/K-means_clustering>`__ based clustering technique to partition the network into a given number of zones and then reduce the network to a representation with one bus per zone.
|
||||
|
||||
The simplification and clustering steps are described in detail in the paper
|
||||
|
||||
- Jonas Hörsch and Tom Brown. `The role of spatial scale in joint optimisations of generation and transmission for European highly renewable scenarios <https://arxiv.org/abs/1705.07617>`_), *14th International Conference on the European Energy Market*, 2017. `arXiv:1705.07617 <https://arxiv.org/abs/1705.07617>`_, `doi:10.1109/EEM.2017.7982024 <https://doi.org/10.1109/EEM.2017.7982024>`_.
|
||||
- Jonas Hörsch and Tom Brown. `The role of spatial scale in joint optimisations of generation and transmission for European highly renewable scenarios <https://arxiv.org/abs/1705.07617>`__), *14th International Conference on the European Energy Market*, 2017. `arXiv:1705.07617 <https://arxiv.org/abs/1705.07617>`__, `doi:10.1109/EEM.2017.7982024 <https://doi.org/10.1109/EEM.2017.7982024>`__.
|
||||
|
||||
After simplification and clustering of the network, additional components may be appended in the rule :mod:`add_extra_components` and the network is prepared for solving in :mod:`prepare_network`.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2021-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2021-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
Spatial resolution
|
||||
##########################################
|
||||
|
||||
The default nodal resolution of the model follows the electricity generation and transmission model `PyPSA-Eur <https://github.com/PyPSA/pypsa-eur>`_, which clusters down the electricity transmission substations in each European country based on the k-means algorithm (See `cluster_network <https://pypsa-eur.readthedocs.io/en/latest/simplification/cluster_network.html#rule-cluster-network>`_ for a complete explanation). This gives nodes which correspond to major load and generation centres (typically cities).
|
||||
The default nodal resolution of the model follows the electricity generation and transmission model `PyPSA-Eur <https://github.com/PyPSA/pypsa-eur>`__, which clusters down the electricity transmission substations in each European country based on the k-means algorithm (See `cluster_network <https://pypsa-eur.readthedocs.io/en/latest/simplification/cluster_network.html#rule-cluster-network>`__ for a complete explanation). This gives nodes which correspond to major load and generation centres (typically cities).
|
||||
|
||||
The total number of nodes for Europe is set in the ``config/config.yaml`` file under ``clusters``. The number of nodes can vary between 37, the number of independent countries / synchronous areas, and several hundred. With 200-300 nodes the model needs 100-150 GB RAM to solve with a commercial solver like Gurobi.
|
||||
|
||||
@ -21,7 +21,7 @@ Exemplary unsolved network clustered to 37 nodes:
|
||||
|
||||
.. image:: ../graphics/elec_s_37.png
|
||||
|
||||
The total number of nodes for Europe is set in the ``config/config.yaml`` file under `clusters <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L20>`_. The number of nodes can vary between 37, the number of independent countries/synchronous areas, and several hundred. With 200-300 nodes, the model needs 100-150 GB RAM to solve with a commercial solver like Gurobi.
|
||||
The total number of nodes for Europe is set in the ``config/config.yaml`` file under `clusters <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L20>`__. The number of nodes can vary between 37, the number of independent countries/synchronous areas, and several hundred. With 200-300 nodes, the model needs 100-150 GB RAM to solve with a commercial solver like Gurobi.
|
||||
Not all of the sectors are at the full nodal resolution, and some demand for some sectors is distributed to nodes using heuristics that need to be corrected. Some networks are copper-plated to reduce computational times.
|
||||
|
||||
Here are some examples of how spatial resolution is set for different sectors in PyPSA-Eur-Sec:
|
||||
@ -37,18 +37,18 @@ Here are some examples of how spatial resolution is set for different sectors in
|
||||
• Electricity demand in industry: Modeled as nodal, based on the location of industrial facilities from HotMaps database.
|
||||
|
||||
• Industry demand (heat, chemicals, etc.) : Modeled as nodal, distributed in each country based on locations of industry from HotMaps database.
|
||||
• Hydrogen network: Modeled as nodal (if activated in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L260>`_ file).
|
||||
• Hydrogen network: Modeled as nodal (if activated in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L260>`__ file).
|
||||
|
||||
• Methane network: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L266>`_. One node can be considered reasonable since future demand is expected to be low and no bottlenecks are expected. Also, the nodally resolved methane grid is based on SciGRID_gas data.
|
||||
• Methane network: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L266>`__. One node can be considered reasonable since future demand is expected to be low and no bottlenecks are expected. Also, the nodally resolved methane grid is based on SciGRID_gas data.
|
||||
|
||||
• Solid biomass: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L270>`_. Nodal modeling includes modeling biomass potential per country (given per country, then distributed by population density within) and the transport of solid biomass between countries.
|
||||
• Solid biomass: It can be modeled as a single node for Europe or it can be nodally resolved if activated in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L270>`__. Nodal modeling includes modeling biomass potential per country (given per country, then distributed by population density within) and the transport of solid biomass between countries.
|
||||
|
||||
• CO2: It can be modeled as a single node for Europe or it can be nodally resolved with CO2 transport pipelines if activated in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L248>`_. It should mentioned that in single node mode a transport and storage cost is added for sequestered CO2, the cost of which can be adjusted in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L247>`_.
|
||||
• CO2: It can be modeled as a single node for Europe or it can be nodally resolved with CO2 transport pipelines if activated in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L248>`__. It should mentioned that in single node mode a transport and storage cost is added for sequestered CO2, the cost of which can be adjusted in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L247>`__.
|
||||
|
||||
• Carbonaceous fuels: Modeled as a single node for Europe by default, since transport costs for liquids are low and no bottlenecks are expected. Can be regionally resolved in configuration.
|
||||
|
||||
**Electricity distribution network**
|
||||
|
||||
Contrary to the transmission grid, the grid topology at the distribution level (at and below 110 kV) is not included due to the very high computational burden. However, a link per node can be used (if activated in the `Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L257>`_ file) to represent energy transferred between distribution and transmission levels at every node. In essence, the total energy capacity connecting the transmission grid and the low-voltage level is optimized. The cost assumptions for this link can be adjusted in Config file `options <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L258>`_ , and is currently assumed to be 500 Eur/kW.
|
||||
Contrary to the transmission grid, the grid topology at the distribution level (at and below 110 kV) is not included due to the very high computational burden. However, a link per node can be used (if activated in the `Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L257>`__ file) to represent energy transferred between distribution and transmission levels at every node. In essence, the total energy capacity connecting the transmission grid and the low-voltage level is optimized. The cost assumptions for this link can be adjusted in Config file `options <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L258>`__ , and is currently assumed to be 500 Eur/kW.
|
||||
|
||||
Rooftop PV, heat pumps, resistive heater, home batteries chargers for passenger EVs, as well as individual heating technologies (heat pumps and resistive heaters) are connected to low-voltage level. All the remaining generation and storage technologies are connected to the transmission grid. In practice, this means that the distribution grid capacity is only extended if it is necessary to balance the mismatch between local generation and demand.
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2021-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2021-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -11,7 +11,7 @@ An initial orientation to the supply and demand options in the model
|
||||
PyPSA-Eur-Sec can be found in the description of the model
|
||||
PyPSA-Eur-Sec-30 in the paper `Synergies of sector coupling and
|
||||
transmission reinforcement in a cost-optimised, highly renewable
|
||||
European energy system <https://arxiv.org/abs/1801.05290>`_ (2018).
|
||||
European energy system <https://arxiv.org/abs/1801.05290>`__ (2018).
|
||||
The latest version of PyPSA-Eur-Sec differs by including biomass,
|
||||
industry, industrial feedstocks, aviation, shipping, better carbon
|
||||
management, carbon capture and usage/sequestration, and gas networks.
|
||||
@ -26,13 +26,13 @@ Electricity supply and demand
|
||||
=============================
|
||||
|
||||
Electricity supply and demand follows the electricity generation and
|
||||
transmission model `PyPSA-Eur <https://github.com/PyPSA/pypsa-eur>`_,
|
||||
transmission model `PyPSA-Eur <https://github.com/PyPSA/pypsa-eur>`__,
|
||||
except that hydrogen storage is integrated into the hydrogen supply,
|
||||
demand and network, and PyPSA-Eur-Sec includes CHPs.
|
||||
|
||||
Unlike PyPSA-Eur, PyPSA-Eur-Sec does not distribution electricity demand for industry according to population and GDP, but uses the
|
||||
geographical data from the `Hotmaps Industrial Database
|
||||
<https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database>`_.
|
||||
<https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database>`__.
|
||||
|
||||
Also unlike PyPSA-Eur, PyPSA-Eur-Sec subtracts existing electrified heating from the existing electricity demand, so that power-to-heat can be optimised separately.
|
||||
|
||||
@ -44,7 +44,7 @@ Heat demand
|
||||
===========
|
||||
|
||||
Building heating in residential and services sectors is resolved regionally, both for individual buildings and district heating systems, which include different supply options (see :ref:`heat-supply`.)
|
||||
Annual heat demands per country are retrieved from `JRC-IDEES <https://op.europa.eu/en/publication-detail/-/publication/989282db-ad65-11e7-837e-01aa75ed71a1/language-en>`_ and split into space and water heating. For space heating, the annual demands are converted to daily values based on the population-weighted Heating Degree Day (HDD) using the `atlite tool <https://github.com/PyPSA/atlite>`_, where space heat demand is proportional to the difference between the daily average ambient temperature (read from `ERA5 <https://doi.org/10.1002/qj.3803>`_) and a threshold temperature above which space heat demand is zero. A threshold temperature of 15 °C is assumed by default. The daily space heat demand is distributed to the hours of the day following heat demand profiles from `BDEW <https://github.com/oemof/demandlib>`_. These differ for weekdays and weekends/holidays and between residential and services demand.
|
||||
Annual heat demands per country are retrieved from `JRC-IDEES <https://op.europa.eu/en/publication-detail/-/publication/989282db-ad65-11e7-837e-01aa75ed71a1/language-en>`__ and split into space and water heating. For space heating, the annual demands are converted to daily values based on the population-weighted Heating Degree Day (HDD) using the `atlite tool <https://github.com/PyPSA/atlite>`__, where space heat demand is proportional to the difference between the daily average ambient temperature (read from `ERA5 <https://doi.org/10.1002/qj.3803>`__) and a threshold temperature above which space heat demand is zero. A threshold temperature of 15 °C is assumed by default. The daily space heat demand is distributed to the hours of the day following heat demand profiles from `BDEW <https://github.com/oemof/demandlib>`__. These differ for weekdays and weekends/holidays and between residential and services demand.
|
||||
|
||||
*Space heating*
|
||||
|
||||
@ -54,11 +54,11 @@ The space heating demand can be exogenously reduced by retrofitting measures tha
|
||||
:language: yaml
|
||||
:lines: 205
|
||||
|
||||
Co-optimsing of building renovation is also possible, if it is activated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L222>`_.
|
||||
Co-optimsing of building renovation is also possible, if it is activated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L222>`__.
|
||||
Renovation of the thermal envelope reduces the space heating demand and is optimised at each node for every heat bus. Renovation measures through additional insulation material and replacement of energy inefficient windows are considered.
|
||||
In a first step, costs per energy savings are estimated in `build_retro_cost.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_retro_cost.py>`_. They depend on the insulation condition of the building stock and costs for renovation of the building elements. In a second step, for those cost per energy savings two possible renovation strengths are determined: a moderate renovation with lower costs, a lower maximum possible space heat savings, and an ambitious renovation with associated higher costs and higher efficiency gains. They are added by step-wise linearisation in form of two additional generations in `prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`_.
|
||||
In a first step, costs per energy savings are estimated in `build_retro_cost.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/build_retro_cost.py>`__. They depend on the insulation condition of the building stock and costs for renovation of the building elements. In a second step, for those cost per energy savings two possible renovation strengths are determined: a moderate renovation with lower costs, a lower maximum possible space heat savings, and an ambitious renovation with associated higher costs and higher efficiency gains. They are added by step-wise linearisation in form of two additional generations in `prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/master/scripts/prepare_sector_network.py>`__.
|
||||
Further information are given in the publication :
|
||||
`Mitigating heat demand peaks in buildings in a highly renewable European energy system, (2021) <https://arxiv.org/abs/2012.01831>`_.
|
||||
`Mitigating heat demand peaks in buildings in a highly renewable European energy system, (2021) <https://arxiv.org/abs/2012.01831>`__.
|
||||
|
||||
*Water heating*
|
||||
|
||||
@ -66,7 +66,7 @@ Hot water demand is assumed to be constant throughout the year.
|
||||
|
||||
*Urban and rural heating*
|
||||
|
||||
For every country, heat demand is split between low and high population density areas. These country-level totals are then distributed to each region in proportion to their rural and urban populations respectively. Urban areas with dense heat demand can be supplied with large-scale district heating systems. The percentage of urban heat demand that can be supplied by district heating networks as well as lump-sum losses in district heating systems is exogenously determined in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L153>`_.
|
||||
For every country, heat demand is split between low and high population density areas. These country-level totals are then distributed to each region in proportion to their rural and urban populations respectively. Urban areas with dense heat demand can be supplied with large-scale district heating systems. The percentage of urban heat demand that can be supplied by district heating networks as well as lump-sum losses in district heating systems is exogenously determined in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L153>`__.
|
||||
|
||||
*Cooling demand*
|
||||
|
||||
@ -96,41 +96,41 @@ Different supply options are available depending on whether demand is met centra
|
||||
|
||||
**Urban central heat**
|
||||
|
||||
For large-scale district heating systems the following options are available: combined heat and power (CHP) plants consuming gas or biomass from waste and residues with and without carbon capture (CC), large-scale air-sourced heat pumps, gas and oil boilers, resistive heaters, and fuel cell CHPs. Additionally, waste heat from the `Fischer-Tropsch <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L255>`_ and `Sabatier <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L240>`_ processes for the production of synthetic hydrocarbons can supply district heating systems. For more detailed explanation of these processes, see :ref:`Oil-based products supply` and :ref:`Methane supply`.
|
||||
For large-scale district heating systems the following options are available: combined heat and power (CHP) plants consuming gas or biomass from waste and residues with and without carbon capture (CC), large-scale air-sourced heat pumps, gas and oil boilers, resistive heaters, and fuel cell CHPs. Additionally, waste heat from the `Fischer-Tropsch <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L255>`__ and `Sabatier <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L240>`__ processes for the production of synthetic hydrocarbons can supply district heating systems. For more detailed explanation of these processes, see :ref:`Oil-based products supply` and :ref:`Methane supply`.
|
||||
|
||||
**Residential and Urban decentral heat**
|
||||
|
||||
Supply options in individual buildings include gas and oil boilers, air- and ground-sourced heat pumps, resistive heaters, and solar thermal collectors.
|
||||
Ground-source heat pumps are only allowed in rural areas because of space constraints. Thus, only air- source heat pumps are allowed in urban areas. This is a conservative assumption, since there are many possible sources of low-temperature heat that could be tapped in cities (e.g. waste water, ground water, or natural bodies of water). Costs, lifetimes and efficiencies for these technologies are retrieved from the `technology-data repository <https://github.com/PyPSA/technology-data>`_.
|
||||
Ground-source heat pumps are only allowed in rural areas because of space constraints. Thus, only air- source heat pumps are allowed in urban areas. This is a conservative assumption, since there are many possible sources of low-temperature heat that could be tapped in cities (e.g. waste water, ground water, or natural bodies of water). Costs, lifetimes and efficiencies for these technologies are retrieved from the `technology-data repository <https://github.com/PyPSA/technology-data>`__.
|
||||
|
||||
Below are more detailed explanations for each heating supply component, all of which are modelled as `links <https://pypsa.readthedocs.io/en/latest/components.html?highlight=distribution#link>`_ in PyPSA-Eur-Sec.
|
||||
Below are more detailed explanations for each heating supply component, all of which are modelled as `links <https://pypsa.readthedocs.io/en/latest/components.html?highlight=distribution#link>`__ in PyPSA-Eur-Sec.
|
||||
|
||||
.. _Large-scale CHP:
|
||||
|
||||
**Large-scale CHP**
|
||||
|
||||
Large Combined Heat and Power plants are included in the model if it is specified in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L235>`_.
|
||||
Large Combined Heat and Power plants are included in the model if it is specified in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L235>`__.
|
||||
|
||||
CHPs are based on back pressure plants operating with a fixed ratio of electricity to heat output. The efficiencies of each are given on the back pressure line, where the back pressure coefficient cb is the electricity output divided by the heat output. (For a more complete explanation of the operation of CHPs refer to the study by Dahl et al. : `Cost sensitivity of optimal sector-coupled district heating production systems <https://arxiv.org/pdf/1804.07557.pdf>`_.
|
||||
CHPs are based on back pressure plants operating with a fixed ratio of electricity to heat output. The efficiencies of each are given on the back pressure line, where the back pressure coefficient cb is the electricity output divided by the heat output. (For a more complete explanation of the operation of CHPs refer to the study by Dahl et al. : `Cost sensitivity of optimal sector-coupled district heating production systems <https://arxiv.org/pdf/1804.07557.pdf>`__.
|
||||
|
||||
PyPSA-Eur-Sec includes CHP plants fueled by methane and solid biomass from waste and residues. Hydrogen fuel cells also produce both electricity and heat.
|
||||
|
||||
The methane CHP is modeled on the Danish Energy Agency (DEA) “Gas turbine simple cycle (large)” while the solid biomass CHP is based on the DEA’s “09b Wood Pellets Medium”. For biomass CHP, cb = `0.46 <https://ens.dk/sites/ens.dk/files/Statistik/technology_data_catalogue_for_el_and_dh_-_0009.pdf#page=156>`_ , whereas for gas CHP, cb = `1 <https://ens.dk/sites/ens.dk/files/Statistik/technology_data_catalogue_for_el_and_dh_-_0009.pdf#page=64>`_.
|
||||
The methane CHP is modeled on the Danish Energy Agency (DEA) “Gas turbine simple cycle (large)” while the solid biomass CHP is based on the DEA’s “09b Wood Pellets Medium”. For biomass CHP, cb = `0.46 <https://ens.dk/sites/ens.dk/files/Statistik/technology_data_catalogue_for_el_and_dh_-_0009.pdf#page=156>`__ , whereas for gas CHP, cb = `1 <https://ens.dk/sites/ens.dk/files/Statistik/technology_data_catalogue_for_el_and_dh_-_0009.pdf#page=64>`__.
|
||||
|
||||
NB: The old PyPSA-Eur-Sec-30 model assumed an extraction plant (like the DEA coal CHP) for gas which has flexible production of heat and electricity within the feasibility diagram of Figure 4 in the study by `Brown et al. <https://arxiv.org/abs/1801.05290>`_ We have switched to the DEA back pressure plants since these are more common for smaller plants for biomass, and because the extraction plants were on the back pressure line for 99.5% of the time anyway. The plants were all changed to back pressure in PyPSA-Eur-Sec v0.4.0.
|
||||
NB: The old PyPSA-Eur-Sec-30 model assumed an extraction plant (like the DEA coal CHP) for gas which has flexible production of heat and electricity within the feasibility diagram of Figure 4 in the study by `Brown et al. <https://arxiv.org/abs/1801.05290>`__ We have switched to the DEA back pressure plants since these are more common for smaller plants for biomass, and because the extraction plants were on the back pressure line for 99.5% of the time anyway. The plants were all changed to back pressure in PyPSA-Eur-Sec v0.4.0.
|
||||
|
||||
**Micro-CHP**
|
||||
|
||||
PyPSA-Eur-Sec allows individual buildings to make use of `micro gas CHPs <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L236>`_ that are assumed to be installed at the distribution grid level.
|
||||
PyPSA-Eur-Sec allows individual buildings to make use of `micro gas CHPs <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L236>`__ that are assumed to be installed at the distribution grid level.
|
||||
|
||||
**Heat pumps**
|
||||
|
||||
The coefficient of performance (COP) of air- and ground-sourced heat pumps depends on the ambient or soil temperature respectively. Hence, the COP is a time-varying parameter (refer to `Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L206>`_ file). Generally, the COP will be lower during winter when temperatures are low. Because the ambient temperature is more volatile than the soil temperature, the COP of ground-sourced heat pumps is less variable. Moreover, the COP depends on the difference between the source and sink temperatures:
|
||||
The coefficient of performance (COP) of air- and ground-sourced heat pumps depends on the ambient or soil temperature respectively. Hence, the COP is a time-varying parameter (refer to `Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L206>`__ file). Generally, the COP will be lower during winter when temperatures are low. Because the ambient temperature is more volatile than the soil temperature, the COP of ground-sourced heat pumps is less variable. Moreover, the COP depends on the difference between the source and sink temperatures:
|
||||
|
||||
.. math::
|
||||
\Delta T = T_{sink} − T_{source}
|
||||
|
||||
For the sink water temperature Tsink we assume 55 °C [`Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L207>`_ file]. For the time- and location-dependent source temperatures Tsource, we rely on the `ERA5 <https://doi.org/10.1002/qj.3803>`_ reanalysis weather data. The temperature differences are converted into COP time series using results from a regression analysis performed in the study by `Stafell et al. <https://pubs.rsc.org/en/content/articlelanding/2012/EE/c2ee22653g>`_. For air-sourced heat pumps (ASHP), we use the function:
|
||||
For the sink water temperature Tsink we assume 55 °C [`Config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L207>`__ file]. For the time- and location-dependent source temperatures Tsource, we rely on the `ERA5 <https://doi.org/10.1002/qj.3803>`__ reanalysis weather data. The temperature differences are converted into COP time series using results from a regression analysis performed in the study by `Stafell et al. <https://pubs.rsc.org/en/content/articlelanding/2012/EE/c2ee22653g>`__. For air-sourced heat pumps (ASHP), we use the function:
|
||||
|
||||
.. math::
|
||||
COP (\Delta T) = 6.81 - 0.121\Delta T + 0.000630\Delta T^2
|
||||
@ -142,44 +142,44 @@ for ground-sourced heat pumps (GSHP), we use the function:
|
||||
|
||||
**Resistive heaters**
|
||||
|
||||
Can be activated in Config from the `boilers <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L232>`_ option.
|
||||
Resistive heaters produce heat with a fixed conversion efficiency (refer to `Technology-data repository <https://github.com/PyPSA/technology-data>`_ ).
|
||||
Can be activated in Config from the `boilers <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L232>`__ option.
|
||||
Resistive heaters produce heat with a fixed conversion efficiency (refer to `Technology-data repository <https://github.com/PyPSA/technology-data>`__ ).
|
||||
|
||||
**Gas, oil, and biomass boilers**
|
||||
|
||||
Can be activated in Config from the `boilers <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L232>`_ , `oil boilers <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L233>`_ , and `biomass boiler <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L234>`_ option.
|
||||
Can be activated in Config from the `boilers <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L232>`__ , `oil boilers <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L233>`__ , and `biomass boiler <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L234>`__ option.
|
||||
Similar to resistive heaters, boilers have a fixed efficiency and produce heat using gas, oil or biomass.
|
||||
|
||||
**Solar thermal collectors**
|
||||
|
||||
Can be activated in the config file from the `solar_thermal <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L237>`_ option.
|
||||
Solar thermal profiles are built based on weather data and also have the `options <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L134>`_ for setting the sky model and the orientation of the panel in the config file, which are then used by the atlite tool to calculate the solar resource time series.
|
||||
Can be activated in the config file from the `solar_thermal <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L237>`__ option.
|
||||
Solar thermal profiles are built based on weather data and also have the `options <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L134>`__ for setting the sky model and the orientation of the panel in the config file, which are then used by the atlite tool to calculate the solar resource time series.
|
||||
|
||||
**Waste heat from Fuel Cells, Methanation and Fischer-Tropsch plants**
|
||||
|
||||
Waste heat from `fuel cells <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L256>`_ in addition to processes like `Fischer-Tropsch <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L255>`_, methanation, and Direct Air Capture (DAC) is dumped into district heating networks.
|
||||
Waste heat from `fuel cells <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L256>`__ in addition to processes like `Fischer-Tropsch <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L255>`__, methanation, and Direct Air Capture (DAC) is dumped into district heating networks.
|
||||
|
||||
**Existing heating capacities and decommissioning**
|
||||
|
||||
For the myopic transition paths, capacities already existing for technologies supplying heat are retrieved from `“Mapping and analyses of the current and future (2020 - 2030)” <https://ec.europa.eu/energy/en/studies/mapping-and-analyses-current-and-future-2020-2030-heatingcooling-fuel-deployment>`_ . For the sake of simplicity, coal, oil and gas boiler capacities are assimilated to gas boilers. Besides that, existing capacities for heat resistors, air-sourced and ground-sourced heat pumps are included in the model. For heating capacities, 25% of existing capacities in 2015 are assumed to be decommissioned in every 5-year time step after 2020.
|
||||
For the myopic transition paths, capacities already existing for technologies supplying heat are retrieved from `“Mapping and analyses of the current and future (2020 - 2030)” <https://ec.europa.eu/energy/en/studies/mapping-and-analyses-current-and-future-2020-2030-heatingcooling-fuel-deployment>`__ . For the sake of simplicity, coal, oil and gas boiler capacities are assimilated to gas boilers. Besides that, existing capacities for heat resistors, air-sourced and ground-sourced heat pumps are included in the model. For heating capacities, 25% of existing capacities in 2015 are assumed to be decommissioned in every 5-year time step after 2020.
|
||||
|
||||
**Thermal Energy Storage**
|
||||
|
||||
Activated in Config from the `tes <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L228>`_ option.
|
||||
Activated in Config from the `tes <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L228>`__ option.
|
||||
|
||||
Thermal energy can be stored in large water pits associated with district heating systems and individual thermal energy storage (TES), i.e., small water tanks. Water tanks are modelled as `stores <https://pypsa.readthedocs.io/en/latest/components.html?highlight=distribution#store, which are connected to heat demand buses through water charger/discharger links>`_.
|
||||
A thermal energy density of 46.8 kWh :math:`_{th}`/m3 is assumed, corresponding to a temperature difference of 40 K. The decay of thermal energy in the stores: 1- :math:`e^{-1/24τ}` is assumed to have a time constant of τ=180 days for central TES and τ=3 days for individual TES, both modifiable through `tes_tau <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L229>`_ in config file. Charging and discharging efficiencies are 90% due to pipe losses.
|
||||
Thermal energy can be stored in large water pits associated with district heating systems and individual thermal energy storage (TES), i.e., small water tanks. Water tanks are modelled as `stores <https://pypsa.readthedocs.io/en/latest/components.html?highlight=distribution#store, which are connected to heat demand buses through water charger/discharger links>`__.
|
||||
A thermal energy density of 46.8 kWh :math:`_{th}`/m3 is assumed, corresponding to a temperature difference of 40 K. The decay of thermal energy in the stores: 1- :math:`e^{-1/24τ}` is assumed to have a time constant of τ=180 days for central TES and τ=3 days for individual TES, both modifiable through `tes_tau <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L229>`__ in config file. Charging and discharging efficiencies are 90% due to pipe losses.
|
||||
|
||||
**Retrofitting of the thermal envelope of buildings**
|
||||
|
||||
Co-optimising building renovation is only enabled if in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L222>`_ file. To reduce the computational burden,
|
||||
Co-optimising building renovation is only enabled if in the `config <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L222>`__ file. To reduce the computational burden,
|
||||
default setting is set as false.
|
||||
|
||||
Renovation of the thermal envelope reduces the space heating demand and is
|
||||
optimised at each node for every heat bus. Renovation measures through additional
|
||||
insulation material and replacement of energy inefficient windows are considered.
|
||||
|
||||
In a first step, costs per energy savings are estimated in the `build_retro_cost.py <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/build_retro_cost.py>`_ script.
|
||||
In a first step, costs per energy savings are estimated in the `build_retro_cost.py <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/build_retro_cost.py>`__ script.
|
||||
They depend on the insulation condition of the building stock and costs for
|
||||
renovation of the building elements.
|
||||
In a second step, for those cost per energy savings two possible renovation
|
||||
@ -187,12 +187,12 @@ strengths are determined: a moderate renovation with lower costs and lower
|
||||
maximum possible space heat savings, and an ambitious renovation with associated
|
||||
higher costs and higher efficiency gains. They are added by step-wise
|
||||
linearisation in form of two additional generations in
|
||||
the `prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L1600>`_ script.
|
||||
the `prepare_sector_network.py <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L1600>`__ script.
|
||||
|
||||
Settings in the ``config/config.yaml`` concerning the endogenously optimisation of building
|
||||
renovation include `cost factor <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L223>`_, `interest rate <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L224>`_, `annualised cost <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L225>`_, `tax weighting <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L226>`_, and `construction index <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L227>`_.
|
||||
renovation include `cost factor <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L223>`__, `interest rate <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L224>`__, `annualised cost <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L225>`__, `tax weighting <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L226>`__, and `construction index <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L227>`__.
|
||||
|
||||
Further information are given in the study by Zeyen et al. : `Mitigating heat demand peaks in buildings in a highly renewable European energy system, (2021) <https://arxiv.org/abs/2012.01831>`_.
|
||||
Further information are given in the study by Zeyen et al. : `Mitigating heat demand peaks in buildings in a highly renewable European energy system, (2021) <https://arxiv.org/abs/2012.01831>`__.
|
||||
|
||||
.. _Hydrogen demand:
|
||||
|
||||
@ -200,7 +200,7 @@ Hydrogen demand
|
||||
=============================
|
||||
|
||||
Hydrogen is consumed in the industry sector (see :ref:`Industry demand`) to produce ammonia (see :ref:`Chemicals Industry`) and direct reduced iron (DRI) (see :ref:`Iron and Steel`). Hydrogen is also consumed to produce synthetic methane (see :ref:`Methane supply`) and liquid hydrocarbons (see :ref:`Oil-based products supply`) which have multiple uses in industry and other sectors.
|
||||
Hydrogen is also used for transport applications (see :ref:`Transportation`), where it is exogenously fixed. It is used in `heavy-duty land transport <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L181>`_ and as liquified hydrogen in the shipping sector (see :ref:`Shipping`). Furthermore, stationary fuel cells may re-electrify hydrogen (with waste heat as a byproduct) to balance renewable fluctuations (see :ref:`Electricity supply and demand`). The waste heat from the stationary fuel cells can be used in `district-heating systems <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L256>`_.
|
||||
Hydrogen is also used for transport applications (see :ref:`Transportation`), where it is exogenously fixed. It is used in `heavy-duty land transport <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L181>`__ and as liquified hydrogen in the shipping sector (see :ref:`Shipping`). Furthermore, stationary fuel cells may re-electrify hydrogen (with waste heat as a byproduct) to balance renewable fluctuations (see :ref:`Electricity supply and demand`). The waste heat from the stationary fuel cells can be used in `district-heating systems <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L256>`__.
|
||||
|
||||
.. _Hydrogen supply:
|
||||
|
||||
@ -220,7 +220,7 @@ combined with a water-gas shift reaction
|
||||
CO + H_2O \xrightarrow{} CO_2 + H_2
|
||||
|
||||
|
||||
SMR is included `here <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L245>`_.
|
||||
SMR is included `here <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L245>`__.
|
||||
PyPSA-Eur-Sec allows this route of :math:`H_2` production with and without [carbon capture (CC)] (see :ref:`Carbon dioxide capture, usage and sequestration (CCU/S)`). These routes are often referred to as blue and grey hydrogen. Here, methane input can be both of fossil or synthetic origin.
|
||||
|
||||
Green hydrogen can be produced by electrolysis to split water into hydrogen and oxygen
|
||||
@ -234,12 +234,12 @@ For the electrolysis, alkaline electrolysers are chosen since they have lower co
|
||||
|
||||
**Transport**
|
||||
|
||||
Hydrogen is transported by pipelines. :math:`H_2` pipelines are endogenously generated, either via a greenfield :math:`H_2` network, or by `retrofitting natural gas pipelines <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L262>`_). Retrofitting is implemented in such a way that for every unit of decommissioned gas pipeline, a share (60% is used in the study by `Neumann et al. <https://arxiv.org/abs/2207.05816>`_) of its nominal capacity (exogenously determined in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L266>`_.) is available for hydrogen transport. When the gas network is not resolved, this input denotes the potential for gas pipelines repurposed into hydrogen pipelines.
|
||||
Hydrogen is transported by pipelines. :math:`H_2` pipelines are endogenously generated, either via a greenfield :math:`H_2` network, or by `retrofitting natural gas pipelines <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L262>`__). Retrofitting is implemented in such a way that for every unit of decommissioned gas pipeline, a share (60% is used in the study by `Neumann et al. <https://arxiv.org/abs/2207.05816>`__) of its nominal capacity (exogenously determined in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L266>`__.) is available for hydrogen transport. When the gas network is not resolved, this input denotes the potential for gas pipelines repurposed into hydrogen pipelines.
|
||||
New pipelines can be built additionally on all routes where there currently is a gas or electricity network connection. These new pipelines will be built where no sufficient retrofitting options are available. The capacities of new and repurposed pipelines are a result of the optimisation.
|
||||
|
||||
**Storage**
|
||||
|
||||
Hydrogen can be stored in overground steel tanks or `underground salt caverns <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L250>`_. For the latter, energy storage capacities in every country are limited to the potential estimation for onshore salt caverns within `50 km <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L251>`_ of shore to avoid environmental issues associated with brine solution disposal. Underground storage potentials for hydrogen in European salt caverns is acquired from `Caglayan et al. <https://doi.org/10.1016/j.ijhydene.2019.12.161>`_
|
||||
Hydrogen can be stored in overground steel tanks or `underground salt caverns <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L250>`__. For the latter, energy storage capacities in every country are limited to the potential estimation for onshore salt caverns within `50 km <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L251>`__ of shore to avoid environmental issues associated with brine solution disposal. Underground storage potentials for hydrogen in European salt caverns is acquired from `Caglayan et al. <https://doi.org/10.1016/j.ijhydene.2019.12.161>`__
|
||||
|
||||
.. _Methane demand:
|
||||
|
||||
@ -253,7 +253,7 @@ Methane is used in individual and large-scale gas boilers, in CHP plants with an
|
||||
Methane supply
|
||||
===================================
|
||||
|
||||
In addition to methane from fossil origins, the model also considers biogenic and synthetic sources. `The gas network can either be modelled, or it can be assumed that gas transport is not limited <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L261>`_. If gas infrastructure is regionally resolved, fossil gas can enter the system only at existing and planned LNG terminals, pipeline entry-points, and intra- European gas extraction sites, which are retrieved from the SciGRID Gas IGGIELGN dataset and the GEM Wiki.
|
||||
In addition to methane from fossil origins, the model also considers biogenic and synthetic sources. `The gas network can either be modelled, or it can be assumed that gas transport is not limited <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L261>`__. If gas infrastructure is regionally resolved, fossil gas can enter the system only at existing and planned LNG terminals, pipeline entry-points, and intra- European gas extraction sites, which are retrieved from the SciGRID Gas IGGIELGN dataset and the GEM Wiki.
|
||||
Biogas can be upgraded to methane.
|
||||
Synthetic methane can be produced by processing hydrogen and captures :math:`CO_2` in the Sabatier reaction
|
||||
|
||||
@ -275,7 +275,7 @@ The following figure shows the unclustered European gas transmission network bas
|
||||
|
||||
Biomass Supply
|
||||
=====================
|
||||
Biomass supply potentials for each European country are taken from the `JRC ENSPRESO database <http://data.europa.eu/89h/74ed5a04-7d74-4807-9eab-b94774309d9f>`_ where data is available for various years (2010, 2020, 2030, 2040 and 2050) and scenarios (low, medium, high). No biomass import from outside Europe is assumed. More information on the data set can be found `here <https://publications.jrc.ec.europa.eu/repository/handle/JRC98626>`_.
|
||||
Biomass supply potentials for each European country are taken from the `JRC ENSPRESO database <http://data.europa.eu/89h/74ed5a04-7d74-4807-9eab-b94774309d9f>`__ where data is available for various years (2010, 2020, 2030, 2040 and 2050) and scenarios (low, medium, high). No biomass import from outside Europe is assumed. More information on the data set can be found `here <https://publications.jrc.ec.europa.eu/repository/handle/JRC98626>`__.
|
||||
|
||||
.. _Biomass demand:
|
||||
|
||||
@ -283,19 +283,19 @@ Biomass demand
|
||||
=====================
|
||||
|
||||
|
||||
Biomass supply potentials for every NUTS2 region are taken from the `JRC ENSPRESO database <http://data.europa.eu/89h/74ed5a04-7d74-4807-9eab-b94774309d9f>`_ where data is available for various years (2010, 2020, 2030, 2040 and 2050) and different availability scenarios (low, medium, high). No biomass import from outside Europe is assumed. More information on the data set can be found `here <https://publications.jrc.ec.europa.eu/repository/handle/JRC98626>`_. The data for NUTS2 regions is mapped to PyPSA-Eur-Sec model regions in proportion to the area overlap.
|
||||
Biomass supply potentials for every NUTS2 region are taken from the `JRC ENSPRESO database <http://data.europa.eu/89h/74ed5a04-7d74-4807-9eab-b94774309d9f>`__ where data is available for various years (2010, 2020, 2030, 2040 and 2050) and different availability scenarios (low, medium, high). No biomass import from outside Europe is assumed. More information on the data set can be found `here <https://publications.jrc.ec.europa.eu/repository/handle/JRC98626>`__. The data for NUTS2 regions is mapped to PyPSA-Eur-Sec model regions in proportion to the area overlap.
|
||||
|
||||
|
||||
The desired scenario can be selected in the PyPSA-Eur-Sec `configuration <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L108>`_. The script for building the biomass potentials from the JRC ENSPRESO data base is located `here <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/build_biomass_potentials.py#L43>`_. Consult the script to see the keywords that specify the scenario options.
|
||||
The desired scenario can be selected in the PyPSA-Eur-Sec `configuration <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L108>`__. The script for building the biomass potentials from the JRC ENSPRESO data base is located `here <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/build_biomass_potentials.py#L43>`__. Consult the script to see the keywords that specify the scenario options.
|
||||
|
||||
|
||||
The `configuration <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L108>`_ also allows the user to define how the various types of biomass are used in the model by using the following categories: biogas, solid biomass, and not included. Feedstocks categorized as biogas, typically manure and sludge waste, are available to the model as biogas, which can be upgraded to biomethane. Feedstocks categorized as solid biomass, e.g. secondary forest residues or municipal waste, are available for combustion in combined-heat-and power (CHP) plants and for medium temperature heat (below 500 °C) applications in industry. It can also converted to gas or liquid fuels.
|
||||
The `configuration <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L108>`__ also allows the user to define how the various types of biomass are used in the model by using the following categories: biogas, solid biomass, and not included. Feedstocks categorized as biogas, typically manure and sludge waste, are available to the model as biogas, which can be upgraded to biomethane. Feedstocks categorized as solid biomass, e.g. secondary forest residues or municipal waste, are available for combustion in combined-heat-and power (CHP) plants and for medium temperature heat (below 500 °C) applications in industry. It can also converted to gas or liquid fuels.
|
||||
|
||||
|
||||
Feedstocks labeled as not included are ignored by the model.
|
||||
|
||||
|
||||
A `typical use case for biomass <https://arxiv.org/abs/2109.09563>`_ would be the medium availability scenario for 2030 where only residues from agriculture and forestry as well as biodegradable municipal waste are considered as energy feedstocks. Fuel crops are avoided because they compete with scarce land for food production, while primary wood, as well as wood chips and pellets, are avoided because of concerns about sustainability. See the supporting materials of the `paper <https://www.sciencedirect.com/science/article/pii/S1364032117302034>`_ for more details.
|
||||
A `typical use case for biomass <https://arxiv.org/abs/2109.09563>`__ would be the medium availability scenario for 2030 where only residues from agriculture and forestry as well as biodegradable municipal waste are considered as energy feedstocks. Fuel crops are avoided because they compete with scarce land for food production, while primary wood, as well as wood chips and pellets, are avoided because of concerns about sustainability. See the supporting materials of the `paper <https://www.sciencedirect.com/science/article/pii/S1364032117302034>`__ for more details.
|
||||
|
||||
|
||||
*Solid biomass conversion and use*
|
||||
@ -303,19 +303,19 @@ A `typical use case for biomass <https://arxiv.org/abs/2109.09563>`_ would be th
|
||||
Solid biomass can be used directly to provide process heat up to 500˚C in the industry. It can also be burned in CHP plants and boilers associated with heating systems. These technologies are described elsewhere (see :ref:`Large-scale CHP` and :ref:`Industry demand`).
|
||||
|
||||
|
||||
Solid biomass can be converted to syngas if the option is enabled in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L274>`_. In this case the model will enable the technology BioSNG both with and without the option for carbon capture (see `Technology-data repository <https://github.com/PyPSA/technology-data>`_).
|
||||
Solid biomass can be converted to syngas if the option is enabled in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L274>`__. In this case the model will enable the technology BioSNG both with and without the option for carbon capture (see `Technology-data repository <https://github.com/PyPSA/technology-data>`__).
|
||||
|
||||
|
||||
Liquefaction of solid biomass `can be enabled <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L273>`_ allowing the model to convert it into liquid hydrocarbons that can replace conventional oil products. This technology also comes with and without carbon capture (see `Technology-data repository <https://github.com/PyPSA/technology-data>`_).
|
||||
Liquefaction of solid biomass `can be enabled <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L273>`__ allowing the model to convert it into liquid hydrocarbons that can replace conventional oil products. This technology also comes with and without carbon capture (see `Technology-data repository <https://github.com/PyPSA/technology-data>`__).
|
||||
|
||||
|
||||
*Transport of solid biomass*
|
||||
|
||||
The transport of solid biomass can either be assumed unlimited between countries or it can be associated with a country specific cost per MWh/km. In the config file these options are toggled `here <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L270>`_. If the option is off, use of solid biomass is transport. If it is turned on, a biomass transport network will be `created <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L1803>`_ between all nodes. This network resembles road transport of biomass and the cost of transportation is a variable cost which is proportional to distance and a country specific cost per MWh/km. The latter is `estimated <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/build_biomass_transport_costs.py>`_ from the country specific costs per ton/km used in the publication `“The JRC-EU-TIMES model. Bioenergy potentials for EU and neighbouring countries” <https://publications.jrc.ec.europa.eu/repository/handle/JRC98626>`_.
|
||||
The transport of solid biomass can either be assumed unlimited between countries or it can be associated with a country specific cost per MWh/km. In the config file these options are toggled `here <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L270>`__. If the option is off, use of solid biomass is transport. If it is turned on, a biomass transport network will be `created <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L1803>`__ between all nodes. This network resembles road transport of biomass and the cost of transportation is a variable cost which is proportional to distance and a country specific cost per MWh/km. The latter is `estimated <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/build_biomass_transport_costs.py>`__ from the country specific costs per ton/km used in the publication `“The JRC-EU-TIMES model. Bioenergy potentials for EU and neighbouring countries” <https://publications.jrc.ec.europa.eu/repository/handle/JRC98626>`__.
|
||||
|
||||
*Biogas transport and use*
|
||||
|
||||
Biogas will be aggregated into a common European resources if a gas network is not modelled explicitly, i.e., the `gas_network <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L261>`_ option is set to false. If, on the other hand, a gas network is included, the biogas potential will be associated with each node of origin.
|
||||
Biogas will be aggregated into a common European resources if a gas network is not modelled explicitly, i.e., the `gas_network <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L261>`__ option is set to false. If, on the other hand, a gas network is included, the biogas potential will be associated with each node of origin.
|
||||
The model can only use biogas by first upgrading it to natural gas quality [see :ref:`Methane supply`] (bio methane) which is fed into the general gas network.
|
||||
|
||||
.. _Oil-based products demand:
|
||||
@ -338,7 +338,7 @@ Oil-based products can be either of fossil origin or synthetically produced by c
|
||||
𝑛CO+(2𝑛+1)H_2 → C_{n}H_{2n + 2} +𝑛H_2O
|
||||
|
||||
|
||||
with costs as included from the `technology-data repository <https://github.com/PyPSA/technology-data/blob/master/latex_tables/tables_in_latex.pdf>`_. The waste heat from the Fischer-Tropsch process is supplied to `district heating networks <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L255>`_. The share of fossil and synthetic oil is an optimisation result depending on the techno-economic assumptions.
|
||||
with costs as included from the `technology-data repository <https://github.com/PyPSA/technology-data/blob/master/latex_tables/tables_in_latex.pdf>`__. The waste heat from the Fischer-Tropsch process is supplied to `district heating networks <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L255>`__. The share of fossil and synthetic oil is an optimisation result depending on the techno-economic assumptions.
|
||||
|
||||
|
||||
*Oil-based transport*
|
||||
@ -361,24 +361,24 @@ The Subsection overview below provides a general description of the modelling ap
|
||||
|
||||
Greenhouse gas emissions associated with industry can be classified into energy-related and process-related emissions. Today, fossil fuels are used for process heat energy in the chemicals industry, but also as a non-energy feedstock for chemicals like ammonia ( :math:`NH_3`), ethylene ( :math:`C_2H_4`) and methanol ( :math:`CH_3OH`). Energy-related emissions can be curbed by using low-emission energy sources. The only option to reduce process-related emissions is by using an alternative manufacturing process or by assuming a certain rate of recycling so that a lower amount of virgin material is needed.
|
||||
|
||||
The overarching modelling procedure can be described as follows. First, the energy demands and process emissions for every unit of material output are estimated based on data from the `JRC-IDEES database <https://data.europa.eu/doi/10.2760/182725>`_ and the fuel and process switching described in the subsequent sections. Second, the 2050 energy demands and process emissions are calculated using the per-unit-of-material ratios based on the industry transformations and the `country-level material production in 2015 <https://data.europa.eu/doi/10.2760/182725>`_, assuming constant material demand.
|
||||
The overarching modelling procedure can be described as follows. First, the energy demands and process emissions for every unit of material output are estimated based on data from the `JRC-IDEES database <https://data.europa.eu/doi/10.2760/182725>`__ and the fuel and process switching described in the subsequent sections. Second, the 2050 energy demands and process emissions are calculated using the per-unit-of-material ratios based on the industry transformations and the `country-level material production in 2015 <https://data.europa.eu/doi/10.2760/182725>`__, assuming constant material demand.
|
||||
|
||||
Missing or too coarsely aggregated data in the JRC-IDEES database is supplemented with additional datasets: `Eurostat energy balances <https://ec.europa.eu/eurostat/web/energy/data/energy-balances>`_, `United States <https://www.usgs.gov/media/files/%20nitrogen-2017-xlsx>`_, `Geological Survey <https://www.usgs.gov/media/files/%20nitrogen-2017-xlsx>`_ for ammonia production, `DECHEMA <https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry.pdf>`_ for methanol and chlorine, and `national statistics from Switzerland <https://www.bfe.admin.ch/bfe/de/home/versorgung/statistik-und-geodaten/energiestatistiken.html>`_.
|
||||
Missing or too coarsely aggregated data in the JRC-IDEES database is supplemented with additional datasets: `Eurostat energy balances <https://ec.europa.eu/eurostat/web/energy/data/energy-balances>`__, `United States <https://www.usgs.gov/media/files/%20nitrogen-2017-xlsx>`__, `Geological Survey <https://www.usgs.gov/media/files/%20nitrogen-2017-xlsx>`__ for ammonia production, `DECHEMA <https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry.pdf>`__ for methanol and chlorine, and `national statistics from Switzerland <https://www.bfe.admin.ch/bfe/de/home/versorgung/statistik-und-geodaten/energiestatistiken.html>`__.
|
||||
|
||||
|
||||
Where there are fossil and electrified alternatives for the same process (e.g. in glass manufacture or drying), we assume that the process is completely electrified. Current electricity demands (lighting, air compressors, motor drives, fans, pumps) will remain electric. Processes that require temperatures below 500 °C are supplied with solid biomass, since we assume that residues and wastes are not suitable for high-temperature applications. We see solid biomass use primarily in the pulp and paper industry, where it is already widespread, and in food, beverages and tobacco, where it replaces natural gas. Industries which require high temperatures (above 500 °C), such as metals, chemicals and non-metallic minerals are either electrified where suitable processes already exist, or the heat is provided with synthetic methane.
|
||||
|
||||
Hydrogen for high-temperature process heat is not part of the model currently.
|
||||
|
||||
Where process heat is required, our approach depends on the necessary temperature. For example, due to the high share of high-temperature process heat demand (see `Naegler et al. <https://doi.org/10.1002/er.3436>`_ and `Rehfeldt el al. <https://link.springer.com/article/10.1007/s12053-017-9571-y>`_), we disregard geothermal and solar thermal energy as sources for process heat since they cannot attain high-temperature heat.
|
||||
Where process heat is required, our approach depends on the necessary temperature. For example, due to the high share of high-temperature process heat demand (see `Naegler et al. <https://doi.org/10.1002/er.3436>`__ and `Rehfeldt el al. <https://link.springer.com/article/10.1007/s12053-017-9571-y>`__), we disregard geothermal and solar thermal energy as sources for process heat since they cannot attain high-temperature heat.
|
||||
|
||||
The following figure shows the final consumption of energy and non-energy feedstocks in industry today in comparison to the scenario in 2050 assumed in `Neumann et al <https://arxiv.org/abs/2207.05816>`_.
|
||||
The following figure shows the final consumption of energy and non-energy feedstocks in industry today in comparison to the scenario in 2050 assumed in `Neumann et al <https://arxiv.org/abs/2207.05816>`__.
|
||||
|
||||
.. image:: ../graphics/fec_industry_today_tomorrow.png
|
||||
|
||||
|
||||
The following figure shows the process emissions in industry today (top bar) and in 2050 without
|
||||
carbon capture (bottom bar) assumed in `Neumann et al <https://arxiv.org/abs/2207.05816>`_.
|
||||
carbon capture (bottom bar) assumed in `Neumann et al <https://arxiv.org/abs/2207.05816>`__.
|
||||
|
||||
|
||||
|
||||
@ -386,7 +386,7 @@ carbon capture (bottom bar) assumed in `Neumann et al <https://arxiv.org/abs/220
|
||||
.. image:: ../graphics/process-emissions.png
|
||||
|
||||
|
||||
Inside each country the industrial demand is then distributed using the `Hotmaps Industrial Database <https://zenodo.org/record/4687147#.YvOaxhxBy5c>`_, which is illustrated in the figure below. This open database includes georeferenced industrial sites of energy-intensive industry sectors in EU28, including cement, basic chemicals, glass, iron and steel, non-ferrous metals, non-metallic minerals, paper, and refineries subsectors. The use of this spatial dataset enables the calculation of regional and process-specific energy demands. This approach assumes that there will be no significant migration of energy-intensive industries.
|
||||
Inside each country the industrial demand is then distributed using the `Hotmaps Industrial Database <https://zenodo.org/record/4687147#.YvOaxhxBy5c>`__, which is illustrated in the figure below. This open database includes georeferenced industrial sites of energy-intensive industry sectors in EU28, including cement, basic chemicals, glass, iron and steel, non-ferrous metals, non-metallic minerals, paper, and refineries subsectors. The use of this spatial dataset enables the calculation of regional and process-specific energy demands. This approach assumes that there will be no significant migration of energy-intensive industries.
|
||||
|
||||
.. image:: ../graphics/hotmaps.png
|
||||
|
||||
@ -395,7 +395,7 @@ Inside each country the industrial demand is then distributed using the `Hotmaps
|
||||
|
||||
**Iron and Steel**
|
||||
|
||||
Two alternative routes are used today to manufacture steel in Europe. The primary route (integrated steelworks) represents 60% of steel production, while the secondary route (electric arc furnaces, EAF), represents the other 40% `(Lechtenböhmer et. al) <https://doi.org/10.1016/j.energy.2016.07.110>`_.
|
||||
Two alternative routes are used today to manufacture steel in Europe. The primary route (integrated steelworks) represents 60% of steel production, while the secondary route (electric arc furnaces, EAF), represents the other 40% `(Lechtenböhmer et. al) <https://doi.org/10.1016/j.energy.2016.07.110>`__.
|
||||
|
||||
The primary route uses blast furnaces in which coke is used to reduce iron ore into molten iron, which is then converted into steel:
|
||||
|
||||
@ -415,9 +415,9 @@ The primary route uses blast furnaces in which coke is used to reduce iron ore i
|
||||
FeO + CO \xrightarrow{} Fe + CO_2
|
||||
|
||||
|
||||
The primary route of steelmaking implies large process emissions of 0.22 t :math:`_{CO_2}` /t of steel, amounting to 7% of global greenhouse gas emissions `(Vogl et. al) <https://doi.org/10.1016/j.joule.2021.09.007>`_.
|
||||
The primary route of steelmaking implies large process emissions of 0.22 t :math:`_{CO_2}` /t of steel, amounting to 7% of global greenhouse gas emissions `(Vogl et. al) <https://doi.org/10.1016/j.joule.2021.09.007>`__.
|
||||
|
||||
In the secondary route, electric arc furnaces are used to melt scrap metal. This limits the :math:`CO_2` emissions to the burning of graphite electrodes `(Friedrichsen et. al) <https://www.umweltbundesamt.de/en/publikationen/comparative-analysis-of-options-potential-for>`_, and reduces process emissions to 0.03 t :math:`_{CO_2}` /t of steel.
|
||||
In the secondary route, electric arc furnaces are used to melt scrap metal. This limits the :math:`CO_2` emissions to the burning of graphite electrodes `(Friedrichsen et. al) <https://www.umweltbundesamt.de/en/publikationen/comparative-analysis-of-options-potential-for>`__, and reduces process emissions to 0.03 t :math:`_{CO_2}` /t of steel.
|
||||
|
||||
We assume that the primary route can be replaced by a third route in 2050, using direct reduced iron (DRI) and subsequent processing in an EAF.
|
||||
|
||||
@ -433,10 +433,10 @@ We assume that the primary route can be replaced by a third route in 2050, using
|
||||
FeO + H_2 \xrightarrow{} Fe + H_2O
|
||||
|
||||
|
||||
This circumvents the process emissions associated with the use of coke. For hydrogen- based DRI, we assume energy requirements of 1.7 MWh :math:`_{H_2}` /t steel `(Vogl et. al) <https://doi.org/10.1016/j.jclepro.2018.08.279>`_ and 0.322 MWh :math:`_{el}`/t steel `(HYBRIT 2016) <https://dh5k8ug1gwbyz.cloudfront.net/uploads/2021/02/Hybrit-broschure-engelska.pdf>`_.
|
||||
This circumvents the process emissions associated with the use of coke. For hydrogen- based DRI, we assume energy requirements of 1.7 MWh :math:`_{H_2}` /t steel `(Vogl et. al) <https://doi.org/10.1016/j.jclepro.2018.08.279>`__ and 0.322 MWh :math:`_{el}`/t steel `(HYBRIT 2016) <https://dh5k8ug1gwbyz.cloudfront.net/uploads/2021/02/Hybrit-broschure-engelska.pdf>`__.
|
||||
|
||||
|
||||
The share of steel produced via the primary route is exogenously set in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L279>`_. The share of steel obtained via hydrogen-based DRI plus EAF is also set exogenously in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L287>`_. The remaining share is manufactured through the secondary route using scrap metal in EAF. Bioenergy as alternative to coke in blast furnaces is not considered in the model (`Mandova et.al <https://doi.org/10.1016/j.biombioe.2018.04.021>`_, `Suopajärvi et.al <https://doi.org/10.1016/j.apenergy.2018.01.060>`_).
|
||||
The share of steel produced via the primary route is exogenously set in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L279>`__. The share of steel obtained via hydrogen-based DRI plus EAF is also set exogenously in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L287>`__. The remaining share is manufactured through the secondary route using scrap metal in EAF. Bioenergy as alternative to coke in blast furnaces is not considered in the model (`Mandova et.al <https://doi.org/10.1016/j.biombioe.2018.04.021>`__, `Suopajärvi et.al <https://doi.org/10.1016/j.apenergy.2018.01.060>`__).
|
||||
|
||||
For the remaining subprocesses in this sector, the following transformations are assumed. Methane is used as energy source for the smelting process. Activities associated with furnaces, refining and rolling, and product finishing are electrified assuming the current efficiency values for these cases. These transformations result in changes in process emissions as outlined in the process emissions figure presented in the industry overview section (see :ref:`Overview`).
|
||||
|
||||
@ -446,28 +446,28 @@ For the remaining subprocesses in this sector, the following transformations are
|
||||
|
||||
The chemicals industry includes a wide range of diverse industries, including the production of basic organic compounds (olefins, alcohols, aromatics), basic inorganic compounds (ammonia, chlorine), polymers (plastics), and end-user products (cosmetics, pharmaceutics).
|
||||
|
||||
The chemicals industry consumes large amounts of fossil-fuel based feedstocks (see `Levi et. al <https://pubs.acs.org/doi/10.1021/acs.est.7b04573>`_), which can also be produced from renewables as outlined for hydrogen (see :ref:`Hydrogen supply`), for methane (see :ref:`Methane supply`), and for oil-based products (see :ref:`Oil-based products supply`). The ratio between synthetic and fossil-based fuels used in the industry is an endogenous result of the optimisation.
|
||||
The chemicals industry consumes large amounts of fossil-fuel based feedstocks (see `Levi et. al <https://pubs.acs.org/doi/10.1021/acs.est.7b04573>`__), which can also be produced from renewables as outlined for hydrogen (see :ref:`Hydrogen supply`), for methane (see :ref:`Methane supply`), and for oil-based products (see :ref:`Oil-based products supply`). The ratio between synthetic and fossil-based fuels used in the industry is an endogenous result of the optimisation.
|
||||
|
||||
The basic chemicals consumption data from the `JRC IDEES <https://op.europa.eu/en/publication-detail/-/publication/989282db-ad65-11e7-837e-01aa75ed71a1/language-en>`_ database comprises high- value chemicals (ethylene, propylene and BTX), chlorine, methanol and ammonia. However, it is necessary to separate out these chemicals because their current and future production routes are different.
|
||||
The basic chemicals consumption data from the `JRC IDEES <https://op.europa.eu/en/publication-detail/-/publication/989282db-ad65-11e7-837e-01aa75ed71a1/language-en>`__ database comprises high- value chemicals (ethylene, propylene and BTX), chlorine, methanol and ammonia. However, it is necessary to separate out these chemicals because their current and future production routes are different.
|
||||
|
||||
Statistics for the production of ammonia, which is commonly used as a fertilizer, are taken from the `USGS <https://www.usgs.gov/media/files/nitrogen-2017-xlsx>`_ for every country. Ammonia can be made from hydrogen and nitrogen using the Haber-Bosch process.
|
||||
Statistics for the production of ammonia, which is commonly used as a fertilizer, are taken from the `USGS <https://www.usgs.gov/media/files/nitrogen-2017-xlsx>`__ for every country. Ammonia can be made from hydrogen and nitrogen using the Haber-Bosch process.
|
||||
|
||||
.. math::
|
||||
N_2 + 3H_2 \xrightarrow{} 2NH_3
|
||||
|
||||
|
||||
|
||||
The Haber-Bosch process is not explicitly represented in the model, such that demand for ammonia enters the model as a demand for hydrogen ( 6.5 MWh :math:`_{H_2}` / t :math:`_{NH_3}` ) and electricity ( 1.17 MWh :math:`_{el}` /t :math:`_{NH_3}` ) (see `Wang et. al <https://doi.org/10.1016/j.joule.2018.04.017>`_). Today, natural gas dominates in Europe as the source for the hydrogen used in the Haber-Bosch process, but the model can choose among the various hydrogen supply options described in the hydrogen section (see :ref:`Hydrogen supply`)
|
||||
The Haber-Bosch process is not explicitly represented in the model, such that demand for ammonia enters the model as a demand for hydrogen ( 6.5 MWh :math:`_{H_2}` / t :math:`_{NH_3}` ) and electricity ( 1.17 MWh :math:`_{el}` /t :math:`_{NH_3}` ) (see `Wang et. al <https://doi.org/10.1016/j.joule.2018.04.017>`__). Today, natural gas dominates in Europe as the source for the hydrogen used in the Haber-Bosch process, but the model can choose among the various hydrogen supply options described in the hydrogen section (see :ref:`Hydrogen supply`)
|
||||
|
||||
The total production and specific energy consumption of chlorine and methanol is taken from a `DECHEMA report <https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry.pdf>`_. According to this source, the production of chlorine amounts to 9.58 MtCl/a, which is assumed to require electricity at 3.6 MWh :math:`_{el}`/t of chlorine and yield hydrogen at 0.937 MWh :math:`_{H_2}`/t of chlorine in the chloralkali process. The production of methanol adds up to 1.5 MtMeOH/a, requiring electricity at 0.167 MWh :math:`_{el}`/t of methanol and methane at 10.25 MWh :math:`_{CH_4}`/t of methanol.
|
||||
The total production and specific energy consumption of chlorine and methanol is taken from a `DECHEMA report <https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry.pdf>`__. According to this source, the production of chlorine amounts to 9.58 MtCl/a, which is assumed to require electricity at 3.6 MWh :math:`_{el}`/t of chlorine and yield hydrogen at 0.937 MWh :math:`_{H_2}`/t of chlorine in the chloralkali process. The production of methanol adds up to 1.5 MtMeOH/a, requiring electricity at 0.167 MWh :math:`_{el}`/t of methanol and methane at 10.25 MWh :math:`_{CH_4}`/t of methanol.
|
||||
|
||||
|
||||
The production of ammonia, methanol, and chlorine production is deducted from the JRC IDEES basic chemicals, leaving the production totals of high-value chemicals. For this, we assume that the liquid hydrocarbon feedstock comes from synthetic or fossil- origin naphtha (14 MWh :math:`_{naphtha}`/t of HVC, similar to `Lechtenböhmer et al <https://doi.org/10.1016/j.energy.2016.07.110>`_), ignoring the methanol-to-olefin route. Furthermore, we assume the following transformations of the energy-consuming processes in the production of plastics: the final energy consumption in steam processing is converted to methane since requires temperature above 500 °C (4.1 MWh :math:`_{CH_4}` /t of HVC, see `Rehfeldt et al. <https://doi.org/10.1007/s12053-017-9571-y>`_); and the remaining processes are electrified using the current efficiency of microwave for high-enthalpy heat processing, electric furnaces, electric process cooling and electric generic processes (2.85 MWh :math:`_{el}`/t of HVC).
|
||||
The production of ammonia, methanol, and chlorine production is deducted from the JRC IDEES basic chemicals, leaving the production totals of high-value chemicals. For this, we assume that the liquid hydrocarbon feedstock comes from synthetic or fossil- origin naphtha (14 MWh :math:`_{naphtha}`/t of HVC, similar to `Lechtenböhmer et al <https://doi.org/10.1016/j.energy.2016.07.110>`__), ignoring the methanol-to-olefin route. Furthermore, we assume the following transformations of the energy-consuming processes in the production of plastics: the final energy consumption in steam processing is converted to methane since requires temperature above 500 °C (4.1 MWh :math:`_{CH_4}` /t of HVC, see `Rehfeldt et al. <https://doi.org/10.1007/s12053-017-9571-y>`__); and the remaining processes are electrified using the current efficiency of microwave for high-enthalpy heat processing, electric furnaces, electric process cooling and electric generic processes (2.85 MWh :math:`_{el}`/t of HVC).
|
||||
|
||||
The process emissions from feedstock in the chemical industry are as high as 0.369 t :math:`_{CO_2}`/t of ethylene equivalent. We consider process emissions for all the material output, which is a conservative approach since it assumes that all plastic-embedded :math:`CO_2` will eventually be released into the atmosphere. However, plastic disposal in landfilling will avoid, or at least delay, associated :math:`CO_2` emissions.
|
||||
|
||||
Circular economy practices drastically reduce the amount of primary feedstock needed for the production of plastics in the model (see `Kullmann et al. <https://doi.org/10.1016/j.energy.2022.124660>`_, `Meys et al. (2021) <https://doi.org/10.1126/science.abg9853>`_, `Meys et al. (2020) <https://doi.org/10/gmxv6z>`_, `Gu et al. <https://doi.org/10/gf8n9w>`_) and consequently, also the energy demands and level of process emission. The percentage of plastics that are assumed to be mechanically recycled can be selected in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/776596ab9ac6a6cc93422ccfd0383abeffb0baa9/config.default.yaml#L315>`_, as well as
|
||||
the percentage that is chemically recycled, see `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/776596ab9ac6a6cc93422ccfd0383abeffb0baa9/config.default.yaml#L316>`_ The energy consumption for those recycling processes are respectively 0.547 MWh :math:`_{el}`/t of HVC (as indicated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/776596ab9ac6a6cc93422ccfd0383abeffb0baa9/config.default.yaml#L318>`_) (`Meys et al. (2020) <https://doi.org/10/gmxv6z>`_), and 6.9 MWh :math:`_{el}`/t of HVC (as indicated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/776596ab9ac6a6cc93422ccfd0383abeffb0baa9/config.default.yaml#L319>`_) based on pyrolysis and electric steam cracking (see `Materials Economics <https://materialeconomics.com/publications/industrial-transformation-2050>`_ report).
|
||||
Circular economy practices drastically reduce the amount of primary feedstock needed for the production of plastics in the model (see `Kullmann et al. <https://doi.org/10.1016/j.energy.2022.124660>`__, `Meys et al. (2021) <https://doi.org/10.1126/science.abg9853>`__, `Meys et al. (2020) <https://doi.org/10/gmxv6z>`__, `Gu et al. <https://doi.org/10/gf8n9w>`__) and consequently, also the energy demands and level of process emission. The percentage of plastics that are assumed to be mechanically recycled can be selected in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/776596ab9ac6a6cc93422ccfd0383abeffb0baa9/config.default.yaml#L315>`__, as well as
|
||||
the percentage that is chemically recycled, see `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/776596ab9ac6a6cc93422ccfd0383abeffb0baa9/config.default.yaml#L316>`__ The energy consumption for those recycling processes are respectively 0.547 MWh :math:`_{el}`/t of HVC (as indicated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/776596ab9ac6a6cc93422ccfd0383abeffb0baa9/config.default.yaml#L318>`__) (`Meys et al. (2020) <https://doi.org/10/gmxv6z>`__), and 6.9 MWh :math:`_{el}`/t of HVC (as indicated in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/776596ab9ac6a6cc93422ccfd0383abeffb0baa9/config.default.yaml#L319>`__) based on pyrolysis and electric steam cracking (see `Materials Economics <https://materialeconomics.com/publications/industrial-transformation-2050>`__ report).
|
||||
|
||||
|
||||
**Non-metallic Mineral Products**
|
||||
@ -476,7 +476,7 @@ This subsector includes the manufacturing of cement, ceramics, and glass.
|
||||
|
||||
*Cement*
|
||||
|
||||
Cement is used in construction to make concrete. The production of cement involves high energy consumption and large process emissions. The calcination of limestone to chemically reactive calcium oxide, also known as lime, involves process emissions of 0.54 t :math:`_{CO_2}` /t cement (see `Akhtar et al. <https://doi.org/10.1109/CITCON.2013.6525276>`_.
|
||||
Cement is used in construction to make concrete. The production of cement involves high energy consumption and large process emissions. The calcination of limestone to chemically reactive calcium oxide, also known as lime, involves process emissions of 0.54 t :math:`_{CO_2}` /t cement (see `Akhtar et al. <https://doi.org/10.1109/CITCON.2013.6525276>`__.
|
||||
|
||||
|
||||
.. math::
|
||||
@ -487,16 +487,16 @@ Additionally, :math:`CO_2` is emitted from the combustion of fossil fuels to pro
|
||||
|
||||
Cement process emissions can be captured assuming a capture rate of 90%. Whether emissions are captured is decided by the model taking into account the capital costs of carbon capture modules. The electricity and heat demand of process emission carbon capture is currently ignored. For net-zero emission scenarios, the remaining process emissions need to be compensated by negative emissions.
|
||||
|
||||
With the exception of electricity demand and biomass demand for low-temperature heat (0.06 MWh/t and 0.2 MWh/t), the final energy consumption of this subsector is assumed to be supplied by methane (0.52 MWh/t), which is capable of delivering the required high-temperature heat. This implies a switch from burning solid fuels to burning gas which will require adjustments of the `kilns <10.1109/CITCON.2013.6525276>`_. The share of fossil vs. synthetic methane consumed is a result of the optimisation
|
||||
With the exception of electricity demand and biomass demand for low-temperature heat (0.06 MWh/t and 0.2 MWh/t), the final energy consumption of this subsector is assumed to be supplied by methane (0.52 MWh/t), which is capable of delivering the required high-temperature heat. This implies a switch from burning solid fuels to burning gas which will require adjustments of the `kilns <10.1109/CITCON.2013.6525276>`__. The share of fossil vs. synthetic methane consumed is a result of the optimisation
|
||||
|
||||
|
||||
*Ceramics*
|
||||
|
||||
The ceramics sector is assumed to be fully electrified based on the current efficiency of already electrified processes which include microwave drying and sintering of raw materials, electric kilns for primary production processes, electric furnaces for the `product finishing <https://data.europa.eu/doi/10.2760/182725>`_. In total, the final electricity consumption is 0.44 MWh/t of ceramic. The manufacturing of ceramics includes process emissions of 0.03 t :math:`_{CO_2}`/t of ceramic. For a detailed overview of the ceramics industry sector see `Furszyfer Del Rio et al <https://doi.org/10.1016/j.rser.2021.111885>`_.
|
||||
The ceramics sector is assumed to be fully electrified based on the current efficiency of already electrified processes which include microwave drying and sintering of raw materials, electric kilns for primary production processes, electric furnaces for the `product finishing <https://data.europa.eu/doi/10.2760/182725>`__. In total, the final electricity consumption is 0.44 MWh/t of ceramic. The manufacturing of ceramics includes process emissions of 0.03 t :math:`_{CO_2}`/t of ceramic. For a detailed overview of the ceramics industry sector see `Furszyfer Del Rio et al <https://doi.org/10.1016/j.rser.2021.111885>`__.
|
||||
|
||||
*Glass*
|
||||
|
||||
The production of glass is assumed to be fully electrified based on the current efficiency of electric melting tanks and electric annealing which adds up to an electricity demand of 2.07 MWh :math:`_{el}`/t of `glass <https://doi.org/10/f9df2m>`_. The manufacturing of glass incurs process emissions of 0.1 t :math:`_{CO_2}`/t of glass. Potential efficiency improvements, which according to `Lechtenböhmer et al <https://doi.org/10/f9df2m>`_ could reduce energy demands to 0.85 MW :math:`_{el}`/t of glass, have not been considered. For a detailed overview of the glass industry sector see `Furszyfer Del Rio et al <https://doi.org/10.1016/j.rser.2021.111885>`_.
|
||||
The production of glass is assumed to be fully electrified based on the current efficiency of electric melting tanks and electric annealing which adds up to an electricity demand of 2.07 MWh :math:`_{el}`/t of `glass <https://doi.org/10/f9df2m>`__. The manufacturing of glass incurs process emissions of 0.1 t :math:`_{CO_2}`/t of glass. Potential efficiency improvements, which according to `Lechtenböhmer et al <https://doi.org/10/f9df2m>`__ could reduce energy demands to 0.85 MW :math:`_{el}`/t of glass, have not been considered. For a detailed overview of the glass industry sector see `Furszyfer Del Rio et al <https://doi.org/10.1016/j.rser.2021.111885>`__.
|
||||
|
||||
|
||||
**Non-ferrous Metals**
|
||||
@ -511,75 +511,75 @@ The primary route involves two energy-intensive processes: the production of alu
|
||||
2Al_2O_3 +3C \xrightarrow{} 4Al+3CO_2
|
||||
|
||||
|
||||
The primary route requires high-enthalpy heat (2.3 MWh/t) to produce alumina which is supplied by methane and causes process emissions of 1.5 t :math:`_{CO_2}`/t aluminium. According to `Friedrichsen et al. <http://www.umweltbundesamt.de/en/publikationen/comparative-analysis-of-options-potential-for>`_, inert anodes might become commercially available by 2030 that would eliminate the process emissions, but they are not included in the model. Assuming all subprocesses are electrified, the primary route requires 15.4 MWh :math:`_{el}`/t of aluminium.
|
||||
The primary route requires high-enthalpy heat (2.3 MWh/t) to produce alumina which is supplied by methane and causes process emissions of 1.5 t :math:`_{CO_2}`/t aluminium. According to `Friedrichsen et al. <http://www.umweltbundesamt.de/en/publikationen/comparative-analysis-of-options-potential-for>`__, inert anodes might become commercially available by 2030 that would eliminate the process emissions, but they are not included in the model. Assuming all subprocesses are electrified, the primary route requires 15.4 MWh :math:`_{el}`/t of aluminium.
|
||||
|
||||
In the secondary route, scrap aluminium is remelted. The energy demand for this process is only 10% of the primary route and there are no associated process emissions. Assuming all subprocesses are electrified, the secondary route requires 1.7 MWh/t of aluminium. The share of aliminum manufactured by the primary and secondary route can be selected in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L297>`_]
|
||||
In the secondary route, scrap aluminium is remelted. The energy demand for this process is only 10% of the primary route and there are no associated process emissions. Assuming all subprocesses are electrified, the secondary route requires 1.7 MWh/t of aluminium. The share of aliminum manufactured by the primary and secondary route can be selected in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L297>`__]
|
||||
|
||||
For the other non-ferrous metals, we assume the electrification of the entire manufacturing process with an average electricity demand of 3.2 MWh :math:`_{el}`/t lead equivalent.
|
||||
|
||||
**Other Industry Subsectors**
|
||||
|
||||
The remaining industry subsectors include (a) pulp, paper, printing, (b) food, beverages, tobacco, (c) textiles and leather, (d) machinery equipment, (e) transport equipment, (f) wood and wood products, (g) others. Low- and mid-temperature process heat in these industries is assumed to be `supplied by biomass <https://doi.org/10.1016/j.rser.2021.110856>`_ while the remaining processes are electrified. None of the subsectors involve process emissions.
|
||||
The remaining industry subsectors include (a) pulp, paper, printing, (b) food, beverages, tobacco, (c) textiles and leather, (d) machinery equipment, (e) transport equipment, (f) wood and wood products, (g) others. Low- and mid-temperature process heat in these industries is assumed to be `supplied by biomass <https://doi.org/10.1016/j.rser.2021.110856>`__ while the remaining processes are electrified. None of the subsectors involve process emissions.
|
||||
|
||||
|
||||
Agriculture demand
|
||||
=========================
|
||||
|
||||
Energy demands for the agriculture, forestry and fishing sector per country are taken from the `JRC-IDEES database <http://data.europa.eu/89h/jrc-10110-10001>`_. Missing countries are filled with `Eurostat data <https://ec.europa.eu/eurostat/web/energy/data/energy-balances>`_. Agricultural energy demands are split into electricity (lighting, ventilation, specific electricity uses, electric pumping devices), heat (specific heat uses, low enthalpy heat), and machinery oil (motor drives, farming machine drives, diesel-fueled pumping devices). Heat demand is assigned at “services rural heat” buses. Time series for demands are assumed to be constant and distributed inside countries by population.
|
||||
Energy demands for the agriculture, forestry and fishing sector per country are taken from the `JRC-IDEES database <http://data.europa.eu/89h/jrc-10110-10001>`__. Missing countries are filled with `Eurostat data <https://ec.europa.eu/eurostat/web/energy/data/energy-balances>`__. Agricultural energy demands are split into electricity (lighting, ventilation, specific electricity uses, electric pumping devices), heat (specific heat uses, low enthalpy heat), and machinery oil (motor drives, farming machine drives, diesel-fueled pumping devices). Heat demand is assigned at “services rural heat” buses. Time series for demands are assumed to be constant and distributed inside countries by population.
|
||||
|
||||
.. _Transportation:
|
||||
|
||||
Transportation
|
||||
=========================
|
||||
Annual energy demands for land transport, aviation and shipping for every country are retrieved from `JRC-IDEES data set <http://data.europa.eu/89h/jrc-10110-10001>`_. Below, the details of how each of these categories are treated is explained.
|
||||
Annual energy demands for land transport, aviation and shipping for every country are retrieved from `JRC-IDEES data set <http://data.europa.eu/89h/jrc-10110-10001>`__. Below, the details of how each of these categories are treated is explained.
|
||||
|
||||
.. _Land transport:
|
||||
|
||||
**Land transport**
|
||||
|
||||
Both road and rail transport is combined as `land transport demand <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/build_transport_demand.py#L74>`_ although electrified rail transport is excluded because that demand is included in the current electricity demand.
|
||||
Both road and rail transport is combined as `land transport demand <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/build_transport_demand.py#L74>`__ although electrified rail transport is excluded because that demand is included in the current electricity demand.
|
||||
|
||||
The most important settings for land transport are the exogenously fixed fuel mix (an option enabling the endogeous optimization of transport electrification is planned but not yet implemented). In the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L181>`_, the share of battery electric vehicles (BEV) and hydrogen fuel cell vehicles (FCEV) can be set. The remaining percentage will be treated as internal combustion engines (ICE) that consume oil products.
|
||||
The most important settings for land transport are the exogenously fixed fuel mix (an option enabling the endogeous optimization of transport electrification is planned but not yet implemented). In the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L181>`__, the share of battery electric vehicles (BEV) and hydrogen fuel cell vehicles (FCEV) can be set. The remaining percentage will be treated as internal combustion engines (ICE) that consume oil products.
|
||||
|
||||
*Battery Electric vehicles (BEV)*
|
||||
|
||||
For the electrified land transport, country-specific factors are computed by comparing the `current car final energy consumption per km in <https://www.sciencedirect.com/science/article/pii/S0360544216310295>`_ (average for Europe 0.7 kWh/km) to the 0.18 kWh/km value assumed for battery-to-wheels efficiency in EVs. The characteristic `weekly profile <https://www.bast.de/DE/Verkehrstechnik/Fachthemen/v2-verkehrszaehlung/zaehl_node.html>`_ provided by the German Federal Highway Research Institute (BASt) is used to obtain hourly time series for European countries taking into account the corresponding local times. Furthermore, a temperature dependence is included in the time series to account for heating/cooling demand in transport. For temperatures `below <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L166>`_/`above <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L165>`_ certain threshold values, e.g. 15 °C/20 °C, `temperature coefficients <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L169>`_ of typically 0.98%/°C and 0.63%/°C are assumed, based on the `paper <https://www.sciencedirect.com/science/article/pii/S036054421831288X>`_.
|
||||
For the electrified land transport, country-specific factors are computed by comparing the `current car final energy consumption per km in <https://www.sciencedirect.com/science/article/pii/S0360544216310295>`__ (average for Europe 0.7 kWh/km) to the 0.18 kWh/km value assumed for battery-to-wheels efficiency in EVs. The characteristic `weekly profile <https://www.bast.de/DE/Verkehrstechnik/Fachthemen/v2-verkehrszaehlung/zaehl_node.html>`__ provided by the German Federal Highway Research Institute (BASt) is used to obtain hourly time series for European countries taking into account the corresponding local times. Furthermore, a temperature dependence is included in the time series to account for heating/cooling demand in transport. For temperatures `below <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L166>`__/`above <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L165>`__ certain threshold values, e.g. 15 °C/20 °C, `temperature coefficients <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L169>`__ of typically 0.98%/°C and 0.63%/°C are assumed, based on the `paper <https://www.sciencedirect.com/science/article/pii/S036054421831288X>`__.
|
||||
|
||||
For BEVs the user can define the `storage energy capacity <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L173>`_, `charging power capacity <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L176>`_, and `charging efficiency <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L174>`_.
|
||||
For BEVs the user can define the `storage energy capacity <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L173>`__, `charging power capacity <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L176>`__, and `charging efficiency <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L174>`__.
|
||||
|
||||
For BEV, smart charging is an option. A `certain share <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L172>`_ of the BEV fleet can shift their charging time. The BEV state of charge is forced to be higher than a `set percentage <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L163>`_, e.g. 75%, every day at a `specified hour <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L164>`_, e.g., 7 am, to ensure that the batteries are sufficiently charged for peak usage in the morning and they not behave as seasonal storage. They also have the option to participate in vehicle-to-grid (V2G) services to facilitate system operation if that `is enabled <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L179>`_.
|
||||
For BEV, smart charging is an option. A `certain share <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L172>`__ of the BEV fleet can shift their charging time. The BEV state of charge is forced to be higher than a `set percentage <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L163>`__, e.g. 75%, every day at a `specified hour <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L164>`__, e.g., 7 am, to ensure that the batteries are sufficiently charged for peak usage in the morning and they not behave as seasonal storage. They also have the option to participate in vehicle-to-grid (V2G) services to facilitate system operation if that `is enabled <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L179>`__.
|
||||
|
||||
The battery cost of BEV is not included in the model since it is assumed that BEV owners buy them to primarily satisfy their mobility needs.
|
||||
|
||||
*Hydrogen fuel cell vehicles (FCEV)*
|
||||
|
||||
The share of all land transport that is specified to be be FCEV will be converted to a demand for hydrogen (see :ref:`Hydrogen supply`) using the `FCEV efficiency
|
||||
<https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L191>`_.
|
||||
<https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L191>`__.
|
||||
|
||||
FCEVs are typically used to simulate demand for transport that is hard to electrify directly, e.g. heavy construction machinery. But it may also be used to investigate a more widespread adoption of the technology.
|
||||
|
||||
*Internal combustion engine vehicles (ICE)*
|
||||
|
||||
All land transport that is not specified to be either BEV or FCEV will be treated as conventional ICEs. The transport demand is converted to a demand for oil products (see :ref:`Oil-based products supply`) using the `ICE efficiency
|
||||
<https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L192>`_.
|
||||
<https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L192>`__.
|
||||
|
||||
.. _Aviation:
|
||||
|
||||
**Aviation**
|
||||
|
||||
The `demand for aviation <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L2193>`_ includes international and domestic use. It is modelled as an oil demand since aviation consumes kerosene. This can be produced synthetically or have fossil-origin (see :ref:`Oil-based products supply`).
|
||||
The `demand for aviation <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L2193>`__ includes international and domestic use. It is modelled as an oil demand since aviation consumes kerosene. This can be produced synthetically or have fossil-origin (see :ref:`Oil-based products supply`).
|
||||
|
||||
.. _Shipping:
|
||||
|
||||
**Shipping**
|
||||
|
||||
Shipping energy demand is covered by a combination of oil and hydrogen. Other fuel options, like methanol or ammonia, are currently not included in PyPSA-Eur-Sec. The share of shipping that is assumed to be supplied by hydrogen can be selected in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L198>`_.
|
||||
Shipping energy demand is covered by a combination of oil and hydrogen. Other fuel options, like methanol or ammonia, are currently not included in PyPSA-Eur-Sec. The share of shipping that is assumed to be supplied by hydrogen can be selected in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L198>`__.
|
||||
|
||||
To estimate the `hydrogen demand <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L2090>`_, the average fuel efficiency of the fleet is used in combination with the efficiency of the fuel cell defined in the technology-data repository. The average fuel efficiency is set in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L196>`_.
|
||||
To estimate the `hydrogen demand <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L2090>`__, the average fuel efficiency of the fleet is used in combination with the efficiency of the fuel cell defined in the technology-data repository. The average fuel efficiency is set in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L196>`__.
|
||||
|
||||
The consumed hydrogen comes from the general hydrogen bus where it can be produced by SMR, SMR+CC or electrolysers (see :ref:`Hydrogen supply`). The fraction that is not converted into hydrogen use oil products, i.e. is connected to the general oil bus.
|
||||
|
||||
The energy demand for liquefaction of the hydrogen used for shipping can be `included <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L197>`_. If this option is selected, liquifaction will happen at the `node where the shipping demand occurs <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L2064>`_.
|
||||
The energy demand for liquefaction of the hydrogen used for shipping can be `included <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L197>`__. If this option is selected, liquifaction will happen at the `node where the shipping demand occurs <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/scripts/prepare_sector_network.py#L2064>`__.
|
||||
|
||||
.. _Carbon dioxide capture, usage and sequestration (CCU/S):
|
||||
|
||||
@ -600,12 +600,12 @@ For the following point source emissions, carbon capture is applicable:
|
||||
|
||||
• CHP plants using biomass or methane
|
||||
|
||||
• `Coal power plants <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L242>`_.
|
||||
• `Coal power plants <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L242>`__.
|
||||
|
||||
Point source emissions are captured assuming a capture rate, e.g. 90%, which can be specified in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L249>`_. The electricity and heat demand of process emission carbon capture
|
||||
Point source emissions are captured assuming a capture rate, e.g. 90%, which can be specified in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L249>`__. The electricity and heat demand of process emission carbon capture
|
||||
is currently ignored.
|
||||
|
||||
DAC (if `included <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L243>`_) includes the adsorption phase where electricity and heat consumptionsare required to assist the adsorption process and regenerate the adsorbent. It also includes the drying and compression of :math:`CO_2` prior to storage which consumes electricity and rejects heat.
|
||||
DAC (if `included <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L243>`__) includes the adsorption phase where electricity and heat consumptionsare required to assist the adsorption process and regenerate the adsorbent. It also includes the drying and compression of :math:`CO_2` prior to storage which consumes electricity and rejects heat.
|
||||
|
||||
*Carbon dioxide usage*
|
||||
|
||||
@ -614,8 +614,8 @@ naphtha). If captured carbon is used, the :math:`CO_2` emissions of the syntheti
|
||||
|
||||
*Carbon dioxide sequestration*
|
||||
|
||||
Captured :math:`CO_2` can also be sequestered underground up to an annual sequestration limit of 200 Mt :math:`_{CO_2}`/a. This limit can be chosen in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L246>`_. As stored carbon dioxide is modelled as a single node for Europe, :math:`CO_2` transport constraints are neglected. Since :math:`CO_2` sequestration is an immature technology, the cost assumption is defined in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L247>`_.
|
||||
Captured :math:`CO_2` can also be sequestered underground up to an annual sequestration limit of 200 Mt :math:`_{CO_2}`/a. This limit can be chosen in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L246>`__. As stored carbon dioxide is modelled as a single node for Europe, :math:`CO_2` transport constraints are neglected. Since :math:`CO_2` sequestration is an immature technology, the cost assumption is defined in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L247>`__.
|
||||
|
||||
*Carbon dioxide transport*
|
||||
|
||||
Carbon dioxide can be modelled as a single node for Europe (in this case, :math:`CO_2` transport constraints are neglected). A network for modelling the transport of :math:`CO_2` among the different nodes can also be created if selected in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L248>`_.
|
||||
Carbon dioxide can be modelled as a single node for Europe (in this case, :math:`CO_2` transport constraints are neglected). A network for modelling the transport of :math:`CO_2` among the different nodes can also be created if selected in the `config file <https://github.com/PyPSA/pypsa-eur-sec/blob/3daff49c9999ba7ca7534df4e587e1d516044fc3/config.default.yaml#L248>`__.
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
Support
|
||||
#######################
|
||||
|
||||
* In case of code-related **questions**, please post on `stack overflow <https://stackoverflow.com/questions/tagged/pypsa>`_.
|
||||
* For non-programming related and more general questions please refer to the `mailing list <https://groups.google.com/group/pypsa>`_.
|
||||
* To **discuss** with other PyPSA users, organise projects, share news, and get in touch with the community you can use the `discord server <https://discord.gg/AnuJBk23FU>`_.
|
||||
* For **bugs and feature requests**, please use the `issue tracker <https://github.com/PyPSA/pypsa-eur/issues>`_.
|
||||
* We strongly welcome anyone interested in providing **contributions** to this project. If you have any ideas, suggestions or encounter problems, feel invited to file issues or make pull requests on `Github <https://github.com/PyPSA/PyPSA>`_. For further information on how to contribute, please refer to :ref:`contributing`.
|
||||
* In case of code-related **questions**, please post on `stack overflow <https://stackoverflow.com/questions/tagged/pypsa>`__.
|
||||
* For non-programming related and more general questions please refer to the `mailing list <https://groups.google.com/group/pypsa>`__.
|
||||
* To **discuss** with other PyPSA users, organise projects, share news, and get in touch with the community you can use the `discord server <https://discord.gg/AnuJBk23FU>`__.
|
||||
* For **bugs and feature requests**, please use the `issue tracker <https://github.com/PyPSA/pypsa-eur/issues>`__.
|
||||
* We strongly welcome anyone interested in providing **contributions** to this project. If you have any ideas, suggestions or encounter problems, feel invited to file issues or make pull requests on `Github <https://github.com/PyPSA/PyPSA>`__. For further information on how to contribute, please refer to :ref:`contributing`.
|
||||
|
160
doc/tutorial.rst
160
doc/tutorial.rst
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -133,51 +133,50 @@ This triggers a workflow of multiple preceding jobs that depend on each rule's i
|
||||
graph[bgcolor=white, margin=0];
|
||||
node[shape=box, style=rounded, fontname=sans, fontsize=10, penwidth=2];
|
||||
edge[penwidth=2, color=grey];
|
||||
0[label = "solve_network", color = "0.33 0.6 0.85", style="rounded"];
|
||||
1[label = "prepare_network\nll: copt\nopts: Co2L-24H", color = "0.03 0.6 0.85", style="rounded"];
|
||||
2[label = "add_extra_components", color = "0.45 0.6 0.85", style="rounded"];
|
||||
3[label = "cluster_network\nclusters: 6", color = "0.46 0.6 0.85", style="rounded"];
|
||||
4[label = "simplify_network\nsimpl: ", color = "0.52 0.6 0.85", style="rounded"];
|
||||
5[label = "add_electricity", color = "0.55 0.6 0.85", style="rounded"];
|
||||
6[label = "build_renewable_profiles\ntechnology: solar", color = "0.15 0.6 0.85", style="rounded"];
|
||||
7[label = "base_network", color = "0.37 0.6 0.85", style="rounded,dashed"];
|
||||
8[label = "build_shapes", color = "0.07 0.6 0.85", style="rounded,dashed"];
|
||||
9[label = "retrieve_databundle", color = "0.60 0.6 0.85", style="rounded"];
|
||||
10[label = "retrieve_natura_raster", color = "0.42 0.6 0.85", style="rounded"];
|
||||
11[label = "build_bus_regions", color = "0.09 0.6 0.85", style="rounded,dashed"];
|
||||
12[label = "build_renewable_profiles\ntechnology: onwind", color = "0.15 0.6 0.85", style="rounded"];
|
||||
13[label = "build_renewable_profiles\ntechnology: offwind-ac", color = "0.15 0.6 0.85", style="rounded"];
|
||||
14[label = "build_ship_raster", color = "0.02 0.6 0.85", style="rounded"];
|
||||
15[label = "retrieve_ship_raster", color = "0.40 0.6 0.85", style="rounded"];
|
||||
16[label = "build_renewable_profiles\ntechnology: offwind-dc", color = "0.15 0.6 0.85", style="rounded"];
|
||||
17[label = "build_line_rating", color = "0.32 0.6 0.85", style="rounded"];
|
||||
18[label = "retrieve_cost_data\nyear: 2030", color = "0.50 0.6 0.85", style="rounded"];
|
||||
19[label = "build_powerplants", color = "0.64 0.6 0.85", style="rounded,dashed"];
|
||||
20[label = "build_electricity_demand", color = "0.13 0.6 0.85", style="rounded,dashed"];
|
||||
21[label = "retrieve_electricity_demand", color = "0.31 0.6 0.85", style="rounded"];
|
||||
22[label = "copy_config", color = "0.23 0.6 0.85", style="rounded"];
|
||||
0[label = "solve_network", color = "0.24 0.6 0.85", style="rounded"];
|
||||
1[label = "prepare_network\nll: vopt\nopts: Co2L-3H", color = "0.10 0.6 0.85", style="rounded"];
|
||||
2[label = "add_extra_components", color = "0.33 0.6 0.85", style="rounded"];
|
||||
3[label = "cluster_network\nclusters: 128", color = "0.59 0.6 0.85", style="rounded"];
|
||||
4[label = "simplify_network\nsimpl: ", color = "0.18 0.6 0.85", style="rounded"];
|
||||
5[label = "add_electricity", color = "0.48 0.6 0.85", style="rounded"];
|
||||
6[label = "build_renewable_profiles\ntechnology: solar", color = "0.29 0.6 0.85", style="rounded"];
|
||||
7[label = "base_network", color = "0.30 0.6 0.85", style="rounded"];
|
||||
8[label = "build_shapes", color = "0.61 0.6 0.85", style="rounded"];
|
||||
9[label = "retrieve_databundle", color = "0.06 0.6 0.85", style="rounded"];
|
||||
10[label = "retrieve_natura_raster", color = "0.03 0.6 0.85", style="rounded"];
|
||||
11[label = "retrieve_cutout\ncutout: europe-2013-sarah", color = "0.50 0.6 0.85", style="rounded"];
|
||||
12[label = "build_renewable_profiles\ntechnology: onwind", color = "0.29 0.6 0.85", style="rounded"];
|
||||
13[label = "retrieve_cutout\ncutout: europe-2013-era5", color = "0.50 0.6 0.85", style="rounded"];
|
||||
14[label = "build_renewable_profiles\ntechnology: offwind-ac", color = "0.29 0.6 0.85", style="rounded"];
|
||||
15[label = "build_ship_raster", color = "0.16 0.6 0.85", style="rounded"];
|
||||
16[label = "retrieve_ship_raster", color = "0.53 0.6 0.85", style="rounded"];
|
||||
17[label = "build_renewable_profiles\ntechnology: offwind-dc", color = "0.29 0.6 0.85", style="rounded"];
|
||||
18[label = "build_hydro_profile", color = "0.47 0.6 0.85", style="rounded"];
|
||||
19[label = "retrieve_cost_data\nyear: 2030", color = "0.21 0.6 0.85", style="rounded"];
|
||||
20[label = "build_powerplants", color = "0.56 0.6 0.85", style="rounded"];
|
||||
21[label = "build_electricity_demand", color = "0.54 0.6 0.85", style="rounded"];
|
||||
22[label = "retrieve_electricity_demand", color = "0.34 0.6 0.85", style="rounded"];
|
||||
23[label = "retrieve_synthetic_electricity_demand", color = "0.65 0.6 0.85", style="rounded"];
|
||||
1 -> 0
|
||||
22 -> 0
|
||||
2 -> 1
|
||||
18 -> 1
|
||||
19 -> 1
|
||||
3 -> 2
|
||||
18 -> 2
|
||||
19 -> 2
|
||||
4 -> 3
|
||||
18 -> 3
|
||||
19 -> 3
|
||||
5 -> 4
|
||||
18 -> 4
|
||||
11 -> 4
|
||||
19 -> 4
|
||||
7 -> 4
|
||||
6 -> 5
|
||||
12 -> 5
|
||||
13 -> 5
|
||||
16 -> 5
|
||||
7 -> 5
|
||||
14 -> 5
|
||||
17 -> 5
|
||||
18 -> 5
|
||||
11 -> 5
|
||||
7 -> 5
|
||||
19 -> 5
|
||||
9 -> 5
|
||||
20 -> 5
|
||||
9 -> 5
|
||||
21 -> 5
|
||||
8 -> 5
|
||||
7 -> 6
|
||||
9 -> 6
|
||||
@ -186,29 +185,30 @@ This triggers a workflow of multiple preceding jobs that depend on each rule's i
|
||||
11 -> 6
|
||||
8 -> 7
|
||||
9 -> 8
|
||||
8 -> 11
|
||||
7 -> 11
|
||||
7 -> 12
|
||||
9 -> 12
|
||||
10 -> 12
|
||||
8 -> 12
|
||||
11 -> 12
|
||||
7 -> 13
|
||||
9 -> 13
|
||||
10 -> 13
|
||||
14 -> 13
|
||||
8 -> 13
|
||||
11 -> 13
|
||||
13 -> 12
|
||||
7 -> 14
|
||||
9 -> 14
|
||||
10 -> 14
|
||||
15 -> 14
|
||||
7 -> 16
|
||||
9 -> 16
|
||||
10 -> 16
|
||||
14 -> 16
|
||||
8 -> 16
|
||||
11 -> 16
|
||||
8 -> 14
|
||||
13 -> 14
|
||||
16 -> 15
|
||||
13 -> 15
|
||||
7 -> 17
|
||||
7 -> 19
|
||||
21 -> 20
|
||||
9 -> 17
|
||||
10 -> 17
|
||||
15 -> 17
|
||||
8 -> 17
|
||||
13 -> 17
|
||||
8 -> 18
|
||||
13 -> 18
|
||||
7 -> 20
|
||||
22 -> 21
|
||||
23 -> 21
|
||||
}
|
||||
|
||||
|
|
||||
@ -218,26 +218,26 @@ In the terminal, this will show up as a list of jobs to be run:
|
||||
.. code:: bash
|
||||
|
||||
Building DAG of jobs...
|
||||
job count min threads max threads
|
||||
------------------------ ------- ------------- -------------
|
||||
add_electricity 1 1 1
|
||||
add_extra_components 1 1 1
|
||||
base_network 1 1 1
|
||||
build_bus_regions 1 1 1
|
||||
build_hydro_profile 1 1 1
|
||||
build_electricity_demand 1 1 1
|
||||
build_powerplants 1 1 1
|
||||
build_renewable_profiles 4 1 1
|
||||
build_shapes 1 1 1
|
||||
build_ship_raster 1 1 1
|
||||
cluster_network 1 1 1
|
||||
prepare_network 1 1 1
|
||||
retrieve_cost_data 1 1 1
|
||||
retrieve_databundle 1 1 1
|
||||
retrieve_natura_raster 1 1 1
|
||||
simplify_network 1 1 1
|
||||
solve_network 1 1 1
|
||||
total 20 1 1
|
||||
Job stats:
|
||||
job count
|
||||
------------------------------------- -------
|
||||
add_electricity 1
|
||||
add_extra_components 1
|
||||
build_line_rating 1
|
||||
build_renewable_profiles 4
|
||||
build_ship_raster 1
|
||||
cluster_network 1
|
||||
prepare_network 1
|
||||
retrieve_cost_data 1
|
||||
retrieve_cutout 1
|
||||
retrieve_databundle 1
|
||||
retrieve_electricity_demand 1
|
||||
retrieve_natura_raster 1
|
||||
retrieve_ship_raster 1
|
||||
retrieve_synthetic_electricity_demand 1
|
||||
simplify_network 1
|
||||
solve_network 1
|
||||
total 19
|
||||
|
||||
|
||||
``snakemake`` then runs these jobs in the correct order.
|
||||
@ -246,16 +246,16 @@ A job (here ``simplify_network``) will display its attributes and normally some
|
||||
|
||||
.. code:: bash
|
||||
|
||||
[Mon Jan 1 00:00:00 2023]
|
||||
[Mon Feb 19 17:06:17 2024]
|
||||
rule simplify_network:
|
||||
input: networks/elec.nc, resources/costs.csv, resources/regions_onshore.geojson, resources/regions_offshore.geojson
|
||||
output: networks/elec_s.nc, resources/regions_onshore_elec_s.geojson, resources/regions_offshore_elec_s.geojson, resources/busmap_elec_s.csv, resources/connection_costs_s.csv
|
||||
log: logs/simplify_network/elec_s.log
|
||||
input: resources/test/networks/elec.nc, data/costs_2030.csv, resources/test/regions_onshore.geojson, resources/test/regions_offshore.geojson
|
||||
output: resources/test/networks/elec_s.nc, resources/test/regions_onshore_elec_s.geojson, resources/test/regions_offshore_elec_s.geojson, resources/test/busmap_elec_s.csv, resources/test/connection_costs_s.csv
|
||||
log: logs/test-elec/simplify_network/elec_s.log
|
||||
jobid: 4
|
||||
benchmark: benchmarks/simplify_network/elec_s
|
||||
reason: Missing output files: resources/busmap_elec_s.csv, resources/regions_onshore_elec_s.geojson, networks/elec_s.nc, resources/regions_offshore_elec_s.geojson; Input files updated by another job: resources/regions_offshore.geojson, resources/regions_onshore.geojson, resources/costs.csv, networks/elec.nc
|
||||
benchmark: benchmarks/test-elec/simplify_network/elec_s
|
||||
reason: Missing output files: resources/test/regions_offshore_elec_s.geojson, resources/test/busmap_elec_s.csv, resources/test/regions_onshore_elec_s.geojson, resources/test/networks/elec_s.nc; Input files updated by another job: resources/test/regions_offshore.geojson, resources/test/networks/elec.nc, resources/test/regions_onshore.geojson, data/costs_2030.csv
|
||||
wildcards: simpl=
|
||||
resources: tmpdir=/tmp, mem_mb=4000, mem_mib=3815
|
||||
resources: tmpdir=/tmp, mem_mb=12000, mem_mib=11445
|
||||
|
||||
Once the whole worktree is finished, it should state so in the terminal.
|
||||
|
||||
@ -313,4 +313,4 @@ Jupyter Notebooks).
|
||||
|
||||
n = pypsa.Network("results/networks/elec_s_6_ec_lcopt_Co2L-24H.nc")
|
||||
|
||||
For inspiration, read the `examples section in the PyPSA documentation <https://pypsa.readthedocs.io/en/latest/examples-basic.html>`_.
|
||||
For inspiration, read the `examples section in the PyPSA documentation <https://pypsa.readthedocs.io/en/latest/examples-basic.html>`__.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -9,7 +9,7 @@ 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 behaviour 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>`_.
|
||||
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:
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
..
|
||||
SPDX-FileCopyrightText: 2019-2023 The PyPSA-Eur Authors
|
||||
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
|
||||
|
||||
SPDX-License-Identifier: CC-BY-4.0
|
||||
|
||||
@ -17,7 +17,7 @@ what data to retrieve and what files to produce.
|
||||
|
||||
.. note::
|
||||
Detailed explanations of how wildcards work in ``snakemake`` can be found in the
|
||||
`relevant section of the documentation <https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#wildcards>`_.
|
||||
`relevant section of the documentation <https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#wildcards>`__.
|
||||
|
||||
.. _cutout_wc:
|
||||
|
||||
|
@ -5,492 +5,468 @@
|
||||
name: pypsa-eur
|
||||
channels:
|
||||
- bioconda
|
||||
- gurobi
|
||||
- http://conda.anaconda.org/gurobi
|
||||
- conda-forge
|
||||
- defaults
|
||||
dependencies:
|
||||
- _libgcc_mutex=0.1
|
||||
- _openmp_mutex=4.5
|
||||
- affine=2.4.0
|
||||
- alsa-lib=1.2.10
|
||||
- ampl-mp=3.1.0
|
||||
- amply=0.1.6
|
||||
- anyio=4.2.0
|
||||
- appdirs=1.4.4
|
||||
- argon2-cffi=23.1.0
|
||||
- argon2-cffi-bindings=21.2.0
|
||||
- arrow=1.3.0
|
||||
- asttokens=2.4.1
|
||||
- async-lru=2.0.4
|
||||
- atk-1.0=2.38.0
|
||||
- atlite=0.2.12
|
||||
- attr=2.5.1
|
||||
- attrs=23.2.0
|
||||
- aws-c-auth=0.7.8
|
||||
- aws-c-cal=0.6.9
|
||||
- aws-c-common=0.9.10
|
||||
- aws-c-compression=0.2.17
|
||||
- aws-c-event-stream=0.3.2
|
||||
- aws-c-http=0.7.15
|
||||
- aws-c-io=0.13.36
|
||||
- aws-c-mqtt=0.10.0
|
||||
- aws-c-s3=0.4.7
|
||||
- aws-c-sdkutils=0.1.13
|
||||
- aws-checksums=0.1.17
|
||||
- aws-crt-cpp=0.25.1
|
||||
- aws-sdk-cpp=1.11.210
|
||||
- babel=2.14.0
|
||||
- beautifulsoup4=4.12.2
|
||||
- bleach=6.1.0
|
||||
- blosc=1.21.5
|
||||
- bokeh=3.3.2
|
||||
- bottleneck=1.3.7
|
||||
- branca=0.7.0
|
||||
- brotli=1.1.0
|
||||
- brotli-bin=1.1.0
|
||||
- brotli-python=1.1.0
|
||||
- bzip2=1.0.8
|
||||
- c-ares=1.24.0
|
||||
- c-blosc2=2.12.0
|
||||
- ca-certificates=2023.11.17
|
||||
- cached-property=1.5.2
|
||||
- cached_property=1.5.2
|
||||
- cairo=1.18.0
|
||||
- cartopy=0.22.0
|
||||
- cdsapi=0.6.1
|
||||
- certifi=2023.11.17
|
||||
- cffi=1.16.0
|
||||
- cfitsio=4.3.1
|
||||
- cftime=1.6.3
|
||||
- charset-normalizer=3.3.2
|
||||
- click=8.1.7
|
||||
- click-plugins=1.1.1
|
||||
- cligj=0.7.2
|
||||
- cloudpickle=3.0.0
|
||||
- coin-or-cbc=2.10.10
|
||||
- coin-or-cgl=0.60.7
|
||||
- coin-or-clp=1.17.8
|
||||
- coin-or-osi=0.108.8
|
||||
- coin-or-utils=2.11.9
|
||||
- coincbc=2.10.10
|
||||
- colorama=0.4.6
|
||||
- comm=0.1.4
|
||||
- configargparse=1.7
|
||||
- connection_pool=0.0.3
|
||||
- contourpy=1.2.0
|
||||
- country_converter=1.2
|
||||
- cycler=0.12.1
|
||||
- cytoolz=0.12.2
|
||||
- dask=2023.12.1
|
||||
- dask-core=2023.12.1
|
||||
- datrie=0.8.2
|
||||
- dbus=1.13.6
|
||||
- debugpy=1.8.0
|
||||
- decorator=5.1.1
|
||||
- defusedxml=0.7.1
|
||||
- deprecation=2.1.0
|
||||
- descartes=1.1.0
|
||||
- distributed=2023.12.1
|
||||
- distro=1.8.0
|
||||
- docutils=0.20.1
|
||||
- dpath=2.1.6
|
||||
- entrypoints=0.4
|
||||
- entsoe-py=0.6.1
|
||||
- et_xmlfile=1.1.0
|
||||
- exceptiongroup=1.2.0
|
||||
- executing=2.0.1
|
||||
- expat=2.5.0
|
||||
- fiona=1.9.5
|
||||
- folium=0.15.1
|
||||
- font-ttf-dejavu-sans-mono=2.37
|
||||
- font-ttf-inconsolata=3.000
|
||||
- font-ttf-source-code-pro=2.038
|
||||
- font-ttf-ubuntu=0.83
|
||||
- fontconfig=2.14.2
|
||||
- fonts-conda-ecosystem=1
|
||||
- fonts-conda-forge=1
|
||||
- fonttools=4.47.0
|
||||
- fqdn=1.5.1
|
||||
- freetype=2.12.1
|
||||
- freexl=2.0.0
|
||||
- fribidi=1.0.10
|
||||
- fsspec=2023.12.2
|
||||
- gdal=3.7.3
|
||||
- gdk-pixbuf=2.42.10
|
||||
- geographiclib=1.52
|
||||
- geojson-rewind=1.1.0
|
||||
- geopandas=0.14.1
|
||||
- geopandas-base=0.14.1
|
||||
- geopy=2.4.1
|
||||
- geos=3.12.1
|
||||
- geotiff=1.7.1
|
||||
- gettext=0.21.1
|
||||
- gflags=2.2.2
|
||||
- giflib=5.2.1
|
||||
- gitdb=4.0.11
|
||||
- gitpython=3.1.40
|
||||
- glib=2.78.3
|
||||
- glib-tools=2.78.3
|
||||
- glog=0.6.0
|
||||
- glpk=5.0
|
||||
- gmp=6.3.0
|
||||
- graphite2=1.3.13
|
||||
- graphviz=9.0.0
|
||||
- gst-plugins-base=1.22.8
|
||||
- gstreamer=1.22.8
|
||||
- gtk2=2.24.33
|
||||
- gts=0.7.6
|
||||
- gurobi=11.0.0
|
||||
- harfbuzz=8.3.0
|
||||
- hdf4=4.2.15
|
||||
- hdf5=1.14.3
|
||||
- humanfriendly=10.0
|
||||
- icu=73.2
|
||||
- idna=3.6
|
||||
- importlib-metadata=7.0.1
|
||||
- importlib_metadata=7.0.1
|
||||
- importlib_resources=6.1.1
|
||||
- iniconfig=2.0.0
|
||||
- ipopt=3.14.13
|
||||
- ipykernel=6.28.0
|
||||
- ipython=8.19.0
|
||||
- ipywidgets=8.1.1
|
||||
- isoduration=20.11.0
|
||||
- jedi=0.19.1
|
||||
- jinja2=3.1.2
|
||||
- joblib=1.3.2
|
||||
- json-c=0.17
|
||||
- json5=0.9.14
|
||||
- jsonpointer=2.4
|
||||
- jsonschema=4.20.0
|
||||
- jsonschema-specifications=2023.12.1
|
||||
- jsonschema-with-format-nongpl=4.20.0
|
||||
- jupyter=1.0.0
|
||||
- jupyter-lsp=2.2.1
|
||||
- jupyter_client=8.6.0
|
||||
- jupyter_console=6.6.3
|
||||
- jupyter_core=5.6.1
|
||||
- jupyter_events=0.9.0
|
||||
- jupyter_server=2.12.1
|
||||
- jupyter_server_terminals=0.5.1
|
||||
- jupyterlab=4.0.10
|
||||
- jupyterlab_pygments=0.3.0
|
||||
- jupyterlab_server=2.25.2
|
||||
- jupyterlab_widgets=3.0.9
|
||||
- kealib=1.5.3
|
||||
- keyutils=1.6.1
|
||||
- kiwisolver=1.4.5
|
||||
- krb5=1.21.2
|
||||
- lame=3.100
|
||||
- lcms2=2.16
|
||||
- ld_impl_linux-64=2.40
|
||||
- lerc=4.0.0
|
||||
- libabseil=20230802.1
|
||||
- libaec=1.1.2
|
||||
- libarchive=3.7.2
|
||||
- libarrow=14.0.2
|
||||
- libarrow-acero=14.0.2
|
||||
- libarrow-dataset=14.0.2
|
||||
- libarrow-flight=14.0.2
|
||||
- libarrow-flight-sql=14.0.2
|
||||
- libarrow-gandiva=14.0.2
|
||||
- libarrow-substrait=14.0.2
|
||||
- libblas=3.9.0
|
||||
- libboost-headers=1.84.0
|
||||
- libbrotlicommon=1.1.0
|
||||
- libbrotlidec=1.1.0
|
||||
- libbrotlienc=1.1.0
|
||||
- libcap=2.69
|
||||
- libcblas=3.9.0
|
||||
- libclang=15.0.7
|
||||
- libclang13=15.0.7
|
||||
- libcrc32c=1.1.2
|
||||
- libcups=2.3.3
|
||||
- libcurl=8.5.0
|
||||
- libdeflate=1.19
|
||||
- libedit=3.1.20191231
|
||||
- libev=4.33
|
||||
- libevent=2.1.12
|
||||
- libexpat=2.5.0
|
||||
- libffi=3.4.2
|
||||
- libflac=1.4.3
|
||||
- libgcc-ng=13.2.0
|
||||
- libgcrypt=1.10.3
|
||||
- libgd=2.3.3
|
||||
- libgdal=3.7.3
|
||||
- libgfortran-ng=13.2.0
|
||||
- libgfortran5=13.2.0
|
||||
- libglib=2.78.3
|
||||
- libgomp=13.2.0
|
||||
- libgoogle-cloud=2.12.0
|
||||
- libgpg-error=1.47
|
||||
- libgrpc=1.59.3
|
||||
- libhwloc=2.9.1
|
||||
- libiconv=1.17
|
||||
- libjpeg-turbo=3.0.0
|
||||
- libkml=1.3.0
|
||||
- liblapack=3.9.0
|
||||
- liblapacke=3.9.0
|
||||
- libllvm15=15.0.7
|
||||
- libnetcdf=4.9.2
|
||||
- libnghttp2=1.58.0
|
||||
- libnl=3.9.0
|
||||
- libnsl=2.0.1
|
||||
- libnuma=2.0.16
|
||||
- libogg=1.3.4
|
||||
- libopenblas=0.3.25
|
||||
- libopus=1.3.1
|
||||
- libparquet=14.0.2
|
||||
- libpng=1.6.39
|
||||
- libpq=16.1
|
||||
- libprotobuf=4.24.4
|
||||
- libre2-11=2023.06.02
|
||||
- librsvg=2.56.3
|
||||
- librttopo=1.1.0
|
||||
- libsndfile=1.2.2
|
||||
- libsodium=1.0.18
|
||||
- libspatialindex=1.9.3
|
||||
- libspatialite=5.1.0
|
||||
- libspral=2023.08.02
|
||||
- libsqlite=3.44.2
|
||||
- libssh2=1.11.0
|
||||
- libstdcxx-ng=13.2.0
|
||||
- libsystemd0=255
|
||||
- libthrift=0.19.0
|
||||
- libtiff=4.6.0
|
||||
- libutf8proc=2.8.0
|
||||
- libuuid=2.38.1
|
||||
- libvorbis=1.3.7
|
||||
- libwebp=1.3.2
|
||||
- libwebp-base=1.3.2
|
||||
- libxcb=1.15
|
||||
- libxcrypt=4.4.36
|
||||
- libxkbcommon=1.6.0
|
||||
- libxml2=2.11.6
|
||||
- libxslt=1.1.37
|
||||
- libzip=1.10.1
|
||||
- libzlib=1.2.13
|
||||
- linopy=0.3.2
|
||||
- locket=1.0.0
|
||||
- lxml=4.9.3
|
||||
- lz4=4.3.2
|
||||
- lz4-c=1.9.4
|
||||
- lzo=2.10
|
||||
- mapclassify=2.6.1
|
||||
- markupsafe=2.1.3
|
||||
- matplotlib=3.8.2
|
||||
- matplotlib-base=3.8.2
|
||||
- matplotlib-inline=0.1.6
|
||||
- memory_profiler=0.61.0
|
||||
- metis=5.1.0
|
||||
- minizip=4.0.4
|
||||
- mistune=3.0.2
|
||||
- mpg123=1.32.3
|
||||
- msgpack-python=1.0.7
|
||||
- mumps-include=5.2.1
|
||||
- mumps-seq=5.2.1
|
||||
- munch=4.0.0
|
||||
- munkres=1.1.4
|
||||
- mysql-common=8.0.33
|
||||
- mysql-libs=8.0.33
|
||||
- nbclient=0.8.0
|
||||
- nbconvert=7.14.0
|
||||
- nbconvert-core=7.14.0
|
||||
- nbconvert-pandoc=7.14.0
|
||||
- nbformat=5.9.2
|
||||
- ncurses=6.4
|
||||
- nest-asyncio=1.5.8
|
||||
- netcdf4=1.6.5
|
||||
- networkx=3.2.1
|
||||
- nomkl=1.0
|
||||
- notebook=7.0.6
|
||||
- notebook-shim=0.2.3
|
||||
- nspr=4.35
|
||||
- nss=3.96
|
||||
- numexpr=2.8.8
|
||||
- numpy=1.26.2
|
||||
- openjdk=21.0.1
|
||||
- openjpeg=2.5.0
|
||||
- openpyxl=3.1.2
|
||||
- openssl=3.2.0
|
||||
- orc=1.9.2
|
||||
- overrides=7.4.0
|
||||
- packaging=23.2
|
||||
- pandas=2.1.4
|
||||
- pandoc=3.1.3
|
||||
- pandocfilters=1.5.0
|
||||
- pango=1.50.14
|
||||
- parso=0.8.3
|
||||
- partd=1.4.1
|
||||
- patsy=0.5.5
|
||||
- pcre2=10.42
|
||||
- pexpect=4.8.0
|
||||
- pickleshare=0.7.5
|
||||
- pillow=10.2.0
|
||||
- pip=23.3.2
|
||||
- pixman=0.42.2
|
||||
- pkgutil-resolve-name=1.3.10
|
||||
- plac=1.4.2
|
||||
- platformdirs=4.1.0
|
||||
- pluggy=1.3.0
|
||||
- ply=3.11
|
||||
- poppler=23.12.0
|
||||
- poppler-data=0.4.12
|
||||
- postgresql=16.1
|
||||
- powerplantmatching=0.5.8
|
||||
- progressbar2=4.3.2
|
||||
- proj=9.3.0
|
||||
- prometheus_client=0.19.0
|
||||
- prompt-toolkit=3.0.42
|
||||
- prompt_toolkit=3.0.42
|
||||
- psutil=5.9.7
|
||||
- pthread-stubs=0.4
|
||||
- ptyprocess=0.7.0
|
||||
- pulp=2.7.0
|
||||
- pulseaudio-client=16.1
|
||||
- pure_eval=0.2.2
|
||||
- py-cpuinfo=9.0.0
|
||||
- pyarrow=14.0.2
|
||||
- pyarrow-hotfix=0.6
|
||||
- pycountry=22.3.5
|
||||
- pycparser=2.21
|
||||
- pygments=2.17.2
|
||||
- pyomo=6.6.1
|
||||
- pyparsing=3.1.1
|
||||
- pyproj=3.6.1
|
||||
- pypsa=0.26.2
|
||||
- pyqt=5.15.9
|
||||
- pyqt5-sip=12.12.2
|
||||
- pyshp=2.3.1
|
||||
- pysocks=1.7.1
|
||||
- pytables=3.9.2
|
||||
- pytest=7.4.4
|
||||
- python=3.11.7
|
||||
- python-dateutil=2.8.2
|
||||
- python-fastjsonschema=2.19.1
|
||||
- python-json-logger=2.0.7
|
||||
- python-tzdata=2023.4
|
||||
- python-utils=3.8.1
|
||||
- python_abi=3.11
|
||||
- pytz=2023.3.post1
|
||||
- pyxlsb=1.0.10
|
||||
- pyyaml=6.0.1
|
||||
- pyzmq=25.1.2
|
||||
- qt-main=5.15.8
|
||||
- qtconsole-base=5.5.1
|
||||
- qtpy=2.4.1
|
||||
- rasterio=1.3.9
|
||||
- rdma-core=49.0
|
||||
- re2=2023.06.02
|
||||
- readline=8.2
|
||||
- referencing=0.32.0
|
||||
- requests=2.31.0
|
||||
- reretry=0.11.8
|
||||
- rfc3339-validator=0.1.4
|
||||
- rfc3986-validator=0.1.1
|
||||
- rioxarray=0.15.0
|
||||
- rpds-py=0.16.2
|
||||
- rtree=1.1.0
|
||||
- s2n=1.4.1
|
||||
- scikit-learn=1.3.2
|
||||
- scipy=1.11.4
|
||||
- scotch=6.0.9
|
||||
- seaborn=0.13.0
|
||||
- seaborn-base=0.13.0
|
||||
- send2trash=1.8.2
|
||||
- setuptools=69.0.3
|
||||
- setuptools-scm=8.0.4
|
||||
- setuptools_scm=8.0.4
|
||||
- shapely=2.0.2
|
||||
- sip=6.7.12
|
||||
- six=1.16.0
|
||||
- smart_open=6.4.0
|
||||
- smmap=5.0.0
|
||||
- snakemake-minimal=7.32.4
|
||||
- snappy=1.1.10
|
||||
- sniffio=1.3.0
|
||||
- snuggs=1.4.7
|
||||
- sortedcontainers=2.4.0
|
||||
- soupsieve=2.5
|
||||
- sqlite=3.44.2
|
||||
- stack_data=0.6.2
|
||||
- statsmodels=0.14.1
|
||||
- stopit=1.1.2
|
||||
- tabula-py=2.7.0
|
||||
- tabulate=0.9.0
|
||||
- tblib=3.0.0
|
||||
- terminado=0.18.0
|
||||
- threadpoolctl=3.2.0
|
||||
- throttler=1.2.2
|
||||
- tiledb=2.18.2
|
||||
- tinycss2=1.2.1
|
||||
- tk=8.6.13
|
||||
- toml=0.10.2
|
||||
- tomli=2.0.1
|
||||
- toolz=0.12.0
|
||||
- toposort=1.10
|
||||
- tornado=6.3.3
|
||||
- tqdm=4.66.1
|
||||
- traitlets=5.14.1
|
||||
- types-python-dateutil=2.8.19.14
|
||||
- typing-extensions=4.9.0
|
||||
- typing_extensions=4.9.0
|
||||
- typing_utils=0.1.0
|
||||
- tzcode=2023d
|
||||
- tzdata=2023d
|
||||
- ucx=1.15.0
|
||||
- unidecode=1.3.7
|
||||
- unixodbc=2.3.12
|
||||
- uri-template=1.3.0
|
||||
- uriparser=0.9.7
|
||||
- urllib3=2.1.0
|
||||
- validators=0.22.0
|
||||
- wcwidth=0.2.12
|
||||
- webcolors=1.13
|
||||
- webencodings=0.5.1
|
||||
- websocket-client=1.7.0
|
||||
- wheel=0.42.0
|
||||
- widgetsnbextension=4.0.9
|
||||
- wrapt=1.16.0
|
||||
- xarray=2023.12.0
|
||||
- xcb-util=0.4.0
|
||||
- xcb-util-image=0.4.0
|
||||
- xcb-util-keysyms=0.4.0
|
||||
- xcb-util-renderutil=0.3.9
|
||||
- xcb-util-wm=0.4.1
|
||||
- xerces-c=3.2.5
|
||||
- xkeyboard-config=2.40
|
||||
- xlrd=2.0.1
|
||||
- xorg-fixesproto=5.0
|
||||
- xorg-inputproto=2.3.2
|
||||
- xorg-kbproto=1.0.7
|
||||
- xorg-libice=1.1.1
|
||||
- xorg-libsm=1.2.4
|
||||
- xorg-libx11=1.8.7
|
||||
- xorg-libxau=1.0.11
|
||||
- xorg-libxdmcp=1.1.3
|
||||
- xorg-libxext=1.3.4
|
||||
- xorg-libxfixes=5.0.3
|
||||
- xorg-libxi=1.7.10
|
||||
- xorg-libxrender=0.9.11
|
||||
- xorg-libxt=1.3.0
|
||||
- xorg-libxtst=1.2.3
|
||||
- xorg-recordproto=1.14.2
|
||||
- xorg-renderproto=0.11.1
|
||||
- xorg-xextproto=7.3.0
|
||||
- xorg-xf86vidmodeproto=2.3.1
|
||||
- xorg-xproto=7.0.31
|
||||
- xyzservices=2023.10.1
|
||||
- xz=5.2.6
|
||||
- yaml=0.2.5
|
||||
- yte=1.5.4
|
||||
- zeromq=4.3.5
|
||||
- zict=3.0.0
|
||||
- zipp=3.17.0
|
||||
- zlib=1.2.13
|
||||
- zlib-ng=2.0.7
|
||||
- zstd=1.5.5
|
||||
- _libgcc_mutex=0.1=conda_forge
|
||||
- _openmp_mutex=4.5=2_gnu
|
||||
- affine=2.4.0=pyhd8ed1ab_0
|
||||
- alsa-lib=1.2.11=hd590300_1
|
||||
- ampl-mp=3.1.0=h2cc385e_1006
|
||||
- amply=0.1.6=pyhd8ed1ab_0
|
||||
- appdirs=1.4.4=pyh9f0ad1d_0
|
||||
- argparse-dataclass=2.0.0=pyhd8ed1ab_0
|
||||
- asttokens=2.4.1=pyhd8ed1ab_0
|
||||
- atk-1.0=2.38.0=h04ea711_2
|
||||
- atlite=0.2.12=pyhd8ed1ab_0
|
||||
- attr=2.5.1=h166bdaf_1
|
||||
- attrs=23.2.0=pyh71513ae_0
|
||||
- aws-c-auth=0.7.18=he0b1f16_0
|
||||
- aws-c-cal=0.6.11=heb1d5e4_0
|
||||
- aws-c-common=0.9.15=hd590300_0
|
||||
- aws-c-compression=0.2.18=hce8ee76_3
|
||||
- aws-c-event-stream=0.4.2=h01f5eca_8
|
||||
- aws-c-http=0.8.1=hdb68c23_10
|
||||
- aws-c-io=0.14.7=hbfbeace_6
|
||||
- aws-c-mqtt=0.10.4=h50844eb_0
|
||||
- aws-c-s3=0.5.7=h6be9164_2
|
||||
- aws-c-sdkutils=0.1.15=hce8ee76_3
|
||||
- aws-checksums=0.1.18=hce8ee76_3
|
||||
- aws-crt-cpp=0.26.8=h2150271_2
|
||||
- aws-sdk-cpp=1.11.267=hddb5a97_7
|
||||
- azure-core-cpp=1.11.1=h91d86a7_1
|
||||
- azure-identity-cpp=1.6.0=hf1915f5_1
|
||||
- azure-storage-blobs-cpp=12.10.0=h00ab1b0_1
|
||||
- azure-storage-common-cpp=12.5.0=h94269e2_4
|
||||
- beautifulsoup4=4.12.3=pyha770c72_0
|
||||
- blosc=1.21.5=hc2324a3_1
|
||||
- bokeh=3.4.1=pyhd8ed1ab_0
|
||||
- bottleneck=1.3.8=py311h1f0f07a_0
|
||||
- branca=0.7.2=pyhd8ed1ab_0
|
||||
- brotli=1.1.0=hd590300_1
|
||||
- brotli-bin=1.1.0=hd590300_1
|
||||
- brotli-python=1.1.0=py311hb755f60_1
|
||||
- bzip2=1.0.8=hd590300_5
|
||||
- c-ares=1.28.1=hd590300_0
|
||||
- c-blosc2=2.14.4=hb4ffafa_1
|
||||
- ca-certificates=2024.2.2=hbcca054_0
|
||||
- cads-api-client=1.0.0=pyhd8ed1ab_0
|
||||
- cairo=1.18.0=h3faef2a_0
|
||||
- cartopy=0.23.0=py311h320fe9a_0
|
||||
- cdsapi=0.7.0=pyhd8ed1ab_0
|
||||
- certifi=2024.2.2=pyhd8ed1ab_0
|
||||
- cffi=1.16.0=py311hb3a22ac_0
|
||||
- cfgv=3.3.1=pyhd8ed1ab_0
|
||||
- cfitsio=4.4.0=hbdc6101_1
|
||||
- cftime=1.6.3=py311h1f0f07a_0
|
||||
- charset-normalizer=3.3.2=pyhd8ed1ab_0
|
||||
- click=8.1.7=unix_pyh707e725_0
|
||||
- click-plugins=1.1.1=py_0
|
||||
- cligj=0.7.2=pyhd8ed1ab_1
|
||||
- cloudpickle=3.0.0=pyhd8ed1ab_0
|
||||
- coin-or-cbc=2.10.10=h9002f0b_0
|
||||
- coin-or-cgl=0.60.7=h516709c_0
|
||||
- coin-or-clp=1.17.8=h1ee7a9c_0
|
||||
- coin-or-osi=0.108.10=haf5fa05_0
|
||||
- coin-or-utils=2.11.11=hee58242_0
|
||||
- coincbc=2.10.10=0_metapackage
|
||||
- colorama=0.4.6=pyhd8ed1ab_0
|
||||
- conda-inject=1.3.1=pyhd8ed1ab_0
|
||||
- configargparse=1.7=pyhd8ed1ab_0
|
||||
- connection_pool=0.0.3=pyhd3deb0d_0
|
||||
- contourpy=1.2.1=py311h9547e67_0
|
||||
- country_converter=1.2=pyhd8ed1ab_0
|
||||
- cppad=20240000.4=h59595ed_0
|
||||
- cycler=0.12.1=pyhd8ed1ab_0
|
||||
- cytoolz=0.12.3=py311h459d7ec_0
|
||||
- dask=2024.4.2=pyhd8ed1ab_0
|
||||
- dask-core=2024.4.2=pyhd8ed1ab_0
|
||||
- dask-expr=1.0.14=pyhd8ed1ab_0
|
||||
- datrie=0.8.2=py311h459d7ec_7
|
||||
- dbus=1.13.6=h5008d03_3
|
||||
- decorator=5.1.1=pyhd8ed1ab_0
|
||||
- deprecation=2.1.0=pyh9f0ad1d_0
|
||||
- descartes=1.1.0=py_4
|
||||
- distlib=0.3.8=pyhd8ed1ab_0
|
||||
- distributed=2024.4.2=pyhd8ed1ab_0
|
||||
- distro=1.9.0=pyhd8ed1ab_0
|
||||
- docutils=0.21.2=pyhd8ed1ab_0
|
||||
- dpath=2.1.6=pyha770c72_0
|
||||
- entsoe-py=0.6.7=pyhd8ed1ab_0
|
||||
- et_xmlfile=1.1.0=pyhd8ed1ab_0
|
||||
- exceptiongroup=1.2.0=pyhd8ed1ab_2
|
||||
- executing=2.0.1=pyhd8ed1ab_0
|
||||
- expat=2.6.2=h59595ed_0
|
||||
- filelock=3.14.0=pyhd8ed1ab_0
|
||||
- fiona=1.9.6=py311hf8e0aa6_0
|
||||
- fmt=10.2.1=h00ab1b0_0
|
||||
- folium=0.16.0=pyhd8ed1ab_0
|
||||
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
|
||||
- font-ttf-inconsolata=3.000=h77eed37_0
|
||||
- font-ttf-source-code-pro=2.038=h77eed37_0
|
||||
- font-ttf-ubuntu=0.83=h77eed37_2
|
||||
- fontconfig=2.14.2=h14ed4e7_0
|
||||
- fonts-conda-ecosystem=1=0
|
||||
- fonts-conda-forge=1=0
|
||||
- fonttools=4.51.0=py311h459d7ec_0
|
||||
- freetype=2.12.1=h267a509_2
|
||||
- freexl=2.0.0=h743c826_0
|
||||
- fribidi=1.0.10=h36c2ea0_0
|
||||
- fsspec=2024.3.1=pyhca7485f_0
|
||||
- gdal=3.8.5=py311hd032c08_2
|
||||
- gdk-pixbuf=2.42.11=hb9ae30d_0
|
||||
- geographiclib=2.0=pyhd8ed1ab_0
|
||||
- geojson-rewind=1.1.0=pyhd8ed1ab_0
|
||||
- geopandas=0.14.4=pyhd8ed1ab_0
|
||||
- geopandas-base=0.14.4=pyha770c72_0
|
||||
- geopy=2.4.1=pyhd8ed1ab_1
|
||||
- geos=3.12.1=h59595ed_0
|
||||
- geotiff=1.7.1=h6cf1f90_16
|
||||
- gettext=0.22.5=h59595ed_2
|
||||
- gettext-tools=0.22.5=h59595ed_2
|
||||
- gflags=2.2.2=he1b5a44_1004
|
||||
- giflib=5.2.2=hd590300_0
|
||||
- gitdb=4.0.11=pyhd8ed1ab_0
|
||||
- gitpython=3.1.43=pyhd8ed1ab_0
|
||||
- glib=2.80.0=hf2295e7_6
|
||||
- glib-tools=2.80.0=hde27a5a_6
|
||||
- glog=0.7.0=hed5481d_0
|
||||
- glpk=5.0=h445213a_0
|
||||
- gmp=6.3.0=h59595ed_1
|
||||
- graphite2=1.3.13=h59595ed_1003
|
||||
- graphviz=9.0.0=h78e8752_1
|
||||
- gst-plugins-base=1.24.1=hfa15dee_2
|
||||
- gstreamer=1.24.1=h98fc4e7_2
|
||||
- gtk2=2.24.33=h280cfa0_4
|
||||
- gts=0.7.6=h977cf35_4
|
||||
- harfbuzz=8.4.0=h3d44ed6_0
|
||||
- hdf4=4.2.15=h2a13503_7
|
||||
- hdf5=1.14.3=nompi_h4f84152_101
|
||||
- humanfriendly=10.0=pyhd8ed1ab_6
|
||||
- icu=73.2=h59595ed_0
|
||||
- identify=2.5.36=pyhd8ed1ab_0
|
||||
- idna=3.7=pyhd8ed1ab_0
|
||||
- immutables=0.20=py311h459d7ec_1
|
||||
- importlib-metadata=7.1.0=pyha770c72_0
|
||||
- importlib_metadata=7.1.0=hd8ed1ab_0
|
||||
- importlib_resources=6.4.0=pyhd8ed1ab_0
|
||||
- iniconfig=2.0.0=pyhd8ed1ab_0
|
||||
- ipopt=3.14.16=hf967516_0
|
||||
- ipython=8.22.2=pyh707e725_0
|
||||
- jedi=0.19.1=pyhd8ed1ab_0
|
||||
- jinja2=3.1.3=pyhd8ed1ab_0
|
||||
- joblib=1.4.2=pyhd8ed1ab_0
|
||||
- json-c=0.17=h7ab15ed_0
|
||||
- jsonschema=4.22.0=pyhd8ed1ab_0
|
||||
- jsonschema-specifications=2023.12.1=pyhd8ed1ab_0
|
||||
- jupyter_core=5.7.2=py311h38be061_0
|
||||
- kealib=1.5.3=h2f55d51_0
|
||||
- keyutils=1.6.1=h166bdaf_0
|
||||
- kiwisolver=1.4.5=py311h9547e67_1
|
||||
- krb5=1.21.2=h659d440_0
|
||||
- lame=3.100=h166bdaf_1003
|
||||
- lcms2=2.16=hb7c19ff_0
|
||||
- ld_impl_linux-64=2.40=h55db66e_0
|
||||
- lerc=4.0.0=h27087fc_0
|
||||
- libabseil=20240116.2=cxx17_h59595ed_0
|
||||
- libaec=1.1.3=h59595ed_0
|
||||
- libarchive=3.7.2=h2aa1ff5_1
|
||||
- libarrow=15.0.2=hefa796f_6_cpu
|
||||
- libarrow-acero=15.0.2=hbabe93e_6_cpu
|
||||
- libarrow-dataset=15.0.2=hbabe93e_6_cpu
|
||||
- libarrow-flight=15.0.2=hc4f8a93_6_cpu
|
||||
- libarrow-flight-sql=15.0.2=he4f5ca8_6_cpu
|
||||
- libarrow-gandiva=15.0.2=hc1954e9_6_cpu
|
||||
- libarrow-substrait=15.0.2=he4f5ca8_6_cpu
|
||||
- libasprintf=0.22.5=h661eb56_2
|
||||
- libasprintf-devel=0.22.5=h661eb56_2
|
||||
- libblas=3.9.0=22_linux64_openblas
|
||||
- libboost-headers=1.84.0=ha770c72_2
|
||||
- libbrotlicommon=1.1.0=hd590300_1
|
||||
- libbrotlidec=1.1.0=hd590300_1
|
||||
- libbrotlienc=1.1.0=hd590300_1
|
||||
- libcap=2.69=h0f662aa_0
|
||||
- libcblas=3.9.0=22_linux64_openblas
|
||||
- libclang-cpp15=15.0.7=default_h127d8a8_5
|
||||
- libclang13=18.1.4=default_h5d6823c_0
|
||||
- libcrc32c=1.1.2=h9c3ff4c_0
|
||||
- libcups=2.3.3=h4637d8d_4
|
||||
- libcurl=8.7.1=hca28451_0
|
||||
- libdeflate=1.20=hd590300_0
|
||||
- libedit=3.1.20191231=he28a2e2_2
|
||||
- libev=4.33=hd590300_2
|
||||
- libevent=2.1.12=hf998b51_1
|
||||
- libexpat=2.6.2=h59595ed_0
|
||||
- libffi=3.4.2=h7f98852_5
|
||||
- libflac=1.4.3=h59595ed_0
|
||||
- libgcc-ng=13.2.0=h77fa898_6
|
||||
- libgcrypt=1.10.3=hd590300_0
|
||||
- libgd=2.3.3=h119a65a_9
|
||||
- libgdal=3.8.5=hf9625ee_2
|
||||
- libgettextpo=0.22.5=h59595ed_2
|
||||
- libgettextpo-devel=0.22.5=h59595ed_2
|
||||
- libgfortran-ng=13.2.0=h69a702a_6
|
||||
- libgfortran5=13.2.0=h43f5ff8_6
|
||||
- libglib=2.80.0=hf2295e7_6
|
||||
- libgomp=13.2.0=h77fa898_6
|
||||
- libgoogle-cloud=2.23.0=h9be4e54_1
|
||||
- libgoogle-cloud-storage=2.23.0=hc7a4891_1
|
||||
- libgpg-error=1.49=h4f305b6_0
|
||||
- libgrpc=1.62.2=h15f2491_0
|
||||
- libhwloc=2.9.3=default_h554bfaf_1009
|
||||
- libiconv=1.17=hd590300_2
|
||||
- libjpeg-turbo=3.0.0=hd590300_1
|
||||
- libkml=1.3.0=h01aab08_1018
|
||||
- liblapack=3.9.0=22_linux64_openblas
|
||||
- liblapacke=3.9.0=22_linux64_openblas
|
||||
- libllvm15=15.0.7=hb3ce162_4
|
||||
- libllvm16=16.0.6=hb3ce162_3
|
||||
- libllvm18=18.1.4=h2448989_0
|
||||
- libnetcdf=4.9.2=nompi_h9612171_113
|
||||
- libnghttp2=1.58.0=h47da74e_1
|
||||
- libnl=3.9.0=hd590300_0
|
||||
- libnsl=2.0.1=hd590300_0
|
||||
- libogg=1.3.4=h7f98852_1
|
||||
- libopenblas=0.3.27=pthreads_h413a1c8_0
|
||||
- libopus=1.3.1=h7f98852_1
|
||||
- libparquet=15.0.2=hacf5a1f_6_cpu
|
||||
- libpng=1.6.43=h2797004_0
|
||||
- libpq=16.2=h33b98f1_1
|
||||
- libprotobuf=4.25.3=h08a7969_0
|
||||
- libre2-11=2023.09.01=h5a48ba9_2
|
||||
- librsvg=2.58.0=hadf69e7_1
|
||||
- librttopo=1.1.0=h8917695_15
|
||||
- libscotch=7.0.4=h91e35bf_1
|
||||
- libsndfile=1.2.2=hc60ed4a_1
|
||||
- libspatialindex=1.9.3=h9c3ff4c_4
|
||||
- libspatialite=5.1.0=h6f065fc_5
|
||||
- libspral=2024.01.18=h6aa6db2_0
|
||||
- libsqlite=3.45.3=h2797004_0
|
||||
- libssh2=1.11.0=h0841786_0
|
||||
- libstdcxx-ng=13.2.0=hc0a3c3a_6
|
||||
- libsystemd0=255=h3516f8a_1
|
||||
- libthrift=0.19.0=hb90f79a_1
|
||||
- libtiff=4.6.0=h1dd3fc0_3
|
||||
- libutf8proc=2.8.0=h166bdaf_0
|
||||
- libuuid=2.38.1=h0b41bf4_0
|
||||
- libvorbis=1.3.7=h9c3ff4c_0
|
||||
- libwebp=1.4.0=h2c329e2_0
|
||||
- libwebp-base=1.4.0=hd590300_0
|
||||
- libxcb=1.15=h0b41bf4_0
|
||||
- libxcrypt=4.4.36=hd590300_1
|
||||
- libxkbcommon=1.7.0=h662e7e4_0
|
||||
- libxml2=2.12.6=h232c23b_2
|
||||
- libxslt=1.1.39=h76b75d6_0
|
||||
- libzip=1.10.1=h2629f0a_3
|
||||
- libzlib=1.2.13=hd590300_5
|
||||
- linopy=0.3.8=pyhd8ed1ab_0
|
||||
- locket=1.0.0=pyhd8ed1ab_0
|
||||
- lxml=5.2.1=py311hc0a218f_0
|
||||
- lz4=4.3.3=py311h38e4bf4_0
|
||||
- lz4-c=1.9.4=hcb278e6_0
|
||||
- lzo=2.10=hd590300_1001
|
||||
- mapclassify=2.6.1=pyhd8ed1ab_0
|
||||
- markupsafe=2.1.5=py311h459d7ec_0
|
||||
- matplotlib=3.8.4=py311h38be061_0
|
||||
- matplotlib-base=3.8.4=py311h54ef318_0
|
||||
- matplotlib-inline=0.1.7=pyhd8ed1ab_0
|
||||
- memory_profiler=0.61.0=pyhd8ed1ab_0
|
||||
- metis=5.1.0=h59595ed_1007
|
||||
- minizip=4.0.5=h0ab5242_0
|
||||
- mpfr=4.2.1=h9458935_1
|
||||
- mpg123=1.32.6=h59595ed_0
|
||||
- msgpack-python=1.0.7=py311h9547e67_0
|
||||
- multiurl=0.3.1=pyhd8ed1ab_0
|
||||
- mumps-include=5.6.2=ha770c72_4
|
||||
- mumps-seq=5.6.2=hfef103a_4
|
||||
- munkres=1.1.4=pyh9f0ad1d_0
|
||||
- mysql-common=8.3.0=hf1915f5_4
|
||||
- mysql-libs=8.3.0=hca2cd23_4
|
||||
- nbformat=5.10.4=pyhd8ed1ab_0
|
||||
- ncurses=6.4.20240210=h59595ed_0
|
||||
- netcdf4=1.6.5=nompi_py311he8ad708_100
|
||||
- networkx=3.3=pyhd8ed1ab_1
|
||||
- nodeenv=1.8.0=pyhd8ed1ab_0
|
||||
- nomkl=1.0=h5ca1d4c_0
|
||||
- nspr=4.35=h27087fc_0
|
||||
- nss=3.98=h1d7d5a4_0
|
||||
- numexpr=2.9.0=py311h039bad6_100
|
||||
- numpy=1.26.4=py311h64a7726_0
|
||||
- openjdk=22.0.1=hb622114_0
|
||||
- openjpeg=2.5.2=h488ebb8_0
|
||||
- openpyxl=3.1.2=py311h459d7ec_1
|
||||
- openssl=3.3.0=hd590300_0
|
||||
- orc=2.0.0=h17fec99_1
|
||||
- packaging=24.0=pyhd8ed1ab_0
|
||||
- pandas=2.2.2=py311h320fe9a_0
|
||||
- pango=1.52.2=ha41ecd1_0
|
||||
- parso=0.8.4=pyhd8ed1ab_0
|
||||
- partd=1.4.1=pyhd8ed1ab_0
|
||||
- patsy=0.5.6=pyhd8ed1ab_0
|
||||
- pcre2=10.43=hcad00b1_0
|
||||
- pexpect=4.9.0=pyhd8ed1ab_0
|
||||
- pickleshare=0.7.5=py_1003
|
||||
- pillow=10.3.0=py311h18e6fac_0
|
||||
- pip=24.0=pyhd8ed1ab_0
|
||||
- pixman=0.43.2=h59595ed_0
|
||||
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1
|
||||
- plac=1.4.3=pyhd8ed1ab_0
|
||||
- platformdirs=4.2.1=pyhd8ed1ab_0
|
||||
- pluggy=1.5.0=pyhd8ed1ab_0
|
||||
- ply=3.11=pyhd8ed1ab_2
|
||||
- poppler=24.04.0=hb6cd0d7_0
|
||||
- poppler-data=0.4.12=hd8ed1ab_0
|
||||
- postgresql=16.2=h82ecc9d_1
|
||||
- powerplantmatching=0.5.14=pyhd8ed1ab_0
|
||||
- pre-commit=3.7.0=pyha770c72_0
|
||||
- progressbar2=4.4.2=pyhd8ed1ab_0
|
||||
- proj=9.4.0=h1d62c97_1
|
||||
- prompt-toolkit=3.0.42=pyha770c72_0
|
||||
- psutil=5.9.8=py311h459d7ec_0
|
||||
- pthread-stubs=0.4=h36c2ea0_1001
|
||||
- ptyprocess=0.7.0=pyhd3deb0d_0
|
||||
- pulp=2.8.0=py311h38be061_0
|
||||
- pulseaudio-client=17.0=hb77b528_0
|
||||
- pure_eval=0.2.2=pyhd8ed1ab_0
|
||||
- py-cpuinfo=9.0.0=pyhd8ed1ab_0
|
||||
- pyarrow=15.0.2=py311hd5e4297_6_cpu
|
||||
- pyarrow-hotfix=0.6=pyhd8ed1ab_0
|
||||
- pycountry=22.3.5=pyhd8ed1ab_0
|
||||
- pycparser=2.22=pyhd8ed1ab_0
|
||||
- pygments=2.17.2=pyhd8ed1ab_0
|
||||
- pyomo=6.6.1=py311hb755f60_0
|
||||
- pyparsing=3.1.2=pyhd8ed1ab_0
|
||||
- pyproj=3.6.1=py311hb3a3e68_6
|
||||
- pypsa=0.27.1=pyhd8ed1ab_0
|
||||
- pyqt=5.15.9=py311hf0fb5b6_5
|
||||
- pyqt5-sip=12.12.2=py311hb755f60_5
|
||||
- pyscipopt=5.0.1=py311hb755f60_0
|
||||
- pyshp=2.3.1=pyhd8ed1ab_0
|
||||
- pysocks=1.7.1=pyha2e5f31_6
|
||||
- pytables=3.9.2=py311h3e8b7c9_2
|
||||
- pytest=8.2.0=pyhd8ed1ab_0
|
||||
- python=3.11.9=hb806964_0_cpython
|
||||
- python-dateutil=2.9.0=pyhd8ed1ab_0
|
||||
- python-fastjsonschema=2.19.1=pyhd8ed1ab_0
|
||||
- python-tzdata=2024.1=pyhd8ed1ab_0
|
||||
- python-utils=3.8.2=pyhd8ed1ab_0
|
||||
- python_abi=3.11=4_cp311
|
||||
- pytz=2024.1=pyhd8ed1ab_0
|
||||
- pyxlsb=1.0.10=pyhd8ed1ab_0
|
||||
- pyyaml=6.0.1=py311h459d7ec_1
|
||||
- qt-main=5.15.8=hc9dc06e_21
|
||||
- rasterio=1.3.10=py311h375a7ea_0
|
||||
- rdma-core=51.0=hd3aeb46_0
|
||||
- re2=2023.09.01=h7f4b329_2
|
||||
- readline=8.2=h8228510_1
|
||||
- referencing=0.35.1=pyhd8ed1ab_0
|
||||
- requests=2.31.0=pyhd8ed1ab_0
|
||||
- reretry=0.11.8=pyhd8ed1ab_0
|
||||
- rioxarray=0.15.5=pyhd8ed1ab_0
|
||||
- rpds-py=0.18.0=py311h46250e7_0
|
||||
- rtree=1.2.0=py311h3bb2b0f_0
|
||||
- s2n=1.4.12=h06160fa_0
|
||||
- scikit-learn=1.4.2=py311hc009520_0
|
||||
- scip=9.0.0=hded5f35_4
|
||||
- scipy=1.13.0=py311h64a7726_0
|
||||
- scotch=7.0.4=h23d43cc_1
|
||||
- seaborn=0.13.2=hd8ed1ab_2
|
||||
- seaborn-base=0.13.2=pyhd8ed1ab_2
|
||||
- setuptools=69.5.1=pyhd8ed1ab_0
|
||||
- setuptools-scm=8.0.4=pyhd8ed1ab_1
|
||||
- setuptools_scm=8.0.4=hd8ed1ab_1
|
||||
- shapely=2.0.4=py311h2032efe_0
|
||||
- sip=6.7.12=py311hb755f60_0
|
||||
- six=1.16.0=pyh6c4a22f_0
|
||||
- smart_open=7.0.4=pyhd8ed1ab_0
|
||||
- smmap=5.0.0=pyhd8ed1ab_0
|
||||
- snakemake-interface-common=1.17.2=pyhdfd78af_0
|
||||
- snakemake-interface-executor-plugins=9.1.1=pyhdfd78af_0
|
||||
- snakemake-interface-report-plugins=1.0.0=pyhdfd78af_0
|
||||
- snakemake-interface-storage-plugins=3.2.2=pyhdfd78af_0
|
||||
- snakemake-minimal=8.11.1=pyhdfd78af_0
|
||||
- snappy=1.2.0=hdb0a2a9_1
|
||||
- snuggs=1.4.7=py_0
|
||||
- sortedcontainers=2.4.0=pyhd8ed1ab_0
|
||||
- soupsieve=2.5=pyhd8ed1ab_1
|
||||
- spdlog=1.13.0=hd2e6256_0
|
||||
- sqlite=3.45.3=h2c6b66d_0
|
||||
- stack_data=0.6.2=pyhd8ed1ab_0
|
||||
- statsmodels=0.14.1=py311h1f0f07a_0
|
||||
- stopit=1.1.2=py_0
|
||||
- tabula-py=2.7.0=py311h38be061_1
|
||||
- tabulate=0.9.0=pyhd8ed1ab_1
|
||||
- tbb=2021.11.0=h00ab1b0_1
|
||||
- tblib=3.0.0=pyhd8ed1ab_0
|
||||
- threadpoolctl=3.5.0=pyhc1e730c_0
|
||||
- throttler=1.2.2=pyhd8ed1ab_0
|
||||
- tiledb=2.22.0=h27f064a_3
|
||||
- tk=8.6.13=noxft_h4845f30_101
|
||||
- toml=0.10.2=pyhd8ed1ab_0
|
||||
- tomli=2.0.1=pyhd8ed1ab_0
|
||||
- toolz=0.12.1=pyhd8ed1ab_0
|
||||
- toposort=1.10=pyhd8ed1ab_0
|
||||
- tornado=6.4=py311h459d7ec_0
|
||||
- tqdm=4.66.2=pyhd8ed1ab_0
|
||||
- traitlets=5.14.3=pyhd8ed1ab_0
|
||||
- typing-extensions=4.11.0=hd8ed1ab_0
|
||||
- typing_extensions=4.11.0=pyha770c72_0
|
||||
- tzcode=2024a=h3f72095_0
|
||||
- tzdata=2024a=h0c530f3_0
|
||||
- ucx=1.15.0=ha691c75_8
|
||||
- ukkonen=1.0.1=py311h9547e67_4
|
||||
- unidecode=1.3.8=pyhd8ed1ab_0
|
||||
- unixodbc=2.3.12=h661eb56_0
|
||||
- uriparser=0.9.7=h59595ed_1
|
||||
- urllib3=2.2.1=pyhd8ed1ab_0
|
||||
- validators=0.28.1=pyhd8ed1ab_0
|
||||
- virtualenv=20.26.1=pyhd8ed1ab_0
|
||||
- wcwidth=0.2.13=pyhd8ed1ab_0
|
||||
- wheel=0.43.0=pyhd8ed1ab_1
|
||||
- wrapt=1.16.0=py311h459d7ec_0
|
||||
- xarray=2024.3.0=pyhd8ed1ab_0
|
||||
- xcb-util=0.4.0=hd590300_1
|
||||
- xcb-util-image=0.4.0=h8ee46fc_1
|
||||
- xcb-util-keysyms=0.4.0=h8ee46fc_1
|
||||
- xcb-util-renderutil=0.3.9=hd590300_1
|
||||
- xcb-util-wm=0.4.1=h8ee46fc_1
|
||||
- xerces-c=3.2.5=hac6953d_0
|
||||
- xkeyboard-config=2.41=hd590300_0
|
||||
- xlrd=2.0.1=pyhd8ed1ab_3
|
||||
- xorg-fixesproto=5.0=h7f98852_1002
|
||||
- xorg-inputproto=2.3.2=h7f98852_1002
|
||||
- xorg-kbproto=1.0.7=h7f98852_1002
|
||||
- xorg-libice=1.1.1=hd590300_0
|
||||
- xorg-libsm=1.2.4=h7391055_0
|
||||
- xorg-libx11=1.8.9=h8ee46fc_0
|
||||
- xorg-libxau=1.0.11=hd590300_0
|
||||
- xorg-libxdmcp=1.1.3=h7f98852_0
|
||||
- xorg-libxext=1.3.4=h0b41bf4_2
|
||||
- xorg-libxfixes=5.0.3=h7f98852_1004
|
||||
- xorg-libxi=1.7.10=h7f98852_0
|
||||
- xorg-libxrender=0.9.11=hd590300_0
|
||||
- xorg-libxt=1.3.0=hd590300_1
|
||||
- xorg-libxtst=1.2.3=h7f98852_1002
|
||||
- xorg-recordproto=1.14.2=h7f98852_1002
|
||||
- xorg-renderproto=0.11.1=h7f98852_1002
|
||||
- xorg-xextproto=7.3.0=h0b41bf4_1003
|
||||
- xorg-xf86vidmodeproto=2.3.1=h7f98852_1002
|
||||
- xorg-xproto=7.0.31=h7f98852_1007
|
||||
- xyzservices=2024.4.0=pyhd8ed1ab_0
|
||||
- xz=5.2.6=h166bdaf_0
|
||||
- yaml=0.2.5=h7f98852_2
|
||||
- yte=1.5.4=pyha770c72_0
|
||||
- zict=3.0.0=pyhd8ed1ab_0
|
||||
- zipp=3.17.0=pyhd8ed1ab_0
|
||||
- zlib=1.2.13=hd590300_5
|
||||
- zlib-ng=2.0.7=h0b41bf4_0
|
||||
- zstd=1.5.5=hfc55251_0
|
||||
- pip:
|
||||
- highspy==1.5.3
|
||||
- oauthlib==3.2.2
|
||||
- requests-oauthlib==1.3.1
|
||||
- snakemake-executor-plugin-cluster-generic==1.0.9
|
||||
- snakemake-executor-plugin-slurm==0.4.5
|
||||
- snakemake-executor-plugin-slurm-jobstep==0.2.1
|
||||
- snakemake-storage-plugin-http==0.2.3
|
||||
- tsam==2.3.1
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -20,13 +20,12 @@ dependencies:
|
||||
- openpyxl!=3.1.1
|
||||
- pycountry
|
||||
- seaborn
|
||||
# snakemake 8 introduced a number of breaking changes which the workflow has yet to be made compatible with
|
||||
- snakemake-minimal>=7.7.0,<8.0.0
|
||||
- snakemake-minimal>=8.11
|
||||
- memory_profiler
|
||||
- yaml
|
||||
- pytables
|
||||
- lxml
|
||||
- powerplantmatching>=0.5.5
|
||||
- powerplantmatching>=0.5.13
|
||||
- numpy
|
||||
- pandas>=2.1
|
||||
- geopandas>=0.11.0
|
||||
@ -35,8 +34,9 @@ dependencies:
|
||||
- netcdf4
|
||||
- networkx
|
||||
- scipy
|
||||
- glpk
|
||||
- shapely>=2.0
|
||||
- pyomo
|
||||
- pyscipopt
|
||||
- matplotlib
|
||||
- proj
|
||||
- fiona
|
||||
@ -47,7 +47,7 @@ dependencies:
|
||||
- tabula-py
|
||||
- pyxlsb
|
||||
- graphviz
|
||||
- ipopt
|
||||
- pre-commit
|
||||
|
||||
# Keep in conda environment when calling ipython
|
||||
- ipython
|
||||
@ -60,3 +60,7 @@ dependencies:
|
||||
|
||||
- pip:
|
||||
- tsam>=2.3.1
|
||||
- snakemake-storage-plugin-http
|
||||
- snakemake-executor-plugin-slurm
|
||||
- snakemake-executor-plugin-cluster-generic
|
||||
- highspy
|
||||
|
18
envs/retrieve.yaml
Normal file
18
envs/retrieve.yaml
Normal file
@ -0,0 +1,18 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
name: pypsa-eur-retrieve
|
||||
channels:
|
||||
- conda-forge
|
||||
- bioconda
|
||||
dependencies:
|
||||
- python>=3.8
|
||||
- pip
|
||||
- snakemake-minimal>=8.5
|
||||
- pandas>=2.1
|
||||
- tqdm
|
||||
- pip:
|
||||
- snakemake-storage-plugin-http
|
||||
- snakemake-executor-plugin-slurm
|
||||
- snakemake-executor-plugin-cluster-generic
|
Binary file not shown.
Before Width: | Height: | Size: 636 KiB |
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
font.family: sans-serif
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2023-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -8,7 +8,7 @@ if config["enable"].get("prepare_links_p_nom", False):
|
||||
output:
|
||||
"data/links_p_nom.csv",
|
||||
log:
|
||||
LOGS + "prepare_links_p_nom.log",
|
||||
logs("prepare_links_p_nom.log"),
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=1500,
|
||||
@ -20,15 +20,21 @@ if config["enable"].get("prepare_links_p_nom", False):
|
||||
|
||||
rule build_electricity_demand:
|
||||
params:
|
||||
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
|
||||
countries=config["countries"],
|
||||
load=config["load"],
|
||||
snapshots=config_provider("snapshots"),
|
||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||
countries=config_provider("countries"),
|
||||
load=config_provider("load"),
|
||||
input:
|
||||
ancient(RESOURCES + "load_raw.csv"),
|
||||
reported=ancient("data/electricity_demand_raw.csv"),
|
||||
synthetic=lambda w: (
|
||||
ancient("data/load_synthetic_raw.csv")
|
||||
if config_provider("load", "supplement_synthetic")(w)
|
||||
else []
|
||||
),
|
||||
output:
|
||||
RESOURCES + "load.csv",
|
||||
resources("electricity_demand.csv"),
|
||||
log:
|
||||
LOGS + "build_electricity_demand.log",
|
||||
logs("build_electricity_demand.log"),
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
conda:
|
||||
@ -39,17 +45,17 @@ rule build_electricity_demand:
|
||||
|
||||
rule build_powerplants:
|
||||
params:
|
||||
powerplants_filter=config["electricity"]["powerplants_filter"],
|
||||
custom_powerplants=config["electricity"]["custom_powerplants"],
|
||||
everywhere_powerplants=config["electricity"]["everywhere_powerplants"],
|
||||
countries=config["countries"],
|
||||
powerplants_filter=config_provider("electricity", "powerplants_filter"),
|
||||
custom_powerplants=config_provider("electricity", "custom_powerplants"),
|
||||
everywhere_powerplants=config_provider("electricity", "everywhere_powerplants"),
|
||||
countries=config_provider("countries"),
|
||||
input:
|
||||
base_network=RESOURCES + "networks/base.nc",
|
||||
base_network=resources("networks/base.nc"),
|
||||
custom_powerplants="data/custom_powerplants.csv",
|
||||
output:
|
||||
RESOURCES + "powerplants.csv",
|
||||
resources("powerplants.csv"),
|
||||
log:
|
||||
LOGS + "build_powerplants.log",
|
||||
logs("build_powerplants.log"),
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
@ -61,11 +67,12 @@ rule build_powerplants:
|
||||
|
||||
rule base_network:
|
||||
params:
|
||||
countries=config["countries"],
|
||||
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
|
||||
lines=config["lines"],
|
||||
links=config["links"],
|
||||
transformers=config["transformers"],
|
||||
countries=config_provider("countries"),
|
||||
snapshots=config_provider("snapshots"),
|
||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||
lines=config_provider("lines"),
|
||||
links=config_provider("links"),
|
||||
transformers=config_provider("transformers"),
|
||||
input:
|
||||
eg_buses="data/entsoegridkit/buses.csv",
|
||||
eg_lines="data/entsoegridkit/lines.csv",
|
||||
@ -75,15 +82,17 @@ rule base_network:
|
||||
parameter_corrections="data/parameter_corrections.yaml",
|
||||
links_p_nom="data/links_p_nom.csv",
|
||||
links_tyndp="data/links_tyndp.csv",
|
||||
country_shapes=RESOURCES + "country_shapes.geojson",
|
||||
offshore_shapes=RESOURCES + "offshore_shapes.geojson",
|
||||
europe_shape=RESOURCES + "europe_shape.geojson",
|
||||
country_shapes=resources("country_shapes.geojson"),
|
||||
offshore_shapes=resources("offshore_shapes.geojson"),
|
||||
europe_shape=resources("europe_shape.geojson"),
|
||||
output:
|
||||
RESOURCES + "networks/base.nc",
|
||||
base_network=resources("networks/base.nc"),
|
||||
regions_onshore=resources("regions_onshore.geojson"),
|
||||
regions_offshore=resources("regions_offshore.geojson"),
|
||||
log:
|
||||
LOGS + "base_network.log",
|
||||
logs("base_network.log"),
|
||||
benchmark:
|
||||
BENCHMARKS + "base_network"
|
||||
benchmarks("base_network")
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=1500,
|
||||
@ -95,7 +104,7 @@ rule base_network:
|
||||
|
||||
rule build_shapes:
|
||||
params:
|
||||
countries=config["countries"],
|
||||
countries=config_provider("countries"),
|
||||
input:
|
||||
naturalearth=ancient("data/bundle/naturalearth/ne_10m_admin_0_countries.shp"),
|
||||
eez=ancient("data/bundle/eez/World_EEZ_v8_2014.shp"),
|
||||
@ -105,12 +114,12 @@ rule build_shapes:
|
||||
ch_cantons=ancient("data/bundle/ch_cantons.csv"),
|
||||
ch_popgdp=ancient("data/bundle/je-e-21.03.02.xls"),
|
||||
output:
|
||||
country_shapes=RESOURCES + "country_shapes.geojson",
|
||||
offshore_shapes=RESOURCES + "offshore_shapes.geojson",
|
||||
europe_shape=RESOURCES + "europe_shape.geojson",
|
||||
nuts3_shapes=RESOURCES + "nuts3_shapes.geojson",
|
||||
country_shapes=resources("country_shapes.geojson"),
|
||||
offshore_shapes=resources("offshore_shapes.geojson"),
|
||||
europe_shape=resources("europe_shape.geojson"),
|
||||
nuts3_shapes=resources("nuts3_shapes.geojson"),
|
||||
log:
|
||||
LOGS + "build_shapes.log",
|
||||
logs("build_shapes.log"),
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=1500,
|
||||
@ -120,45 +129,24 @@ rule build_shapes:
|
||||
"../scripts/build_shapes.py"
|
||||
|
||||
|
||||
rule build_bus_regions:
|
||||
params:
|
||||
countries=config["countries"],
|
||||
input:
|
||||
country_shapes=RESOURCES + "country_shapes.geojson",
|
||||
offshore_shapes=RESOURCES + "offshore_shapes.geojson",
|
||||
base_network=RESOURCES + "networks/base.nc",
|
||||
output:
|
||||
regions_onshore=RESOURCES + "regions_onshore.geojson",
|
||||
regions_offshore=RESOURCES + "regions_offshore.geojson",
|
||||
log:
|
||||
LOGS + "build_bus_regions.log",
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=1000,
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/build_bus_regions.py"
|
||||
|
||||
|
||||
if config["enable"].get("build_cutout", False):
|
||||
|
||||
rule build_cutout:
|
||||
params:
|
||||
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
|
||||
cutouts=config["atlite"]["cutouts"],
|
||||
snapshots=config_provider("snapshots"),
|
||||
cutouts=config_provider("atlite", "cutouts"),
|
||||
input:
|
||||
regions_onshore=RESOURCES + "regions_onshore.geojson",
|
||||
regions_offshore=RESOURCES + "regions_offshore.geojson",
|
||||
regions_onshore=resources("regions_onshore.geojson"),
|
||||
regions_offshore=resources("regions_offshore.geojson"),
|
||||
output:
|
||||
protected("cutouts/" + CDIR + "{cutout}.nc"),
|
||||
log:
|
||||
"logs/" + CDIR + "build_cutout/{cutout}.log",
|
||||
logs(CDIR + "build_cutout/{cutout}.log"),
|
||||
benchmark:
|
||||
"benchmarks/" + CDIR + "build_cutout_{cutout}"
|
||||
threads: ATLITE_NPROCESSES
|
||||
threads: config["atlite"].get("nprocesses", 4)
|
||||
resources:
|
||||
mem_mb=ATLITE_NPROCESSES * 1000,
|
||||
mem_mb=config["atlite"].get("nprocesses", 4) * 1000,
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
@ -170,13 +158,16 @@ if config["enable"].get("build_natura_raster", False):
|
||||
rule build_natura_raster:
|
||||
input:
|
||||
natura=ancient("data/bundle/natura/Natura2000_end2015.shp"),
|
||||
cutouts=expand("cutouts/" + CDIR + "{cutouts}.nc", **config["atlite"]),
|
||||
cutout=lambda w: "cutouts/"
|
||||
+ CDIR
|
||||
+ config_provider("atlite", "default_cutout")(w)
|
||||
+ ".nc",
|
||||
output:
|
||||
RESOURCES + "natura.tiff",
|
||||
resources("natura.tiff"),
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
log:
|
||||
LOGS + "build_natura_raster.log",
|
||||
logs("build_natura_raster.log"),
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
@ -186,21 +177,18 @@ if config["enable"].get("build_natura_raster", False):
|
||||
rule build_ship_raster:
|
||||
input:
|
||||
ship_density="data/shipdensity_global.zip",
|
||||
cutouts=expand(
|
||||
"cutouts/" + CDIR + "{cutout}.nc",
|
||||
cutout=[
|
||||
config["renewable"][k]["cutout"]
|
||||
for k in config["electricity"]["renewable_carriers"]
|
||||
],
|
||||
),
|
||||
cutout=lambda w: "cutouts/"
|
||||
+ CDIR
|
||||
+ config_provider("atlite", "default_cutout")(w)
|
||||
+ ".nc",
|
||||
output:
|
||||
RESOURCES + "shipdensity_raster.tif",
|
||||
resources("shipdensity_raster.tif"),
|
||||
log:
|
||||
LOGS + "build_ship_raster.log",
|
||||
logs("build_ship_raster.log"),
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
benchmark:
|
||||
BENCHMARKS + "build_ship_raster"
|
||||
benchmarks("build_ship_raster")
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
@ -214,33 +202,33 @@ rule determine_availability_matrix_MD_UA:
|
||||
wdpa_marine="data/WDPA_WDOECM_marine.gpkg",
|
||||
gebco=lambda w: (
|
||||
"data/bundle/GEBCO_2014_2D.nc"
|
||||
if "max_depth" in config["renewable"][w.technology].keys()
|
||||
if config_provider("renewable", w.technology)(w).get("max_depth")
|
||||
else []
|
||||
),
|
||||
ship_density=lambda w: (
|
||||
RESOURCES + "shipdensity_raster.tif"
|
||||
if "ship_threshold" in config["renewable"][w.technology].keys()
|
||||
resources("shipdensity_raster.tif")
|
||||
if "ship_threshold" in config_provider("renewable", w.technology)(w).keys()
|
||||
else []
|
||||
),
|
||||
country_shapes=RESOURCES + "country_shapes.geojson",
|
||||
offshore_shapes=RESOURCES + "offshore_shapes.geojson",
|
||||
country_shapes=resources("country_shapes.geojson"),
|
||||
offshore_shapes=resources("offshore_shapes.geojson"),
|
||||
regions=lambda w: (
|
||||
RESOURCES + "regions_onshore.geojson"
|
||||
resources("regions_onshore.geojson")
|
||||
if w.technology in ("onwind", "solar")
|
||||
else RESOURCES + "regions_offshore.geojson"
|
||||
else resources("regions_offshore.geojson")
|
||||
),
|
||||
cutout=lambda w: "cutouts/"
|
||||
+ CDIR
|
||||
+ config["renewable"][w.technology]["cutout"]
|
||||
+ config_provider("renewable", w.technology, "cutout")(w)
|
||||
+ ".nc",
|
||||
output:
|
||||
availability_matrix=RESOURCES + "availability_matrix_MD-UA_{technology}.nc",
|
||||
availability_map=RESOURCES + "availability_matrix_MD-UA_{technology}.png",
|
||||
availability_matrix=resources("availability_matrix_MD-UA_{technology}.nc"),
|
||||
availability_map=resources("availability_matrix_MD-UA_{technology}.png"),
|
||||
log:
|
||||
LOGS + "determine_availability_matrix_MD_UA_{technology}.log",
|
||||
threads: ATLITE_NPROCESSES
|
||||
logs("determine_availability_matrix_MD_UA_{technology}.log"),
|
||||
threads: config["atlite"].get("nprocesses", 4)
|
||||
resources:
|
||||
mem_mb=ATLITE_NPROCESSES * 5000,
|
||||
mem_mb=config["atlite"].get("nprocesses", 4) * 5000,
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
@ -248,68 +236,71 @@ rule determine_availability_matrix_MD_UA:
|
||||
|
||||
|
||||
# Optional input when having Ukraine (UA) or Moldova (MD) in the countries list
|
||||
if {"UA", "MD"}.intersection(set(config["countries"])):
|
||||
opt = {
|
||||
"availability_matrix_MD_UA": RESOURCES
|
||||
+ "availability_matrix_MD-UA_{technology}.nc"
|
||||
}
|
||||
else:
|
||||
opt = {}
|
||||
def input_ua_md_availability_matrix(w):
|
||||
countries = set(config_provider("countries")(w))
|
||||
if {"UA", "MD"}.intersection(countries):
|
||||
return {
|
||||
"availability_matrix_MD_UA": resources(
|
||||
"availability_matrix_MD-UA_{technology}.nc"
|
||||
)
|
||||
}
|
||||
return {}
|
||||
|
||||
|
||||
rule build_renewable_profiles:
|
||||
params:
|
||||
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
|
||||
renewable=config["renewable"],
|
||||
snapshots=config_provider("snapshots"),
|
||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||
renewable=config_provider("renewable"),
|
||||
input:
|
||||
**opt,
|
||||
base_network=RESOURCES + "networks/base.nc",
|
||||
unpack(input_ua_md_availability_matrix),
|
||||
base_network=resources("networks/base.nc"),
|
||||
corine=ancient("data/bundle/corine/g250_clc06_V18_5.tif"),
|
||||
natura=lambda w: (
|
||||
RESOURCES + "natura.tiff"
|
||||
if config["renewable"][w.technology]["natura"]
|
||||
resources("natura.tiff")
|
||||
if config_provider("renewable", w.technology, "natura")(w)
|
||||
else []
|
||||
),
|
||||
luisa=lambda w: (
|
||||
"data/LUISA_basemap_020321_50m.tif"
|
||||
if config["renewable"][w.technology].get("luisa")
|
||||
if config_provider("renewable", w.technology, "luisa")(w)
|
||||
else []
|
||||
),
|
||||
gebco=ancient(
|
||||
lambda w: (
|
||||
"data/bundle/GEBCO_2014_2D.nc"
|
||||
if (
|
||||
config["renewable"][w.technology].get("max_depth")
|
||||
or config["renewable"][w.technology].get("min_depth")
|
||||
config_provider("renewable", w.technology)(w).get("max_depth")
|
||||
or config_provider("renewable", w.technology)(w).get("min_depth")
|
||||
)
|
||||
else []
|
||||
)
|
||||
),
|
||||
ship_density=lambda w: (
|
||||
RESOURCES + "shipdensity_raster.tif"
|
||||
if config["renewable"][w.technology].get("ship_threshold", False)
|
||||
resources("shipdensity_raster.tif")
|
||||
if "ship_threshold" in config_provider("renewable", w.technology)(w).keys()
|
||||
else []
|
||||
),
|
||||
country_shapes=RESOURCES + "country_shapes.geojson",
|
||||
offshore_shapes=RESOURCES + "offshore_shapes.geojson",
|
||||
country_shapes=resources("country_shapes.geojson"),
|
||||
offshore_shapes=resources("offshore_shapes.geojson"),
|
||||
regions=lambda w: (
|
||||
RESOURCES + "regions_onshore.geojson"
|
||||
resources("regions_onshore.geojson")
|
||||
if w.technology in ("onwind", "solar")
|
||||
else RESOURCES + "regions_offshore.geojson"
|
||||
else resources("regions_offshore.geojson")
|
||||
),
|
||||
cutout=lambda w: "cutouts/"
|
||||
+ CDIR
|
||||
+ config["renewable"][w.technology]["cutout"]
|
||||
+ config_provider("renewable", w.technology, "cutout")(w)
|
||||
+ ".nc",
|
||||
output:
|
||||
profile=RESOURCES + "profile_{technology}.nc",
|
||||
profile=resources("profile_{technology}.nc"),
|
||||
log:
|
||||
LOGS + "build_renewable_profile_{technology}.log",
|
||||
logs("build_renewable_profile_{technology}.log"),
|
||||
benchmark:
|
||||
BENCHMARKS + "build_renewable_profiles_{technology}"
|
||||
threads: ATLITE_NPROCESSES
|
||||
benchmarks("build_renewable_profiles_{technology}")
|
||||
threads: config["atlite"].get("nprocesses", 4)
|
||||
resources:
|
||||
mem_mb=ATLITE_NPROCESSES * 5000,
|
||||
mem_mb=config["atlite"].get("nprocesses", 4) * 5000,
|
||||
wildcard_constraints:
|
||||
technology="(?!hydro).*", # Any technology other than hydro
|
||||
conda:
|
||||
@ -323,10 +314,10 @@ rule build_monthly_prices:
|
||||
co2_price_raw="data/validation/emission-spot-primary-market-auction-report-2019-data.xls",
|
||||
fuel_price_raw="data/validation/energy-price-trends-xlsx-5619002.xlsx",
|
||||
output:
|
||||
co2_price=RESOURCES + "co2_price.csv",
|
||||
fuel_price=RESOURCES + "monthly_fuel_price.csv",
|
||||
co2_price=resources("co2_price.csv"),
|
||||
fuel_price=resources("monthly_fuel_price.csv"),
|
||||
log:
|
||||
LOGS + "build_monthly_prices.log",
|
||||
logs("build_monthly_prices.log"),
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
@ -338,16 +329,23 @@ rule build_monthly_prices:
|
||||
|
||||
rule build_hydro_profile:
|
||||
params:
|
||||
hydro=config["renewable"]["hydro"],
|
||||
countries=config["countries"],
|
||||
hydro=config_provider("renewable", "hydro"),
|
||||
countries=config_provider("countries"),
|
||||
snapshots=config_provider("snapshots"),
|
||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||
input:
|
||||
country_shapes=RESOURCES + "country_shapes.geojson",
|
||||
country_shapes=resources("country_shapes.geojson"),
|
||||
eia_hydro_generation="data/eia_hydro_annual_generation.csv",
|
||||
cutout=f"cutouts/" + CDIR + config["renewable"]["hydro"]["cutout"] + ".nc",
|
||||
eia_hydro_capacity="data/eia_hydro_annual_capacity.csv",
|
||||
era5_runoff="data/era5-annual-runoff-per-country.csv",
|
||||
cutout=lambda w: f"cutouts/"
|
||||
+ CDIR
|
||||
+ config_provider("renewable", "hydro", "cutout")(w)
|
||||
+ ".nc",
|
||||
output:
|
||||
RESOURCES + "profile_hydro.nc",
|
||||
profile=resources("profile_hydro.nc"),
|
||||
log:
|
||||
LOGS + "build_hydro_profile.log",
|
||||
logs("build_hydro_profile.log"),
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
conda:
|
||||
@ -356,75 +354,90 @@ rule build_hydro_profile:
|
||||
"../scripts/build_hydro_profile.py"
|
||||
|
||||
|
||||
if config["lines"]["dynamic_line_rating"]["activate"]:
|
||||
rule build_line_rating:
|
||||
params:
|
||||
snapshots=config_provider("snapshots"),
|
||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||
input:
|
||||
base_network=resources("networks/base.nc"),
|
||||
cutout=lambda w: "cutouts/"
|
||||
+ CDIR
|
||||
+ config_provider("lines", "dynamic_line_rating", "cutout")(w)
|
||||
+ ".nc",
|
||||
output:
|
||||
output=resources("networks/line_rating.nc"),
|
||||
log:
|
||||
logs("build_line_rating.log"),
|
||||
benchmark:
|
||||
benchmarks("build_line_rating")
|
||||
threads: config["atlite"].get("nprocesses", 4)
|
||||
resources:
|
||||
mem_mb=config["atlite"].get("nprocesses", 4) * 1000,
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/build_line_rating.py"
|
||||
|
||||
rule build_line_rating:
|
||||
params:
|
||||
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
|
||||
input:
|
||||
base_network=RESOURCES + "networks/base.nc",
|
||||
cutout="cutouts/"
|
||||
+ CDIR
|
||||
+ config["lines"]["dynamic_line_rating"]["cutout"]
|
||||
+ ".nc",
|
||||
output:
|
||||
output=RESOURCES + "networks/line_rating.nc",
|
||||
log:
|
||||
LOGS + "build_line_rating.log",
|
||||
benchmark:
|
||||
BENCHMARKS + "build_line_rating"
|
||||
threads: ATLITE_NPROCESSES
|
||||
resources:
|
||||
mem_mb=ATLITE_NPROCESSES * 1000,
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/build_line_rating.py"
|
||||
|
||||
def input_profile_tech(w):
|
||||
return {
|
||||
f"profile_{tech}": resources(f"profile_{tech}.nc")
|
||||
for tech in config_provider("electricity", "renewable_carriers")(w)
|
||||
}
|
||||
|
||||
|
||||
def input_conventional(w):
|
||||
return {
|
||||
f"conventional_{carrier}_{attr}": fn
|
||||
for carrier, d in config_provider("conventional", default={None: {}})(w).items()
|
||||
if carrier in config_provider("electricity", "conventional_carriers")(w)
|
||||
for attr, fn in d.items()
|
||||
if str(fn).startswith("data/")
|
||||
}
|
||||
|
||||
|
||||
rule add_electricity:
|
||||
params:
|
||||
length_factor=config["lines"]["length_factor"],
|
||||
scaling_factor=config["load"]["scaling_factor"],
|
||||
countries=config["countries"],
|
||||
renewable=config["renewable"],
|
||||
electricity=config["electricity"],
|
||||
conventional=config["conventional"],
|
||||
costs=config["costs"],
|
||||
length_factor=config_provider("lines", "length_factor"),
|
||||
scaling_factor=config_provider("load", "scaling_factor"),
|
||||
countries=config_provider("countries"),
|
||||
snapshots=config_provider("snapshots"),
|
||||
renewable=config_provider("renewable"),
|
||||
electricity=config_provider("electricity"),
|
||||
conventional=config_provider("conventional"),
|
||||
costs=config_provider("costs"),
|
||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||
input:
|
||||
**{
|
||||
f"profile_{tech}": RESOURCES + f"profile_{tech}.nc"
|
||||
for tech in config["electricity"]["renewable_carriers"]
|
||||
},
|
||||
**{
|
||||
f"conventional_{carrier}_{attr}": fn
|
||||
for carrier, d in config.get("conventional", {None: {}}).items()
|
||||
if carrier in config["electricity"]["conventional_carriers"]
|
||||
for attr, fn in d.items()
|
||||
if str(fn).startswith("data/")
|
||||
},
|
||||
base_network=RESOURCES + "networks/base.nc",
|
||||
line_rating=RESOURCES + "networks/line_rating.nc"
|
||||
if config["lines"]["dynamic_line_rating"]["activate"]
|
||||
else RESOURCES + "networks/base.nc",
|
||||
tech_costs=COSTS,
|
||||
regions=RESOURCES + "regions_onshore.geojson",
|
||||
powerplants=RESOURCES + "powerplants.csv",
|
||||
unpack(input_profile_tech),
|
||||
unpack(input_conventional),
|
||||
base_network=resources("networks/base.nc"),
|
||||
line_rating=lambda w: (
|
||||
resources("networks/line_rating.nc")
|
||||
if config_provider("lines", "dynamic_line_rating", "activate")(w)
|
||||
else resources("networks/base.nc")
|
||||
),
|
||||
tech_costs=lambda w: resources(
|
||||
f"costs_{config_provider('costs', 'year') (w)}.csv"
|
||||
),
|
||||
regions=resources("regions_onshore.geojson"),
|
||||
powerplants=resources("powerplants.csv"),
|
||||
hydro_capacities=ancient("data/bundle/hydro_capacities.csv"),
|
||||
geth_hydro_capacities="data/geth2015_hydro_capacities.csv",
|
||||
unit_commitment="data/unit_commitment.csv",
|
||||
fuel_price=RESOURCES + "monthly_fuel_price.csv"
|
||||
if config["conventional"]["dynamic_fuel_price"]
|
||||
else [],
|
||||
load=RESOURCES + "load.csv",
|
||||
nuts3_shapes=RESOURCES + "nuts3_shapes.geojson",
|
||||
fuel_price=lambda w: (
|
||||
resources("monthly_fuel_price.csv")
|
||||
if config_provider("conventional", "dynamic_fuel_price")(w)
|
||||
else []
|
||||
),
|
||||
load=resources("electricity_demand.csv"),
|
||||
nuts3_shapes=resources("nuts3_shapes.geojson"),
|
||||
ua_md_gdp="data/GDP_PPP_30arcsec_v3_mapped_default.csv",
|
||||
output:
|
||||
RESOURCES + "networks/elec.nc",
|
||||
resources("networks/elec.nc"),
|
||||
log:
|
||||
LOGS + "add_electricity.log",
|
||||
logs("add_electricity.log"),
|
||||
benchmark:
|
||||
BENCHMARKS + "add_electricity"
|
||||
benchmarks("add_electricity")
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=10000,
|
||||
@ -436,31 +449,32 @@ rule add_electricity:
|
||||
|
||||
rule simplify_network:
|
||||
params:
|
||||
simplify_network=config["clustering"]["simplify_network"],
|
||||
aggregation_strategies=config["clustering"].get("aggregation_strategies", {}),
|
||||
focus_weights=config["clustering"].get(
|
||||
"focus_weights", config.get("focus_weights")
|
||||
simplify_network=config_provider("clustering", "simplify_network"),
|
||||
aggregation_strategies=config_provider(
|
||||
"clustering", "aggregation_strategies", default={}
|
||||
),
|
||||
renewable_carriers=config["electricity"]["renewable_carriers"],
|
||||
max_hours=config["electricity"]["max_hours"],
|
||||
length_factor=config["lines"]["length_factor"],
|
||||
p_max_pu=config["links"].get("p_max_pu", 1.0),
|
||||
costs=config["costs"],
|
||||
focus_weights=config_provider("clustering", "focus_weights", default=None),
|
||||
renewable_carriers=config_provider("electricity", "renewable_carriers"),
|
||||
max_hours=config_provider("electricity", "max_hours"),
|
||||
length_factor=config_provider("lines", "length_factor"),
|
||||
p_max_pu=config_provider("links", "p_max_pu", default=1.0),
|
||||
costs=config_provider("costs"),
|
||||
input:
|
||||
network=RESOURCES + "networks/elec.nc",
|
||||
tech_costs=COSTS,
|
||||
regions_onshore=RESOURCES + "regions_onshore.geojson",
|
||||
regions_offshore=RESOURCES + "regions_offshore.geojson",
|
||||
network=resources("networks/elec.nc"),
|
||||
tech_costs=lambda w: resources(
|
||||
f"costs_{config_provider('costs', 'year') (w)}.csv"
|
||||
),
|
||||
regions_onshore=resources("regions_onshore.geojson"),
|
||||
regions_offshore=resources("regions_offshore.geojson"),
|
||||
output:
|
||||
network=RESOURCES + "networks/elec_s{simpl}.nc",
|
||||
regions_onshore=RESOURCES + "regions_onshore_elec_s{simpl}.geojson",
|
||||
regions_offshore=RESOURCES + "regions_offshore_elec_s{simpl}.geojson",
|
||||
busmap=RESOURCES + "busmap_elec_s{simpl}.csv",
|
||||
connection_costs=RESOURCES + "connection_costs_s{simpl}.csv",
|
||||
network=resources("networks/elec_s{simpl}.nc"),
|
||||
regions_onshore=resources("regions_onshore_elec_s{simpl}.geojson"),
|
||||
regions_offshore=resources("regions_offshore_elec_s{simpl}.geojson"),
|
||||
busmap=resources("busmap_elec_s{simpl}.csv"),
|
||||
log:
|
||||
LOGS + "simplify_network/elec_s{simpl}.log",
|
||||
logs("simplify_network/elec_s{simpl}.log"),
|
||||
benchmark:
|
||||
BENCHMARKS + "simplify_network/elec_s{simpl}"
|
||||
benchmarks("simplify_network/elec_s{simpl}")
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=12000,
|
||||
@ -472,38 +486,42 @@ rule simplify_network:
|
||||
|
||||
rule cluster_network:
|
||||
params:
|
||||
cluster_network=config["clustering"]["cluster_network"],
|
||||
aggregation_strategies=config["clustering"].get("aggregation_strategies", {}),
|
||||
custom_busmap=config["enable"].get("custom_busmap", False),
|
||||
focus_weights=config["clustering"].get(
|
||||
"focus_weights", config.get("focus_weights")
|
||||
cluster_network=config_provider("clustering", "cluster_network"),
|
||||
aggregation_strategies=config_provider(
|
||||
"clustering", "aggregation_strategies", default={}
|
||||
),
|
||||
renewable_carriers=config["electricity"]["renewable_carriers"],
|
||||
conventional_carriers=config["electricity"].get("conventional_carriers", []),
|
||||
max_hours=config["electricity"]["max_hours"],
|
||||
length_factor=config["lines"]["length_factor"],
|
||||
costs=config["costs"],
|
||||
custom_busmap=config_provider("enable", "custom_busmap", default=False),
|
||||
focus_weights=config_provider("clustering", "focus_weights", default=None),
|
||||
renewable_carriers=config_provider("electricity", "renewable_carriers"),
|
||||
conventional_carriers=config_provider(
|
||||
"electricity", "conventional_carriers", default=[]
|
||||
),
|
||||
max_hours=config_provider("electricity", "max_hours"),
|
||||
length_factor=config_provider("lines", "length_factor"),
|
||||
costs=config_provider("costs"),
|
||||
input:
|
||||
network=RESOURCES + "networks/elec_s{simpl}.nc",
|
||||
regions_onshore=RESOURCES + "regions_onshore_elec_s{simpl}.geojson",
|
||||
regions_offshore=RESOURCES + "regions_offshore_elec_s{simpl}.geojson",
|
||||
busmap=ancient(RESOURCES + "busmap_elec_s{simpl}.csv"),
|
||||
custom_busmap=(
|
||||
network=resources("networks/elec_s{simpl}.nc"),
|
||||
regions_onshore=resources("regions_onshore_elec_s{simpl}.geojson"),
|
||||
regions_offshore=resources("regions_offshore_elec_s{simpl}.geojson"),
|
||||
busmap=ancient(resources("busmap_elec_s{simpl}.csv")),
|
||||
custom_busmap=lambda w: (
|
||||
"data/custom_busmap_elec_s{simpl}_{clusters}.csv"
|
||||
if config["enable"].get("custom_busmap", False)
|
||||
if config_provider("enable", "custom_busmap", default=False)(w)
|
||||
else []
|
||||
),
|
||||
tech_costs=COSTS,
|
||||
tech_costs=lambda w: resources(
|
||||
f"costs_{config_provider('costs', 'year') (w)}.csv"
|
||||
),
|
||||
output:
|
||||
network=RESOURCES + "networks/elec_s{simpl}_{clusters}.nc",
|
||||
regions_onshore=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson",
|
||||
regions_offshore=RESOURCES + "regions_offshore_elec_s{simpl}_{clusters}.geojson",
|
||||
busmap=RESOURCES + "busmap_elec_s{simpl}_{clusters}.csv",
|
||||
linemap=RESOURCES + "linemap_elec_s{simpl}_{clusters}.csv",
|
||||
network=resources("networks/elec_s{simpl}_{clusters}.nc"),
|
||||
regions_onshore=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"),
|
||||
regions_offshore=resources("regions_offshore_elec_s{simpl}_{clusters}.geojson"),
|
||||
busmap=resources("busmap_elec_s{simpl}_{clusters}.csv"),
|
||||
linemap=resources("linemap_elec_s{simpl}_{clusters}.csv"),
|
||||
log:
|
||||
LOGS + "cluster_network/elec_s{simpl}_{clusters}.log",
|
||||
logs("cluster_network/elec_s{simpl}_{clusters}.log"),
|
||||
benchmark:
|
||||
BENCHMARKS + "cluster_network/elec_s{simpl}_{clusters}"
|
||||
benchmarks("cluster_network/elec_s{simpl}_{clusters}")
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=10000,
|
||||
@ -515,18 +533,20 @@ rule cluster_network:
|
||||
|
||||
rule add_extra_components:
|
||||
params:
|
||||
extendable_carriers=config["electricity"]["extendable_carriers"],
|
||||
max_hours=config["electricity"]["max_hours"],
|
||||
costs=config["costs"],
|
||||
extendable_carriers=config_provider("electricity", "extendable_carriers"),
|
||||
max_hours=config_provider("electricity", "max_hours"),
|
||||
costs=config_provider("costs"),
|
||||
input:
|
||||
network=RESOURCES + "networks/elec_s{simpl}_{clusters}.nc",
|
||||
tech_costs=COSTS,
|
||||
network=resources("networks/elec_s{simpl}_{clusters}.nc"),
|
||||
tech_costs=lambda w: resources(
|
||||
f"costs_{config_provider('costs', 'year') (w)}.csv"
|
||||
),
|
||||
output:
|
||||
RESOURCES + "networks/elec_s{simpl}_{clusters}_ec.nc",
|
||||
resources("networks/elec_s{simpl}_{clusters}_ec.nc"),
|
||||
log:
|
||||
LOGS + "add_extra_components/elec_s{simpl}_{clusters}.log",
|
||||
logs("add_extra_components/elec_s{simpl}_{clusters}.log"),
|
||||
benchmark:
|
||||
BENCHMARKS + "add_extra_components/elec_s{simpl}_{clusters}_ec"
|
||||
benchmarks("add_extra_components/elec_s{simpl}_{clusters}_ec")
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=4000,
|
||||
@ -538,30 +558,31 @@ rule add_extra_components:
|
||||
|
||||
rule prepare_network:
|
||||
params:
|
||||
snapshots={
|
||||
"resolution": config["snapshots"].get("resolution", False),
|
||||
"segmentation": config["snapshots"].get("segmentation", False),
|
||||
},
|
||||
links=config["links"],
|
||||
lines=config["lines"],
|
||||
co2base=config["electricity"]["co2base"],
|
||||
co2limit_enable=config["electricity"].get("co2limit_enable", False),
|
||||
co2limit=config["electricity"]["co2limit"],
|
||||
gaslimit_enable=config["electricity"].get("gaslimit_enable", False),
|
||||
gaslimit=config["electricity"].get("gaslimit"),
|
||||
max_hours=config["electricity"]["max_hours"],
|
||||
costs=config["costs"],
|
||||
autarky=config["electricity"].get("autarky", {}),
|
||||
time_resolution=config_provider("clustering", "temporal", "resolution_elec"),
|
||||
links=config_provider("links"),
|
||||
lines=config_provider("lines"),
|
||||
co2base=config_provider("electricity", "co2base"),
|
||||
co2limit_enable=config_provider("electricity", "co2limit_enable", default=False),
|
||||
co2limit=config_provider("electricity", "co2limit"),
|
||||
gaslimit_enable=config_provider("electricity", "gaslimit_enable", default=False),
|
||||
gaslimit=config_provider("electricity", "gaslimit"),
|
||||
max_hours=config_provider("electricity", "max_hours"),
|
||||
costs=config_provider("costs"),
|
||||
adjustments=config_provider("adjustments", "electricity"),
|
||||
autarky=config_provider("electricity", "autarky", default={}),
|
||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||
input:
|
||||
RESOURCES + "networks/elec_s{simpl}_{clusters}_ec.nc",
|
||||
tech_costs=COSTS,
|
||||
co2_price=lambda w: RESOURCES + "co2_price.csv" if "Ept" in w.opts else [],
|
||||
resources("networks/elec_s{simpl}_{clusters}_ec.nc"),
|
||||
tech_costs=lambda w: resources(
|
||||
f"costs_{config_provider('costs', 'year') (w)}.csv"
|
||||
),
|
||||
co2_price=lambda w: resources("co2_price.csv") if "Ept" in w.opts else [],
|
||||
output:
|
||||
RESOURCES + "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
||||
resources("networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"),
|
||||
log:
|
||||
LOGS + "prepare_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.log",
|
||||
logs("prepare_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.log"),
|
||||
benchmark:
|
||||
(BENCHMARKS + "prepare_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}")
|
||||
(benchmarks("prepare_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}"))
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=4000,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2023-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -11,26 +11,32 @@ localrules:
|
||||
prepare_sector_networks,
|
||||
solve_elec_networks,
|
||||
solve_sector_networks,
|
||||
plot_networks,
|
||||
|
||||
|
||||
rule cluster_networks:
|
||||
input:
|
||||
expand(RESOURCES + "networks/elec_s{simpl}_{clusters}.nc", **config["scenario"]),
|
||||
expand(
|
||||
resources("networks/elec_s{simpl}_{clusters}.nc"),
|
||||
**config["scenario"],
|
||||
run=config["run"]["name"],
|
||||
),
|
||||
|
||||
|
||||
rule extra_components_networks:
|
||||
input:
|
||||
expand(
|
||||
RESOURCES + "networks/elec_s{simpl}_{clusters}_ec.nc", **config["scenario"]
|
||||
resources("networks/elec_s{simpl}_{clusters}_ec.nc"),
|
||||
**config["scenario"],
|
||||
run=config["run"]["name"],
|
||||
),
|
||||
|
||||
|
||||
rule prepare_elec_networks:
|
||||
input:
|
||||
expand(
|
||||
RESOURCES + "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
||||
**config["scenario"]
|
||||
resources("networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"),
|
||||
**config["scenario"],
|
||||
run=config["run"]["name"],
|
||||
),
|
||||
|
||||
|
||||
@ -39,7 +45,8 @@ rule prepare_sector_networks:
|
||||
expand(
|
||||
RESULTS
|
||||
+ "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||
**config["scenario"]
|
||||
**config["scenario"],
|
||||
run=config["run"]["name"],
|
||||
),
|
||||
|
||||
|
||||
@ -47,7 +54,8 @@ rule solve_elec_networks:
|
||||
input:
|
||||
expand(
|
||||
RESULTS + "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
||||
**config["scenario"]
|
||||
**config["scenario"],
|
||||
run=config["run"]["name"],
|
||||
),
|
||||
|
||||
|
||||
@ -56,25 +64,18 @@ rule solve_sector_networks:
|
||||
expand(
|
||||
RESULTS
|
||||
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||
**config["scenario"]
|
||||
**config["scenario"],
|
||||
run=config["run"]["name"],
|
||||
),
|
||||
|
||||
|
||||
rule solve_sector_networks_perfect:
|
||||
input:
|
||||
expand(
|
||||
RESULTS
|
||||
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
||||
**config["scenario"]
|
||||
),
|
||||
|
||||
|
||||
rule plot_networks:
|
||||
input:
|
||||
expand(
|
||||
RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
||||
**config["scenario"]
|
||||
**config["scenario"],
|
||||
run=config["run"]["name"],
|
||||
),
|
||||
|
||||
|
||||
@ -83,11 +84,13 @@ rule validate_elec_networks:
|
||||
expand(
|
||||
RESULTS
|
||||
+ "figures/.statistics_plots_elec_s{simpl}_{clusters}_ec_l{ll}_{opts}",
|
||||
**config["scenario"]
|
||||
**config["scenario"],
|
||||
run=config["run"]["name"],
|
||||
),
|
||||
expand(
|
||||
RESULTS
|
||||
+ "figures/.validation_{kind}_plots_elec_s{simpl}_{clusters}_ec_l{ll}_{opts}",
|
||||
**config["scenario"],
|
||||
kind=["production", "prices", "cross_border"]
|
||||
run=config["run"]["name"],
|
||||
kind=["production", "prices", "cross_border"],
|
||||
),
|
||||
|
103
rules/common.smk
103
rules/common.smk
@ -1,16 +1,88 @@
|
||||
# SPDX-FileCopyrightText: : 2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2023-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
import copy
|
||||
from functools import partial, lru_cache
|
||||
|
||||
import os, sys, glob
|
||||
|
||||
helper_source_path = [match for match in glob.glob("**/_helpers.py", recursive=True)]
|
||||
path = workflow.source_path("../scripts/_helpers.py")
|
||||
sys.path.insert(0, os.path.dirname(path))
|
||||
|
||||
for path in helper_source_path:
|
||||
path = os.path.dirname(os.path.abspath(path))
|
||||
sys.path.insert(0, os.path.abspath(path))
|
||||
from _helpers import validate_checksum, update_config_from_wildcards
|
||||
from snakemake.utils import update_config
|
||||
|
||||
from _helpers import validate_checksum
|
||||
|
||||
def get_config(config, keys, default=None):
|
||||
"""Retrieve a nested value from a dictionary using a tuple of keys."""
|
||||
value = config
|
||||
for key in keys:
|
||||
if isinstance(value, list):
|
||||
value = value[key]
|
||||
else:
|
||||
value = value.get(key, default)
|
||||
if value == default:
|
||||
return default
|
||||
return value
|
||||
|
||||
|
||||
def merge_configs(base_config, scenario_config):
|
||||
"""Merge base config with a specific scenario without modifying the original."""
|
||||
merged = copy.deepcopy(base_config)
|
||||
update_config(merged, scenario_config)
|
||||
return merged
|
||||
|
||||
|
||||
@lru_cache
|
||||
def scenario_config(scenario_name):
|
||||
"""Retrieve a scenario config based on the overrides from the scenario file."""
|
||||
return merge_configs(config, scenarios[scenario_name])
|
||||
|
||||
|
||||
def static_getter(wildcards, keys, default):
|
||||
"""Getter function for static config values."""
|
||||
config_with_wildcards = update_config_from_wildcards(
|
||||
config, wildcards, inplace=False
|
||||
)
|
||||
return get_config(config_with_wildcards, keys, default)
|
||||
|
||||
|
||||
def dynamic_getter(wildcards, keys, default):
|
||||
"""Getter function for dynamic config values based on scenario."""
|
||||
if "run" not in wildcards.keys():
|
||||
return get_config(config, keys, default)
|
||||
scenario_name = wildcards.run
|
||||
if scenario_name not in scenarios:
|
||||
raise ValueError(
|
||||
f"Scenario {scenario_name} not found in file {config['run']['scenario']['file']}."
|
||||
)
|
||||
config_with_scenario = scenario_config(scenario_name)
|
||||
config_with_wildcards = update_config_from_wildcards(
|
||||
config_with_scenario, wildcards, inplace=False
|
||||
)
|
||||
return get_config(config_with_wildcards, keys, default)
|
||||
|
||||
|
||||
def config_provider(*keys, default=None):
|
||||
"""Dynamically provide config values based on 'run' -> 'name'.
|
||||
|
||||
Usage in Snakemake rules would look something like:
|
||||
params:
|
||||
my_param=config_provider("key1", "key2", default="some_default_value")
|
||||
"""
|
||||
# Using functools.partial to freeze certain arguments in our getter functions.
|
||||
if config["run"].get("scenarios", {}).get("enable", False):
|
||||
return partial(dynamic_getter, keys=keys, default=default)
|
||||
else:
|
||||
return partial(static_getter, keys=keys, default=default)
|
||||
|
||||
|
||||
def solver_threads(w):
|
||||
solver_options = config_provider("solving", "solver_options")(w)
|
||||
option_set = config_provider("solving", "solver", "options")(w)
|
||||
threads = solver_options[option_set].get("threads", 4)
|
||||
return threads
|
||||
|
||||
|
||||
def memory(w):
|
||||
@ -34,9 +106,11 @@ def memory(w):
|
||||
|
||||
|
||||
def input_custom_extra_functionality(w):
|
||||
path = config["solving"]["options"].get("custom_extra_functionality", False)
|
||||
path = config_provider(
|
||||
"solving", "options", "custom_extra_functionality", default=False
|
||||
)(w)
|
||||
if path:
|
||||
return workflow.source_path(path)
|
||||
return os.path.join(os.path.dirname(workflow.snakefile), path)
|
||||
return []
|
||||
|
||||
|
||||
@ -56,16 +130,11 @@ def has_internet_access(url="www.zenodo.org") -> bool:
|
||||
conn.close()
|
||||
|
||||
|
||||
def input_eurostat(w):
|
||||
# 2016 includes BA, 2017 does not
|
||||
report_year = config["energy"]["eurostat_report_year"]
|
||||
return f"data/bundle-sector/eurostat-energy_balances-june_{report_year}_edition"
|
||||
|
||||
|
||||
def solved_previous_horizon(wildcards):
|
||||
planning_horizons = config["scenario"]["planning_horizons"]
|
||||
i = planning_horizons.index(int(wildcards.planning_horizons))
|
||||
def solved_previous_horizon(w):
|
||||
planning_horizons = config_provider("scenario", "planning_horizons")(w)
|
||||
i = planning_horizons.index(int(w.planning_horizons))
|
||||
planning_horizon_p = str(planning_horizons[i - 1])
|
||||
|
||||
return (
|
||||
RESULTS
|
||||
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_"
|
||||
|
@ -1,106 +1,192 @@
|
||||
# SPDX-FileCopyrightText: : 2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2023-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
|
||||
localrules:
|
||||
copy_config,
|
||||
|
||||
|
||||
if config["foresight"] != "perfect":
|
||||
|
||||
rule plot_network:
|
||||
rule plot_power_network_clustered:
|
||||
params:
|
||||
foresight=config["foresight"],
|
||||
plotting=config["plotting"],
|
||||
plotting=config_provider("plotting"),
|
||||
input:
|
||||
network=resources("networks/elec_s{simpl}_{clusters}.nc"),
|
||||
regions_onshore=resources(
|
||||
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||
),
|
||||
output:
|
||||
map=resources("maps/power-network-s{simpl}-{clusters}.pdf"),
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=4000,
|
||||
benchmark:
|
||||
benchmarks("plot_power_network_clustered/elec_s{simpl}_{clusters}")
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/plot_power_network_clustered.py"
|
||||
|
||||
rule plot_power_network:
|
||||
params:
|
||||
plotting=config_provider("plotting"),
|
||||
input:
|
||||
network=RESULTS
|
||||
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||
regions=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson",
|
||||
regions=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"),
|
||||
output:
|
||||
map=RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
||||
today=RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}-today.pdf",
|
||||
threads: 2
|
||||
resources:
|
||||
mem_mb=10000,
|
||||
log:
|
||||
RESULTS
|
||||
+ "logs/plot_power_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||
benchmark:
|
||||
(
|
||||
BENCHMARKS
|
||||
+ "plot_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||
RESULTS
|
||||
+ "benchmarks/plot_power_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||
)
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/plot_network.py"
|
||||
"../scripts/plot_power_network.py"
|
||||
|
||||
rule plot_hydrogen_network:
|
||||
params:
|
||||
plotting=config_provider("plotting"),
|
||||
foresight=config_provider("foresight"),
|
||||
input:
|
||||
network=RESULTS
|
||||
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||
regions=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"),
|
||||
output:
|
||||
map=RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-h2_network_{planning_horizons}.pdf",
|
||||
threads: 2
|
||||
resources:
|
||||
mem_mb=10000,
|
||||
log:
|
||||
RESULTS
|
||||
+ "logs/plot_hydrogen_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||
benchmark:
|
||||
(
|
||||
RESULTS
|
||||
+ "benchmarks/plot_hydrogen_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||
)
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/plot_hydrogen_network.py"
|
||||
|
||||
rule plot_gas_network:
|
||||
params:
|
||||
plotting=config_provider("plotting"),
|
||||
input:
|
||||
network=RESULTS
|
||||
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||
regions=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"),
|
||||
output:
|
||||
map=RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-ch4_network_{planning_horizons}.pdf",
|
||||
threads: 2
|
||||
resources:
|
||||
mem_mb=10000,
|
||||
log:
|
||||
RESULTS
|
||||
+ "logs/plot_gas_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||
benchmark:
|
||||
(
|
||||
RESULTS
|
||||
+ "benchmarks/plot_gas_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||
)
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/plot_gas_network.py"
|
||||
|
||||
|
||||
if config["foresight"] == "perfect":
|
||||
|
||||
rule plot_network:
|
||||
def output_map_year(w):
|
||||
return {
|
||||
f"map_{year}": RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_"
|
||||
+ f"{year}.pdf"
|
||||
for year in config_provider("scenario", "planning_horizons")(w)
|
||||
}
|
||||
|
||||
rule plot_power_network_perfect:
|
||||
params:
|
||||
foresight=config["foresight"],
|
||||
plotting=config["plotting"],
|
||||
plotting=config_provider("plotting"),
|
||||
input:
|
||||
network=RESULTS
|
||||
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
||||
regions=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson",
|
||||
regions=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"),
|
||||
output:
|
||||
**{
|
||||
f"map_{year}": RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_"
|
||||
+ f"{year}.pdf"
|
||||
for year in config["scenario"]["planning_horizons"]
|
||||
},
|
||||
unpack(output_map_year),
|
||||
threads: 2
|
||||
resources:
|
||||
mem_mb=10000,
|
||||
benchmark:
|
||||
BENCHMARKS
|
||||
+"postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years_benchmark"
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/plot_network.py"
|
||||
|
||||
|
||||
rule copy_config:
|
||||
params:
|
||||
RDIR=RDIR,
|
||||
output:
|
||||
RESULTS + "config.yaml",
|
||||
threads: 1
|
||||
resources:
|
||||
mem_mb=1000,
|
||||
benchmark:
|
||||
BENCHMARKS + "copy_config"
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/copy_config.py"
|
||||
"../scripts/plot_power_network_perfect.py"
|
||||
|
||||
|
||||
rule make_summary:
|
||||
params:
|
||||
foresight=config["foresight"],
|
||||
costs=config["costs"],
|
||||
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
|
||||
scenario=config["scenario"],
|
||||
foresight=config_provider("foresight"),
|
||||
costs=config_provider("costs"),
|
||||
snapshots=config_provider("snapshots"),
|
||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||
scenario=config_provider("scenario"),
|
||||
RDIR=RDIR,
|
||||
input:
|
||||
networks=expand(
|
||||
RESULTS
|
||||
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||
**config["scenario"]
|
||||
**config["scenario"],
|
||||
allow_missing=True,
|
||||
),
|
||||
costs="data/costs_{}.csv".format(config["costs"]["year"])
|
||||
if config["foresight"] == "overnight"
|
||||
else "data/costs_{}.csv".format(config["scenario"]["planning_horizons"][0]),
|
||||
plots=expand(
|
||||
costs=lambda w: (
|
||||
resources("costs_{}.csv".format(config_provider("costs", "year")(w)))
|
||||
if config_provider("foresight")(w) == "overnight"
|
||||
else resources(
|
||||
"costs_{}.csv".format(
|
||||
config_provider("scenario", "planning_horizons", 0)(w)
|
||||
)
|
||||
)
|
||||
),
|
||||
ac_plot=expand(
|
||||
resources("maps/power-network-s{simpl}-{clusters}.pdf"),
|
||||
**config["scenario"],
|
||||
allow_missing=True,
|
||||
),
|
||||
costs_plot=expand(
|
||||
RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
||||
**config["scenario"]
|
||||
**config["scenario"],
|
||||
allow_missing=True,
|
||||
),
|
||||
h2_plot=lambda w: expand(
|
||||
(
|
||||
RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-h2_network_{planning_horizons}.pdf"
|
||||
if config_provider("sector", "H2_network")(w)
|
||||
else []
|
||||
),
|
||||
**config["scenario"],
|
||||
allow_missing=True,
|
||||
),
|
||||
ch4_plot=lambda w: expand(
|
||||
(
|
||||
RESULTS
|
||||
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-ch4_network_{planning_horizons}.pdf"
|
||||
if config_provider("sector", "gas_network")(w)
|
||||
else []
|
||||
),
|
||||
**config["scenario"],
|
||||
allow_missing=True,
|
||||
),
|
||||
output:
|
||||
nodal_costs=RESULTS + "csvs/nodal_costs.csv",
|
||||
@ -122,9 +208,7 @@ rule make_summary:
|
||||
resources:
|
||||
mem_mb=10000,
|
||||
log:
|
||||
LOGS + "make_summary.log",
|
||||
benchmark:
|
||||
BENCHMARKS + "make_summary"
|
||||
RESULTS + "logs/make_summary.log",
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
@ -133,18 +217,19 @@ rule make_summary:
|
||||
|
||||
rule plot_summary:
|
||||
params:
|
||||
countries=config["countries"],
|
||||
planning_horizons=config["scenario"]["planning_horizons"],
|
||||
sector_opts=config["scenario"]["sector_opts"],
|
||||
emissions_scope=config["energy"]["emissions"],
|
||||
eurostat_report_year=config["energy"]["eurostat_report_year"],
|
||||
plotting=config["plotting"],
|
||||
countries=config_provider("countries"),
|
||||
planning_horizons=config_provider("scenario", "planning_horizons"),
|
||||
emissions_scope=config_provider("energy", "emissions"),
|
||||
plotting=config_provider("plotting"),
|
||||
foresight=config_provider("foresight"),
|
||||
co2_budget=config_provider("co2_budget"),
|
||||
sector=config_provider("sector"),
|
||||
RDIR=RDIR,
|
||||
input:
|
||||
costs=RESULTS + "csvs/costs.csv",
|
||||
energy=RESULTS + "csvs/energy.csv",
|
||||
balances=RESULTS + "csvs/supply_energy.csv",
|
||||
eurostat=input_eurostat,
|
||||
eurostat="data/eurostat/eurostat-energy_balances-april_2023_edition",
|
||||
co2="data/bundle-sector/eea/UNFCCC_v23.csv",
|
||||
output:
|
||||
costs=RESULTS + "graphs/costs.pdf",
|
||||
@ -154,9 +239,7 @@ rule plot_summary:
|
||||
resources:
|
||||
mem_mb=10000,
|
||||
log:
|
||||
LOGS + "plot_summary.log",
|
||||
benchmark:
|
||||
BENCHMARKS + "plot_summary"
|
||||
RESULTS + "logs/plot_summary.log",
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
@ -178,7 +261,7 @@ STATISTICS_BARPLOTS = [
|
||||
|
||||
rule plot_elec_statistics:
|
||||
params:
|
||||
plotting=config["plotting"],
|
||||
plotting=config_provider("plotting"),
|
||||
barplots=STATISTICS_BARPLOTS,
|
||||
input:
|
||||
network=RESULTS + "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
||||
|
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: : 2023 The PyPSA-Eur Authors
|
||||
# SPDX-FileCopyrightText: : 2023-2024 The PyPSA-Eur Authors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
@ -32,41 +32,22 @@ if config["enable"]["retrieve"] and config["enable"].get("retrieve_databundle",
|
||||
output:
|
||||
protected(expand("data/bundle/{file}", file=datafiles)),
|
||||
log:
|
||||
LOGS + "retrieve_databundle.log",
|
||||
"logs/retrieve_databundle.log",
|
||||
resources:
|
||||
mem_mb=1000,
|
||||
retries: 2
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
"../envs/retrieve.yaml"
|
||||
script:
|
||||
"../scripts/retrieve_databundle.py"
|
||||
|
||||
|
||||
if config["enable"].get("retrieve_irena"):
|
||||
|
||||
rule retrieve_irena:
|
||||
output:
|
||||
offwind="data/existing_infrastructure/offwind_capacity_IRENA.csv",
|
||||
onwind="data/existing_infrastructure/onwind_capacity_IRENA.csv",
|
||||
solar="data/existing_infrastructure/solar_capacity_IRENA.csv",
|
||||
log:
|
||||
LOGS + "retrieve_irena.log",
|
||||
resources:
|
||||
mem_mb=1000,
|
||||
retries: 2
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
script:
|
||||
"../scripts/retrieve_irena.py"
|
||||
|
||||
|
||||
if config["enable"]["retrieve"] and config["enable"].get("retrieve_cutout", True):
|
||||
|
||||
rule retrieve_cutout:
|
||||
input:
|
||||
HTTP.remote(
|
||||
"zenodo.org/record/6382570/files/{cutout}.nc",
|
||||
static=True,
|
||||
storage(
|
||||
"https://zenodo.org/record/6382570/files/{cutout}.nc",
|
||||
),
|
||||
output:
|
||||
protected("cutouts/" + CDIR + "{cutout}.nc"),
|
||||
@ -83,23 +64,19 @@ if config["enable"]["retrieve"] and config["enable"].get("retrieve_cutout", True
|
||||
if config["enable"]["retrieve"] and config["enable"].get("retrieve_cost_data", True):
|
||||
|
||||
rule retrieve_cost_data:
|
||||
input:
|
||||
HTTP.remote(
|
||||
"raw.githubusercontent.com/PyPSA/technology-data/{}/outputs/".format(
|
||||
config["costs"]["version"]
|
||||
)
|
||||
+ "costs_{year}.csv",
|
||||
keep_local=True,
|
||||
),
|
||||
params:
|
||||
version=config_provider("costs", "version"),
|
||||
output:
|
||||
"data/costs_{year}.csv",
|
||||
resources("costs_{year}.csv"),
|
||||
log:
|
||||
LOGS + "retrieve_cost_data_{year}.log",
|
||||
logs("retrieve_cost_data_{year}.log"),
|
||||
resources:
|
||||
mem_mb=1000,
|
||||
retries: 2
|
||||
run:
|
||||
move(input[0], output[0])
|
||||
conda:
|
||||
"../envs/retrieve.yaml"
|
||||
script:
|
||||
"../scripts/retrieve_cost_data.py"
|
||||
|
||||
|
||||
if config["enable"]["retrieve"] and config["enable"].get(
|
||||
@ -108,20 +85,19 @@ if config["enable"]["retrieve"] and config["enable"].get(
|
||||
|
||||
rule retrieve_natura_raster:
|
||||
input:
|
||||
HTTP.remote(
|
||||
"zenodo.org/record/4706686/files/natura.tiff",
|
||||
storage(
|
||||
"https://zenodo.org/record/4706686/files/natura.tiff",
|
||||
keep_local=True,
|
||||
static=True,
|
||||
),
|
||||
output:
|
||||
RESOURCES + "natura.tiff",
|
||||
resources("natura.tiff"),
|
||||
log:
|
||||
LOGS + "retrieve_natura_raster.log",
|
||||
logs("retrieve_natura_raster.log"),
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
retries: 2
|
||||
run:
|
||||
move(input[0], output[0])
|
||||
copyfile(input[0], output[0])
|
||||
validate_checksum(output[0], input[0])
|
||||
|
||||
|
||||
@ -139,28 +115,27 @@ if config["enable"]["retrieve"] and config["enable"].get(
|
||||
"h2_salt_caverns_GWh_per_sqkm.geojson",
|
||||
]
|
||||
|
||||
datafolders = [
|
||||
protected(
|
||||
directory("data/bundle-sector/eurostat-energy_balances-june_2016_edition")
|
||||
),
|
||||
protected(
|
||||
directory("data/bundle-sector/eurostat-energy_balances-may_2018_edition")
|
||||
),
|
||||
protected(directory("data/bundle-sector/jrc-idees-2015")),
|
||||
]
|
||||
|
||||
rule retrieve_sector_databundle:
|
||||
output:
|
||||
protected(expand("data/bundle-sector/{files}", files=datafiles)),
|
||||
*datafolders,
|
||||
protected(directory("data/bundle-sector/jrc-idees-2015")),
|
||||
log:
|
||||
LOGS + "retrieve_sector_databundle.log",
|
||||
"logs/retrieve_sector_databundle.log",
|
||||
retries: 2
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
"../envs/retrieve.yaml"
|
||||
script:
|
||||
"../scripts/retrieve_sector_databundle.py"
|
||||
|
||||
rule retrieve_eurostat_data:
|
||||
output:
|
||||
directory("data/eurostat/eurostat-energy_balances-april_2023_edition"),
|
||||
log:
|
||||
"logs/retrieve_eurostat_data.log",
|
||||
retries: 2
|
||||
script:
|
||||
"../scripts/retrieve_eurostat_data.py"
|
||||
|
||||
|
||||
if config["enable"]["retrieve"]:
|
||||
datafiles = [
|
||||
@ -173,14 +148,12 @@ if config["enable"]["retrieve"]:
|
||||
|
||||
rule retrieve_gas_infrastructure_data:
|
||||
output:
|
||||
protected(
|
||||
expand("data/gas_network/scigrid-gas/data/{files}", files=datafiles)
|
||||
),
|
||||
expand("data/gas_network/scigrid-gas/data/{files}", files=datafiles),
|
||||
log:
|
||||
LOGS + "retrieve_gas_infrastructure_data.log",
|
||||
"logs/retrieve_gas_infrastructure_data.log",
|
||||
retries: 2
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
"../envs/retrieve.yaml"
|
||||
script:
|
||||
"../scripts/retrieve_gas_infrastructure_data.py"
|
||||
|
||||
@ -188,20 +161,32 @@ if config["enable"]["retrieve"]:
|
||||
if config["enable"]["retrieve"]:
|
||||
|
||||
rule retrieve_electricity_demand:
|
||||
params:
|
||||
versions=["2019-06-05", "2020-10-06"],
|
||||
output:
|
||||
"data/electricity_demand_raw.csv",
|
||||
log:
|
||||
"logs/retrieve_electricity_demand.log",
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
retries: 2
|
||||
conda:
|
||||
"../envs/retrieve.yaml"
|
||||
script:
|
||||
"../scripts/retrieve_electricity_demand.py"
|
||||
|
||||
|
||||
if config["enable"]["retrieve"]:
|
||||
|
||||
rule retrieve_synthetic_electricity_demand:
|
||||
input:
|
||||
HTTP.remote(
|
||||
"data.open-power-system-data.org/time_series/{version}/time_series_60min_singleindex.csv".format(
|
||||
version="2019-06-05"
|
||||
if config["snapshots"]["end"] < "2019"
|
||||
else "2020-10-06"
|
||||
),
|
||||
keep_local=True,
|
||||
static=True,
|
||||
storage(
|
||||
"https://zenodo.org/records/10820928/files/demand_hourly.csv",
|
||||
),
|
||||
output:
|
||||
RESOURCES + "load_raw.csv",
|
||||
"data/load_synthetic_raw.csv",
|
||||
log:
|
||||
LOGS + "retrieve_electricity_demand.log",
|
||||
"logs/retrieve_synthetic_electricity_demand.log",
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
retries: 2
|
||||
@ -213,15 +198,14 @@ if config["enable"]["retrieve"]:
|
||||
|
||||
rule retrieve_ship_raster:
|
||||
input:
|
||||
HTTP.remote(
|
||||
storage(
|
||||
"https://zenodo.org/record/6953563/files/shipdensity_global.zip",
|
||||
keep_local=True,
|
||||
static=True,
|
||||
),
|
||||
output:
|
||||
protected("data/shipdensity_global.zip"),
|
||||
log:
|
||||
LOGS + "retrieve_ship_raster.log",
|
||||
"logs/retrieve_ship_raster.log",
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
retries: 2
|
||||
@ -236,9 +220,8 @@ if config["enable"]["retrieve"]:
|
||||
# Website: https://land.copernicus.eu/global/products/lc
|
||||
rule download_copernicus_land_cover:
|
||||
input:
|
||||
HTTP.remote(
|
||||
"zenodo.org/record/3939050/files/PROBAV_LC100_global_v3.0.1_2019-nrt_Discrete-Classification-map_EPSG-4326.tif",
|
||||
static=True,
|
||||
storage(
|
||||
"https://zenodo.org/record/3939050/files/PROBAV_LC100_global_v3.0.1_2019-nrt_Discrete-Classification-map_EPSG-4326.tif",
|
||||
),
|
||||
output:
|
||||
"data/Copernicus_LC100_global_v3.0.1_2019-nrt_Discrete-Classification-map_EPSG-4326.tif",
|
||||
@ -253,9 +236,8 @@ if config["enable"]["retrieve"]:
|
||||
# Website: https://ec.europa.eu/jrc/en/luisa
|
||||
rule retrieve_luisa_land_cover:
|
||||
input:
|
||||
HTTP.remote(
|
||||
"jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/LUISA/EUROPE/Basemaps/LandUse/2018/LATEST/LUISA_basemap_020321_50m.tif",
|
||||
static=True,
|
||||
storage(
|
||||
"https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/LUISA/EUROPE/Basemaps/LandUse/2018/LATEST/LUISA_basemap_020321_50m.tif",
|
||||
),
|
||||
output:
|
||||
"data/LUISA_basemap_020321_50m.tif",
|
||||
@ -298,11 +280,7 @@ if config["enable"]["retrieve"]:
|
||||
# Website: https://www.protectedplanet.net/en/thematic-areas/wdpa
|
||||
rule download_wdpa:
|
||||
input:
|
||||
HTTP.remote(
|
||||
url,
|
||||
static=True,
|
||||
keep_local=True,
|
||||
),
|
||||
storage(url, keep_local=True),
|
||||
params:
|
||||
zip="data/WDPA_shp.zip",
|
||||
folder=directory("data/WDPA"),
|
||||
@ -316,7 +294,7 @@ if config["enable"]["retrieve"]:
|
||||
layer_path = (
|
||||
f"/vsizip/{params.folder}/WDPA_{bYYYY}_Public_shp_{i}.zip"
|
||||
)
|
||||
print(f"Adding layer {i+1} of 3 to combined output file.")
|
||||
print(f"Adding layer {i + 1} of 3 to combined output file.")
|
||||
shell("ogr2ogr -f gpkg -update -append {output.gpkg} {layer_path}")
|
||||
|
||||
rule download_wdpa_marine:
|
||||
@ -324,9 +302,8 @@ if config["enable"]["retrieve"]:
|
||||
# extract the main zip and then merge the contained 3 zipped shapefiles
|
||||
# Website: https://www.protectedplanet.net/en/thematic-areas/marine-protected-areas
|
||||
input:
|
||||
HTTP.remote(
|
||||
f"d1gam3xoknrgr2.cloudfront.net/current/WDPA_WDOECM_{bYYYY}_Public_marine_shp.zip",
|
||||
static=True,
|
||||
storage(
|
||||
f"https://d1gam3xoknrgr2.cloudfront.net/current/WDPA_WDOECM_{bYYYY}_Public_marine_shp.zip",
|
||||
keep_local=True,
|
||||
),
|
||||
params:
|
||||
@ -340,7 +317,7 @@ if config["enable"]["retrieve"]:
|
||||
for i in range(3):
|
||||
# vsizip is special driver for directly working with zipped shapefiles in ogr2ogr
|
||||
layer_path = f"/vsizip/{params.folder}/WDPA_WDOECM_{bYYYY}_Public_marine_shp_{i}.zip"
|
||||
print(f"Adding layer {i+1} of 3 to combined output file.")
|
||||
print(f"Adding layer {i + 1} of 3 to combined output file.")
|
||||
shell("ogr2ogr -f gpkg -update -append {output.gpkg} {layer_path}")
|
||||
|
||||
|
||||
@ -349,15 +326,14 @@ if config["enable"]["retrieve"]:
|
||||
|
||||
rule retrieve_monthly_co2_prices:
|
||||
input:
|
||||
HTTP.remote(
|
||||
storage(
|
||||
"https://www.eex.com/fileadmin/EEX/Downloads/EUA_Emission_Spot_Primary_Market_Auction_Report/Archive_Reports/emission-spot-primary-market-auction-report-2019-data.xls",
|
||||
keep_local=True,
|
||||
static=True,
|
||||
),
|
||||
output:
|
||||
"data/validation/emission-spot-primary-market-auction-report-2019-data.xls",
|
||||
log:
|
||||
LOGS + "retrieve_monthly_co2_prices.log",
|
||||
"logs/retrieve_monthly_co2_prices.log",
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
retries: 2
|
||||
@ -371,11 +347,11 @@ if config["enable"]["retrieve"]:
|
||||
output:
|
||||
"data/validation/energy-price-trends-xlsx-5619002.xlsx",
|
||||
log:
|
||||
LOGS + "retrieve_monthly_fuel_prices.log",
|
||||
"logs/retrieve_monthly_fuel_prices.log",
|
||||
resources:
|
||||
mem_mb=5000,
|
||||
retries: 2
|
||||
conda:
|
||||
"../envs/environment.yaml"
|
||||
"../envs/retrieve.yaml"
|
||||
script:
|
||||
"../scripts/retrieve_monthly_fuel_prices.py"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user