add Fabians suggestion

This commit is contained in:
virio-andreyana 2023-09-23 18:39:11 +02:00
parent b2c19eda40
commit 01cd1bbb74
8 changed files with 36 additions and 99 deletions

View File

@ -20,11 +20,7 @@ if config["enable"].get("prepare_links_p_nom", False):
rule build_electricity_demand:
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
countries=config["countries"],
load=config["load"],
input:
@ -65,11 +61,7 @@ rule build_powerplants:
rule base_network:
params:
countries=config["countries"],
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
lines=config["lines"],
links=config["links"],
transformers=config["transformers"],
@ -152,11 +144,7 @@ if config["enable"].get("build_cutout", False):
rule build_cutout:
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
cutouts=config["atlite"]["cutouts"],
input:
regions_onshore=RESOURCES + "regions_onshore.geojson",
@ -220,6 +208,7 @@ rule build_ship_raster:
rule build_renewable_profiles:
params:
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
renewable=config["renewable"],
input:
base_network=RESOURCES + "networks/base.nc",
@ -310,6 +299,8 @@ rule build_hydro_profile:
if config["lines"]["dynamic_line_rating"]["activate"]:
rule build_line_rating:
params:
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
input:
base_network=RESOURCES + "networks/base.nc",
cutout="cutouts/"

View File

@ -141,11 +141,7 @@ if not (config["sector"]["gas_network"] or config["sector"]["H2_retrofit"]):
rule build_heat_demands:
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
input:
pop_layout=RESOURCES + "pop_layout_{scope}.nc",
regions_onshore=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson",
@ -167,11 +163,7 @@ rule build_heat_demands:
rule build_temperature_profiles:
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
input:
pop_layout=RESOURCES + "pop_layout_{scope}.nc",
regions_onshore=RESOURCES + "regions_onshore_elec_s{simpl}_{clusters}.geojson",
@ -223,11 +215,7 @@ rule build_cop_profiles:
rule build_solar_thermal_profiles:
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
solar_thermal=config["solar_thermal"],
input:
pop_layout=RESOURCES + "pop_layout_{scope}.nc",
@ -689,11 +677,7 @@ rule build_shipping_demand:
rule build_transport_demand:
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
sector=config["sector"],
input:
clustered_pop_layout=RESOURCES + "pop_layout_elec_s{simpl}_{clusters}.csv",

View File

@ -55,11 +55,7 @@ rule make_summary:
params:
foresight=config["foresight"],
costs=config["costs"],
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
scenario=config["scenario"],
RDIR=RDIR,
input:

View File

@ -17,11 +17,7 @@ rule build_electricity_production:
The data is used for validation of the optimization results.
"""
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
countries=config["countries"],
output:
RESOURCES + "historical_electricity_production.csv",
@ -39,11 +35,7 @@ rule build_cross_border_flows:
The data is used for validation of the optimization results.
"""
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
countries=config["countries"],
input:
network=RESOURCES + "networks/base.nc",
@ -63,11 +55,7 @@ rule build_electricity_prices:
The data is used for validation of the optimization results.
"""
params:
snapshots={
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
},
snapshots={k: config["snapshots"][k] for k in ["start", "end", "inclusive"]},
countries=config["countries"],
output:
RESOURCES + "historical_electricity_prices.csv",

View File

@ -709,11 +709,7 @@ def base_network(
transformers = _set_electrical_parameters_transformers(transformers, config)
links = _set_electrical_parameters_links(links, config, links_p_nom)
converters = _set_electrical_parameters_converters(converters, config)
snapshots = {
"start": config["snapshots"]["start"],
"end": config["snapshots"]["end"],
"inclusive": config["snapshots"]["inclusive"],
}
snapshots = snakemake.params.snapshots
n = pypsa.Network()
n.name = "PyPSA-Eur"

View File

@ -148,11 +148,7 @@ if __name__ == "__main__":
)
configure_logging(snakemake)
snapshots = {
"start": snakemake.config["snapshots"]["start"],
"end": snakemake.config["snapshots"]["end"],
"inclusive": snakemake.config["snapshots"]["inclusive"],
}
snapshots = snakemake.params.snapshots
n = pypsa.Network(snakemake.input.base_network)
time = pd.date_range(freq="h", **snapshots)

View File

@ -211,11 +211,7 @@ if __name__ == "__main__":
correction_factor = params.get("correction_factor", 1.0)
capacity_per_sqkm = params["capacity_per_sqkm"]
p_nom_max_meth = params.get("potential", "conservative")
snapshots = {
"start": snakemake.config["snapshots"]["start"],
"end": snakemake.config["snapshots"]["end"],
"inclusive": snakemake.config["snapshots"]["inclusive"],
}
snapshots = snakemake.params.snapshots
if isinstance(params.get("corine", {}), list):
params["corine"] = {"grid_codes": params["corine"]}

View File

@ -314,26 +314,22 @@ if __name__ == "__main__":
# temporal averaging
nhours_config = snakemake.params.snapshots.get("resolution", False)
nhours_wildcard = get_opt(opts, r"^\d+h$")
if nhours_wildcard is not None or isinstance(nhours_config, str):
nhours = nhours_wildcard or nhours_config
nhours = nhours_wildcard or nhours_config
if nhours:
n = average_every_nhours(n, nhours)
# segments with package tsam
time_seg_config = snakemake.params.snapshots.get("segmentation", False)
time_seg_wildcard = get_opt(opts, r"^\d+seg$")
if time_seg_wildcard is not None or isinstance(time_seg_config, str):
time_seg = time_seg_wildcard or time_seg_config
time_seg = time_seg_wildcard or time_seg_config
if time_seg:
solver_name = snakemake.config["solving"]["solver"]["name"]
n = apply_time_segmentation(n, time_seg, solver_name)
Co2L_config = snakemake.params.co2limit_enable and isinstance(
snakemake.params.co2limit, float
)
Co2L_config = snakemake.params.co2limit_enable
Co2L_wildcard, co2limit_wildcard = find_opt(opts, "Co2L")
if Co2L_wildcard or Co2L_config:
if (
co2limit_wildcard is not None
): # TODO: what if you wat to determine the factor through the wildcard?
if co2limit_wildcard is not None:
co2limit = co2limit_wildcard * snakemake.params.co2base
add_co2limit(n, co2limit, Nyears)
logger.info("Setting CO2 limit according to wildcard value.")
@ -341,14 +337,10 @@ if __name__ == "__main__":
add_co2limit(n, snakemake.params.co2limit, Nyears)
logger.info("Setting CO2 limit according to config value.")
CH4L_config = snakemake.params.gaslimit_enable and isinstance(
snakemake.params.gaslimit, float
)
CH4L_config = snakemake.params.gaslimit_enable
CH4L_wildcard, gaslimit_wildcard = find_opt(opts, "CH4L")
if CH4L_wildcard or CH4L_config:
if (
gaslimit_wildcard is not None
): # TODO: what if you wat to determine the factor through the wildcard?
if gaslimit_wildcard is not None:
gaslimit = gaslimit_wildcard * 1e6
add_gaslimit(n, gaslimit, Nyears)
logger.info("Setting gas usage limit according to wildcard value.")
@ -375,20 +367,18 @@ if __name__ == "__main__":
sel = c.df.carrier.str.contains(carrier)
c.df.loc[sel, attr] *= factor
Ept_config = snakemake.params.costs["emission_prices"].get(
"co2_monthly_prices", False
)
for o in opts:
if "Ept" in o or Ept_config:
logger.info(
"Setting time dependent emission prices according spot market price"
)
add_dynamic_emission_prices(n)
Ept_config = True
Ep_config = snakemake.params.costs["emission_prices"].get("enable", False)
emission_prices = snakemake.params.costs["emission_prices"]
Ept_config = emission_prices.get("co2_monthly_prices", False)
Ept_wildcard = "Ept" in opts
Ep_config = emission_prices.get("enable", False)
Ep_wildcard, co2_wildcard = find_opt(opts, "Ep")
if (Ep_wildcard or Ep_config) and not Ept_config:
if Ept_wildcard or Ept_config:
logger.info(
"Setting time dependent emission prices according spot market price"
)
add_dynamic_emission_prices(n)
elif Ep_wildcard or Ep_config:
if co2_wildcard is not None:
logger.info("Setting CO2 prices according to wildcard value.")
add_emission_prices(n, dict(co2=co2_wildcard))