From e6d779a91f0dd8896f3da5dbe37db51f3593fa7b Mon Sep 17 00:00:00 2001 From: lisazeyen Date: Fri, 25 Aug 2023 11:56:29 +0200 Subject: [PATCH] first step add max_growth --- config/config.perfect.yaml | 5 +++++ scripts/solve_network.py | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/config/config.perfect.yaml b/config/config.perfect.yaml index fcee4972..fcbbef74 100644 --- a/config/config.perfect.yaml +++ b/config/config.perfect.yaml @@ -499,6 +499,11 @@ sector: OCGT: gas biomass_to_liquid: false biosng: false + max_growth: + onwind: 16 + solar: 28 + offwind-ac: 35 + offwind-dc 35 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry industry: diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 9137dd14..9a9d353e 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -232,6 +232,25 @@ def add_carbon_neutral_constraint(n, snapshots): n.model.add_constraints(lhs <= rhs, name=f"GlobalConstraint-{name}") + +def add_max_growth(n): + """Add maximum growth rates for different carriers""" + logger.info("set maximum growth rate of renewables.") + # solar max grow so far 28 GW in Europe https://www.iea.org/reports/renewables-2020/solar-pv + n.carriers.loc["solar", "max_growth"] = 280 * 1.3 * 1e3 # 70 * 1e3 + # onshore max grow so far 16 GW in Europe https://www.iea.org/reports/renewables-2020/wind + n.carriers.loc["onwind", "max_growth"] = 160 * 1.3 * 1e3 # 40 * 1e3 + # offshore max grow so far 3.5 GW in Europe https://windeurope.org/about-wind/statistics/offshore/european-offshore-wind-industry-key-trends-statistics-2019/ + n.carriers.loc[["offwind-ac", "offwind-dc"], "max_growth"] = 35 * 1.3 * 1e3 # 8.75 * 1e3 + + res = ["solar", "onwind", "offwind-ac", "offwind-dc"] + n.carriers.loc[res, "max_relative_growth"] = 3 + + # # heating sector + # heat_c = n.carriers[n.carriers.index.str.contains("pump")].index + # n.carriers.loc[res, "max_relative_growth"] = 2 + + return n def prepare_network( n, @@ -295,6 +314,7 @@ def prepare_network( if foresight == "perfect": n = add_land_use_constraint_perfect(n) + n = add_max_growth(n) if n.stores.carrier.eq("co2 stored").any(): limit = co2_sequestration_potential @@ -665,6 +685,7 @@ def add_pipe_retrofit_constraint(n): n.model.add_constraints(lhs == rhs, name="Link-pipe_retrofit") + def extra_functionality(n, snapshots): """ Collects supplementary constraints which will be passed to