diff --git a/Snakefile b/Snakefile index 2702fd3d..7f5be34d 100644 --- a/Snakefile +++ b/Snakefile @@ -239,7 +239,8 @@ rule simplify_network: network='networks/elec_s{simpl}.nc', regions_onshore="resources/regions_onshore_elec_s{simpl}.geojson", regions_offshore="resources/regions_offshore_elec_s{simpl}.geojson", - busmap='resources/busmap_elec_s{simpl}.csv' + busmap='resources/busmap_elec_s{simpl}.csv', + connection_costs='resources/connection_costs_s{simpl}.csv' log: "logs/simplify_network/elec_s{simpl}.log" benchmark: "benchmarks/simplify_network/elec_s{simpl}" threads: 1 diff --git a/scripts/base_network.py b/scripts/base_network.py index 778f8dc4..4c2ed2c5 100644 --- a/scripts/base_network.py +++ b/scripts/base_network.py @@ -114,7 +114,7 @@ def _find_closest_links(links, new_links, distance_upper_bound=1.5): def _load_buses_from_eg(): buses = (pd.read_csv(snakemake.input.eg_buses, quotechar="'", - true_values='t', false_values='f', + true_values=['t'], false_values=['f'], dtype=dict(bus_id="str")) .set_index("bus_id") .drop(['station_id'], axis=1) @@ -136,7 +136,7 @@ def _load_buses_from_eg(): def _load_transformers_from_eg(buses): transformers = (pd.read_csv(snakemake.input.eg_transformers, quotechar="'", - true_values='t', false_values='f', + true_values=['t'], false_values=['f'], dtype=dict(transformer_id='str', bus0='str', bus1='str')) .set_index('transformer_id')) @@ -147,7 +147,7 @@ def _load_transformers_from_eg(buses): def _load_converters_from_eg(buses): converters = (pd.read_csv(snakemake.input.eg_converters, quotechar="'", - true_values='t', false_values='f', + true_values=['t'], false_values=['f'], dtype=dict(converter_id='str', bus0='str', bus1='str')) .set_index('converter_id')) @@ -159,7 +159,7 @@ def _load_converters_from_eg(buses): def _load_links_from_eg(buses): - links = (pd.read_csv(snakemake.input.eg_links, quotechar="'", true_values='t', false_values='f', + links = (pd.read_csv(snakemake.input.eg_links, quotechar="'", true_values=['t'], false_values=['f'], dtype=dict(link_id='str', bus0='str', bus1='str', under_construction="bool")) .set_index('link_id')) @@ -249,7 +249,7 @@ def _add_links_from_tyndp(buses, links): def _load_lines_from_eg(buses): - lines = (pd.read_csv(snakemake.input.eg_lines, quotechar="'", true_values='t', false_values='f', + lines = (pd.read_csv(snakemake.input.eg_lines, quotechar="'", true_values=['t'], false_values=['f'], dtype=dict(line_id='str', bus0='str', bus1='str', underground="bool", under_construction="bool")) .set_index('line_id') diff --git a/scripts/simplify_network.py b/scripts/simplify_network.py index 4678f796..c1840760 100644 --- a/scripts/simplify_network.py +++ b/scripts/simplify_network.py @@ -178,6 +178,7 @@ def _compute_connection_costs_to_bus(n, busmap, connection_costs_per_link=None, def _adjust_capital_costs_using_connection_costs(n, connection_costs_to_bus): + connection_costs = {} for tech in connection_costs_to_bus: tech_b = n.generators.carrier == tech costs = n.generators.loc[tech_b, "bus"].map(connection_costs_to_bus[tech]).loc[lambda s: s>0] @@ -185,6 +186,9 @@ def _adjust_capital_costs_using_connection_costs(n, connection_costs_to_bus): n.generators.loc[costs.index, "capital_cost"] += costs logger.info("Displacing {} generator(s) and adding connection costs to capital_costs: {} " .format(tech, ", ".join("{:.0f} Eur/MW/a for `{}`".format(d, b) for b, d in costs.iteritems()))) + connection_costs[tech] = costs + pd.DataFrame(connection_costs).to_csv(snakemake.output.connection_costs) + def _aggregate_and_move_components(n, busmap, connection_costs_to_bus, aggregate_one_ports={"Load", "StorageUnit"}):