Skip to content

Introduce climate impacts for buildings thermal end-use demands#2365

Open
hagento wants to merge 5 commits into
remindmodel:developfrom
hagento:climateImpacts
Open

Introduce climate impacts for buildings thermal end-use demands#2365
hagento wants to merge 5 commits into
remindmodel:developfrom
hagento:climateImpacts

Conversation

@hagento

@hagento hagento commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Purpose of this PR

This PR introduces endogenous climate impacts to the thermal end-uses of the buildings sector. When enabled, building energy demands now dynamically adjust based on the model's own GHG emissions and resulting atmospheric CO2 concentrations.

Bildschirmfoto 2026-06-09 um 15 09 59

Feature Overview

Currently, final energy demands for space heating and cooling do not react to altered climatic conditions caused by REMIND's GHG emissions. This PR introduces a climate correction mechanism that can be activated with cm_climateCorrection = on (default: off).

How It Works

After every iteration (except the first):

  1. Climate assessment: A fulldata_postsolve.gdx is dumped and scripts/input/climateAssessmentInterimRun.R calculates atmospheric CO2 concentrations (Atmospheric Concentrations|CO2) based on REMIND's current emissions, saved as p15_co2_conc in p15_climate.gdx

  2. Correction computation: Upon successful completion, climbed::computeClimateCorrection() (climbed PR #9) is executed:

    • Compares current CO2 concentrations to RCP-based reference trajectories to determine relative interpolation weights per time step
    • Interpolates FE demands from existing RCP baselines (from f_fedemandBuild, generated using climate data based on RCP reference concentrations)
    • Calculates ratios between interpolated demands and the no-climate-change scenario (calibration baseline with cm_rcp_scen = none)
    • Saves correction factors to pm_climateCorrection.gdx
  3. Application: The correction factors from pm_climateCorrection are applied to vm_cesIO for variables in the set ppfen_buildings_dyn36

Requirements

  • Buildings input data f_fedemandBuild must contain multiple scenarios in all_rcp_scen for every scenario to enable interpolation across different RCPs
  • A corresponding feature was introduced in edgebuildings to expand default scenarios to a range of RCP scenarios

Type of change

Parts concerned

  • ☑️ GAMS Code
  • ☑️ R-scripts
  • ◻️ Documentation (GAMS incode documentation, comments, tutorials)
  • ◻️ Input data / CES parameters
  • ◻️ Tests, CI/CD (continuous integration/deployment)
  • ◻️ Configuration (switches in main.gms, default.cfg, and scenario_config*.csv files)
  • ◻️ Other (please give a description)

Impact

  • ◻️ Bug fix
  • ◻️ Refactoring
  • ☑️ New feature
  • ◻️ Change of parameter values or input data (including CES parameters)
  • ◻️ Minor change (default scenarios show only small differences)
  • ◻️ Fundamental change of results of default scenarios

Checklist

Do not delete any line. Leave unfinished elements unchecked so others know how far along you are.
In the end all checkboxes must be ticked before you can merge
.

  • I executed the automated model tests (make test) after my final commit and all tests pass (FAIL 0)
  • I adjusted the reporting in remind2 if and where it was needed
  • I adjusted the madrat packages (mrremind and other packages involved) for input data generation if and where it was needed
  • My code follows the coding etiquette
  • I explained my changes within the PR, particularly in hard-to-understand areas
  • I checked that the in-code documentation is up-to-date
  • I adjusted forbiddenColumnNames in readCheckScenarioConfig.R in case the PR leads to deprecated switches
  • I updated the CHANGELOG.md correctly (added, changed, fixed, removed, input data/calibration)

Further information (optional)

  • Runs with these changes are here:
  • no correction: /p/tmp/hagento/dev/REMIND/climateCorrection/remind/output/SSP2-NPi2025_2026-06-09_09.23.33
  • with correction: /p/tmp/hagento/dev/REMIND/climateCorrection/remind/output/SSP2-NPi2025-climCorr_2026-06-09_09.22.13
  • Comparison of results (what changes by this PR?): /p/tmp/hagento/dev/REMIND/climateCorrection/remind/compScen-climateCorrection-2026-06-09_13.41.26-H12.pdf

Additional information will follow.

@hagento
hagento requested a review from robinhasse June 9, 2026 13:25
@hagento

hagento commented Jun 16, 2026

Copy link
Copy Markdown
Contributor Author

I updated the actual climate correction in modules/36_buildings/simple/equations.gms to vm_cesIO + (pm_climateCorrection - 1) * vm_cesIO.l to minimise the effects that a direct multiplication would have on the marginal costs which previously led to counterbalancing effects of vm_cesIO and pm_climateCorrection values. With this approach, REMIND seems to do the things that we expect from it.

You can find an updated compareScenarios in /p/tmp/hagento/dev/REMIND/climateCorrection/remind/compScen-climateCorrection3-2026-06-13_01.52.43-H12.pdf.

Below you can see that the highlighted climate-corrected run is settled right in-between RCP 2.6 and 4.5 as far as atmospheric concentrations are concerned.

concentrations FinalEnergy_comparison

Find the pdf here.

Comparing FE line plots for selected regions, we can see that the climate correction shifts the demands within these regions. Particularly space cooling seems to work rather well. As for the other energy services, one needs to consider that they are composed of space_heating, cooking and water_heating demands where only the space heating part is climate corrected, hence the shift is not expected to be as clear as for the space cooling case. What is quite obvious is that there are some ugly jumps in the respective demand pathways (for both corrected and uncorrected scenario) which come from the calibration (/p/tmp/hagento/dev/REMIND/climateCorrection/remind/output/SSP2-NPi2025-calibrate_2026-06-10_21.54.57/CES_calibration_report_SSP2-NPi2025-calibrate_2026-06-10_21.54.57.pdf).

Taken this into consideration, I think overall the results look quite well.

Also tagging @robertpietzcker if you have anything to add.

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.

1 participant