From 6f98607aecfc5d7025bd20c8fccc20f0133ebb87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20H=C3=B6rsch?= Date: Mon, 27 Aug 2018 19:13:41 +0200 Subject: [PATCH] base_network: Improve treatment of under_construction links --- config.yaml | 4 ++-- scripts/base_network.py | 25 ++++++++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/config.yaml b/config.yaml index d97c128b..c69c1bcf 100644 --- a/config.yaml +++ b/config.yaml @@ -110,11 +110,11 @@ lines: s_max_pu: 0.7 length_factor: 1.25 - with_under_construction: false + under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity links: s_max_pu: 0.7 - with_under_construction: false + under_construction: 'keep' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity transformers: x: 0.1 diff --git a/scripts/base_network.py b/scripts/base_network.py index 22252af2..2c810bca 100644 --- a/scripts/base_network.py +++ b/scripts/base_network.py @@ -94,6 +94,7 @@ def _apply_parameter_corrections(n): with open(snakemake.input.parameter_corrections) as f: corrections = yaml.load(f) + if corrections is None: return for component, attrs in iteritems(corrections): df = n.df(component) if attrs is None: continue @@ -118,8 +119,6 @@ def _set_electrical_parameters_lines(lines): lines.loc[lines["v_nom"] == v_nom, 'type'] = linetypes[v_nom] lines['s_max_pu'] = snakemake.config['lines']['s_max_pu'] - if not snakemake.config['lines']['with_under_construction']: - lines.loc[lines.under_construction.astype(bool), 'num_parallel'] = 0. return lines @@ -154,9 +153,6 @@ def _set_electrical_parameters_links(links): p_nom = links_p_nom.dropna(subset=["j"]).set_index("j")["Power (MW)"] links.loc[p_nom.index, "p_nom"] = p_nom - if not snakemake.config['links']['with_under_construction']: - links.loc[links.under_construction.astype(bool), "p_nom"] = 0. - return links def _set_electrical_parameters_converters(converters): @@ -302,6 +298,23 @@ def _set_links_underwater_fraction(n): links = gpd.GeoSeries(n.links.geometry.dropna().map(shapely.wkt.loads)) n.links['underwater_fraction'] = links.intersection(offshore_shape).length / links.length +def _adjust_capacities_of_under_construction_branches(n): + lines_mode = snakemake.config['lines'].get('under_construction', 'undef') + if lines_mode == 'zero': + n.lines.loc[n.lines.under_construction, 'num_parallel'] = 0. + elif lines_mode == 'remove': + n.mremove("Line", n.lines.index[n.lines.under_construction]) + elif lines_mode != 'keep': + logger.warn("Unrecognized configuration for `lines: under_construction` = `{}`. Keeping under construction lines.") + + links_mode = snakemake.config['links'].get('under_construction', 'undef') + if links_mode == 'zero': + n.links.loc[n.links.under_construction, "p_nom"] = 0. + elif links_mode == 'remove': + n.mremove("Link", n.links.index[n.links.under_construction]) + elif links_mode != 'keep': + logger.warn("Unrecognized configuration for `links: under_construction` = `{}`. Keeping under construction links.") + def base_network(): buses = _load_buses_from_eg() @@ -339,6 +352,8 @@ def base_network(): _replace_b2b_converter_at_country_border_by_link(n) + _adjust_capacities_of_under_construction_branches(n) + return n if __name__ == "__main__":