REMIND - REgional Model of INvestments and Development

3.7.0

created with goxygen 1.5.0

Configuration (00_configuration)

Description

Configuration - Settings for Scenarios:

$setGlobal c_expname  default
$setGlobal c_description  REMIND run with default settings
$setGlobal c_model_version  REMIND model version will be automatically added during prepare.R
$setGlobal c_results_folder  REMIND results_folder will be automatically added during prepare.R

MODULES

——————— 01_macro —————————————–

$setGlobal macro  singleSectorGr  !! def = singleSectorGr

——————— 02_welfare —————————————

$setGlobal welfare  utilitarian  !! def = utilitarian

——————— 04_PE_FE_parameters ——————————

$setGlobal PE_FE_parameters  iea2014  !! def = iea2014

——————— 05_initialCap ————————————

$setGlobal initialCap  on             !! def = on

——————— 11_aerosols ————————————–

$setGlobal aerosols  exoGAINS2025         !! def = exoGAINS2025

——————— 15_climate —————————————

$setGlobal climate  off               !! def = off

——————— 16_downscaleTemperature ————————–

$setGlobal downscaleTemperature  off  !! def = off

——————— 20_growth ——————————————

$setglobal growth  exogenous                !! def = exogenous

——————— 21_tax ——————————————

$setglobal tax  on           !! def = on

——————— 22_subsidizeLearning —————————–

$setglobal subsidizeLearning  off           !! def = off

———————- 23_capitalMarket ——————————-

$setglobal capitalMarket  debt_limit           !! def = debt_limit

———————- 24_trade —————————————

$setglobal trade  standard           !! def = standard

——————— 25_WACC ——————————————

$setglobal WACC  off         !! def = standard

———————- 26_agCosts —————————————-

$setglobal agCosts  costs       !! def = costs

——————— 29_CES_parameters —————————-

$setglobal CES_parameters  load   !! def = load

——————— 30_biomass —————————————-

$setglobal biomass  magpie     !! def = magpie

——————— 31_fossil —————————————-

$setglobal fossil  grades2poly        !! def = grades2poly

——————— 32_power —————————————-

$setglobal power  IntC        !! def = IntC

——————— 33_carbonRemoval ———————————

$setglobal carbonRemoval  portfolio        !! def = portfolio

——————— 35_transport —————————————-

$setglobal transport  edge_esm           !! def = edge_esm

——————— 36_buildings ———————————

$setglobal buildings  simple      !! def = simple

——————— 37_industry ———————————-

$setglobal industry  subsectors   !! def = subsectors

——————— 39_carbonUtilization ——————————-

$setglobal carbonUtilization  on      !! def = on

——————— 40_techpol —————————————-

$setglobal techpol  NPi2025           !! def = NPi2025

——————— 41_emicapregi —————————————-

$setglobal emicapregi  none           !! def = none

——————— 45_carbonprice —————————————-

This module defines the carbon price pm_taxCO2eq, with behaviour across regions governed by similar principles (e.g. global targets, or all following NDC or NPi policies).

$setglobal carbonprice  NPi2025           !! def = NPi2025

——————— 46_carbonpriceRegi ———————————

This module applies a markup pm_taxCO2eqRegi on top of pm_taxCO2eq to achieve additional intermediate targets.

$setglobal carbonpriceRegi  none      !! def = none

——————— 47_regipol —————————————–

The regiCarbonPrice realisation defines more detailed region or emissions market specific targets, overwriting the behaviour of pm_taxCO2eq and pm_taxCO2eqRegi for these regions.

$setglobal regipol  regiCarbonPrice              !! def = regiCarbonPrice

——————— 50_damages —————————————

$setGlobal damages  off               !! def = off

——————— 51_internalizeDamages —————————-

$setGlobal internalizeDamages  off               !! def = off

——————— 52_internalizeLCAimpacts —————————-

$setGlobal internalizeLCAimpacts  off               !! def = off

——————— 70_water ——————————————-

$setglobal water  heat                 !! def = heat

——————— 80_optimization ———————————-

$setGlobal optimization  nash         !! def = nash

——————— 81_codePerformance ——————————-

$setGlobal codePerformance  off       !! def = off

SWITCHES

parameter
  cm_nash_mode              "mode for solving nash problem"
;
  cm_nash_mode           = 2;     !! def = 2  !! regexp = 1|2
parameter
  cm_iteration_max          "number of iterations, if optimization is set to negishi or testOneRegi; is overwritten in Nash mode, except if cm_nash_autoconverge is set to 0"
;
  cm_iteration_max       = 1;     !! def = 1
parameter
  cm_abortOnConsecFail      "number of iterations of consecutive infeasibilities/failures to solve for one region, after which the run automatically switches to serial debug mode"
;
  cm_abortOnConsecFail   = 2;     !! def = 2  !! regexp = [0-9]+
parameter
  cm_solver_try_max          "maximum number of inner iterations within one Negishi iteration (<10)"
;
  cm_solver_try_max       = 2;     !! def = 2

set to at least five by testOneRegi

parameter
  c_keep_iteration_gdxes    "save intermediate iteration gdxes"
;
  c_keep_iteration_gdxes = 0;     !! def = 0  !! regexp = 0|1

in default we do not save gdx files from each iteration to limit the number of the output files but this might be helpful for debugging

parameter
  cm_keep_presolve_gdxes    "save gdxes for all regions/solver tries/nash iterations for debugging"
;
  cm_keep_presolve_gdxes  = 0;     !! def = 0  !! regexp = 0|1
parameter
  cm_nash_autoconverge      "choice of nash convergence mode"
;
  cm_nash_autoconverge   = 1;     !! def = 1  !! regexp = [0-3]
parameter
  cm_MAgPIE_Nash      "run MAgPIE between Nash iterations"
;
  cm_MAgPIE_Nash   = 0;     !! def = 0  !! regexp = [0-1]
parameter
  cm_emiscen                "policy scenario choice"
;
  cm_emiscen        = 9;               !! def = 9  !!  regexp = 0|1|4|6|9|10
parameter
  cm_taxCO2_startyear    "level of co2 tax in start year in $ per t CO2eq"
;
  cm_taxCO2_startyear = -1;     !! def = -1  !! regexp = -1|is.nonnegative
parameter
  cm_taxCO2_peakBudgYr    "level of co2 tax in peak budget year (cm_peakBudgYr) in $ per t CO2eq"
;
  cm_taxCO2_peakBudgYr = -1;     !! def = -1  !! regexp = -1|is.nonnegative

Switch to alternatively specify (initial) CO2 tax in peak budget year (cm_peakBudgYr) instead of start year (cm_startyear) When using this switch, cm_taxCO2_startyear must be set to -1 * (-1): default setting equivalent to switch not being used * (any number >= 0): CO2 tax in peak budget year (cm_peakBudgYr) [if cm_iterative_target_adj eq 0]; * initialization of CO2 tax in peak budget year (cm_peakBudgYr) [if cm_iterative_target_adj eq 5, 7, 8 or 9]

parameter
  cm_taxCO2_expGrowth         "growth rate of carbon tax"
;
  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
  cm_budgetCO2from2020   "CO2 budget for all economic sectors starting from 2020 (GtCO2). It can be either peak budget, but can also be an end-of-century budget"
;
  cm_budgetCO2from2020      = 0;   !! def = 0

budgets from AR6 for 2020-2100 (including 2020), for 1.5 C: 500 Gt CO2 peak budget (400 Gt CO2 end of century), for 2 C: 1150 Gt CO2

parameter
  cm_budgetCO2_absDevTol  "convergence criterion for global CO2 budget set via cm_budgetCO2from2020. It is formulated as an absolute deviation from the target budget [GtCO2]."
;
  cm_budgetCO2_absDevTol      = 2;   !! def = 2 !! regexp = is.nonnegative

Under development: also used as tolerated budget deviation for each region’s budget target with 45_carbonprice/functionalFormRegi

parameter
  cm_peakBudgYr       "time of global net-zero CO2 emissions (peak budget)"
;
  cm_peakBudgYr            = 2050;   !! def = 2050

time of global 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] Under development: If used with 45_carbonprice/functionalForm(REGI) and cm_taxCO2_Shape = 2, it determines the peak of the carbon price

parameter
  cm_taxCO2_IncAfterPeakBudgYr "annual increase of CO2 tax after cm_peakBudgYr in $ per tCO2"
;
  cm_taxCO2_IncAfterPeakBudgYr = 0; !! def = 0 . For weak targets (higher than 1100 Peak Budget), this value might need to increased to prevent continually increasing temperatures
parameter
  sm_peakbudget_diff_tolerance  "convergence criterion for allowed difference between cumulative emissions in peak budget year and year of maximum cumulative emissions if both years are not the same. It is formulated as an absolute deviation from the target budget [GtCO2]"
;
  sm_peakbudget_diff_tolerance      = 5;   !! def = 5 !! regexp = is.nonnegative
parameter
  cm_expoLinear_yearStart   "time at which carbon price increases linearly instead of exponentially"
;
  cm_expoLinear_yearStart  = 2050;   !! def = 2050
parameter
  cm_taxCO2_regiDiff "switch for choosing the regional carbon price differentiation scheme in 45_carbonprice/functionalForm"
;
  cm_taxCO2_regiDiff = 6; !! def = 6 !! regexp = 0|1|2|3|5|6|7|8|10

Switch can either be set to a specific scenario (e.g. “ScenarioMIP2070”) or to “manual”. If specific scenario is chosen, settings can be adjusted via cm_taxCO2_regiDiff_convergence and cm_taxCO2_regiDiff_startyearValue. If set to manual, settings must be provided via cm_taxCO2_regiDiff_convergence and cm_taxCO2_regiDiff_startyearValue. * (0): none - No regional differentiation, i.e. globally uniform carbon pricing * (1): initialSpread10 - Maximal initial spread of carbon prices in 2030 between OECD regions and poorest region is equal to 10. Initial spread for each region determined based on GDP per capita (PPP) in 2030. By default, carbon prices converge using quadratic phase-in until 2050. Convergence scheme can be adjusted with cm_taxCO2_regiDiff_convergence. * (2): initialSpread20 - Maximal initial spread of carbon prices in 2030 between OECD regions and poorest region is equal to 20. Initial spread for each region determined based on GDP per capita (PPP) in 2030. By default, carbon prices converge using quadratic phase-in until 2070. Convergence scheme can be adjusted with cm_taxCO2_regiDiff_convergence. * (3): gdpSpread - Regional differentiation based on GDP per capita (PPP) throughout the century. Uses current GDP per capita (PPP) of OECD countries - around 50’000 US$2017 - as threshold for application of full carbon price. * (5): ScenarioMIP2035 - Carbon price differentiation with convergence year 2035 - used in ScenarioMIP - that takes carbon prices from path_gdx_ref or cm_taxCO2_regiDiff_startyearValue as starting point and assumes regionally differentiated speed of convergence to global anchor trajectory * (6): ScenarioMIP2050 - Carbon price differentiation with convergence year 2050 - used in ScenarioMIP - that takes carbon prices from path_gdx_ref or cm_taxCO2_regiDiff_startyearValue as starting point and assumes regionally differentiated speed of convergence to global anchor trajectory * (7): ScenarioMIP2070 - Carbon price differentiation with convergence year 2070 - used in ScenarioMIP - that takes carbon prices from path_gdx_ref or cm_taxCO2_regiDiff_startyearValue as starting point and assumes regionally differentiated speed of convergence to global anchor trajectory * (8): ScenarioMIP2100 - Carbon price differentiation with convergence year 2100 - used in ScenarioMIP - that takes carbon prices from path_gdx_ref or cm_taxCO2_regiDiff_startyearValue as starting point and assumes regionally differentiated speed of convergence to global anchor trajectory * (10): manual - Enables manual specification of regional carbon price differentiation based on cm_taxCO2_regiDiff_convergence and cm_taxCO2_regiDiff_startyearValue

parameter
  cm_taxCO2_interpolation "switch for interpolation between (a) carbonprice trajectory given by path_gdx_ref and (b) carbonprice trajectory defined in 45_carbonprice"
;
  cm_taxCO2_interpolation = 0; !! def = 0 !! regexp = 0|1|2
parameter 
  cm_taxCO2_lowerBound_path_gdx_ref "switch for choosing if carbon price trajectories from path_gdx_ref are used as lower bound"
;
  cm_taxCO2_lowerBound_path_gdx_ref = 1; !! def = 1 !! regexp = 0|1
parameter
  c_macscen                 "scenario switch on whether or not to use MAC (Marginal Abatement Cost) for certain sectors not related to direct combustion of fossil fuel, e.g. fugitive emissions from old mines, forestry, agriculture and cement"
;
  c_macscen         = 1;               !! def = 1  !! regexp = 1|2
parameter
  cm_nucscen                "nuclear option choice"
;
  cm_nucscen       = 2;        !! def = 2  !! regexp = 1|2|5|6
parameter
  cm_ccapturescen       "carbon capture option choice, no carbon capture only if CCS and CCU are switched off!"
;
  cm_ccapturescen  = 1;        !! def = 1  !! regexp = [1-4]
parameter
  c_bioliqscen              "2nd generation bioenergy liquids technology choice"
;
  c_bioliqscen     = 1;        !! def = 1  !! regexp = 0|1
parameter
  c_bioh2scen               "bioenergy hydrogen technology choice"
;
  c_bioh2scen      = 1;        !! def = 1  !! regexp = 0|1
parameter
  c_shGreenH2               "lower bound on share of green hydrogen in all hydrogen from 2030 onwards"
;
  c_shGreenH2      = 0;        !! def = 0  !! regexp = is.share

(a number between 0 and 1): share

parameter
  c_shBioTrans              "upper bound on share of bioliquids in transport from 2025 onwards"
;
  c_shBioTrans     = 1;        !! def = 1  !! regexp = is.share

(a number between 0 and 1): share

parameter
  cm_shSynLiq               "lower bound on share of synfuels in SE liquids by 2045, gradual scale-up before"
;
  cm_shSynLiq    = 0;          !! def = 0  !! regexp = is.share

(a number between 0 and 1): share

parameter
  cm_shSynGas               "lower bound on share of synthetic gas in SE gases by 2045, gradual scale-up before"
;
  cm_shSynGas      = 0;        !! def = 0  !! regexp = is.share
parameter
  cm_IndCCSscen             "CCS for Industry"
;
  cm_IndCCSscen          = 1;        !! def = 1
parameter
  cm_optimisticMAC          "assume optimistic Industry MAC from AR5 Ch. 10?"
;
  cm_optimisticMAC       = 0;        !! def = 0
parameter
  cm_CCS_cement             "CCS for cement sub-sector"
;
  cm_CCS_cement          = 1;        !! def = 1
parameter
  cm_CCS_chemicals          "CCS for chemicals sub-sector"
;
  cm_CCS_chemicals       = 1;        !! def = 1
parameter
  cm_CCS_steel              "CCS for steel sub-sector"
;
  cm_CCS_steel           = 1;        !! def = 1
parameter
  cm_bioenergy_SustTax      "level of the bioenergy sustainability tax in fraction of bioenergy price"
;
  cm_bioenergy_SustTax   = 1.5;      !! def = 1.5

Only effective if 21_tax is on. The tax is only applied to purpose grown 2nd generation (lignocellulosic) biomass and the level increases linearly with bioenergy demand. A value of 1 refers to a tax level of 100% at a production of 200 EJ per yr globally (implies 50% at 100 EJ per yr or 150% at 300 EJ per yr, for example).

parameter
  cm_bioenergy_EF_for_tax   "bioenergy emission factor that is used to derive a bioenergy tax [kgCO2 per GJ]"
;
  cm_bioenergy_EF_for_tax  = 0;        !! def = 0

Only effective if 21_tax is on, applied to all regions specified by cm_regi_bioenergy_EFTax. Please note that the tax, which is derived from this emission factor, is not the same as the sustainabilty tax described above. Please also note that the emission factor is only used to inform the tax level, i.e. associated emissions do not enter the emissions balance equations.

parameter
  cm_tradecostBio           "choose financial tradecosts multiplier for biomass (purpose grown pebiolc)"
;
  cm_tradecostBio     = 1;         !! def = 1
parameter
  cm_1stgen_phaseout        "scenario setting for phase-out of 1st generation biofuels"
;
  cm_1stgen_phaseout  = 0;         !! def = 0  !! regexp = 0|1
parameter
  cm_phaseoutBiolc          "Switch that allows for a full phaseout of all bioenergy technologies globally"
;
  cm_phaseoutBiolc    = 0;         !! def = 0  !! regexp = 0|1
parameter
  cm_startyear              "first optimized modelling time step [year]"
;
  cm_startyear        = 2005;      !! def = 2005 for a baseline  !! regexp = 20[0-9](0|5)
parameter
  cm_LTSstartYr "[46_carbonpriceRegi] First year activating a regional carbon price markup to reach net-zero targets (Long-Term Strategy)"
;
  cm_LTSstartYr = 2040;        !! def = 2040  !! regexp = 20[2-9](0|5)
parameter
  cm_LTSendYr "[46_carbonpriceRegi] Year at which pm_taxCO2eqRegi drops to zero after having decreased linearly since the net-zero year"
;
  cm_LTSendYr = 0;        !! def = 0  !! regexp = [0-9]+
parameter
  cm_netZeroPercent "[46_carbonpriceRegi] Share of emissions allowed at the target year of a country with a net-zero target [1]"
;
  cm_netZeroPercent = 0; !! def = 0

setting 0.2 is in some scenarios of NGFS phase 6 (2026), allowing countries to keep 20% of 2025 emissions in net-zero year

parameter
  c_start_budget            "start of GHG budget limit"
;
  c_start_budget      = 2100;      !! def = 2100
parameter
  cm_prtpScen               "pure rate of time preference standard values"
;
  cm_prtpScen         = 1;         !! def = 1  !! regexp = 1|3
parameter
  cm_fetaxscen              "choice of final energy tax path and subsidy path, values other than zero enable final energy tax"
;
  cm_fetaxscen        = 3;         !! def = 3  !! regexp = [0-5]

even if set to 0, the PE inconvenience cost per SO2-cost for coal are always on if module 21_tax is on * (0): no FE tax, constant PE2SE tax, no FE and ResEx sub * (1): constant FE and PE2SE tax, constant FE and ResEx sub (used in SSP3 and SSP 5) * (2): converging FE tax (-2050), constant PE2SE tax, phased out FE and ResEx sub (-2035) (used in SSP 1) * (3): constant FE and PE2SE tax, phased out FE and ResEx sub (-2050) (used in SSP 2) * (4): constant FE and PE2SE tax, phased out FE and ResEx sub (-2035) * (5): rollback FE tax (-2035), no PE2SE tax, constant FE and ResEx sub (used in rollback scenarios to get back to a no-policy case (previously known as BAU))

parameter
  cm_distrBeta              "elasticity of tax revenue redistribution"
;
  cm_distrBeta        = 1;       !! def = 1  !! regexp = 0|1

(0): equal per capita redistribution (1): proportional redistribution

parameter
  cm_multigasscen           "scenario on GHG portfolio to be included in permit trading scheme"
;
  cm_multigasscen     = 3;         !! def = 3  !! regexp = [1-3]
parameter
  c_budgetscen            "specify the emissions included in the emissions budget used in functionalFormRegi"
;
  c_budgetscen = 4;         !! def = 4  !! regexp = [1-8]
  1. policy perspective incl. GHG emissions, excl. bunkers, LULUCF w/ national accounting. Currently, LULUCF can only be excluded (due to poor data quality, i.e. (3)), or use the model LULUCF data (i.e.(2)).
  2. modeling perspective starting from the emissions included in the reference run, i.e. typically including all CO2 emissions (4).
parameter
  cm_permittradescen        "scenario on permit trade"
;
  cm_permittradescen  = 1;         !! def = 1  !! regexp = [1-3]
parameter
  cm_permitTradeFinalYr        "[TradingOnRef] Year until permit trading is allowed"
;
  cm_permitTradeFinalYr  = 2100;         !! def = 2100
parameter
  cm_permitTradeRatio        "[TradingOnRef] Share of emissions allowed for permit trading between 0 and 1"
;
  cm_permitTradeRatio  = 0.2;         !! def = 0.2  
parameter
  cm_rentdiscoil            "[grades2poly] discount factor for the oil rent"
;
  cm_rentdiscoil      = 0.2;       !! def = 0.2
parameter
  cm_rentdiscoil2           "[grades2poly] discount factor for the oil rent achieved in 2100"
;
  cm_rentdiscoil2     = 0.9;       !! def = 0.9
parameter
  cm_rentconvoil            "[grades2poly] number of years required to converge to the 2100 oil rent"
;
  cm_rentconvoil      = 50;        !! def = 50
parameter
  cm_rentdiscgas            "[grades2poly] discount factor for the gas rent"
;
  cm_rentdiscgas      = 0.6;       !! def = 0.6
parameter
  cm_rentdiscgas2           "[grades2poly] discount factor for the gas rent achieved in 2100"
;
  cm_rentdiscgas2     = 0.8;       !! def = 0.8
parameter
  cm_rentconvgas            "[grades2poly] number of years required to converge to the 2100 gas rent"
;
  cm_rentconvgas      = 50;        !! def = 50
parameter
  cm_rentdisccoal           "[grades2poly] discount factor for the coal rent"
;
  cm_rentdisccoal     = 0.4;       !! def = 0.4
parameter
  cm_rentdisccoal2          "[grades2poly] discount factor for the coal rent achieved in 2100"
;
  cm_rentdisccoal2    = 0.6;       !! def = 0.6
parameter
  cm_rentconvcoal           "[grades2poly] number of years required to converge to the 2100 coal rent"
;
  cm_rentconvcoal     = 50;        !! def = 50
parameter
  c_cint_scen               "additional GHG emissions from mining fossil fuels"
;
  c_cint_scen           = 1;         !! def = 1  !! regexp = 0|1
parameter
  cm_so2tax_scen            "level of SO2 tax"
;
  cm_so2tax_scen        = 1;         !! def = 1  !! regexp = [0-4]
parameter
  c_ccsinjecratescen        "CCS injection rate factor applied to total regional storage potentials, yielding an upper bound on annual injection"
;
  c_ccsinjecratescen    = 1;         !! def = 1  !! regexp = [0-6]

This switch determines the upper bound of the annual CCS injection rate. CCS here refers to carbon sequestration, carbon capture is modelled separately. * (0) no “CCS” as in no carbon sequestration at all * (1) reference case: 0.005; max 19.7 GtCO2/yr globally * (2) lower estimate: 0.0025; max 9.8 GtCO2/yr globally * (3) upper estimate: 0.0075; max 29.5 GtCO2/yr globally * (4) unconstrained: 1; max 3900 GtCO2/yr globally * (5) sustainability case: 0.001; max 3.9 GtCO2/yr globally * (6) intermediate estimate: 0.0022; max 8.6 GtCO2/yr globally

parameter
  c_ccscapratescen          "CCS capture rate"
;
  c_ccscapratescen      = 1;         !! def = 1  !! regexp = 1|2

This flag determines the CO2 capture rate of selected CCS technologies * (1) reference (90%) * (2) increased capture rate (99%)

Parameter c_geoStorPotScen "select the amount of geological storage potential for CO2 offshore and onshore"
;
c_geoStorPotScen = 3;    !! def = 3  !! regexp = [1-3]

This switch determines the upper bound of the total geological storage potential for CO2 (onshore + offshore). * (1) high: technical potential without any exclusion layers applied * (2) low: applying all exclusion layers described in Gidden 2025, Table S1 of https://zenodo.org/records/15657543 * (3) old: formerly used scenario when there was only one grade

parameter
  c_export_tax_scen         "choose which oil export tax is used in the model. 0 = none, 1 = fix"
;
  c_export_tax_scen     = 0;         !! def = 0  !! regexp = 0|1
parameter
  cm_iterative_target_adj   "settings on iterative adjustment for CO2 tax based on in-iteration emission or forcing level. Allow iteratively generated endogenous global CO2 tax under peak budget constraint or end-of-century budget constraint."
;
  cm_iterative_target_adj = 0;      !! def = 0  !! regexp = 0|2|3|5|7|9
parameter
  cm_taxCO2_Shape             "Only used with [functionalFormRegi, and functionalForm if cm_iterative_target_adj=5 (i.e. EOC budget)], determines whether the carbon price increases until 2100 or is constant as of the exogenously set cm_peakYear"
;
  cm_taxCO2_Shape = 1;            !! def = 1    !! regexp = 1|2
parameter 
  cm_CPslopeAdjustment        "Only used with [functionalFormRegi], determines whether the entire path is shifted up and down or the slope of is adjusted endogenously"
;
  cm_CPslopeAdjustment = 1;         !! def = 1    !! regexp = 0|1

(0): no adjustment of the slope; i.e. carbon price shape chosen from the input-gdx and the curve is shifted up and down from cm_startyear (1): endogenous adjustment of the slope, i.e. linear increase to the highest carbon price

parameter
  cm_useInputGdxForCarbonPrice     "Only used with [functionalFormRegi], determines whether the carbon price information from the input.gdx is used for the first iteration's carbon price."
;
  cm_useInputGdxForCarbonPrice = 0;     !! def = 0   !! regexp = 0|1

(0): Input.gdx information is not used in 45_carbonprice/functionalFormRegi/datainput.gms (1): Input.gdx information is used to in 45_carbonprice/functionalFormRegi/datainput.gms

parameter
  cm_NDC_target_DevTol  "allowed NDC emissions target deviation relative to target emissions [45_carbonprice = NDC]"
;
  cm_NDC_target_DevTol = 0.01;           !! def = 0.01  
parameter
  cm_gdximport_target       "whether or not the starting value for iteratively adjusted CO2 tax trajectories for all regions (scenarios defined by cm_iterative_target_adj) should be read in from the input.gdx"
;
  cm_gdximport_target      = 0;      !! def = 0  !! regexp = 0|1
parameter 
  c_biopyrOptions      "Turn the three established and one advanced industrial biochar production configurations on or off"
; 
  c_biopyrOptions = 1; !! def = 1 !! regexp  = 0|1|2
parameter
  cm_33DAC                  "choose whether DAC (direct air capture) should be included into the CDR portfolio."
;
  cm_33DAC                 = 1;   !! def = 1    !! regexp = 0|1
parameter
  cm_33EW                   "choose whether EW (enhanced weathering) should be included into the CDR portfolio."
;
  cm_33EW                  = 0;   !! def = 0    !! regexp = 0|1
parameter
  cm_33OAE                  "choose whether OAE (ocean alkalinity enhancement) should be included into the CDR portfolio. 0 = OAE not used, 1 = used"
;
  cm_33OAE                 = 0;   !! def = 0

Since OAE is quite a cheap CDR option, runs might not converge because the model tries to deploy a lot of OAE. In this case, use a quantity target to limit OAE by adding something like: (2070,2080,2090,2100).GLO.tax.t.oae.all 5000 to cm_implicitQttyTarget in your config file, starting from the year in which OAE is deployed above 5000 MtCO2 / yr. This will limit the global deployment to 5000 Mt CO2 / yr in timesteps 2070-2100. As an alternative to this cost-efficient allocation, a global limit can be set via cm_33_OAE_limit_EEZ which distributes it between regions based on the size of the exclusive economic zones. This approach should only be chosen when the tax approach inhibits convergence. See q33_OAE_EEZ_limit for further reasoning. Both limitation approaches affect ocean uptake, i.e. gross OAE. * (1): ocean alkalinity enhancement is included * (0): not included

parameter
  cm_33_OAE_eff             "OAE efficiency measured in tCO2 uptaken by the ocean per tCaO. Typically between 0.9-1.4 (which corresponds to 1.2-1.8 molCO2/molCaO). [tCO2/tCaO]"
;
  cm_33_OAE_eff            = 1.2; !! def = 1.2
parameter
  cm_33_OAE_scen            "OAE distribution scenarios"
;
  cm_33_OAE_scen           = 1; !! def = 1
parameter
  cm_33_OAE_startyr         "The year when OAE could start being deployed [year]"
;
  cm_33_OAE_startyr        = 2035; !! def = 2035  !! regexp = 20[3-9](0|5)
parameter
  cm_33_OAE_limit_EEZ           "Global limit [Mt CO2 ocean uptake/a]. Upper bound on regions' ocean uptake is set based on EEZ distribution."
;
  cm_33_OAE_limit_EEZ            = 0; !! def = 0 !! regexp = is.nonnegative
parameter
  cm_gs_ew                  "grain size (for enhanced weathering, CDR module) [micrometre]"
;
  cm_gs_ew                 = 20;     !! def = 20  !! regexp = is.numeric
parameter
  cm_LimRock                "limit amount of rock spread each year [Gt]"
;
  cm_LimRock               = 1000;   !! def = 1000
parameter
  cm_33_EW_upScalingRateLimit    "Annual growth rate limit on upscaling of mining & spreading rocks on fields"
;
  cm_33_EW_upScalingRateLimit = 0.2;  !! def = 20% !! regexp = is.nonnegative
parameter
  cm_33_EW_shortTermLimit         "Limit on 2030 potential for enhanced weathering, defined as % of land on which EW is applied. Default 0.5% of land"
;
  cm_33_EW_shortTermLimit = 0.005; !! def = 0.5% !! regexp = is.nonnegative
parameter
  cm_33_BCpriceForm               "biochar price assumptions (revenue from using biochar in agriculture or construction)"
;
  cm_33_BCpriceForm = 1; !! def = 1 
parameter
  cm_33_maxFeShare                "max share of the CDR sectors' FE demand in the region's total FE demand, by FE type. Default is 10%"
;
  cm_33_maxFeShare = 0.1; !!  def = 0.1 !! regexp = is.nonnegative
parameter
  cm_postTargetIncrease     "carbon price increase per year after regipol emission target is reached (euro per tCO2)"
;
  cm_postTargetIncrease    = 0;      !! def = 0
parameter
  cm_implicitQttyTarget_tolerance "tolerance for regipol implicit quantity target deviations convergence."
;
  cm_implicitQttyTarget_tolerance    = 0.01;       !! def = 0.01, i.e. regipol implicit quantity targets must be met within 1% of target deviation
parameter
  cm_emiMktTargetDelay  "number of years for delayed price change in the emission tax convergence algorithm. Not applied to first target set."
;
  cm_emiMktTargetDelay    = 0;       !! def = 0
parameter
  cm_distrAlphaDam    "income elasticity of damages for inequality"
;
  cm_distrAlphaDam     = 1;    !! def = 1

1 means damage is distributed proportional to income, i.e. distributionally neutral, 0 means equal per capita distribution of damage

parameter
  cm_damages_BurkeLike_specification      "empirical specification for Burke-like damage functions"
;
  cm_damages_BurkeLike_specification    = 0;     !! def = 0

{0,5} Selects the main Burke specification “pooled, short-run” (0) or an alternative one “pooled, long-run”(5)

parameter
  cm_damages_BurkeLike_persistenceTime    "persistence time in years for Burke-like damage functions"
;
  cm_damages_BurkeLike_persistenceTime  = 30;    !! def = 30

Persistence time (half-time) in years. Highly uncertain, but may be in between 5 and 55 years.

parameter
  cm_damages_SccHorizon                   "Horizon for SCC calculation. Damages cm_damagesSccHorizon years into the future are internalized."
;
  cm_damages_SccHorizon                 = 100;   !! def = 100

Horizon for SCC calculation. Damages cm_damagesSccHorizon years into the future are internalized.

parameter
  cm_damage_KWSE                          "standard error for Kalkuhl & Wenz damages"
;
  cm_damage_KWSE                        = 0;     !! def = 0

{1.645 for 90% CI, 1.96 for 95% CI, no correction when 0}

parameter
  cm_sccConvergence         "convergence indicator for SCC iteration"
;
  cm_sccConvergence        = 0.05;  !! def = 0.05
;
parameter
  cm_tempConvergence         "convergence indicator for temperature in damage iteration"
;
  cm_tempConvergence       = 0.05;  !! def = 0.05
;
parameter
  cm_carbonprice_temperatureLimit "not-to-exceed temperature target in degree above pre-industrial [45_carbonprice = temperatureNotToExceed]"
;
  cm_carbonprice_temperatureLimit       = 1.8;   !! def = 1.8
parameter
  cm_frac_CCS          "tax on carbon transport & storage (teccsinje) to reflect risk of leakage, formulated as fraction of O&M costs"
;
  cm_frac_CCS          = 10;   !! def = 10
parameter
  cm_frac_NetNegEmi    "tax on net negative emissions to reflect risk of overshooting, formulated as fraction of carbon price"
;
  cm_frac_NetNegEmi    = 0.5;  !! def = 0.5

This tax reduces the regional effective carbon price for net-negative CO2 emissions; default is a reduction by 50 percent. Fraction can be freely chosen. Guidelines:

parameter
  cm_NetNegEmi_calculation    "switch to choose if net-negative emissions are calculated within an iteration or across iterations"
;
  cm_NetNegEmi_calculation    = 0;  !! def = 0 !! regexp = 0|1
  1. regional net-negative CO2 emissions are calculated within the current iteration, i.e. gross CO2 emissions of current iteration minus gross CDR of current iteration. In this case, the net-negative emissions tax is applied to net CO2 emissions, and thus, both further CO2 emission reductions and CDR are disincentivised.
  2. regional net-negative CO2 emissions are calculated across iterations, i.e. weighted average gross CO2 emissions of previous iterations minus gross CDR of current iteration. In this case, the net-negative emissions tax is applied to the difference of gross CDR of the current iteration and gross CO2 emissions based on previous iterations, and thus, gross CDR beyond net-zero CO2 is disincentivised without incentivising gross CO2 emissions.
parameter
  cm_H2InBuildOnlyAfter "Switch to fix H2 in buildings to zero until given year"
;
  cm_H2InBuildOnlyAfter = 2150;   !! def = 2150 (rule out H2 in buildings)

For all years until the given year, FE demand for H2 in buildings is set to zero

parameter
  c_teNoLearnConvEndYr      "Year at which regional costs of non-learning technologies converge"
;
  c_teNoLearnConvEndYr  = 2070;   !! def = 2070
parameter
  c_teLearnConvStartYr  "start year of cost convergence of learning technologies"
;
c_teLearnConvStartYr = 2025; !! def = 2025
parameter
  c_teLearnConvEndYr "end year of cost convergence of learning technologies"
;
c_teLearnConvEndYr = 2080;   !! def = 2080
parameter
  c_earlyRetiValidYr         "Year before which the early retirement rate designated by c_tech_earlyreti_rate holds"
;
  c_earlyRetiValidYr  = 2035;   !! def = 2035
parameter
  c_seFeSectorShareDevScale "scale factor in the objective function of the penalization to incentive sectors to have similar shares of secondary energy fuels."
;
  c_seFeSectorShareDevScale = 1e-3;  !! def = 1e-3
parameter
  cm_TaxConvCheck             "switch for enabling tax convergence check in nash mode"
;
  cm_TaxConvCheck = 1;  !! def = 1, which means tax convergence check is on  !! regexp = 0|1

switches tax convergence check in nash mode on and off (check that tax revenue in all regions, periods be smaller than 0.1% of GDP) * 0 (off) * 1 (on), default

parameter
  cm_maxFadeOutPriceAnticip   "switch to determine maximum allowed fadeout price anticipation to consider that the model converged."
;
  cm_maxFadeOutPriceAnticip = 1e-4; !! def = 1e-4, the fadeout price anticipation term needs to be lower than 1e-4 to consider that the model converged.
parameter
  cm_flex_tax                 "switch for enabling flexibility tax"
;
  cm_flex_tax = 1;  !! def = 1  !! regexp = 0|1

cm_flex_tax “switch for flexibility tax/subsidy, switching it on activates a tax on a number of technologies with flexible or inflexible electricity input.” technologies with flexible eletricity input get a subsidy corresponding to the lower-than-average electricity prices that they see, while inflexible technologies get a tax corresponding to the higher-than-average electricity prices that they see * (0) flexibility tax off * (1) flexibility tax on

parameter
  cm_H2targets                "switches on capacity targets for electrolysis in NDC techpol following national Hydrogen Strategies"
;
  cm_H2targets = 0; !! def 0
parameter
  cm_FlexTaxFeedback          "switch deciding whether flexibility tax feedback on buildings and industry electricity prices is on"
;
  cm_FlexTaxFeedback = 0;  !! def = 0  !! regexp = 0|1

cm_FlexTaxFeedback, switches on feedback of flexibility tax on buildings and industry. That is, electricity price decrease for electrolysis has to be matched by electrictiy price increase in buildings and industry. This switch only has an effect if the flexibility tax is on by cm_flex_tax set to 1.

parameter
  cm_VRE_supply_assumptions        "default (0), optimistic (1), pessimistic (2), or very pessimistic (3) assumptions on VRE and storage costs"
;
  cm_VRE_supply_assumptions = 0;  !! def = 0  !! regexp = [0-3]

Modifies investment cost (inco0), floorcost and learning rate parameters for VRE and storage. * (1) optimistic: reduces floor costs and investment costs and increases learning rates by around 10%. Also halves storage needs. * (2) pessimistic: increases floor costs and investment costs and decreases learning rates by around 10%. * (3) very pessimistic: increases floor costs and investment costs and decreases learning rates by around 30%.

parameter
  cm_build_H2costAddH2Inv     "additional h2 distribution costs for low diffusion levels (default value: 6.5$/kg = 0.2 $/Kwh)"
;
  cm_build_H2costAddH2Inv = 0.2;  !! def = 6.5$/kg = 0.2 $/Kwh
parameter
  cm_build_H2costDecayStart   "simplified logistic function end of full value (ex. 5%  -> between 0 and 5% the function will have the value 1). [%]"
;
  cm_build_H2costDecayStart = 0.05; !! def = 0.05
parameter
  cm_build_H2costDecayEnd     "simplified logistic function start of null value (ex. 10% -> after 10% the function will have the value 0). [%]"
;
  cm_build_H2costDecayEnd = 0.1;  !! def = 0.1
parameter
  cm_BioSupply_Adjust_EU      "factor for scaling sub-EU bioenergy supply curves"
;
  cm_BioSupply_Adjust_EU = 3; !! def 3, 3*bioenergy supply slope obtained from input data

scales bioenergy supply curves in EU regions (mainly used to match EUR H12/ 3 /GJ from 2030 onward, and 30\(/GJ from 2040 onward, and 40\)/GJ from 2040 onward. scales slope of bioenergy supply curves in EU subregions (mainly used to match EUR H12/Magpie bioenergy potential) switch can be removed once supply curves for EU subregions are fixed in input data

parameter
  cm_noPeFosCCDeu              "switch to suppress Pe2Se Fossil Carbon Capture in Germany"
;
  cm_noPeFosCCDeu = 0;  !! def = 0  !! regexp = 0|1

CCS limitations for Germany def 0, no suppression of Pe2Se Fossil Carbon Capture in Germany, if 1 then no pe2se fossil CO2 capture in Germany fossil CCS limitations in Germany+

parameter
  c_fracRealfromAnnouncedCCScap2030         "switch to adjust the share of realised CCS capacities from total announced/planned projects from database in 2030"
;
  c_fracRealfromAnnouncedCCScap2030 = 0.3; !! def = 0.3

This switch changes the assumption about the share of timely realised capacities from sum of announced/planned in 2030 from the IEA CCS data base Default assumption is that only 30% of announced or planned capacities will be realised, either due to discontinuation or delay

parameter
  cm_deuCDRmax                 "switch to limit maximum annual CDR amount in Germany in MtCO2 per y"
;
  cm_deuCDRmax = -1; !! def = -1

switch to cap annual DEU CDR amount by value assigned to switch, or no cap if -1, in MtCO2

parameter
  cm_EURCDRmax                 "switch to limit maximum annual CDR amount in the EU in MtCO2 per y"
;
  cm_EURCDRmax = -1; !! def = -1

switch to cap annual EUR CDR amount by value assigned to switch, or no cap if -1, in MtCO2

parameter
  cm_EnSecScen_limit        "switch for limiting the gas demand from 2025 onward, currently only applied to Germany"
;
  cm_EnSecScen_limit = 0;  !! def = 0

This switch is used to represent a limited gas supply in a energy security scenario. [EJ per yr]

parameter
  c_SlackMultiplier   "Multiplicative factor to up/downscale the slack size for v_changeProdStartyearSlack"
;
  c_SlackMultiplier = 1;  !! def = 1
parameter
  c_changeProdCost   "Multiplicative factor to up/downscale the costs for vm_changeProdStartyearCost"
;
  c_changeProdCost = 5;  !! def = 5
parameter
  cm_LearningSpillover      "Activate Learningspillover from foreign capacity in learning technogolies"
;
  cm_LearningSpillover = 1; !! def 1 = Learningspillover activated (set to 0 to deactivate)
parameter
  cm_nonPlasticFeedstockEmiShare      "Share of non-plastic carbon that gets emitted  rest is stored permanently, [share]"
;
  cm_nonPlasticFeedstockEmiShare = 0.6; !! def 0.6 = 60 per cent of carbon in non-plastics gets emitted
parameter
  cm_wastelag           "switch to decide whether waste from plastics lags ten years behind plastics production"
;
  cm_wastelag = 0;   !! def = 0 no waste lag  !! regexp = 1|0
parameter
  c_edgetReportAfter2010            "switch that turns on overwriting of EDGE-T results for 2005 and 2010 by NAs when set to 1"
;
  c_edgetReportAfter2010 = 0;   !! def = 0 full reporting  !! regexp = 1|0
parameter
  cm_RenShareTargets         "switch that turn on renewable share targets in the NPi2025 realization of the techpol module"
;

Note that the switch is only active in the NPi2025 realization of the 40_techpol module.

  cm_RenShareTargets = 1;      !! def = 1 renewable share targets are on !! regexp = 1|0

cm_RenShareTargetValue: 40_techpol define additional targets for renewable share in NPi2025 Note that the switch is only active in the NPi2025 realization of the 40_techpol module. If cm_RenShareTargets is on, this switch overrides the regular NPi2025 renewable share targets. The input format should the the following ttot.regi.RenShareTargetType %value e.g., 2050.EUR.RenElec 0.8 for 80%. There are the following RenShareTargetType: RenElec, NonBioRenElec, NonFossilElec, RenFE, SolarWindElec

$setGlobal cm_RenShareTargetValue    off !! def = off
parameter
  cm_APsource                "data source for air pollution baseyear (2020) emissions"
;
  cm_APsource           = 1;      !! def = 1  !! regexp = 1|2

FLAGS

c_magpieIter “Nash iterations in which MAgPIE runs in core/presolve”

The content of this setgloabal is only used once to write it to the ‘magpieIter’ set in core/set.gms. It is only a setglobal so that it is possible to deviate from the default by overwriting it from outside (prepare.R).

$setglobal c_magpieIter  20,24,28,32     !! def = "20,24,28,32"  !! This regular expression works in manual test but not in checkFixCfg [0-9]{1,2}(,[0-9]{1,2})*

c_edgeTransportIter “Nash iterations in which EDGE-T runs”

$setglobal c_edgeTransportIter 10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,50,55,60,65,70,75,80,85,90,95   !! def = "10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,50,55,60,65,70,75,80,85,90,95" 

cm_rcp_scen “chooses RCP scenario”

$setglobal cm_rcp_scen  rcp45         !! def = "rcp45"  !! regexp = none|rcp20|rcp26|rcp37|rcp45|rcp60|rcp85

cm_NDC_version “choose version of NDC targets to be applied, including differentiation between conditional vs. unconditional targets” * This switch allows to run different states of NDC targets over the past years, allowing for comparison of NDC succession over the years. * For the latest NDC version (2026_cond/uncond), the targets are based on the collection provided by PBL. The collection provides two formats for emissions targets, which we use as follows: * For major emitters, we derive absolute emissions targets based on a detailed collection by PBL adding our own assumptions (e.g. regarding LULUCF emissions), while * for minor emitters, we rely on the absolute emissions targets directly provided by PBL. * while for minor emitters, absolute emissions targets are directly taken from PBL collection. * (2026_cond): all NDCs conditional to international financial support published until end of 2025 (PBL collection), note that for countries / regions with target ranges (e.g. EU 66-72% 2035 target) * the more ambitious target is chosen even if it is strictly speaking not a conditional NDC target * (2026_uncond): all NDCs independent of international financial support published until end of 2025 (PBL collection), note that for countries / regions with target ranges (e.g. EU 66-72% 2035 target) * the less ambitious target is chosen even if it is strictly speaking not an unconditional NDC target * (2024_cond_extrapol): all NDCs conditional to international financial support published until August 31, 2024 with extrapolation of 2030 targets to 2035 targets for conutries without 2035 target * (2024_uncond_extrapol): all NDCs independent of international financial support published until August 31, 2024 with extrapolation of 2030 targets to 2035 targets for conutries without 2035 target * (2024_cond): all NDCs conditional to international financial support published until August 31, 2024 * (2024_uncond): all NDCs independent of international financial support published until August 31, 2024 * (2023_cond): all NDCs conditional to international financial support published until December 31, 2023 * (2023_uncond): all NDCs independent of international financial support published until December 31, 2023 * Other supported years are 2022, 2021 and 2018, always containing NDCs published until December 31 of that year

$setglobal cm_NDC_version  2026_cond    !! def = "2024_cond" !! regexp = 20(18|2[1-6])_(un)?cond(_extrapol)?$

cm_NDC_targetYear “choose years for which NDC emissions targets can be applied” [requires 45_carbonprice = NDC] * Examples on how to use: * “2030” means that only 2030 target are included * “2030, 2035, 2050” means that 2030, 2035 and 2050 targets are included * Note: including target years here does not mean they are automcatically considered in the carbonprice NDC realization. * Depending on the p45_minRatioOfCoverageToMax parameter, each region receives the target year with the highest share of emissions covered under NDCs.

$setglobal cm_NDC_targetYear  2030, 2035    !! def = "2030, 2035"

cm_targetDelay “delays NDC and LTS targets beyond the default target years” [requires cm_NDC_version = 2026_cond] * (prisma): PRISMA asymetric rollback delays NDC and LTS target per region: * 10 years delay for “Transition leaders”: EUR, NEU, JPN (e.g. 2030 NDC shifted to 2040, 2035 NDC shifted to 2045, and 2050 NZ target shifted to 2060) * 20 years delay for “Diversifying economies”: LAM, USA, CAZ, IND, CHA, SSA, OAS * 30 years delay for “Fossil-dependant”: REF, MEA * Exceptions apply for some regions: the delay might deviate by 5 years due to model 10-year timesteps after 2060

$setglobal cm_targetDelay  off     !! def = "off"

cm_NDC_CO2PriceLimit “sets regional upper limit for CO2 prices in NDC realization” [requires 45_carbonprice = NDC]” This serves to not force regions to reach NDC emissions targets at extremly high CO2 prices in the near-term. Instead, regions go “as close as still plausible” to their NDC targets. * Examples on how to use: * “2030.EUR 150” means that EUR has maximum CO2 price of 150 USD/tCO2 in 2030. * For the development after the target year, the switch cm_NDC_CO2PriceLimit_continuation determines whether or not an upper limit on CO2 prices is imposed. * By default 2030 CO2 prices are limited to 150 USD/tCO2 in EUR, 80 USD/tCO2 in CAZ, USA, JPN and NEU, 50 USD/tCO2 in REF and MEA, 40 USD/tCO2 in LAM and CHA, 30 USD/tCO2 in OAS, 15 USD/tCO2 in IND and 10 USD/tCO2 in SSA. * If set to “off”, no CO2 price limits are applied in any region.

$setglobal cm_NDC_CO2PriceLimit  2030.EUR 150, 2030.(CAZ,USA, JPN, NEU) 80, 2030.(REF,MEA) 50, 2030.(LAM, CHA) 40, 2030.OAS 30, 2030.IND 15, 2030.SSA 10    !! def = "2030.EUR 150, 2030.(CAZ,USA, JPN, NEU) 80, 2030.(REF,MEA) 50, 2030.(LAM, CHA) 40, 2030.OAS 30, 2030.IND 15, 2030.SSA 10" 

cm_NDC_CO2PriceLimit_continuation “switch to determine whether CO2 price limits in NDC realization are applied only in the specified target year or also in subsequent years” [requires 45_carbonprice = NDC] * (on): CO2 price limits are applied not only in the specified target year but also in subsequent years, with the limit increasing by 20% per year after the target year, but allowing for carbon price of at least 200\(/tCO2 at minimum * (off): CO2 price limits are only applied in the specified target year, but not in subsequent years ```\)setglobal cm_NDC_CO2PriceLimit_continuation off !! def = “off” !! regexp = on|off

cm_NDC_postTargetDevelopment            "choose assumption on co2 price trajectory after NDC target years" [requires 45_carbonprice = NDC]
*  (constant):                     carbon price remains constant after the last NDC target year
*  (global_conv):                  carbon price converges across regions to a global value of 100$/tCO2 by 2100

\(setglobal cm_NDC_postTargetDevelopment constant !! def = "constant" ``` cm_NDC_CO2PriceMinimum "choose assumption on minimal co2 price after first NDC target year" [requires 45_carbonprice = NDC] * (zero): no minimum carbon price after first NDC target year, i.e. carbon price can decrease to zero after first NDC target year * (NPi): carbon price cannot fall below carbon price of NPi run as this represent the development of current policies * (NonDecreasing): carbon price cannot decrease after first NDC target year, but can increase or remain constant ```\)setglobal cm_NDC_CO2PriceMinimum NonDecreasing !! def = “NonDecreasing” !! regexp = zero|NPi|NonDecreasing

cm_NDC_TargetCheckConv            "choose whether iterations should go on until all NDC emissions targets are fullfilled" [requires 45_carbonprice = NDC]
This setting determines whether compliance with NDC emissions targets should be a criterion for convergence of REMIND. 
*  (on):                         runs only converges if all NDC emissions targets are met within the tolerance defined by cm_NDC_target_DevTol
*  (off):                        runs can converge even if some NDC emissions targets are not met within the tolerance defined by cm_NDC_target_DevTol, e.g. because of very high CO2 prices needed to meet them in the near-term

\(setglobal cm_NDC_TargetCheckConv off !! def = "off" !! regexp = on|off ``` cm_NPi_version "choose version year of NPi targets for min and max targets in the form of conditional vs. unconditional" * (2024_cond): minimum technology targets are included from NewClimate latest policy modeling protocol in 2025 * (2024_uncond): maximal technology targets are included from NewClimate latest policy modeling protocol in 2025 ```\)setglobal cm_NPi_version 2025_cond !! def = “2025_cond” !! regexp = 2025_(un)?cond

cm_LTSexcludeRegi: comma-separated list of regions (H12) for which LTS should be ignored
*  (off):   apply all hard-coded LTS of module 46 (see datainput)
*  (USA):   by default, USA targets are ignored because of withdrawal from all climate agreements 
*  (USA, OAS):   removing several regions

\(setglobal cm_LTSexcludeRegi USA !! def = "USA" ``` * c_regi_earlyreti_rate "maximum percentage of capital stock that can be retired early (before reaching their expected lifetimes) in one year in specified regions, if they are not economically viable. It is applied to all techs unless otherwise specified in c_tech_earlyreti_rate." * Default value used in NPi runs: EUR_regi 0.06, USA_regi 0.04, CHA_regi 0.04, CAZ_regi 0.04, JPN_regi 0.04, GLO 0.03 (0.06 means 6% of capacity can be retired early per year at maximum, i.e. full retirement after 16.7 years, 40% standing capacity after 10 years) * In target scenarios with ambition level beyond the NPi, we assume slightly higher early retirement rates outside the EU. * Target scenario maximum retirement rates: EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06 * This reflects that the current aversion to shut down plants before end of their lifetime linked to political economy dynamics can be overcome to speed up the energy transition. * Finally, note that these maximum early retirement rates are further differentiated by technology. Coal power has 20% higher rates, for instance, while CHP plants have 30% lower rates than the default value (see core/datainput.gms). ```\)setglobal c_regi_earlyreti_rate EUR_regi 0.06, USA_regi 0.04, CAZ_regi 0.04, JPN_regi 0.04, GLO 0.02 !! def = EUR_regi 0.06, USA_regi 0.04, CAZ_regi 0.04, JPN_regi 0.04, GLO 0.02

*  c_tech_earlyreti_rate  "maximum percentage of capital stock of specific technologies that can be retired early in one year in specified regions. This switch overrides c_regi_earlyreti_rate to allow for fine-tuning of phase-out schedules, e.g. for implementation of certain policies or anticipated trends."
*  Example use: USA_regi.pc 0.1, CHA_regi.pc 0.1: Change max retirement rates for coal power in US and China to 10%/yr.
*  Keep value "off" if not needed.
*  This switch only changes the retirement rates strictly before the year specified in c_earlyRetiValidYr (default 2035).

\(setglobal c_tech_earlyreti_rate off !! def = off\)setglobal cm_LU_emi_scen SSP2 !! def = SSP2 !! regexp = SSP(1|2|3|5)|SSP2_lowEn \(setGlobal cm_regi_bioenergy_EFTax glob !! def = glob\)setglobal cm_tradbio_phaseout default !! def = default !! regexp = default|fast \(setglobal cm_maxProdBiolc 100 !! def = 100 !! regexp = off|is.nonnegative\)setGLobal cm_bioprod_regi_lim off !! def off

cm_GDPpopScen  "assumptions about future GDP and population development"
* (SSP1):  SSP1 fastGROWTH medCONV
* (SSP2):  SSP2 medGROWTH medCONV
* (SSP3):  SSP3 slowGROWTH slowCONV
* (SSP4):  SSP4 medGROWTH mixedCONV
* (SSP5):  SSP5 fastGROWTH fastCONV
* (SDP|SDP_EI|SDP_MC|SDP_RC):   SDP scenarios
* (SSP2IndiaMedium|SSP2IndiaHigh):   special India scenario

\(setglobal cm_GDPpopScen SSP2 !! def = SSP2 !! regexp = SSP[1-5]|SDP(_EI|_MC|_RC)?|SSP2IndiaMedium|SSP2IndiaHigh ``` c_techAssumptScen flag defines an energy technology scenario according to SSP narratives * (SSP1) optimistic for VRE, storage, BEV; pessimistic for nuclear and CCS * (SSP2) reference scenario - default investment costs & learning rates * (SSP3) optimistic for basic fossil technologies; pessimistic for nuclear and VRE * (SSP5) optimistic for advanced fossil technologies and CCS; pessimistic for nuclear and VRE ```\)setglobal c_techAssumptScen SSP2 !! def = SSP2 !! regexp = (SSP)?[1-5] \(setGlobal cm_oil_scen medOil !! def = medOil !! regexp = lowOil|medOil|highOil|4\)setGlobal cm_gas_scen medGas !! def = medGas !! regexp = lowGas|medGas|highGas \(setGlobal cm_coal_scen medCoal !! def = medCoal !! regexp = 0|lowCoal|medCoal|highCoal ``` c_ccsinjecrateRegi "regional upper bound of the CCS injection rate, overwrites for specified regions the settings set with c_ccsinjecratescen" * ("off") no regional differentiation * ("GLO 0.005") reproduces c_ccsinjecratescen = 1 * ("GLO 0.00125, CAZ_regi 0.0045, CHA_regi 0.004, EUR_regi 0.0045, IND_regi 0.004, JPN_regi 0.002, USA_regi 0.002") "example that is taylored such that NDC goals are achieved without excessive CCS in a delayed transition scenario. Globally, 75% reduction, 10% reduction in CAZ etc. compared to reference case with c_ccsinjecratescen = 1" ```\)setglobal c_ccsinjecrateRegi off !! def = “off” \(setglobal c_SSP_forcing_adjust forcing_SSP2 !! def = forcing_SSP2 !! regexp = forcing_SSP(1|2|3|5)\)setGlobal cm_regiExoPrice off !! def = off \(setGlobal cm_regiExoPrice_fromFile off !! def = off\)setGlobal cm_emiMktTarget off !! def = off \(setGlobal cm_emiMktTarget_tolerance GLO 0.01 !! def = GLO 0.01\)setGlobal cm_scaleDemand off !! def = off \(setGlobal cm_scaleDemandBuildTable off !! def = off\)setGlobal c_scaleDemandIndTable off !! def = off \(setGlobal cm_quantity_regiCO2target off !! def = off\)setGlobal cm_dispatchSetyDown off !! def = off The amount that te producing any sety can dispatch less (in percent) - so setting “20” in a cm_dispatchSetyDown column in scenario_config will allow the model to reduce the output of this te by 20% \(setGlobal cm_dispatchSeelDown off !! def = off The amount that te producing seel can dispatch less (in percent) (overrides cm_dispatchSetyDown for te producing seel) ``` * cm_NucRegiPol "enable European region specific nuclear phase-out and new capacitiy constraints" ```\)setGlobal cm_NucRegiPol on !! def = on

*  cm_CoalRegiPol "enable European region specific coal phase-out and new capacitiy constraints"

\(setGlobal cm_CoalRegiPol on !! def = on ``` * cm_proNucRegiPol "enable European region specific pro nuclear capacitiy constraints" ```\)setGlobal cm_proNucRegiPol off !! def = off \(setGlobal cm_CCSRegiPol off !! def = off\)setGlobal cm_vehiclesSubsidies off !! def = off \(setGlobal cm_implicitQttyTarget off !! def = off\)setGlobal cm_implicitQttyTargetType config !! def = config !! regexp = config|scenario \(setGlobal cm_loadFromGDX_implicitQttyTargetTax off !! def = off !! regexp = off|on\)setGlobal cm_implicitQttyTarget_delay iteration 15 !! def = iteration 15, quantity targets only start after iteration 15 \(setGlobal cm_implicitPriceTarget off !! def = off !! regexp = off|initial|elecPrice|H2Price|highElec|highGasandLiq|highPrice|lowElec|lowPrice\)setGlobal cm_implicitPePriceTarget off !! def = off !! regexp = off|highFossilPrice \(setGlobal cm_VREminShare off !! def = off\)setGlobal cm_CCSmaxBound off !! def = off \(setglobal cm_33_EW_maxShareOfCropland GLO 0.5 !! def = GLO 0.5\)setglobal cm_33_GDP_netNegCDR_maxShare GLO 1 !! def = GLO 1 \(setGlobal c_tech_CO2capturerate off !! def = off\)setglobal c_CES_calibration_new_structure 0 !! def = 0 !! regexp = 0|1 \(setglobal c_CES_calibration_write_prices 0 !! def = 0 !! regexp = 0|1\)setglobal cm_CES_calibration_default_prices 0.01 !! def = 0.01 \(setglobal cm_in_limit_price_change "ue_steel_primary, kap_steel_primary" !! def = ""\)setglobal cm_calibration_string off !! def = off \(setglobal cm_techcosts REG !! def = REG !! regexp = REG|REG2040|GLO\)setglobal cm_floorCostScen gdpBased !! def = gdpBased !! regexp = uniform|pricestruc|gdpBased \(setGlobal cm_EDGEtr_scen Mix2ICEban !! def = Mix2ICEban\)setglobal cm_steel_secondary_max_share_scenario off !! def off , switch on for maximum secondary steel share \(setGlobal cm_import_tax off !! def = off !! regexp = .*(worldPricemarkup|CO2taxmarkup|avCO2taxmarkup|off).*\)setGlobal cm_import_EU off !! def off \(setGlobal cm_import_ariadne off !! def off\)setGlobal cm_PriceDurSlope_elh2 GLO 20 !! def = GLO 20 \(setGlobal cm_trade_SE_exog off !! def off\)setGlobal cm_SEtaxRampUpParam GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40 !! def = GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40 \(setGlobal cm_EnSecScen off !! def off\)setGlobal cm_EnSecScen_price off !! def off \(setGlobal cm_indstExogScen off !! def off\)setGLobal cm_exogDem_scen off !! def off !! regexp = off|ariadne_(bal|ensec|highDem|lowDem) \(setGlobal cm_Ger_Pol off !! def off\)setGlobal cm_altFeEmiFac EUR_regi, NEU_regi !! def = “EUR_regi, NEU_regi” \(setglobal cm_incolearn off !! def = off\)setglobal cm_storageFactor off !! def = off \(setglobal cm_learnRate off !! def = off\)setglobal cm_adj_seed off \(setglobal cm_adj_seed_cont off\)setglobal cm_adj_coeff off \(setglobal cm_adj_coeff_cont off\)setglobal cm_adj_seed_multiplier off \(setglobal cm_adj_coeff_multiplier off ``` * (off): no scale-factor, use default investment costs (inco0) values * (any value ge 0) list of techs with respective factor to change inco0 value by a multiplication factor. (e.g. "ccsinjeon 0.5,bioigccc 0.66) Note: if %cm_techcosts% == "GLO", switch will not work for policy runs, i.e. cm_startyear > 2005, for pc, ngt and ngcc as this gets overwritten in 05_initialCap module ```\)setglobal cm_inco0Factor off !! def = off

*  def <- "off" = use default p_inco0 values.
*  or list of techs with respective factor to change p_inco0 value by a multiplication factor. (ex. "windon 0.33, spv 0.33" makes investment costs for windon and spv 3 times cheaper)
*  (note: if %cm_techcosts% == "GLO", switch will not work for policy runs, i.e. cm_startyear > 2005, for pc, ngt and ngcc as this gets overwritten in 05_initialCap module)

\(setglobal cm_inco0RegiFactor off !! def = off\)setglobal cm_ccsinjeCost high !! def = high !! regexp = med|low|high

switch from standard to low and high CO2 transport & storage cost.
Warning: it applies absolute values; only use it in combination with default c_techAssumptScen SSP2. 
* (low): old estimate before 03/2024; ~7.5 USD/tCO2 in 2035. Also applies tech_stat=2 and constrTme=0
* (med): new main estimate; 12 USD/tCO2 at all times (similar to ~11.4 USD/tCO2 average of saline formations, on- and offshore DOG fields in Budinis et al 2017)
* (high): upper estimate; ~20USD/tCO2 (constant), assuming upper end of storage cost and long transport distances

\(setglobal cm_CCS_markup off !! def = off\)setglobal cm_Industry_CCS_markup off !! def = off

Flag to change learning assumption for established pyrolysis technologies. 0 = not learning; any number = learning rate
Beware: When turned on, policy runs require a NPi that also has learning, otherwise it becomes unbounded.
(0.1): Learning rate of 10%.
(0): Not learning

\(setglobal c_BClearning 0 !! def = 0\)setglobal cm_renewables_floor_cost off !! def = off \(setglobal cm_sehe_upper off !! def = off\)setglobal cm_rcp_scen_build none !! def = “none” \(setGlobal cm_pushCalib none !! def = none\)setGlobal cm_reducCostB none !! def = none \(setGlobal cm_effHP 5 !! def = 5\)setGlobal cm_CESMkup_build standard !! def = standard \(setGlobal cm_CESMkup_ind standard !! def = standard !! regexp = standard|Elec_Push|manual\)setGlobal cm_CESMkup_ind_data “” !! def = “” \(setGlobal cm_fxIndUe off !! def = off !! regexp = off|on\)setGlobal cm_fxIndUeReg “” !! def = “” \(setglobal cm_taxCO2_functionalForm linear !! def = "linear" !! regexp = linear|exponential\)setglobal cm_taxCO2_historical gdx_ref !! def = “gdx_ref” !! regexp = gdx_ref|is.nonnegative \(setglobal cm_taxCO2_historicalYr last !! def = "last" !! regexp = last|is.nonnegative\)setglobal cm_taxCO2_regiDiff_convergence scenario !! def = scenario \(setglobal cm_taxCO2_regiDiff_startyearValue endogenous !! def = "endogenous"\)setglobal cm_budgetCO2from2020RegiShare off !! def = off \(setglobal cm_peakBudgYrRegi off !! def = off\)setglobal cm_ind_energy_limit default !! def = default !! regexp = default|manual \(setglobal cm_ind_energy_limit_manual "2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90"\)setglobal cm_wasteIncinerationCCSshare off !! def = off \(setglobal cm_feShareLimits off !! def = off\)setGlobal c_VREPot_Factor off !! def = off \(setGlobal cm_FEtax_trajectory_abs off !! def = off\)setGlobal cm_FEtax_trajectory_rel off !! def = off \(setGLobal c_agricult_base_shift off !! def off\)setglobal cm_INCONV_PENALTY on !! def = on !! regexp = off|on \(setglobal cm_INCONV_PENALTY_FESwitch constant !! def = linear !! regexp = off|linear|constant\)setglobal cm_INCONV_PENALTY_FESwitchRegi USA !! def = USA !! regexp = [A-Z]{3} \(setglobal cm_seFeSectorShareDevMethod sqSectorAvrgShare !! def = sqSectorAvrgShare !! regexp = off|sqSectorShare|sqSectorAvrgShare|minMaxAvrgShare\)setglobal c_seFeSectorShareDevUnit share !! def = share !! regexp = share|energy \(setGlobal cm_MOFEX off !! def = off !! regexp = off|on\)setGlobal cm_limitSolidsFossilRegi off \(setGlobal cm_Full_Integration off !! def = off !! regexp = off|on ``` MAGICC configuration either uncalibrated or calibrate year 2000 temperature to HADCRUT4 data (which is very close to AR5). ```\)setGlobal cm_magicc_calibrateTemperature2000 uncalibrated !! def = uncalibrated

Derive temperature impulse response to CO2 emissions, based on MAGICC. Adds around 10min runtime.

\(setGlobal cm_magicc_temperatureImpulseResponse off !! def = off !! regexp = off|on ``` MAGICC configuration roughly comparable to TCRE value, or even more roughly, equivalent climate sensitivity choose from OLDDEFAULT (REMIND1.7 legacy file); or different percentiles of RCP26 or generic TCRE outcomes calibrated to CMIP5 (see Schultes et al. (2018) for details) ```\)setGlobal cm_magicc_config OLDDEFAULT !! def = OLDDEFAULT ; {OLDDEFAULT, RCP26_[5,15,..,95], TCRE_[LOWEST,LOW,MEDIUM,HIGH,HIGHEST] }

climate damages (HowardNonCatastrophic,DICE2013R, DICE2016, HowardNonCatastrophic, HowardInclCatastrophic, KWcross, KWpanelPop,Howard2025Level,Howard2025Growth,Howard2025LevelCat,Howard2025GrowthCat}

\(setGlobal cm_damage_DiceLike_specification HowardNonCatastrophic !! def = HowardNonCatastrophic\)setGlobal cm_KotzWenzPerc mean !! def = mean !! regexp = low|med|mean|high

COACCH damage function adaptation flag for SLR adaptation (noadapt, adapt)

\(setGlobal cm_damage_COACCH_adaptSpec noadapt !! def = noadapt ``` COACCH damage function percentile specification ,p5 is median(p05,p5,p59) ```\)setGlobal cm_damage_COACCH_CIspec p5 !! def = p5 \(setGlobal cm_damage_Labor_exposure low !! def = low !! regexp = low|high\)setGlobal cm_TCssp SSP2 !! def = SSP2 !! regexp = SSP2|SSP5 \(setGlobal cm_TCpers 8 !! def = 8 !! regexp = [0-9]\)setGlobal cm_TCspec mean !! def = mean !! regexp = mean|median|95|05|83|17 \(setGlobal c_skip_output off !! def = off !! regexp = off|on\)setglobal cm_CO2TaxSectorMarkup off !! def = off \(setGlobal c_regi_nucscen all !! def = all\)setGlobal c_regi_capturescen all !! def = all \(setglobal cm_subsec_model_steel processes !! def = processes !! regexp = processes|ces\)setglobal cm_tech_bounds_2025 on !! def = on !! regexp = on|off

c_NearTermProjectCompletion
Choose assumptions on completion rates, i.e. the share of planned capacity additions of technologies in the near-term that will actually be completed and start operation. 
This would effect, for example, the share of planned/under construction coal power projects that will reach completion in the first future time step. 
The implementation serves to set near-term bounds in the model. There are two options:
(conservative) conservative assumptions on completion rates (high completion rates of fossil technologies, low completion rates of clean technologies)
(transformative) transformative assumptions on completion rates (low completion rates of fossil technologies, high completion rates of clean technologies)

\(setglobal c_NearTermProjectCompletion conservative !! def = conservative !! regexp = conservative|transformative\)setglobal cm_VREminCap_Ger CurrPol !! def = CurrPol
$setGlobal cm_conoptv conopt3 !! def = conopt3

c_empty_model  "Short-circuit the model, just use the input as solution"

(off): normal model operation, default
(on): no model operation, instead input.gdx is copied to fulldata.gdx

\(setGlobal c_empty_model off !! def = off !! regexp = off|on\)setglobal cm_secondary_steel_bound scenario !! def = scenario \(setglobal cm_demScen SSP2 !! def = SSP2\)setGlobal c_scaleEmiHistorical on !! def = on !! regexp = off|on \(SetGlobal cm_quick_mode off !! def = off !! regexp = off|on\)setGLobal cm_debug_preloop off !! def = off !! regexp = off|on

cm_APssp "air pollution SSP"
(SSP1-5): SSP selection for emission factors based on GAINS2025 data
(FROMGDPSSP): Shortcut to copy SSP from all_GDPpopScen

\(setGlobal cm_APssp FROMGDPSSP !! def = FROMGDPSSP !! regexp = SSP1|SSP2|SSP3|SSP4|SSP5|FROMGDPSSP ``` cm_APscen "air pollution scenario" (CLE): Current Legislation Emissions (differentiated by SSP, available for SSP1-5) (SLE): Stronger Legislation Emissions (differentiated by SSP, available for SSP1-5) (MTFR): Maximum Technically Feasible Reduction (not differentiated by SSP) (SMIPbySSP): ScenarioMIP default scenario (differentiated by SSP, available for SSP1, SSP2, SSP3 and SSP5) (SMIPVLLO): ScenarioMIP VLLO scenario (not differentiated by SSP) ```\)setGlobal cm_APscen SMIPbySSP !! def = SMIPbySSP !! regexp = CLE|SLE|MTFR|SMIPbySSP|SMIPVLLO \(setglobal cm_CES_configuration indu_subsectors-buil_simple-tran_edge_esm-GDPpop_SSP2-En_SSP2-Kap_debt_limit-Reg_62eff8f7 !! this will be changed by start_run()\)setglobal c_CES_calibration_iterations 10 !! def = 10 \(setglobal c_CES_calibration_industry_FE_target 1 ``` setting which region is to be tested in the one-region test run (80_optimization = testOneRegi) ```\)setglobal c_testOneRegi_region EUR !! def = EUR !! regexp = [A-Z]{3}

cm_taxrc_RE     "switch to define whether tax on (CO2 content of) energy imports is recycled to additional direct investments in renewables (wind, solar and storage)"

\(setglobal cm_taxrc_RE none !! def = none !! regexp = none|REdirect ``` cm_emifacs_baseyear "base year for deriving nonCO2 emission factors/econometric estimates/scaling factors" (2005): Uses EDGAR data with 2005 as base year, and Lucas et al. 2007 IMAGE for N2O baselines (2020): Uses CEDS2024 data with 2020 as base year, and Harmsen et al. 2022 IMAGE for N2O baselines ```\)setGlobal cm_emifacs_baseyear 2020 !! def = 2005 \(setGlobal c_nonco2_macc_version PBL_2022 !! def = PBL_2007\)setGlobal c_nonco2_macc_scenario Default !! def = Default $setGlobal cm_chaCoalBounds off !! def = off

cm_repeatNonOpt       "should nonoptimal regions be solved again?"

*  (off): no, only infeasable regions are repeated, standard setting
*  (on):  also non-optimal regions are solved again, up to cm_solver_try_max

$setglobal cm_repeatNonOpt off !! def = off !! regexp = off|on ```

Interfaces

Interface plot missing!

Realizations

References