PyPSA / pypsa-ariadne

High resolution, sector-coupled model of the German Energy System
https://ariadneprojekt.de/en/model-documentation-pypsa/
MIT License
12 stars 4 forks source link

Adding NEP21 and cost data for 2019 #41

Closed toniseibold closed 6 months ago

toniseibold commented 6 months ago

Because of the Covid pandemic, the prices for gas, coal and oil were low because of the decreased demand. Since we are using 2019 demand data from eurostat, the workflow now takes also the prices from 2019 into account.

There are also added heat pump values manually for 2019/2020:

technology investment costs unit
decentral air-sourced heat pump 3319 EUR2020/kW_th
decentral ground-sourced heat pump 5340 EUR2020/kW_th

The Network expansion costs are changed for all planning_horizons:

technology investment costs unit
electricity distribution grid 3000 EUR2020/kW
HVAC overhead 736 EUR2020/MW/km
HVDC inverter pair 600000 EUR2020/MW
HVDC overhead 1000 EUR2020/MW/km
HVDC submarine 3250 EUR2020/MW/km
Note that the og table from Fabian Neumann included more data but the DEA data does not include AC/DC underground data. Since the submarine data is missing in NEP 21, the underground values are taken as substitute. Paramter & unit PyPSA-Eur NEP 23 NEP 21 ACER 23 average ACER 23 Q3 Vrana & Härtel (2023)
AC overhead (€/MW/km) 442 1325-1384 736 371 481 -
AC underground (€/MW/km) - 4711 3386 771 821 -
AC submarine (€/MW/km) - - - 1182 1488 -
DC overhead (€/MW/km) 442 - 1000 371 481 -
DC underground (€/MW/km) - 3300-3800 3250 771 821 870
DC submarine (€/MW/km) 1008 - - 653 741 1159
DC inverter pair (€/kW) 166 - 600 150 193 -

Compared to before the capital_cost of DC links are now ~ 3 times higher then before.

nworbmot commented 6 months ago

Hi @toniseibold, good so far, a few changes:

toniseibold commented 6 months ago

Thanks for the review!

Cost reduction following the DEA reductions image

Everything else should also be addressed. Couldn't find the source for the heat pump investment costs for 2020 but added Ariadne database as source.

toniseibold commented 6 months ago

Strange infeasability for offshore wind coming up for 2030 when optimizing myopic from 2020 on:

IIS computed: 7 constraints and 0 bounds
IIS runtime: 0.00 seconds (0.00 work units)
Generator-ext-p_nom-upper[DE1 3 offwind-ac-2030]: +1 Generator-p_nom[DE1 3 offwind-ac-2030] ≤ 1.33756202558e-07
Generator-ext-p_nom-upper[DE1 3 offwind-dc-2030]: +1 Generator-p_nom[DE1 3 offwind-dc-2030] ≤ 3.84843588108e-07
Generator-ext-p_nom-upper[DE1 6 offwind-ac-2030]: +1 Generator-p_nom[DE1 6 offwind-ac-2030] ≤ 2492.76843401
Generator-ext-p_nom-upper[DE1 6 offwind-dc-2030]: +1 Generator-p_nom[DE1 6 offwind-dc-2030] ≤ 1.37606548378e-09
Generator-ext-p_nom-upper[DE1 7 offwind-ac-2030]: +1 Generator-p_nom[DE1 7 offwind-ac-2030] ≤ 7.66360699345e-08
Generator-ext-p_nom-upper[DE1 7 offwind-dc-2030]: +1 Generator-p_nom[DE1 7 offwind-dc-2030] ≤ 3.35546133101e-08
GlobalConstraint-capacity_minimum-DE-Generator-offwind: +1 Generator-p_nom[DE1 3 offwind-ac-2030] + 1 Generator-p_nom[DE1 3 offwind-dc-2030] + 1 Generator-p_nom[DE1 6 offwind-ac-2030] + 1 Generator-p_nom[DE1 6 offwind-dc-2030] + 1 Generator-p_nom[DE1 7 offwind-ac-2030] + 1 Generator-p_nom[DE1 7 offwind-dc-2030] ≥ 2658.61335008
ERROR:root:Uncaught exception
FabianHofmann commented 6 months ago

@toniseibold is this perfect foresight? If yes, please update to the latest pypsa version

toniseibold commented 6 months ago

It is myopic foresight. With new config settings

renewable:
  offwind-ac:
    capacity_per_sqkm: 10
  offwind-dc:
    capacity_per_sqkm: 10

it works however those are rather high...

nworbmot commented 6 months ago

Source for heat pump data is https://ariadneprojekt.de/media/2024/01/Ariadne-Analyse_HeizkostenEmissionenGebaeude_Januar2024.pdf, Anhang at end.

toniseibold commented 6 months ago

did not reuse function update_transmission_costs with from add_electricity import update_transmission_costs since I had to slightly change the function to not set prices for the extension of reversed lines/links. Since the function is rather short I copied and renamed it to transmission_costs_from_modified_cost_data. This is the minimal invasive way that doesn't need changes in pypsa-Eur or the pypsa-Eur ariadne branch.