Skip to content

Conversation

@LukasFrankenQ
Copy link
Collaborator

@LukasFrankenQ LukasFrankenQ commented Dec 11, 2025

pypsa/pypsa-eur#611

Adds industry process heat demands heat100-200, heat200-500 and heat>500 by subtracting them from industry biomass and methane demands

if

config["sector"]["industry_t"]["endogen"] == True.

Temperature splits are process-aware, based on Fraunhofer ISI research Fleiter et al. (2025), Hydrogen Infrastructure in the Future CO2-Neu....

The PR does not cover steelworks. Its endogenisation is in a separate PR.

Changes to the Model

With industry heat endogenous, all existing industry-related components remain, heat demands are purely subtracted from biomass and methane industry demands, and are added as separate loads with the respective supply opportunities.

image

The changes to prepare_sector_network are largely identical to the previous PR by @lisazeyen, and the heat generation technologies added are the same. The temperature bands are chosen to match potentially interesting alternative renewable heat supply such as solar thermal and geothermal, which could be added to the model if desired.

image

The logic for exogenous heating remains untouched. There was a very sensible proposition by @koen-vg to set the exogenous heat supply mix in the config, as is done with industry production pathways. However, the volume of content this approach would add to the config was, in my estimation, too large.
Therefore, this PR introduces a new rule that builds (planning-horizons–unaware) heat-endogenous ratios and then simply infers endogenous industry demands (including the temperature bands) in build_industry_energy_demand_per_node, following the same logic as exogenous demand using ratios_intermediate.
As a result, industry_energy_demands_per_node consists essentially two concatenated dataframes. Level 0 in columns == "exogenous" contains the old dataframe and == "endogenous" is the new one.
Based on the endogenisation-switch in config, prepare_sector_network pulls the respective columns.

image

Towards Validation

Comparing exogenous and endogenous 2030 industry demands shows that the PR removes the vast majority of (industry) solid biomass and most of (industry) methane demand. Exogenous heat presumes electrification, likely explaining why the total energy demand is lower in the exogenous case.

image

The PR uses Fleiter et al. (2025) to estimate temperature band distributions for each industry process, and uses alternative process-specific sources to fill data gaps in between. Again, no steelworks in this PR.

image

These are very distinct between industries; however, they still yield largely similar temperature distributions between countries:

image

Spatial heterogeneity might only manifest in higher spatial resolutions.

Here, and in the previous iterations, we are aiming to align with Agora's estimate of industry heating demand at a total of around 1850 TWh/a:

image

Considering we are not including steelworks, we are doing quite well:

image

ToDos and Food for Thought

  • Need to ensure process emissions, HVC disaggregation, current electricity, etc. are synergising correctly with current methods.
  • After talking to @Irieo, it could be very valuable to either introduce a switch that endogenises only a subset of industries, or even represent each industry sector individually.
  • Think about synergy with @toniseibold’s steel endogenisation and the addition of individual cement production sites.
  • Other supply technologies: currently, we only consider electrified heating in heat100-200 and low-temperature heat, but in some sectors, electrification of higher-temperature demands is feasible.
  • As noted by @toniseibold, there appears to be some inconsistency in the biomass boiler's efficiency.

Happy about any feedback, and all the best,
Lukas

@lisazeyen @millingermarkus @Irieo @koen-vg @toniseibold @fneum @bobbyxng @p-glaum

PS: Are the pictures readable, or do they throw an error when clicked on?

Checklist

  • I tested my contribution locally and it works as intended.
  • Code and workflow changes are sufficiently documented.
  • [N/A] Changed dependencies are added to pixi.toml (using pixi add <dependency-name>).
  • Changes in configuration options are added in config/config.default.yaml.
  • Changes in configuration options are documented in doc/configtables/*.csv.
  • For new data sources or versions, these instructions <https://pypsa-eur.readthedocs.io/en/latest/data_sources.html>_ have been followed.
  • A release note doc/release_notes.rst is added.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant