Skip to content

Recipes to evaluate CORDEX-CMIP5 models#4199

Open
sloosvel wants to merge 54 commits into
mainfrom
dev_cordex5_recipe
Open

Recipes to evaluate CORDEX-CMIP5 models#4199
sloosvel wants to merge 54 commits into
mainfrom
dev_cordex5_recipe

Conversation

@sloosvel

@sloosvel sloosvel commented Sep 15, 2025

Copy link
Copy Markdown
Contributor

Description

This pull request adds recipes to demonstrate that ESMValTool is now capable of handling CORDEX data.

Use the esmvalcore-dev environment to run the recipes.

examples/recipe_map_CORDEX-CMIP5.yml

recipe_cordex-cmip5.yml plots maps for the CORDEX data and, if an observational dataset is present that is marked with the facet reference_for_monitor_diags: true, computes the bias against it. The maps are useful to visually inspect the data and detect issues in the values or the grid. Some example plots that can be produced are the following (with reference_for_monitor_diags: true on the observational data):

image

and (without reference_for_monitor_diags: true on the observational data):

image

All figures with comparison to CCI data are available at https://esmvaltool.dkrz.de/shared/esmvaltool/cordex/recipe_map_CORDEX-CMIP5_20260713_151914/ and figures with individual plots are available at https://esmvaltool.dkrz.de/shared/esmvaltool/cordex/recipe_map_CORDEX-CMIP5_20260714_084936/

recipe_perfmetrics_CORDEX-CMIP5.yml

Produces the performance metrics plot for several variables in CORDEX and ESA-CCI data, which has been previously examined using the recipe to produce maps to ensure the data is on the correct domain. An attempt has been made to correct issues with the units and to leave out datasets with invalid numbers (e.g. all zeros or of the order of 1e36), but it is not straightforward in all cases what the correct interpretation of the data is. For some models, the data is orders of magnitude removed from the other models and ESA CCI data.

image

The run including provenance and log files is available at https://esmvaltool.dkrz.de/shared/esmvaltool/cordex/recipe_perfmetrics_CORDEX-CMIP5_20260716_083604/

Closes #4198

Link to documentation: TODO


Before you get started

Checklist

It is the responsibility of the author to make sure the pull request is ready to review. The icons indicate whether the item will be subject to the 🛠 Technical or 🧪 Scientific review.

New or updated recipe/diagnostic


To help with the number of pull requests:

@sloosvel sloosvel changed the title Recipe to evaluate CORDEX-CMIP5 models Recipes to evaluate CORDEX-CMIP5 models Nov 26, 2025
@bouweandela

bouweandela commented Apr 30, 2026

Copy link
Copy Markdown
Member

To generate a recipe with all available datasets for the variable ts, run this script:

import yaml

from esmvalcore.config import CFG
from esmvalcore.dataset import Dataset, datasets_to_recipe


def main() -> None:
    """Make a recipe with all CORDEX data we can find."""
    # Make sure to configure the data sources before running this script.
    # To configure ESGF as a data source, run:
    # `esmvaltool config copy data-esmvalcore-esgf.yml`
    CFG["search_data"] = "complete"

    template = Dataset(
        project="CORDEX",
        mip="day",
        short_name="ts",
        domain="EUR-11",
        dataset="*",
        institute="*",
        rcm_version="*",
        driver="*",
        ensemble="*",
    )
    datasets = tuple(template.from_files())
    print(
        yaml.safe_dump(
            datasets_to_recipe(
                [d.copy(diagnostic="diagnostic") for d in datasets],
            ),
        ),
    )


if __name__ == "__main__":
    main()

Result:

Details

datasets:
- dataset: ALADIN53
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
- dataset: ALADIN53
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
- dataset: ALADIN63
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v2
- dataset: ALADIN63
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
- dataset: ALADIN63
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
- dataset: ALADIN63
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
- dataset: ALADIN63
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
- dataset: CCLM4-8-17
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: CLMcom
  rcm_version: v1
- dataset: CCLM4-8-17
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: CLMcom
  rcm_version: v1
- dataset: CCLM4-8-17
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: CLMcom
  rcm_version: v1
- dataset: CCLM4-8-17
  driver: MIROC-MIROC5
  ensemble: r1i1p1
  institute: CLMcom
  rcm_version: v1
- dataset: CCLM4-8-17
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: CLMcom
  rcm_version: v1
- dataset: CCLM4-8-17
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: CLMcom
  rcm_version: v1
- dataset: COSMO-crCLIM-v1-1
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
- dataset: COSMO-crCLIM-v1-1
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
- dataset: COSMO-crCLIM-v1-1
  driver: ICHEC-EC-EARTH
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
- dataset: COSMO-crCLIM-v1-1
  driver: ICHEC-EC-EARTH
  ensemble: r3i1p1
  institute: CLMcom-ETH
  rcm_version: v1
- dataset: COSMO-crCLIM-v1-1
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: CLMcom-ETH
  rcm_version: v1
- dataset: COSMO-crCLIM-v1-1
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
- dataset: COSMO-crCLIM-v1-1
  driver: MPI-M-MPI-ESM-LR
  ensemble: r(1:3)i1p1
  institute: CLMcom-ETH
  rcm_version: v1
- dataset: COSMO-crCLIM-v1-1
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
- dataset: HIRHAM5
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v2
- dataset: HIRHAM5
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v1
- dataset: HIRHAM5
  driver: ICHEC-EC-EARTH
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v1
- dataset: HIRHAM5
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: DMI
  rcm_version: v1
- dataset: HIRHAM5
  driver: ICHEC-EC-EARTH
  ensemble: r3i1p1
  institute: DMI
  rcm_version: v2
- dataset: HIRHAM5
  driver: IPSL-IPSL-CM5A-MR
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v1
- dataset: HIRHAM5
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v2
- dataset: HIRHAM5
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v1
- dataset: HIRHAM5
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v3
- dataset: HadREM3-GA7-05
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v2
- dataset: HadREM3-GA7-05
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v1
- dataset: HadREM3-GA7-05
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: MOHC
  rcm_version: v1
- dataset: HadREM3-GA7-05
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v1
- dataset: HadREM3-GA7-05
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v1
- dataset: HadREM3-GA7-05
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v1
- dataset: RACMO22E
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: KNMI
  rcm_version: v2
- dataset: RACMO22E
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: KNMI
  rcm_version: v1
- dataset: RACMO22E
  driver: ICHEC-EC-EARTH
  ensemble: r1i1p1
  institute: KNMI
  rcm_version: v1
- dataset: RACMO22E
  driver: ICHEC-EC-EARTH
  ensemble: r3i1p1
  institute: KNMI
  rcm_version: v1
- dataset: RACMO22E
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: KNMI
  rcm_version: v1
- dataset: RACMO22E
  driver: IPSL-IPSL-CM5A-MR
  ensemble: r1i1p1
  institute: KNMI
  rcm_version: v1
- dataset: RACMO22E
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: KNMI
  rcm_version: v2
- dataset: RACMO22E
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: KNMI
  rcm_version: v1
- dataset: RACMO22E
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: KNMI
  rcm_version: v1
- dataset: RCA4
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
- dataset: RCA4
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
- dataset: RCA4
  driver: ICHEC-EC-EARTH
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
- dataset: RCA4
  driver: ICHEC-EC-EARTH
  ensemble: r3i1p1
  institute: SMHI
  rcm_version: v1
- dataset: RCA4
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: SMHI
  rcm_version: v1
- dataset: RCA4
  driver: IPSL-IPSL-CM5A-MR
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
- dataset: RCA4
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
- dataset: RCA4
  driver: MPI-M-MPI-ESM-LR
  ensemble: r(2:3)i1p1
  institute: SMHI
  rcm_version: v1
- dataset: RCA4
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1a
- dataset: RCA4
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
- dataset: REMO2009
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: MPI-CSC
  rcm_version: v1
- dataset: REMO2009
  driver: MPI-M-MPI-ESM-LR
  ensemble: r(1:2)i1p1
  institute: MPI-CSC
  rcm_version: v1
- dataset: REMO2015
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v2
- dataset: REMO2015
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
- dataset: REMO2015
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: GERICS
  rcm_version: v1
- dataset: REMO2015
  driver: IPSL-IPSL-CM5A-LR
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
- dataset: REMO2015
  driver: IPSL-IPSL-CM5A-MR
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
- dataset: REMO2015
  driver: MIROC-MIROC5
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
- dataset: REMO2015
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
- dataset: REMO2015
  driver: MPI-M-MPI-ESM-LR
  ensemble: r3i1p1
  institute: GERICS
  rcm_version: v1
- dataset: REMO2015
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
- dataset: REMO2015
  driver: NOAA-GFDL-GFDL-ESM2G
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
- dataset: RegCM4-2
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: DHMZ
  rcm_version: v1
- dataset: RegCM4-6
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v2
- dataset: RegCM4-6
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v1
- dataset: RegCM4-6
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: ICTP
  rcm_version: v1
- dataset: RegCM4-6
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v1
- dataset: RegCM4-6
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v1
- dataset: RegCM4-6
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v1
- dataset: WRF361H
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: UHOH
  rcm_version: v1
- dataset: WRF381P
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: IPSL
  rcm_version: v2
- dataset: WRF381P
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: IPSL
  rcm_version: v1
- dataset: WRF381P
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: IPSL
  rcm_version: v1
- dataset: WRF381P
  driver: IPSL-IPSL-CM5A-MR
  ensemble: r1i1p1
  institute: IPSL
  rcm_version: v1
- dataset: WRF381P
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: IPSL
  rcm_version: v1
- dataset: WRF381P
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: IPSL
  rcm_version: v1
- dataset: WRF381P
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: IPSL
  rcm_version: v1
diagnostics:
  diagnostic:
    variables:
      ts:
        domain: EUR-11
        mip: day
        project: CORDEX

@bouweandela

Copy link
Copy Markdown
Member

And here is another version that only lists those datasets that also have sftlf available:

import yaml

from esmvalcore.config import CFG
from esmvalcore.dataset import Dataset, datasets_to_recipe


def main() -> None:
    """Make a recipe with all CORDEX data we can find."""
    # Make sure to configure the data sources before running this script.
    # To configure ESGF as a data source, run:
    # `esmvaltool config copy data-esmvalcore-esgf.yml`
    CFG["search_data"] = "complete"

    template = Dataset(
        project="CORDEX",
        mip="day",
        short_name="ts",
        domain="EUR-11",
        dataset="*",
        institute="*",
        rcm_version="*",
        driver="*",
        ensemble="*",
    )
    datasets = []
    for dataset in template.from_files():
        dataset.add_supplementary(short_name="sftlf", mip="fx", ensemble="*")
        result = next(dataset.from_files())
        if result.supplementaries:
            datasets.append(result)
    recipe = datasets_to_recipe(
        [d.copy(diagnostic="diagnostic") for d in datasets],
    )
    for dataset in recipe["datasets"]:
        dataset["supplementary_variables"][0].pop("diagnostic", None)
    print(yaml.safe_dump(recipe))


if __name__ == "__main__":
    main()

Result:

Details

datasets:
- dataset: ALADIN53
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: ALADIN53
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: ALADIN63
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v2
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: ALADIN63
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: ALADIN63
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: ALADIN63
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: ALADIN63
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: CNRM
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: CCLM4-8-17
  driver: MIROC-MIROC5
  ensemble: r1i1p1
  institute: CLMcom
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: COSMO-crCLIM-v1-1
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: COSMO-crCLIM-v1-1
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: COSMO-crCLIM-v1-1
  driver: ICHEC-EC-EARTH
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
  supplementary_variables: &id001
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: COSMO-crCLIM-v1-1
  driver: ICHEC-EC-EARTH
  ensemble: r3i1p1
  institute: CLMcom-ETH
  rcm_version: v1
  supplementary_variables: *id001
- dataset: COSMO-crCLIM-v1-1
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: CLMcom-ETH
  rcm_version: v1
  supplementary_variables: *id001
- dataset: COSMO-crCLIM-v1-1
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: COSMO-crCLIM-v1-1
  driver: MPI-M-MPI-ESM-LR
  ensemble: r(1:3)i1p1
  institute: CLMcom-ETH
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: COSMO-crCLIM-v1-1
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: CLMcom-ETH
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: HIRHAM5
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v2
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HIRHAM5
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HIRHAM5
  driver: ICHEC-EC-EARTH
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v1
  supplementary_variables: &id002
  - mip: fx
    short_name: sftlf
- dataset: HIRHAM5
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: DMI
  rcm_version: v1
  supplementary_variables: *id002
- dataset: HIRHAM5
  driver: ICHEC-EC-EARTH
  ensemble: r3i1p1
  institute: DMI
  rcm_version: v2
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HIRHAM5
  driver: IPSL-IPSL-CM5A-MR
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HIRHAM5
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v2
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HIRHAM5
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HIRHAM5
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: DMI
  rcm_version: v3
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HadREM3-GA7-05
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v2
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HadREM3-GA7-05
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HadREM3-GA7-05
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: MOHC
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HadREM3-GA7-05
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HadREM3-GA7-05
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: HadREM3-GA7-05
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: MOHC
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: RCA4
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: RCA4
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: RCA4
  driver: ICHEC-EC-EARTH
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables: &id003
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: RCA4
  driver: ICHEC-EC-EARTH
  ensemble: r3i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables: *id003
- dataset: RCA4
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables: *id003
- dataset: RCA4
  driver: IPSL-IPSL-CM5A-MR
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: RCA4
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: RCA4
  driver: MPI-M-MPI-ESM-LR
  ensemble: r(2:3)i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: RCA4
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1a
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: RCA4
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: SMHI
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: REMO2015
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v2
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: REMO2015
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: GERICS
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: REMO2015
  driver: IPSL-IPSL-CM5A-LR
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: REMO2015
  driver: IPSL-IPSL-CM5A-MR
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: REMO2015
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: REMO2015
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: REMO2015
  driver: NOAA-GFDL-GFDL-ESM2G
  ensemble: r1i1p1
  institute: GERICS
  rcm_version: v1
  supplementary_variables:
  - ensemble: r0i0p0
    mip: fx
    short_name: sftlf
- dataset: RegCM4-2
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: DHMZ
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: RegCM4-6
  driver: CNRM-CERFACS-CNRM-CM5
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v2
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: RegCM4-6
  driver: ECMWF-ERAINT
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: RegCM4-6
  driver: ICHEC-EC-EARTH
  ensemble: r12i1p1
  institute: ICTP
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: RegCM4-6
  driver: MOHC-HadGEM2-ES
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: RegCM4-6
  driver: MPI-M-MPI-ESM-LR
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
- dataset: RegCM4-6
  driver: NCC-NorESM1-M
  ensemble: r1i1p1
  institute: ICTP
  rcm_version: v1
  supplementary_variables:
  - mip: fx
    short_name: sftlf
diagnostics:
  diagnostic:
    variables:
      ts:
        domain: EUR-11
        mip: day
        project: CORDEX

@CLAassistant

CLAassistant commented May 20, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
2 out of 3 committers have signed the CLA.

✅ bouweandela
✅ ghossh
❌ sloosvel
You have signed the CLA already but the status is still pending? Let us recheck it.

@bouweandela bouweandela modified the milestones: v2.15.0, v2.16.0 Jun 10, 2026
@bouweandela

Copy link
Copy Markdown
Member

@axel-lauer @hb326 Do you have a suggestion for how many and which variables should be in the portrait plot for the ESO4clima D6.2.1 deliverable? And which observational datasets? We have clt, rsus, sic, and ts in esmvaltool/recipes/examples/recipe_cordex-cmip5_perfmetrics_all.yml so far, is that enough or do you think it would be better to add some more?

@axel-lauer

Copy link
Copy Markdown
Contributor

@axel-lauer @hb326 Do you have a suggestion for how many and which variables should be in the portrait plot for the ESO4clima D6.2.1 deliverable? And which observational datasets? We have clt, rsus, sic, and ts in esmvaltool/recipes/examples/recipe_cordex-cmip5_perfmetrics_all.yml so far, is that enough or do you think it would be better to add some more?

I don't think we promised a specific number of variables for this deliverable. The deliverable is defined as "New performance metrics plots with ESA-CCIdata produced with the project-enhanced ESMValTool forCORDEX-CMIP5 models that were not previously supported."

For this reason, I think it would be great to have a few more variables such as (if available) lwp, clivi, tos, sm, rlut, swcre, lwcre, prw, snw, od550aer, toz.

@bouweandela

Copy link
Copy Markdown
Member

Current figure:
image

@bouweandela

Copy link
Copy Markdown
Member

Maps comparing CORDEX to ESA CCI data as produced by examples/recipe_map_CORDEX-CMIP5.yml are available at https://esmvaltool.dkrz.de/shared/esmvaltool/cordex/recipe_map_CORDEX-CMIP5_20260713_151914/.

@axel-lauer

Copy link
Copy Markdown
Contributor

@bouweandela I keep getting error messages about missing CORDEX data. What for an entry in data-intake-esgf.yml(?) do I need to download locally missing CORDEX data from ESGF?

@bouweandela

bouweandela commented Jul 15, 2026

Copy link
Copy Markdown
Member

I've downloaded the required data to Levante and am using the following configuration:

# Read CORDEX data from the filesystem of Levante at DKRZ.
projects:
  CORDEX:
    data:
      dkrz:
        type: esmvalcore.io.local.LocalDataSource
        rootpath: /work/ik1017/C3SCORDEX/data/c3s-cordex/output
        dirname_template: "{domain}/{institute}/{driver}/{exp}/{ensemble}/{institute}-{dataset}/{rcm_version}/{mip}/{short_name}/{version}"
        filename_template: "{short_name}_{domain}_{driver}_{exp}_{ensemble}_{institute}-{dataset}_{rcm_version}_{mip}*.nc"
      esgf-cache:
        type: esmvalcore.io.local.LocalDataSource
        rootpath: /work/bd0854/DATA/ESMValTool2/download
        dirname_template: "{project.lower}/output/{domain}/{institute}/{driver}/{exp}/{ensemble}/{dataset}/{rcm_version}/{frequency}/{short_name}/{version}"
        filename_template: "{short_name}_{domain}_{driver}_{exp}_{ensemble}_{institute}-{dataset}_{rcm_version}_{mip}*.nc"

@bouweandela

bouweandela commented Jul 15, 2026

Copy link
Copy Markdown
Member

I believe intake-esgf does not support CORDEX, so I've used esmvaltool config copy data-esmvalcore-esgf.yml and adjust the download_dir path to /work/bd0854/DATA/ESMValTool2/download to set up automatic download, but it should be all there now, so no need to download more. To get the ALADIN data, we've had to download some data from https://thredds-su.ipsl.fr/thredds/catalog/CNRM-WCRP-Data/CORDEX/output/EUR-11/catalog.html manually because the ESGF index contains outdated URLs so automatic download fails.

@bouweandela

Copy link
Copy Markdown
Member

I also had some issues with using the distributed scheduler, so ran this on the interactive queue with 64 GB of RAM and these settings:

max_parallel_tasks: 10
dask:
  use: threaded
  profiles:
    threaded:
      num_workers: 8

It takes about half an hour for the complete recipe.

@axel-lauer

Copy link
Copy Markdown
Contributor

Thanks! I did the same (I believe). My data-local-esmvaltool.yml contains the lines you provided and my data-esmvalcore-esgf.yml looks like:

# Download CMIP, CORDEX, and obs4MIPs data from ESGF using the `esmvalcore.io.esgf`
# module, which uses the legacy ESGF search interface.
projects:
  CORDEX: &esgf-pyclient-data
    data:
      esgf-pyclient:
        type: esmvalcore.io.esgf.ESGFDataSource
        download_dir: /work/bd0854/DATA/ESMValTool2/download
        # Use a lower priority than for esmvalcore.io.local.LocalDataSource
        # to avoid searching ESGF with the setting `search_esgf: when_missing`.
        priority: 10

Yet, ESMValTool complains about missing CORDEX data. Maybe a pixi problem?

@bouweandela

Copy link
Copy Markdown
Member

Can you share the error message?

@axel-lauer

Copy link
Copy Markdown
Contributor

The log-file looks like this:

ERROR   [1617593] Could not create all tasks
ERROR   [1617593] Missing data for preprocessor lst/lst:
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1, CNRM-CERFACS-CNRM-CM5, EUR-11, historical, r1i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1, ICHEC-EC-EARTH, EUR-11, historical, r12i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1, IPSL-IPSL-CM5A-MR, EUR-11, historical, r1i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1, MOHC-HadGEM2-ES, EUR-11, historical, r1i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1a, MPI-M-MPI-ESM-LR, EUR-11, historical, r1i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
ERROR   [1617593] Missing data for preprocessor sst/sst:
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1, CNRM-CERFACS-CNRM-CM5, EUR-11, historical, r1i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1, ICHEC-EC-EARTH, EUR-11, historical, r12i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1, IPSL-IPSL-CM5A-MR, EUR-11, historical, r1i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1, MOHC-HadGEM2-ES, EUR-11, historical, r1i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
- Missing data for Dataset: ts, day, CORDEX, RCA4, v1a, MPI-M-MPI-ESM-LR, EUR-11, historical, r1i1p1, day, supplementaries: sftlf, fx, r0i0p0, fx
ERROR   [1617593] Not all input files required to run the recipe could be found.
ERROR   [1617593] If the files are available, please check the debug log and the configuration of your data sources.
ERROR   [1617593] To see your current configuration, run the command `esmvaltool config show` and check the "data" entries.
ERROR   [1617593] To see the available example configurations, run the command: `esmvaltool config list`.
INFO    [1617593] Maximum memory used (estimate): 0.3 GB
INFO    [1617593] Sampled every second. It may be inaccurate if short but high spikes in memory consumption occur.
ERROR   [1617593] Could not create all tasks

@bouweandela

Copy link
Copy Markdown
Member

Looking at some of my older log files, there was a file /work/bd0854/DATA/ESMValTool2/download/cordex/output/EUR-11/SMHI/CNRM-CERFACS-CNRM-CM5/historical/r1i1p1/RCA4/v1/day/ts/v20131026/ts_EUR-11_CNRM-CERFACS-CNRM-CM5_historical_r1i1p1_SMHI-RCA4_v1_day_20010101-20051231.nc which is no longer there. Let me try downloading the data again.

@bouweandela

Copy link
Copy Markdown
Member

Running the download again with

 $ cat ~/.esmvaltool/esgf-pyclient.yml
search_connection:
  'expire_after': 864000 # 10 days
  urls:
    - 'https://esg-dn1.nsc.liu.se/esg-search'

it is now downloading 8GB of data.

@bouweandela

Copy link
Copy Markdown
Member

Download finished, so all data for the perfmetrics recipe should be available again.

@bouweandela bouweandela removed the requires new ESMValCore release A new release of ESMValCore is needed to solve this issue/merge this pull request.. label Jul 16, 2026
@bouweandela

Copy link
Copy Markdown
Member

@axel-lauer Would you have a suggestion of what the best place for documentation for these recipes would be? A separate page? Or mention them on the existing perfmetrics page?

@bouweandela
bouweandela marked this pull request as ready for review July 16, 2026 08:55
Comment thread CITATION.cff Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

ESO4clima CORDEX CMIP5 recipe

5 participants