Skip to content

Refactoring of 45_carbonprice incl. postsolve algorithms - #1874

Merged
laurinks merged 7 commits into
remindmodel:developfrom
laurinks:45-refactoring
Nov 21, 2024
Merged

Refactoring of 45_carbonprice incl. postsolve algorithms#1874
laurinks merged 7 commits into
remindmodel:developfrom
laurinks:45-refactoring

Conversation

@laurinks

@laurinks laurinks commented Nov 1, 2024

Copy link
Copy Markdown
Contributor

Purpose of this PR

Two main purposes of this PR:

  1. Add further flexibility for carbon pricing in peak budget runs (regional carbon price differentiation, regional flexibility for convergence end year, regionally flexible interpolation between carbon prices from NPi run and peak budget run to avoid large jumps, setting carbon prices from NPi as lower bound) (see also Issue#295)

  2. Refactoring of 45_carbonprice. Mainly: (a) moving postsolve algorithms to 45_carbonprice, (b) deleting unused postsolve algorithms, (c) combine diffLin2Lin and diffExp2Lin in one realization called "functionalForm" (see also Issue#295)

Type of change

  • Refactoring
  • New feature
  • Minor change (default scenarios show only small differences)
  • This change requires a documentation update

Checklist:

  • My code follows the coding etiquette
  • I performed a self-review of my own code
  • 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 the reporting in remind2 where it was needed
  • I adjusted forbiddenColumnNames in readCheckScenarioConfig.R in case the PR leads to deprecated switches
  • All automated model tests pass (FAIL 0 in the output of make test)
  • The changelog CHANGELOG.md has been updated correctly

Further information:

  • Default REMIND runs are only affected in one way, namely that carbon price trajectory from path_gdx_ref is used as lower bound for carbon price trajectory in current run (e.g. PkBudg run cannot have lower carbon price than NPi run). This is introduced due to relatively high CO2 price for EUR in 2030 which could be overwritten by lower values in climate policy scenarios such as PkBudg1000).
  • Decisions on default settings need to be taken based on NPi2025 realization and validation.
  • Test runs showcasing functionalities added in realization functionalForm are in folder p/tmp/laurinko/hpc/remind (started on 18.11.2024), and config file used for testing is attached.
    scenario_config_functionalForm.csv
  • Screenshots from compareScenario PDFs:
    Example showing effect of lower bound (from path_gdx_ref which is NPi2025 in this case) in SSP2-EcBudg400:
    image
    SSP2-PkBudg650 experiments: All behave as prescribed in scenario_config_functionalForm.csv. Examples are linear increase for EUR until 2060 in h, detailed convergence of SSA in e, linear curve going through the point (2010,0) in c
    image
    SSP2-PkBudg1000 experiments: All behave as prescribed in scenario_config_functionalForm.csv. Lower bound for EUR well visible in all plots (except i, where is is deactivated) Examples are linear increase for EUR until 2060 in h, detailed convergence of SSA in e, linear curve going through the point (2010,0) in c
    image

@laurinks laurinks changed the title First attempt to restructure 45_carbonprice Refactoring of 45_carbonprice incl. postsolve algorithms Nov 1, 2024
@laurinks
laurinks marked this pull request as ready for review November 18, 2024 21:25
Comment thread core/datainput.gms

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No relevant changes, only renaming. Parameters cannot be moved to module since they are displayed as in 80_optimization.

Comment thread core/declarations.gms

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Moved parameters to 45_carbonprice

Comment thread core/postsolve.gms
*-------------------------------calculate regional permit prices-----------------------------------

*** saving CO2 tax used in this iteration
p_taxCO2eq_iteration(iteration,ttot,regi) = pm_taxCO2eq(ttot,regi);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

moved to end of 45_carbonprice/functionalForm/postsolve.gms

Comment thread core/postsolve.gms

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Moved algorithms for cm_iterative_target_adj =5, 7, and 9 to 45_carbonprice/functionalForm/postsolve.gms,
deleted unused algorithms for cm_iterative_target_adj =4 and 6.

Comment thread core/preloop.gms

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Moved to datainput of 45_carbonprice

Comment thread main.gms
*' * [5]: no adaptation of carbonprice path after peak year
*' * [0]: after the (exogenously fixed) peak year, carbonprice path increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant);
*' * choose cm_peakBudgYr = 2110 for no adaptation of carbonprice path until end of century
*' * (functionalForm): [REMIND default for peak budget and end-of-century budget runs]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Adjusted explanations for use of 45_carbonprice

Comment thread main.gms
*'
parameter
cm_co2_tax_startyear "level of co2 tax in start year in $ per t CO2eq"
cm_taxCO2_startyear "level of co2 tax in start year in $ per t CO2eq"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Harmonization of switch names, all starting with cm_taxCO2

Comment thread main.gms
*' * initialization of CO2 tax in start year [if cm_iterative_target_adj eq 5, 7 or 9]
parameter
cm_co2_tax_growth "growth rate of carbon tax"
cm_taxCO2_expGrowth "growth rate of carbon tax"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Harmonization of switch names, all starting with cm_taxCO2

Comment thread main.gms
*' time of net-zero CO2 emissions (peak budget)
*' endogenous adjustment by algorithms in 45_carbonprice/functionalForm/postsolve.gms [requires emiscen = 9 and cm_iterative_target_adj = 7 or 9]
parameter
cm_taxCO2_IncAfterPeakBudgYr "annual increase of CO2 tax after cm_peakBudgYr in $ per tCO2"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Harmonization of switch names, all starting with cm_taxCO2

Comment thread main.gms
cm_co2_tax_growth = 1.045; !! def = 1.045 !! regexp = is.numeric
cm_taxCO2_expGrowth = 1.045; !! def = 1.045 !! regexp = is.numeric
*' (any number >= 0): rate of exponential increase over time, default value chosen to be consistent with interest rate
parameter

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Reordering of switches to group all switches concerning 45_carbonprice

Comment thread main.gms
*' * (last): last time period before start year (e.g. 2025 if start year is 2030)
*' * (any number >= 2005 and < cm_startyear): year for which historical level of CO2 tax (cm_co2_tax_hist) is provided (e.g. 2024)
$setglobal cm_year_co2_tax_hist last !! def = "last" !! regexp = last|is.nonnegative
*** cm_taxCO2_functionalForm "switch for choosing the functional form of the global anchor trajectory in 45_carbonprice/functionalForm"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Harmonization of flag names, all starting with cm_taxCO2

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

New realization functionalForm combining diffLin2Lin and diffExp2Lin, and adding new functionalities. Structure (Parts I-IV) explained in realization.gms

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Parameters moved from core to 45_carbonprice

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Moved from core to 45_carbonprice. Main difference concerns use of p45_taxCO2eq_anchor for shifting of carbon price trajectories (instead of pm_taxCO2eq).

@laurinks laurinks Nov 18, 2024

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Add warning if postsolve algorithms (cm_iterative_target_adj = 5, 7 or 9) are used, but not carbonprice = functionalForm.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

File comparison: /p/projects/rd3mod/github/repos/remindmodel/remind/develop/config/scenario_config.csv -> ./config/scenario_config.csv
Columns deleted: -
Columns added:   cm_taxCO2_functionalForm
Renamed columns: c_budgetCO2from2020 -> cm_budgetCO2from2020, cm_co2_tax_growth -> cm_taxCO2_expGrowth, cm_co2_tax_spread -> cm_taxCO2_regiDiff, cm_co2_tax_startyear -> cm_taxCO2_startyear, cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr
Renamed rows:    -

Changes in the scenarios:
~ SSP2-NPi-calibrate:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
~ SSP2-NDC:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP2-NPi:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
+ SSP2-NPi2025 was added.
~ SSP2-PkBudg500:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP2-PkBudg650:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 75 -> 100
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP2-PkBudg1000:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 45 -> 75
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP2-EcBudg400:
    carbonprice: diffExp2Lin -> functionalForm (default: none)
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 20 -> initialSpread20
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2070 -> GLO 2070
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
    cm_taxCO2_functionalForm: NA -> exponential
~ SSP2-EU21-NPi-calibrate:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
~ SSP2-EU21-Base:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
~ SSP2-EU21-NDC:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-EU21-NPi -> SSP2-EU21-NPi2025
~ SSP2-EU21-NPi:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
+ SSP2-EU21-NPi2025 was added.
~ SSP2-EU21-PkBudg500:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-EU21-NPi -> SSP2-EU21-NPi2025
~ SSP2-EU21-PkBudg650:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 75 -> 100
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-EU21-NPi -> SSP2-EU21-NPi2025
~ SSP2-EU21-PkBudg1000:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 45 -> 75
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-EU21-NPi -> SSP2-EU21-NPi2025
~ SSP3-NPi-calibrate:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
~ SSP3-NDC:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP3-NPi:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
~ SSP3-PkBudg1000:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 45 -> 55
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2100 -> GLO 2100
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP3-rollBack:
    cm_iterative_target_adj: 9 -> 3 (default: 0)
    c_budgetCO2from2020 -> cm_budgetCO2from2020: 1150 -> 0
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP1-NPi-calibrate:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_LU_emi_scen: SDP -> SSP1 (default: SSP2)
~ SSP1-NDC:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_LU_emi_scen: SDP -> SSP1 (default: SSP2)
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP1-NPi:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_LU_emi_scen: SDP -> SSP1 (default: SSP2)
+ SSP1-NPi2025 was added.
~ SSP1-PkBudg650:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 75 -> 100
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_LU_emi_scen: SDP -> SSP1 (default: SSP2)
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP1-PkBudg1000:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 45 -> 75
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_LU_emi_scen: SDP -> SSP1 (default: SSP2)
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP2_lowEn-NPi-calibrate:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    cm_LU_emi_scen: SSP2 -> SSP2_lowEn (default: SSP2)
~ SSP2_lowEn-NDC:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    cm_LU_emi_scen: SSP2 -> SSP2_lowEn (default: SSP2)
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP2_lowEn-NPi:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    cm_LU_emi_scen: SSP2 -> SSP2_lowEn (default: SSP2)
+ SSP2_lowEn-NPi2025 was added.
~ SSP2_lowEn-PkBudg650:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 75 -> 100
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    cm_LU_emi_scen: SSP2 -> SSP2_lowEn (default: SSP2)
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP2_lowEn-PkBudg1000:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 45 -> 75
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    cm_LU_emi_scen: SSP2 -> SSP2_lowEn (default: SSP2)
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP5-NPi-calibrate:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
~ SSP5-NDC:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP5-NPi:
    cm_co2_tax_startyear -> cm_taxCO2_startyear: -1 -> NA
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
+ SSP5-NPi2025 was added.
~ SSP5-PkBudg650:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 75 -> 100
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025
~ SSP5-PkBudg1000:
    carbonprice: diffLin2Lin -> functionalForm (default: none)
    cm_co2_tax_startyear -> cm_taxCO2_startyear: 45 -> 75
    cm_co2_tax_spread -> cm_taxCO2_regiDiff: 10 -> NA
    cm_CO2priceRegConvEndYr -> cm_taxCO2_regiDiff_endYr: 2050 -> NA
    cm_co2_tax_growth -> cm_taxCO2_expGrowth: 1.045 -> NA
    path_gdx_ref: SSP2-NPi -> SSP2-NPi2025

$allwarnings
NULL

Warning messages:
1: In readCheckScenarioConfig(fileList[[2]], remindPath = remindPath,  :
  For module carbonprice, the undefined realizations NPi2025, functionalForm are used by these scenarios: SSP2-NPi2025, SSP2-PkBudg500, SSP2-PkBudg650, SSP2-PkBudg1000, SSP2-EcBudg400, SSP2-EU21-NPi2025, SSP2-EU21-PkBudg500, SSP2-EU21-PkBudg650, SSP2-EU21-PkBudg1000, SSP3-PkBudg1000, SSP1-NPi2025, SSP1-PkBudg650, SSP1-PkBudg1000, SSP2_lowEn-NPi2025, SSP2_lowEn-PkBudg650, SSP2_lowEn-PkBudg1000, SSP5-NPi2025, SSP5-PkBudg650, SSP5-PkBudg1000
2: In readCheckScenarioConfig(fileList[[2]], remindPath = remindPath,  :
  Unknown column names: cm_budgetCO2from2020, cm_taxCO2_functionalForm, cm_taxCO2_expGrowth, cm_taxCO2_startyear, cm_taxCO2_regiDiff, cm_taxCO2_regiDiff_endYr
3: In readCheckScenarioConfig(fileList[[2]], remindPath = remindPath,  :
  2 errors found.
> 

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I did not find a way to use compareScenConf so that it recognizes default switches from the old and new main.gms. However, this comparison might still be useful (whenever it says NA, this means the default in the new main.gms).

@laurinks

laurinks commented Nov 19, 2024

Copy link
Copy Markdown
Contributor Author

Process to merge this PR:

  • Wait for NPi2025 PR adjusted NPi2025 realizations with linear growth or exponential #1888 of Rahel to be merged.
  • Make adjustments to scenario_config.csv so that it includes NPi2020 and NPi2025 scenario for each SSP (with calibration on NPi2020, and no cascade, i.e. NPi2025 starts also in 2005). Also adjust CO2 price in start year as needed.
  • Merge this PR

@LaviniaBaumstark , @robertpietzcker , @Renato-Rodrigues : The adjustment of the scenario_config.csv contains the changes to include SSP2-NPi2025 (and same for other SSPs) and fix PkBudg runs to NPi2025. Please have a close look if this is as intended (no cascade, i.e. NPi2025 starting in 2005, path_gdx_policyref still set to old NPi). Should be rename the old NPi to NPi2020 to avoid confusion?
@LaviniaBaumstark : It also contains the changes of PR #1884 which had gotten lost in a previous merge.

@laurinks

laurinks commented Nov 20, 2024

Copy link
Copy Markdown
Contributor Author

@LaviniaBaumstark, @robertpietzcker: I just had a look at the updated scenario_config.csv (of this PR) with Lavinia. It includes SSPx-NPi and SSPx-NPi2025 for all SSPs. As of now, settings are as follows:

  • SSPx-NPi2025 starts in 2005, i.e. no cascade. SSPx-NPi and SSPx-NPi2025 should be compared in validation to decide if differences are too large so that cascade would be needed.
  • path_gdx_ref is set to SSP2-NPi2025 for all scenarios which are not NPi or NDCsy2025
  • path_gdx_bau is set to SSPx-NPi for each SSPx-NDC and SSPx-NDCsy2025 scenario.
  • path_gdx_refpolicycost is set to SSPx-NPi for each SSPx climate policy scenario (NDC, PkBudg).

Additional question: Do we want to keep old NPi for all SSPs in AMT runs / runs for validation? Or remove after next validation, i.e. once we are happy with NPi2025 results?

@LaviniaBaumstark LaviniaBaumstark left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

thank you! also for all this cleaning, refactoring, documentation and testing

*' Flexible choices for regional carbon price differentiation.

***--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*** The realization uses a global anchor trajectory based on which the regional carbon price trajectories are defined.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

if you use *`at the beginning of a line, this documentation also will show up in the automated modle documentation

@robertpietzcker

Copy link
Copy Markdown
Contributor

Additional question: Do we want to keep old NPi for all SSPs in AMT runs / runs for validation? Or remove after next validation, i.e. once we are happy with NPi2025 results?

my understanding is that we currently still calibrate to NPi, so we definitely need to keep NPi as default runs to look at.
This may change over the next half year, though.

@laurinks
laurinks merged commit b10ad58 into remindmodel:develop Nov 21, 2024
@laurinks
laurinks deleted the 45-refactoring branch November 21, 2024 13:47
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.

3 participants