From eab315291e502365db01e3058bd7487af2a0c48f Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Wed, 24 Jul 2024 13:19:57 +0200 Subject: [PATCH] remove {scope} wildcard (#1171) * remove {scope} wildcard * do not create removed files --- doc/release_notes.rst | 2 + doc/wildcards.rst | 7 ---- rules/build_sector.smk | 60 ++++++++------------------- scripts/build_cop_profiles.py | 19 +++------ scripts/build_hourly_heat_demand.py | 4 +- scripts/build_temperature_profiles.py | 6 +-- 6 files changed, 29 insertions(+), 69 deletions(-) diff --git a/doc/release_notes.rst b/doc/release_notes.rst index b6c0db54..0aa97e5a 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -39,6 +39,8 @@ Upcoming Release * Bugfix: Impose minimum value of zero for district heating progress between current and future market share in :mod:`build_district_heat_share`. +* The ``{scope}`` wildcard was removed, since its outputs were not used. + * Enable parallelism in :mod:`determine_availability_matrix_MD_UA.py` and remove plots. This requires the use of temporary files. * Updated pre-built `weather data cutouts diff --git a/doc/wildcards.rst b/doc/wildcards.rst index f8e60e20..9ddb7b0a 100644 --- a/doc/wildcards.rst +++ b/doc/wildcards.rst @@ -142,13 +142,6 @@ The ``{sector_opts}`` wildcard is only used for sector-coupling studies. :widths: 10,20,10,10 :file: configtables/sector-opts.csv -.. _scope: - -The ``{scope}`` wildcard -======================== - -Takes values ``residential``, ``urban``, ``total``. - .. _planning_horizons: The ``{planning_horizons}`` wildcard diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 6614b163..139ced1f 100644 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -151,18 +151,18 @@ rule build_daily_heat_demand: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), input: - pop_layout=resources("pop_layout_{scope}.nc"), + pop_layout=resources("pop_layout_total.nc"), regions_onshore=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"), cutout=heat_demand_cutout, output: - heat_demand=resources("daily_heat_demand_{scope}_elec_s{simpl}_{clusters}.nc"), + heat_demand=resources("daily_heat_demand_total_elec_s{simpl}_{clusters}.nc"), resources: mem_mb=20000, threads: 8 log: - logs("build_daily_heat_demand_{scope}_{simpl}_{clusters}.loc"), + logs("build_daily_heat_demand_total_{simpl}_{clusters}.loc"), benchmark: - benchmarks("build_daily_heat_demand/{scope}_s{simpl}_{clusters}") + benchmarks("build_daily_heat_demand/total_s{simpl}_{clusters}") conda: "../envs/environment.yaml" script: @@ -175,16 +175,16 @@ rule build_hourly_heat_demand: drop_leap_day=config_provider("enable", "drop_leap_day"), input: heat_profile="data/heat_load_profile_BDEW.csv", - heat_demand=resources("daily_heat_demand_{scope}_elec_s{simpl}_{clusters}.nc"), + heat_demand=resources("daily_heat_demand_total_elec_s{simpl}_{clusters}.nc"), output: - heat_demand=resources("hourly_heat_demand_{scope}_elec_s{simpl}_{clusters}.nc"), + heat_demand=resources("hourly_heat_demand_total_elec_s{simpl}_{clusters}.nc"), resources: mem_mb=2000, threads: 8 log: - logs("build_hourly_heat_demand_{scope}_{simpl}_{clusters}.loc"), + logs("build_hourly_heat_demand_total_{simpl}_{clusters}.loc"), benchmark: - benchmarks("build_hourly_heat_demand/{scope}_s{simpl}_{clusters}") + benchmarks("build_hourly_heat_demand/total_s{simpl}_{clusters}") conda: "../envs/environment.yaml" script: @@ -196,19 +196,19 @@ rule build_temperature_profiles: snapshots=config_provider("snapshots"), drop_leap_day=config_provider("enable", "drop_leap_day"), input: - pop_layout=resources("pop_layout_{scope}.nc"), + pop_layout=resources("pop_layout_total.nc"), regions_onshore=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"), cutout=heat_demand_cutout, output: - temp_soil=resources("temp_soil_{scope}_elec_s{simpl}_{clusters}.nc"), - temp_air=resources("temp_air_{scope}_elec_s{simpl}_{clusters}.nc"), + temp_soil=resources("temp_soil_total_elec_s{simpl}_{clusters}.nc"), + temp_air=resources("temp_air_total_elec_s{simpl}_{clusters}.nc"), resources: mem_mb=20000, threads: 8 log: - logs("build_temperature_profiles_{scope}_{simpl}_{clusters}.log"), + logs("build_temperature_profiles_total_{simpl}_{clusters}.log"), benchmark: - benchmarks("build_temperature_profiles/{scope}_s{simpl}_{clusters}") + benchmarks("build_temperature_profiles/total_s{simpl}_{clusters}") conda: "../envs/environment.yaml" script: @@ -220,18 +220,10 @@ rule build_cop_profiles: heat_pump_sink_T=config_provider("sector", "heat_pump_sink_T"), input: temp_soil_total=resources("temp_soil_total_elec_s{simpl}_{clusters}.nc"), - temp_soil_rural=resources("temp_soil_rural_elec_s{simpl}_{clusters}.nc"), - temp_soil_urban=resources("temp_soil_urban_elec_s{simpl}_{clusters}.nc"), temp_air_total=resources("temp_air_total_elec_s{simpl}_{clusters}.nc"), - temp_air_rural=resources("temp_air_rural_elec_s{simpl}_{clusters}.nc"), - temp_air_urban=resources("temp_air_urban_elec_s{simpl}_{clusters}.nc"), output: cop_soil_total=resources("cop_soil_total_elec_s{simpl}_{clusters}.nc"), - cop_soil_rural=resources("cop_soil_rural_elec_s{simpl}_{clusters}.nc"), - cop_soil_urban=resources("cop_soil_urban_elec_s{simpl}_{clusters}.nc"), cop_air_total=resources("cop_air_total_elec_s{simpl}_{clusters}.nc"), - cop_air_rural=resources("cop_air_rural_elec_s{simpl}_{clusters}.nc"), - cop_air_urban=resources("cop_air_urban_elec_s{simpl}_{clusters}.nc"), resources: mem_mb=20000, log: @@ -263,18 +255,18 @@ rule build_solar_thermal_profiles: drop_leap_day=config_provider("enable", "drop_leap_day"), solar_thermal=config_provider("solar_thermal"), input: - pop_layout=resources("pop_layout_{scope}.nc"), + pop_layout=resources("pop_layout_total.nc"), regions_onshore=resources("regions_onshore_elec_s{simpl}_{clusters}.geojson"), cutout=solar_thermal_cutout, output: - solar_thermal=resources("solar_thermal_{scope}_elec_s{simpl}_{clusters}.nc"), + solar_thermal=resources("solar_thermal_total_elec_s{simpl}_{clusters}.nc"), resources: mem_mb=20000, threads: 16 log: - logs("build_solar_thermal_profiles_{scope}_s{simpl}_{clusters}.log"), + logs("build_solar_thermal_profiles_total_s{simpl}_{clusters}.log"), benchmark: - benchmarks("build_solar_thermal_profiles/{scope}_s{simpl}_{clusters}") + benchmarks("build_solar_thermal_profiles/total_s{simpl}_{clusters}") conda: "../envs/environment.yaml" script: @@ -1024,32 +1016,14 @@ rule prepare_sector_network: "district_heat_share_elec_s{simpl}_{clusters}_{planning_horizons}.csv" ), temp_soil_total=resources("temp_soil_total_elec_s{simpl}_{clusters}.nc"), - temp_soil_rural=resources("temp_soil_rural_elec_s{simpl}_{clusters}.nc"), - temp_soil_urban=resources("temp_soil_urban_elec_s{simpl}_{clusters}.nc"), temp_air_total=resources("temp_air_total_elec_s{simpl}_{clusters}.nc"), - temp_air_rural=resources("temp_air_rural_elec_s{simpl}_{clusters}.nc"), - temp_air_urban=resources("temp_air_urban_elec_s{simpl}_{clusters}.nc"), cop_soil_total=resources("cop_soil_total_elec_s{simpl}_{clusters}.nc"), - cop_soil_rural=resources("cop_soil_rural_elec_s{simpl}_{clusters}.nc"), - cop_soil_urban=resources("cop_soil_urban_elec_s{simpl}_{clusters}.nc"), cop_air_total=resources("cop_air_total_elec_s{simpl}_{clusters}.nc"), - cop_air_rural=resources("cop_air_rural_elec_s{simpl}_{clusters}.nc"), - cop_air_urban=resources("cop_air_urban_elec_s{simpl}_{clusters}.nc"), solar_thermal_total=lambda w: ( resources("solar_thermal_total_elec_s{simpl}_{clusters}.nc") if config_provider("sector", "solar_thermal")(w) else [] ), - solar_thermal_urban=lambda w: ( - resources("solar_thermal_urban_elec_s{simpl}_{clusters}.nc") - if config_provider("sector", "solar_thermal")(w) - else [] - ), - solar_thermal_rural=lambda w: ( - resources("solar_thermal_rural_elec_s{simpl}_{clusters}.nc") - if config_provider("sector", "solar_thermal")(w) - else [] - ), egs_potentials=lambda w: ( resources("egs_potentials_s{simpl}_{clusters}.csv") if config_provider("sector", "enhanced_geothermal", "enable")(w) diff --git a/scripts/build_cop_profiles.py b/scripts/build_cop_profiles.py index 2a47198b..a6d99947 100644 --- a/scripts/build_cop_profiles.py +++ b/scripts/build_cop_profiles.py @@ -21,20 +21,12 @@ Relevant Settings Inputs: ------- - ``resources//temp_soil_total_elec_s_.nc``: Soil temperature (total) time series. -- ``resources//temp_soil_rural_elec_s_.nc``: Soil temperature (rural) time series. -- ``resources//temp_soil_urban_elec_s_.nc``: Soil temperature (urban) time series. - ``resources//temp_air_total_elec_s_.nc``: Ambient air temperature (total) time series. -- ``resources//temp_air_rural_elec_s_.nc``: Ambient air temperature (rural) time series. -- ``resources//temp_air_urban_elec_s_.nc``: Ambient air temperature (urban) time series. Outputs: -------- - ``resources/cop_soil_total_elec_s_.nc``: COP (ground-sourced) time series (total). -- ``resources/cop_soil_rural_elec_s_.nc``: COP (ground-sourced) time series (rural). -- ``resources/cop_soil_urban_elec_s_.nc``: COP (ground-sourced) time series (urban). - ``resources/cop_air_total_elec_s_.nc``: COP (air-sourced) time series (total). -- ``resources/cop_air_rural_elec_s_.nc``: COP (air-sourced) time series (rural). -- ``resources/cop_air_urban_elec_s_.nc``: COP (air-sourced) time series (urban). References @@ -67,12 +59,11 @@ if __name__ == "__main__": set_scenario_config(snakemake) - for area in ["total", "urban", "rural"]: - for source in ["air", "soil"]: - source_T = xr.open_dataarray(snakemake.input[f"temp_{source}_{area}"]) + for source in ["air", "soil"]: + source_T = xr.open_dataarray(snakemake.input[f"temp_{source}_total"]) - delta_T = snakemake.params.heat_pump_sink_T - source_T + delta_T = snakemake.params.heat_pump_sink_T - source_T - cop = coefficient_of_performance(delta_T, source) + cop = coefficient_of_performance(delta_T, source) - cop.to_netcdf(snakemake.output[f"cop_{source}_{area}"]) + cop.to_netcdf(snakemake.output[f"cop_{source}_total"]) diff --git a/scripts/build_hourly_heat_demand.py b/scripts/build_hourly_heat_demand.py index c28860f3..8573a198 100644 --- a/scripts/build_hourly_heat_demand.py +++ b/scripts/build_hourly_heat_demand.py @@ -22,12 +22,12 @@ Inputs ------ - ``data/heat_load_profile_BDEW.csv``: Intraday heat profile for water and space heating demand for the residential and services sectors for weekends and weekdays. -- ``resources/daily_heat_demand__elec_s_.nc``: Daily heat demand per cluster. +- ``resources/daily_heat_demand_total_elec_s_.nc``: Daily heat demand per cluster. Outputs ------- -- ``resources/hourly_heat_demand__elec_s_.nc``: +- ``resources/hourly_heat_demand_total_elec_s_.nc``: """ from itertools import product diff --git a/scripts/build_temperature_profiles.py b/scripts/build_temperature_profiles.py index 493bd08f..8e07ee87 100644 --- a/scripts/build_temperature_profiles.py +++ b/scripts/build_temperature_profiles.py @@ -25,15 +25,15 @@ Relevant Settings Inputs ------ -- ``resources//pop_layout_.nc``: +- ``resources//pop_layout_total.nc``: - ``resources//regions_onshore_elec_s_.geojson``: - ``cutout``: Weather data cutout, as specified in config Outputs ------- -- ``resources/temp_soil__elec_s_.nc``: -- ``resources/temp_air__elec_s_.nc` +- ``resources/temp_soil_total_elec_s_.nc``: +- ``resources/temp_air_total_elec_s_.nc` """ import atlite