REMIND - REgional Model of INvestments and Development

3.7.0

created with goxygen 1.5.0

Carbonprice (45_carbonprice)

Description

The carbonprice module sets or adjusts carbon price trajectories between iterations s.t. the desired climate policy targets are met. Carbon price trajectories either (a) follow a prescribed funtional form (linear/exponential), (b) reflect NPi or NDC targets, or (c) are set exogenously. The carbon price is the main indicator to reflect the change in climate policy ambition over time. Carbon prices are potentially defined by three modules: - 45_carbonprice: define the carbon price necessary to reach global emission targets following specific price trajectories. - 46_carbonpriceRegi: add a markup pm_taxCO2eqRegi to 45_carbonprice estimations to reach specific NDC or net zero targets - 47_regipol: under the regiCarbonPrice realisation, define more detailed region or emissions market specific targets, overwriting the all other carbon prices for selected regions.

Interfaces

Interface plot missing!

Input

module inputs (A: NDC | B: NPi | C: NPi2025 | D: NPi2025expo | E: exogenous | F: exogenousExpo | G: expoLinear | H: functionalForm | I: functionalFormRegi | J: none | K: temperatureNotToExceed) (continued below)
  Description Unit A
cm_CPslopeAdjustment Only used with [functionalFormRegi], determines whether the entire path is shifted up and down or the slope of is adjusted endogenously
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_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_carbonprice_temperatureLimit not-to-exceed temperature target in degree above pre-industrial \(45_carbonprice = temperatureNotToExceed\)
cm_emiscen policy scenario choice
cm_expoLinear_yearStart time at which carbon price increases linearly instead of exponentially
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_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_peakBudgYr date of net-zero CO2 emissions for peak budget runs without overshoot
cm_startyear first optimized modelling time step \(year\)
cm_taxCO2_IncAfterPeakBudgYr annual increase of CO2 tax after cm_peakBudgYr in $ per tCO2
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_expGrowth growth rate of carbon tax
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_lowerBound_path_gdx_ref switch for choosing if carbon price trajectories from path_gdx_ref are used as lower bound
cm_taxCO2_peakBudgYr level of co2 tax in peak budget year (cm_peakBudgYr) in $ per t CO2eq
cm_taxCO2_regiDiff switch for choosing the regional carbon price differentiation scheme in 45_carbonprice/functionalForm
cm_taxCO2_startyear level of co2 tax in start year in $ per t CO2eq
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.
fm_taxCO2eqHist
(ttot, all_regi)
historic CO2 prices \(\$/tCO2\)
pm_GDPGross
(tall, all_regi)
gross GDP (before damages) \(T\$\)
pm_actualbudgetco2
(ttot)
actual level of cumulated emissions starting from 2020 \(GtCO2\)
pm_actualbudgetco2eqRegi
(ttot, all_regi)
Regional- actual level of cumulated emissions starting from 2020 \(GtCO2\)
pm_budgetCO2eq
(all_regi)
budget for regional energy-emissions in period 1 \(GtC\)
pm_consPC
(tall, all_regi)
Consumption per capita
pm_dt
(tall)
difference to last timestep
pm_emifac
(tall, all_regi, all_enty, all_enty, all_te, all_enty)
emission factor by technology for all types of energy-related emissions \(GtC/TWa, Mt CH4/TWa, Mt N/TWa, Mt SO2/TWa, Mt BC/TWa, Mt OC/TWa\) x
pm_gdp
(tall, all_regi)
GDP MER data \(trn US\$ 2005\)
pm_globalMeanTemperature
(tall)
global mean temperature anomaly \(K\)
pm_macSwitch
(ttot, all_regi, all_enty)
switch to include mac options in specific sectors and years \(0/1\) x
pm_pop
(tall, all_regi)
population data \(bn people\)
pm_prtp
(all_regi)
Pure rate of time preference
pm_shPPPMER
(all_regi)
PPP ratio for calculating GDP|PPP from GDP|MER
pm_taxCO2eq
(ttot, all_regi)
CO2 tax path calculated in 45_carbonprice module [T$/GtC]. To get $/tCO2, multiply with 272 = 1 / sm_DptCO2_2_TDpGtC x
pm_taxCO2eq_anchor_iterationdiff
(ttot)
difference in global anchor carbon price to the last iteration \(T\$/GtC\)
pm_taxCO2eq_iter
(iteration, ttot, all_regi)
CO2 tax path (pm_taxCO2eq) tracked over iterations \(T\$/GtC\) x
pm_temperatureImpulseResponseCO2
(tall, tall)
temperature impulse response to CO2 \(K/GtCO2\)
pm_ttot_2_tall
(ttot, tall)
mapping from ttot to tall
pm_ttot_val
(ttot)
value of ttot set element
sm_D2005_2_D2017 Convert US$2005 to US$2017
sm_DptCO2_2_TDpGtC convert \(/tCO2 to T\)/GtC: 44/12/1000 x
sm_budgetCO2eqGlob budget for global energy-emissions in period 1
sm_c_2_co2 convert mass from carbon to CO2 (44/12) x
sm_globalBudget_absDev absolute deviation of global cumulated CO2 emissions budget from target budget
vm_co2eq
(ttot, all_regi)
total greenhouse gas emissions measured in co2 equivalents that are subject to carbon pricing, be aware that emissions coverage of this variable depends on switch cm_multigasscen \(GtCeq\) x
vm_demFeSector
(ttot, all_regi, all_enty, all_enty, emi_sectors, all_emiMkt)
final energy demand per sector and emissions market, note: taxes should be applied to this variable or variables closer to the supply-side whenever possible so the marginal prices include the tax effects \(TWa\) x
vm_emiAll
(ttot, all_regi, all_enty)
total emissions by species \(GtC, Mt CH4, Mt N, Mt SO2, Mt BC, Mt OC\)
vm_emiFgas
(ttot, all_regi, all_enty)
F-gas emissions by single gases from IMAGE \(emiFgasTotal in MtCO2eq, for other units see f_emiFgas.cs4r\) x
  B C D E F G H I J K
cm_CPslopeAdjustment x
cm_budgetCO2_absDevTol x x
cm_budgetCO2from2020 x x
cm_carbonprice_temperatureLimit x
cm_emiscen x x x
cm_expoLinear_yearStart x
cm_iteration_max x
cm_iterative_target_adj x x x x
cm_peakBudgYr x x
cm_startyear x x x x
cm_taxCO2_IncAfterPeakBudgYr x x
cm_taxCO2_Shape x x
cm_taxCO2_expGrowth x x x x x
cm_taxCO2_interpolation x
cm_taxCO2_lowerBound_path_gdx_ref x x
cm_taxCO2_peakBudgYr x x
cm_taxCO2_regiDiff x
cm_taxCO2_startyear x x x
cm_useInputGdxForCarbonPrice x
fm_taxCO2eqHist
(ttot, all_regi)
x x
pm_GDPGross
(tall, all_regi)
x
pm_actualbudgetco2
(ttot)
x
pm_actualbudgetco2eqRegi
(ttot, all_regi)
x
pm_budgetCO2eq
(all_regi)
x
pm_consPC
(tall, all_regi)
x
pm_dt
(tall)
x
pm_emifac
(tall, all_regi, all_enty, all_enty, all_te, all_enty)
pm_gdp
(tall, all_regi)
x
pm_globalMeanTemperature
(tall)
x
pm_macSwitch
(ttot, all_regi, all_enty)
x x x
pm_pop
(tall, all_regi)
x
pm_prtp
(all_regi)
x
pm_shPPPMER
(all_regi)
x
pm_taxCO2eq
(ttot, all_regi)
x x x x x x x x x x
pm_taxCO2eq_anchor_iterationdiff
(ttot)
x
pm_taxCO2eq_iter
(iteration, ttot, all_regi)
x x
pm_temperatureImpulseResponseCO2
(tall, tall)
x
pm_ttot_2_tall
(ttot, tall)
x
pm_ttot_val
(ttot)
x x
sm_D2005_2_D2017 x
sm_DptCO2_2_TDpGtC x x x x x x
sm_budgetCO2eqGlob x
sm_c_2_co2
sm_globalBudget_absDev x
vm_co2eq
(ttot, all_regi)
vm_demFeSector
(ttot, all_regi, all_enty, all_enty, emi_sectors, all_emiMkt)
vm_emiAll
(ttot, all_regi, all_enty)
x
vm_emiFgas
(ttot, all_regi, all_enty)

Output

module outputs
  Description Unit
pm_NDCEmiTargetDeviation
(ttot, all_regi)
deviation of REMIND emissions to NDC target emissions in last iteration normalized to NDC target emissions \(0-1\)
pm_budgetDeviation
(all_regi)
deviations from regional targets
pm_factorRescale_taxCO2Regi_Funneled2
(iteration, all_regi)
regional - Multiplicative factor for rescaling the CO2 price to reach the target - Funnelled (interactive, incl. adjustments based on last iterations)
pm_regionalBudget_absDevTol
(all_regi)
tolerance of deviation from regional targets in absolute terms
sm_peakbudget_diff difference in cumulative CO2 emissions between cumulative emissions in cm_peakBudgYr and time step of maximum cumulative CO2 emissions \(GtCO2\)

Realizations

(A) NDC

This realization implements a carbon price trajectory consistent with the NDC targets (up to 2030) and a trajectory of comparable ambition post 2030 (1.25%/yr price increase and regional convergence of carbon price).

Limitations The NDC emission target refers to GHG emissions w/o land-use change and international bunkers. However, the submitted NDC targets of several countries include land-use emissions (e.g. Australia and US). See https://www4.unfccc.int/sites/NDCStaging/Pages/All.aspx. To be checked!

(B) NPi

This realization takes the carbon prices until 2020 from the input data and implements as convergence scheme post 2020: parabolic convergence up to 25 US$2005/t CO2 in the convergence year (here chosen as 2100) and then constant

Limitations There are no known limitations.

(C) NPi2025

Limitations There are no known limitations.

(D) NPi2025expo

Limitations There are no known limitations.

(E) exogenous

This realization implements carbon price trajectories from an exogenous file (p45_tau_co2_tax.inc). Alternatively, specify in ‘path_gdx_carbonprice’ the run to be used Requires cm_emiscen = 9 and cm_iterative_target_adj = 0

Limitations There are no known limitations.

(F) exogenousExpo

Limitations There are no known limitations.

(G) expoLinear

The exponential price path goes back to the “Hotelling rule”: a price path that rises exponentially with the discount rate is economically optimal for extracting a finite resource, in our case the finite remaining carbon budget. However, once CDR is introduced to the portfolio of mitigation options, the remaining admissible amount of cumulative gross CO2 emissions is no longer finite, and the Hotelling rule no longer represents an economically optimal solution. A carbon price path following the Hotelling rule leads to rather low emission prices and therefore low emission reductions early in the century, and to very high emission prices and massive CDR deployment towards the end of the century. A Hotelling price path can only be considered optimal until the time of net-zero emissions. Afterwards, a moderate carbon price increase is sufficient to avoid a return of fossil fuels. Therefore, we choose an exponentially increasing carbon price until the expected time of net-zero emissions and a linear increase at the rate of 2050 or 2060 afterwards.

Limitations There are no known limitations.

(H) functionalForm

Carbon price trajectory follows a prescribed functional form (linear/exponential) - either until peak year or until end-of-century - and can be endogenously adjusted to meet CO2 budget targets - either peak or end-of-century - that are formulated in terms of total cumulated CO2 emissions from 2020 (cm_budgetCO2from2020). Flexible choices for regional carbon price differentiation and near-term adjustments. ————————————————————————————————————————————————————————————————————————————————————————————————————————————————– The realization uses a global anchor trajectory based on which the regional carbon price trajectories are defined. Part I (Global anchor trajectory): The functional form (linear/exponential) of the global anchor trajectory is chosen via cm_taxCO2_functionalForm. The (initial) global anchor carbon price in cm_startyear is chosen via cm_taxCO2_startyear. Alternatively, the (initial) global anchor carbon price in cm_peakBudgYr is chosen via cm_taxCO2_peakBudgYr. This value is endogenously adjusted to meet CO2 budget targets if cm_iterative_target_adj is set to 5, 7 or 9. (linear): The linear curve is determined by the two points (cm_taxCO2_historicalYr, cm_taxCO2_historical) and (cm_startyear, cm_taxCO2_startyear). By default, cm_taxCO2_historicalYr is the last timestep before cm_startyear, and cm_taxCO2_historical is the carbon price in that timestep in the reference run (path_gdx_ref) - computed as the maximum of pm_taxCO2eq over all regions. (exponential): The exponential curve is determined by exponential growth rate (cm_taxCO2_expGrowth). Part II (Post-peak behaviour): The global anchor trajectory can be adjusted after reaching the peak of global CO2 emissions in cm_peakBudgYr. The (initial) choice of cm_peakBudgYr is endogenously adjusted if cm_iterative_target_adj is set to 7 or 9. (with iterative_target_adj = 0): after cm_peakBudgYr, the global anchor trajectory increases linearly with fixed annual increase given by cm_taxCO2_IncAfterPeakBudgYr (default = 0, i.e. constant), set cm_peakBudgYr = 2100 to avoid adjustment (with iterative_target_adj = 5): no adjustment to the functional form after cm_peakBudgYr since end-of-century CO2 budget target is formulated (with iterative_target_adj = 7): after cm_peakBudgYr, the global anchor trajectory is adjusted so that global net CO2 emissions stay close to zero (with iterative_target_adj = 9): after cm_peakBudgYr, the global anchor trajectory increases linearly with fixed annual increase given by cm_taxCO2_IncAfterPeakBudgYr (default = 0, i.e. constant) Part III (Regional differentiation): Regional carbon price differentiation relative to global anchor trajectory is chosen via cm_taxCO2_regiDiff. (none): No regional differentiation, i.e. globally uniform carbon pricing (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 (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 (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 (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 (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. (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. (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. (manual): Enables manual specification of regional carbon price differentiation based on cm_taxCO2_regiDiff_convergence and cm_taxCO2_regiDiff_startyearValue Part IV (Interpolation from path_gdx_ref): To smoothen a potential jump of carbon prices in cm_startyear, an interpolation between (a) the carbon prices before cm_startyear provided by path_gdx_ref and (b) the carbon prices from cm_startyear onward defined by parts I-III can be chosen via cm_taxCO2_interpolation In addition, the carbon prices provided by path_gdx_ref are used as lower bound if switch cm_taxCO2_lowerBound_path_gdx_ref is on. (off): no interpolation, i.e. (b) is used from cm_startyear onward. This must be chosen if regional carbon prices are manually set via cm_taxCO2_regiDiff_startyearValue. (one_step): linear interpolation within 10 years between (a) and (b). For example, if cm_startyear = 2030, it uses (a) until 2025, the average of (a) and (b) in 2030, and (b) from 2035. (two_steps): linear interpolation within 15 years between (a) and (b). For example, if cm_startyear = 2030, it uses (a) until 2025, weighted averages of (a) and (b) in 2030 and 2035, and (b) from 2040. ————————————————————————————————————————————————————————————————————————————————————————————————————————————————–

Limitations There are no known limitations.

(I) functionalFormRegi

Carbon price trajectory follows a prescribed functional form (linear/exponential) - either until peak year or until end-of-century. It is endogenously adjusted to meet regional end-of-century CO2 budget targets.

Switches to set:

Budget allocation and tolerance: - cm_budgetCO2from2020: the budget to be distributed across regions (Gt CO2 eq) (analogous to functionalForm) - c_budgetscen: chose the emission types included in the budget calculation that determines the carbon price. For GHG budgets, remember to adjust the value for cm_budgetCO2from2020# - cm_budgetCO2from2020RegiShare: the share of the global carbon budget allocated to each region - cm_budgetCO2_absDevTol: the absolute deviation tolerance for budget convergence for each region individually. I.e. precision is different from the application in functionalForm!

Carbon price shape settings: - cm_taxCO2_functionalForm: shape of the carbon price trajectory (linear/exponential) (analogous to functionalForm) - cm_CPslopeAdjustment: for linear carbon price, determines whether the slope is of the carbon price is adjusted or whether the line is just shifted up/donw - cm_taxCO2_Shape: 1 if the carbon price peaks in 2100, 2 if it peaks in a specified year (analogous to functionalForm for EoC Budgets)

To exogenously set a peak carbon price year(s): (cm_taxCO2_Shape eq 2) - cm_peakBudgYrRegi: prescribe a specific peak year for each region - cm_peakBudgYr: prescribe a global peak year, which is then applied to all regions. Used if cm_peakBudgYrRegi == “off” - cm_taxCO2_IncAfterPeakBudgYr: set the increase of the carbon price after the peak

Other relevant switches: - cm_useInputGdxForCarbonPrice: if 1, carbon price is read from input GDX. If 0, carbon price is calculated as in the functional form approach. Set to 1 e.g. in case of convergence issues when using the input.gdx from a previous run. - cm_frac_NetNegEmi: Need to decide whether the net negative emissions tax should be turned off depending on the specific scenario configuration.

Comments: - Runs with very relaxed budgets for some regions may not converge if cm_taxCO2_lowerBound_path_gdx_ref = 1 because the carbon price cannot decrease sufficiently. However, if the carbon price drops below 1 USD/tCO2 in 2100 and the budget is still underachieved, region will appear converged (see 80_optimization/nash/postsolve.gms) - Regional carbon price adjustments sometimes oscillate. Try another input GDX, or adjust the iteration number after which carbon price rescaling is allowed only in one direction. - Regions sometimes get carbon prices <1 USD/tCO2, which sometimes causes convergence issues because the multiplying rescaling factors do not increase the carbon price sufficiently anymore. This realization was originally introduced with PR#2222.

Limitations There are no known limitations.

(J) none

Limitations There are no known limitations.

(K) temperatureNotToExceed

This realization chooses a carbon price trajectory consistent with a (non-overshoot) temperature target by staying within a peak budget of cumulative CO2 emissions.

Limitations There are no known limitations.

Definitions

Objects

module-internal objects (A: NDC | B: NPi | C: NPi2025 | D: NPi2025expo | E: exogenous | F: exogenousExpo | G: expoLinear | H: functionalForm | I: functionalFormRegi | J: none | K: temperatureNotToExceed) (continued below)
  Description Unit A
f45_EmiTargetAbs
(tall, all_regi, NDC_version, all_GDPpopScen)
Table for all NDC versions with absolute NDC emissions targets, emissions from countries without targets are not included \(Mt CO2eq/yr\) x
f45_shareTarget
(tall, all_regi, NDC_version, all_GDPpopScen)
Table for all NDC versions with estimated target year GHG emissions share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years \(0..1\) x
o45_change_totCO2emi_peakBudgYr
(iteration)
Measure for how much the CO2 emissions change around the peakBudgYr
o45_delay_increase_peakBudgYear
(iteration)
Counter that tracks if flip-flopping of peakBudgYr happened. Starts an inner loop to try and overcome this
o45_diff_to_Budg
(iteration)
Difference between actual CO2 budget and target CO2 budget
o45_factorRescale_taxCO2_afterPeakBudgYr
(iteration)
Multiplicative factor for rescaling the CO2 price in the year after peakBudgYr - only needed if flip-flopping of peakBudgYr occurs
o45_peakBudgYr_Itr
(iteration)
Year in which the CO2 budget is supposed to peak. Is changed in iterative_target_adjust = 9
o45_pkBudgYr_flipflop
(iteration)
Counter that tracks if flipfloping of cm_peakBudgYr occured in the last iterations
o45_reached_until2150pricepath
(iteration)
Counter that tracks if the inner loop of increasing the CO2 price AFTER peakBudgYr goes beyond the initial trajectory
o45_taxCO2eq_anchor_iterDiff_Itr
(iteration)
track pm_taxCO2eq_anchor_iterationdiff in 2100 over iterations
o45_totCO2emi_allYrs
(ttot, iteration)
Global CO2 emissions over time and iterations. Needed to check the procedure to find the peakBudgYr
o45_totCO2emi_peakBudgYr
(iteration)
Total CO2 emissions in the peakBudgYr
p45_BAU_reg_emi_wo_LU_wo_bunkers
(ttot, all_regi)
regional GHG emissions (without LU and without bunkers) in BAU scenario \(MtCO2eq/yr\) x
p45_CO2PriceLimitNDC
(ttot, all_regi)
Upper limit of CO2 price in NDC realization, read from switch cm_NDC_CO2PriceLimit \(\$/tCO2\) x
p45_CO2eqwoLU_actual
(ttot, all_regi)
actual level of regional GHG emissions after previous iteration \(MtCO2eq/yr\) x
p45_CO2eqwoLU_actual_iter
(iteration, ttot, all_regi)
actual level of regional GHG emissions p45_CO2eqwoLU_actual tracked over iterations \(MtCO2eq/yr\) x
p45_CO2eqwoLU_goal
(ttot, all_regi)
regional NDC target level of GHG emissions \(MtCO2eq/yr\) x
p45_CarbonPriceSlope
(all_regi)
when carbon price slope is regionally adjusted: increase of carbon price per year
p45_CarbonPriceSlope_iter
(iteration, all_regi)
when carbon price slope is regionally adjusted: increase of carbon price per year for each iteration
p45_EmiTargetAbs
(ttot, all_regi)
Absolute NDC emissions targets, emissions from countries without targets are not included \(Mt CO2eq/yr\) x
p45_FunnelUpper
(iteration)
upper bound on regional carbon price funnel
p45_TaxBudgetSlopeBest
(all_regi)
last available regional carbon price change/regional carbon budget change that is negative
p45_TaxBudgetSlopeBest_iter
(iteration, all_regi)
last available regional carbon price change/regional carbon budget change that is negative for each iteration
p45_TaxBudgetSlopeCurrent
(all_regi)
regional carbon price change/regional carbon budget change - from the last 2 iterations
p45_TaxBudgetSlopeCurrent_iter
(iteration, all_regi)
regional carbon price change/regional carbon budget change - from the last 2 iterations, for each iteration. 0 when no carbon price change
p45_actualbudgetco2eqRegi_2100
(all_regi)
regional - actual level of 2020-2100 cumulated emissions, including all CO2 for last iteration
p45_actualbudgetco2eqRegi_2100_iter
(iteration, all_regi)
regional - actual level of 2020-2100 cumulated emissions, including all CO2 for last iteration
p45_adjustExponent exponent in tax adjustment process \(1\) x
p45_bestNDCcoverage
(all_regi)
highest coverage of NDC targets within region \(0..1\) x
p45_budgetCO2from2020Regi
(all_regi)
regional carbon budget (Gt CO2)
p45_budgetCO2from2020RegiShare
(all_regi)
share of region in global carbon budget
p45_budgetDeviation_iter
(iteration, all_regi)
deviations from regional targets across iterations
p45_delay
(all_regi)
delay of NDC targets, defined per region \(years\) x
p45_distanceToOptyear
(ttot, all_regi)
distance to p45_useSingleYearCloseTo to favor years in case of multiple equally good targets \(year\) x
p45_factorRescaleCO2Tax
(ttot, all_regi)
multiplicative factor to rescale CO2 taxes to achieve the climate targets \(1\) x
p45_factorRescaleCO2TaxLtd
(ttot, all_regi)
multiplicative factor to rescale CO2 taxes to achieve the climate targets limited to not-so-fast adaption \(1\) x
p45_factorRescaleCO2TaxLtd_iter
(iteration, ttot, all_regi)
Track the changes of p45_factorRescaleCO2TaxLimited over the iterations \(1\) x
p45_factorRescaleCO2Tax_iter
(iteration, ttot, all_regi)
Track the changes of p45_factorRescaleCO2Tax over the iterations \(1\) x
p45_factorRescale_taxCO2
(iteration)
Multiplicative factor for rescaling the CO2 price to reach the target
p45_factorRescale_taxCO2Regi
(iteration, all_regi)
regional - Multiplicative factor for rescaling the CO2 price to reach the target
p45_factorRescale_taxCO2Regi_Final
(iteration, all_regi)
regional - Multiplicative factor for rescaling the CO2 price to reach the target - Funnelled, may include up/downward iteration differentiation
p45_factorRescale_taxCO2Regi_Funneled
(iteration, all_regi)
regional - Multiplicative factor for rescaling the CO2 price to reach the target - Funnelled (static)
p45_factorRescale_taxCO2_Funneled
(iteration)
Multiplicative factor for rescaling the CO2 price to reach the target - limited by an iteration-dependent funnel
p45_firstNDCyear
(all_regi)
last year with NDC coverage within region \(year\) x
p45_gdppcap_PPP
(ttot, all_regi)
GDP per capita (1e3 $ PPP 2017)
p45_lastNDCyear
(all_regi)
last year with NDC coverage within region \(year\) x
p45_minDistanceToOptyear
(all_regi)
minimal distance to p45_useSingleYearCloseTo per region \(year\) x
p45_minRatioOfCoverageToMax only targets whose coverage is this times p45_bestNDCcoverage are considered. Use 1 for only best \(0..1\) x
p45_peakBudgYr_check
(ttot)
peak budget year calculated based on maximum of cumulative CO2 emissions, used to check adjustment algorithm \(year\)
p45_peakBudgYr_regi
(all_regi)
prescribed peak carbon price year for each region
p45_regiDiff_convergence_data
(ext_regi, ttot)
input data for regional exponent and convergence year provided by switch cm_taxCO2_regiDiff_convergence
p45_regiDiff_endYr
(all_regi)
end year of regional differentiation, i.e. regional carbon price equal to global anchor trajectory thereafter
p45_regiDiff_exponent
(all_regi)
regional convergence exponent for ratio between global anchor and regional differentiated CO2 price trajectories
p45_regiDiff_initialRatio
(all_regi)
inital ratio between global anchor and regional differentiated CO2 price trajectories
p45_regiDiff_ratio
(ttot, all_regi)
ratio between global anchor and regional differentiated CO2 price trajectories
p45_regiDiff_startYr
(all_regi)
start year of convergence from regionally differentiated carbon prices to global anchor trajectory
p45_regiDiff_startyearValue
(all_regi)
manually chosen regional carbon price in cm_startyear converted from \(/t CO2eq to T\)/GtC
p45_regiDiff_startyearValue_data
(ext_regi)
input data for regional carbon price in start year provided by switch cm_taxCO2_regiDiff_startyearValue
p45_shareTarget
(ttot, all_regi)
Estimated target year GHG emissions share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years \(0..1\) x
p45_tau_co2_tax
(ttot, all_regi)
Exogenous CO2 tax level \(T\$/GtC\)
p45_taxCO2eqFirstNDCyear
(all_regi)
CO2eq tax in p45_firstNDCyear \(T\$/GtC\) x
p45_taxCO2eq_anchor
(ttot)
global anchor trajectory for regional CO2 price trajectories in T$/GtC = $/kgC
p45_taxCO2eq_anchorRegi
(ttot, all_regi)
regional anchor trajectory for regional CO2 price trajectories in T$/GtC = $/kgC
p45_taxCO2eq_anchorRegi_iter
(ttot, all_regi, iteration)
regional anchor trajectory for regional CO2 price trajectories in T$/GtC = $/kgC across iterations
p45_taxCO2eq_anchorRegi_until2150
(ttot, all_regi)
save the p45_taxCO2eq_anchorRegi derived in datainput.gms
p45_taxCO2eq_anchor_iter
(iteration, ttot)
save p45_taxCO2eq_anchor in each iteration (before entering functionalForm/postsolve.gms) for debugging
p45_taxCO2eq_anchor_iterationdiff_tmp
(ttot)
help parameter for iterative adjustment of taxes
p45_taxCO2eq_anchor_until2150
(ttot)
global anchor trajectory continued until 2150 - as if there was no change in trajectory after cm_peakBudgYr. Needed if cm_peakBudgYr was shifted right
p45_taxCO2eq_bau
(ttot, all_regi)
level of CO2 taxes in business as usual run \(T\$/GtC\) x
p45_taxCO2eq_expoLinearIncrease
(all_regi)
Linear annual increase in carbon price [T$/GtC/yr] right before cm_expoLinear_yearStart
p45_taxCO2eq_path_gdx_input
(ttot, all_regi)
CO2 tax trajectories from path_gdx
p45_taxCO2eq_path_gdx_ref
(ttot, all_regi)
CO2 tax trajectories from path_gdx_ref
p45_taxCO2eq_regiDiff
(ttot, all_regi)
regional differentiated CO2 price trajectories in T\(/GtC =\)/kgC, used as intermediate step in deriving pm_taxCO2eq from p45_taxCO2eq_anchor
p45_taxCO2refYear
(all_regi)
CO2 tax in reference year for derivation of the carbon price trajectory in the first iteration, can be in last fixed time step, or peak carbon price year depending on the shape
p45_taxTempLimit
(tall)
tax for Temperature limit \(1000 \$/tC\)
p45_taxTempLimitLastItr
(tall)
tax for Temperature limit, last iteration \(1000 \$/tC\)
p45_temp_anchor
(ttot, all_regi)
regionally shifted anchor for all iterations (helper, may be removed)
p45_useSingleYearCloseTo if 0: use all. If > 0: use only one single NDC target per country closest to this year (use 2030.4 to prefer 2030 over 2035 over 2025) \(year\) x
s45_YearBeforeStartYear The REMIND year before cm_startyear
s45_actualbudgetco2 actual level of 2020-2100 cumulated emissions, including all CO2 for last iteration
s45_actualbudgetco2_last actual level of 2020-2100 cumulated emissions for previous iteration
s45_eta inverse steepness of damage function at temperature limit (logistic function). Raise if no convergence
s45_factorRescale_taxCO2_exponent_before10 exponent determining sensitivity before iteration 10
s45_factorRescale_taxCO2_exponent_from10 exponent determining sensitivity of CO2 price adjustment to CO2 budget deviation from iteration 10
s45_interpolation_endYr end year of interpolation from p45_taxCO2eq_path_gdx_ref to p45_taxCO2eq_regiDiff
s45_interpolation_startYr start year of interpolation from p45_taxCO2eq_path_gdx_ref to p45_taxCO2eq_regiDiff
s45_itrAdjExp exponent for iterative adjustment of taxes. Lower if no convergence.
s45_peakBudgYr_check peak budget year calculated based on maximum of cumulative CO2 emissions, used to check adjustment algorithm \(year\)
s45_peakBudget peak CO2 budget as calculated as the maximum of cumulative CO2 emissions, used to check adjustment algorithm \(GtC/yr\)
s45_regiDiff_gdpThreshold reference value for GDP per capita (1e3 $ PPP 2017) above which carbon price from global anchor trajectory is fully applied
s45_regiHelperYear helper scalar for regional peaking carbon price year implementation
s45_taxCO2_historical historical level of CO2 tax converted from \(/t CO2eq to T\)/GtC
s45_taxCO2_historicalYr year of s45_taxCO2_historical
s45_taxCO2_peakBudgYr CO2 tax provided by cm_taxCO2_peakBudgYr converted from \(/t CO2eq to T\)/GtC
s45_taxCO2_startyear CO2 tax provided by cm_taxCO2_startyear converted from \(/t CO2eq to T\)/GtC
s45_taxTempLimitConvMaxDeviation limit for temperature deviation
  B C D E F G H I J K
f45_EmiTargetAbs
(tall, all_regi, NDC_version, all_GDPpopScen)
f45_shareTarget
(tall, all_regi, NDC_version, all_GDPpopScen)
o45_change_totCO2emi_peakBudgYr
(iteration)
x
o45_delay_increase_peakBudgYear
(iteration)
x
o45_diff_to_Budg
(iteration)
x
o45_factorRescale_taxCO2_afterPeakBudgYr
(iteration)
x
o45_peakBudgYr_Itr
(iteration)
x
o45_pkBudgYr_flipflop
(iteration)
x
o45_reached_until2150pricepath
(iteration)
x
o45_taxCO2eq_anchor_iterDiff_Itr
(iteration)
x
o45_totCO2emi_allYrs
(ttot, iteration)
x
o45_totCO2emi_peakBudgYr
(iteration)
x
p45_BAU_reg_emi_wo_LU_wo_bunkers
(ttot, all_regi)
p45_CO2PriceLimitNDC
(ttot, all_regi)
p45_CO2eqwoLU_actual
(ttot, all_regi)
p45_CO2eqwoLU_actual_iter
(iteration, ttot, all_regi)
p45_CO2eqwoLU_goal
(ttot, all_regi)
p45_CarbonPriceSlope
(all_regi)
x
p45_CarbonPriceSlope_iter
(iteration, all_regi)
x
p45_EmiTargetAbs
(ttot, all_regi)
p45_FunnelUpper
(iteration)
x
p45_TaxBudgetSlopeBest
(all_regi)
x
p45_TaxBudgetSlopeBest_iter
(iteration, all_regi)
x
p45_TaxBudgetSlopeCurrent
(all_regi)
x
p45_TaxBudgetSlopeCurrent_iter
(iteration, all_regi)
x
p45_actualbudgetco2eqRegi_2100
(all_regi)
x
p45_actualbudgetco2eqRegi_2100_iter
(iteration, all_regi)
x
p45_adjustExponent
p45_bestNDCcoverage
(all_regi)
p45_budgetCO2from2020Regi
(all_regi)
x
p45_budgetCO2from2020RegiShare
(all_regi)
x
p45_budgetDeviation_iter
(iteration, all_regi)
x
p45_delay
(all_regi)
p45_distanceToOptyear
(ttot, all_regi)
p45_factorRescaleCO2Tax
(ttot, all_regi)
p45_factorRescaleCO2TaxLtd
(ttot, all_regi)
p45_factorRescaleCO2TaxLtd_iter
(iteration, ttot, all_regi)
p45_factorRescaleCO2Tax_iter
(iteration, ttot, all_regi)
p45_factorRescale_taxCO2
(iteration)
x
p45_factorRescale_taxCO2Regi
(iteration, all_regi)
x
p45_factorRescale_taxCO2Regi_Final
(iteration, all_regi)
x
p45_factorRescale_taxCO2Regi_Funneled
(iteration, all_regi)
x
p45_factorRescale_taxCO2_Funneled
(iteration)
x
p45_firstNDCyear
(all_regi)
p45_gdppcap_PPP
(ttot, all_regi)
x
p45_lastNDCyear
(all_regi)
p45_minDistanceToOptyear
(all_regi)
p45_minRatioOfCoverageToMax
p45_peakBudgYr_check
(ttot)
x
p45_peakBudgYr_regi
(all_regi)
x
p45_regiDiff_convergence_data
(ext_regi, ttot)
x
p45_regiDiff_endYr
(all_regi)
x x
p45_regiDiff_exponent
(all_regi)
x x
p45_regiDiff_initialRatio
(all_regi)
x x
p45_regiDiff_ratio
(ttot, all_regi)
x x
p45_regiDiff_startYr
(all_regi)
x x
p45_regiDiff_startyearValue
(all_regi)
x
p45_regiDiff_startyearValue_data
(ext_regi)
x
p45_shareTarget
(ttot, all_regi)
p45_tau_co2_tax
(ttot, all_regi)
x x
p45_taxCO2eqFirstNDCyear
(all_regi)
p45_taxCO2eq_anchor
(ttot)
x x
p45_taxCO2eq_anchorRegi
(ttot, all_regi)
x
p45_taxCO2eq_anchorRegi_iter
(ttot, all_regi, iteration)
x
p45_taxCO2eq_anchorRegi_until2150
(ttot, all_regi)
x
p45_taxCO2eq_anchor_iter
(iteration, ttot)
x
p45_taxCO2eq_anchor_iterationdiff_tmp
(ttot)
x
p45_taxCO2eq_anchor_until2150
(ttot)
x x
p45_taxCO2eq_bau
(ttot, all_regi)
p45_taxCO2eq_expoLinearIncrease
(all_regi)
x
p45_taxCO2eq_path_gdx_input
(ttot, all_regi)
x
p45_taxCO2eq_path_gdx_ref
(ttot, all_regi)
x x
p45_taxCO2eq_regiDiff
(ttot, all_regi)
x x
p45_taxCO2refYear
(all_regi)
x
p45_taxTempLimit
(tall)
x
p45_taxTempLimitLastItr
(tall)
x
p45_temp_anchor
(ttot, all_regi)
x
p45_useSingleYearCloseTo
s45_YearBeforeStartYear x
s45_actualbudgetco2 x
s45_actualbudgetco2_last x
s45_eta x
s45_factorRescale_taxCO2_exponent_before10 x
s45_factorRescale_taxCO2_exponent_from10 x
s45_interpolation_endYr x
s45_interpolation_startYr x
s45_itrAdjExp x
s45_peakBudgYr_check x
s45_peakBudget x
s45_regiDiff_gdpThreshold x
s45_regiHelperYear x
s45_taxCO2_historical x x
s45_taxCO2_historicalYr x x
s45_taxCO2_peakBudgYr x x
s45_taxCO2_startyear x x x
s45_taxTempLimitConvMaxDeviation x

Sets

sets in use
  description
NDC_version NDC data version for NDC realizations of 40_techpol and 45_carbonprice
all_GDPpopScen all possible GDP scenarios
all_emiMkt emission markets
all_enty all types of quantities
all_regi all regions
all_te all energy technologies, including from modules
emiMacMagpie(all_enty) types of climate-relevant non-energy emissions with mac curve where baseline emissions come from MAgPIE only
emi_sectors comprehensive sector set used for more detailed emissions accounting (REMIND-EU) and for CH4 tier 1 scaling - potentially to be integrated with similar set all_exogEmi
enty(all_enty) all types of quantities
ext_regi extended regions list (includes subsets of H12 regions)
iteration iterator for main (Negishi/Nash) iterations
p45_NDCyearSet(ttot, all_regi) YES for years whose NDC targets is used
regi(all_regi) all regions used in the solution process
regi_group(ext_regi, all_regi) region groups (regions that together corresponds to a H12 region)
regi_groupExt(ext_regi, all_regi) extended region group mapping. Mapping model regions that belong to region group, including one to one region mapping
se2fe(all_enty, all_enty, all_te) map secondary energy to end-use energy using a technology
t(ttot) optimisation time, years between cm_startyear and 2150 with 5 to 20 years time steps
t_NDC_targetYear(ttot) Years for which NDC emissions targets can be applied [0 or 1]
tall time index, each year from 1900 to 3000
te(all_te) energy technologies
ttot(tall) time index with spin-up, years between 1900 and 2150 with 5 to 20 years time steps

Authors

Christoph Bertram, Laurin Koehler-Schindler, Gunnar Luderer, Rahel Mandaroux, Robert Pietzcker, Oliver Richters

See Also

01_macro, 02_welfare, 15_climate, 51_internalizeDamages, 80_optimization, core

References