Prisma WP6 NDC delay and SE tech from ref - #2421
Conversation
| p40_TechBound(ttot,all_regi,te)$( | ||
| ttot.val ge 2030 AND ttot.val le 2100 | ||
| AND (sameas(te,"windon") OR sameas(te,"windoff") OR sameas(te,"spv") OR sameas(te,"csp")) | ||
| ) = max( | ||
| p40_TechBound(ttot,all_regi,te), | ||
| p40_RefCap(ttot,all_regi,te, "1")*1000 | ||
| ); |
There was a problem hiding this comment.
Does it have to follow the ref throughout the whole time span, or just until 2035?
If it is indeed [2030-2100], then we can remove the condition and use set t (This set includes only the active modeled years, which are the years from ttot greater than or equal to the model run year defined in cm_startyear.)
teVRE also contains the relevant techs.
| p40_TechBound(ttot,all_regi,te)$( | |
| ttot.val ge 2030 AND ttot.val le 2100 | |
| AND (sameas(te,"windon") OR sameas(te,"windoff") OR sameas(te,"spv") OR sameas(te,"csp")) | |
| ) = max( | |
| p40_TechBound(ttot,all_regi,te), | |
| p40_RefCap(ttot,all_regi,te, "1")*1000 | |
| ); | |
| p40_TechBound(t,all_regi,teVRE) = max( | |
| p40_TechBound(t,all_regi,teVRE), | |
| p40_RefCap(t,all_regi,teVRE, "1") * 1000 | |
| ); |
| *** calculate tax path until NDC target year - linear increase | ||
| $ifThen "%cm_targetDelay%" == "prisma" | ||
| p45_taxCO2eqFirstNDCyear(regi) = smax(t$(t.val = p45_firstNDCyear(regi)), pm_taxCO2eq(t,regi)); | ||
| pm_taxCO2eq(t,regi)$(t.val > 2031 AND t.val < p45_firstNDCyear(regi)) = (p45_taxCO2eqFirstNDCyear(regi) - pm_taxCO2eq("2035",regi))*(t.val-2035)/(p45_firstNDCyear(regi)-2035) + pm_taxCO2eq("2035",regi); |
There was a problem hiding this comment.
To save us having to check that the linear interpolation is correct, we could use macro_interpolate:
*** macro_interpolate(t,t0,t1,x0,x1): Linear interpolation between two values x0 and x1 at time points t0 and t1 for an intermediate time point t
| pm_taxCO2eq(t,regi)$(t.val > 2031 AND t.val < p45_firstNDCyear(regi)) = (p45_taxCO2eqFirstNDCyear(regi) - pm_taxCO2eq("2035",regi))*(t.val-2035)/(p45_firstNDCyear(regi)-2035) + pm_taxCO2eq("2035",regi); | |
| pm_taxCO2eq(t,regi) $ (t.val >= 2035 and t.val < p45_firstNDCyear(regi)) | |
| = macro_interpolate(t.val, 2035, p45_firstNDCyear(regi), pm_taxCO2eq("2035",regi), p45_taxCO2eqFirstNDCyear(regi)); |
| pm_taxCO2eq(t,regi)$(t.val > 2031 AND t.val < p45_firstNDCyear(regi)) = (p45_taxCO2eqFirstNDCyear(regi) - pm_taxCO2eq("2035",regi))*(t.val-2035)/(p45_firstNDCyear(regi)-2035) + pm_taxCO2eq("2035",regi); | ||
| $else | ||
| p45_taxCO2eqFirstNDCyear(regi) = smax(t$(t.val = p45_firstNDCyear(regi)), pm_taxCO2eq(t,regi)); | ||
| pm_taxCO2eq(t,regi)$(t.val > 2021 AND t.val < p45_firstNDCyear(regi)) = (p45_taxCO2eqFirstNDCyear(regi) - pm_taxCO2eq("2020",regi))*(t.val-2020)/(p45_firstNDCyear(regi)-2020) + pm_taxCO2eq("2020",regi); |
There was a problem hiding this comment.
Here we could use macro_interpolate too.
| pm_taxCO2eq(t,regi)$(t.val > 2021 AND t.val < p45_firstNDCyear(regi)) = (p45_taxCO2eqFirstNDCyear(regi) - pm_taxCO2eq("2020",regi))*(t.val-2020)/(p45_firstNDCyear(regi)-2020) + pm_taxCO2eq("2020",regi); | |
| pm_taxCO2eq(t,regi) $ (t.val >= 2020 and t.val < p45_firstNDCyear(regi)) | |
| = macro_interpolate(t.val, 2020, p45_firstNDCyear(regi), pm_taxCO2eq("2020",regi), p45_taxCO2eqFirstNDCyear(regi)); |
| $endif | ||
|
|
||
| *** calculate tax path until NDC target year - linear increase | ||
| $ifThen "%cm_targetDelay%" == "prisma" |
There was a problem hiding this comment.
Just to confirm. imagining region XXX has a 2030 NDC pushed to 2050:
- without
cm_targetDelay, the carbon price goes "normal in 2020 to NDC-aligned in 2030. Why not normal in 2025 too? Could the slope start in 2025? - with
cm_targetDelay, the carbon price goes to "normal in 2035 to NDC-aligned in 2050. Is it the protocol that wants the price to stay normal until 2035? The NDCs are delayed, but don't regions start working toward them now (just too slowly)? Could the slope start in 2025?
If yes, we could replace the whole $ifThen block by:
p45_taxCO2eqFirstNDCyear(regi) = smax(t$(t.val = p45_firstNDCyear(regi)), pm_taxCO2eq(t,regi));
pm_taxCO2eq(t,regi) $ (t.val >= 2025 and t.val < p45_firstNDCyear(regi))
= macro_interpolate(t.val, 2025, p45_firstNDCyear(regi), pm_taxCO2eq("2025",regi), p45_taxCO2eqFirstNDCyear(regi));
(because p45_firstNDCyear already adapts to cm_targetDelay)
| @@ -72,10 +86,17 @@ $ifThen.cm_NDC_CO2PriceLimit_continuation not "%cm_NDC_CO2PriceLimit_continuatio | |||
| $endif.cm_NDC_CO2PriceLimit_continuation | |||
| ); | |||
| $endif.cm_NDC_CO2PriceLimit | |||
|
|
|||
| $endif | |||
There was a problem hiding this comment.
(I did not verify the calculation.)
Would there be a nice way to avoid duplicating such heavy equations? They look very similar =)
Purpose of this PR
The purpose of this PR is to update the PRISMA WP6 scenarios to from the latest submission in July 2026. The central changes are the following:
40_techpolit is now also possible to set a ref scenario as lower bound for SE technologies as solar and wind.Scenario overview:
LateReawakening: follows the AR pathway until 2035, in 2040 awakening and tries to still reach net-zero targets (leading to higher required carbon prices to still reach the target, as carbon prices stay constant afterwards following the protocol; this scenarios is more ambitious in the second half of the century)
StayingAlive: same carbon price as in AR until the EOC but RE technology increase following MA
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)
/p/projects/prisma/WP6/submission-07-2026_final/p/projects/prisma/WP6/submission-07-2026_final/compScen-PRISMA_final_submission-2026-07-22_16.19.42-REMIND-MAgPIE.pfd