Skip to content

Make NDC target emissions scope independent of multigasscen switch and do some further clean up of NDC realization - #2447

Open
fschreyer wants to merge 12 commits into
remindmodel:developfrom
fschreyer:NpiNDC
Open

Make NDC target emissions scope independent of multigasscen switch and do some further clean up of NDC realization#2447
fschreyer wants to merge 12 commits into
remindmodel:developfrom
fschreyer:NpiNDC

Conversation

@fschreyer

@fschreyer fschreyer commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Purpose of this PR

This PR addresses https://github.com/remindmodel/development_issues/issues/794 and does some clean-up of the NDC code.

These are the changes:

  • NDC-LTS sees right NDC targets again: emissions to use for checking whether NDC targets are reached always come in the same correct metric of the implementation (Emi|GHG|w/o Bunkers|w/o Land-use Change) independent of cm_multigasscen -> as NDC-LTS uses different multigasscen setting this led to wrong results in this scenario before (too ambitious NDC targets)
  • increased carbon price limit of EU in 2030 to 200 $/tCO2 (to not be below NPI price)
  • switched NDC target convergence check on again
  • removed US from overall NDC target algorithm (will see exactly the same CO2 price instead of trying to reproduce NPi emissions) -> this led to convergence issues as "US target" for REMIND was sometimes not met
  • let rescaling factors of co2 prices converge a bit slower as it helped in some runs -> made the implementation more transparent by introducing p45_factorRescaleUpLimit etc. parameters to track when rescaling is capped
  • do not check NDC target convergence in CO2 price limit runs
  • deleted prepare_NDC.R script as it is not necessary anymore and all related code

Type of change

Indicate the items relevant for your PR by replacing ◻️ with ☑️.
Do not delete any lines. This makes it easier to understand which areas are affected by your changes and which are not.

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:
  • Comparison of results (what changes by this PR?):

@fschreyer
fschreyer requested review from RahelMA and lea-hayez August 27, 2026 14:11

@RahelMA RahelMA left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, Felix, I'm not entirely done with you PR just note that we need p45_CO2eqwoLU_goal in the preloop!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would argue we cannot remove this as we need the BAU data to calculate the NDC goal in the first place:

p45_CO2eqwoLU_goal(p45_NDCyearSet(t,regi)) =
          p45_EmiTargetAbs(t,regi)                                                  !! emissions target derived from countries with NDC target
        + (1-p45_shareTarget(t,regi)) * p45_BAU_reg_emi_wo_LU_wo_bunkers(t,regi); 

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.

2 participants