Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Endogenise industry heat supply in steam, medium and high T segments #611

Open
wants to merge 17 commits into
base: master
Choose a base branch
from

Conversation

fneum
Copy link
Member

@fneum fneum commented Mar 6, 2023

Base automatically changed from merge-pypsa-eur-sec to master March 18, 2023 12:12
@fneum fneum changed the title Endogenous industry Endogenise industry heat supply in steam, medium and high T segments May 11, 2023
@fneum fneum added this to the v0.12.0 milestone May 23, 2024
@lisazeyen
Copy link
Contributor

For the split between low, medium and high temperature we can use data from https://www.agora-industry.org/publications/direct-electrification-of-industrial-process-heat, 50% high temperature, 13% low temperature, 37% medium temperature

Screenshot from 2024-07-05 10-34-28

@toniseibold
Copy link
Contributor

For medium temperature heat the biomass route has an efficiency=costs.at["direct firing solid fuels", "efficiency"] which equals 1. The low temperature heat biomass route has an efficiency=costs.at["solid biomass boiler steam", "efficiency"] which equals 0.89. This would mean that biomass to low temperature heat is less efficient than biomass to medium temperature heat which is not making too much sense in my eyes.

@lisazeyen lisazeyen marked this pull request as ready for review August 5, 2024 10:45
@lisazeyen
Copy link
Contributor

For medium temperature heat the biomass route has an efficiency=costs.at["direct firing solid fuels", "efficiency"] which equals 1. The low temperature heat biomass route has an efficiency=costs.at["solid biomass boiler steam", "efficiency"] which equals 0.89. This would mean that biomass to low temperature heat is less efficient than biomass to medium temperature heat which is not making too much sense in my eyes.

I couldn't find a better source. I would suggest to merge it as it is and add an issue. The medium and high temperature split in the best case should be done per country and not based on an EU average.

@lisazeyen
Copy link
Contributor

Data cross check with the Agora report
in Agora report
EU 27 2019 - total process heating 1861 TWh

  • 50% high T ~ 930 TWh high T demand
  • 13% low T ~ 240 TWh
  • 37% medium T ~ 690 TWh
    space heating 224 TWh should be added to central heat demand

Currently, we have (including GB, Norway, CH)

  • low T 754 TWh (> than Agora 240+224=464 TWh)
  • medium T 100 TWh (< Agora 690 TWh, too small)
  • high T 135 TWh (< Agora 930 TWh, too small)

@lisazeyen
Copy link
Contributor

Other sources to look at metis 3 study s5

@millingermarkus
Copy link
Contributor

millingermarkus commented Aug 14, 2024

For medium temperature heat the biomass route has an efficiency=costs.at["direct firing solid fuels", "efficiency"] which equals 1. The low temperature heat biomass route has an efficiency=costs.at["solid biomass boiler steam", "efficiency"] which equals 0.89. This would mean that biomass to low temperature heat is less efficient than biomass to medium temperature heat which is not making too much sense in my eyes.

I couldn't find a better source. I would suggest to merge it as it is and add an issue. The medium and high temperature split in the best case should be done per country and not based on an EU average.

I agree with @toniseibold that it is inconsistent, I'd suggest adding it as an issue in technology-data. In DEA there is also a condensing boiler option with higher efficiency, but it does not make much sense for industrial steam which is >150oC.

Added an issue in technology data.

@fneum fneum modified the milestones: v0.12.0, v0.13.0 Aug 29, 2024
@koen-vg
Copy link
Contributor

koen-vg commented Sep 13, 2024

Hi, actually I'm looking into using this (thanks as always to those that have put in the effort), but was wondering if this should be combined with a little bit of code in add_existing_baseyear.py for myopic planning? I haven't looked into this in detail but it seems like otherwise you might get a very different process heat energy supply already at the first planning horizon (e.g. 2025) compared to the current situation. And if I understand this correctly, today's situation is already reflected in the industrial demand data. I guess the only data which I don't know if we have readily available are the build-years and phase-out dates of existing firing capacities. If anyone has a sensible suggestion for how to deal with that, I'd be happy to contribute by coding something up.

@koen-vg
Copy link
Contributor

koen-vg commented Sep 13, 2024

I will also quickly note that in the context of myopic foresight, I quickly ran into infeasibilities related to the must_run condition. This makes sense: the model might invest, for example, in non-CC firing capacities in one time horizon, leading to forced emissions in the next time horizon, and potentially an infeasibility due to decreasing carbon cap.

Unsurpringly, there are some similarities to #960. Allowing the model to phase out and replace existing capacities at some cost might make sense (in order to guarantee feasibility at least).

@koen-vg
Copy link
Contributor

koen-vg commented Sep 20, 2024

Data cross check with the Agora report in Agora report EU 27 2019 - total process heating 1861 TWh

* 50% high T ~ 930 TWh high T demand

* 13% low T ~ 240 TWh

* 37% medium T ~ 690 TWh
  space heating 224 TWh should be added to central heat demand

Currently, we have (including GB, Norway, CH)

* low T 754 TWh (> than Agora 240+224=464 TWh)

* medium T 100 TWh (< Agora 690 TWh, too small)

* high T  135 TWh (< Agora 930 TWh, too small)

It looks to me like there is a significant discrepancy between the definitions used for low-, medium- and high-temperature heat between the Agora report and this PR. This PR would certainly benefit from clear definitions in terms of where the temperature-boundaries go between low / medium / high.

If you look at the paper industry, for example, pypsa-eur currently (pre this PR) assumes a significant uptake of solid biomass energy demand towards 2050 as almost all heat required by this industry (>200TWh) is assumed to be supplied by biomass by then. In this PR, the biomass-supplied heating demand is translated to low-temperature heat.

The way this Agora report is currently read implies an assumption that low-temperature heat is <100C. However, the same report implies that the vast majority of heat demand for the paper industry is between 100C and 200C (i.e. "medium heat"?).

This confusion between low/medium heat also leads to a presumably unwanted result: the total demand for low-temperature heat goes up significantly as the planning horizon goes from 2020 to 2050 (as far as I can understand, a result of large fractions of heat demand in 2050 being assumed to be supplied by solid biomass initially in build_industry_sector_ratios.py and then being re-classified as low-temperature heat demand), with a corresponding drop in medium- and high-temperature heat demand.

For more credible results, relative demands for low-, medium- and high-temperature should not change so much between 2020 and 2050. Probably what is needed is some work precisely in build_industry_sector_ratios.py in order to directly categorise the heating demand given by IDEES data as low / medium / high (possibly using industry-specific fractions such as given in the Agora report where needed, because IDEES does not distinguish directly between these temperatures as far as I see). A new configuration block under industry: could set exogenous assumptions on which fuels will supply this heat by 2050 (these assumptions being largely implicitly implemented in build_industry_sector_ratios.py currently), whereas endogenous optimisation could choose more freely. Moving the implementation this way could also significantly reduce the difference in code between exogenous and endogenous modelling of industry heat demand, a little like how road transport is handled now.

(Heat demand is already classified directly in build_industry_sector_ratios.py in the case of the "Low-enthalpy heat" category; this demand is later added to urban heat buses as low-temperature heat for industry load; that load should also be merged with low-temperature industry heat in this PR.)

I hope this all makes sense; I got sucked in to the topic a little bit while trying to understand industrial demand for heat and biomass better. It actually started because I noticed that pypsa-eur currently produces an infeasible model for "Low" ENSPRESO biomass scenario, because so much industrial biomass demand is hard-coded.

I don't have all that much time to spend on this, but let me know if some suggestions in the form of code would be appreciated, and I might have a go at it.

@koen-vg
Copy link
Contributor

koen-vg commented Sep 20, 2024

(On another note, the supplementary material to https://doi.org/10.1002/ente.202300981 also contains a very nice spreadsheet with process heat distributions (<100C, 100-200C, 200-500C, >1000C) that are "ready to go".)

@koen-vg
Copy link
Contributor

koen-vg commented Oct 10, 2024

By the way, I found a couple of errors in the implementation with regards to CO2 management, which you can find in my "fork" of this branch: koen-vg@4e43daa

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants