From 51dffbefa393a2498b8d2fd28aaaf63a051ec1f0 Mon Sep 17 00:00:00 2001 From: Fabian Neumann Date: Tue, 5 Apr 2022 16:59:51 +0200 Subject: [PATCH] add gas usage limit constraint --- config.default.yaml | 1 + scripts/prepare_network.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/config.default.yaml b/config.default.yaml index 4cd0eadc..128c7bac 100755 --- a/config.default.yaml +++ b/config.default.yaml @@ -39,6 +39,7 @@ enable: electricity: voltages: [220., 300., 380.] + gaslimit: false co2limit: 7.75e+7 # 0.05 * 3.1e9*0.5 co2base: 1.487e+9 agg_p_nom_limits: data/agg_p_nom_minmax.csv diff --git a/scripts/prepare_network.py b/scripts/prepare_network.py index 206e220b..27aacacf 100755 --- a/scripts/prepare_network.py +++ b/scripts/prepare_network.py @@ -77,6 +77,16 @@ def add_co2limit(n, co2limit, Nyears=1.): constant=co2limit * Nyears) +def add_gaslimit(n, gaslimit, Nyears=1.): + + sel = n.carriers.index.intersection(["OCGT", "CCGT", "CHP"]) + n.carriers.loc[sel, "gas_usage"] = 1. + + n.add("GlobalConstraint", "GasLimit", + carrier_attribute="gas_usage", sense="<=", + constant=gaslimit * Nyears) + + def add_emission_prices(n, emission_prices={'co2': 0.}, exclude_co2=False): if exclude_co2: emission_prices.pop('co2') ep = (pd.Series(emission_prices).rename(lambda x: x+'_emissions') * @@ -237,6 +247,10 @@ if __name__ == "__main__": add_co2limit(n, snakemake.config['electricity']['co2limit'], Nyears) break + gaslimit = snakemake.config["electricity"].get("gaslimit") + if gaslimit: + add_gaslimit(n, gaslimit, Nyears) + for o in opts: oo = o.split("+") suptechs = map(lambda c: c.split("-", 2)[0], n.carriers.index)