remove {weather_year} wildcard
This commit is contained in:
parent
e6347621f9
commit
c2011bce49
@ -56,7 +56,6 @@ localrules:
|
|||||||
|
|
||||||
|
|
||||||
wildcard_constraints:
|
wildcard_constraints:
|
||||||
weather_year="[0-9]{4}|",
|
|
||||||
simpl="[a-zA-Z0-9]*",
|
simpl="[a-zA-Z0-9]*",
|
||||||
clusters="[0-9]+(m|c)?|all",
|
clusters="[0-9]+(m|c)?|all",
|
||||||
ll="(v|c)([0-9\.]+|opt)",
|
ll="(v|c)([0-9\.]+|opt)",
|
||||||
|
@ -34,7 +34,6 @@ foresight: overnight
|
|||||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#scenario
|
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#scenario
|
||||||
# Wildcard docs in https://pypsa-eur.readthedocs.io/en/latest/wildcards.html
|
# Wildcard docs in https://pypsa-eur.readthedocs.io/en/latest/wildcards.html
|
||||||
scenario:
|
scenario:
|
||||||
weather_year: [''] # for backwards compatibility
|
|
||||||
simpl:
|
simpl:
|
||||||
- ''
|
- ''
|
||||||
ll:
|
ll:
|
||||||
|
@ -12,8 +12,6 @@ run:
|
|||||||
shared_cutouts: true
|
shared_cutouts: true
|
||||||
|
|
||||||
scenario:
|
scenario:
|
||||||
weather_year:
|
|
||||||
- ""
|
|
||||||
clusters:
|
clusters:
|
||||||
- 5
|
- 5
|
||||||
opts:
|
opts:
|
||||||
|
@ -13,8 +13,6 @@ run:
|
|||||||
foresight: myopic
|
foresight: myopic
|
||||||
|
|
||||||
scenario:
|
scenario:
|
||||||
weather_year:
|
|
||||||
- ""
|
|
||||||
ll:
|
ll:
|
||||||
- v1.5
|
- v1.5
|
||||||
clusters:
|
clusters:
|
||||||
|
@ -12,8 +12,6 @@ run:
|
|||||||
|
|
||||||
|
|
||||||
scenario:
|
scenario:
|
||||||
weather_year:
|
|
||||||
- ""
|
|
||||||
ll:
|
ll:
|
||||||
- v1.5
|
- v1.5
|
||||||
clusters:
|
clusters:
|
||||||
|
@ -87,7 +87,7 @@ facilitate running multiple scenarios through a single command
|
|||||||
|
|
||||||
For each wildcard, a **list of values** is provided. The rule
|
For each wildcard, a **list of values** is provided. The rule
|
||||||
``solve_all_elec_networks`` will trigger the rules for creating
|
``solve_all_elec_networks`` will trigger the rules for creating
|
||||||
``results/networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc`` for **all
|
``results/networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc`` for **all
|
||||||
combinations** of the provided wildcard values as defined by Python's
|
combinations** of the provided wildcard values as defined by Python's
|
||||||
`itertools.product(...)
|
`itertools.product(...)
|
||||||
<https://docs.python.org/2/library/itertools.html#itertools.product>`_ function
|
<https://docs.python.org/2/library/itertools.html#itertools.product>`_ function
|
||||||
|
@ -28,9 +28,9 @@ if config["enable"].get("retrieve_opsd_load_data", True):
|
|||||||
input:
|
input:
|
||||||
ancient("data/electricity_demand_raw.csv"),
|
ancient("data/electricity_demand_raw.csv"),
|
||||||
output:
|
output:
|
||||||
resources("electricity_demand{weather_year}.csv"),
|
resources("electricity_demand.csv"),
|
||||||
log:
|
log:
|
||||||
logs("build_electricity_demand{weather_year}.log"),
|
logs("build_electricity_demand.log"),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=5000,
|
mem_mb=5000,
|
||||||
conda:
|
conda:
|
||||||
@ -45,9 +45,9 @@ if config["enable"].get("retrieve_artificial_load_data", False):
|
|||||||
input:
|
input:
|
||||||
ancient("data/load_artificial_raw.csv"),
|
ancient("data/load_artificial_raw.csv"),
|
||||||
output:
|
output:
|
||||||
resources("electricity_demand{weather_year}.csv"),
|
resources("electricity_demand.csv"),
|
||||||
log:
|
log:
|
||||||
logs("build_artificial_load_data{weather_year}.log"),
|
logs("build_artificial_load_data.log"),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=5000,
|
mem_mb=5000,
|
||||||
conda:
|
conda:
|
||||||
@ -192,11 +192,11 @@ if config["enable"].get("build_cutout", False):
|
|||||||
input:
|
input:
|
||||||
rules.build_cutout.input,
|
rules.build_cutout.input,
|
||||||
output:
|
output:
|
||||||
protected("cutouts/" + CDIR + "{cutout}-{weather_year}.nc"),
|
protected("cutouts/" + CDIR + "{cutout}-.nc"),
|
||||||
log:
|
log:
|
||||||
logs(CDIR + "build_cutout/{cutout}-{weather_year}.log"),
|
logs(CDIR + "build_cutout/{cutout}-.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(CDIR + "build_cutout_{cutout}-{weather_year}")
|
benchmarks(CDIR + "build_cutout_{cutout}-")
|
||||||
threads: ATLITE_NPROCESSES
|
threads: ATLITE_NPROCESSES
|
||||||
resources:
|
resources:
|
||||||
mem_mb=ATLITE_NPROCESSES * 1000,
|
mem_mb=ATLITE_NPROCESSES * 1000,
|
||||||
@ -342,11 +342,11 @@ rule build_renewable_profiles:
|
|||||||
+ config_provider("renewable", w.technology, "cutout")(w)
|
+ config_provider("renewable", w.technology, "cutout")(w)
|
||||||
+ ".nc",
|
+ ".nc",
|
||||||
output:
|
output:
|
||||||
profile=resources("profile{weather_year}_{technology}.nc"),
|
profile=resources("profile_{technology}.nc"),
|
||||||
log:
|
log:
|
||||||
logs("build_renewable_profile{weather_year}_{technology}.log"),
|
logs("build_renewable_profile_{technology}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_renewable_profiles{weather_year}_{technology}")
|
benchmarks("build_renewable_profiles_{technology}")
|
||||||
threads: config["atlite"].get("nprocesses", 4)
|
threads: config["atlite"].get("nprocesses", 4)
|
||||||
resources:
|
resources:
|
||||||
mem_mb=config["atlite"].get("nprocesses", 4) * 5000,
|
mem_mb=config["atlite"].get("nprocesses", 4) * 5000,
|
||||||
@ -390,10 +390,10 @@ rule build_hydro_profile:
|
|||||||
+ config_provider("renewable", "hydro", "cutout")(w)
|
+ config_provider("renewable", "hydro", "cutout")(w)
|
||||||
+ ".nc",
|
+ ".nc",
|
||||||
output:
|
output:
|
||||||
profile=resources("profile{weather_year}_hydro.nc"),
|
profile=resources("profile_hydro.nc"),
|
||||||
eia_hydro=resources("eia_hydro_stats{weather_year}.csv"),
|
eia_hydro=resources("eia_hydro_stats.csv"),
|
||||||
log:
|
log:
|
||||||
logs("build_hydro_profile{weather_year}.log"),
|
logs("build_hydro_profile.log"),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=5000,
|
mem_mb=5000,
|
||||||
conda:
|
conda:
|
||||||
@ -428,7 +428,7 @@ rule build_line_rating:
|
|||||||
|
|
||||||
def input_profile_tech(w):
|
def input_profile_tech(w):
|
||||||
return {
|
return {
|
||||||
f"profile_{tech}": resources(f"profile{{weather_year}}_{tech}.nc")
|
f"profile_{tech}": resources(f"profile{}_{tech}.nc")
|
||||||
for tech in config_provider("electricity", "renewable_carriers")(w)
|
for tech in config_provider("electricity", "renewable_carriers")(w)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -475,15 +475,15 @@ rule add_electricity:
|
|||||||
if config_provider("conventional", "dynamic_fuel_price")(w)
|
if config_provider("conventional", "dynamic_fuel_price")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
load=resources("electricity_demand{weather_year}.csv"),
|
load=resources("electricity_demand.csv"),
|
||||||
nuts3_shapes=resources("nuts3_shapes.geojson"),
|
nuts3_shapes=resources("nuts3_shapes.geojson"),
|
||||||
ua_md_gdp="data/GDP_PPP_30arcsec_v3_mapped_default.csv",
|
ua_md_gdp="data/GDP_PPP_30arcsec_v3_mapped_default.csv",
|
||||||
output:
|
output:
|
||||||
resources("networks/elec{weather_year}.nc"),
|
resources("networks/elec.nc"),
|
||||||
log:
|
log:
|
||||||
logs("add_electricity{weather_year}.log"),
|
logs("add_electricity.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("add_electricity{weather_year}")
|
benchmarks("add_electricity")
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
@ -506,24 +506,24 @@ rule simplify_network:
|
|||||||
p_max_pu=config_provider("links", "p_max_pu", default=1.0),
|
p_max_pu=config_provider("links", "p_max_pu", default=1.0),
|
||||||
costs=config_provider("costs"),
|
costs=config_provider("costs"),
|
||||||
input:
|
input:
|
||||||
network=resources("networks/elec{weather_year}.nc"),
|
network=resources("networks/elec.nc"),
|
||||||
tech_costs=lambda w: resources(
|
tech_costs=lambda w: resources(
|
||||||
f"costs_{config_provider('costs', 'year')(w)}.csv"
|
f"costs_{config_provider('costs', 'year')(w)}.csv"
|
||||||
),
|
),
|
||||||
regions_onshore=resources("regions_onshore.geojson"),
|
regions_onshore=resources("regions_onshore.geojson"),
|
||||||
regions_offshore=resources("regions_offshore.geojson"),
|
regions_offshore=resources("regions_offshore.geojson"),
|
||||||
output:
|
output:
|
||||||
network=resources("networks/elec{weather_year}_s{simpl}.nc"),
|
network=resources("networks/elec_s{simpl}.nc"),
|
||||||
regions_onshore=resources("regions_onshore_elec{weather_year}_s{simpl}.geojson"),
|
regions_onshore=resources("regions_onshore_elec_s{simpl}.geojson"),
|
||||||
regions_offshore=resources(
|
regions_offshore=resources(
|
||||||
"regions_offshore_elec{weather_year}_s{simpl}.geojson"
|
"regions_offshore_elec_s{simpl}.geojson"
|
||||||
),
|
),
|
||||||
busmap=resources("busmap_elec{weather_year}_s{simpl}.csv"),
|
busmap=resources("busmap_elec_s{simpl}.csv"),
|
||||||
connection_costs=resources("connection_costs{weather_year}_s{simpl}.csv"),
|
connection_costs=resources("connection_costs_s{simpl}.csv"),
|
||||||
log:
|
log:
|
||||||
logs("simplify_network/elec{weather_year}_s{simpl}.log"),
|
logs("simplify_network/elec_s{simpl}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("simplify_network/elec{weather_year}_s{simpl}")
|
benchmarks("simplify_network/elec_s{simpl}")
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=12000,
|
mem_mb=12000,
|
||||||
@ -549,12 +549,12 @@ rule cluster_network:
|
|||||||
length_factor=config_provider("lines", "length_factor"),
|
length_factor=config_provider("lines", "length_factor"),
|
||||||
costs=config_provider("costs"),
|
costs=config_provider("costs"),
|
||||||
input:
|
input:
|
||||||
network=resources("networks/elec{weather_year}_s{simpl}.nc"),
|
network=resources("networks/elec_s{simpl}.nc"),
|
||||||
regions_onshore=resources("regions_onshore_elec{weather_year}_s{simpl}.geojson"),
|
regions_onshore=resources("regions_onshore_elec_s{simpl}.geojson"),
|
||||||
regions_offshore=resources(
|
regions_offshore=resources(
|
||||||
"regions_offshore_elec{weather_year}_s{simpl}.geojson"
|
"regions_offshore_elec_s{simpl}.geojson"
|
||||||
),
|
),
|
||||||
busmap=ancient(resources("busmap_elec{weather_year}_s{simpl}.csv")),
|
busmap=ancient(resources("busmap_elec_s{simpl}.csv")),
|
||||||
custom_busmap=lambda w: (
|
custom_busmap=lambda w: (
|
||||||
"data/custom_busmap_elec_s{simpl}_{clusters}.csv"
|
"data/custom_busmap_elec_s{simpl}_{clusters}.csv"
|
||||||
if config_provider("enable", "custom_busmap", default=False)(w)
|
if config_provider("enable", "custom_busmap", default=False)(w)
|
||||||
@ -564,19 +564,19 @@ rule cluster_network:
|
|||||||
f"costs_{config_provider('costs', 'year')(w)}.csv"
|
f"costs_{config_provider('costs', 'year')(w)}.csv"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
network=resources("networks/elec{weather_year}_s{simpl}_{clusters}.nc"),
|
network=resources("networks/elec_s{simpl}_{clusters}.nc"),
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
regions_offshore=resources(
|
regions_offshore=resources(
|
||||||
"regions_offshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_offshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
busmap=resources("busmap_elec{weather_year}_s{simpl}_{clusters}.csv"),
|
busmap=resources("busmap_elec_s{simpl}_{clusters}.csv"),
|
||||||
linemap=resources("linemap_elec{weather_year}_s{simpl}_{clusters}.csv"),
|
linemap=resources("linemap_elec_s{simpl}_{clusters}.csv"),
|
||||||
log:
|
log:
|
||||||
logs("cluster_network/elec{weather_year}_s{simpl}_{clusters}.log"),
|
logs("cluster_network/elec_s{simpl}_{clusters}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("cluster_network/elec{weather_year}_s{simpl}_{clusters}")
|
benchmarks("cluster_network/elec_s{simpl}_{clusters}")
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
@ -592,16 +592,16 @@ rule add_extra_components:
|
|||||||
max_hours=config_provider("electricity", "max_hours"),
|
max_hours=config_provider("electricity", "max_hours"),
|
||||||
costs=config_provider("costs"),
|
costs=config_provider("costs"),
|
||||||
input:
|
input:
|
||||||
network=resources("networks/elec{weather_year}_s{simpl}_{clusters}.nc"),
|
network=resources("networks/elec_s{simpl}_{clusters}.nc"),
|
||||||
tech_costs=lambda w: resources(
|
tech_costs=lambda w: resources(
|
||||||
f"costs_{config_provider('costs', 'year')(w)}.csv"
|
f"costs_{config_provider('costs', 'year')(w)}.csv"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
resources("networks/elec{weather_year}_s{simpl}_{clusters}_ec.nc"),
|
resources("networks/elec_s{simpl}_{clusters}_ec.nc"),
|
||||||
log:
|
log:
|
||||||
logs("add_extra_components/elec{weather_year}_s{simpl}_{clusters}.log"),
|
logs("add_extra_components/elec_s{simpl}_{clusters}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("add_extra_components/elec{weather_year}_s{simpl}_{clusters}_ec")
|
benchmarks("add_extra_components/elec_s{simpl}_{clusters}_ec")
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=4000,
|
mem_mb=4000,
|
||||||
@ -626,21 +626,21 @@ rule prepare_network:
|
|||||||
adjustments=config_provider("adjustments", "electricity"),
|
adjustments=config_provider("adjustments", "electricity"),
|
||||||
autarky=config_provider("electricity", "autarky", default={}),
|
autarky=config_provider("electricity", "autarky", default={}),
|
||||||
input:
|
input:
|
||||||
resources("networks/elec{weather_year}_s{simpl}_{clusters}_ec.nc"),
|
resources("networks/elec_s{simpl}_{clusters}_ec.nc"),
|
||||||
tech_costs=lambda w: resources(
|
tech_costs=lambda w: resources(
|
||||||
f"costs_{config_provider('costs', 'year')(w)}.csv"
|
f"costs_{config_provider('costs', 'year')(w)}.csv"
|
||||||
),
|
),
|
||||||
co2_price=lambda w: resources("co2_price.csv") if "Ept" in w.opts else [],
|
co2_price=lambda w: resources("co2_price.csv") if "Ept" in w.opts else [],
|
||||||
output:
|
output:
|
||||||
resources("networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"),
|
resources("networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"),
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"prepare_network/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.log"
|
"prepare_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.log"
|
||||||
),
|
),
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"prepare_network/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}"
|
"prepare_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
threads: 1
|
threads: 1
|
||||||
|
@ -12,15 +12,15 @@ rule build_population_layouts:
|
|||||||
+ config_provider("atlite", "default_cutout")(w)
|
+ config_provider("atlite", "default_cutout")(w)
|
||||||
+ ".nc",
|
+ ".nc",
|
||||||
output:
|
output:
|
||||||
pop_layout_total=resources("pop_layout_total{weather_year}.nc"),
|
pop_layout_total=resources("pop_layout_total.nc"),
|
||||||
pop_layout_urban=resources("pop_layout_urban{weather_year}.nc"),
|
pop_layout_urban=resources("pop_layout_urban.nc"),
|
||||||
pop_layout_rural=resources("pop_layout_rural{weather_year}.nc"),
|
pop_layout_rural=resources("pop_layout_rural.nc"),
|
||||||
log:
|
log:
|
||||||
logs("build_population_layouts{weather_year}.log"),
|
logs("build_population_layouts.log"),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=20000,
|
mem_mb=20000,
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_population_layouts{weather_year}")
|
benchmarks("build_population_layouts")
|
||||||
threads: 8
|
threads: 8
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -30,11 +30,11 @@ rule build_population_layouts:
|
|||||||
|
|
||||||
rule build_clustered_population_layouts:
|
rule build_clustered_population_layouts:
|
||||||
input:
|
input:
|
||||||
pop_layout_total=resources("pop_layout_total{weather_year}.nc"),
|
pop_layout_total=resources("pop_layout_total.nc"),
|
||||||
pop_layout_urban=resources("pop_layout_urban{weather_year}.nc"),
|
pop_layout_urban=resources("pop_layout_urban.nc"),
|
||||||
pop_layout_rural=resources("pop_layout_rural{weather_year}.nc"),
|
pop_layout_rural=resources("pop_layout_rural.nc"),
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
cutout=lambda w: "cutouts/"
|
cutout=lambda w: "cutouts/"
|
||||||
+ CDIR
|
+ CDIR
|
||||||
@ -42,15 +42,15 @@ rule build_clustered_population_layouts:
|
|||||||
+ ".nc",
|
+ ".nc",
|
||||||
output:
|
output:
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
log:
|
log:
|
||||||
logs("build_clustered_population_layouts{weather_year}_{simpl}_{clusters}.log"),
|
logs("build_clustered_population_layouts_{simpl}_{clusters}.log"),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_clustered_population_layouts/{weather_year}s{simpl}_{clusters}"
|
"build_clustered_population_layouts/s{simpl}_{clusters}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -60,22 +60,22 @@ rule build_clustered_population_layouts:
|
|||||||
|
|
||||||
rule build_simplified_population_layouts:
|
rule build_simplified_population_layouts:
|
||||||
input:
|
input:
|
||||||
pop_layout_total=resources("pop_layout_total{weather_year}.nc"),
|
pop_layout_total=resources("pop_layout_total.nc"),
|
||||||
pop_layout_urban=resources("pop_layout_urban{weather_year}.nc"),
|
pop_layout_urban=resources("pop_layout_urban.nc"),
|
||||||
pop_layout_rural=resources("pop_layout_rural{weather_year}.nc"),
|
pop_layout_rural=resources("pop_layout_rural.nc"),
|
||||||
regions_onshore=resources("regions_onshore_elec{weather_year}_s{simpl}.geojson"),
|
regions_onshore=resources("regions_onshore_elec_s{simpl}.geojson"),
|
||||||
cutout=lambda w: "cutouts/"
|
cutout=lambda w: "cutouts/"
|
||||||
+ CDIR
|
+ CDIR
|
||||||
+ config_provider("atlite", "default_cutout")(w)
|
+ config_provider("atlite", "default_cutout")(w)
|
||||||
+ ".nc",
|
+ ".nc",
|
||||||
output:
|
output:
|
||||||
clustered_pop_layout=resources("pop_layout_elec{weather_year}_s{simpl}.csv"),
|
clustered_pop_layout=resources("pop_layout_elec_s{simpl}.csv"),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
log:
|
log:
|
||||||
logs("build_simplified_population_layouts{weather_year}_{simpl}"),
|
logs("build_simplified_population_layouts_{simpl}"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_simplified_population_layouts/{weather_year}s{simpl}")
|
benchmarks("build_simplified_population_layouts/s{simpl}")
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -106,22 +106,22 @@ rule build_gas_input_locations:
|
|||||||
entry="data/gas_network/scigrid-gas/data/IGGIELGN_BorderPoints.geojson",
|
entry="data/gas_network/scigrid-gas/data/IGGIELGN_BorderPoints.geojson",
|
||||||
storage="data/gas_network/scigrid-gas/data/IGGIELGN_Storages.geojson",
|
storage="data/gas_network/scigrid-gas/data/IGGIELGN_Storages.geojson",
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
regions_offshore=resources(
|
regions_offshore=resources(
|
||||||
"regions_offshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_offshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
gas_input_nodes=resources(
|
gas_input_nodes=resources(
|
||||||
"gas_input_locations{weather_year}_s{simpl}_{clusters}.geojson"
|
"gas_input_locations_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
gas_input_nodes_simplified=resources(
|
gas_input_nodes_simplified=resources(
|
||||||
"gas_input_locations{weather_year}_s{simpl}_{clusters}_simplified.csv"
|
"gas_input_locations_s{simpl}_{clusters}_simplified.csv"
|
||||||
),
|
),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
log:
|
log:
|
||||||
logs("build_gas_input_locations{weather_year}_s{simpl}_{clusters}.log"),
|
logs("build_gas_input_locations_s{simpl}_{clusters}.log"),
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -132,19 +132,19 @@ rule cluster_gas_network:
|
|||||||
input:
|
input:
|
||||||
cleaned_gas_network=resources("gas_network.csv"),
|
cleaned_gas_network=resources("gas_network.csv"),
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
regions_offshore=resources(
|
regions_offshore=resources(
|
||||||
"regions_offshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_offshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
clustered_gas_network=resources(
|
clustered_gas_network=resources(
|
||||||
"gas_network_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"gas_network_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=4000,
|
mem_mb=4000,
|
||||||
log:
|
log:
|
||||||
logs("cluster_gas_network{weather_year}_s{simpl}_{clusters}.log"),
|
logs("cluster_gas_network_s{simpl}_{clusters}.log"),
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -169,22 +169,22 @@ rule build_daily_heat_demand:
|
|||||||
snapshots=config_provider("snapshots"),
|
snapshots=config_provider("snapshots"),
|
||||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||||
input:
|
input:
|
||||||
pop_layout=resources("pop_layout_{scope}{weather_year}.nc"),
|
pop_layout=resources("pop_layout_{scope}.nc"),
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
cutout=heat_demand_cutout,
|
cutout=heat_demand_cutout,
|
||||||
output:
|
output:
|
||||||
heat_demand=resources(
|
heat_demand=resources(
|
||||||
"daily_heat_demand_{scope}_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"daily_heat_demand_{scope}_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=20000,
|
mem_mb=20000,
|
||||||
threads: 8
|
threads: 8
|
||||||
log:
|
log:
|
||||||
logs("build_daily_heat_demand_{scope}_{weather_year}_{simpl}_{clusters}.loc"),
|
logs("build_daily_heat_demand_{scope}__{simpl}_{clusters}.loc"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_daily_heat_demand/{scope}_{weather_year}_s{simpl}_{clusters}")
|
benchmarks("build_daily_heat_demand/{scope}__s{simpl}_{clusters}")
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -198,19 +198,19 @@ rule build_hourly_heat_demand:
|
|||||||
input:
|
input:
|
||||||
heat_profile="data/heat_load_profile_BDEW.csv",
|
heat_profile="data/heat_load_profile_BDEW.csv",
|
||||||
heat_demand=resources(
|
heat_demand=resources(
|
||||||
"daily_heat_demand_{scope}_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"daily_heat_demand_{scope}_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
heat_demand=resources(
|
heat_demand=resources(
|
||||||
"hourly_heat_demand_{scope}_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"hourly_heat_demand_{scope}_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
threads: 8
|
threads: 8
|
||||||
log:
|
log:
|
||||||
logs("build_hourly_heat_demand_{scope}{weather_year}_{simpl}_{clusters}.loc"),
|
logs("build_hourly_heat_demand_{scope}_{simpl}_{clusters}.loc"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_hourly_heat_demand/{scope}{weather_year}_s{simpl}_{clusters}")
|
benchmarks("build_hourly_heat_demand/{scope}_s{simpl}_{clusters}")
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -222,24 +222,24 @@ rule build_temperature_profiles:
|
|||||||
snapshots=config_provider("snapshots"),
|
snapshots=config_provider("snapshots"),
|
||||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||||
input:
|
input:
|
||||||
pop_layout=resources("pop_layout_{scope}{weather_year}.nc"),
|
pop_layout=resources("pop_layout_{scope}.nc"),
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
cutout=heat_demand_cutout,
|
cutout=heat_demand_cutout,
|
||||||
output:
|
output:
|
||||||
temp_soil=resources(
|
temp_soil=resources(
|
||||||
"temp_soil_{scope}_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_soil_{scope}_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_air=resources("temp_air_{scope}_elec{weather_year}_s{simpl}_{clusters}.nc"),
|
temp_air=resources("temp_air_{scope}_elec_s{simpl}_{clusters}.nc"),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=20000,
|
mem_mb=20000,
|
||||||
threads: 8
|
threads: 8
|
||||||
log:
|
log:
|
||||||
logs("build_temperature_profiles_{scope}_{weather_year}_{simpl}_{clusters}.log"),
|
logs("build_temperature_profiles_{scope}__{simpl}_{clusters}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_temperature_profiles/{scope}_{weather_year}_s{simpl}_{clusters}"
|
"build_temperature_profiles/{scope}__s{simpl}_{clusters}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -252,48 +252,48 @@ rule build_cop_profiles:
|
|||||||
heat_pump_sink_T=config_provider("sector", "heat_pump_sink_T"),
|
heat_pump_sink_T=config_provider("sector", "heat_pump_sink_T"),
|
||||||
input:
|
input:
|
||||||
temp_soil_total=resources(
|
temp_soil_total=resources(
|
||||||
"temp_soil_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_soil_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_soil_rural=resources(
|
temp_soil_rural=resources(
|
||||||
"temp_soil_rural_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_soil_rural_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_soil_urban=resources(
|
temp_soil_urban=resources(
|
||||||
"temp_soil_urban_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_soil_urban_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_air_total=resources(
|
temp_air_total=resources(
|
||||||
"temp_air_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_air_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_air_rural=resources(
|
temp_air_rural=resources(
|
||||||
"temp_air_rural_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_air_rural_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_air_urban=resources(
|
temp_air_urban=resources(
|
||||||
"temp_air_urban_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_air_urban_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
cop_soil_total=resources(
|
cop_soil_total=resources(
|
||||||
"cop_soil_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_soil_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_soil_rural=resources(
|
cop_soil_rural=resources(
|
||||||
"cop_soil_rural_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_soil_rural_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_soil_urban=resources(
|
cop_soil_urban=resources(
|
||||||
"cop_soil_urban_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_soil_urban_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_air_total=resources(
|
cop_air_total=resources(
|
||||||
"cop_air_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_air_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_air_rural=resources(
|
cop_air_rural=resources(
|
||||||
"cop_air_rural_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_air_rural_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_air_urban=resources(
|
cop_air_urban=resources(
|
||||||
"cop_air_urban_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_air_urban_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=20000,
|
mem_mb=20000,
|
||||||
log:
|
log:
|
||||||
logs("build_cop_profiles{weather_year}_s{simpl}_{clusters}.log"),
|
logs("build_cop_profiles_s{simpl}_{clusters}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_cop_profiles/{weather_year}s{simpl}_{clusters}")
|
benchmarks("build_cop_profiles/s{simpl}_{clusters}")
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -319,25 +319,25 @@ rule build_solar_thermal_profiles:
|
|||||||
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
||||||
solar_thermal=config_provider("solar_thermal"),
|
solar_thermal=config_provider("solar_thermal"),
|
||||||
input:
|
input:
|
||||||
pop_layout=resources("pop_layout_{scope}{weather_year}.nc"),
|
pop_layout=resources("pop_layout_{scope}.nc"),
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
cutout=solar_thermal_cutout,
|
cutout=solar_thermal_cutout,
|
||||||
output:
|
output:
|
||||||
solar_thermal=resources(
|
solar_thermal=resources(
|
||||||
"solar_thermal_{scope}_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"solar_thermal_{scope}_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=20000,
|
mem_mb=20000,
|
||||||
threads: 16
|
threads: 16
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"build_solar_thermal_profiles_{scope}_{weather_year}_s{simpl}_{clusters}.log"
|
"build_solar_thermal_profiles_{scope}__s{simpl}_{clusters}.log"
|
||||||
),
|
),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_solar_thermal_profiles/{scope}_{weather_year}_s{simpl}_{clusters}"
|
"build_solar_thermal_profiles/{scope}__s{simpl}_{clusters}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -403,7 +403,7 @@ rule build_biomass_potentials:
|
|||||||
),
|
),
|
||||||
nuts2="data/bundle-sector/nuts/NUTS_RG_10M_2013_4326_LEVL_2.geojson", # https://gisco-services.ec.europa.eu/distribution/v2/nuts/download/#nuts21
|
nuts2="data/bundle-sector/nuts/NUTS_RG_10M_2013_4326_LEVL_2.geojson", # https://gisco-services.ec.europa.eu/distribution/v2/nuts/download/#nuts21
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
nuts3_population=ancient("data/bundle/nama_10r_3popgdp.tsv.gz"),
|
nuts3_population=ancient("data/bundle/nama_10r_3popgdp.tsv.gz"),
|
||||||
swiss_cantons=ancient("data/bundle/ch_cantons.csv"),
|
swiss_cantons=ancient("data/bundle/ch_cantons.csv"),
|
||||||
@ -411,21 +411,21 @@ rule build_biomass_potentials:
|
|||||||
country_shapes=resources("country_shapes.geojson"),
|
country_shapes=resources("country_shapes.geojson"),
|
||||||
output:
|
output:
|
||||||
biomass_potentials_all=resources(
|
biomass_potentials_all=resources(
|
||||||
"biomass_potentials_all{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"biomass_potentials_all_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
biomass_potentials=resources(
|
biomass_potentials=resources(
|
||||||
"biomass_potentials{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"biomass_potentials_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=1000,
|
mem_mb=1000,
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"build_biomass_potentials{weather_year}_s{simpl}_{clusters}_{planning_horizons}.log"
|
"build_biomass_potentials_s{simpl}_{clusters}_{planning_horizons}.log"
|
||||||
),
|
),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_biomass_potentials{weather_year}_s{simpl}_{clusters}_{planning_horizons}"
|
"build_biomass_potentials_s{simpl}_{clusters}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -465,22 +465,22 @@ rule build_sequestration_potentials:
|
|||||||
keep_local=True,
|
keep_local=True,
|
||||||
),
|
),
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
regions_offshore=resources(
|
regions_offshore=resources(
|
||||||
"regions_offshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_offshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
sequestration_potential=resources(
|
sequestration_potential=resources(
|
||||||
"co2_sequestration_potential_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"co2_sequestration_potential_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=4000,
|
mem_mb=4000,
|
||||||
log:
|
log:
|
||||||
logs("build_sequestration_potentials{weather_year}_s{simpl}_{clusters}.log"),
|
logs("build_sequestration_potentials_s{simpl}_{clusters}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_sequestration_potentials{weather_year}_s{simpl}_{clusters}")
|
benchmarks("build_sequestration_potentials_s{simpl}_{clusters}")
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -491,22 +491,22 @@ rule build_salt_cavern_potentials:
|
|||||||
input:
|
input:
|
||||||
salt_caverns="data/bundle-sector/h2_salt_caverns_GWh_per_sqkm.geojson",
|
salt_caverns="data/bundle-sector/h2_salt_caverns_GWh_per_sqkm.geojson",
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
regions_offshore=resources(
|
regions_offshore=resources(
|
||||||
"regions_offshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_offshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
h2_cavern_potential=resources(
|
h2_cavern_potential=resources(
|
||||||
"salt_cavern_potentials{weather_year}_s{simpl}_{clusters}.csv"
|
"salt_cavern_potentials_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
log:
|
log:
|
||||||
logs("build_salt_cavern_potentials{weather_year}_s{simpl}_{clusters}.log"),
|
logs("build_salt_cavern_potentials_s{simpl}_{clusters}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_salt_cavern_potentials{weather_year}_s{simpl}_{clusters}")
|
benchmarks("build_salt_cavern_potentials_s{simpl}_{clusters}")
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -642,24 +642,24 @@ rule build_industrial_distribution_key:
|
|||||||
countries=config_provider("countries"),
|
countries=config_provider("countries"),
|
||||||
input:
|
input:
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
hotmaps_industrial_database="data/bundle-sector/Industrial_Database.csv",
|
hotmaps_industrial_database="data/bundle-sector/Industrial_Database.csv",
|
||||||
output:
|
output:
|
||||||
industrial_distribution_key=resources(
|
industrial_distribution_key=resources(
|
||||||
"industrial_distribution_key_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"industrial_distribution_key_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=1000,
|
mem_mb=1000,
|
||||||
log:
|
log:
|
||||||
logs("build_industrial_distribution_key{weather_year}_s{simpl}_{clusters}.log"),
|
logs("build_industrial_distribution_key_s{simpl}_{clusters}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_industrial_distribution_key/{weather_year}s{simpl}_{clusters}"
|
"build_industrial_distribution_key/s{simpl}_{clusters}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -670,26 +670,26 @@ rule build_industrial_distribution_key:
|
|||||||
rule build_industrial_production_per_node:
|
rule build_industrial_production_per_node:
|
||||||
input:
|
input:
|
||||||
industrial_distribution_key=resources(
|
industrial_distribution_key=resources(
|
||||||
"industrial_distribution_key_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"industrial_distribution_key_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
industrial_production_per_country_tomorrow=resources(
|
industrial_production_per_country_tomorrow=resources(
|
||||||
"industrial_production_per_country_tomorrow_{planning_horizons}.csv"
|
"industrial_production_per_country_tomorrow_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
industrial_production_per_node=resources(
|
industrial_production_per_node=resources(
|
||||||
"industrial_production_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"industrial_production_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=1000,
|
mem_mb=1000,
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"build_industrial_production_per_node{weather_year}_s{simpl}_{clusters}_{planning_horizons}.log"
|
"build_industrial_production_per_node_s{simpl}_{clusters}_{planning_horizons}.log"
|
||||||
),
|
),
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_industrial_production_per_node/{weather_year}s{simpl}_{clusters}_{planning_horizons}"
|
"build_industrial_production_per_node/s{simpl}_{clusters}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
@ -704,26 +704,26 @@ rule build_industrial_energy_demand_per_node:
|
|||||||
"industry_sector_ratios_{planning_horizons}.csv"
|
"industry_sector_ratios_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
industrial_production_per_node=resources(
|
industrial_production_per_node=resources(
|
||||||
"industrial_production_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"industrial_production_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
industrial_energy_demand_per_node_today=resources(
|
industrial_energy_demand_per_node_today=resources(
|
||||||
"industrial_energy_demand_today_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"industrial_energy_demand_today_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
industrial_energy_demand_per_node=resources(
|
industrial_energy_demand_per_node=resources(
|
||||||
"industrial_energy_demand_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"industrial_energy_demand_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=1000,
|
mem_mb=1000,
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"build_industrial_energy_demand_per_node{weather_year}_s{simpl}_{clusters}_{planning_horizons}.log"
|
"build_industrial_energy_demand_per_node_s{simpl}_{clusters}_{planning_horizons}.log"
|
||||||
),
|
),
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_industrial_energy_demand_per_node/{weather_year}s{simpl}_{clusters}_{planning_horizons}"
|
"build_industrial_energy_demand_per_node/s{simpl}_{clusters}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
@ -761,25 +761,25 @@ rule build_industrial_energy_demand_per_country_today:
|
|||||||
rule build_industrial_energy_demand_per_node_today:
|
rule build_industrial_energy_demand_per_node_today:
|
||||||
input:
|
input:
|
||||||
industrial_distribution_key=resources(
|
industrial_distribution_key=resources(
|
||||||
"industrial_distribution_key_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"industrial_distribution_key_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
industrial_energy_demand_per_country_today=resources(
|
industrial_energy_demand_per_country_today=resources(
|
||||||
"industrial_energy_demand_per_country_today.csv"
|
"industrial_energy_demand_per_country_today.csv"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
industrial_energy_demand_per_node_today=resources(
|
industrial_energy_demand_per_node_today=resources(
|
||||||
"industrial_energy_demand_today_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"industrial_energy_demand_today_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=1000,
|
mem_mb=1000,
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"build_industrial_energy_demand_per_node_today{weather_year}_s{simpl}_{clusters}.log"
|
"build_industrial_energy_demand_per_node_today_s{simpl}_{clusters}.log"
|
||||||
),
|
),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_industrial_energy_demand_per_node_today/{weather_year}s{simpl}_{clusters}"
|
"build_industrial_energy_demand_per_node_today/s{simpl}_{clusters}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -795,26 +795,26 @@ rule build_retro_cost:
|
|||||||
building_stock="data/retro/data_building_stock.csv",
|
building_stock="data/retro/data_building_stock.csv",
|
||||||
data_tabula="data/bundle-sector/retro/tabula-calculator-calcsetbuilding.csv",
|
data_tabula="data/bundle-sector/retro/tabula-calculator-calcsetbuilding.csv",
|
||||||
air_temperature=resources(
|
air_temperature=resources(
|
||||||
"temp_air_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_air_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
u_values_PL="data/retro/u_values_poland.csv",
|
u_values_PL="data/retro/u_values_poland.csv",
|
||||||
tax_w="data/retro/elec{weather_year}tricity_taxes_eu.csv",
|
tax_w="data/retro/electricity_taxes_eu.csv",
|
||||||
construction_index="data/retro/comparative_level_investment.csv",
|
construction_index="data/retro/comparative_level_investment.csv",
|
||||||
floor_area_missing="data/retro/floor_area_missing.csv",
|
floor_area_missing="data/retro/floor_area_missing.csv",
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
cost_germany="data/retro/retro_cost_germany.csv",
|
cost_germany="data/retro/retro_cost_germany.csv",
|
||||||
window_assumptions="data/retro/window_assumptions.csv",
|
window_assumptions="data/retro/window_assumptions.csv",
|
||||||
output:
|
output:
|
||||||
retro_cost=resources("retro_cost_elec{weather_year}_s{simpl}_{clusters}.csv"),
|
retro_cost=resources("retro_cost_elec_s{simpl}_{clusters}.csv"),
|
||||||
floor_area=resources("floor_area_elec{weather_year}_s{simpl}_{clusters}.csv"),
|
floor_area=resources("floor_area_elec_s{simpl}_{clusters}.csv"),
|
||||||
resources:
|
resources:
|
||||||
mem_mb=1000,
|
mem_mb=1000,
|
||||||
log:
|
log:
|
||||||
logs("build_retro_cost{weather_year}_s{simpl}_{clusters}.log"),
|
logs("build_retro_cost_s{simpl}_{clusters}.log"),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks("build_retro_cost/{weather_year}s{simpl}_{clusters}")
|
benchmarks("build_retro_cost/s{simpl}_{clusters}")
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -825,16 +825,16 @@ rule build_population_weighted_energy_totals:
|
|||||||
input:
|
input:
|
||||||
energy_totals=resources("{kind}_totals.csv"),
|
energy_totals=resources("{kind}_totals.csv"),
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
resources("pop_weighted_{kind}_totals{weather_year}_s{simpl}_{clusters}.csv"),
|
resources("pop_weighted_{kind}_totals_s{simpl}_{clusters}.csv"),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"build_population_weighted_{kind}_totals{weather_year}_s{simpl}_{clusters}.log"
|
"build_population_weighted_{kind}_totals_s{simpl}_{clusters}.log"
|
||||||
),
|
),
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -847,18 +847,18 @@ rule build_shipping_demand:
|
|||||||
ports="data/attributed_ports.json",
|
ports="data/attributed_ports.json",
|
||||||
scope=resources("europe_shape.geojson"),
|
scope=resources("europe_shape.geojson"),
|
||||||
regions=resources(
|
regions=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
demand=resources("energy_totals.csv"),
|
demand=resources("energy_totals.csv"),
|
||||||
params:
|
params:
|
||||||
energy_totals_year=config_provider("energy", "energy_totals_year"),
|
energy_totals_year=config_provider("energy", "energy_totals_year"),
|
||||||
output:
|
output:
|
||||||
resources("shipping_demand{weather_year}_s{simpl}_{clusters}.csv"),
|
resources("shipping_demand_s{simpl}_{clusters}.csv"),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
log:
|
log:
|
||||||
logs("build_shipping_demand{weather_year}_s{simpl}_{clusters}.log"),
|
logs("build_shipping_demand_s{simpl}_{clusters}.log"),
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -872,29 +872,29 @@ rule build_transport_demand:
|
|||||||
sector=config_provider("sector"),
|
sector=config_provider("sector"),
|
||||||
input:
|
input:
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
pop_weighted_energy_totals=resources(
|
pop_weighted_energy_totals=resources(
|
||||||
"pop_weighted_energy_totals{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_weighted_energy_totals_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
transport_data=resources("transport_data.csv"),
|
transport_data=resources("transport_data.csv"),
|
||||||
traffic_data_KFZ="data/bundle-sector/emobility/KFZ__count",
|
traffic_data_KFZ="data/bundle-sector/emobility/KFZ__count",
|
||||||
traffic_data_Pkw="data/bundle-sector/emobility/Pkw__count",
|
traffic_data_Pkw="data/bundle-sector/emobility/Pkw__count",
|
||||||
temp_air_total=resources(
|
temp_air_total=resources(
|
||||||
"temp_air_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_air_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
transport_demand=resources(
|
transport_demand=resources(
|
||||||
"transport_demand{weather_year}_s{simpl}_{clusters}.csv"
|
"transport_demand_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
transport_data=resources("transport_data{weather_year}_s{simpl}_{clusters}.csv"),
|
transport_data=resources("transport_data_s{simpl}_{clusters}.csv"),
|
||||||
avail_profile=resources("avail_profile{weather_year}_s{simpl}_{clusters}.csv"),
|
avail_profile=resources("avail_profile_s{simpl}_{clusters}.csv"),
|
||||||
dsm_profile=resources("dsm_profile{weather_year}_s{simpl}_{clusters}.csv"),
|
dsm_profile=resources("dsm_profile_s{simpl}_{clusters}.csv"),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
log:
|
log:
|
||||||
logs("build_transport_demand{weather_year}_s{simpl}_{clusters}.log"),
|
logs("build_transport_demand_s{simpl}_{clusters}.log"),
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
script:
|
script:
|
||||||
@ -907,18 +907,18 @@ rule build_district_heat_share:
|
|||||||
input:
|
input:
|
||||||
district_heat_share=resources("district_heat_share.csv"),
|
district_heat_share=resources("district_heat_share.csv"),
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
district_heat_share=resources(
|
district_heat_share=resources(
|
||||||
"district_heat_share_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"district_heat_share_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=1000,
|
mem_mb=1000,
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"build_district_heat_share{weather_year}_s{simpl}_{clusters}_{planning_horizons}.log"
|
"build_district_heat_share_s{simpl}_{clusters}_{planning_horizons}.log"
|
||||||
),
|
),
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -934,28 +934,28 @@ rule build_existing_heating_distribution:
|
|||||||
input:
|
input:
|
||||||
existing_heating="data/existing_infrastructure/existing_heating_raw.csv",
|
existing_heating="data/existing_infrastructure/existing_heating_raw.csv",
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
clustered_pop_energy_layout=resources(
|
clustered_pop_energy_layout=resources(
|
||||||
"pop_weighted_energy_totals{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_weighted_energy_totals_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
district_heat_share=resources(
|
district_heat_share=resources(
|
||||||
"district_heat_share_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"district_heat_share_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
existing_heating_distribution=resources(
|
existing_heating_distribution=resources(
|
||||||
"existing_heating_distribution_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"existing_heating_distribution_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
log:
|
log:
|
||||||
logs(
|
logs(
|
||||||
"build_existing_heating_distribution_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.log"
|
"build_existing_heating_distribution_elec_s{simpl}_{clusters}_{planning_horizons}.log"
|
||||||
),
|
),
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"build_existing_heating_distribution/elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}"
|
"build_existing_heating_distribution/elec_s{simpl}_{clusters}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -965,7 +965,7 @@ rule build_existing_heating_distribution:
|
|||||||
|
|
||||||
def input_profile_offwind(w):
|
def input_profile_offwind(w):
|
||||||
return {
|
return {
|
||||||
f"profile_{tech}": resources(f"profile{{weather_year}}_{tech}.nc")
|
f"profile_{tech}": resources(f"profile{}_{tech}.nc")
|
||||||
for tech in ["offwind-ac", "offwind-dc"]
|
for tech in ["offwind-ac", "offwind-dc"]
|
||||||
if (tech in config_provider("electricity", "renewable_carriers")(w))
|
if (tech in config_provider("electricity", "renewable_carriers")(w))
|
||||||
}
|
}
|
||||||
@ -997,12 +997,12 @@ rule prepare_sector_network:
|
|||||||
**rules.cluster_gas_network.output,
|
**rules.cluster_gas_network.output,
|
||||||
**rules.build_gas_input_locations.output,
|
**rules.build_gas_input_locations.output,
|
||||||
retro_cost=lambda w: (
|
retro_cost=lambda w: (
|
||||||
resources("retro_cost_elec{weather_year}_s{simpl}_{clusters}.csv")
|
resources("retro_cost_elec_s{simpl}_{clusters}.csv")
|
||||||
if config_provider("sector", "retrofitting", "retro_endogen")(w)
|
if config_provider("sector", "retrofitting", "retro_endogen")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
floor_area=lambda w: (
|
floor_area=lambda w: (
|
||||||
resources("floor_area_elec{weather_year}_s{simpl}_{clusters}.csv")
|
resources("floor_area_elec_s{simpl}_{clusters}.csv")
|
||||||
if config_provider("sector", "retrofitting", "retro_endogen")(w)
|
if config_provider("sector", "retrofitting", "retro_endogen")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
@ -1014,7 +1014,7 @@ rule prepare_sector_network:
|
|||||||
),
|
),
|
||||||
sequestration_potential=lambda w: (
|
sequestration_potential=lambda w: (
|
||||||
resources(
|
resources(
|
||||||
"co2_sequestration_potential_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"co2_sequestration_potential_elec_s{simpl}_{clusters}.csv"
|
||||||
)
|
)
|
||||||
if config_provider(
|
if config_provider(
|
||||||
"sector", "regional_co2_sequestration_potential", "enable"
|
"sector", "regional_co2_sequestration_potential", "enable"
|
||||||
@ -1022,35 +1022,35 @@ rule prepare_sector_network:
|
|||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
network=resources(
|
network=resources(
|
||||||
"networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"
|
"networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"
|
||||||
),
|
),
|
||||||
energy_totals_name=resources("energy_totals.csv"),
|
energy_totals_name=resources("energy_totals.csv"),
|
||||||
eurostat=input_eurostat,
|
eurostat=input_eurostat,
|
||||||
pop_weighted_energy_totals=resources(
|
pop_weighted_energy_totals=resources(
|
||||||
"pop_weighted_energy_totals{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_weighted_energy_totals_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
pop_weighted_heat_totals=resources(
|
pop_weighted_heat_totals=resources(
|
||||||
"pop_weighted_heat_totals{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_weighted_heat_totals_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
shipping_demand=resources(
|
shipping_demand=resources(
|
||||||
"shipping_demand{weather_year}_s{simpl}_{clusters}.csv"
|
"shipping_demand_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
transport_demand=resources(
|
transport_demand=resources(
|
||||||
"transport_demand{weather_year}_s{simpl}_{clusters}.csv"
|
"transport_demand_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
transport_data=resources("transport_data{weather_year}_s{simpl}_{clusters}.csv"),
|
transport_data=resources("transport_data_s{simpl}_{clusters}.csv"),
|
||||||
avail_profile=resources("avail_profile{weather_year}_s{simpl}_{clusters}.csv"),
|
avail_profile=resources("avail_profile_s{simpl}_{clusters}.csv"),
|
||||||
dsm_profile=resources("dsm_profile{weather_year}_s{simpl}_{clusters}.csv"),
|
dsm_profile=resources("dsm_profile_s{simpl}_{clusters}.csv"),
|
||||||
co2_totals_name=resources("co2_totals.csv"),
|
co2_totals_name=resources("co2_totals.csv"),
|
||||||
co2="data/bundle-sector/eea/UNFCCC_v23.csv",
|
co2="data/bundle-sector/eea/UNFCCC_v23.csv",
|
||||||
biomass_potentials=lambda w: (
|
biomass_potentials=lambda w: (
|
||||||
resources(
|
resources(
|
||||||
"biomass_potentials{weather_year}_s{simpl}_{clusters}_"
|
"biomass_potentials_s{simpl}_{clusters}_"
|
||||||
+ "{}.csv".format(config_provider("biomass", "year")(w))
|
+ "{}.csv".format(config_provider("biomass", "year")(w))
|
||||||
)
|
)
|
||||||
if config_provider("foresight")(w) == "overnight"
|
if config_provider("foresight")(w) == "overnight"
|
||||||
else resources(
|
else resources(
|
||||||
"biomass_potentials{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"biomass_potentials_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
costs=lambda w: (
|
costs=lambda w: (
|
||||||
@ -1059,87 +1059,87 @@ rule prepare_sector_network:
|
|||||||
else resources("costs_{planning_horizons}.csv")
|
else resources("costs_{planning_horizons}.csv")
|
||||||
),
|
),
|
||||||
h2_cavern=resources(
|
h2_cavern=resources(
|
||||||
"salt_cavern_potentials{weather_year}_s{simpl}_{clusters}.csv"
|
"salt_cavern_potentials_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
busmap_s=resources("busmap_elec{weather_year}_s{simpl}.csv"),
|
busmap_s=resources("busmap_elec_s{simpl}.csv"),
|
||||||
busmap=resources("busmap_elec{weather_year}_s{simpl}_{clusters}.csv"),
|
busmap=resources("busmap_elec_s{simpl}_{clusters}.csv"),
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
simplified_pop_layout=resources("pop_layout_elec{weather_year}_s{simpl}.csv"),
|
simplified_pop_layout=resources("pop_layout_elec_s{simpl}.csv"),
|
||||||
industrial_demand=resources(
|
industrial_demand=resources(
|
||||||
"industrial_energy_demand_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"industrial_energy_demand_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
hourly_heat_demand_total=resources(
|
hourly_heat_demand_total=resources(
|
||||||
"hourly_heat_demand_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"hourly_heat_demand_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
district_heat_share=resources(
|
district_heat_share=resources(
|
||||||
"district_heat_share_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"district_heat_share_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
temp_soil_total=resources(
|
temp_soil_total=resources(
|
||||||
"temp_soil_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_soil_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_soil_rural=resources(
|
temp_soil_rural=resources(
|
||||||
"temp_soil_rural_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_soil_rural_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_soil_urban=resources(
|
temp_soil_urban=resources(
|
||||||
"temp_soil_urban_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_soil_urban_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_air_total=resources(
|
temp_air_total=resources(
|
||||||
"temp_air_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_air_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_air_rural=resources(
|
temp_air_rural=resources(
|
||||||
"temp_air_rural_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_air_rural_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
temp_air_urban=resources(
|
temp_air_urban=resources(
|
||||||
"temp_air_urban_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"temp_air_urban_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_soil_total=resources(
|
cop_soil_total=resources(
|
||||||
"cop_soil_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_soil_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_soil_rural=resources(
|
cop_soil_rural=resources(
|
||||||
"cop_soil_rural_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_soil_rural_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_soil_urban=resources(
|
cop_soil_urban=resources(
|
||||||
"cop_soil_urban_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_soil_urban_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_air_total=resources(
|
cop_air_total=resources(
|
||||||
"cop_air_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_air_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_air_rural=resources(
|
cop_air_rural=resources(
|
||||||
"cop_air_rural_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_air_rural_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_air_urban=resources(
|
cop_air_urban=resources(
|
||||||
"cop_air_urban_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_air_urban_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
solar_thermal_total=lambda w: (
|
solar_thermal_total=lambda w: (
|
||||||
resources("solar_thermal_total_elec{weather_year}_s{simpl}_{clusters}.nc")
|
resources("solar_thermal_total_elec_s{simpl}_{clusters}.nc")
|
||||||
if config_provider("sector", "solar_thermal")(w)
|
if config_provider("sector", "solar_thermal")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
solar_thermal_urban=lambda w: (
|
solar_thermal_urban=lambda w: (
|
||||||
resources("solar_thermal_urban_elec{weather_year}_s{simpl}_{clusters}.nc")
|
resources("solar_thermal_urban_elec_s{simpl}_{clusters}.nc")
|
||||||
if config_provider("sector", "solar_thermal")(w)
|
if config_provider("sector", "solar_thermal")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
solar_thermal_rural=lambda w: (
|
solar_thermal_rural=lambda w: (
|
||||||
resources("solar_thermal_rural_elec{weather_year}_s{simpl}_{clusters}.nc")
|
resources("solar_thermal_rural_elec_s{simpl}_{clusters}.nc")
|
||||||
if config_provider("sector", "solar_thermal")(w)
|
if config_provider("sector", "solar_thermal")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "prenetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
log:
|
log:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "logs/prepare_sector_network_elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
+ "logs/prepare_sector_network_elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/prepare_sector_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
+ "benchmarks/prepare_sector_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
|
@ -16,7 +16,7 @@ localrules:
|
|||||||
rule cluster_networks:
|
rule cluster_networks:
|
||||||
input:
|
input:
|
||||||
expand(
|
expand(
|
||||||
resources("networks/elec{weather_year}_s{simpl}_{clusters}.nc"),
|
resources("networks/elec_s{simpl}_{clusters}.nc"),
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
),
|
),
|
||||||
@ -25,7 +25,7 @@ rule cluster_networks:
|
|||||||
rule extra_components_networks:
|
rule extra_components_networks:
|
||||||
input:
|
input:
|
||||||
expand(
|
expand(
|
||||||
resources("networks/elec{weather_year}_s{simpl}_{clusters}_ec.nc"),
|
resources("networks/elec_s{simpl}_{clusters}_ec.nc"),
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
),
|
),
|
||||||
@ -35,7 +35,7 @@ rule prepare_elec_networks:
|
|||||||
input:
|
input:
|
||||||
expand(
|
expand(
|
||||||
resources(
|
resources(
|
||||||
"networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"
|
"networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"
|
||||||
),
|
),
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
@ -46,7 +46,7 @@ rule prepare_sector_networks:
|
|||||||
input:
|
input:
|
||||||
expand(
|
expand(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "prenetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
),
|
),
|
||||||
@ -56,7 +56,7 @@ rule solve_elec_networks:
|
|||||||
input:
|
input:
|
||||||
expand(
|
expand(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
+ "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
),
|
),
|
||||||
@ -66,7 +66,7 @@ rule solve_sector_networks:
|
|||||||
input:
|
input:
|
||||||
expand(
|
expand(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
),
|
),
|
||||||
@ -76,7 +76,7 @@ rule solve_sector_networks_perfect:
|
|||||||
input:
|
input:
|
||||||
expand(
|
expand(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "maps/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
),
|
),
|
||||||
@ -86,13 +86,13 @@ rule validate_elec_networks:
|
|||||||
input:
|
input:
|
||||||
expand(
|
expand(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "figures/.statistics_plots_elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}",
|
+ "figures/.statistics_plots_elec_s{simpl}_{clusters}_ec_l{ll}_{opts}",
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
),
|
),
|
||||||
expand(
|
expand(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "figures/.validation_{kind}_plots_elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}",
|
+ "figures/.validation_{kind}_plots_elec_s{simpl}_{clusters}_ec_l{ll}_{opts}",
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
run=config["run"]["name"],
|
run=config["run"]["name"],
|
||||||
kind=["production", "prices", "cross_border"],
|
kind=["production", "prices", "cross_border"],
|
||||||
|
@ -143,7 +143,7 @@ def solved_previous_horizon(w):
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_"
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_"
|
||||||
+ planning_horizon_p
|
+ planning_horizon_p
|
||||||
+ ".nc"
|
+ ".nc"
|
||||||
)
|
)
|
||||||
|
@ -13,18 +13,18 @@ if config["foresight"] != "perfect":
|
|||||||
params:
|
params:
|
||||||
plotting=config_provider("plotting"),
|
plotting=config_provider("plotting"),
|
||||||
input:
|
input:
|
||||||
network=resources("networks/elec{weather_year}_s{simpl}_{clusters}.nc"),
|
network=resources("networks/elec_s{simpl}_{clusters}.nc"),
|
||||||
regions_onshore=resources(
|
regions_onshore=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
map=resources("maps/power-network{weather_year}-s{simpl}-{clusters}.pdf"),
|
map=resources("maps/power-network-s{simpl}-{clusters}.pdf"),
|
||||||
threads: 1
|
threads: 1
|
||||||
resources:
|
resources:
|
||||||
mem_mb=4000,
|
mem_mb=4000,
|
||||||
benchmark:
|
benchmark:
|
||||||
benchmarks(
|
benchmarks(
|
||||||
"plot_power_network_clustered/elec{weather_year}_s{simpl}_{clusters}"
|
"plot_power_network_clustered/elec_s{simpl}_{clusters}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -36,23 +36,23 @@ if config["foresight"] != "perfect":
|
|||||||
plotting=config_provider("plotting"),
|
plotting=config_provider("plotting"),
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
regions=resources(
|
regions=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
map=RESULTS
|
map=RESULTS
|
||||||
+ "maps/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
||||||
threads: 2
|
threads: 2
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
log:
|
log:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "logs/plot_power_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
+ "logs/plot_power_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarksplot_power_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
+ "benchmarksplot_power_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -65,23 +65,23 @@ if config["foresight"] != "perfect":
|
|||||||
foresight=config_provider("foresight"),
|
foresight=config_provider("foresight"),
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
regions=resources(
|
regions=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
map=RESULTS
|
map=RESULTS
|
||||||
+ "maps/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-h2_network_{planning_horizons}.pdf",
|
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-h2_network_{planning_horizons}.pdf",
|
||||||
threads: 2
|
threads: 2
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
log:
|
log:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "logs/plot_hydrogen_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
+ "logs/plot_hydrogen_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/plot_hydrogen_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
+ "benchmarks/plot_hydrogen_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -93,23 +93,23 @@ if config["foresight"] != "perfect":
|
|||||||
plotting=config_provider("plotting"),
|
plotting=config_provider("plotting"),
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
regions=resources(
|
regions=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
map=RESULTS
|
map=RESULTS
|
||||||
+ "maps/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-ch4_network_{planning_horizons}.pdf",
|
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-ch4_network_{planning_horizons}.pdf",
|
||||||
threads: 2
|
threads: 2
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
log:
|
log:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "logs/plot_gas_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
+ "logs/plot_gas_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/plot_gas_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
+ "benchmarks/plot_gas_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -122,7 +122,7 @@ if config["foresight"] == "perfect":
|
|||||||
def output_map_year(w):
|
def output_map_year(w):
|
||||||
return {
|
return {
|
||||||
f"map_{year}": RESULTS
|
f"map_{year}": RESULTS
|
||||||
+ "maps/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_"
|
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_"
|
||||||
+ f"{year}.pdf"
|
+ f"{year}.pdf"
|
||||||
for year in config_provider("scenario", "planning_horizons")(w)
|
for year in config_provider("scenario", "planning_horizons")(w)
|
||||||
}
|
}
|
||||||
@ -132,9 +132,9 @@ if config["foresight"] == "perfect":
|
|||||||
plotting=config_provider("plotting"),
|
plotting=config_provider("plotting"),
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
||||||
regions=resources(
|
regions=resources(
|
||||||
"regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson"
|
"regions_onshore_elec_s{simpl}_{clusters}.geojson"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
unpack(output_map_year),
|
unpack(output_map_year),
|
||||||
@ -171,7 +171,7 @@ rule make_summary:
|
|||||||
input:
|
input:
|
||||||
networks=expand(
|
networks=expand(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
allow_missing=True,
|
allow_missing=True,
|
||||||
),
|
),
|
||||||
@ -185,20 +185,20 @@ rule make_summary:
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
ac_plot=expand(
|
ac_plot=expand(
|
||||||
resources("maps/power-network{weather_year}-s{simpl}-{clusters}.pdf"),
|
resources("maps/power-network-s{simpl}-{clusters}.pdf"),
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
allow_missing=True,
|
allow_missing=True,
|
||||||
),
|
),
|
||||||
costs_plot=expand(
|
costs_plot=expand(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "maps/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-costs-all_{planning_horizons}.pdf",
|
||||||
**config["scenario"],
|
**config["scenario"],
|
||||||
allow_missing=True,
|
allow_missing=True,
|
||||||
),
|
),
|
||||||
h2_plot=lambda w: expand(
|
h2_plot=lambda w: expand(
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "maps/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-h2_network_{planning_horizons}.pdf"
|
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-h2_network_{planning_horizons}.pdf"
|
||||||
if config_provider("sector", "H2_network")(w)
|
if config_provider("sector", "H2_network")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
@ -208,7 +208,7 @@ rule make_summary:
|
|||||||
ch4_plot=lambda w: expand(
|
ch4_plot=lambda w: expand(
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "maps/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-ch4_network_{planning_horizons}.pdf"
|
+ "maps/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}-ch4_network_{planning_horizons}.pdf"
|
||||||
if config_provider("sector", "gas_network")(w)
|
if config_provider("sector", "gas_network")(w)
|
||||||
else []
|
else []
|
||||||
),
|
),
|
||||||
@ -293,14 +293,14 @@ rule plot_elec_statistics:
|
|||||||
barplots=STATISTICS_BARPLOTS,
|
barplots=STATISTICS_BARPLOTS,
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
+ "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
||||||
output:
|
output:
|
||||||
**{
|
**{
|
||||||
f"{plot}_bar": RESULTS
|
f"{plot}_bar": RESULTS
|
||||||
+ f"figures/statistics_{plot}_bar_elec{{weather_year}}_s{{simpl}}_{{clusters}}_ec_l{{ll}}_{{opts}}.pdf"
|
+ f"figures/statistics_{plot}_bar_elec{}_s{{simpl}}_{{clusters}}_ec_l{{ll}}_{{opts}}.pdf"
|
||||||
for plot in STATISTICS_BARPLOTS
|
for plot in STATISTICS_BARPLOTS
|
||||||
},
|
},
|
||||||
barplots_touch=RESULTS
|
barplots_touch=RESULTS
|
||||||
+ "figures/.statistics_plots_elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}",
|
+ "figures/.statistics_plots_elec_s{simpl}_{clusters}_ec_l{ll}_{opts}",
|
||||||
script:
|
script:
|
||||||
"../scripts/plot_statistics.py"
|
"../scripts/plot_statistics.py"
|
||||||
|
@ -14,23 +14,23 @@ rule solve_network:
|
|||||||
custom_extra_functionality=input_custom_extra_functionality,
|
custom_extra_functionality=input_custom_extra_functionality,
|
||||||
input:
|
input:
|
||||||
network=resources(
|
network=resources(
|
||||||
"networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"
|
"networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc"
|
||||||
),
|
),
|
||||||
config=RESULTS + "config.yaml",
|
config=RESULTS + "config.yaml",
|
||||||
output:
|
output:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
+ "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
||||||
log:
|
log:
|
||||||
solver=normpath(
|
solver=normpath(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "logs/solve_network/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}_solver.log"
|
+ "logs/solve_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}_solver.log"
|
||||||
),
|
),
|
||||||
python=RESULTS
|
python=RESULTS
|
||||||
+ "logs/solve_network/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}_python.log",
|
+ "logs/solve_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}_python.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/solve_network/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}"
|
+ "benchmarks/solve_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}"
|
||||||
)
|
)
|
||||||
threads: solver_threads
|
threads: solver_threads
|
||||||
resources:
|
resources:
|
||||||
@ -49,21 +49,21 @@ rule solve_operations_network:
|
|||||||
options=config_provider("solving", "options"),
|
options=config_provider("solving", "options"),
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
+ "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc",
|
||||||
output:
|
output:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}_op.nc",
|
+ "networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}_op.nc",
|
||||||
log:
|
log:
|
||||||
solver=normpath(
|
solver=normpath(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "logs/solve_operations_network/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}_op_solver.log"
|
+ "logs/solve_operations_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}_op_solver.log"
|
||||||
),
|
),
|
||||||
python=RESULTS
|
python=RESULTS
|
||||||
+ "logs/solve_operations_network/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}_op_python.log",
|
+ "logs/solve_operations_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}_op_python.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/solve_operations_network/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}"
|
+ "benchmarks/solve_operations_network/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}"
|
||||||
)
|
)
|
||||||
threads: 4
|
threads: 4
|
||||||
resources:
|
resources:
|
||||||
|
@ -11,12 +11,12 @@ rule add_existing_baseyear:
|
|||||||
costs=config_provider("costs"),
|
costs=config_provider("costs"),
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "prenetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
powerplants=resources("powerplants.csv"),
|
powerplants=resources("powerplants.csv"),
|
||||||
busmap_s=resources("busmap_elec{weather_year}_s{simpl}.csv"),
|
busmap_s=resources("busmap_elec_s{simpl}.csv"),
|
||||||
busmap=resources("busmap_elec{weather_year}_s{simpl}_{clusters}.csv"),
|
busmap=resources("busmap_elec_s{simpl}_{clusters}.csv"),
|
||||||
clustered_pop_layout=resources(
|
clustered_pop_layout=resources(
|
||||||
"pop_layout_elec{weather_year}_s{simpl}_{clusters}.csv"
|
"pop_layout_elec_s{simpl}_{clusters}.csv"
|
||||||
),
|
),
|
||||||
costs=lambda w: resources(
|
costs=lambda w: resources(
|
||||||
"costs_{}.csv".format(
|
"costs_{}.csv".format(
|
||||||
@ -24,20 +24,20 @@ rule add_existing_baseyear:
|
|||||||
)
|
)
|
||||||
),
|
),
|
||||||
cop_soil_total=resources(
|
cop_soil_total=resources(
|
||||||
"cop_soil_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_soil_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_air_total=resources(
|
cop_air_total=resources(
|
||||||
"cop_air_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_air_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
existing_heating_distribution=resources(
|
existing_heating_distribution=resources(
|
||||||
"existing_heating_distribution_elec{weather_year}_s{simpl}_{clusters}_{planning_horizons}.csv"
|
"existing_heating_distribution_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
||||||
),
|
),
|
||||||
existing_solar="data/existing_infrastructure/solar_capacity_IRENA.csv",
|
existing_solar="data/existing_infrastructure/solar_capacity_IRENA.csv",
|
||||||
existing_onwind="data/existing_infrastructure/onwind_capacity_IRENA.csv",
|
existing_onwind="data/existing_infrastructure/onwind_capacity_IRENA.csv",
|
||||||
existing_offwind="data/existing_infrastructure/offwind_capacity_IRENA.csv",
|
existing_offwind="data/existing_infrastructure/offwind_capacity_IRENA.csv",
|
||||||
output:
|
output:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "prenetworks-brownfield/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "prenetworks-brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
wildcard_constraints:
|
wildcard_constraints:
|
||||||
# TODO: The first planning_horizon needs to be aligned across scenarios
|
# TODO: The first planning_horizon needs to be aligned across scenarios
|
||||||
# snakemake does not support passing functions to wildcard_constraints
|
# snakemake does not support passing functions to wildcard_constraints
|
||||||
@ -48,11 +48,11 @@ rule add_existing_baseyear:
|
|||||||
mem_mb=2000,
|
mem_mb=2000,
|
||||||
log:
|
log:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "logs/add_existing_baseyear_elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
+ "logs/add_existing_baseyear_elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/add_existing_baseyear/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
+ "benchmarks/add_existing_baseyear/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -79,31 +79,31 @@ rule add_brownfield:
|
|||||||
carriers=config_provider("electricity", "renewable_carriers"),
|
carriers=config_provider("electricity", "renewable_carriers"),
|
||||||
input:
|
input:
|
||||||
unpack(input_profile_tech_brownfield),
|
unpack(input_profile_tech_brownfield),
|
||||||
simplify_busmap=resources("busmap_elec{weather_year}_s{simpl}.csv"),
|
simplify_busmap=resources("busmap_elec_s{simpl}.csv"),
|
||||||
cluster_busmap=resources("busmap_elec{weather_year}_s{simpl}_{clusters}.csv"),
|
cluster_busmap=resources("busmap_elec_s{simpl}_{clusters}.csv"),
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "prenetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
network_p=solved_previous_horizon, #solved network at previous time step
|
network_p=solved_previous_horizon, #solved network at previous time step
|
||||||
costs=resources("costs_{planning_horizons}.csv"),
|
costs=resources("costs_{planning_horizons}.csv"),
|
||||||
cop_soil_total=resources(
|
cop_soil_total=resources(
|
||||||
"cop_soil_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_soil_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
cop_air_total=resources(
|
cop_air_total=resources(
|
||||||
"cop_air_total_elec{weather_year}_s{simpl}_{clusters}.nc"
|
"cop_air_total_elec_s{simpl}_{clusters}.nc"
|
||||||
),
|
),
|
||||||
output:
|
output:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "prenetworks-brownfield/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "prenetworks-brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
threads: 4
|
threads: 4
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
log:
|
log:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "logs/add_brownfield_elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
+ "logs/add_brownfield_elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/add_brownfield/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
+ "benchmarks/add_brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
@ -125,19 +125,19 @@ rule solve_sector_network_myopic:
|
|||||||
custom_extra_functionality=input_custom_extra_functionality,
|
custom_extra_functionality=input_custom_extra_functionality,
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "prenetworks-brownfield/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "prenetworks-brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
costs=resources("costs_{planning_horizons}.csv"),
|
costs=resources("costs_{planning_horizons}.csv"),
|
||||||
config=RESULTS + "config.yaml",
|
config=RESULTS + "config.yaml",
|
||||||
output:
|
output:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
shadow:
|
shadow:
|
||||||
"shallow"
|
"shallow"
|
||||||
log:
|
log:
|
||||||
solver=RESULTS
|
solver=RESULTS
|
||||||
+ "logs/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_solver.log",
|
+ "logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_solver.log",
|
||||||
python=RESULTS
|
python=RESULTS
|
||||||
+ "logs/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_python.log",
|
+ "logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_python.log",
|
||||||
threads: solver_threads
|
threads: solver_threads
|
||||||
resources:
|
resources:
|
||||||
mem_mb=config_provider("solving", "mem"),
|
mem_mb=config_provider("solving", "mem"),
|
||||||
@ -145,7 +145,7 @@ rule solve_sector_network_myopic:
|
|||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/solve_sector_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
+ "benchmarks/solve_sector_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
|
@ -14,20 +14,20 @@ rule solve_sector_network:
|
|||||||
custom_extra_functionality=input_custom_extra_functionality,
|
custom_extra_functionality=input_custom_extra_functionality,
|
||||||
input:
|
input:
|
||||||
network=RESULTS
|
network=RESULTS
|
||||||
+ "prenetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
config=RESULTS + "config.yaml",
|
config=RESULTS + "config.yaml",
|
||||||
output:
|
output:
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "postnetworks/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
||||||
shadow:
|
shadow:
|
||||||
"shallow"
|
"shallow"
|
||||||
log:
|
log:
|
||||||
solver=RESULTS
|
solver=RESULTS
|
||||||
+ "logs/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_solver.log",
|
+ "logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_solver.log",
|
||||||
memory=RESULTS
|
memory=RESULTS
|
||||||
+ "logs/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_memory.log",
|
+ "logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_memory.log",
|
||||||
python=RESULTS
|
python=RESULTS
|
||||||
+ "logs/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_python.log",
|
+ "logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_python.log",
|
||||||
threads: solver_threads
|
threads: solver_threads
|
||||||
resources:
|
resources:
|
||||||
mem_mb=config_provider("solving", "mem"),
|
mem_mb=config_provider("solving", "mem"),
|
||||||
@ -35,7 +35,7 @@ rule solve_sector_network:
|
|||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RESULTS
|
RESULTS
|
||||||
+ "benchmarks/solve_sector_network/elec{weather_year}_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
+ "benchmarks/solve_sector_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
|
@ -206,7 +206,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"add_brownfield",
|
"add_brownfield",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters="37",
|
clusters="37",
|
||||||
opts="",
|
opts="",
|
||||||
|
@ -797,7 +797,7 @@ if __name__ == "__main__":
|
|||||||
if "snakemake" not in globals():
|
if "snakemake" not in globals():
|
||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake("add_electricity", weather_year="")
|
snakemake = mock_snakemake("add_electricity")
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
|
||||||
|
@ -553,7 +553,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"add_existing_baseyear",
|
"add_existing_baseyear",
|
||||||
weather_year="",
|
|
||||||
configfiles="config/test/config.myopic.yaml",
|
configfiles="config/test/config.myopic.yaml",
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters="37",
|
clusters="37",
|
||||||
|
@ -38,13 +38,13 @@ Inputs
|
|||||||
Outputs
|
Outputs
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- ``networks/elec{weather_year}_s{simpl}_{clusters}_ec.nc``:
|
- ``networks/elec_s{simpl}_{clusters}_ec.nc``:
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
The rule :mod:`add_extra_components` attaches additional extendable components to the clustered and simplified network. These can be configured in the ``config/config.yaml`` at ``electricity: extendable_carriers:``. It processes ``networks/elec{weather_year}_s{simpl}_{clusters}.nc`` to build ``networks/elec{weather_year}_s{simpl}_{clusters}_ec.nc``, which in contrast to the former (depending on the configuration) contain with **zero** initial capacity
|
The rule :mod:`add_extra_components` attaches additional extendable components to the clustered and simplified network. These can be configured in the ``config/config.yaml`` at ``electricity: extendable_carriers:``. It processes ``networks/elec_s{simpl}_{clusters}.nc`` to build ``networks/elec_s{simpl}_{clusters}_ec.nc``, which in contrast to the former (depending on the configuration) contain with **zero** initial capacity
|
||||||
|
|
||||||
- ``StorageUnits`` of carrier 'H2' and/or 'battery'. If this option is chosen, every bus is given an extendable ``StorageUnit`` of the corresponding carrier. The energy and power capacities are linked through a parameter that specifies the energy capacity as maximum hours at full dispatch power and is configured in ``electricity: max_hours:``. This linkage leads to one investment variable per storage unit. The default ``max_hours`` lead to long-term hydrogen and short-term battery storage units.
|
- ``StorageUnits`` of carrier 'H2' and/or 'battery'. If this option is chosen, every bus is given an extendable ``StorageUnit`` of the corresponding carrier. The energy and power capacities are linked through a parameter that specifies the energy capacity as maximum hours at full dispatch power and is configured in ``electricity: max_hours:``. This linkage leads to one investment variable per storage unit. The default ``max_hours`` lead to long-term hydrogen and short-term battery storage units.
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ if __name__ == "__main__":
|
|||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"add_extra_components", weather_year="", simpl="", clusters=5
|
"add_extra_components", simpl="", clusters=5
|
||||||
)
|
)
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
@ -16,7 +16,7 @@ if __name__ == "__main__":
|
|||||||
if "snakemake" not in globals():
|
if "snakemake" not in globals():
|
||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake("build_artificial_load_data", weather_year="")
|
snakemake = mock_snakemake("build_artificial_load_data")
|
||||||
|
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
|
|
||||||
|
@ -218,7 +218,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_biomass_potentials",
|
"build_biomass_potentials",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters="5",
|
clusters="5",
|
||||||
planning_horizons=2050,
|
planning_horizons=2050,
|
||||||
|
@ -19,7 +19,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_clustered_population_layouts",
|
"build_clustered_population_layouts",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters=48,
|
clusters=48,
|
||||||
)
|
)
|
||||||
|
@ -32,7 +32,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_cop_profiles",
|
"build_cop_profiles",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters=48,
|
clusters=48,
|
||||||
)
|
)
|
||||||
|
@ -21,7 +21,6 @@ if __name__ == "__main__":
|
|||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_daily_heat_demands",
|
"build_daily_heat_demands",
|
||||||
scope="total",
|
scope="total",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters=48,
|
clusters=48,
|
||||||
)
|
)
|
||||||
|
@ -258,7 +258,7 @@ if __name__ == "__main__":
|
|||||||
if "snakemake" not in globals():
|
if "snakemake" not in globals():
|
||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake("build_electricity_demand", weather_year="")
|
snakemake = mock_snakemake("build_electricity_demand")
|
||||||
|
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
@ -146,7 +146,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_industrial_distribution_key",
|
"build_industrial_distribution_key",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters=128,
|
clusters=128,
|
||||||
)
|
)
|
||||||
|
@ -73,7 +73,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_industrial_energy_demand_per_node_today",
|
"build_industrial_energy_demand_per_node_today",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters=48,
|
clusters=48,
|
||||||
)
|
)
|
||||||
|
@ -23,7 +23,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_population_layouts",
|
"build_population_layouts",
|
||||||
weather_year="",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
|
@ -15,7 +15,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_population_weighted_energy_totals",
|
"build_population_weighted_energy_totals",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters=48,
|
clusters=48,
|
||||||
)
|
)
|
||||||
|
@ -201,7 +201,7 @@ if __name__ == "__main__":
|
|||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_renewable_profiles", technology="offwind-dc", weather_year=""
|
"build_renewable_profiles", technology="offwind-dc"
|
||||||
)
|
)
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
@ -20,7 +20,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_solar_thermal_profiles",
|
"build_solar_thermal_profiles",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters=48,
|
clusters=48,
|
||||||
)
|
)
|
||||||
|
@ -167,7 +167,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"build_transport_demand",
|
"build_transport_demand",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters=48,
|
clusters=48,
|
||||||
)
|
)
|
||||||
|
@ -105,7 +105,7 @@ if __name__ == "__main__":
|
|||||||
if "snakemake" not in globals():
|
if "snakemake" not in globals():
|
||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake("cluster_gas_network", weather_year="", simpl="", clusters="37")
|
snakemake = mock_snakemake("cluster_gas_network", simpl="", clusters="37")
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
|
||||||
|
@ -32,28 +32,28 @@ Relevant Settings
|
|||||||
Inputs
|
Inputs
|
||||||
------
|
------
|
||||||
|
|
||||||
- ``resources/regions_onshore_elec{weather_year}_s{simpl}.geojson``: confer :ref:`simplify`
|
- ``resources/regions_onshore_elec_s{simpl}.geojson``: confer :ref:`simplify`
|
||||||
- ``resources/regions_offshore_elec{weather_year}_s{simpl}.geojson``: confer :ref:`simplify`
|
- ``resources/regions_offshore_elec_s{simpl}.geojson``: confer :ref:`simplify`
|
||||||
- ``networks/elec{weather_year}_s{simpl}.nc``: confer :ref:`simplify`
|
- ``networks/elec_s{simpl}.nc``: confer :ref:`simplify`
|
||||||
- ``resources/busmap_elec{weather_year}_s{simpl}.csv``: confer :ref:`simplify`
|
- ``resources/busmap_elec_s{simpl}.csv``: confer :ref:`simplify`
|
||||||
- ``data/custom_busmap_elec{weather_year}_s{simpl}_{clusters}.csv``: optional input
|
- ``data/custom_busmap_elec_s{simpl}_{clusters}.csv``: optional input
|
||||||
|
|
||||||
Outputs
|
Outputs
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- ``resources/regions_onshore_elec{weather_year}_s{simpl}_{clusters}.geojson``:
|
- ``resources/regions_onshore_elec_s{simpl}_{clusters}.geojson``:
|
||||||
|
|
||||||
.. image:: img/regions_onshore_elec_s_X.png
|
.. image:: img/regions_onshore_elec_s_X.png
|
||||||
:scale: 33 %
|
:scale: 33 %
|
||||||
|
|
||||||
- ``resources/regions_offshore_elec{weather_year}_s{simpl}_{clusters}.geojson``:
|
- ``resources/regions_offshore_elec_s{simpl}_{clusters}.geojson``:
|
||||||
|
|
||||||
.. image:: img/regions_offshore_elec_s_X.png
|
.. image:: img/regions_offshore_elec_s_X.png
|
||||||
:scale: 33 %
|
:scale: 33 %
|
||||||
|
|
||||||
- ``resources/busmap_elec{weather_year}_s{simpl}_{clusters}.csv``: Mapping of buses from ``networks/elec_s{simpl}.nc`` to ``networks/elec_s{simpl}_{clusters}.nc``;
|
- ``resources/busmap_elec_s{simpl}_{clusters}.csv``: Mapping of buses from ``networks/elec_s{simpl}.nc`` to ``networks/elec_s{simpl}_{clusters}.nc``;
|
||||||
- ``resources/linemap{weather_year}_elec_s{simpl}_{clusters}.csv``: Mapping of lines from ``networks/elec_s{simpl}.nc`` to ``networks/elec_s{simpl}_{clusters}.nc``;
|
- ``resources/linemap_elec_s{simpl}_{clusters}.csv``: Mapping of lines from ``networks/elec_s{simpl}.nc`` to ``networks/elec_s{simpl}_{clusters}.nc``;
|
||||||
- ``networks/elec{weather_year}_s{simpl}_{clusters}.nc``:
|
- ``networks/elec_s{simpl}_{clusters}.nc``:
|
||||||
|
|
||||||
.. image:: img/elec_s_X.png
|
.. image:: img/elec_s_X.png
|
||||||
:scale: 40 %
|
:scale: 40 %
|
||||||
@ -455,7 +455,7 @@ if __name__ == "__main__":
|
|||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"cluster_network", simpl="", clusters="5", weather_year=""
|
"cluster_network", simpl="", clusters="5",
|
||||||
)
|
)
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
@ -646,7 +646,7 @@ def make_summaries(networks_dict):
|
|||||||
|
|
||||||
columns = pd.MultiIndex.from_tuples(
|
columns = pd.MultiIndex.from_tuples(
|
||||||
networks_dict.keys(),
|
networks_dict.keys(),
|
||||||
names=["weather_year", "cluster", "ll", "opt", "planning_horizon"],
|
names=["cluster", "ll", "opt", "planning_horizon"],
|
||||||
)
|
)
|
||||||
|
|
||||||
df = {output: pd.DataFrame(columns=columns, dtype=float) for output in outputs}
|
df = {output: pd.DataFrame(columns=columns, dtype=float) for output in outputs}
|
||||||
@ -679,10 +679,9 @@ if __name__ == "__main__":
|
|||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
|
||||||
networks_dict = {
|
networks_dict = {
|
||||||
(weather_year, cluster, ll, opt + sector_opt, planning_horizon): "results/"
|
(cluster, ll, opt + sector_opt, planning_horizon): "results/"
|
||||||
+ snakemake.params.RDIR
|
+ snakemake.params.RDIR
|
||||||
+ f"postnetworks/elec{weather_year}_s{simpl}_{cluster}_l{ll}_{opt}_{sector_opt}_{planning_horizon}.nc"
|
+ f"postnetworks/elec_s{simpl}_{cluster}_l{ll}_{opt}_{sector_opt}_{planning_horizon}.nc"
|
||||||
for weather_year in snakemake.params.scenario["weather_year"]
|
|
||||||
for simpl in snakemake.params.scenario["simpl"]
|
for simpl in snakemake.params.scenario["simpl"]
|
||||||
for cluster in snakemake.params.scenario["clusters"]
|
for cluster in snakemake.params.scenario["clusters"]
|
||||||
for opt in snakemake.params.scenario["opts"]
|
for opt in snakemake.params.scenario["opts"]
|
||||||
|
@ -67,7 +67,7 @@ if __name__ == "__main__":
|
|||||||
if "snakemake" not in globals():
|
if "snakemake" not in globals():
|
||||||
from _helpers import mock_snakemake # rule must be enabled in config
|
from _helpers import mock_snakemake # rule must be enabled in config
|
||||||
|
|
||||||
snakemake = mock_snakemake("prepare_links_p_nom", simpl="", weather_year="")
|
snakemake = mock_snakemake("prepare_links_p_nom", simpl="")
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
|
||||||
|
@ -41,12 +41,12 @@ Inputs
|
|||||||
------
|
------
|
||||||
|
|
||||||
- ``resources/costs.csv``: The database of cost assumptions for all included technologies for specific years from various sources; e.g. discount rate, lifetime, investment (CAPEX), fixed operation and maintenance (FOM), variable operation and maintenance (VOM), fuel costs, efficiency, carbon-dioxide intensity.
|
- ``resources/costs.csv``: The database of cost assumptions for all included technologies for specific years from various sources; e.g. discount rate, lifetime, investment (CAPEX), fixed operation and maintenance (FOM), variable operation and maintenance (VOM), fuel costs, efficiency, carbon-dioxide intensity.
|
||||||
- ``networks/elec{weather_year}_s{simpl}_{clusters}.nc``: confer :ref:`cluster`
|
- ``networks/elec_s{simpl}_{clusters}.nc``: confer :ref:`cluster`
|
||||||
|
|
||||||
Outputs
|
Outputs
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- ``networks/elec{weather_year}_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc``: Complete PyPSA network that will be handed to the ``solve_network`` rule.
|
- ``networks/elec_s{simpl}_{clusters}_ec_l{ll}_{opts}.nc``: Complete PyPSA network that will be handed to the ``solve_network`` rule.
|
||||||
|
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
@ -305,7 +305,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"prepare_network",
|
"prepare_network",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
clusters="37",
|
clusters="37",
|
||||||
ll="v1.0",
|
ll="v1.0",
|
||||||
|
@ -3584,7 +3584,6 @@ if __name__ == "__main__":
|
|||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"prepare_sector_network",
|
"prepare_sector_network",
|
||||||
configfiles="test/config.overnight.yaml",
|
configfiles="test/config.overnight.yaml",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
opts="",
|
opts="",
|
||||||
clusters="37",
|
clusters="37",
|
||||||
|
@ -55,18 +55,18 @@ Inputs
|
|||||||
Outputs
|
Outputs
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- ``resources/regions_onshore_elec{weather_year}_s{simpl}.geojson``:
|
- ``resources/regions_onshore_elec_s{simpl}.geojson``:
|
||||||
|
|
||||||
.. image:: img/regions_onshore_elec_s.png
|
.. image:: img/regions_onshore_elec_s.png
|
||||||
:scale: 33 %
|
:scale: 33 %
|
||||||
|
|
||||||
- ``resources/regions_offshore_elec{weather_year}_s{simpl}.geojson``:
|
- ``resources/regions_offshore_elec_s{simpl}.geojson``:
|
||||||
|
|
||||||
.. image:: img/regions_offshore_elec_s .png
|
.. image:: img/regions_offshore_elec_s .png
|
||||||
:scale: 33 %
|
:scale: 33 %
|
||||||
|
|
||||||
- ``resources/busmap_elec{weather_year}_s{simpl}.h5``: Mapping of buses from ``networks/elec.nc`` to ``networks/elec{weather_year}_s{simpl}.nc``; has keys ['/busmap_s']
|
- ``resources/busmap_elec_s{simpl}.h5``: Mapping of buses from ``networks/elec.nc`` to ``networks/elec_s{simpl}.nc``; has keys ['/busmap_s']
|
||||||
- ``networks/elec{weather_year}_s{simpl}.nc``:
|
- ``networks/elec_s{simpl}.nc``:
|
||||||
|
|
||||||
.. image:: img/elec_s.png
|
.. image:: img/elec_s.png
|
||||||
:scale: 33 %
|
:scale: 33 %
|
||||||
@ -527,7 +527,7 @@ if __name__ == "__main__":
|
|||||||
if "snakemake" not in globals():
|
if "snakemake" not in globals():
|
||||||
from _helpers import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
|
|
||||||
snakemake = mock_snakemake("simplify_network", weather_year="", simpl="")
|
snakemake = mock_snakemake("simplify_network", simpl="")
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
set_scenario_config(snakemake)
|
set_scenario_config(snakemake)
|
||||||
|
|
||||||
|
@ -929,7 +929,6 @@ if __name__ == "__main__":
|
|||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"solve_sector_network",
|
"solve_sector_network",
|
||||||
configfiles="../config/test/config.perfect.yaml",
|
configfiles="../config/test/config.perfect.yaml",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
opts="",
|
opts="",
|
||||||
clusters="37",
|
clusters="37",
|
||||||
|
@ -29,7 +29,6 @@ if __name__ == "__main__":
|
|||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
"solve_operations_network",
|
"solve_operations_network",
|
||||||
configfiles="test/config.electricity.yaml",
|
configfiles="test/config.electricity.yaml",
|
||||||
weather_year="",
|
|
||||||
simpl="",
|
simpl="",
|
||||||
opts="",
|
opts="",
|
||||||
clusters="5",
|
clusters="5",
|
||||||
|
Loading…
Reference in New Issue
Block a user