move max growth assumptions to config
This commit is contained in:
parent
e6d779a91f
commit
3fcf3f2fe6
@ -499,11 +499,20 @@ sector:
|
|||||||
OCGT: gas
|
OCGT: gas
|
||||||
biomass_to_liquid: false
|
biomass_to_liquid: false
|
||||||
biosng: false
|
biosng: false
|
||||||
max_growth:
|
limit_max_growth:
|
||||||
onwind: 16
|
enable: true
|
||||||
solar: 28
|
# allowing 30% larger than max historic growth
|
||||||
offwind-ac: 35
|
factor: 1.3
|
||||||
offwind-dc 35
|
max_growth: # unit GW
|
||||||
|
onwind: 16 # onshore max grow so far 16 GW in Europe https://www.iea.org/reports/renewables-2020/wind
|
||||||
|
solar: 28 # solar max grow so far 28 GW in Europe https://www.iea.org/reports/renewables-2020/solar-pv
|
||||||
|
offwind-ac: 35 # 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/
|
||||||
|
offwind-dc: 35
|
||||||
|
max_relative_growth:
|
||||||
|
onwind: 3
|
||||||
|
solar: 3
|
||||||
|
offwind-ac: 3
|
||||||
|
offwind-dc: 3
|
||||||
|
|
||||||
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry
|
# docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#industry
|
||||||
industry:
|
industry:
|
||||||
|
@ -87,9 +87,7 @@ def add_land_use_constraint_perfect(n):
|
|||||||
# carrier
|
# carrier
|
||||||
carriers = p_nom_max.index.get_level_values(0).unique()
|
carriers = p_nom_max.index.get_level_values(0).unique()
|
||||||
gen_i = n.generators[(n.generators.carrier.isin(carriers)) &
|
gen_i = n.generators[(n.generators.carrier.isin(carriers)) &
|
||||||
(ext_i) &
|
(ext_i)].index
|
||||||
(n.generators.build_year>n.investment_periods[0])
|
|
||||||
].index
|
|
||||||
n.generators.loc[gen_i, "p_nom_min"] = 0
|
n.generators.loc[gen_i, "p_nom_min"] = 0
|
||||||
# check minimum capacities
|
# check minimum capacities
|
||||||
check_p_min_p_max(p_nom_max)
|
check_p_min_p_max(p_nom_max)
|
||||||
@ -233,22 +231,22 @@ def add_carbon_neutral_constraint(n, snapshots):
|
|||||||
n.model.add_constraints(lhs <= rhs, name=f"GlobalConstraint-{name}")
|
n.model.add_constraints(lhs <= rhs, name=f"GlobalConstraint-{name}")
|
||||||
|
|
||||||
|
|
||||||
def add_max_growth(n):
|
def add_max_growth(n, config):
|
||||||
"""Add maximum growth rates for different carriers"""
|
"""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"]
|
opts = config["sector"]["limit_max_growth"]
|
||||||
n.carriers.loc[res, "max_relative_growth"] = 3
|
# take maximum yearly difference between investment periods since historic growth is per year
|
||||||
|
factor = n.investment_period_weightings.years.max() * opts["factor"]
|
||||||
|
for carrier in opts["max_growth"].keys():
|
||||||
|
max_per_period = opts["max_growth"][carrier] * factor
|
||||||
|
logger.info(f"set maximum growth rate per investment period of {carrier} to {max_per_period} GW.")
|
||||||
|
n.carriers.loc[carrier, "max_growth"] = max_per_period * 1e3
|
||||||
|
|
||||||
# # heating sector
|
for carrier in opts["max_relative_growth"].keys():
|
||||||
# heat_c = n.carriers[n.carriers.index.str.contains("pump")].index
|
max_r_per_period = opts["max_relative_growth"][carrier]
|
||||||
# n.carriers.loc[res, "max_relative_growth"] = 2
|
logger.info(f"set maximum relative growth per investment period of {carrier} to {max_r_per_period}.")
|
||||||
|
n.carriers.loc[carrier, "max_relative_growth"] = max_r_per_period
|
||||||
|
|
||||||
return n
|
return n
|
||||||
|
|
||||||
@ -314,7 +312,8 @@ def prepare_network(
|
|||||||
|
|
||||||
if foresight == "perfect":
|
if foresight == "perfect":
|
||||||
n = add_land_use_constraint_perfect(n)
|
n = add_land_use_constraint_perfect(n)
|
||||||
n = add_max_growth(n)
|
if config["sector"]["limit_max_growth"]["enable"]:
|
||||||
|
n = add_max_growth(n, config)
|
||||||
|
|
||||||
if n.stores.carrier.eq("co2 stored").any():
|
if n.stores.carrier.eq("co2 stored").any():
|
||||||
limit = co2_sequestration_potential
|
limit = co2_sequestration_potential
|
||||||
|
Loading…
Reference in New Issue
Block a user