pypsa-eur icon indicating copy to clipboard operation
pypsa-eur copied to clipboard

Adding CHPs to the existing heating baseyear

Open toniseibold opened this issue 1 year ago • 3 comments

Closes # (if applicable).

Adding CHPs to the existing heating sector

In add_existing_baseyear.py, the code now checks for the wildcard H. If the heating sector is not part of the network, CHP plants are added to the electricity grid only. Otherwise, the CHPs are added with the heating sector. If the column Capacity_thermal exists, the MaStR data was read in and the German CHPs are added with the efficiency calculated by Triebs et al.

Checklist

  • [x] I tested my contribution locally and it seems to work fine.
  • [x] Code and workflow changes are sufficiently documented.
  • [x] Changed dependencies are added to envs/environment.yaml.
  • [x] Changes in configuration options are added in all of config.default.yaml.
  • [x] Changes in configuration options are also documented in doc/configtables/*.csv.
  • [ ] A release note doc/release_notes.rst is added.

toniseibold avatar Jan 31 '24 16:01 toniseibold

@toniseibold, I changed a few additional things and I condensed a few remaining TODOs for you. We can revert parts that I overlooked that were necessary.

  • limit changes to add_existing_baseyear rule, so the PR becomes more modular.
  • hydro and waste are dropped later anyways, hence I dropped them from the powerplant query
  • skipna=True in mean calculation is not required as this is already the default behaviour
  • try-except block for lifetimes was not required in my case; if it is needed, I would implement as if-else block
  • hardcoded heat efficiency (0.71) was removed by using the backpressure coefficient (https://ens.dk/sites/ens.dk/files/Analyser/technology_data_catalogue_for_el_and_dh.pdf, page 21: "The Cb -coefficient (backpressure coefficient) is defined as the maximum power generation capacity in backpressure mode divided by the maximum heat production capacity (including flue gas condensation if applicable)")
  • read custom powerplants here, rather than in build_powerplants rule.
  • I added a mechanism to exclude small CHPs below 500 kW (threshold debatable)
  • I use the backpressure coefficient c_b for calculating the heat efficiency of power-driven CHPs and followed roughly your approach for strongly heat-driven CHPs while adjusting the split and giving some upper limits for c_b and Efficiency depending on efficiency-heat.
  • It should be fine for DateIn and DateOut to be floats.
  • There was a bug which only used the first capacity value in a pandas.Series (p_nom=capacity[0], and capacity[0] / costs.at[key, "efficiency"])

TODOs

  • [x] Double-check my changes
  • [x] Handle Fueltypes Other/Waste (relatively large capacity dropped, also linked to duplicates in pypsa-ariadne PR)
  • [x] Potentially: keep oil CHPs and use gas CHP for techno-economic data
  • [ ] Test run with capacity and energy output comparison to historical statistics.

fneum avatar Feb 10 '24 13:02 fneum

in add_existing_baseyear.py why are oil CHPs kept?

    if "H" in snakemake.wildcards.sector_opts.split("-"):
        df_agg = df_agg.query("Set != 'CHP' or Fueltype == 'Oil'")

Oil and waste CHPs are now kept in the heating sector.

toniseibold avatar Feb 14 '24 16:02 toniseibold

Installed capacity of CHP plants in Germany 2020:

urban central coal CHP                  24.096386
urban central gas CHP                 1292.031899
urban central gas CHP CC                 0.000000
urban central lignite CHP              561.611424
urban central solid biomass CHP         42.487920
urban central solid biomass CHP CC       0.000000

Heating supply

urban central air heat pump             4.255723e-06
urban central gas CHP                   4.075471e-06
urban central gas CHP CC                1.599523e-06
urban central gas boiler                8.522301e+07
urban central resistive heater          5.342906e-06
urban central solar thermal             8.890480e-07
urban central solid biomass CHP         6.361950e+03

toniseibold avatar Feb 20 '24 08:02 toniseibold

please add the CHPs in add_existing_power and not in add_existing_heating (because of the differences in the grouping year logic)

lindnemi avatar May 22 '24 14:05 lindnemi

  • [ ] also make sure not to add power-only biomass plants twice
  • [x] and perhaps lets find another name for the power only plants, the OP is somewhat confusing

lindnemi avatar May 22 '24 14:05 lindnemi