add option to consider compression losses in pipelines as electricity demand

This commit is contained in:
Fabian Neumann 2023-08-08 17:56:22 +02:00
parent d7cb13246b
commit 118cabe8a6
2 changed files with 14 additions and 3 deletions

View File

@ -483,9 +483,11 @@ sector:
efficiency_static: 0.98 efficiency_static: 0.98
efficiency_per_1000km: 0.977 efficiency_per_1000km: 0.977
H2 pipeline: H2 pipeline:
efficiency_per_1000km: 0.979 efficiency_per_1000km: 1 # 0.979
compression_per_1000km: 0.019
gas pipeline: gas pipeline:
efficiency_per_1000km: 0.977 efficiency_per_1000km: 1 #0.977
compression_per_1000km: 0.01
H2_network: true H2_network: true
gas_network: false gas_network: false
H2_retrofit: false H2_retrofit: false

View File

@ -3285,11 +3285,16 @@ def lossy_bidirectional_links(n, carrier, efficiencies={}):
carrier_i = n.links.query("carrier == @carrier").index carrier_i = n.links.query("carrier == @carrier").index
<<<<<<< HEAD
if not any(v != 1. for v in efficiencies.values()) or carrier_i.empty: if not any(v != 1. for v in efficiencies.values()) or carrier_i.empty:
=======
if not any((v != 1.0) or (v >= 0) for v in efficiencies.values()) or carrier_i.empty:
>>>>>>> 5822adb0 (add option to consider compression losses in pipelines as electricity demand)
return return
efficiency_static = efficiencies.get("efficiency_static", 1) efficiency_static = efficiencies.get("efficiency_static", 1)
efficiency_per_1000km = efficiencies.get("efficiency_per_1000km", 1) efficiency_per_1000km = efficiencies.get("efficiency_per_1000km", 1)
compression_per_1000km = efficiencies.get("compression_per_1000km", 0)
logger.info( logger.info(
f"Specified losses for {carrier} transmission" f"Specified losses for {carrier} transmission"
@ -3297,7 +3302,6 @@ def lossy_bidirectional_links(n, carrier, efficiencies={}):
"Splitting bidirectional links." "Splitting bidirectional links."
) )
carrier_i = n.links.query("carrier == @carrier").index
n.links.loc[carrier_i, "p_min_pu"] = 0 n.links.loc[carrier_i, "p_min_pu"] = 0
n.links.loc[carrier_i, "efficiency"] = ( n.links.loc[carrier_i, "efficiency"] = (
efficiency_static * efficiency_per_1000km ** (n.links.loc[carrier_i, "length"] / 1e3) efficiency_static * efficiency_per_1000km ** (n.links.loc[carrier_i, "length"] / 1e3)
@ -3312,6 +3316,11 @@ def lossy_bidirectional_links(n, carrier, efficiencies={}):
n.links = pd.concat([n.links, rev_links], sort=False) n.links = pd.concat([n.links, rev_links], sort=False)
n.links["reversed"] = n.links["reversed"].fillna(False) n.links["reversed"] = n.links["reversed"].fillna(False)
# do compression losses after concatenation to take electricity consumption at bus0 in either direction
carrier_i = n.links.query("carrier == @carrier").index
if compression_per_1000km > 0:
n.links.loc[carrier_i, "bus2"] = n.links.loc[carrier_i, "bus0"].map(n.buses.location) # electricity
n.links.loc[carrier_i, "efficiency2"] = - compression_per_1000km * n.links.loc[carrier_i, "length"] / 1e3
if __name__ == "__main__": if __name__ == "__main__":
if "snakemake" not in globals(): if "snakemake" not in globals():