diff --git a/doc/sphinx/source/recipes/figures/ipccwg1ar6ch3/zonal_westerly_winds.png b/doc/sphinx/source/recipes/figures/ipccwg1ar6ch3/zonal_westerly_winds.png new file mode 100644 index 0000000000..d70723d69f Binary files /dev/null and b/doc/sphinx/source/recipes/figures/ipccwg1ar6ch3/zonal_westerly_winds.png differ diff --git a/doc/sphinx/source/recipes/recipe_ipccwg1ar6ch3.rst b/doc/sphinx/source/recipes/recipe_ipccwg1ar6ch3.rst index 6e2856e7cd..422dbf1fd0 100644 --- a/doc/sphinx/source/recipes/recipe_ipccwg1ar6ch3.rst +++ b/doc/sphinx/source/recipes/recipe_ipccwg1ar6ch3.rst @@ -30,6 +30,8 @@ following figures from `Eyring et al. (2021)`_ can currently be reproduced: * Figure 3.15: Precipitation Anomaly + * Figure 3.19: Speed-Up Of Zonal Mean Wind + * Figure 3.42: Relative Model Performance .. _`Eyring et al., 2021`: https://www.ipcc.ch/report/ar6/wg1/chapter/chapter-3/ @@ -42,6 +44,7 @@ Available recipes and diagnostics Recipes are stored in esmvaltool/recipes/ipccwg1ar6ch3/ * recipe_ipccwg1ar6ch3_atmosphere.yml + * recipe_ipccwg1ar6ch3_fig_3_19.yml * recipe_ipccwg1ar6ch3_fig_3_42_a.yml * recipe_ipccwg1ar6ch3_fig_3_42_b.yml @@ -70,6 +73,10 @@ Diagnostics are stored in esmvaltool/diag_scripts/ * ipcc_ar6/precip_anom.ncl + Fig. 3.19: + + * ipcc_ar6/zonal_westerly_winds.ncl + Fig. 3.42: * perfmetrics/main.ncl @@ -109,6 +116,7 @@ User settings in recipe * variable "sos": diag_scripts/shared/plot/rgb/ipcc-ar6_misc_seq_1.rgb, diag_scripts/shared/plot/rgb/ipcc-ar6_misc_div.rgb + #. Script ipcc_ar6/tas_anom.ncl *Required settings for script* @@ -139,6 +147,7 @@ User settings in recipe * e.g. diag_scripts/shared/plot/styles/cmip5.style + #. Script ipcc_ar6/tsline_collect.ncl *Optional settings for script* @@ -159,6 +168,7 @@ User settings in recipe * reference_dataset: reference dataset; REQUIRED when calculating anomalies + #. Script ipcc_ar6/zonal_st_dev.ncl *Required settings for script* @@ -177,6 +187,7 @@ User settings in recipe * reference_dataset: reference dataset; REQUIRED when calculating anomalies + #. Script ipcc_ar6/precip_anom.ncl *Required settings for script* @@ -198,10 +209,33 @@ User settings in recipe * y_min: set min of y-axis * y_max: set max of y-axis + + +#. Script ipcc_ar6/zonal_westerly_winds.ncl + + *Optional settings for variables* + + * reference_dataset: reference dataset; REQUIRED when calculating + anomalies + + *Optional settings for script* + + * e13fig12_start_year: year when the climatology calculation starts + (default: start_year of var) + * e13fig12_end_year: year when the climatology calculation ends + (default: end_year of var) + * e13fig12_multimean: multimodel mean (default: False) + * e13fig12_exp_MMM: name of the experiments for the MMM + (required if @e13fig12_multimean = True) + * e13fig12_season: season (default: ANN) + + + #. Script perfmetrics/perfmetrics_main.ncl See :ref:`here`. + #. Script perfmetrics/perfmetrics_collect.ncl See :ref:`here`. @@ -398,6 +432,18 @@ Example plots mean precipitation rate (mm day–1) of GHCN version 2 for the years 1950–2014 over land areas used to compute the plots. +.. figure:: /recipes/figures/ipccwg1ar6ch3/zonal_westerly_winds.png + :align: center + + Figure 3.19: Long-term mean (thin black contours) and linear trend (colour) + of zonal mean December-January-February zonal winds from 1985 to 2014 + in the Southern Hemisphere. The figure shows (a) ERA5 and (b) the CMIP6 + multi-model mean (58 CMIP6 models). The solid contours show positive + (westerly) and zero long-term mean zonal wind, and the dashed contours show + negative (easterly) long-term mean zonal wind. Only one ensemble member per + model is included. Figure is modified from Eyring et al. (2013), their + Figure 12. + .. figure:: /recipes/figures/ipccwg1ar6ch3/fig_3_42_a.png :align: center diff --git a/esmvaltool/diag_scripts/ipcc_ar6/zonal_westerly_winds.ncl b/esmvaltool/diag_scripts/ipcc_ar6/zonal_westerly_winds.ncl new file mode 100644 index 0000000000..7219db221e --- /dev/null +++ b/esmvaltool/diag_scripts/ipcc_ar6/zonal_westerly_winds.ncl @@ -0,0 +1,392 @@ +; Based on EYRING13JGR_FIG12 +; Author: Irene Cionni (ENEA, Italy), Veronika Eyring (DLR, Germany), +; Lisa Bock (DLR, Germany), Birgit Hassler (DLR, Germany) +; ############################################################################# +; Description +; Calculation of the long-term mean and trend of the zonal wind +; +; +; Optional diag_script_info attributes (diagnostic specific) +; @e13fig12_start_year: year when the climatology calculation starts +; @e13fig12_end_year: year when the climatology calculation ends +; @e13fig12_multimean: multimodel mean +; @e13fig12_season: season +; @e13fig12_exp_MMM: name of the experiments dor the MMM +; Caveats +; +; Modification history +; ############################################################################# +load "$diag_scripts/../interface_scripts/interface.ncl" + +load "$diag_scripts/shared/statistics.ncl" +load "$diag_scripts/shared/plot/aux_plotting.ncl" +load "$diag_scripts/shared/plot/style.ncl" + +begin + + enter_msg(DIAG_SCRIPT, "") + var0 = variable_info[0]@short_name + info0 = select_metadata_by_name(input_file_info, var0) + dim_MOD1 = ListCount(info0) + names = metadata_att_as_array(info0, "dataset") + projects = metadata_att_as_array(info0, "project") + exps = metadata_att_as_array(info0, "exp") + ensembles = metadata_att_as_array(info0, "ensemble") + y1 = (/ metadata_att_as_array(info0, "start_year")/) + y2 = (/ metadata_att_as_array(info0, "end_year") /) + work_dir = config_user_info@work_dir + "/" + ; Create work dir + + exps_name = where(ismissing(exps), "OBS", exps) + system("mkdir -p " + work_dir) + + if (isatt(variable_info[0], "reference_dataset")) then + refname = variable_info[0]@reference_dataset + do imod = 0, dimsizes(names) - 1 + if (names(imod) .eq. refname) then + iref = imod + end if + end do + end if + + if(isatt(variable_info, "units")) then + UNITS = variable_info@units + else + UNITS = "m s~S~-1~N~" + end if + + if(isatt(variable_info, "long_name")) then + LONG_NAME = variable_info@long_name + else + LONG_NAME = var0 + end if + + ; Plot file type + file_type = config_user_info@output_file_type + if (ismissing(file_type)) then + file_type = "ps" + end if + + log_info("++++++++++++++++++++++++++++++++++++++++++") + log_info(DIAG_SCRIPT + " (var: " + var0 + ")") + log_info("++++++++++++++++++++++++++++++++++++++++++") + + ; Set default values for optional diag_script_info attributes + + set_default_att(diag_script_info, "e13fig12_multimean", False) + set_default_att(diag_script_info, "e13fig12_start_year", max(y1)) + set_default_att(diag_script_info, "e13fig12_end_year", min(y2)) + set_default_att(diag_script_info, "e13fig12_season", "ANN") + flag_mod = where(projects.ne."OBS6" .and. projects.ne."OBS" .and.\ + projects.ne."obs4mips", 1, 0) + + index_mod = ind(flag_mod.gt.0) + index_obs = ind(flag_mod.eq.0) + dim_MOD = dimsizes(index_mod) + dim_OBS = 0 + + if (.not.all(ismissing(index_obs))) then + dim_OBS = dimsizes(index_obs) + list_obs_mod = names(index_obs) + end if + + multimean = diag_script_info@e13fig12_multimean + season = diag_script_info@e13fig12_season + if (multimean) then + exp_MMM = diag_script_info@e13fig12_exp_MMM + flag_exp = new((/dimsizes(projects), dimsizes(exp_MMM)/), "integer") + do id = 0, dimsizes(exp_MMM) - 1 + flag_exp(:, id) = where(projects.eq.exp_MMM(id), 0, 1) + end do + dimTot = dim_MOD + dim_OBS + 1 + if (dimsizes(exp_MMM).gt.1) then + dimTot = dim_MOD + dim_OBS + dimsizes(exp_MMM) + end if + else + dimTot = dim_MOD + dim_OBS + end if + + ; make sure path for (mandatory) netcdf output exists + year_start = toint(diag_script_info@e13fig12_start_year) + year_end = toint(diag_script_info@e13fig12_end_year) + +end + +begin + + aux_title_info = "" + ; wks = get_wks("dummy_for_wks", DIAG_SCRIPT, "eyring13f12_" + var0 +\ + ; "_" + plotMod) + A0 = read_data(info0[iref]) + lat0 = A0&lat + plev0 = A0&plev + delete(A0) + + tmpData = new((/dim_MOD + dim_OBS, dimsizes(plev0), dimsizes(lat0), 3/),\ + "double") + tmpData!0 = "line" + tmpData!1 = "plev" + tmpData!2 = "lat" + tmpData!3 = "stat" + + XXdata = new((/dimTot, dimsizes(plev0), dimsizes(lat0), 3/), "double") + XXdata!0 = "line" + XXdata!1 = "plev" + XXdata!2 = "lat" + XXdata!3 = "stat" + + XXref = new((/dimsizes(plev0), dimsizes(lat0), 3/), "double") + XXref!0 = "plev" + XXref!1 = "lat" + XXref!2 = "stat" + + years1 = new(dimTot, "integer") + years2 = new(dimTot, "integer") + plot = new(dimTot, "graphic") + plot_num = integertochar(ispan(97, 122, 1)) + + plotMod = new(dimTot, typeof(names)) + + ik = 0 + +; ****************************************************************** + do imod = 0, dim_MOD1 - 1 + years1(imod) = y1(imod) + years2(imod) = y2(imod) + years = tofloat(ispan(years1(imod), years2(imod), 1)) + plotMod(imod) = names(imod) + ; Extract data + A0 = read_data(info0[imod]) + if (season.eq."ANN") then + A1 = time_operations(A0, year_start, year_end, "average",\ + "annualclim", True) + A2 = time_operations(A0, -1, -1, "extract", "yearly", True) + A2trend = regCoef(years, A2(plev|:, lat|:, time|:)) + tval_A2 = A2trend@tval + b_A2 = 0.5 + df_A2 = A2trend@nptxy - 2 + prob_A2 = (/1 - betainc(df_A2 / (df_A2 + tval_A2 ^ 2),\ + df_A2 / 2.0, b_A2)/) + else + A1 = time_operations(A0, -1, -1, "average", season, True) + A2 = month_to_season(A0, season) + A2trend = regCoef(years, A2(plev|:, lat|:, time|:)) + tval_A2 = A2trend@tval + b_A2 = tval_A2 + b_A2 = (/0.5/) + df_A2 = A2trend@nptxy - 2 + prob_A2 = A2(0, :, :) + prob_A2 = onedtond((/1 - betainc(df_A2 / (df_A2 + tval_A2 ^ 2), \ + df_A2 / 2.0, b_A2)/), dimsizes(A2(0, :, :))) + delete(df_A2) + delete(tval_A2) + delete(b_A2) + end if + delete(A0) + tmpData(imod, :, :, 0) = (/A1/) + tmpData(imod, :, :, 1) = (/A2trend * 10/) + tmpData(imod, :, :, 2) = (/prob_A2/) + end do + XXdata(:dim_MOD1 - 1, :, :, :) = (/tmpData/) + + XXref = (/tmpData(iref, :, :, :)/) + + XXdata!0 = "line" + XXdata!1 = "plev" + XXdata!2 = "lat" + XXdata!3 = "stat" + XXdata&lat = lat0 + plev0@long_name = "Pressure [hPa]" + XXdata&plev = plev0 + + ; ***************************************************** + if (multimean) then + do id = 0, dimsizes(exp_MMM) - 1 + flag_exp(:, id) = where(projects.eq.exp_MMM(id), 0, 1) + index_exp = ind(flag_exp(:, id).gt.0) + XXdata(dimTot - 1, :, :, :) = \ + (/dim_avg_n(XXdata(index_exp, :, :, :), 0)/) + ; plotMod(dimTot - 1) = "MMM_" + exps_name(id) + plotMod(dimTot - 1) = projects(flag_mod(0)) + years1(dimTot - 1) = max(y1) + years2(dimTot - 1) = min(y2) + delete(index_exp) + end do + end if + + X_MMM_std = (/dim_stddev_n(XXdata(index_mod, :, :, :), 0)/) + plot_d = new(2, "graphic") + + ; *************************plotting****************************************** + wks = get_wks("dummy_for_wks", DIAG_SCRIPT, "zonal_westerly_winds") + res = True ; plot mods desired + res@gsnDraw = False + res@gsnFrame = False + + res@lbLabelBarOn = False + + pal = read_colormap_file("$diag_scripts/shared/plot/rgb/" \ + + "ipcc-ar6_wind_div.rgb") + res@cnFillPalette = pal + + res@tiYAxisFont = "helvetica" + res@tiMainFont = "helvetica" + res@tmXBLabelFont = "helvetica" + res@tmYLLabelFont = "helvetica" + res@lbLabelFont = "helvetica" + res@cnLevelSelectionMode = "ExplicitLevels" + res@cnLevels = (/-5., -2., -1., -0.5, -0.2, -0.1, 0., 0.1, 0.2, 0.5, 1., \ + 2., 5./) + res@tmXBMode = "Explicit" + res@tmXBValues = (/-90., -60., -30., 0./) + res@tmXBLabels = (/"90~F34~0~F~S", "60~F34~0~F~S", "30~F34~0~F~S", \ + "0~F34~0~F~"/) + res@trXMinF = -90. + res@trXMaxF = 0. + res@tmYRMode = "Automatic" + res@tmYRLabelsOn = False + res@tmYLMode = "Explicit" + res@tmYLValues = (/1000., 500., 100., 50., 10., 5., 1./) + res@tmYLLabels = (/"1000", "500", "100", "50", "10", "5", "1"/) + res@trYMinF = 1. + res@trYMaxF = 1000. + res@cnLineLabelsOn = False ; turn off line labels + res@cnFillOn = True ; turn on color fill + res@cnLinesOn = False + res@cnInfoLabelOn = False ; turn off contour label + res@gsnSpreadColors = True ; use full range of colors + res@lbLabelAutoStride = True ; optimal labels + res@gsnLeftString = "" + + res@gsnLeftStringFontHeightF = 0.017 + res@gsnRightStringFontHeightF = 0.017 + res@tmXBMode = "Explicit" ; explicit labels + + res@gsnRightString = "" + + res@tiMainString = plotMod(iref) ; title + + plot_d(0) = gsn_csm_pres_hgt(wks, XXdata(iref, :, :, 1), res) + + res@tiMainString = plotMod(dimTot - 1) ; title + res@tiYAxisString = "" + + plot_d(1) = gsn_csm_pres_hgt(wks, XXdata(dimTot - 1, :, :, 1), res) + + res2 = True + res2@gsnDraw = False + res2@gsnFrame = False + res2@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels + res2@cnMinLevelValF = -20. ; set min contour level + res2@cnMaxLevelValF = 40. ; set max contour level + res2@cnLevelSpacingF = 10. ; set contour spacing + res2@cnLineLabelsOn = True + res2@gsnContourZeroLineThicknessF = 2. ; doubles thickness of zero contour + res2@gsnContourNegLineDashPattern = 1 + res2@cnFillOn = False + res2@cnInfoLabelOn = False + res2@cnLinesOn = True + res2@cnLineColor = "Black" ; color of second contours + res2@cnLineThicknessF = 2. ; line thickness + res2@tmYRMode = "Automatic" + res2@tmXBMode = "Explicit" + res2@tmXBValues = (/-90., -60., -30., 0./) + res2@tmYLMode = "Explicit" + res2@tmYLValues = (/1000., 500., 100., 50., 10., 5., 1./) + res2@lbTitleFontHeightF = 0.01 ; default: 0.025 + res2@lbTitleOffsetF = -0.25 ; default: 0.03 (negative values move it down) + res2@lbTopMarginF = 0.1 ; default: 0.05 (negative values move it up) + res2@lbTitleJust = "BottomCenter" ; default: CenterCenter + res2@lbLabelFontHeightF = 0.025 + ; model specific ressources + res2@tiMainFontHeightF = 0.03 + + res2@tiMainString = plotMod(iref) + plotv_0 = gsn_csm_pres_hgt(wks, XXdata(iref, :, :, 0), res2) + + res2@tiMainString = plotMod(dimTot - 1) + plotv_1 = gsn_csm_pres_hgt(wks, XXdata(dimTot - 1, :, :, 0), res2) + + delete(res) + res3 = True + res3@gsnDraw = False + res3@gsnFrame = False + res3@cnLevelSelectionMode = "ManualLevels" ; set manual contour levels + res3@cnMinLevelValF = 0. ; set min contour level + res3@cnMaxLevelValF = 1. ; set max contour level + res3@cnLevelSpacingF = 0.005 ; set contour spacing + res3@cnLineLabelsOn = False + res3@cnInfoLabelOn = False + res3@cnFillOn = False + res3@cnLinesOn = False + res3@tmYRMode = "Automatic" + + plotz_0 = gsn_csm_pres_hgt(wks, XXdata(iref, :, :, 2), res3) + + plotz_1 = gsn_csm_pres_hgt(wks, XXdata(dimTot - 1, :, :, 2), res3) + + opt = True + opt@gsnShadeFillType = "pattern" ; pattern fill + opt@gsnShadeHigh = 17 + plotz_0 = gsn_contour_shade(plotz_0, 1., 0.95, opt) + plotz_1 = gsn_contour_shade(plotz_1, 1., 0.95, opt) + + overlay(plot_d(0), plotv_0) + + overlay(plot_d(1), plotv_1) + + ; Call legend-plotting routine + Pres = True + Pres@gsnFrame = False + Pres@gsnPanelBottom = 0.2 + Pres@amJust = "TopLeft" + + Pres@gsnPanelMainString = "Speed-up of zonal-mean wind (" + years1(iref) \ + + "-" + years2(iref) + ")" + Pres@gsnPanelXWhiteSpacePercent = 0.2 + + Pres@gsnPanelFigureStrings = (/"a)", "b)"/) + Pres@gsnPanelFigureStringsPerimOn = False + Pres@gsnPanelFigureStringsBackgroundFillColor = "transparent" + Pres@gsnPanelFigureStringsJust = "TopLeft" + Pres@gsnPanelFigureStringsFontHeightF = 0.016 + + Pres@gsnPanelLabelBar = True ; add common colorbar + Pres@lbLabelFontHeightF = 0.007 ; make labels smaller + Pres@lbBoxEndCapStyle = "TriangleBothEnds" + Pres@lbBoxLineColor = "gray10" + Pres@lbTitleString = "zonal wind (" + UNITS + "/decade)" + Pres@lbTitlePosition = "Bottom" + Pres@lbLabelFontHeightF = 0.012 + Pres@pmLabelBarWidthF = 0.7 + Pres@lbTitleFontHeightF = 0.016 + + gsn_panel(wks, plot_d, (/1, 2/), Pres) + + frame(wks) + + ; *******************OUTPUT FILE****************************************** + nc_filename = work_dir + "eyring13f12_" + var0 + ".nc" + Xdata = XXdata(line|:, plev|:, lat|:, stat|:) + Xdata@var = var0 + Xdata@diag_script = "eyring13f12" + Xdata&stat = (/"mean", "trend", "prob"/) + Xdata&line = plotMod + Xdata&plev = plev0 + Xdata&lat = lat0 + nc_outfile = ncdf_write(Xdata, nc_filename) + + ; Call provenance logger + plotpath = config_user_info@plot_dir + "zonal_westerly_winds" + log_provenance(nc_filename, \ + plotpath + "." + file_type, \ + "Long-term mean and trend of " + var0, \ + (/"mean", "trend"/), \ + (/"global"/), \ + "pro", \ + (/"bock_lisa", "cionni_irene", "eyring_veronika", \ + "hassler_birgit"/), \ + (/"eyring13jgr"/), \ + metadata_att_as_array(info0, "filename")) + +end diff --git a/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_wind_div.rgb b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_wind_div.rgb new file mode 100644 index 0000000000..ee83bf24ac --- /dev/null +++ b/esmvaltool/diag_scripts/shared/plot/rgb/ipcc-ar6_wind_div.rgb @@ -0,0 +1,260 @@ +ncolors=256 + +#R G B +43 25 76 +43 27 77 +43 28 79 +43 29 80 +43 31 82 +43 32 83 +43 34 84 +43 35 86 +43 37 87 +43 38 89 +43 40 90 +43 41 92 +42 42 93 +42 44 94 +42 45 96 +42 47 97 +42 48 99 +42 50 100 +42 51 102 +42 53 103 +42 54 105 +41 55 106 +41 57 108 +41 58 109 +41 60 111 +41 61 112 +41 63 114 +41 64 115 +41 66 117 +41 68 118 +41 69 120 +42 71 121 +42 72 123 +42 74 124 +43 75 126 +43 77 127 +43 79 129 +44 80 130 +45 82 131 +46 84 133 +46 85 134 +47 87 136 +48 89 137 +49 90 139 +51 92 140 +52 94 141 +53 95 143 +55 97 144 +56 99 146 +58 100 147 +59 102 148 +61 104 149 +63 105 151 +64 107 152 +66 109 153 +68 111 155 +70 112 156 +72 114 157 +74 116 158 +76 117 159 +78 119 161 +80 121 162 +82 122 163 +84 124 164 +86 126 165 +88 127 167 +90 129 168 +92 131 169 +94 132 170 +97 134 171 +99 136 172 +101 137 174 +103 139 175 +105 141 176 +107 142 177 +109 144 178 +112 146 179 +114 147 181 +116 149 182 +118 151 183 +120 153 184 +123 154 185 +125 156 186 +127 158 188 +129 159 189 +131 161 190 +134 163 191 +136 164 192 +138 166 193 +140 168 195 +143 170 196 +145 171 197 +147 173 198 +149 175 199 +152 176 201 +154 178 202 +156 180 203 +158 182 204 +161 183 205 +163 185 206 +165 187 208 +167 188 209 +170 190 210 +172 192 211 +174 194 212 +177 195 214 +179 197 215 +181 199 216 +183 201 217 +186 202 218 +188 204 219 +190 206 220 +192 207 222 +195 209 223 +197 211 224 +199 213 225 +201 214 225 +203 216 226 +205 217 227 +207 219 228 +209 221 228 +210 222 229 +212 223 229 +214 225 230 +215 226 230 +216 227 230 +217 228 229 +218 229 229 +218 230 228 +218 230 228 +218 231 227 +218 231 226 +218 231 224 +217 231 223 +216 231 221 +215 230 220 +214 230 218 +213 229 216 +211 228 215 +210 228 213 +208 227 211 +206 226 209 +204 225 207 +202 224 205 +201 223 203 +199 222 201 +197 221 199 +195 219 197 +193 218 195 +191 217 193 +189 216 191 +187 215 189 +185 214 187 +183 212 185 +181 211 183 +179 210 181 +177 209 179 +174 208 177 +172 207 175 +170 205 173 +168 204 171 +166 203 170 +164 202 168 +162 201 166 +160 199 164 +158 198 162 +156 197 160 +154 196 158 +152 195 156 +150 193 154 +148 192 152 +146 191 150 +144 190 148 +142 189 146 +140 188 144 +138 186 142 +136 185 140 +134 184 138 +132 183 137 +130 182 135 +128 181 133 +126 179 131 +124 178 129 +122 177 127 +120 176 125 +118 175 123 +116 173 121 +114 172 119 +112 171 117 +111 170 115 +109 169 113 +107 167 111 +105 166 109 +103 165 107 +101 164 105 +99 162 103 +97 161 101 +95 160 99 +93 158 97 +91 157 95 +89 155 93 +88 154 91 +86 153 89 +84 151 87 +82 150 84 +81 148 82 +79 146 80 +78 145 78 +76 143 76 +75 141 73 +73 140 71 +72 138 69 +71 136 67 +70 135 65 +69 133 62 +68 131 60 +68 129 58 +67 128 56 +66 126 54 +66 124 52 +65 123 51 +65 121 49 +65 119 47 +64 118 45 +64 116 44 +64 115 42 +64 113 40 +64 112 39 +64 110 37 +64 109 36 +64 107 34 +64 106 33 +64 105 32 +64 103 30 +64 102 29 +64 101 28 +64 99 26 +65 98 25 +65 97 24 +65 95 22 +65 94 21 +65 93 20 +65 92 18 +65 90 17 +65 89 16 +65 88 15 +65 87 13 +66 86 12 +66 84 11 +66 83 9 +66 82 8 +66 81 7 +66 80 5 +66 78 4 +66 77 3 +66 76 2 + diff --git a/esmvaltool/recipes/ipccwg1ar6ch3/recipe_ipccwg1ar6ch3_fig_3_19.yml b/esmvaltool/recipes/ipccwg1ar6ch3/recipe_ipccwg1ar6ch3_fig_3_19.yml new file mode 100644 index 0000000000..582e62e7e9 --- /dev/null +++ b/esmvaltool/recipes/ipccwg1ar6ch3/recipe_ipccwg1ar6ch3_fig_3_19.yml @@ -0,0 +1,136 @@ +# ESMValTool +# recipe_ipccwg1ar6ch3_fig_3_19.yml +--- +documentation: + + title: IPCC AR6 WG1 Chapter 3 Fig. 3.19 + + description: | + Producing Fig. 3.19 in the IPCC Working Group I Contribution to the Sixth + Assessment Report: Chapter 3 + + authors: + - bock_lisa + - eyring_veronika + + maintainer: + - bock_lisa + + projects: + - ipcc_ar6 + + references: + - eyring21ipcc + + +datasets: + # CMIP6 + - {dataset: ACCESS-CM2, grid: gn, institute: CSIRO-ARCCSS} + - {dataset: ACCESS-ESM1-5, grid: gn, institute: CSIRO} + - {dataset: AWI-CM-1-1-MR, grid: gn} + - {dataset: AWI-ESM-1-1-LR, grid: gn} + - {dataset: BCC-CSM2-MR, grid: gn} + - {dataset: BCC-ESM1, grid: gn} + - {dataset: CAMS-CSM1-0, grid: gn} + - {dataset: CanESM5, grid: gn} + - {dataset: CanESM5-CanOE, ensemble: r1i1p2f1, grid: gn} + - {dataset: CAS-ESM2-0, institute: CAS, grid: gn} + - {dataset: CESM2, grid: gn} + - {dataset: CESM2-FV2, grid: gn, institute: NCAR} + - {dataset: CESM2-WACCM, grid: gn, institute: NCAR} + - {dataset: CESM2-WACCM-FV2, grid: gn, institute: NCAR} + - {dataset: CIESM} + - {dataset: CMCC-CM2-HR4, grid: gn} + - {dataset: CMCC-CM2-SR5, grid: gn} + - {dataset: CMCC-ESM2, ensemble: r1i1p1f1, grid: gn} + - {dataset: CNRM-CM6-1, ensemble: r1i1p1f2} + - {dataset: CNRM-CM6-1-HR, ensemble: r1i1p1f2} + - {dataset: CNRM-ESM2-1, ensemble: r1i1p1f2} + - {dataset: E3SM-1-0} + - {dataset: E3SM-1-1-ECA, institute: E3SM-Project} + - {dataset: EC-Earth3} + - {dataset: EC-Earth3-AerChem} + - {dataset: EC-Earth3-CC} + - {dataset: EC-Earth3-Veg} + - {dataset: EC-Earth3-Veg-LR} + - {dataset: FGOALS-f3-L} + - {dataset: FGOALS-g3, grid: gn} + - {dataset: GFDL-CM4, grid: gr1} + - {dataset: GFDL-ESM4, grid: gr1} + - {dataset: GISS-E2-1-G, grid: gn} + - {dataset: GISS-E2-1-G-CC, grid: gn} + - {dataset: GISS-E2-1-H, grid: gn} + - {dataset: HadGEM3-GC31-LL, ensemble: r1i1p1f3, grid: gn} + - {dataset: HadGEM3-GC31-MM, ensemble: r1i1p1f3, grid: gn} + - {dataset: IITM-ESM, grid: gn} + - {dataset: INM-CM4-8, grid: gr1} + - {dataset: INM-CM5-0, grid: gr1} + - {dataset: IPSL-CM5A2-INCA} + - {dataset: IPSL-CM6A-LR} + - {dataset: KACE-1-0-G} + - {dataset: KIOST-ESM, grid: gr1} + - {dataset: MCM-UA-1-0, grid: gn} + - {dataset: MIROC6, grid: gn} + - {dataset: MIROC-ES2L, ensemble: r1i1p1f2, grid: gn} + - {dataset: MPI-ESM-1-2-HAM, grid: gn} + - {dataset: MPI-ESM1-2-HR, grid: gn} + - {dataset: MPI-ESM1-2-LR, grid: gn} + - {dataset: MRI-ESM2-0, grid: gn} + - {dataset: NESM3, grid: gn} + - {dataset: NorCPM1, grid: gn, institute: NCC} + - {dataset: NorESM2-LM, grid: gn, institute: NCC} + - {dataset: NorESM2-MM, grid: gn, institute: NCC} + - {dataset: SAM0-UNICON, grid: gn} + - {dataset: TaiESM1, grid: gn} + - {dataset: UKESM1-0-LL, ensemble: r1i1p1f2, grid: gn} + + +preprocessors: + zonal: + regrid: + target_grid: 2x2 + scheme: linear + extract_levels: + scheme: linear + levels: reference_dataset + zonal_statistics: + operator: mean + mask_fillvalues: + threshold_fraction: 0.95 + + +diagnostics: + + # ********************************************************************** + # IPCC WGI AR6, chap. 3 + # Sect. 3.3 + # Fig. 3.19 + # ********************************************************************** + # Longterm mean and trend of the zonal wind + # ********************************************************************** + + fig_3_19: + description: Longterm mean and trend zonal wind + themes: + - atmDyn + realms: + - atmos + variables: + ua: + preprocessor: zonal + reference_dataset: ERA5 + project: CMIP6 + mip: Amon + exp: historical + grid: gr + ensemble: r1i1p1f1 + start_year: 1985 + end_year: 2014 + additional_datasets: + - {dataset: ERA5, project: native6, type: reanaly, version: 'v1', tier: 3} + scripts: + clim: + script: ipcc_ar6/zonal_westerly_winds.ncl + e13fig12_exp_MMM: "historical" + e13fig12_season: "DJF" + e13fig12_multimean: True diff --git a/esmvaltool/references/eyring21ipcc.bibtex b/esmvaltool/references/eyring21ipcc.bibtex index af09d66837..fd73260004 100644 --- a/esmvaltool/references/eyring21ipcc.bibtex +++ b/esmvaltool/references/eyring21ipcc.bibtex @@ -1,6 +1,6 @@ @inbook{eyring21ipcc, - author={Eyring, V. and N.P. Gillett and K.M. Achuta Rao and R. Barimalala and M. Barreiro Parrillo and N. Bellouin and C. Cassou and P.J. Durack and Y. Kosaka and S. McGregor and S. Min and O. Morgenstern and Y. Sun}, - editor={Masson-Delmotte, V. and P. Zhai and A. Pirani and S.L. Connors and C. Péan and S. Berger and N. Caud and Y. Chen and L. Goldfarb and M.I. Gomis and M. Huang and K. Leitzell and E. Lonnoy and J.B.R. Matthews and T.K. Maycock and T. Waterfield and O. Yelekçi and R. Yu and B. Zhou}, + author={V. Eyring and N.P. Gillett and K.M. Achuta Rao and R. Barimalala and M. Barreiro Parrillo and N. Bellouin and C. Cassou and P.J. Durack and Y. Kosaka and S. McGregor and S. Min and O. Morgenstern and Y. Sun}, + editor={V. Masson-Delmotte and P. Zhai and A. Pirani and S.L. Connors and C. Pean and S. Berger and N. Caud and Y. Chen and L. Goldfarb and M.I. Gomis and M. Huang and K. Leitzell and E. Lonnoy and J.B.R. Matthews and T.K. Maycock and T. Waterfield and O. Yelekci and R. Yu and B. Zhou}, title={Human Influence on the Climate System}, booktitle={Climate Change 2021: The Physical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change}, year={2021},