Change NDC target calculation from relative to absolute targets#2328
Change NDC target calculation from relative to absolute targets#2328fschreyer wants to merge 10 commits intoremindmodel:developfrom
Conversation
…rgets coming from REMIND via fm_EmiTargetAbs instead of target factors (relative emissions targets).
…t target year it is set to. This affects whether in standard NDC runs carbon prices should also be limited in 2035. By default they are now not limited. But, a limitation mechanism can still be activated via a new switch
…ange and use this one for NDC realization by reading from the reference GDX instead of reading those emissions from the reporting via prepare NDC script
There was a problem hiding this comment.
Pull request overview
This PR updates the 45_carbonprice/NDC realization to use absolute (country-summed) NDC emissions targets at the REMIND-region level, and refactors the BAU/NPI emissions input to come from a reference GDX (via a new internal GAMS emissions aggregate) instead of relying on externally prepared reporting inputs.
Changes:
- Replace relative-to-2015 NDC target scaling with absolute NDC emissions targets (
p45_EmiTargetAbs) in the regional target calculation. - Load BAU/NPI “GHG excl. LULUCF & excl. bunkers” emissions from
input_refusing a new core variable/equation (vm_emiGHG_exclLULUCF_exclBunkers). - Add a new switch (
cm_NDC_CO2PriceLimit_continuation) to optionally extend CO2 price limits beyond the target year with a growing cap and a minimum cap level.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| modules/45_carbonprice/NDC/preloop.gms | Switch regional NDC target computation to absolute emissions targets plus BAU share for non-target countries. |
| modules/45_carbonprice/NDC/datainput.gms | Load absolute NDC targets and overwrite BAU emissions using values loaded from input_ref based on a new core emissions aggregate. |
| modules/45_carbonprice/NDC/postsolve.gms | Add optional post-target-year continuation logic for CO2 price limits. |
| modules/45_carbonprice/NDC/input/files | Update listed NDC input artifact from relative-factor to absolute-target file. |
| core/equations.gms | Introduce equation computing total GHG excl. LULUCF and excl. bunkers for NDC use. |
| core/declarations.gms | Declare the new variable and equation for the NDC-specific emissions aggregate. |
| main.gms | Document and define the new continuation switch for NDC CO2 price limits. |
| config/default.cfg | Bump default input data revision to 7.90. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
RahelMA
left a comment
There was a problem hiding this comment.
Thank you, Felix this is a great and fundamental improvement of the NDC scenario! I only have minor comments ;)
| ( p45_CO2PriceLimitNDC(t,regi) * (1 + 0.2 * (t2.val - t.val)) ) * sm_DptCO2_2_TDpGtC ); | ||
| $ifThen.cm_NDC_CO2PriceLimit_continuation not "%cm_NDC_CO2PriceLimit_continuation%" == "off" | ||
| *** For the periods after the carbon price limit: | ||
| *** If this switch is on, limit increase by 20%/yr, but allow for minimum carbon price of at least 200$/tCO2. |
There was a problem hiding this comment.
Thats really nice. Thank you for this switch, I think it would be useful to have the percentage here variable.
(1 + 0.2 * (t2.val - t.val)) * sm_DptCO2_2_TDpGtC, maybe directly the input of the switch as a percentage and default to 0.2?
There was a problem hiding this comment.
In principle, I agree. Let's see if we really need it once we spot cases in which we want to limit 2035 carbon prices. So far, my impression was that generally we don't want to limit carbon prices after 2030.
| ***-------------------------------------------------- | ||
| *' Total GHG emissions excl. land-use change and excl. bunker emissions (needed for NDC targets) | ||
| ***-------------------------------------------------- | ||
| q_emiGHG_exclLULUCF_exclBunkers(t,regi).. |
There was a problem hiding this comment.
Could you please explain why you add this variable? in the NDC calculation we don't use it and in the reporting it is already there?!
There was a problem hiding this comment.
It is used for reading in the emissions trajectory of the NPI run here. This replaces reading data from pm_BAU_reg_emi_wo_LU_wo_bunkers.cs4r. I'd remove these data files and the infrastructure for them later.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Purpose of this PR
This PR changes the NDC target calculation from relative to absolute emissions targets and complements the mrremind change. Now:
NDC emissions target per region =
sum of emissions targets of all countries with targets + share of emissions of countries without target * NPI emissions in target year.
It also increments the input data revision to use the new absolute NDC targets with target filtering removed. This caused NDC targets to increase quite a bit in multiple REMIND regions (MEA, SSA, OAS etc., see below).
Moreover, the NPI emissions are not loaded from a mif file anymore, but come from the input_bau.gdx. This is a refactoring to ideally remove the dependency on the
prepare_NDC.Rscript. This script can probably be removed, but let's check that in a separate process.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
Impact
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.
make test) after my final commit and all tests pass (FAIL 0)remind2if and where it was neededforbiddenColumnNamesin readCheckScenarioConfig.R in case the PR leads to deprecated switchesCHANGELOG.mdcorrectly (added, changed, fixed, removed, input data/calibration)Further information (optional)
This is how the targets changed (circles are targets with old approach, triangles are new absolute targets without filtering out of too unambitious/ambitious targets):
The blue line is the new resulting NDC scenario.
I think, the China 2030 target still needs a check.
/p/tmp/schreyer/Modeling/remind/Dev1/compScen-NDC_Rel_vs_Abs_Targets-2026-04-01_13.47.47-H12-short.pdf