Controlled Vocabularies (CVs) and Data Request

All CMIP6 outputs are written in NetCDF files in conformance with the CMIP standards. The Controlled Vocabularies (CVs) and Data Request play a key role in ensuring uniformity in the description of data sets across all models.

The CMIP6 CVs gives a well-defined set of global attributes that are recorded in each CMIP6 model output, providing information necessary for interpreting the data. The data of CVs for use in CMIP6 is stored as JSON files in a GitHub Repo.

The CMIP6 Data Request defines all the quantities from CMIP6 simulations that should be archived. This includes both quantities of general interest needed from most of the CMIP6-endorsed model intercomparison projects (MIPs) and quantities that are more specialized and only of interest to a single endorsed MIP. The Data Request data is stored a Microsoft Excel file (CMIP6_MIP_tables.xlsx) in a Subversion repo.

For more information, please see:

Introduce the Cmip6Dict class

{epwshiftr} provides a Cmip6Dict class to help you fetch, parse and store CMIP6 CVs and Data Request.

Create a Cmip6Dict object

You can create a new Cmip6Dict object using the cmip6_dict() function. It takes no argument and simply returns an empty Cmip6Dict object.

It is an R6 object with reference semantics. All methods in an R6 object can be invoked using the $method_name() style.

dict <- cmip6_dict()
dict
#> ══ CMIP6 Dictionary ════════════════════════════════════════════════════════════
#> • Built at: <Empty>
#> 
#> ── Controlled Vocabularies (CVs) ───────────────────────────────────────────────
#> • CV Version: <Empty>
#> 
#>   ── Data Request (DReq) ─────────────────────────────────────────────────────────
#> • DReq Version: <Empty>

You can use $is_empty() to check if there are any contents in current Cmip6Dict.

dict$is_empty()
#> [1] TRUE

Fetch data of CVs and Data Request

After created, you can use $build() to fetch all data of CMIP6 CVs and Data Request.

The GitHub RESTful APIs are used to to fetch the latest tag of CVs and Data Request. You can specify your GitHub token by specifying the token argument in $build(). By default, it will uses GITHUB_PAT or GITHUB_TOKEN environment variable if exists.

Currently, all supported CVs are:

  1. drs: Data Reference Syntax (DRS).
  2. activity_id: Activity identifiers, e.g. HighResMIP, ScenarioMIP.
  3. experiment_id: Root experiment identifiers, e.g. historical, ssp126.
  4. frequency: Sampling frequencies, e.g. mon, day.
  5. grid_label: Grid identifiers, e.g. gn, gr.
  6. institution_id: Institution identifiers, e.g. AWI, CAS.
  7. nominal_resolution: Approximate horizontal resolutions, e.g. 50 km, 100 km.
  8. realm: Realms where variables are defined, e.g. atmos, ocean.
  9. required_global_attributes: Names of required global attributes.
  10. source_id: Model identifiers, e.g. GFDL-CM2-1, ACCESS-CM2.
  11. source_type: Model configurations, e.g. AGCM, OGCM.
  12. sub_experiment_id: Description of sub-experiment, e.g. none, s1960.
  13. table_id: Table identifiers, e.g. Amon, Oday.
dict$build()
#> ⠙ Fetching CMIP6 Dictionary...
#> ⠙ Fetching latest tag of CMIP6 CVs...
#>  Fetched latest tag of CMIP6 CVs successfully. [424ms]
#> 
#> ⠙ Fetching CMIP6 Dictionary...⠙ Downloading data of CMIP6 CVs []...
#> ⠹ Downloading data of CMIP6 CVs [CMIP6_realm.json]...
#>  Downloaded data of CMIP6 CVs successfully. [2.4s]
#> 
#> ⠙ Fetching CMIP6 Dictionary...⠙ Fetching latest tag of CMIP6 DReq...
#>  Fetched latest tag of CMIP6 DReq successfully. [268ms]
#> 
#> ⠙ Fetching CMIP6 Dictionary...⠙ Downloading data of CMIP6 DReq...
#>  Downloaded data of CMIP6 DReq successfully. [308ms]
#> 
#> ⠙ Fetching CMIP6 Dictionary... Fetched CMIP6 Dictionary successfully at 2024-03-12 14:54:17.682265 [3.7s]
#> 
#> ══ CMIP6 Dictionary ════════════════════════════════════════════════════════════
#> • Built at: 2024-03-12 14:54:17.681772
#> 
#> ── Controlled Vocabularies (CVs) ───────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Contents [13 types]:
#>   • drs [6 items]
#>   • activity_id [24 items]
#>   • experiment_id [322 items]
#>   • frequency [16 items]
#>   • grid_label [45 items]
#>   • institution_id [49 items]
#>   • nominal_resolution [15 items]
#>   • realm [8 items]
#>   • required_global_attributes [30 items]
#>   • source_id [133 items]
#>   • source_type [10 items]
#>   • sub_experiment_id [74 items]
#>   • table_id [43 items]
#> 
#>   ── Data Request (DReq) ─────────────────────────────────────────────────────────
#> • DReq Version: `1.0.33`
#> • DReq Contents: 2062 Variables from 43 Tables and 9 Realms
dict$is_empty()
#> [1] FALSE

You can get the version of the CV collection and Data Request using $version() method. It returns a list of two numeric_versions giving you the current version of fetched CV collection (cvs) and Data Request (dreq):

dict$version()
#> $cvs
#> [1] '6.2.58.63'
#> 
#> $dreq
#> [1] '1.0.33'

The last built time can be retrieved using the $built_time() method:

last_built <- dict$built_time()
last_built
#> [1] "2024-03-12 14:54:17 UTC"

The last modified time of the CV collection and each CV can be retrieved using the $timestamp() method:

dict$timestamp()
#> $cvs
#> NULL
#> 
#> $drs
#> [1] "2022-06-07 21:29:45 UTC"
#> 
#> $activity_id
#> [1] "2018-03-06 00:39:09 UTC"
#> 
#> $experiment_id
#> [1] "2020-12-15 20:25:59 UTC"
#> 
#> $frequency
#> [1] "2021-05-24 14:48:15 UTC"
#> 
#> $grid_label
#> [1] "2017-09-09 01:12:00 UTC"
#> 
#> $institution_id
#> [1] "2022-08-16 04:41:00 UTC"
#> 
#> $nominal_resolution
#> [1] "2016-11-15 23:04:00 UTC"
#> 
#> $realm
#> [1] "2017-04-18 19:03:00 UTC"
#> 
#> $required_global_attributes
#> [1] "2019-12-19 23:32:17 UTC"
#> 
#> $source_id
#> [1] "2024-01-25 20:02:59 UTC"
#> 
#> $source_type
#> [1] "2017-09-09 00:57:00 UTC"
#> 
#> $sub_experiment_id
#> [1] "2019-06-17 18:01:51 UTC"
#> 
#> $table_id
#> [1] "2017-01-13 16:27:00 UTC"

Extract CV and Data Request data

The CV and Data Request data can be extracted using the $get(type) method, where type is the data type of interest. For Data Request, you can use "dreq" as the type name.

The returned data type are:

  1. For type "drs", “activity_id”,“frequency”,“grid_label”,“institution_id”,“source_type”and“sub_experiment_id”`, a [list].

  2. For type "experiment_id", "source_id" and "dreq", a [data.table].

  3. For "nominal_resolution", "required_global_attributes" and "table_id", a [character] vector.

# Data Request
dict$get("dreq")
#> ══ CMIP6 Data Request ══════════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <HEADER METADATA> ───────────────────────────────────────────────────────────
#> • DReq Version: `1.0.33`
#> • CMOR Version: `3.5`
#> • MIP Era: `CMIP6`
#> • Missing Value:
#>     • Real: `1e+20`
#>     • Int: `-999`
#> • Conventions: `CF-1.7 CMIP-6.2`
#> • `2062` Variables from `43` Tables and `9` Realms
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <data.table>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> 
#>   ── [Variable: "clt"] ──
#>   • Table id: "3hr"
#>   • Modeling realm: "atmos"
#>   • Standard name: "cloud_area_fraction"
#>   • Long name: "Total Cloud Cover Percentage"
#>   • Frequency: "3hr"
#>   • Units: "%"
#>   • Cell methods: "area: time: mean"
#>   • Cell measures: "area: areacella"
#>   • Comment: "Total cloud area fraction (reported as a percentage) for the
#>     whole atmospheric column, as seen from the surface or the top of the
#>     atmosphere. Includes both large-scale and convective cloud."
#>   • Dimensions: "longitude latitude time"
#>   • Out name: "clt"
#>   • Type: "real"
#>   • Positive: NA
#>   • Valid min: NA
#>   • Valid max: NA
#>   • Ok min mean abs: NA
#>   • Ok max mean abs: NA
#> 
#>   ── [Variable: "hfls"] ──
#>   • Table id: "3hr"
#>   • Modeling realm: "atmos"
#>   • Standard name: "surface_upward_latent_heat_flux"
#>   • Long name: "Surface Upward Latent Heat Flux"
#>   • Frequency: "3hr"
#>   • Units: "W m-2"
#>   • Cell methods: "area: time: mean"
#>   • Cell measures: "area: areacella"
#>   • Comment: "The surface called 'surface' means the lower boundary of the
#>     atmosphere. 'Upward' indicates a vector component which is positive when
#>     directed upward (negative downward). The surface latent heat flux is the
#>     exchange of heat between the surface and the air on account of evaporation
#>     (including sublimation). In accordance with common usage in geophysical
#>     disciplines, 'flux' implies per unit area, called 'flux density' in
#>     physics."
#>   • Dimensions: "longitude latitude time"
#>   • Out name: "hfls"
#>   • Type: "real"
#>   • Positive: "up"
#>   • Valid min: NA
#>   • Valid max: NA
#>   • Ok min mean abs: NA
#>   • Ok max mean abs: NA
#> 
#>   ── [Variable: "hfss"] ──
#>   • Table id: "3hr"
#>   • Modeling realm: "atmos"
#>   • Standard name: "surface_upward_sensible_heat_flux"
#>   • Long name: "Surface Upward Sensible Heat Flux"
#>   • Frequency: "3hr"
#>   • Units: "W m-2"
#>   • Cell methods: "area: time: mean"
#>   • Cell measures: "area: areacella"
#>   • Comment: "The surface sensible heat flux, also called turbulent heat
#>     flux, is the exchange of heat between the surface and the air by motion of
#>     air."
#>   • Dimensions: "longitude latitude time"
#>   • Out name: "hfss"
#>   • Type: "real"
#>   • Positive: "up"
#>   • Valid min: NA
#>   • Valid max: NA
#>   • Ok min mean abs: NA
#>   • Ok max mean abs: NA
#> 
#> # ... with 2059 more items

# DRS
dict$get("drs")
#> ══ CMIP6CV Data Reference Syntax (DRS) ═════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • DRS Modified: 2022-06-07 21:29:45 UTC
#> • DRS Note: "Add CMIP6 Data Reference Syntax (DRS) templates"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <list>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> • Directory path example:
#>   "CMIP6/CMIP/MOHC/HadGEM3-GC31-MM/historical/r1i1p1f3/Amon/tas/gn/v20191207/"
#> • Directory path sub experiment example:
#>   "CMIP6/DCPP/MOHC/HadGEM3-GC31-MM/dcppA-hindcast/s1960-r1i1p1f2/Amon/tas/gn/v20200417/"
#> • Directory path template:
#>   "<mip_era>/<activity_id>/<institution_id>/<source_id>/<experiment_id>/<member_id>/<table_id>/<variable_id>/<grid_label>/<version>"
#> • Filename example:
#>   "tas_Amon_HadGEM3-GC31-MM_historical_r1i1p1f3_gn_185001-186912.nc"
#> • Filename sub experiment example:
#>   "tas_Amon_HadGEM3-GC31-MM_dcppA-hindcast_s1960-r1i1p1f2_gn_196011-196012.nc"
#> # ... with 1 more item

# activity_id
dict$get("activity_id")
#> ══ CMIP6CV Activity ID ═════════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • ActivityId Modified: 2018-03-06 00:39:09 UTC
#> • ActivityId Note: "Update activity_id to include CDRMIP and PAMIP"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <list>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> • AerChemMIP: "Aerosols and Chemistry Model Intercomparison Project"
#> • C4MIP: "Coupled Climate Carbon Cycle Model Intercomparison Project"
#> • CDRMIP: "Carbon Dioxide Removal Model Intercomparison Project"
#> • CFMIP: "Cloud Feedback Model Intercomparison Project"
#> • CMIP: "CMIP DECK: 1pctCO2, abrupt4xCO2, amip, esm-piControl,
#>   esm-historical, historical, and piControl experiments"
#> # ... with 19 more items

# experiment_id
dict$get("experiment_id")
#> ══ CMIP6CV Experiment ID ═══════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • ExperimentId Modified: 2020-12-15 20:25:59 UTC
#> • ExperimentId Note: "Revise experiment_id historical parent experiments"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <data.table>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> 
#>   ── [Experiment id: "1pctCO2"] ──
#>   • Experiment: "1 percent per year increase in CO2"
#>   • Description: "DECK: 1pctCO2"
#>   • Tier: 1
#>   • Start year: NA
#>   • End year: NA
#>   • Min number yrs per sim: 150
#>   • Required model components: "AOGCM"
#>   • Parent experiment id: "piControl"
#>   • Sub experiment id: "none"
#>   • Activity id: "CMIP"
#>   • Parent activity id: "CMIP"
#>   • Additional allowed model components: "AER", "CHEM", and "BGC"
#> 
#>   ── [Experiment id: "1pctCO2-4xext"] ──
#>   • Experiment: "extension from year 140 of 1pctCO2 with 4xCO2"
#>   • Description: "branched from 1pctCO2 run at year 140 and run with CO2
#>     fixed at 4x pre-industrial concentration"
#>   • Tier: 1
#>   • Start year: NA
#>   • End year: NA
#>   • Min number yrs per sim: 210
#>   • Required model components: "AOGCM"
#>   • Parent experiment id: "1pctCO2"
#>   • Sub experiment id: "none"
#>   • Activity id: "ISMIP6"
#>   • Parent activity id: "CMIP"
#>   • Additional allowed model components: "AER", "CHEM", and "BGC"
#> 
#>   ── [Experiment id: "1pctCO2-bgc"] ──
#>   • Experiment: "biogeochemically-coupled version of 1 percent per year
#>     increasing CO2 experiment"
#>   • Description: "Biogeochemically-coupled specified concentration simulation
#>     in which CO2 increases at a rate of 1% per year until quadrupling"
#>   • Tier: 1
#>   • Start year: NA
#>   • End year: NA
#>   • Min number yrs per sim: 150
#>   • Required model components: "AOGCM" and "BGC"
#>   • Parent experiment id: "piControl"
#>   • Sub experiment id: "none"
#>   • Activity id: "C4MIP"
#>   • Parent activity id: "CMIP"
#>   • Additional allowed model components: "AER" and "CHEM"
#> 
#> # ... with 319 more items

# frequency
dict$get("frequency")
#> ══ CMIP6CV Frequency ═══════════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • Frequency Modified: 2021-05-24 14:48:15 UTC
#> • Frequency Note: "Update description of 3hr and 6hr frequencies"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <list>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> • 1hr: "sampled hourly"
#> • 1hrCM: "monthly-mean diurnal cycle resolving each day into 1-hour means"
#> • 1hrPt: "sampled hourly, at specified time point within an hour"
#> • 3hr: "3 hourly mean samples"
#> • 3hrPt: "sampled 3 hourly, at specified time point within the time period"
#> # ... with 11 more items

# grid_label
dict$get("grid_label")
#> ══ CMIP6CV Grid Label ══════════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • GridLabel Modified: 2017-09-09 01:12:00 UTC
#> • GridLabel Note: "Issue395 durack1 augment grid_label with description
#>   (#401)"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <list>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> • gm: "global mean data"
#> • gn: "data reported on a model's native grid"
#> • gna: "data reported on a native grid in the region of Antarctica"
#> • gng: "data reported on a native grid in the region of Greenland"
#> • gnz: "zonal mean data reported on a model's native latitude grid"
#> # ... with 40 more items

# institution_id
dict$get("institution_id")
#> ══ CMIP6CV Institution ID ══════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • InstitutionId Modified: 2022-08-16 04:41:00 UTC
#> • InstitutionId Note: "Register institution_id UCSB for E3SM-1-0"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <list>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> • AER: "Research and Climate Group, Atmospheric and Environmental Research,
#>   131 Hartwell Avenue, Lexington, MA 02421, USA"
#> • AS-RCEC: "Research Center for Environmental Changes, Academia Sinica,
#>   Nankang, Taipei 11529, Taiwan"
#> • AWI: "Alfred Wegener Institute, Helmholtz Centre for Polar and Marine
#>   Research, Am Handelshafen 12, 27570 Bremerhaven, Germany"
#> • BCC: "Beijing Climate Center, Beijing 100081, China"
#> • CAMS: "Chinese Academy of Meteorological Sciences, Beijing 100081, China"
#> # ... with 44 more items

# nominal_resolution
dict$get("nominal_resolution")
#> ══ CMIP6CV Nominal Resolution ══════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • NominalResolution Modified: 2016-11-15 23:04:00 UTC
#> • NominalResolution Note: "Issue141 durack1 update grid_resolution to
#>   nominal_resolution (#143)"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <character>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> "0.5 km", "1 km", "10 km", "100 km", "1000 km", "10000 km", "1x1 degree", "2.5
#> km", …, "500 km", and "5000 km"
#> # ... with 5 more items

# realm
dict$get("realm")
#> ══ CMIP6CV Realm ═══════════════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • Realm Modified: 2017-04-18 19:03:00 UTC
#> • Realm Note: "Issue285 durack1 update realm format (#290)"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <list>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> • aerosol: "Aerosol"
#> • atmos: "Atmosphere"
#> • atmosChem: "Atmospheric Chemistry"
#> • land: "Land Surface"
#> • landIce: "Land Ice"
#> # ... with 3 more items

# required_global_attributes
dict$get("required_global_attributes")
#> ══ CMIP6CV Required Global Attributes ══════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • ReqGlobAttr Modified: 2019-12-19 23:32:17 UTC
#> • ReqGlobAttr Note: "Reverting addition of external_variables to
#>   required_global_attributes"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <character>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> "Conventions", "activity_id", "creation_date", "data_specs_version",
#> "experiment", "experiment_id", "forcing_index", "frequency", …, "variable_id",
#> and "variant_label"
#> # ... with 20 more items

# source_id
dict$get("source_id")
#> ══ CMIP6CV Source ID ═══════════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • SourceId Modified: 2024-01-25 20:02:59 UTC
#> • SourceId Note: "Registered source_id E3SM-2-1"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <data.table>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> 
#>   ── [Source id: "4AOP-v1-5"] ──
#>   • Release year: 2019
#>   • Institution id: "IPSL"
#>   • Label: "4AOP-v1-5"
#>   • Label extended: "Line-By-Line Radiative Transfer Model v1.5, Laboratoire
#>     Meteorologie Dynamique, GEISA spectroscopic database"
#>   • Cohort: "Published"
#>   • Activity participation: "RFMIP"
#>   • Model component:
#>       • Aerosol:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • Atmos:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • AtmosChem:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • Land:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • LandIce:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • Ocean:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • OcnBgchem:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • SeaIce:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>   • License info:
#>       • Exceptions contact: "@listes.ipsl.fr <- ipsl-cmip6"
#>       • History: "2020-06-11: initially published under CC BY-NC-SA 4.0;
#>         2022-06-03: relaxed to CC BY 4.0"
#>       • Id: "CC BY 4.0"
#>       • License: "Creative Commons Attribution 4.0 International (CC BY 4.0;
#>         https://creativecommons.org/licenses/by/4.0/)"
#>       • Source specific info: ""
#>       • Url: "https://creativecommons.org/licenses/by/4.0/"
#> 
#>   ── [Source id: "ACCESS-CM2"] ──
#>   • Release year: 2019
#>   • Institution id: "CSIRO-ARCCSS"
#>   • Label: "ACCESS-CM2"
#>   • Label extended: "Australian Community Climate and Earth System Simulator
#>     Climate Model Version 2"
#>   • Cohort: "Published"
#>   • Activity participation: "CMIP", "DAMIP", "FAFMIP", "OMIP", "RFMIP",
#>     "SIMIP", and "ScenarioMIP"
#>   • Model component:
#>       • Aerosol:
#>         • Description: "UKCA-GLOMAP-mode"
#>         • Native nominal resolution: "250 km"
#>       • Atmos:
#>         • Description: "MetUM-HadGEM3-GA7.1 (N96; 192 x 144
#>           longitude/latitude; 85 levels; top level 85 km)"
#>         • Native nominal resolution: "250 km"
#>       • AtmosChem:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • Land:
#>         • Description: "CABLE2.5"
#>         • Native nominal resolution: "250 km"
#>       • LandIce:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • Ocean:
#>         • Description: "ACCESS-OM2 (GFDL-MOM5, tripolar primarily 1deg; 360 x
#>           300 longitude/latitude; 50 levels; top grid cell 0-10 m)"
#>         • Native nominal resolution: "100 km"
#>       • OcnBgchem:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • SeaIce:
#>         • Description: "CICE5.1.2 (same grid as ocean)"
#>         • Native nominal resolution: "100 km"
#>   • License info:
#>       • Exceptions contact: "@csiro.au <- access_csiro"
#>       • History: "2019-11-08: initially published under CC BY-SA 4.0;
#>         2022-06-10: relaxed to CC BY 4.0"
#>       • Id: "CC BY 4.0"
#>       • License: "Creative Commons Attribution 4.0 International (CC BY 4.0;
#>         https://creativecommons.org/licenses/by/4.0/)"
#>       • Source specific info: ""
#>       • Url: "https://creativecommons.org/licenses/by/4.0/"
#> 
#>   ── [Source id: "ACCESS-ESM1-5"] ──
#>   • Release year: 2019
#>   • Institution id: "CSIRO"
#>   • Label: "ACCESS-ESM1.5"
#>   • Label extended: "Australian Community Climate and Earth System Simulator
#>     Earth System Model Version 1.5"
#>   • Cohort: "Published"
#>   • Activity participation: "C4MIP", "CDRMIP", "CMIP", "DAMIP", "LUMIP",
#>     "OMIP", "PMIP", "RFMIP", and "ScenarioMIP"
#>   • Model component:
#>       • Aerosol:
#>         • Description: "CLASSIC (v1.0)"
#>         • Native nominal resolution: "250 km"
#>       • Atmos:
#>         • Description: "HadGAM2 (r1.1, N96; 192 x 145 longitude/latitude; 38
#>           levels; top level 39255 m)"
#>         • Native nominal resolution: "250 km"
#>       • AtmosChem:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • Land:
#>         • Description: "CABLE2.4"
#>         • Native nominal resolution: "250 km"
#>       • LandIce:
#>         • Description: "none"
#>         • Native nominal resolution: "none"
#>       • Ocean:
#>         • Description: "ACCESS-OM2 (MOM5, tripolar primarily 1deg; 360 x 300
#>           longitude/latitude; 50 levels; top grid cell 0-10 m)"
#>         • Native nominal resolution: "100 km"
#>       • OcnBgchem:
#>         • Description: "WOMBAT (same grid as ocean)"
#>         • Native nominal resolution: "100 km"
#>       • SeaIce:
#>         • Description: "CICE4.1 (same grid as ocean)"
#>         • Native nominal resolution: "100 km"
#>   • License info:
#>       • Exceptions contact: "@csiro.au <- access_csiro"
#>       • History: "2019-11-12: initially published under CC BY-SA 4.0;
#>         2022-06-10: relaxed to CC BY 4.0"
#>       • Id: "CC BY 4.0"
#>       • License: "Creative Commons Attribution 4.0 International (CC BY 4.0;
#>         https://creativecommons.org/licenses/by/4.0/)"
#>       • Source specific info: ""
#>       • Url: "https://creativecommons.org/licenses/by/4.0/"
#> 
#> # ... with 130 more items

# source_type
dict$get("source_type")
#> ══ CMIP6CV Source Type ═════════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • SourceType Modified: 2017-09-09 00:57:00 UTC
#> • SourceType Note: "Issue396 durack1 augment source_type with description
#>   (#399)"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <list>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> • AER: "aerosol treatment in an atmospheric model where concentrations are
#>   calculated based on emissions, transformation, and removal processes (rather
#>   than being prescribed or omitted entirely)"
#> • AGCM: "atmospheric general circulation model run with prescribed ocean
#>   surface conditions and usually a model of the land surface"
#> • AOGCM: "coupled atmosphere-ocean global climate model, additionally
#>   including explicit representation of at least the land and sea ice"
#> • BGC: "biogeochemistry model component that at the very least accounts for
#>   carbon reservoirs and fluxes in the atmosphere, terrestrial biosphere, and
#>   ocean"
#> • CHEM: "chemistry treatment in an atmospheric model that calculates
#>   atmospheric oxidant concentrations (including at least ozone), rather than
#>   prescribing them"
#> # ... with 5 more items

# sub_experiment_id
dict$get("sub_experiment_id")
#> ══ CMIP6CV Sub Experiment ID ═══════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • SubExperimentId Modified: 2019-06-17 18:01:51 UTC
#> • SubExperimentId Note: "Revise sub_experiment_id values"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <list>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> • none: "none"
#> • s1910: "initialized near end of year 1910"
#> • s1920: "initialized near end of year 1920"
#> • s1950: "initialized near end of year 1950"
#> • s1960: "initialized near end of year 1960"
#> # ... with 69 more items

# table_id
dict$get("table_id")
#> ══ CMIP6CV Table ID ════════════════════════════════════════ CMIP6 Dictionary ══
#> 
#> ── <VERSION METADATA> ──────────────────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Modified: 2024-01-30 19:31:11 UTC
#> • TableId Modified: 2017-01-13 16:27:00 UTC
#> • TableId Note: "Issue199 durack1 update table_id to Data Request v1.0
#>   (#200)"
#> 
#> ── <STORED TYPE> ───────────────────────────────────────────────────────────────
#> • Stored type: <character>
#> 
#> ── <VALUES> ────────────────────────────────────────────────────────────────────
#> "3hr", "6hrLev", "6hrPlev", "6hrPlevPt", "AERday", "AERhr", "AERmon",
#> "AERmonZ", …, "day", and "fx"
#> # ... with 33 more items

Store and reuse the Cmip6Dict object

$save() method stores all the core data of current Cmip6Dict object into an RDS file named CMIP6DICT in the specified folder. It returns the full path of the saved RDS file.

dict$save(tempdir())
#> [1] "/tmp/RtmpmOHlxM/CMIP6DICT"

This file can be reloaded via $load() method to restore the last state of current Cmip6Dict object. It reads the RDS file named CMIP6DICT and loads the CVs and Data Request data.

new_dict <- cmip6_dict()
new_dict$load(tempdir())
#>  Loaded CMIP6 Dictionary that was built at 2024-03-12 14:54:17.681772.
#> ══ CMIP6 Dictionary ════════════════════════════════════════════════════════════
#> • Built at: 2024-03-12 14:54:17.681772
#> 
#> ── Controlled Vocabularies (CVs) ───────────────────────────────────────────────
#> • CV Version: `6.2.58.63`
#> • CV Contents [13 types]:
#>   • drs [6 items]
#>   • activity_id [24 items]
#>   • experiment_id [322 items]
#>   • frequency [16 items]
#>   • grid_label [45 items]
#>   • institution_id [49 items]
#>   • nominal_resolution [15 items]
#>   • realm [8 items]
#>   • required_global_attributes [30 items]
#>   • source_id [133 items]
#>   • source_type [10 items]
#>   • sub_experiment_id [74 items]
#>   • table_id [43 items]
#> 
#>   ── Data Request (DReq) ─────────────────────────────────────────────────────────
#> • DReq Version: `1.0.33`
#> • DReq Contents: 2062 Variables from 43 Tables and 9 Realms