adjust to new pypsa-eur syntax
This commit is contained in:
parent
952a6ba1b5
commit
247c504604
@ -65,6 +65,13 @@ rule solve_sector_networks:
|
|||||||
**config["scenario"]
|
**config["scenario"]
|
||||||
),
|
),
|
||||||
|
|
||||||
|
rule solve_sector_networks_perfect:
|
||||||
|
input:
|
||||||
|
expand(
|
||||||
|
RESULTS
|
||||||
|
+ "/postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
||||||
|
**config["scenario"]
|
||||||
|
),
|
||||||
|
|
||||||
rule plot_networks:
|
rule plot_networks:
|
||||||
input:
|
input:
|
||||||
|
@ -68,32 +68,27 @@ rule add_brownfield:
|
|||||||
"../scripts/add_brownfield.py"
|
"../scripts/add_brownfield.py"
|
||||||
|
|
||||||
|
|
||||||
ruleorder: add_existing_baseyear > add_brownfield
|
|
||||||
|
|
||||||
|
|
||||||
rule prepare_perfect_foresight:
|
rule prepare_perfect_foresight:
|
||||||
input:
|
input:
|
||||||
**{
|
**{
|
||||||
f"network_{year}": RDIR
|
f"network_{year}": RESULTS
|
||||||
+ "/prenetworks/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_"
|
+ "/prenetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_"
|
||||||
+ f"{year}.nc"
|
+ f"{year}.nc"
|
||||||
for year in config["scenario"]["planning_horizons"][1:]
|
for year in config["scenario"]["planning_horizons"][1:]
|
||||||
},
|
},
|
||||||
brownfield_network=lambda w: (
|
brownfield_network=lambda w: (
|
||||||
RDIR
|
RESULTS
|
||||||
+ "/prenetworks-brownfield/"
|
+ "/prenetworks-brownfield/"
|
||||||
+ "elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_"
|
+ "elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_"
|
||||||
+ "{}.nc".format(str(config["scenario"]["planning_horizons"][0]))
|
+ "{}.nc".format(str(config["scenario"]["planning_horizons"][0]))
|
||||||
),
|
),
|
||||||
overrides="data/override_component_attrs",
|
overrides="data/override_component_attrs",
|
||||||
output:
|
output:
|
||||||
RDIR
|
RESULTS
|
||||||
+ "/prenetworks-brownfield/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
+ "/prenetworks-brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
||||||
threads: 2
|
threads: 2
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
script:
|
|
||||||
"../scripts/prepare_perfect_foresight.py"
|
|
||||||
log:
|
log:
|
||||||
LOGS
|
LOGS
|
||||||
+ "prepare_perfect_foresight{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}.log",
|
+ "prepare_perfect_foresight{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}.log",
|
||||||
@ -108,84 +103,84 @@ rule prepare_perfect_foresight:
|
|||||||
"../scripts/prepare_perfect_foresight.py"
|
"../scripts/prepare_perfect_foresight.py"
|
||||||
|
|
||||||
|
|
||||||
rule solve_network_perfect:
|
rule solve_sector_network_perfect:
|
||||||
input:
|
input:
|
||||||
overrides="data/override_component_attrs",
|
overrides="data/override_component_attrs",
|
||||||
network=RDIR
|
network=RESULTS
|
||||||
+ "/prenetworks-brownfield/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
+ "/prenetworks-brownfield/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
||||||
costs="data/costs_2030.csv",
|
costs="data/costs_2030.csv",
|
||||||
config=SDIR + "/configs/config.yaml",
|
config=RESULTS + "configs/config.yaml",
|
||||||
output:
|
output:
|
||||||
RDIR
|
RESULTS
|
||||||
+ "/postnetworks/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
+ "/postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc",
|
||||||
shadow:
|
|
||||||
"shallow"
|
|
||||||
log:
|
|
||||||
solver=RDIR
|
|
||||||
+ "/logs/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_brownfield_all_years_solver.log",
|
|
||||||
python=RDIR
|
|
||||||
+ "/logs/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_brownfield_all_years_python.log",
|
|
||||||
memory=RDIR
|
|
||||||
+ "/logs/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_brownfield_all_years_memory.log",
|
|
||||||
threads: 4
|
threads: 4
|
||||||
resources:
|
resources:
|
||||||
mem_mb=config["solving"]["mem"],
|
mem_mb=config["solving"]["mem"],
|
||||||
|
shadow:
|
||||||
|
"shallow"
|
||||||
|
log:
|
||||||
|
solver=RESULTS
|
||||||
|
+ "/logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years_solver.log",
|
||||||
|
python=RESULTS
|
||||||
|
+ "/logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years_python.log",
|
||||||
|
memory=RESULTS
|
||||||
|
+ "/logs/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years_memory.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
RDIR
|
BENCHMARKS
|
||||||
+ "/benchmarks/solve_network/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_brownfield_all_years"
|
+ "solve_sector_network/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years}"
|
||||||
)
|
)
|
||||||
script:
|
|
||||||
"../scripts/solve_network.py"
|
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
|
script:
|
||||||
|
"../scripts/solve_network.py"
|
||||||
|
|
||||||
|
|
||||||
rule make_summary_perfect:
|
rule make_summary_perfect:
|
||||||
input:
|
input:
|
||||||
**{
|
**{
|
||||||
f"networks_{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}": RDIR
|
f"networks_{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}": RESULTS
|
||||||
+ f"/postnetworks/elec_s{simpl}_{clusters}_lv{lv}_{opts}_{sector_opts}_brownfield_all_years.nc"
|
+ f"/postnetworks/elec_s{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}_brownfield_all_years.nc"
|
||||||
for simpl in config["scenario"]["simpl"]
|
for simpl in config["scenario"]["simpl"]
|
||||||
for clusters in config["scenario"]["clusters"]
|
for clusters in config["scenario"]["clusters"]
|
||||||
for opts in config["scenario"]["opts"]
|
for opts in config["scenario"]["opts"]
|
||||||
for sector_opts in config["scenario"]["sector_opts"]
|
for sector_opts in config["scenario"]["sector_opts"]
|
||||||
for lv in config["scenario"]["lv"]
|
for ll in config["scenario"]["ll"]
|
||||||
},
|
},
|
||||||
costs="data/costs_2020.csv",
|
costs="data/costs_2020.csv",
|
||||||
overrides="data/override_component_attrs",
|
overrides="data/override_component_attrs",
|
||||||
output:
|
output:
|
||||||
nodal_costs="results" + "/" + config["run"] + "/csvs/nodal_costs.csv",
|
nodal_costs=RESULTS + "/csvs/nodal_costs.csv",
|
||||||
nodal_capacities="results" + "/" + config["run"] + "/csvs/nodal_capacities.csv",
|
nodal_capacities=RESULTS + "/csvs/nodal_capacities.csv",
|
||||||
nodal_cfs="results" + "/" + config["run"] + "/csvs/nodal_cfs.csv",
|
nodal_cfs=RESULTS + "/csvs/nodal_cfs.csv",
|
||||||
cfs="results" + "/" + config["run"] + "/csvs/cfs.csv",
|
cfs=RESULTS + "/csvs/cfs.csv",
|
||||||
costs="results" + "/" + config["run"] + "/csvs/costs.csv",
|
costs=RESULTS + "/csvs/costs.csv",
|
||||||
capacities="results" + "/" + config["run"] + "/csvs/capacities.csv",
|
capacities=RESULTS + "/csvs/capacities.csv",
|
||||||
curtailment="results" + "/" + config["run"] + "/csvs/curtailment.csv",
|
curtailment=RESULTS + "/csvs/curtailment.csv",
|
||||||
capital_cost="results" + "/" + config["run"] + "/csvs/capital_cost.csv",
|
capital_cost=RESULTS + "/csvs/capital_cost.csv",
|
||||||
energy="results" + "/" + config["run"] + "/csvs/energy.csv",
|
energy=RESULTS + "/csvs/energy.csv",
|
||||||
supply="results" + "/" + config["run"] + "/csvs/supply.csv",
|
supply=RESULTS + "/csvs/supply.csv",
|
||||||
supply_energy="results" + "/" + config["run"] + "/csvs/supply_energy.csv",
|
supply_energy=RESULTS + "/csvs/supply_energy.csv",
|
||||||
prices="results" + "/" + config["run"] + "/csvs/prices.csv",
|
prices=RESULTS + "/csvs/prices.csv",
|
||||||
weighted_prices="results" + "/" + config["run"] + "/csvs/weighted_prices.csv",
|
weighted_prices=RESULTS + "/csvs/weighted_prices.csv",
|
||||||
market_values="results" + "/" + config["run"] + "/csvs/market_values.csv",
|
market_values=RESULTS + "/csvs/market_values.csv",
|
||||||
price_statistics="results" + "/" + config["run"] + "/csvs/price_statistics.csv",
|
price_statistics=RESULTS + "/csvs/price_statistics.csv",
|
||||||
metrics="results" + "/" + config["run"] + "/csvs/metrics.csv",
|
metrics=RESULTS + "/csvs/metrics.csv",
|
||||||
co2_emissions="results" + "/" + config["run"] + "/csvs/co2_emissions.csv",
|
co2_emissions=RESULTS + "/csvs/co2_emissions.csv",
|
||||||
threads: 2
|
threads: 2
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
script:
|
|
||||||
"../scripts/make_summary_perfect.py"
|
|
||||||
log:
|
log:
|
||||||
LOGS + "make_summary_perfect{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}.log",
|
LOGS + "make_summary_perfect.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(
|
(
|
||||||
BENCHMARKS
|
BENCHMARKS
|
||||||
+ "make_summary_perfect{simpl}_{clusters}_l{ll}_{opts}_{sector_opts}"
|
+ "make_summary_perfect"
|
||||||
)
|
)
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
|
script:
|
||||||
|
"../scripts/make_summary_perfect.py"
|
||||||
|
|
||||||
|
|
||||||
rule plot_summary_perfect:
|
rule plot_summary_perfect:
|
||||||
@ -194,30 +189,33 @@ rule plot_summary_perfect:
|
|||||||
f"costs_{year}": f"data/costs_{year}.csv"
|
f"costs_{year}": f"data/costs_{year}.csv"
|
||||||
for year in config["scenario"]["planning_horizons"]
|
for year in config["scenario"]["planning_horizons"]
|
||||||
},
|
},
|
||||||
costs_csv="results" + "/" + config["run"] + "/csvs/costs.csv",
|
costs_csv=RESULTS + "/csvs/costs.csv",
|
||||||
energy="results" + "/" + config["run"] + "/csvs/energy.csv",
|
energy=RESULTS + "/csvs/energy.csv",
|
||||||
balances="results" + "/" + config["run"] + "/csvs/supply_energy.csv",
|
balances=RESULTS + "/csvs/supply_energy.csv",
|
||||||
eea="data/eea/UNFCCC_v24.csv",
|
eea="data/eea/UNFCCC_v24.csv",
|
||||||
countries="results" + "/" + config["run"] + "/csvs/nodal_capacities.csv",
|
countries=RESULTS + "/csvs/nodal_capacities.csv",
|
||||||
co2_emissions="results" + "/" + config["run"] + "/csvs/co2_emissions.csv",
|
co2_emissions=RESULTS + "/csvs/co2_emissions.csv",
|
||||||
capacities="results" + "/" + config["run"] + "/csvs/capacities.csv",
|
capacities=RESULTS + "/csvs/capacities.csv",
|
||||||
capital_cost="results" + "/" + config["run"] + "/csvs/capital_cost.csv",
|
capital_cost=RESULTS + "/csvs/capital_cost.csv",
|
||||||
output:
|
output:
|
||||||
costs1="results" + "/" + config["run"] + "/graphs/costs.pdf",
|
costs1=RESULTS + "/graphs/costs.pdf",
|
||||||
costs2="results" + "/" + config["run"] + "/graphs/costs2.pdf",
|
costs2=RESULTS + "/graphs/costs2.pdf",
|
||||||
costs3="results" + "/" + config["run"] + "/graphs/total_costs_per_year.pdf",
|
costs3=RESULTS + "/graphs/total_costs_per_year.pdf",
|
||||||
# energy="results" + '/' + config['run'] + '/graphs/energy.pdf',
|
# energy="results" + '/' + config['run'] + '/graphs/energy.pdf',
|
||||||
balances="results" + "/" + config["run"] + "/graphs/balances-energy.pdf",
|
balances=RESULTS + "/graphs/balances-energy.pdf",
|
||||||
co2_emissions="results" + "/" + config["run"] + "/graphs/carbon_budget_plot.pdf",
|
co2_emissions=RESULTS + "/graphs/carbon_budget_plot.pdf",
|
||||||
capacities="results" + "/" + config["run"] + "/graphs/capacities.pdf",
|
capacities=RESULTS + "/graphs/capacities.pdf",
|
||||||
threads: 2
|
threads: 2
|
||||||
resources:
|
resources:
|
||||||
mem_mb=10000,
|
mem_mb=10000,
|
||||||
script:
|
|
||||||
"../scripts/plot_summary_perfect.py"
|
|
||||||
log:
|
log:
|
||||||
LOGS + "plot_summary_perfect.log",
|
LOGS + "plot_summary_perfect.log",
|
||||||
benchmark:
|
benchmark:
|
||||||
(BENCHMARKS + "plot_summary_perfect")
|
(BENCHMARKS + "plot_summary_perfect")
|
||||||
conda:
|
conda:
|
||||||
"../envs/environment.yaml"
|
"../envs/environment.yaml"
|
||||||
|
script:
|
||||||
|
"../scripts/plot_summary_perfect.py"
|
||||||
|
|
||||||
|
|
||||||
|
ruleorder: add_existing_baseyear > add_brownfield
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
# SPDX-FileCopyrightText: : 2020-2023 The PyPSA-Eur Authors
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Concats pypsa networks of single investment periods to one network.
|
Concats pypsa networks of single investment periods to one network.
|
||||||
|
|
||||||
Created on Tue Aug 16 10:40:41 2022
|
|
||||||
|
|
||||||
@author: lisa
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import pypsa
|
import pypsa
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from helper import override_component_attrs, update_config_with_sector_opts
|
from _helpers import override_component_attrs, update_config_with_sector_opts
|
||||||
from pypsa.io import import_components_from_dataframe
|
from pypsa.io import import_components_from_dataframe
|
||||||
from add_existing_baseyear import add_build_year_to_new_assets
|
from add_existing_baseyear import add_build_year_to_new_assets
|
||||||
from six import iterkeys
|
from six import iterkeys
|
||||||
@ -179,23 +179,22 @@ def set_all_phase_outs(n):
|
|||||||
|
|
||||||
def set_carbon_constraints(n, opts):
|
def set_carbon_constraints(n, opts):
|
||||||
"""Add global constraints for carbon emissions."""
|
"""Add global constraints for carbon emissions."""
|
||||||
budget = (
|
budget = None
|
||||||
snakemake.config["co2_budget"]["1p7"] * 1e9
|
|
||||||
) # budget for + 1.7 Celsius for Europe
|
|
||||||
for o in opts:
|
for o in opts:
|
||||||
# other budgets
|
# other budgets
|
||||||
m = re.match(r"^\d+p\d$", o, re.IGNORECASE)
|
m = re.match(r"^\d+p\d$", o, re.IGNORECASE)
|
||||||
if m is not None:
|
if m is not None:
|
||||||
budget = snakemake.config["co2_budget"][m.group(0)] * 1e9
|
budget = snakemake.config["co2_budget"][m.group(0)] * 1e9
|
||||||
logger.info("add carbon budget of {}".format(budget))
|
if budget!=None:
|
||||||
n.add(
|
logger.info("add carbon budget of {}".format(budget))
|
||||||
"GlobalConstraint",
|
n.add(
|
||||||
"Budget",
|
"GlobalConstraint",
|
||||||
type="Co2constraint",
|
"Budget",
|
||||||
carrier_attribute="co2_emissions",
|
type="Co2constraint",
|
||||||
sense="<=",
|
carrier_attribute="co2_emissions",
|
||||||
constant=budget,
|
sense="<=",
|
||||||
)
|
constant=budget,
|
||||||
|
)
|
||||||
|
|
||||||
if not "noco2neutral" in opts:
|
if not "noco2neutral" in opts:
|
||||||
logger.info("Add carbon neutrality constraint.")
|
logger.info("Add carbon neutrality constraint.")
|
||||||
@ -232,7 +231,7 @@ def set_carbon_constraints(n, opts):
|
|||||||
#%%
|
#%%
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if 'snakemake' not in globals():
|
if 'snakemake' not in globals():
|
||||||
from helper import mock_snakemake
|
from _helpers import mock_snakemake
|
||||||
snakemake = mock_snakemake(
|
snakemake = mock_snakemake(
|
||||||
'prepare_perfect_foresight',
|
'prepare_perfect_foresight',
|
||||||
simpl='',
|
simpl='',
|
||||||
|
Loading…
Reference in New Issue
Block a user