The 15_climate module takes emissions and simulates the resulting climate variables (forcings, global mean temperature) using the MAGICC climate emulator. It may also be used within the optimization or between iterations in order to internalize climate damages or adjust the carbon price to meet a desired climate target
Interface plot missing!
| Description | Unit | A | B | |
|---|---|---|---|---|
| cm_emiscen | policy scenario choice | x | ||
| 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. | x | ||
| cm_multigasscen | scenario on GHG portfolio to be included in permit trading scheme | x | x | |
| cm_startyear | first optimized modelling time step | \(year\) | x | |
| pm_emicapglob (tall) |
global emission cap | x | x | |
| pm_globalMeanTemperature (tall) |
global mean temperature anomaly | x | ||
| pm_globalMeanTemperatureZeroed1900 (tall) |
global mean temperature anomaly, zeroed around 1900 | x | ||
| pm_taxCO2eq (ttot, all_regi) |
CO2 tax path in T\(/GtC =\)/kgC. To get $/tCO2, multiply with 272 | \(T\$/GtC\) | x | |
| pm_temperatureImpulseResponseCO2 (tall, tall) |
temperature impulse response to CO2 | \(K/GtCO2\) | x |
| Description | Unit | |
|---|---|---|
| pm_gmt_conv | global mean temperature convergence |
In this realization, concentration, forcing, and temperature values
are calculated using a version of the MAGICC climate emulator. MAGICC
has to be installed in a separate folder, which can be set in the
magicc_template switch. MAGICC version 6.4 is used as
default, but other versions with compatible path structure and variable
names can be used as well as long as it has the proper interfacing R
scripts.
The actual generation of MAGICC input data from REMIND emissions is not handled here, but in the core. Emissions that are not calculated by REMIND, such as F-gases, are taken from RCP trajectories.
With this module activated, MAGICC is run between iterations one time
or several, depending on specific switches. By default, the global mean
temperature change is simply read and passed on to other modules.
Depending on the choice of carbon tax adjustment in
cm_emiscen, the total carbon budget will also be adjusted
based on the MAGICC radiation forcing or temperature outcomes between
iterations. This can allow the carbon tax, which is adjusted based on
the carbon budget, to be optimized for a given temperature target. If
cm_magicc_temperatureImpulseResponse is on, a new
Temperature Impulse Response Function (TIRF) is also generated between
iterations. The TIRF is a smooth function that estimates the effect of
an additional unit of emissions in global temperature, and it’s used by
some damage modules that internalize climate damages (i.e. account for
damages within the optimization). To derive a TIRF, MAGICC is run
several times with pulse emissions added around the the emissions of
that iteration.
Execute_unload 'fulldata_postsolve';
Execute "Rscript climate_assessment_run.R";
Execute_Loadpoint 'p15_forc_magicc' p15_forc_magicc;
Execute_Loadpoint 'p15_magicc_temp' pm_globalMeanTemperature = pm_globalMeanTemperature;
pm_globalMeanTemperature(tall)$(tall.val gt 2100) = pm_globalMeanTemperature("2100");
Raw temperature (GMT anomaly) from MAGICC is further calibrated to match HADCRUT4 in 2000. This ensures that different MAGICC configurations start at the same observed temperature.
$ifthen.cm_magicc_calibrateTemperature2000 %cm_magicc_calibrateTemperature2000% == "HADCRUT4"
Calibrate temperature such that anomaly in 2006-2015 reference period is 0.97 (SR1.5 Table 2.2, footnote 1)
s15_tempOffset2010 = sum(tall$(tall.val gt 2005 and tall.val le 2015),pm_globalMeanTemperature(tall))/10;
display s15_tempOffset2010;
pm_globalMeanTemperature(tall) = pm_globalMeanTemperature(tall) - s15_tempOffset2010 + 0.97;
display pm_globalMeanTemperature;
pm_gmt_conv = 100*smax(t,abs(pm_globalMeanTemperature(t)/max(p15_gmt0(t),1e-8) -1));
display pm_gmt_conv;
p15_gmt0(tall) = pm_globalMeanTemperature(tall);
$endif.cm_magicc_calibrateTemperature2000
pm_globalMeanTemperatureZeroed1900(tall) = pm_globalMeanTemperature(tall) + 0.092;
TIRF derivation
Derive temperature impulse response (TIRF) from MAGICC pulse scenarios
$ifthen.cm_magicc_tirf "%cm_magicc_temperatureImpulseResponse%" == "on"
if( ((iteration.val le 10) or ( mod(iteration.val,5 ) eq 0)) ,
execute "Rscript climate_assessment_temperatureImpulseResponse.R";
execute_loadpoint 'pm_magicc_temperatureImpulseResponse' pm_temperatureImpulseResponseCO2 = pm_temperatureImpulseResponse;
);
$endif.cm_magicc_tirf
Iterative adjustment of budgets or carbon taxes to meet forcing target
if (cm_iterative_target_adj eq 2, !! otherwise adjustment happens in core/postsolve.gms
Iterative adjustment for carbon tax runs: scale current tax pathway with the ratio of target forcing s15_gr_forc_os to current forcing p15_forc_magicc. The offset is only there to increase the speed of convergence, the values have no physical meaning. For low stabilization targets (rcp2.0, rcp2.6, rcp3.7) the target is the 2100 forcing target (s15_rcpCluster eq 1), for lower targets the forcing target is valid during the full century (s15_rcpCluster eq 0).
if (cm_emiscen eq 9,
display pm_taxCO2eq, s15_gr_forc_os, p15_forc_magicc;
if (s15_rcpCluster eq 1,
pm_taxCO2eq(t,regi)
=
pm_taxCO2eq(t,regi)
* ((p15_forc_magicc("2100") - s15_forcing_budgetiterationoffset_tax - max(0,(cm_startyear-2020)/20))
/ (s15_gr_forc_os - s15_forcing_budgetiterationoffset_tax - max(0,(cm_startyear-2020)/20)))**1.2
;
elseif (s15_rcpCluster eq 0),
pm_taxCO2eq(t,regi)
=
pm_taxCO2eq(t,regi)
* ((smax(tall,p15_forc_magicc(tall)) - s15_forcing_budgetiterationoffset_tax - max(0,(cm_startyear-2020)/20))
/ (s15_gr_forc_nte - s15_forcing_budgetiterationoffset_tax - max(0,(cm_startyear-2020)/20)))**1.2
;
);
pm_taxCO2eq(t,regi)$(t.val gt 2110) = pm_taxCO2eq("2110",regi); !! to prevent huge taxes after 2110 and the resulting convergence problems, set taxes after 2110 equal to 2110 value
display pm_taxCO2eq;
);
);
Limitations There are no known limitations.
Limitations There are no known limitations.
| Description | Unit | A | B | |
|---|---|---|---|---|
| p15_emicapregi (tall, all_regi) |
regional emission caps, used for calculation of global emission cap | x | x | |
| p15_forc_magicc (tall) |
actual radiative forcing as calculated by magicc | \(W/m^2\) | x | x |
| p15_gmt0 (tall) |
global mean temperature convergence saved for the next iteration | x | ||
| p15_oghgf_crbbb | exogenous forcings from RCP: carbonaceous aerosols from biomass burning | x | x | |
| p15_oghgf_ffbc | exogenous forcings from RCP: black carbon from fossil fuels | x | x | |
| p15_oghgf_ffoc | exogenous forcings from RCP: organic carbon from fossil fuels | x | x | |
| p15_oghgf_h2ostr | exogenous forcings from RCP: stratospheric water vapor | x | x | |
| p15_oghgf_hfc | exogenous forcings from RCP: HFCs | x | x | |
| p15_oghgf_luc | exogenous forcings from RCP: albedo change due to land-use change | x | x | |
| p15_oghgf_minaer | exogenous forcings from RCP: mineral dust | x | x | |
| p15_oghgf_montreal | exogenous forcings from RCP: montreal gases | x | x | |
| p15_oghgf_nitaer | exogenous forcings from RCP: nitrates | x | x | |
| p15_oghgf_o3str | exogenous forcings from RCP: stratospheric ozone | x | x | |
| p15_oghgf_o3trp | exogenous forcings from RCP: tropospheric ozone | x | x | |
| p15_oghgf_pfc | exogenous forcings from RCP all in W/m^2: PFCs | x | x | |
| p15_oghgf_sf6 | exogenous forcings from RCP: SF6 | x | x | |
| s15_forcing_budgetiterationoffset | offset for the calculation of iteratively adjusted budget | x | ||
| s15_forcing_budgetiterationoffset_tax | offset for the calculation of iteratively adjusted budget | x | ||
| s15_gr_forc_kyo | guardrail for 450 ppm Kyoto forcing, adapted between negishi iterations - dummy parameter, only needed to prevent gdx errors | x | x | |
| s15_gr_forc_kyo_nte | guardrail for 550 ppm Kyoto forcing, adapted between negishi iterations - dummy parameter, only needed to prevent gdx errors | x | x | |
| s15_gr_forc_nte | not to exceed radiative forcing target from 2100 on | \(W/m^2\) | x | |
| s15_gr_forc_os | overshoot (os) radiative forcing target (guardrail = gr) from 2100 on | \(W/m^2\) | x | |
| s15_rcpCluster | clustering of rcp_scen for the iterative traget adjustment | x | ||
| s15_tempOffset2010 | mean temperature in 2010 from MAGICC | x |
| description | |
|---|---|
| all_regi | all regions |
| in(all_in) | All inputs and outputs of the CES function |
| iteration | iterator for main (Negishi/Nash) iterations |
| modules | all the available modules |
| regi(all_regi) | all regions used in the solution process |
| t(ttot) | optimisation time, years between cm_startyear and 2150 with 5 to 20 years time steps |
| tall | time index, each year from 1900 to 3000 |
| ttot(tall) | time index with spin-up, years between 1900 and 2150 with 5 to 20 years time steps |
Jessica Strefler, Michaja Pehl, Christoph Bertram, Gabriel Abrahão, Tonn Rüter