base_network: Improve treatment of under_construction links

This commit is contained in:
Jonas Hörsch 2018-08-27 19:13:41 +02:00
parent 21fd124d6e
commit 6f98607aec
2 changed files with 22 additions and 7 deletions

View File

@ -110,11 +110,11 @@ lines:
s_max_pu: 0.7 s_max_pu: 0.7
length_factor: 1.25 length_factor: 1.25
with_under_construction: false under_construction: 'zero' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
links: links:
s_max_pu: 0.7 s_max_pu: 0.7
with_under_construction: false under_construction: 'keep' # 'zero': set capacity to zero, 'remove': remove, 'keep': with full capacity
transformers: transformers:
x: 0.1 x: 0.1

View File

@ -94,6 +94,7 @@ def _apply_parameter_corrections(n):
with open(snakemake.input.parameter_corrections) as f: with open(snakemake.input.parameter_corrections) as f:
corrections = yaml.load(f) corrections = yaml.load(f)
if corrections is None: return
for component, attrs in iteritems(corrections): for component, attrs in iteritems(corrections):
df = n.df(component) df = n.df(component)
if attrs is None: continue 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.loc[lines["v_nom"] == v_nom, 'type'] = linetypes[v_nom]
lines['s_max_pu'] = snakemake.config['lines']['s_max_pu'] 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 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)"] p_nom = links_p_nom.dropna(subset=["j"]).set_index("j")["Power (MW)"]
links.loc[p_nom.index, "p_nom"] = p_nom 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 return links
def _set_electrical_parameters_converters(converters): 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)) links = gpd.GeoSeries(n.links.geometry.dropna().map(shapely.wkt.loads))
n.links['underwater_fraction'] = links.intersection(offshore_shape).length / links.length 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(): def base_network():
buses = _load_buses_from_eg() buses = _load_buses_from_eg()
@ -339,6 +352,8 @@ def base_network():
_replace_b2b_converter_at_country_border_by_link(n) _replace_b2b_converter_at_country_border_by_link(n)
_adjust_capacities_of_under_construction_branches(n)
return n return n
if __name__ == "__main__": if __name__ == "__main__":