From e274bcb504c0fa4e889644eb3ef59e9d164d37d8 Mon Sep 17 00:00:00 2001 From: Bettina Gier Date: Mon, 16 Sep 2024 16:45:35 +0200 Subject: [PATCH 1/3] CAMS cmorizer --- doc/sphinx/source/input.rst | 2 + .../cmorizers/data/cmor_config/CAMS.yml | 40 +++++ esmvaltool/cmorizers/data/datasets.yml | 9 + .../data/downloaders/datasets/cams.py | 56 ++++++ .../data/formatters/datasets/cams.py | 165 ++++++++++++++++++ esmvaltool/cmorizers/data/utilities.py | 2 +- esmvaltool/references/cams.bibtex | 11 ++ 7 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 esmvaltool/cmorizers/data/cmor_config/CAMS.yml create mode 100644 esmvaltool/cmorizers/data/downloaders/datasets/cams.py create mode 100644 esmvaltool/cmorizers/data/formatters/datasets/cams.py create mode 100644 esmvaltool/references/cams.bibtex diff --git a/doc/sphinx/source/input.rst b/doc/sphinx/source/input.rst index 798b2ceb27..fe83b35ef6 100644 --- a/doc/sphinx/source/input.rst +++ b/doc/sphinx/source/input.rst @@ -248,6 +248,8 @@ A list of the datasets for which a CMORizers is available is provided in the fol +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ | CALIPSO-ICECLOUD | cli (AMon) | 3 | NCL | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ +| CAMS | nbp (Lmon), fgco2 (Omon) | 3 | Python | ++------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ | CDS-SATELLITE-ALBEDO | bdalb (Lmon), bhalb (Lmon) | 3 | Python | +------------------------------+------------------------------------------------------------------------------------------------------+------+-----------------+ | CDS-SATELLITE-LAI-FAPAR | fapar (Lmon), lai (Lmon) | 3 | Python | diff --git a/esmvaltool/cmorizers/data/cmor_config/CAMS.yml b/esmvaltool/cmorizers/data/cmor_config/CAMS.yml new file mode 100644 index 0000000000..7d1ebbd1ef --- /dev/null +++ b/esmvaltool/cmorizers/data/cmor_config/CAMS.yml @@ -0,0 +1,40 @@ +--- +# Common global attributes for Cmorizer output + + +# Input +filename: 'cams73_v20r2_co2_flux_surface_mm_{year}{month}.nc' +start_year: 1979 +end_year: 2020 +attributes: + dataset_id: CAMS + version: 'v20r2' #'v20r1' + tier: 3 + modeling_realm: reanaly + project_id: OBS6 + source: "https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-greenhouse-gas-inversion" + reference: 'cams' + comment: '' + +# Variables to cmorize +variables: + nbp: + mip: Lmon + positive: down + varname: 'Posterior land surface upward mass flux of carbon for the whole grid box and the whole month without fossile' + fgco2: + mip: Omon + positive: down + varname: 'Posterior ocean surface upward mass flux of carbon for the whole grid box and the whole month without fossile' + areacella: + mip: fx + varname: area + areacello: + mip: Ofx + varname: area + sftlf: + mip: fx + varname: lsf + sftof: + mip: Ofx + varname: lsf \ No newline at end of file diff --git a/esmvaltool/cmorizers/data/datasets.yml b/esmvaltool/cmorizers/data/datasets.yml index dabe314025..497a95bc08 100644 --- a/esmvaltool/cmorizers/data/datasets.yml +++ b/esmvaltool/cmorizers/data/datasets.yml @@ -110,6 +110,15 @@ datasets: 6) Follow download instructions in email from EarthData and put all files in the same directory + CAMS: + tier: 2 + source: https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-greenhouse-gas-inversion?tab=form + last_access: 2024-09-09 + info: | + You will need to make an account with the CDS data store to download the data. + Then, select carbon dioxide, surface flux, surface air sample, monthly mean, + as well as the version and years you require to download. + CDS-SATELLITE-ALBEDO: tier: 3 source: https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-albedo?tab=form diff --git a/esmvaltool/cmorizers/data/downloaders/datasets/cams.py b/esmvaltool/cmorizers/data/downloaders/datasets/cams.py new file mode 100644 index 0000000000..7f6311543b --- /dev/null +++ b/esmvaltool/cmorizers/data/downloaders/datasets/cams.py @@ -0,0 +1,56 @@ +"""Script to download CAMS data from the Climate Data Store.""" + +import datetime + +from dateutil import relativedelta + +from esmvaltool.cmorizers.data.downloaders.cds import CDSDownloader +from esmvaltool.cmorizers.data.utilities import unpack_files_in_folder + + +def download_dataset(config, dataset, dataset_info, start_date, end_date, + overwrite): + """Download dataset. + + Parameters + ---------- + config : dict + ESMValTool's user configuration + dataset : str + Name of the dataset + dataset_info : dict + Dataset information from the datasets.yml file + start_date : datetime + Start of the interval to download + end_date : datetime + End of the interval to download + overwrite : bool + Overwrite already downloaded files + """ + if start_date is None: + start_date = datetime.datetime(1979, 1, 1) + if end_date is None: + end_date = datetime.datetime(2020, 12, 1) + #end_date = datetime.datetime(2022, 12, 1) + + downloader = CDSDownloader( + product_name='cams-global-greenhouse-gas-inversion', + request_dictionary={ + 'variable': 'carbon_dioxide', + 'quantity': 'surface_flux', + 'input_observations': 'surface', + 'time_aggregation': 'monthly_mean', + 'version': 'v20r2' #v22r2 + }, + config=config, + dataset=dataset, + dataset_info=dataset_info, + overwrite=overwrite, + ) + + loop_date = start_date + while loop_date <= end_date: + downloader.download(loop_date.year, loop_date.month, file_format='zip') + loop_date += relativedelta.relativedelta(months=1) + + unpack_files_in_folder(downloader.local_folder) \ No newline at end of file diff --git a/esmvaltool/cmorizers/data/formatters/datasets/cams.py b/esmvaltool/cmorizers/data/formatters/datasets/cams.py new file mode 100644 index 0000000000..7e6275f37f --- /dev/null +++ b/esmvaltool/cmorizers/data/formatters/datasets/cams.py @@ -0,0 +1,165 @@ +"""ESMValTool CMORizer for CAMS data. + +Tier + Tier 3 + +Source + https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-greenhouse-gas-inversion?tab=form + +Last access + 20240909 + +Download and processing instructions + Select carbon dioxide, surface flux, surface air sample, monthly mean + and download the year you require + +""" + +import logging +import os +import warnings + +from datetime import datetime +import dask.array as da +import iris + +import numpy as np + +from cf_units import Unit +#from esmvalcore.preprocessor import concatenate +#from esmvalcore.cmor.check import _get_time_bounds +from esmvaltool.cmorizers.data.utilities import (convert_timeunits, fix_coords, + fix_var_metadata, + save_variable, set_global_atts, + set_units) + +logger = logging.getLogger(__name__) + +def _get_time_coord(year, month): + """Get time coordinate.""" + point = datetime(year=year, month=month, day=15) + bound_low = datetime(year=year, month=month, day=1) + if month == 12: + month_bound_up = 1 + year_bound_up = year + 1 + else: + month_bound_up = month + 1 + year_bound_up = year + bound_up = datetime(year=year_bound_up, month=month_bound_up, day=1) + time_units = Unit('days since 1950-01-01 00:00:00', calendar='standard') + time_coord = iris.coords.DimCoord( + time_units.date2num(point), + bounds=time_units.date2num([bound_low, bound_up]), + var_name='time', + standard_name='time', + long_name='time', + units=time_units, + ) + return time_coord + +def add_timeunits(cube, filename): + """Add timestamp to cube""" + tmp = str.split(filename, "_") + time_coord = _get_time_coord(int(tmp[-1][:4]), int(tmp[-1][4:6])) + cube.add_aux_coord(time_coord) + + +def _calculate_flux(cube, filename, area_type): + """Calculate flux (dividing by land/sea area) and mask land/sea.""" + + # Get land/sea area fraction + with warnings.catch_warnings(): + warnings.filterwarnings( + 'ignore', + message="Ignoring netCDF variable '.*?' invalid units '.*?'", + category=UserWarning, + module='iris', + ) + lsf_cube = iris.load_cube(filename, 'lsf') + lsf = lsf_cube.core_data() + + # Mask + if area_type == 'land': + mask = (lsf == 0.0) + elif area_type == 'ocean': + mask = (lsf > 0) + cube.data = da.ma.masked_array(cube.core_data(), mask=mask) + + # Calculate flux (sign change since input data and CMOR use different + # conventions) + cube.data = -cube.core_data() + + cube.attributes['positive'] = 'down' + + return cube + +def fix_units(cube): + """Fixes units from invalid units through import""" + set_units(cube, 'kg m-2 month-1') + cube.convert_units('kg m-2 s-1') + del (cube.attributes['invalid_units']) + +def extract_variable(short_name, var, filename): + """Extract variable.""" + with warnings.catch_warnings(): + warnings.filterwarnings( + 'ignore', + message="Ignoring netCDF variable '.*?' invalid units '.*?'", + category=UserWarning, + module='iris', + ) + cube = iris.load_cube(filename, + var['varname']) + #cubes = iris.load(filename, var['varname']) + #cube = cubes[0] + if short_name == 'sftof': + cube.data = 100. * (1. - cube.core_data()) + cube.units = '%' + elif short_name == 'sftlf': + cube.data = 100. * cube.core_data() + cube.units = '%' + elif short_name == 'nbp': + _calculate_flux(cube, filename, 'land') + add_timeunits(cube, filename) + fix_units(cube) + elif short_name == 'fgco2': + _calculate_flux(cube, filename, 'ocean') + add_timeunits(cube, filename) + fix_units(cube) + return cube + + +def cmorization(in_dir, out_dir, cfg, cfg_user, start_date, end_date): + """Cmorize data.""" + months = ["0" + str(mo) for mo in range(1, 10)] + ["10", "11", "12"] + fpattern = os.path.join(in_dir, cfg['filename']) + + # run the cmorization + for (short_name, var) in cfg['variables'].items(): + var_info = cfg['cmor_table'].get_variable(var['mip'], short_name) + var_cubes = iris.cube.CubeList() + logger.info("CMORizing var %s from file type %s", short_name, fpattern) + # fx files are time invariant + if short_name in ['areacella', 'areacello', 'sftlf', 'sftof']: + filename = fpattern.format(year=cfg['start_year'], month='01') + cube = extract_variable(short_name, var, filename) + else: + for year in range(cfg['start_year'], cfg['end_year'] + 1): + for month in months: + filename = fpattern.format(year=year, month=month) + var_cubes.append(extract_variable(short_name, var, filename)) + + cube = var_cubes.merge_cube() + + cube.var_name = short_name + fix_coords(cube) + fix_var_metadata(cube, var_info) + attrs = cfg['attributes'] + attrs['mip'] = var['mip'] + set_global_atts(cube, attrs) + + save_variable(cube, + short_name, + out_dir, + attrs, + unlimited_dimensions=['time']) \ No newline at end of file diff --git a/esmvaltool/cmorizers/data/utilities.py b/esmvaltool/cmorizers/data/utilities.py index 853ebd8526..742e8ecb08 100644 --- a/esmvaltool/cmorizers/data/utilities.py +++ b/esmvaltool/cmorizers/data/utilities.py @@ -554,7 +554,7 @@ def unpack_files_in_folder(folder): continue if filename.startswith('.'): continue - if not filename.endswith(('.gz', '.tgz', '.tar')): + if not filename.endswith(('.gz', '.tgz', '.tar', '.zip')): continue logger.info('Unpacking %s', filename) shutil.unpack_archive(full_path, folder) diff --git a/esmvaltool/references/cams.bibtex b/esmvaltool/references/cams.bibtex new file mode 100644 index 0000000000..d9918ae13a --- /dev/null +++ b/esmvaltool/references/cams.bibtex @@ -0,0 +1,11 @@ +@Article{cams, +AUTHOR = {Chevallier, F.}, +TITLE = {On the parallelization of atmospheric inversions of CO$_{2}$ surface fluxes within a variational framework}, +JOURNAL = {Geoscientific Model Development}, +VOLUME = {6}, +YEAR = {2013}, +NUMBER = {3}, +PAGES = {783--790}, +URL = {https://gmd.copernicus.org/articles/6/783/2013/}, +DOI = {10.5194/gmd-6-783-2013} +} \ No newline at end of file From 3ee0e68b42de5101909f5b2544f87626f9066952 Mon Sep 17 00:00:00 2001 From: Bettina Gier Date: Mon, 28 Oct 2024 16:21:43 +0100 Subject: [PATCH 2/3] adding CAMS-EAC4 downloader --- .../cmorizers/data/cmor_config/CAMS-EAC4.yml | 40 +++++++++++ esmvaltool/cmorizers/data/datasets.yml | 46 ++++++++----- .../data/downloaders/datasets/cams_eac4.py | 68 +++++++++++++++++++ 3 files changed, 137 insertions(+), 17 deletions(-) create mode 100644 esmvaltool/cmorizers/data/cmor_config/CAMS-EAC4.yml create mode 100644 esmvaltool/cmorizers/data/downloaders/datasets/cams_eac4.py diff --git a/esmvaltool/cmorizers/data/cmor_config/CAMS-EAC4.yml b/esmvaltool/cmorizers/data/cmor_config/CAMS-EAC4.yml new file mode 100644 index 0000000000..42734f84e6 --- /dev/null +++ b/esmvaltool/cmorizers/data/cmor_config/CAMS-EAC4.yml @@ -0,0 +1,40 @@ +--- +# Common global attributes for Cmorizer output + + +# Input +filename: 'cams73_v20r2_co2_flux_surface_mm_{year}{month}.nc' +start_year: 1979 +end_year: 2020 +attributes: + dataset_id: CAMS + version: 'v20r2' + tier: 3 + modeling_realm: reanaly + project_id: OBS6 + source: "https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-greenhouse-gas-inversion" + reference: 'cams' + comment: '' + +# Variables to cmorize +variables: + nbp: + mip: Lmon + positive: down + varname: 'tba' + fgco2: + mip: Omon + positive: down + varname: 'tba' + areacella: + mip: fx + varname: area + areacello: + mip: Ofx + varname: area + sftlf: + mip: fx + varname: lsf + sftof: + mip: Ofx + varname: lsf diff --git a/esmvaltool/cmorizers/data/datasets.yml b/esmvaltool/cmorizers/data/datasets.yml index 497a95bc08..d7834e324f 100644 --- a/esmvaltool/cmorizers/data/datasets.yml +++ b/esmvaltool/cmorizers/data/datasets.yml @@ -17,16 +17,16 @@ datasets: analyses covering analysis of monthly rainfall. The dataset provides consistent temporal and spatial analyses across Australia for each observed data variable. This accounts for spatial and temporal gaps in observations. Where possible, the gridded analysis techniques provide useful estimates in data-sparse regions - such as central Australia. - - Time coverage: Site-based data are used to provide gridded climate data at the monthly timescale for rainfall (1900+). - Reference: Evans, A., Jones, D.A., Smalley, R., and Lellyett, S. 2020. An enhanced gridded rainfall analysis scheme - for Australia. Bureau of Meteorology Research Report. No. 41. + such as central Australia. + + Time coverage: Site-based data used to provide gridded climate data at the monthly timescale for rainfall (1900+). + Reference: Evans, A., Jones, D.A., Smalley, R., and Lellyett, S. 2020. An enhanced gridded rainfall analysis + scheme for Australia. Bureau of Meteorology Research Report. No. 41. National Computational Infrastructure (NCI) - Catalogue Record: http://dx.doi.org/10.25914/6009600786063. - Data from NCI (National Computing Infrastructure Australia https://nci.org.au/), + Data from NCI (National Computing Infrastructure Australia https://nci.org.au/), requires an NCI account and access to Gadi(Supercomputer in Canberra) and the project found in catalogue record. Access can be requested through NCI. NCI is an ESGF node (https://esgf.nci.org.au/projects/esgf-nci/) - + ANUClimate: tier: 3 source: "https://dx.doi.org/10.25914/60a10aa56dd1b" @@ -34,9 +34,10 @@ datasets: info: | Data from NCI project requiring an NCI account and access to GADI - ANUClimate 2.0 consists of gridded daily and monthly climate variables across the terrestrial landmass of Australia - from at least 1970 to the present. Rainfall grids are generated from 1900 to the present. The underpinning spatial - models have been developed at the Fenner School of Environment and Society of the Australian National University. + ANUClimate 2.0 consists of gridded daily and monthly climate variables across the terrestrial landmass of + Australia from at least 1970 to the present. Rainfall grids are generated from 1900 to the present. The + underpinning spatial models have been developed at the Fenner School of Environment and Society of the + Australian National University. APHRO-MA: tier: 3 @@ -111,7 +112,7 @@ datasets: files in the same directory CAMS: - tier: 2 + tier: 3 source: https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-greenhouse-gas-inversion?tab=form last_access: 2024-09-09 info: | @@ -119,6 +120,15 @@ datasets: Then, select carbon dioxide, surface flux, surface air sample, monthly mean, as well as the version and years you require to download. + CAMS-EAC4: + tier: 3 + source: https://ads.atmosphere.copernicus.eu/datasets/cams-global-reanalysis-eac4-monthly?tab=download + last_access: 2024-09-30 + info: | + Requires ECMWF account for the Atmosphere Data Store. + Select your variables, as well as all pressure levels and download either + directly or using an API script. + CDS-SATELLITE-ALBEDO: tier: 3 source: https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-albedo?tab=form @@ -571,7 +581,7 @@ datasets: source: https://wui.cmsaf.eu/safira/action/viewDoiDetails?acronym=COMBI_V001 last_access: 2024-02-21 info: | - CDR2 requires registration at EUMETSAT CM SAF, the information on how to + CDR2 requires registration at EUMETSAT CM SAF, the information on how to download the order will be emailed once the order is ready. All files need to be in one directory, not in yearly subdirectories. @@ -896,7 +906,9 @@ datasets: MERRA2: tier: 3 - source: https://goldsmr4.gesdisc.eosdis.nasa.gov/data/MERRA2_MONTHLY/ https://goldsmr5.gesdisc.eosdis.nasa.gov/data/MERRA2_MONTHLY/ + source: | + https://goldsmr4.gesdisc.eosdis.nasa.gov/data/MERRA2_MONTHLY/ + https://goldsmr5.gesdisc.eosdis.nasa.gov/data/MERRA2_MONTHLY/ last_access: 2022-09-13 info: | Use automatic download. That will download monthly data but with @@ -1084,7 +1096,7 @@ datasets: last_access: 2023-12-04 info: | Download the following files: - ersst.yyyymm.nc + ersst.yyyymm.nc for years 1854 to 2020 NOAA-ERSSTv5: @@ -1093,7 +1105,7 @@ datasets: last_access: 2023-12-04 info: | Download the following files: - ersst.v5.yyyymm.nc + ersst.v5.yyyymm.nc for years 1854 onwards NOAAGlobalTemp: @@ -1120,13 +1132,13 @@ datasets: Download daily data from: https://nsidc.org/data/NSIDC-0116 Login required for download, and also requires citation only to use - + NSIDC-G02202-sh: tier: 3 source: https://polarwatch.noaa.gov/erddap/griddap/nsidcG02202v4shmday last_access: 2023-05-13 info: | - Download monthly data. + Download monthly data. Login required for download, and also requires citation only to use OceanSODA-ETHZ: diff --git a/esmvaltool/cmorizers/data/downloaders/datasets/cams_eac4.py b/esmvaltool/cmorizers/data/downloaders/datasets/cams_eac4.py new file mode 100644 index 0000000000..f68374feac --- /dev/null +++ b/esmvaltool/cmorizers/data/downloaders/datasets/cams_eac4.py @@ -0,0 +1,68 @@ +"""Script to download CAMS data from the Climate Data Store.""" + +import datetime + +from esmvaltool.cmorizers.data.downloaders.cds import CDSDownloader + + +def download_dataset(config, dataset, dataset_info, start_date, end_date, + overwrite): + """Download dataset. + + Parameters + ---------- + config : dict + ESMValTool's user configuration + dataset : str + Name of the dataset + dataset_info : dict + Dataset information from the datasets.yml file + start_date : datetime + Start of the interval to download + end_date : datetime + End of the interval to download + overwrite : bool + Overwrite already downloaded files + """ + if start_date is None: + start_date = datetime.datetime(2003, 1, 1) + if end_date is None: + end_date = datetime.datetime(2023, 12, 31) + # #end_date = datetime.datetime(2022, 12, 1) + + variables = [ + 'geopotential', 'hydroxyl_radical', 'methane_chemistry', 'ozone', + 'specific_humidity', 'vertical_velocity', 'nitrogen_monoxide' + ] + + for var in variables: + + downloader = CDSDownloader( + product_name='cams-global-reanalysis-eac4-monthly', + request_dictionary={ + 'variable': [var], + 'pressure_level': [ + "1", "2", "3", "5", "7", "10", "20", "30", "50", "70", + "100", "150", "200", "250", "300", "400", "500", "600", + "700", "800", "850", "900", "925", "950", "1000" + ], + "product_type": ["monthly_mean"], + "year": [ + "2003", "2004", "2005", "2006", "2007", "2008", "2009", + "2010", "2011", "2012", "2013", "2014", "2015", "2016", + "2017", "2018", "2019", "2020", "2021", "2022", "2023" + ], + "month": [ + "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", + "11", "12" + ], + "data_format": + 'grib' + }, + config=config, + dataset=dataset, + dataset_info=dataset_info, + overwrite=overwrite, + ) + + downloader.download_request(f"CAMS_EAC4_{var}_2003_2023.grib") From c3f05de1fee52d70f43b636e0aae0f73d1ccaff2 Mon Sep 17 00:00:00 2001 From: Bettina Gier Date: Tue, 29 Oct 2024 17:53:25 +0100 Subject: [PATCH 3/3] more CAMS-EAC$ work --- .../cmorizers/data/cmor_config/CAMS-EAC4.yml | 62 +++++++++++-------- esmvaltool/cmorizers/data/datasets.yml | 6 +- 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/esmvaltool/cmorizers/data/cmor_config/CAMS-EAC4.yml b/esmvaltool/cmorizers/data/cmor_config/CAMS-EAC4.yml index 42734f84e6..0ec9eed88c 100644 --- a/esmvaltool/cmorizers/data/cmor_config/CAMS-EAC4.yml +++ b/esmvaltool/cmorizers/data/cmor_config/CAMS-EAC4.yml @@ -3,38 +3,46 @@ # Input -filename: 'cams73_v20r2_co2_flux_surface_mm_{year}{month}.nc' -start_year: 1979 -end_year: 2020 +filename: 'CAMS_EAC4_{variable}_{start_year}{end_year}.grib' +start_year: 2003 +end_year: 2023 attributes: - dataset_id: CAMS - version: 'v20r2' + dataset_id: CAMS-EAC4 + version: 'v2024' tier: 3 modeling_realm: reanaly project_id: OBS6 - source: "https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-greenhouse-gas-inversion" - reference: 'cams' + source: "https://ads.atmosphere.copernicus.eu/datasets/cams-global-reanalysis-eac4-monthly?tab=overview" + reference: 'cams-eac4' comment: '' # Variables to cmorize variables: - nbp: - mip: Lmon - positive: down - varname: 'tba' - fgco2: - mip: Omon - positive: down - varname: 'tba' - areacella: - mip: fx - varname: area - areacello: - mip: Ofx - varname: area - sftlf: - mip: fx - varname: lsf - sftof: - mip: Ofx - varname: lsf + zg: + mip: Amon + varname: 'geopotential' # divide by g_0 = 9.80665 m/s-2 + unit: 'm2 s-2' # to m + oh: + mip: Amon + varname: 'hydroxyl_radical' + unit: 'kg kg-1' # to mol mol-1 + ch4: + mip: Amon + varname: 'methane_chemistry' + unit: 'kg kg-1' # to mol mol-1 + co: + mip: Amon + varname: 'nitrogen_monoxide' + unit: 'kg kg-1' # to mol mol-1 + o3: + mip: Amon + varname: 'ozone' + unit: 'kg kg-1' # to mol mol-1 + hus: + mip: Amon + varname: 'specific humidity' + unit: 'kg kg-1' # 1 + wap: + mip: Amon + varname: 'vertical velocity' + unit: 'Pa s-1' \ No newline at end of file diff --git a/esmvaltool/cmorizers/data/datasets.yml b/esmvaltool/cmorizers/data/datasets.yml index f8f16736ae..b5691ffbfc 100644 --- a/esmvaltool/cmorizers/data/datasets.yml +++ b/esmvaltool/cmorizers/data/datasets.yml @@ -111,8 +111,8 @@ datasets: CAMS: tier: 3 - source: https://ads.atmosphere.copernicus.eu/cdsapp#!/dataset/cams-global-greenhouse-gas-inversion?tab=form - last_access: 2024-09-09 + source: https://ads.atmosphere.copernicus.eu/datasets/cams-global-greenhouse-gas-inversion?tab=overview + last_access: 2024-10-28 info: | You will need to make an account with the CDS data store to download the data. Then, select carbon dioxide, surface flux, surface air sample, monthly mean, @@ -120,7 +120,7 @@ datasets: CAMS-EAC4: tier: 3 - source: https://ads.atmosphere.copernicus.eu/datasets/cams-global-reanalysis-eac4-monthly?tab=download + source: https://ads.atmosphere.copernicus.eu/datasets/cams-global-reanalysis-eac4-monthly?tab=overview last_access: 2024-09-30 info: | Requires ECMWF account for the Atmosphere Data Store.