# ESMValTool # recipe_perfmetrics_CMIP5.yml --- documentation: description: | Recipe for plotting the performance metrics for the CMIP5 datasets, including the standard ECVs as in Gleckler et al., and some additional variables (like ozone, sea-ice, aerosol...) authors: - frank_franziska - righi_mattia - eyring_veronika maintainer: - righi_mattia references: - gleckler08jgr projects: - esmval - embrace - crescendo - c3s-magic - cmug preprocessors: z0: extract_levels: levels: 0. scheme: linear regrid: target_grid: reference_dataset scheme: linear mask_fillvalues: threshold_fraction: 0.95 multi_model_statistics: span: overlap statistics: [mean] exclude: reference_dataset convert_units: units: degC z500: extract_levels: levels: 500. scheme: linear regrid: target_grid: reference_dataset scheme: linear mask_fillvalues: threshold_fraction: 0.95 multi_model_statistics: span: overlap statistics: [mean] exclude: reference_dataset convert_units: units: degC z1000: extract_levels: levels: 1000. scheme: linear regrid: target_grid: reference_dataset scheme: linear mask_fillvalues: threshold_fraction: 0.95 multi_model_statistics: span: overlap statistics: [mean] exclude: reference_dataset convert_units: units: degC z2000: extract_levels: levels: 2000. scheme: linear regrid: target_grid: reference_dataset scheme: linear mask_fillvalues: threshold_fraction: 0.95 multi_model_statistics: span: overlap statistics: [mean] exclude: reference_dataset convert_units: units: degC ppNOLEV1: regrid: target_grid: reference_dataset scheme: linear mask_fillvalues: threshold_fraction: 0.95 multi_model_statistics: span: overlap statistics: [mean, median] exclude: [reference_dataset] ppNOLEV2: regrid: target_grid: reference_dataset scheme: linear mask_fillvalues: threshold_fraction: 0.95 multi_model_statistics: span: overlap statistics: [mean, median] #exclude: [reference_dataset, alternative_dataset] exclude: reference_dataset convert_units: units: degC diagnostics: ### The diagnostics are ordered by runtime, to optimize tasks execution ##### ### SST: SEA-SURFACE TEMPERATURE ###################################### thetao0m: description: Surface temperature themes: - phys realms: - ocean variables: thetao: preprocessor: z0 reference_dataset: WOA # reference_dataset: HadISST mip: Omon additional_datasets: # - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1} # - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: "r(1:3)i1p1"} # - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1} # - {dataset: CESM2, project: CMIP6, exp: historical, ensemble: r1i1p1f1, grid: gn} - {dataset: NorESM2-LM, project: CMIP6, exp: historical, ensemble: "r1i1p1f1", grid: gr, start_year: 2000, end_year: 2000} - {dataset: NorESM2-MM, project: CMIP6, exp: historical, ensemble: "r1i1p1f1", grid: gr, start_year: 2000, end_year: 2000} - {dataset: NorESM2-MM, project: KeyCLIM, exp: hist-piAerOxid, ensemble: r1i1p1f1, grid: gr, start_year: 2000, end_year: 2000} - {dataset: WOA, project: OBS6, type: clim, version: 2018, start_year: 2000, end_year: 2000, tier: 2} # - {dataset: HadISST, project: OBS, type: reanaly, version: 1, tier: 2} scripts: cycle: &cycle_settings script: perfmetrics/main.ncl # Plot type ('cycle', 'zonal', 'latlon', 'cycle_latlon', 'cycle_zonal') plot_type: cycle_latlon # Time average ('opt' argument of time_operations.ncl) time_avg: monthlyclim # Region ('global', 'trop', 'nhext', 'shext') region: global # Plot standard deviation ('all', 'none', 'ref_model' or dataset name) plot_stddev: all # Plot legend in a separate file legend_outside: true # Plot style styleset: CMIP5 # latlon: &latlon_settings # script: perfmetrics/main.ncl # # Plot type ('cycle', 'zonal', 'latlon', 'cycle_latlon', 'cycle_zonal') # plot_type: latlon # # Time average ('opt' argument of time_operations.ncl) # time_avg: annualclim # # Region ('global', 'trop', 'nhext', 'shext') # region: global # # Draw difference plots # plot_diff: true # # Calculate t-test in difference plots # t_test: true # # Confidence level for the t-test # conf_level: 0.95 # # Add global average to the plot # show_global_avg: true # # Contour levels for absolute plot # #JT abs_levs: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] # #abs_levs: [270, 275, 280, 285, 290, 295, 300, 305, 310] # abs_levs: [-5, 0, 5, 10, 15, 20, 25, 30] # # Contour levels for difference plot # diff_levs: [-4, -3, -2, -1, 0, 1, 2, 3, 4] grading: &grading_settings script: perfmetrics/main.ncl # Plot type ('cycle', 'zonal', 'latlon', 'cycle_latlon', 'cycle_zonal') plot_type: cycle_latlon # Time average ('opt' argument of time_operations.ncl) time_avg: monthlyclim # Region ('global', 'trop', 'nhext', 'shext') region: global # Plot standard deviation ('all', 'none', 'ref_model' or dataset name) plot_stddev: all # Plot legend in a separate file legend_outside: true # Plot style styleset: CMIP5 # Calculate grading calc_grading: true # Metric ('RMSD', 'BIAS', taylor') metric: ['RMSD', 'BIAS', 'taylor'] # Normalization ('mean', 'median', 'centered_median', 'none') normalization: ['centered_median','centered_median', 'none'] ### thetao500: 500m TEMPERATURE ###################################### thetao500: description: Temperature (500m) themes: - phys realms: - ocean variables: thetao: preprocessor: z500 reference_dataset: WOA mip: Omon # start_year: 2000 # end_year: 2004 additional_datasets: # - {dataset: CCSM4, project: CMIP5, exp: historical, ensemble: r1i1p1} # - {dataset: NorESM1-M, project: CMIP5, exp: historical, ensemble: "r(1:3)i1p1"} # - {dataset: NorESM1-ME, project: CMIP5, exp: historical, ensemble: r1i1p1} # - {dataset: CESM2, project: CMIP6, exp: historical, ensemble: r1i1p1f1, grid: gn} - {dataset: NorESM2-LM, project: CMIP6, exp: historical, ensemble: "r1i1p1f1", grid: gr, start_year: 2000, end_year: 2000} - {dataset: NorESM2-MM, project: CMIP6, exp: historical, ensemble: "r1i1p1f1", grid: gr, start_year: 2000, end_year: 2000} - {dataset: NorESM2-MM, project: KeyCLIM, exp: hist-piAerOxid, ensemble: r1i1p1f1, grid: gr, start_year: 2000, end_year: 2000} - {dataset: WOA, project: OBS6, type: clim, version: 2018, start_year: 2000, end_year: 2000, tier: 2} scripts: # latlon: # <<: *latlon_settings cycle: <<: *cycle_settings grading: <<: *grading_settings # Metric ('RMSD', 'BIAS', taylor') # metric: [RMSD, taylor] # Normalization ('mean', 'median', 'centered_median', 'none') # normalization: [centered_median, none] ### thetao1000: 1000m TEMPERATURE ###################################### thetao1000: description: Temperature (1000m) themes: - phys realms: - ocean variables: thetao: preprocessor: z1000 reference_dataset: WOA mip: Omon additional_datasets: - {dataset: NorESM2-LM, project: CMIP6, exp: historical, ensemble: "r1i1p1f1", grid: gr, start_year: 2000, end_year: 2000} - {dataset: NorESM2-MM, project: CMIP6, exp: historical, ensemble: "r1i1p1f1", grid: gr, start_year: 2000, end_year: 2000} - {dataset: NorESM2-MM, project: KeyCLIM, exp: hist-piAerOxid, ensemble: r1i1p1f1, grid: gr, start_year: 2000, end_year: 2000} - {dataset: WOA, project: OBS6, type: clim, version: 2018, start_year: 2000, end_year: 2000, tier: 2} scripts: cycle: <<: *cycle_settings grading: <<: *grading_settings ### thetao2000: 2000m TEMPERATURE ###################################### thetao2000: description: Temperature (2000m) themes: - phys realms: - ocean variables: thetao: preprocessor: z2000 reference_dataset: WOA mip: Omon additional_datasets: - {dataset: NorESM2-LM, project: CMIP6, exp: historical, ensemble: "r1i1p1f1", grid: gr, start_year: 2000, end_year: 2000} - {dataset: NorESM2-MM, project: CMIP6, exp: historical, ensemble: "r1i1p1f1", grid: gr, start_year: 2000, end_year: 2000} - {dataset: NorESM2-MM, project: KeyCLIM, exp: hist-piAerOxid, ensemble: r1i1p1f1, grid: gr, start_year: 2000, end_year: 2000} - {dataset: WOA, project: OBS6, type: clim, version: 2018, start_year: 2000, end_year: 2000, tier: 2} scripts: cycle: <<: *cycle_settings grading: <<: *grading_settings ### COLLECT METRICS ######################################################### collect: description: Wrapper to collect and plot previously calculated metrics scripts: RMSD: script: perfmetrics/collect.ncl ancestors: ['*/grading*'] metric: RMSD label_bounds: [-0.5, 0.5] label_scale: 0.1 disp_values: false cm_interval: [2, 241] # Sort dataset in alphabetic order (excluding MMM) sort: true # Sort diagnostics in a specific order (name = 'diagnositic'-'region') diag_order: ['ta850-global', 'ta200-global', 'ua850-global', 'ua200-global', 'va850-global', 'va200-global', 'zg500-global', 'hus400-global', 'tas-global', 'ts-global', 'pr-global', 'clt-global', 'rlut-global', 'rsut-global', 'lwcre-global', 'swcre-global', 'od550aer-global', 'od870aer-global', 'abs550aer-global', 'od550lt1aer-global', 'toz-global', 'toz-shpolar', 'sm-global'] BIAS: script: perfmetrics/collect.ncl ancestors: ['*/grading'] metric: BIAS label_bounds: [-3.0, 3.0] label_scale: 0.5 disp_values: false cm_interval: [2, 241] # Sort dataset in alphabetic order (excluding MMM) sort: true taylor: script: perfmetrics/collect.ncl ancestors: ['*/grading'] metric: taylor