Variables and CMOR Tables#
ESMValCore has been designed to facilitate working with Earth System Model data, also known as climate model data. To make it easy to compare and combine data from different climate models, reanalysis datasets, and observational datasets, ESMValCore uses the standardized variables from the CMOR tables provided by the projects it supports. CMOR (Climate Model Output Rewriter) is a tool commonly used by climate modelling centers to format their model output according to community standards. The CMOR tables define the standardized variable names, units, coordinates, and other metadata for various climate variables and are typically compiled from a Data Request, e.g. the CMIP7 Data Request, and a Controlled Vocabulary, e.g. the CMIP7 Controlled Vocabulary . ESMValCore comes bundled with several CMOR tables, which are stored in the directory esmvalcore/cmor/tables. It is possible to configure which CMOR tables are used by ESMValCore.
The facets project, mip, short_name, and optionally
branding_suffix, uniquely determine the variable to use. These facets are
used to look up the variable in the CMOR table for the project.
Compliance with the variable definition from the CMOR table is checked when data is
loaded, to avoid unexpected results or errors during data processing. The strictness
of these checks can be configured.
For example, the facets project: CMIP6, mip: Amon, short_name: tas
define the near-surface air temperature variable in the CMIP6 Amon table:
tas variable definition in the CMIP6 Amon table at esmvalcore/cmor/tables/cmip6/Tables/CMIP6_Amon.json.# "tas": {
"frequency": "mon",
"modeling_realm": "atmos",
"standard_name": "air_temperature",
"units": "K",
"cell_methods": "area: time: mean",
"cell_measures": "area: areacella",
"long_name": "Near-Surface Air Temperature",
"comment": "near-surface (usually, 2 meter) air temperature",
"dimensions": "longitude latitude time height2m",
"out_name": "tas",
"type": "real",
"positive": "",
"valid_min": "",
"valid_max": "",
"ok_min_mean_abs": "",
"ok_max_mean_abs": ""
},
In some cases the short_name (called out_name in the CMOR tables) of a
variable may differ from the name used as a key in the CMOR table.
This is always the case for CMIP7, where the branded name of the variable is
used, which is composed of the short_name followed
by an underscore and the branding_suffix. For example, the facets
project: CMIP7, mip: atmos, short_name: tas, branding_suffix: tavg-h2m-hxy-u
select one of the near-surface air temperature variables in the CMIP7 atmos table:
tas variable definitions in the CMIP7 atmos table at esmvalcore/cmor/tables/cmip7/Tables/CMIP7_atmos.json.# "tas_tavg-h2m-hxy-u": {
"cell_measures": "",
"cell_methods": "area: time: mean",
"comment": "",
"dimensions": [
"longitude",
"latitude",
"time",
"height2m"
],
"long_name": "Near-Surface Air Temperature",
"modeling_realm": "atmos",
"out_name": "tas",
"positive": "",
"standard_name": "air_temperature",
"units": "K"
},
For other projects, the facet branding_suffix can also be used to distinguish
between variables from the same CMOR table that share the same short_name,
but differ in other aspects, even though these projects do not use branded variables.
For example, the ch4Clim entry in the CMIP6 Amon table can be selected in
the recipe by specifying project: CMIP6, mip: Amon, short_name: ch4, branding_suffix: Clim:
ch4 variable definitions in the CMIP6 Amon table at esmvalcore/cmor/tables/cmip6/Tables/CMIP6_Amon.json.# "ch4Clim": {
"frequency": "monC",
"modeling_realm": "atmos atmosChem",
"standard_name": "mole_fraction_of_methane_in_air",
"units": "mol mol-1",
"cell_methods": "area: mean time: mean within years time: mean over years",
"cell_measures": "area: areacella",
"long_name": "Mole Fraction of CH4",
"comment": "Mole fraction is used in the construction mole_fraction_of_X_in_Y, where X is a material constituent of Y.",
"dimensions": "longitude latitude plev19 time2",
"out_name": "ch4",
"type": "real",
"positive": "",
"valid_min": "",
"valid_max": "",
"ok_min_mean_abs": "",
"ok_max_mean_abs": ""
},