build_line_rating: apply black style

This commit is contained in:
Fabian 2022-02-16 14:32:33 +01:00
parent 75b695eed4
commit 1d975bb814

View File

@ -61,6 +61,7 @@ import atlite
import xarray as xr import xarray as xr
import re import re
def calculate_resistance(T, R_ref, T_ref=293, alpha=0.00403): def calculate_resistance(T, R_ref, T_ref=293, alpha=0.00403):
""" """
Calculates the resistance at other temperatures than the reference temperature. Calculates the resistance at other temperatures than the reference temperature.
@ -79,9 +80,10 @@ def calculate_resistance(T, R_ref, T_ref=293, alpha=0.00403):
------- -------
Resistance of at given temperature. Resistance of at given temperature.
""" """
R=R_ref*(1+alpha*(T-T_ref)) R = R_ref * (1 + alpha * (T - T_ref))
return R return R
def calculate_line_rating(n): def calculate_line_rating(n):
""" """
Calculates the maximal allowed power flow in each line for each time step considering the maximal temperature. Calculates the maximal allowed power flow in each line for each time step considering the maximal temperature.
@ -94,7 +96,7 @@ def calculate_line_rating(n):
------- -------
xarray DataArray object with maximal power. xarray DataArray object with maximal power.
""" """
relevant_lines=n.lines[(n.lines['underground']==False)] relevant_lines = n.lines[(n.lines["underground"] == False)]
buses = relevant_lines[["bus0", "bus1"]].values buses = relevant_lines[["bus0", "bus1"]].values
x = n.buses.x x = n.buses.x
y = n.buses.y y = n.buses.y
@ -102,28 +104,48 @@ def calculate_line_rating(n):
shapes = gpd.GeoSeries(shapes, index=relevant_lines.index) shapes = gpd.GeoSeries(shapes, index=relevant_lines.index)
cutout = atlite.Cutout(snakemake.input.cutout) cutout = atlite.Cutout(snakemake.input.cutout)
if relevant_lines.r_pu.eq(0).all(): if relevant_lines.r_pu.eq(0).all():
#Overwrite standard line resistance with line resistance obtained from line type # Overwrite standard line resistance with line resistance obtained from line type
R=relevant_lines.join(n.line_types["r_per_length"], on=["type"])['r_per_length']/1000 #in meters r_per_length = n.line_types["r_per_length"]
#If line type with bundles is given retrieve number of conductors per bundle R = (
relevant_lines["n_bundle"]=relevant_lines["type"].where(relevant_lines["type"].str.contains("bundle")).dropna().apply(lambda x: int(re.findall(r"(\d+)-bundle", x)[0])) relevant_lines.join(r_per_length, on=["type"])["r_per_length"] / 1000
#Set default number of bundles per line ) # in meters
# If line type with bundles is given retrieve number of conductors per bundle
relevant_lines["n_bundle"] = (
relevant_lines["type"]
.where(relevant_lines["type"].str.contains("bundle"))
.dropna()
.apply(lambda x: int(re.findall(r"(\d+)-bundle", x)[0]))
)
# Set default number of bundles per line
relevant_lines["n_bundle"].fillna(1, inplace=True) relevant_lines["n_bundle"].fillna(1, inplace=True)
R*=relevant_lines["n_bundle"] R *= relevant_lines["n_bundle"]
R=calculate_resistance(T=353, R_ref=R) R = calculate_resistance(T=353, R_ref=R)
Imax=cutout.line_rating(shapes, R, D=0.0218 ,Ts=353 , epsilon=0.8, alpha=0.8) Imax = cutout.line_rating(shapes, R, D=0.0218, Ts=353, epsilon=0.8, alpha=0.8)
line_factor= relevant_lines.eval("v_nom * n_bundle * num_parallel")/1e3 #in mW line_factor = relevant_lines.eval("v_nom * n_bundle * num_parallel") / 1e3 # in mW
da = xr.DataArray(data=np.sqrt(3) * Imax * line_factor.values.reshape(-1,1), da = xr.DataArray(
attrs=dict(description="Maximal possible power in MW for given line considering line rating")) data=np.sqrt(3) * Imax * line_factor.values.reshape(-1, 1),
attrs=dict(
description="Maximal possible power in MW for given line considering line rating"
),
)
return da return da
if __name__ == "__main__": if __name__ == "__main__":
if 'snakemake' not in globals(): if "snakemake" not in globals():
from _helpers import mock_snakemake from _helpers import mock_snakemake
snakemake = mock_snakemake('build_line_rating', network='elec', simpl='',
clusters='40', ll='v1.0', opts='Co2L-4H') snakemake = mock_snakemake(
"build_line_rating",
network="elec",
simpl="",
clusters="40",
ll="v1.0",
opts="Co2L-4H",
)
configure_logging(snakemake) configure_logging(snakemake)
n = pypsa.Network(snakemake.input.base_network) n = pypsa.Network(snakemake.input.base_network)
da=calculate_line_rating(n) da = calculate_line_rating(n)
da.to_netcdf(snakemake.output[0]) da.to_netcdf(snakemake.output[0])