Climate model projections from the ScenarioMIP of CMIP6

Overview

This recipe is implemented into ESMValTool to evaluate the temperature and precipitation changes from the ScenarioMIP of CMIP6. It produces the original plots and tables of Tebaldi et al. (2021), https://doi.org/10.5194/esd-12-253-2021

Available recipe and diagnostics

Recipe is stored in esmvaltool/recipes/

  • recipe_tebaldi21esd.yml

Diagnostics are stored in esmvaltool/diag_scripts/tebaldi21esd/

  • calc_timeseries_across_realization_stddev_runave.ncl: computes time series of ensemble spreads (i.e., inter-member standard deviations). One dataset is used for resampling subsets of 10 members.

  • calc_cmip6_and_cmip5_pattern_diff_scaleT.ncl: computes the pattern difference between the CMIP6 multi-model mean change and the CMIP5 multi-model mean change.

  • calc_IAV_hatching.ncl: computes the interannual variability (IAV) over piControl runs, either over the whole time period or in chunks over some years.

  • calc_pattern_diff_scaleT.ncl: computes the map of multi-model mean change scaled by global T change.

  • calc_pattern_stippling_hatching.ncl: computes the map of multi-model mean change with stippling for significant region and hatching for non-significant region. Significant is where the multi-model mean change is greater than two standard deviations of the internal variability and where at least 90% of the models agree on the sign of change. Not significant is where the multi-model mean change is less than one standard deviation of internal variability.

  • calc_pattern_intermodel_stddev_scaleT.ncl: computes the intermodel standard deviation of the change scaled by global T change standard deviation of the change scaled by global T change

  • calc_pattern_interscenario_stddev_scaleT.ncl: computes the interscenario standard deviation of the change scaled by global T change

  • calc_pattern_stddev_scaleT.ncl: computes the standard deviation of the change scaled by global T change

  • calc_pattern_comparison.ncl: computes the difference between the patterns of multi-model mean change of two different scenarios (ex: SSP4-6.0 and SSP4-3.4)

  • calc_table_changes.ncl: computes the changes (mean and spreads) for the specified scenarios and time periods relative to the historical baseline.

  • calc_table_warming_level.ncl: computes the warming level crossing year (mean, five percent and ninety-five percent quantiles of crossing years) for specified scenarios and warming levels.

  • calc_timeseries_mean_spread_runave.ncl: computes multi-model time series of change against historical baseline for specified scenarios with spread. A running average with specified window is performed.

  • calc_timeseries_mean_spread_ssp4.ncl: computes multi-model time series of change against historical baseline for specified ssp434 and ssp460 with spread. A running average with specified window is performed.

  • calc_timeseries_mean_spread_ssp5.ncl: computes multi-model time series of change against historical baseline for ssp534-over and ssp585 with spread. A running average with specified window is performed.

  • plot_pattern.ncl: plots a pattern.

  • plot_table_changes: plots a table of the multi-model mean and spread for specified scenarios and periods.

  • plot_table_warming_level.ncl: plots a table of warming level crossing years for specified scenarios (columns) and warming levels (rows).

  • plot_timeseries_mean_spread_3scenarios.ncl: plots time series (multi- model mean and spread) for 3 scenarios.

  • plot_timeseries_mean_spread_constrained_projections.ncl: plot time series with brackets for constrained projections.

  • plot_timeseries_mean_spread.ncl: plot time series (multi-model mean and spread) for 5 scenarios.

  • plot_timeseries_mean_spread_rightaxis_5scen.ncl: plot time series (multi-model mean and spread) for 5 scenarios and with an additional right axis.

  • plot_timeseries_mean_spread_ssp4.ncl: plot time series for two ssp4 scenarios.

  • plot_timeseries_mean_spread_ssp5.ncl: plot time series for two ssp5 scenarios.

  • plot_timeseries_across_realization_stddev_runave.ncl: plot time series of inter-member standard deviation.

User settings in recipe

  1. Script calc_timeseries_across_realization_stddev_runave.ncl

    Required settings for script

    • scenarios: list with scenarios included in figure

    • syears: list with start years in time periods (e.g. start of historical period and SSPs)

    • eyears: list with end years in time periods (end year of historical runs and SSPs)

    • begin_ref_year: start year of reference period (e.g. 1995)

    • end_ref_year: end year of reference period (e.g. 2014)

    • n_samples: number of samples of size 10 to draw among all the ensembles of sampled_model

    • sampled_model: name of dataset on which to sample

    • runave_window: size window used for the centered running average

  2. Script calc_cmip6_and_cmip5_pattern_diff_scaleT.ncl

    Required settings for script

    • scenarios_cmip5: list of CMIP5 scenarios included in figure

    • scenarios_cmip6: list of CMIP6 scenarios included in figure

    • periods: list with start years of periods to be included

    • time_avg: time_avg: time averaging (“annualclim”, “seasonalclim”)

    Optional settings for script

    • percent: determines if difference expressed in percent (0, 1, default= 0)

  3. Script calc_IAV_hatching.ncl

    Required settings for script

    • time_avg: time_avg: time averaging (“annualclim”, “seasonalclim”) needs to be consistent with calc_pattern_stippling_hatching.ncl

    Optional settings for script

    • periodlength: length of period in years to calculate variability over, default is total time period

    • iavmode: calculate IAV from multi-model mean or save individual models (“each”: save individual models, “mmm”: multi-model mean, default), needs to be consistent with calc_pattern_stippling_hatching.ncl

  4. Script calc_pattern_diff_scaleT.ncl

    Required settings for script

    • scenarios: list with scenarios included in figure

    • periods: list with start years of periods to be included

    • time_avg: time_avg: time averaging (“annualclim”, “seasonalclim”)

  5. Script calc_pattern_stippling_hatching.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated interannual variability for stiplling and hatching

    • time_avg: time_avg: time averaging (“annualclim”, “seasonalclim”) needs to be consistent with calc_IAV_hatching.ncl

    • scenarios: list with scenarios to be included

    • periods: list with start years of periods to be included

    • labels: list with labels to use in legend depending on scenarios

    • sig: plot stippling for significance? (True, False)

    • not_sig: plot hatching for uncertainty? (True, False)

    Optional settings for script

    • seasons: list with season index if time_avg is “seasonalclim” (then seasons is required), DJF:0, MAM:1, JJA:2, SON:3

    • iavmode: calculate IAV from multi-model mean or save individual models (“each”: save individual models, “mmm”: multi-model mean, default), needs to be consistent with calc_IAV_hatching.ncl

    • percent: determines if difference expressed in percent (0, 1, default = 0)

  6. Script calc_pattern_intermodel_stddev_scaleT.ncl

    Required settings for script

    • scenarios: list with scenarios included in figure

    • periods: list with start years of periods to be included

    • time_avg: time_avg: time averaging (“annualclim”, “seasonalclim”)

  7. Script calc_pattern_interscenario_stddev_scaleT.ncl

    Required settings for script

    • scenarios: list with scenarios included in figure

    • periods: list with start years of periods to be included

    • time_avg: time_avg: time averaging (“annualclim”, “seasonalclim”)

  8. Script calc_pattern_stddev_scaleT.ncl

    Required settings for script

    • scenarios: list with scenarios included in figure

    • periods: list with start years of periods to be included

    • time_avg: time_avg: time averaging (“annualclim”, “seasonalclim”)

  9. Script calc_pattern_comparison.ncl

    Required settings for script

    • scenarios: list with two scenarios included in figure. The last scenario is taken as reference. For example to compute the difference of pattern between SSP4-6.0 and SSP4-3.4, the scenario ssp460 should be the last element of the list.

    • periods: list with start years of periods to be included

    • time_avg: time_avg: time averaging (“annualclim”, “seasonalclim”)

    • label: label of periods

  10. Script calc_table_changes.ncl

    Required settings for script

    • scenarios: list with scenarios included in the table

    • syears: list with start years of time periods to include in the table

    • eyears: list with end years of the time periods to include in the table

    • begin_ref_year: start year of historical baseline period (e.g. 1995)

    • end_ref_year: end year of historical baseline period (e.g. 2014)

    • spread: multiplier of standard deviation to calculate spread with (e.g. 1.64)

    • label: list of scenario names included in the table

  11. Script calc_table_warming_level.ncl

    Required settings for script

    • scenarios: list with scenarios included in the table

    • warming_levels: list of warming levels to include in the table

    • syears: list with start years of time periods (historical then SSPs)

    • eyears: list with end years of the time periods (historical then SSPs)

    • begin_ref_year: start year of historical baseline period (e.g. 1995)

    • end_ref_year: end year of historical baseline period (e.g. 2014)

    • offset: offset between current historical baseline and 1850-1900 period

    • label: list of scenario names included in the table

  12. Script calc_timeseries_mean_spread_runave.ncl

    Required settings for script

    • scenarios: list of scenarios to include

    • syears: list with start years of time periods (historical then SSPs)

    • eyears: list with end years of the time periods (historical then SSPs)

    • begin_ref_year: start year of historical baseline period (e.g. 1986)

    • end_ref_year: end year of historical baseline period (e.g. 2005)

    Optional settings for script

    • runave_window: size of the window used to perform running average (default 11)

    • spread: how many standard deviations to calculate the spread with (default 1)

    • label: list of scenario names included in the legend

    • percent: determines if difference expressed in percent (0, 1, default = 0)

    • model_nr: whether to save number of models used for each scenario

  13. Script calc_timeseries_mean_spread_ssp4.ncl

    Required settings for script

    • scenarios: list of scenarios to include: ssp434 and ssp460

    • syears: list with start years of time periods (historical then SSPs)

    • eyears: list with end years of the time periods (historical then SSPs)

    • begin_ref_year: start year of historical baseline period (e.g. 1986)

    • end_ref_year: end year of historical baseline period (e.g. 2005)

    Optional settings for script

    • runave_window: size of the window used to perform running average (default 11)

    • spread: how many standard deviations to calculate the spread with (default 1)

    • label: list of scenario names included in the legend

    • percent: determines if difference expressed in percent (0, 1, default = 0)

    • model_nr: whether to save number of models used for each scenario

  14. Script calc_timeseries_mean_spread_ssp5.ncl

    Required settings for script

    • scenarios: list of scenarios to include: ssp534-over, ssp585

    • syears: list with start years of time periods (historical then SSPs)

    • eyears: list with end years of the time periods (historical then SSPs)

    • begin_ref_year: start year of historical baseline period (e.g. 1986)

    • end_ref_year: end year of historical baseline period (e.g. 2005)

    Optional settings for script

    • runave_window: size of the window used to perform running average (default 11)

    • spread: how many standard deviations to calculate the spread with (default 1)

    • label: list of scenario names included in the legend

    • percent: determines if difference expressed in percent (0, 1, default = 0)

    • model_nr: whether to save number of models used for each scenario

  15. Script plot_pattern.ncl

    Required settings for script

    • scenarios: list of scenarios

    • periods: list with start years of periods

    • ancestors: variable and diagnostics that calculated field to be plotted

    Optional settings for script

    • projection: map projection, any valid ncl projection, default = Robinson

    • diff_levs: list with explicit levels for all contour plots

    • max_vert: maximum number of plots in vertical

    • max_hori: maximum number of plots in horizontal

    • model_nr: save number of model runs per period and scenario in netcdf to print in plot? (True, False, default = False)

    • colormap: alternative colormap, path to rgb file or ncl name

    • span: span whole colormap? (True, False, default = True)

    • pltname: alternative name for output plot, default is diagnostic + varname + time_avg

    • units: units written next to colorbar, e.g. (~F35~J~F~C)

    • sig: plot stippling for significance? (True, False)

    • not_sig: plot hatching for uncertainty? (True, False)

    • label: label to add in the legend

  16. Script plot_table_changes.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated field to be plotted

    • scenarios: list of scenarios included in the figure

    • syears: list of start years of periods of interest

    • eyears: list of end years of periods of interest

    • label: list of labels of the scenarios

    Optional settings for script

    • title: title of the plot

  17. Script plot_table_warming_level.ncl

    Required settings for script

    • scenarios: list of scenarios included in the figure

    • warming_levels: list of warming levels

    • syears: list of start years of historical and SSPs scenarios

    • eyears: list of end years of historical and SSPs scenarios

    • begin_ref_year: start year of reference period

    • end_ref_year: end year of reference period

    • label: list of labels of the scenarios

    • offset: offset between reference baseline and 1850-1900

  18. Script plot_timeseries_mean_spread_3scenarios.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated field to be plotted

    • scenarios: list of scenarios included in the figure

    • syears: list of start years of historical and SSPs scenarios

    • eyears: list of end years of historical and SSPs scenarios

    • begin_ref_year: start year of reference period

    • end_ref_year: end year of reference period

    • label: list of labels of the scenarios

    Optional settings for script

    • title: specify plot title

    • yaxis: specify y-axis title

    • ymin: minimim value on y-axis, default calculated from data

    • ymax: maximum value on y-axis

    • colormap: alternative colormap, path to rgb file or ncl name

    • model_nr: save number of model runs per period and scenario

    • styleset: color style

    • spread: how many standard deviations to calculate the spread with, default is 1, ipcc tas is 1.64

  19. Script plot_timeseries_mean_spread_constrained_projections.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated field to be plotted

    • scenarios: list of scenarios included in the figure

    • syears: list of start years of historical and SSPs scenarios

    • eyears: list of end years of historical and SSPs scenarios

    • begin_ref_year: start year of reference period

    • end_ref_year: end year of reference period

    • label: list of labels of the scenarios

    • baseline_offset: offset between reference period (baseline) and 1850-1900

    • lower_constrained_projections: list of lower bounds of the constrained projections for the scenarios included in the same order as the scenarios

    • upper_constrained_projections: list of upper bounds of the constrained projections for the scenarios included in the same order as the scenarios

    • mean_constrained_projections: list of means of the constrained projections for the scenarios included in the same order as the scenarios

    Optional settings for script

    • title: specify plot title

    • yaxis: specify y-axis title

    • ymin: minimim value on y-axis, default calculated from data

    • ymax: maximum value on y-axis

    • colormap: alternative colormap, path to rgb file or ncl name

    • model_nr: save number of model runs per period and scenario

    • styleset: color style

    • spread: how many standard deviations to calculate the spread with, default is 1, ipcc tas is 1.64

  20. Script plot_timeseries_mean_spread.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated field to be plotted

    • scenarios: list of scenarios included in the figure

    • syears: list of start years of historical and SSPs scenarios

    • eyears: list of end years of historical and SSPs scenarios

    • begin_ref_year: start year of reference period

    • end_ref_year: end year of reference period

    • label: list of labels of the scenarios

    Optional settings for script

    • title: specify plot title

    • yaxis: specify y-axis title

    • ymin: minimim value on y-axis, default calculated from data

    • ymax: maximum value on y-axis

    • colormap: alternative colormap, path to rgb file or ncl name

    • model_nr: save number of model runs per period and scenario

    • styleset: color style

    • spread: how many standard deviations to calculate the spread with, default is 1, ipcc tas is 1.64

  21. Script plot_timeseries_mean_spread_rightaxis_5scen.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated field to be plotted

    • scenarios: list of scenarios included in the figure

    • syears: list of start years of historical and SSPs scenarios

    • eyears: list of end years of historical and SSPs scenarios

    • begin_ref_year: start year of reference period

    • end_ref_year: end year of reference period

    • rightaxis_offset: offset of the right axis relative to the left axis

    • label: list of labels of the scenarios

    Optional settings for script

    • title: specify plot title

    • yaxis: specify y-axis title

    • ymin: minimim value on y-axis, default calculated from data

    • ymax: maximum value on y-axis

    • colormap: alternative colormap, path to rgb file or ncl name

    • model_nr: save number of model runs per period and scenario

    • styleset: color style

    • spread: how many standard deviations to calculate the spread with, default is 1, ipcc tas is 1.64

  22. Script plot_timeseries_mean_spread_ssp4.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated field to be plotted

    • scenarios: list of scenarios included in the figure

    • syears: list of start years of historical and SSPs scenarios

    • eyears: list of end years of historical and SSPs scenarios

    • begin_ref_year: start year of reference period

    • end_ref_year: end year of reference period

    • label: list of labels of the scenarios

    Optional settings for script

    • title: specify plot title

    • yaxis: specify y-axis title

    • ymin: minimim value on y-axis, default calculated from data

    • ymax: maximum value on y-axis

    • colormap: alternative colormap, path to rgb file or ncl name

    • model_nr: save number of model runs per period and scenario

    • styleset: color style

    • spread: how many standard deviations to calculate the spread with, default is 1, ipcc tas is 1.64

  23. Script plot_timeseries_mean_spread_ssp5.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated field to be plotted

    • scenarios: list of scenarios included in the figure

    • syears: list of start years of historical and SSPs scenarios

    • eyears: list of end years of historical and SSPs scenarios

    • begin_ref_year: start year of reference period

    • end_ref_year: end year of reference period

    • label: list of labels of the scenarios

    Optional settings for script

    • title: specify plot title

    • yaxis: specify y-axis title

    • ymin: minimim value on y-axis, default calculated from data

    • ymax: maximum value on y-axis

    • colormap: alternative colormap, path to rgb file or ncl name

    • model_nr: save number of model runs per period and scenario

    • styleset: color style

    • spread: how many standard deviations to calculate the spread with, default is 1, ipcc tas is 1.64

  24. Script plot_timeseries_across_realization_stddev_runave.ncl

    Required settings for script

    • ancestors: variable and diagnostics that calculated field to be plotted

    • scenarios: list of scenarios included in the figure

    • syears: list of start years of historical and SSPs scenarios

    • eyears: list of end years of historical and SSPs scenarios

    • begin_ref_year: start year of reference period

    • end_ref_year: end year of reference period

    • label: list of labels of the scenarios

    • n_samples: number of samples of size 10 to draw among all the ensembles of sampled_model only

    • sampled_model: name of dataset on which to sample

    Optional settings for script

    • trend: whether the trend is calculated and displayed

    • runave_window: only used if trend is true, size window used for the centered running average

    • title: specify plot title

    • yaxis: specify y-axis title

    • ymin: minimim value on y-axis, default calculated from data

    • ymax: maximum value on y-axis

    • colormap: alternative colormap, path to rgb file or ncl name

Variables

Note: These are the variables tested and used in the original paper.

  • tas (atmos, monthly mean, longitude latitude time)

  • pr (atmos, monthly mean, longitude latitude time)

However, the code is flexible and in theory other variables of the same kind can be used.

References

  • Tebaldi, C., Debeire, K., Eyring, V., Fischer, E., Fyfe, J., Friedlingstein, P., Knutti, R., Lowe, J., O’Neill, B., Sanderson, B., van Vuuren, D., Riahi, K., Meinshausen, M., Nicholls, Z., Hurtt, G., Kriegler, E., Lamarque, J.-F., Meehl, G., Moss, R., Bauer, S. E., Boucher, O., Brovkin, V., Golaz, J.-C., Gualdi, S., Guo, H., John, J. G., Kharin, S., Koshiro, T., Ma, L., Olivié, D., Panickal, S., Qiao, F., Rosenbloom, N., Schupfner, M., Seferian, R., Song, Z., Steger, C., Sellar, A., Swart, N., Tachiiri, K., Tatebe, H., Voldoire, A., Volodin, E., Wyser, K., Xin, X., Xinyao, R., Yang, S., Yu, Y., and Ziehn, T.: Climate model projections from the Scenario Model Intercomparison Project (ScenarioMIP) of CMIP6, Earth Syst. Dynam., 12, 253-293, https://doi.org/10.5194/esd-12-253-2021

Example plots

../_images/tas_timeseries.png

Fig. 116 Global average temperature time series (11-year running averages) of changes from current baseline (1995–2014, left axis) and pre-industrial baseline (1850–1900, right axis, obtained by adding a 0.84 ◦C offset) for SSP1-1.9, SSP1-2.6, SSP2-4.5, SSP3-7.0 and SSP5-8.5.

../_images/pr_pattern.png

Fig. 117 Patterns of temperature (a) and percent precipitation change (b) normalized by global average temperature change (averaged across CMIP6 models and all Tier 1 plus SSP1-1.9 scenarios).

../_images/warming_level_table.png

Fig. 118 Times (best estimate and range – in square brackets – based on the 5 %–95 % range of the ensemble after smoothing the trajectories by 11-year running means) at which various warming levels (defined as relative to 1850–1900) are reached according to simulations following, from left to right, SSP1-1.9, SSP1-2.6, SSP2-4.5, SSP3-7.0 and SSP5-8.5. Crossing of these levels is defined by using anomalies with respect to 1995–2014 for the model ensembles and adding the offset of 0.84  to derive warming from pre-industrial values. We use a common subset of 31 models for the Tier 1 scenarios and all available models (13) for SSP1-1.9, while Table A7 shows the result of using all available models under each scenario. The number of models available under each scenario and the number of models reaching a given warming level are shown in parentheses. However, the estimates are based on the ensemble means and ranges computed from all the models considered (13 or 31 in this case), not just from the models that reach a given level. An estimate marked as “NA” is to be interpreted as “not reaching that warming level by 2100”. In cases where the ensemble average remains below the warming level for the whole century, it is possible for the central estimate to be NA, while the earlier time of the confidence interval is not, since it is determined by the warmer end of the ensemble range.