Skip to content

Representation of German district heating systems as subnodes #58

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 797 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
797 commits
Select commit Hold shift + click to select a range
b41324e
start improving emissions accounting
lindnemi Jul 4, 2024
a94ca40
consider land use change emissions
lindnemi Jul 4, 2024
cb05026
accounting synfuels as carbon neutral
lindnemi Jul 5, 2024
5024b64
account negative CHP emissions correctly
lindnemi Jul 5, 2024
db488aa
some more keys for investments
lindnemi Jul 5, 2024
304b880
more keys in sector dict
lindnemi Jul 5, 2024
52c24f5
fix plotting issue
lindnemi Jul 5, 2024
d860733
more comprehensive reporting of Renewable Gases
lindnemi Jul 8, 2024
dc97ce7
Merge branch 'main' into even-more-exports
lindnemi Jul 8, 2024
59b97b0
replace assert by warning
lindnemi Jul 8, 2024
99c9d54
Merge pull request #97 from PyPSA/even-more-exports
lindnemi Jul 8, 2024
97721a7
change V2G and offwind assumptions
lindnemi Jul 9, 2024
96f754c
taking config[industry][DRI_fraction] from FORECAST to sort out coal …
toniseibold Jul 9, 2024
0bb044b
change key for ariadne 1 DB
lindnemi Jul 9, 2024
f73317f
reading steam_fractions from FORECAST Final Energy excl Non-Energy Use
toniseibold Jul 9, 2024
7ae9612
exclude industry_sector_ratios.csv from shared resources
toniseibold Jul 10, 2024
446d44d
remove steam_fraction config from config.yaml
toniseibold Jul 10, 2024
93cf951
update submodule
lindnemi Jul 10, 2024
a51d075
PyPSA-Ariadne specific steam fractions independent from FORECAST
toniseibold Jul 10, 2024
905275b
bug fix not initializing industry since it's already in the scenarios…
toniseibold Jul 10, 2024
7febe6e
improve numerical stability
lindnemi Jul 12, 2024
5db9f6f
improve numerical stability
lindnemi Jul 12, 2024
94385a2
Merge branch 'main' into fix_industry_sector
lindnemi Jul 12, 2024
ffa89fb
Merge pull request #133 from PyPSA/fix_industry_sector
lindnemi Jul 12, 2024
a099f37
update submodule
lindnemi Jul 12, 2024
dfbe97e
exclude the "co2 sequestered" store from accounting
lindnemi Jul 12, 2024
cbab80d
get "link" dont drop "store" to avoid errors
lindnemi Jul 12, 2024
bc33283
minor improvements for exports
lindnemi Jul 15, 2024
cb034cf
Merge branch 'main' into database-pypsa-de
lindnemi Jul 15, 2024
d8dd908
Merge pull request #129 from PyPSA/database-pypsa-de
lindnemi Jul 15, 2024
05ea328
checkout corresponding branch in pypsa-eur
lindnemi Jul 15, 2024
58353d2
add config prefix
lindnemi Jul 17, 2024
4d6f5c0
correct year for renewable estimation
lindnemi Jul 17, 2024
4ef47da
limit offshore expansion in 2030
lindnemi Jul 18, 2024
5805e4e
new cutout from Fabian
lindnemi Jul 22, 2024
506ef1e
additional keys
lindnemi Jul 22, 2024
2738d71
update submodule
lindnemi Jul 23, 2024
5e2bb1c
use the modded n.statistics to get investments
lindnemi Jul 23, 2024
10823ab
add offwind transmission investment
lindnemi Jul 24, 2024
5c99468
minor fixes
lindnemi Jul 24, 2024
b50b441
add endpoints to investment averages
lindnemi Jul 24, 2024
ce826c3
adapt to pypsa upstream changes
lindnemi Jul 24, 2024
8452faf
minor fix
lindnemi Jul 24, 2024
3136f71
explicitly report offwind investments
lindnemi Jul 24, 2024
463b899
update submodule
lindnemi Jul 25, 2024
1e0bff9
update submodule
lindnemi Jul 25, 2024
59333db
reduce DH buildout potential, especially for CurPol and WorstCase
lindnemi Jul 25, 2024
d8f0d65
changes to update submodule to master
lindnemi Jul 26, 2024
16f1df8
Merge branch 'main' into cutout-2019
lindnemi Jul 29, 2024
42d1ca1
update to upstream changes
lindnemi Jul 29, 2024
ec3fa2d
adapt to pypsa changes
lindnemi Jul 29, 2024
4583111
Merge branch 'main' into investment-exports
lindnemi Jul 29, 2024
7c58bf8
rename investment -> overnight_cost
lindnemi Jul 30, 2024
a14c4a5
more investment -> overnight_cost renaming
lindnemi Jul 30, 2024
bfe6e73
final touches for the renaming
lindnemi Jul 30, 2024
083e6ab
added new script for DH modifications
Jun 12, 2024
6a9286c
function for update of urban heat loads
Jun 14, 2024
dbc2c37
Preserve aggregate DH demand
Jun 17, 2024
aa12459
Merge pull request #143 from PyPSA/investment-exports
lindnemi Jul 30, 2024
1559e74
update submodule
lindnemi Jul 30, 2024
2eb035d
quickfix for pypsa version until new release
lindnemi Jul 30, 2024
8f3d743
add subnodes and loads
Jul 31, 2024
11bf8cf
adjust snapshots
lindnemi Jul 31, 2024
d40cd9f
update submodule
lindnemi Jul 31, 2024
0ed85d1
Merge branch 'main' into high-spatial
lindnemi Jul 31, 2024
1154cbc
ignore errors when dropping stores
lindnemi Jul 31, 2024
547782a
Merge pull request #107 from PyPSA/high-spatial
lindnemi Jul 31, 2024
8449ab8
Update pypsa version
lindnemi Jul 31, 2024
276542b
use NEP DC costs
lindnemi Aug 1, 2024
64ee6f6
make unravelling of oil bus consistent with new refineries
nworbmot Aug 2, 2024
d231363
upstream fix for connection_overnight_cost
lindnemi Aug 2, 2024
c5bd066
fix renwable: config key
lindnemi Aug 2, 2024
4df0915
Merge branch 'main' into cutout-2019
lindnemi Aug 2, 2024
dd0e396
Merge pull request #142 from PyPSA/cutout-2019
lindnemi Aug 2, 2024
e381c93
rename cutout
lindnemi Aug 2, 2024
ca52fef
Merge branch 'main' into refineries
lindnemi Aug 2, 2024
986bfee
update exporter
lindnemi Aug 2, 2024
b71842a
update DC stations costs
lindnemi Aug 2, 2024
02815cd
Merge branch 'main' into update-offwind-connection-cost
lindnemi Aug 2, 2024
2d295ca
Merge pull request #149 from PyPSA/update-offwind-connection-cost
lindnemi Aug 2, 2024
ab563e6
Create Changelog.md
lindnemi Aug 5, 2024
e2e4149
Create PULL_REQUEST_TEMPLATE.md
lindnemi Aug 5, 2024
7e06505
ci: add validator
lkstrp Aug 2, 2024
15efdb1
select images and add repo owner path
lkstrp Aug 5, 2024
1778dc1
load chps, change function header
Aug 6, 2024
f9096c2
Merge pull request #111 from PyPSA/ci-config
lindnemi Aug 6, 2024
048c46d
Merge branch 'main' into refineries
lindnemi Aug 6, 2024
8435176
Merge pull request #150 from PyPSA/refineries
lindnemi Aug 6, 2024
1d12751
Update PULL_REQUEST_TEMPLATE.md
lindnemi Aug 6, 2024
c15fdb3
Update Changelog.md
lindnemi Aug 6, 2024
d7c98c2
update submodule
lindnemi Aug 6, 2024
009f660
Update .pre-commit-config.yaml
lkstrp Aug 6, 2024
ceb7ce8
remove reuse check
lkstrp Aug 6, 2024
ca1f43c
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 6, 2024
63c83f9
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 6, 2024
98a2acb
Merge pull request #156 from PyPSA/lkstrp-patch-1
lindnemi Aug 6, 2024
fc8bf80
Using config_provider for additional functionality exclusively (#154)
toniseibold Aug 6, 2024
0324120
Create .git-blame-ignore-revs (#158)
lkstrp Aug 6, 2024
f807830
minor changes for running single node network (#160)
JulianGeis Aug 7, 2024
d90aca1
Fix hydrogen import boundary condition (#159)
toniseibold Aug 7, 2024
0a060dc
Accounting renewable CH4 without spatially resolved CH4 network (#146)
toniseibold Aug 7, 2024
d21a5c2
Hydrogen Gas Turbines and Retrofitting of Gas Turbines (#151)
toniseibold Aug 9, 2024
db914f6
minor fixes
lindnemi Aug 9, 2024
4aab9c8
Include spain (#163)
lindnemi Aug 9, 2024
1fef55b
[pre-commit.ci] pre-commit autoupdate (#165)
pre-commit-ci[bot] Aug 13, 2024
8dd49cb
Update post-discretization size for H2 (#167)
lindnemi Aug 13, 2024
004f4bc
ci: adjust ci to new validator (#164)
lkstrp Aug 14, 2024
0bd5246
Modify dh systems (#113)
cpschau Aug 14, 2024
d87f4af
Limit German CO2 sequestration in each investment year (#170)
nworbmot Aug 15, 2024
2e10863
fix (#169)
lkstrp Aug 15, 2024
33916de
update submodule
lindnemi Aug 15, 2024
0e53799
ci: add dependabot (#172)
lkstrp Aug 16, 2024
b69cd06
merge main
Aug 19, 2024
77f0bdd
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 19, 2024
1eef9c6
Bump lkstrp/pypsa-validator in the github-actions group (#173)
dependabot[bot] Aug 19, 2024
4df060c
Merge branch 'main' into add_subnodes
lkstrp Aug 19, 2024
7bc5749
changed data source to Fernwärmeatlas; changed script structure; incl…
Aug 20, 2024
9944878
fixed nodal EB with gas boiler; fixed snakemake issues
Aug 21, 2024
c7ec368
changed input for add_brownfield
Aug 21, 2024
1fbecbc
geolocations from file instead of geocoding
Aug 21, 2024
c97e56e
added links and stores except from heat pumps; adapted snakemake inpu…
Aug 23, 2024
fe47933
add ASHP
Aug 27, 2024
c081ff4
fix bugs for heat pump integration
Aug 27, 2024
039aaad
Bump lkstrp/pypsa-validator to `v0.1.4` (#178)
lkstrp Sep 2, 2024
0f6e528
Merging master into Ariadne 2 (#177)
lindnemi Sep 3, 2024
1dcc6ea
Biogas (#184)
lindnemi Sep 6, 2024
cb041ab
Adding Italy (#183)
toniseibold Sep 6, 2024
d79ae3d
Updating cost horizon data (#182)
toniseibold Sep 6, 2024
6293d3b
Adding overnight costs in `modify_prenetwork` (#181)
toniseibold Sep 6, 2024
055aca6
update submodule
lindnemi Sep 6, 2024
bcd73c1
bump prefix
lindnemi Sep 6, 2024
a4c3104
Implement rising hub heights for wind; profile smoothing for offshore…
nworbmot Sep 6, 2024
70d9739
update submodule
lindnemi Sep 9, 2024
c69e83b
Bump lkstrp/pypsa-validator to v0.2.0 (#185)
lkstrp Sep 10, 2024
8b67210
improve exporter stability
lindnemi Sep 10, 2024
f6013f0
importve numerical stability of exporter
lindnemi Sep 10, 2024
68318ae
update snakemake
lindnemi Sep 10, 2024
b7acb59
update submodule
lindnemi Sep 10, 2024
9595f7c
update submodule
lindnemi Sep 10, 2024
ddeeae1
downgrade submodule
lindnemi Sep 11, 2024
e5f56de
update pypsa and submodule
lindnemi Sep 11, 2024
7e36af1
Bump lkstrp/pypsa-validator from 0.2.0 to 0.2.1 in the github-actions…
dependabot[bot] Sep 13, 2024
a5ce933
make exporter more robust
lindnemi Sep 13, 2024
07c1edd
add gas trade to exporter
lindnemi Sep 13, 2024
01871cc
Update Germany specific costs (NEP, onwind, pellets) (#193)
lindnemi Sep 16, 2024
abf8fc1
Merge remote-tracking branch 'origin/main' into add_subnodes
Sep 16, 2024
e7ec95e
add marginal_cost for international trade links
lindnemi Sep 17, 2024
ebdddd0
round exported data to 5 significant decimals
lindnemi Sep 17, 2024
e799e12
Merge remote-tracking branch 'origin/main' into add_subnodes
Sep 17, 2024
f5e8d2b
adjustments to cop netcdf and existing heating distribution
Sep 18, 2024
cd75664
fix extension of existing_heating df
Sep 19, 2024
5b9ed82
fix snakemake issue for existing heating
Sep 19, 2024
2d6949e
dirty fix for workflow and optional output
Sep 20, 2024
1a2ed80
match CHP by LAU shapes
Sep 24, 2024
913da0b
added industry heat load
Sep 24, 2024
8dbb0cd
make workflow run after merge
Oct 22, 2024
ade4e85
add heat vent and remove load shedder
Oct 23, 2024
ce3d85b
fix workflow
Nov 14, 2024
1901d24
uncomment get_data
Nov 14, 2024
e76741b
add type hints and docstrings; clean-up unused code snippets; simplif…
Dec 2, 2024
f5d4363
change variable name row to subnode
Dec 2, 2024
892ead0
add fernwaermeatlas data
Dec 2, 2024
11b3ec9
change docstring to numpy
Dec 12, 2024
c1aaae8
add comments
Dec 12, 2024
57aa50c
another docstring conversion to numpy format
Dec 13, 2024
af60c52
one more numpy docstring
Dec 13, 2024
fa36e00
Pre-merge: remapped directory structure
Feb 13, 2025
189a7c6
Merge branch 'add_subnodes_remapped' into add_subnodes
Feb 14, 2025
c5def7c
Adjust add_existing_baseyear to allow for subnodes
Feb 14, 2025
d2f2721
fix snakefile
Feb 17, 2025
7bee646
Add geothermal-sourced central heat pumps (#1359)
amos-schledorn Dec 2, 2024
e072a5c
fix workflow
Dec 13, 2024
b37c040
cleaned up unnecessary code
TomKae00 Dec 4, 2024
da66842
EEM paper setup
Feb 25, 2025
a988333
replace corine with osm land cover data
Feb 25, 2025
330884d
mv ptes land eligibility to prepare_subnodes; fix ptes initialization…
Feb 27, 2025
092e3ed
update prepare_sector_network
Feb 27, 2025
de4fe8a
increase eem resolution
Feb 27, 2025
d7496e6
update TTES efficiencies
Feb 27, 2025
ae7ad2e
fix land eligibility
Mar 7, 2025
b9c106f
adjust snakemake mem requirements
Mar 7, 2025
c656cd5
fix eem config
Mar 7, 2025
37e98f4
fix ptes query
Mar 7, 2025
4caf3e3
multithreaded potential calculation
Mar 10, 2025
8677562
use raster data from census to refine district heating areas
Mar 12, 2025
2a723b5
add resolution for exclusion container as parameter
Mar 13, 2025
7fae6de
Merge branch 'main' into refine_dh_areas
Mar 19, 2025
980d468
preliminary fixes after merge
Mar 19, 2025
d3d9f3a
Add PTES and introduce PTES/TES energy-to-power ratios (#1546)
TomKae00 Mar 14, 2025
9087994
adjustments to new geothermal potentials and heat_stores
Mar 20, 2025
d8ee5ef
hot fix for missing geothermal potentials in GB
Mar 20, 2025
b73bdb5
adjust reference of df with subnodes to correctly handle demand(subno…
Mar 20, 2025
df75573
CHP plants in buffered dh area based on census instead of LAU
Mar 20, 2025
e77bb20
fix COP revision of predecessing network
Mar 24, 2025
a416e5b
single execution of build_existing_chp_de
Mar 24, 2025
3c56fb6
adjust path in snakefile to networks subdirectory
Mar 24, 2025
72e7c5d
convert chps to eops if no urban central heat bus is available
Mar 24, 2025
eb33bfa
reference cities as bus locations
Mar 24, 2025
8c40e95
adjust docstring
Mar 24, 2025
3c85e7f
adjust query of chp input path to removal of wildcards
Mar 24, 2025
594ee66
updating mean cost data
toniseibold Mar 19, 2025
979f565
rename sysgf scenario file
Mar 24, 2025
d0944a1
adjust chp path in add_existing_baseyear inputs
Mar 24, 2025
eba68fe
rename referenced sysgf scenario file
Mar 24, 2025
e76d4fd
Revert "CHP plants in buffered dh area based on census instead of LAU"
Mar 25, 2025
4242bd4
remove outdated heat source rules
Mar 28, 2025
54e5146
adjust subnode loads
Apr 3, 2025
0bab6d5
remove if-clause from snakefile
Apr 3, 2025
fb91229
skip adjustments in prepare_sector_network if subnodes activated
Apr 3, 2025
b3cc8d1
Merge remote-tracking branch 'origin/main' into refine_dh_areas
Apr 3, 2025
e874752
aligned mean costs files
Apr 4, 2025
5224f7b
clean-up prepare_sector_network
Apr 4, 2025
1106d9f
clean-up heating files
Apr 4, 2025
04f2ae9
Fix: wildcards of build_renewable_profiles for scenario management 'b…
lindnemi Apr 14, 2025
df93666
rename prefix
lindnemi Apr 14, 2025
03e343d
use absolute imports
lindnemi Apr 14, 2025
4ed9713
switch back to get from _helpers
lindnemi Apr 14, 2025
4ef92fc
remove duplicate aviation sector
lindnemi Apr 15, 2025
07b8b3f
get correct investments year for aviation
lindnemi Apr 15, 2025
9e17e5c
load_costs instead of prepare_costs
lindnemi Apr 15, 2025
89f9ecc
simplify nep_costs
lindnemi Apr 15, 2025
d6aca0b
adjust to new naming of wind generators with resource classes
lindnemi Apr 15, 2025
306e989
some more conforming with upstream changes
lindnemi Apr 15, 2025
0ef0b64
add another color for 2050
lindnemi Apr 15, 2025
ac429e1
Merge remote-tracking branch 'origin/main' into refine_dh_areas
Apr 16, 2025
a846eec
Merge remote-tracking branch 'origin/merge-master-april' into refine_…
Apr 16, 2025
c7a7038
complement datafiles
Apr 16, 2025
62e1016
start by making Mix the default scenario
lindnemi May 7, 2025
4589583
make script more robust
lindnemi May 7, 2025
d9c35d1
- change syntax of national co2_budget
lindnemi May 7, 2025
fafaf90
simplify scenario definitions, fallback to defaults more often
lindnemi May 7, 2025
94941cd
change prefix
lindnemi May 7, 2025
ac8456f
ariadne_template is data not resources
lindnemi May 12, 2025
653fd49
fix rounding error
lindnemi May 12, 2025
396fa62
Merge branch 'main' into simplify-scenarios
lindnemi May 12, 2025
e4a22b1
disable interactive mode in final plotting script
lindnemi May 13, 2025
aae794b
Merge branch 'simplify-scenarios' of github.com:PyPSA/pypsa-de into s…
lindnemi May 13, 2025
891eb9f
decouple ariadne DB pre-workflow from scenario management
lindnemi May 13, 2025
014c222
fix key error
lindnemi May 14, 2025
1f7ce92
review: addition, removal and renaming of config parameters; removed …
May 14, 2025
7b86796
Merge remote-tracking branch 'origin/main' into refine_dh_areas
May 14, 2025
c3f2f80
Merge remote-tracking branch 'origin/simplify-scenarios' into refine_…
May 14, 2025
486ac2b
adjust configs
May 15, 2025
643ea21
allow for dynamic ptes capacity and remove cases for ptes as storage …
May 15, 2025
e506603
revert restriction of mother node ptes potentials
May 15, 2025
98d094e
Merge remote-tracking branch 'origin/main' into refine_dh_areas
May 15, 2025
9f8f909
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 15, 2025
a3f9a04
Modularize and refactor add_subnodes
May 15, 2025
e5abe49
doc: extended docstring of add_subnodes
May 15, 2025
378e998
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 105 additions & 1 deletion Snakefile
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,101 @@ rule build_egon_data:
"scripts/pypsa-de/build_egon_data.py"


rule prepare_district_heating_subnodes:
params:
district_heating=config_provider("sector", "district_heating"),
baseyear=config_provider("scenario", "planning_horizons", 0),
input:
heating_technologies_nuts3=resources("heating_technologies_nuts3.geojson"),
regions_onshore=resources("regions_onshore_base_s_{clusters}.geojson"),
fernwaermeatlas="data/fernwaermeatlas/fernwaermeatlas.xlsx",
cities="data/fernwaermeatlas/cities_geolocations.geojson",
lau_regions="data/lau_regions.zip",
census=storage(
"https://www.zensus2022.de/static/Zensus_Veroeffentlichung/Zensus2022_Heizungsart.zip",
keep_local=True,
),
osm_land_cover=storage(
"https://heidata.uni-heidelberg.de/api/access/datafile/23053?format=original&gbrecs=true",
keep_local=True,
),
natura=ancient("data/bundle/natura/natura.tiff"),
groundwater_depth=storage(
"http://thredds-gfnl.usc.es/thredds/fileServer/GLOBALWTDFTP/annualmeans/EURASIA_WTD_annualmean.nc",
keep_local=True,
),
output:
district_heating_subnodes=resources(
"district_heating_subnodes_base_s_{clusters}.geojson"
),
regions_onshore_extended=resources(
"regions_onshore_base-extended_s_{clusters}.geojson"
),
regions_onshore_restricted=resources(
"regions_onshore_base-restricted_s_{clusters}.geojson"
),
resources:
mem_mb=20000,
script:
"scripts/pypsa-de/prepare_district_heating_subnodes.py"


baseyear_value = config["scenario"]["planning_horizons"][0]


rule add_district_heating_subnodes:
params:
district_heating=config_provider("sector", "district_heating"),
baseyear=config_provider("scenario", "planning_horizons", 0),
sector=config_provider("sector"),
heat_pump_sources=config_provider(
"sector", "heat_pump_sources", "urban central"
),
heat_utilisation_potentials=config_provider(
"sector", "district_heating", "heat_utilisation_potentials"
),
direct_utilisation_heat_sources=config_provider(
"sector", "district_heating", "direct_utilisation_heat_sources"
),
adjustments=config_provider("adjustments", "sector"),
input:
unpack(input_heat_source_power),
network=resources(
"networks/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.nc"
),
subnodes=resources("district_heating_subnodes_base_s_{clusters}.geojson"),
nuts3=resources("nuts3_shapes.geojson"),
regions_onshore=resources("regions_onshore_base_s_{clusters}.geojson"),
fernwaermeatlas="data/fernwaermeatlas/fernwaermeatlas.xlsx",
cities="data/fernwaermeatlas/cities_geolocations.geojson",
cop_profiles=resources("cop_profiles_base_s_{clusters}_{planning_horizons}.nc"),
direct_heat_source_utilisation_profiles=resources(
"direct_heat_source_utilisation_profiles_base_s_{clusters}_{planning_horizons}.nc"
),
existing_heating_distribution=resources(
f"existing_heating_distribution_base_s_{{clusters}}_{baseyear_value}.csv"
),
lau_regions="data/lau_regions.zip",
output:
network=resources(
"networks/base-extended_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.nc"
),
district_heating_subnodes=resources(
"district_heating_subnodes_base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.geojson"
),
existing_heating_distribution_extended=(
resources(
"existing_heating_distribution_base-extended_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.csv"
)
if baseyear_value != "{planning_horizons}"
else []
),
resources:
mem_mb=10000,
script:
"scripts/pypsa-de/add_district_heating_subnodes.py"


ruleorder: modify_district_heat_share > build_district_heat_share


Expand Down Expand Up @@ -481,6 +576,10 @@ rule retrieve_mastr:


rule build_existing_chp_de:
params:
district_heating_subnodes=config_provider(
"sector", "district_heating", "subnodes"
),
input:
mastr_biomass="data/mastr/bnetza_open_mastr_2023-08-08_B_biomass.csv",
mastr_combustion="data/mastr/bnetza_open_mastr_2023-08-08_B_combustion.csv",
Expand All @@ -489,8 +588,13 @@ rule build_existing_chp_de:
keep_local=True,
),
regions=resources("regions_onshore_base_s_{clusters}.geojson"),
district_heating_subnodes=(
resources("district_heating_subnodes_base_s_{clusters}.geojson")
if config_provider("sector", "district_heating", "subnodes", "enable")
else []
),
output:
german_chp=resources("german_chp_{clusters}.csv"),
german_chp=resources("german_chp_base_s_{clusters}.csv"),
log:
logs("build_existing_chp_de_{clusters}.log"),
script:
Expand Down
19 changes: 18 additions & 1 deletion config/config.de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#run
run:
prefix: 20250507_simple_scenarios
prefix: 20250514_dhsubnodes
name:
# - ExPol
- KN2045_Mix
Expand Down Expand Up @@ -289,6 +289,23 @@ sector:
2040: 0.6
2045: 0.8
2050: 1.0
subnodes:
enable: false
nlargest: 40
census_areas:
enable: true
min_district_heating_share: 0.01
processing:
min_area: [10000, 100000, 0, 1000000]
buffer_factor: [0.01, 0.05, 0.05, 0]
limit_ptes_potential:
enable: true
limit_mother_nodes: true
excluder_resolution: 10
osm_landcover_codes: [21, 23, 32, 33]
max_groundwater_depth: -10
min_area: 10000
default_capacity: 4500
heat_vent:
urban central: true
urban decentral: true
Expand Down
1 change: 1 addition & 0 deletions config/config.default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -889,6 +889,7 @@ costs:
home battery storage: 0
water tank charger: 0.03
central water pit charger: 0.025
central water pit charger: 0.025
emission_prices:
enable: false
co2: 0.
Expand Down
97 changes: 97 additions & 0 deletions config/config.sysgf.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# SPDX-FileCopyrightText: : 2017-2024 The PyPSA-Eur Authors
#
# SPDX-License-Identifier: CC0-1.0

run:
prefix: 20250514_dhsubnodes
name:
- Baseline
# - No_PTES
# - LowPTESCAPEX
# - HighPTESCAPEX
# - LowStandingLosses
# - HighStandingLosses
# - LowGroundWaterDepth
# - HighGroundWaterDepth
# - LowEtPRatio
# - HighEtPRatio
scenarios:
enable: true
manual_file: config/scenarios.sysgf.yaml
file: config/scenarios.automated.yaml
shared_resources:
policy: base #stops recalculating
exclude:
- existing_heating.csv # specify files which should not be shared between scenarios
- costs
- retrieve_cost # This is necessary to save retrieve_cost_data_{year}.log in the correct folder
- industry_sector_ratios
- build_industry_sector_ratios # This is necessary to save build_industry_sector_ratios_data.log in the correct folder
- modify_existing_heating

foresight: myopic

scenario:
ll:
- vopt
clusters:
- 27 #current options: 27, 49
opts:
- ''
sector_opts:
- none
planning_horizons:
# - 2020
# - 2025
# - 2030
# - 2035
# - 2040
- 2045

clustering:
temporal:
resolution_sector: 365H

adjustments:
electricity: false
sector:
absolute:
StorageUnit:
urban central water pits:
standing_loss: 0.00012121
urban central water tanks:
standing_loss: 0.00015476

wasserstoff_kernnetz:
enable: false

sector:
district_heating:
potential: 0.5
subnodes:
enable: true
limited_heat_sources:
geothermal:
ignore_missing_regions: true
heat_pump_sources:
urban central:
- air
- geothermal
urban decentral:
- air
rural:
- air
- ground

solving:
constraints:
CCL: false
EQ: false
BAU: false
SAFE: false
efuel_export_ban: false
limits_capacity_max: {}
limits_capacity_min: {}
limits_volume_max: {}
limits_volume_min: {}
limits_power_max: {}
99 changes: 99 additions & 0 deletions config/scenarios.sysgf.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# -*- coding: utf-8 -*-
# SPDX-FileCopyrightText: : 2017-2023 The PyPSA-Eur Authors
#
# SPDX-License-Identifier: MIT

Baseline:
foresight: myopic
iiasa_database:
reference_scenario: KN2045_Mix
co2_budget_DE_source: UBA

No_PTES:
adjustments:
electricity: false
sector:
absolute:
Store:
urban central water pits:
e_nom_max: 0

LowPTESCAPEX:
adjustments:
electricity: false
sector:
factor:
Store:
urban central water pits:
capital_cost: 0.5
absolute:
Store:
urban central water pits:
standing_loss: 0.00012121
urban central water tanks:
standing_loss: 0.00015476

HighPTESCAPEX:
adjustments:
electricity: false
sector:
factor:
Store:
urban central water pits:
capital_cost: 2
absolute:
Store:
urban central water pits:
standing_loss: 0.00012121
urban central water tanks:
standing_loss: 0.00015476

LowStandingLosses:
adjustments:
electricity: false
sector:
absolute:
Store:
urban central water pits:
standing_loss: 0

HighStandingLosses:
adjustments:
electricity: false
sector:
absolute:
Store:
urban central water pits:
standing_loss: 0.0012121

LowGroundWaterDepth:
sector:
district_heating:
subnodes:
limit_ptes_potential:
max_groundwater_depth: -25

HighGroundWaterDepth:
sector:
district_heating:
subnodes:
limit_ptes_potential:
max_groundwater_depth: 0

LowEtPRatio:
adjustments:
electricity: false
sector:
factor:
Link:
urban central water pits charger:
energy to power ratio: 0.5

HighEtPRatio:
adjustments:
electricity: false
sector:
factor:
Link:
urban central water pits charger:
energy to power ratio: 2
Loading
Loading