2024-01-19 17:42:49 +00:00
|
|
|
# SPDX-FileCopyrightText: : 2023-4 The PyPSA-Eur Authors
|
2023-03-08 16:29:01 +00:00
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
|
2023-03-08 16:46:14 +00:00
|
|
|
|
2023-03-08 16:29:01 +00:00
|
|
|
rule add_existing_baseyear:
|
2023-05-15 08:33:17 +00:00
|
|
|
params:
|
2023-09-22 11:58:08 +00:00
|
|
|
baseyear=config_provider("scenario", "planning_horizons", 0),
|
|
|
|
sector=config_provider("sector"),
|
|
|
|
existing_capacities=config_provider("existing_capacities"),
|
|
|
|
costs=config_provider("costs"),
|
2023-03-08 16:29:01 +00:00
|
|
|
input:
|
|
|
|
network=RESULTS
|
|
|
|
+ "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
2023-08-23 15:14:57 +00:00
|
|
|
powerplants=resources("powerplants.csv"),
|
|
|
|
busmap_s=resources("busmap_elec_s{simpl}.csv"),
|
|
|
|
busmap=resources("busmap_elec_s{simpl}_{clusters}.csv"),
|
|
|
|
clustered_pop_layout=resources("pop_layout_elec_s{simpl}_{clusters}.csv"),
|
2024-02-17 16:39:10 +00:00
|
|
|
costs=lambda w: resources(
|
|
|
|
"costs_{}.csv".format(
|
|
|
|
config_provider("scenario", "planning_horizons", 0)(w)
|
|
|
|
)
|
|
|
|
),
|
2023-08-23 15:14:57 +00:00
|
|
|
cop_soil_total=resources("cop_soil_total_elec_s{simpl}_{clusters}.nc"),
|
|
|
|
cop_air_total=resources("cop_air_total_elec_s{simpl}_{clusters}.nc"),
|
2024-02-10 16:22:36 +00:00
|
|
|
existing_heating_distribution=resources(
|
|
|
|
"existing_heating_distribution_elec_s{simpl}_{clusters}_{planning_horizons}.csv"
|
|
|
|
),
|
2023-03-08 16:29:01 +00:00
|
|
|
existing_solar="data/existing_infrastructure/solar_capacity_IRENA.csv",
|
|
|
|
existing_onwind="data/existing_infrastructure/onwind_capacity_IRENA.csv",
|
|
|
|
existing_offwind="data/existing_infrastructure/offwind_capacity_IRENA.csv",
|
|
|
|
output:
|
|
|
|
RESULTS
|
|
|
|
+ "prenetworks-brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
|
|
|
wildcard_constraints:
|
2024-02-17 22:36:46 +00:00
|
|
|
# TODO: The first planning_horizon needs to be aligned across scenarios
|
|
|
|
# snakemake does not support passing functions to wildcard_constraints
|
|
|
|
# reference: https://github.com/snakemake/snakemake/issues/2703
|
|
|
|
planning_horizons=config["scenario"]["planning_horizons"][0], #only applies to baseyear
|
2023-03-08 16:29:01 +00:00
|
|
|
threads: 1
|
|
|
|
resources:
|
|
|
|
mem_mb=2000,
|
2023-03-08 18:22:00 +00:00
|
|
|
log:
|
2024-02-17 22:36:46 +00:00
|
|
|
RESULTS
|
|
|
|
+ "logs/add_existing_baseyear_elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
2023-03-08 16:29:01 +00:00
|
|
|
benchmark:
|
2024-02-17 22:36:46 +00:00
|
|
|
(
|
|
|
|
RESULTS
|
|
|
|
+ "benchmarks/add_existing_baseyear/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
2024-02-10 17:09:46 +00:00
|
|
|
)
|
2023-03-08 16:46:14 +00:00
|
|
|
conda:
|
|
|
|
"../envs/environment.yaml"
|
2023-03-08 16:29:01 +00:00
|
|
|
script:
|
2023-03-08 16:45:25 +00:00
|
|
|
"../scripts/add_existing_baseyear.py"
|
2023-03-08 16:29:01 +00:00
|
|
|
|
2023-03-08 16:44:25 +00:00
|
|
|
|
2024-02-12 15:56:00 +00:00
|
|
|
def input_profile_tech_brownfield(w):
|
|
|
|
return {
|
|
|
|
f"profile_{tech}": resources(f"profile_{tech}.nc")
|
|
|
|
for tech in config_provider("electricity", "renewable_carriers")(w)
|
|
|
|
if tech != "hydro"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2023-03-08 16:29:01 +00:00
|
|
|
rule add_brownfield:
|
2023-05-15 08:33:17 +00:00
|
|
|
params:
|
2023-09-22 11:58:08 +00:00
|
|
|
H2_retrofit=config_provider("sector", "H2_retrofit"),
|
|
|
|
H2_retrofit_capacity_per_CH4=config_provider(
|
|
|
|
"sector", "H2_retrofit_capacity_per_CH4"
|
|
|
|
),
|
|
|
|
threshold_capacity=config_provider("existing_capacities", " threshold_capacity"),
|
2024-02-17 16:16:28 +00:00
|
|
|
snapshots=config_provider("snapshots"),
|
2024-03-14 17:46:45 +00:00
|
|
|
drop_leap_day=config_provider("enable", "drop_leap_day"),
|
2024-02-10 16:22:01 +00:00
|
|
|
carriers=config_provider("electricity", "renewable_carriers"),
|
2023-03-08 16:29:01 +00:00
|
|
|
input:
|
2024-02-12 15:56:00 +00:00
|
|
|
unpack(input_profile_tech_brownfield),
|
2024-02-10 17:09:23 +00:00
|
|
|
simplify_busmap=resources("busmap_elec_s{simpl}.csv"),
|
|
|
|
cluster_busmap=resources("busmap_elec_s{simpl}_{clusters}.csv"),
|
2023-03-08 16:29:01 +00:00
|
|
|
network=RESULTS
|
|
|
|
+ "prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
|
|
|
network_p=solved_previous_horizon, #solved network at previous time step
|
2024-02-16 10:17:00 +00:00
|
|
|
costs=resources("costs_{planning_horizons}.csv"),
|
2023-08-23 15:14:57 +00:00
|
|
|
cop_soil_total=resources("cop_soil_total_elec_s{simpl}_{clusters}.nc"),
|
|
|
|
cop_air_total=resources("cop_air_total_elec_s{simpl}_{clusters}.nc"),
|
2023-03-08 16:29:01 +00:00
|
|
|
output:
|
|
|
|
RESULTS
|
|
|
|
+ "prenetworks-brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
|
|
|
threads: 4
|
|
|
|
resources:
|
|
|
|
mem_mb=10000,
|
2023-03-08 18:22:00 +00:00
|
|
|
log:
|
2024-02-17 22:36:46 +00:00
|
|
|
RESULTS
|
|
|
|
+ "logs/add_brownfield_elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.log",
|
2023-03-08 16:29:01 +00:00
|
|
|
benchmark:
|
2024-02-17 22:36:46 +00:00
|
|
|
(
|
|
|
|
RESULTS
|
|
|
|
+ "benchmarks/add_brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
2024-02-10 17:09:46 +00:00
|
|
|
)
|
2023-03-08 16:46:14 +00:00
|
|
|
conda:
|
|
|
|
"../envs/environment.yaml"
|
2023-03-08 16:29:01 +00:00
|
|
|
script:
|
2023-03-08 16:45:25 +00:00
|
|
|
"../scripts/add_brownfield.py"
|
2023-03-08 16:29:01 +00:00
|
|
|
|
2023-03-08 16:44:25 +00:00
|
|
|
|
2023-03-08 16:29:01 +00:00
|
|
|
ruleorder: add_existing_baseyear > add_brownfield
|
|
|
|
|
2023-03-08 16:44:25 +00:00
|
|
|
|
2023-03-08 16:29:01 +00:00
|
|
|
rule solve_sector_network_myopic:
|
2023-05-15 08:33:17 +00:00
|
|
|
params:
|
2023-09-22 11:58:08 +00:00
|
|
|
solving=config_provider("solving"),
|
|
|
|
foresight=config_provider("foresight"),
|
|
|
|
planning_horizons=config_provider("scenario", "planning_horizons"),
|
|
|
|
co2_sequestration_potential=config_provider(
|
|
|
|
"sector", "co2_sequestration_potential", default=200
|
2023-06-02 10:53:09 +00:00
|
|
|
),
|
2024-01-04 08:00:31 +00:00
|
|
|
custom_extra_functionality=input_custom_extra_functionality,
|
2023-03-08 16:29:01 +00:00
|
|
|
input:
|
|
|
|
network=RESULTS
|
|
|
|
+ "prenetworks-brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
2024-02-16 10:17:00 +00:00
|
|
|
costs=resources("costs_{planning_horizons}.csv"),
|
2023-03-08 16:29:01 +00:00
|
|
|
output:
|
2024-03-13 07:57:57 +00:00
|
|
|
network=RESULTS
|
2023-03-08 16:29:01 +00:00
|
|
|
+ "postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.nc",
|
2024-03-13 07:57:57 +00:00
|
|
|
config=RESULTS
|
|
|
|
+ "configs/config.elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}.yaml",
|
2023-03-08 16:29:01 +00:00
|
|
|
shadow:
|
|
|
|
"shallow"
|
|
|
|
log:
|
2024-02-17 22:36:46 +00:00
|
|
|
solver=RESULTS
|
|
|
|
+ "logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_solver.log",
|
2024-03-08 10:26:00 +00:00
|
|
|
memory=RESULTS
|
|
|
|
+ "logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_memory.log",
|
2024-02-17 22:36:46 +00:00
|
|
|
python=RESULTS
|
|
|
|
+ "logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}_python.log",
|
2024-01-22 08:28:51 +00:00
|
|
|
threads: solver_threads
|
2023-03-08 16:29:01 +00:00
|
|
|
resources:
|
2024-03-09 13:47:01 +00:00
|
|
|
mem_mb=config_provider("solving", "mem_mb"),
|
|
|
|
runtime=config_provider("solving", "runtime", default="6h"),
|
2023-03-08 16:29:01 +00:00
|
|
|
benchmark:
|
2024-02-17 22:36:46 +00:00
|
|
|
(
|
|
|
|
RESULTS
|
|
|
|
+ "benchmarks/solve_sector_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_{planning_horizons}"
|
2024-02-10 17:09:46 +00:00
|
|
|
)
|
2023-03-08 16:46:14 +00:00
|
|
|
conda:
|
|
|
|
"../envs/environment.yaml"
|
2023-03-08 16:29:01 +00:00
|
|
|
script:
|
2023-03-09 21:51:56 +00:00
|
|
|
"../scripts/solve_network.py"
|