Skip to contents

In this vignette, we illustrate how to download and preprocess the climate data we used to downscale continuous climate data from the Last Glacial Maximum (~22ka BP), to the future (2100 cal years). In particular, we used data from TraCE21ka paleoreconstruction for the past, Climate Model Intercomparison Project 5 (CIMP5) for the future, and Uncertainties in Ensembles of Regional ReAnalyses (UERRA) for historical period (i.e., 1961-1990) at high spatial resolution.

TraCE21ka paleoclimate data

Data download

TraCE21ka paleoclimate data can be downloaded from https://www.earthsystemgrid.org/project/trace.html. This website, however, does not provide documentation with detailed information (e.g., meaning of file names, variable names, units, etcetera). You can find such information in the following link (http://www.cgd.ucar.edu/ccr/TraCE/fields.html). Complementary information can be found in documentation website for the model and the developing laboratory: http://www.cesm.ucar.edu/projects/community-projects/LENS/data-sets.html and http://www.cesm.ucar.edu/models/atm-cam/docs/cam2.0/UsersGuide/UG-45.html.

We opted to download files for all time periods (since 22.000 years BP to 1990 CE) for ‘surface temperature (radiative)’ (TS), ‘maximum surface temperature over output period’ (TSMX), ‘minimum surface temperature over output period’ (TSMN), ‘surface pressure’ (PS), ‘convective precipitation rate (liq + ice)’ (PRECC), ‘relative humidity’ (RELHUM), ‘wind speed (horizontal and vertical components)’ (U + V) and ‘vertically-integrated total cloud’ (CLDTOT).

Inspect files and variables

Downloaded files can be inspected with functions from the loadeR package, using the the following code (select a variable):

di.trace <- loadeR::dataInventory("Data/TraCE21ka/TSMX/trace.36.400BP-1990CE.cam2.h0.TSMX.2160101-2204012.nc")
str(di.trace)
di.trace <- loadeR::dataInventory("Data/TraCE21ka/TSMN/trace.36.400BP-1990CE.cam2.h0.TSMN.2160101-2204012.nc")
str(di.trace)
di.trace <- loadeR::dataInventory("Data/TraCE21ka/TS/trace.36.400BP-1990CE.cam2.h0.TS.2160101-2204012.nc")
str(di.trace)
di.trace <- loadeR::dataInventory("Data/TraCE21ka/PRECC/trace.36.400BP-1990CE.cam2.h0.PRECC.2160101-2204012.nc")
str(di.trace)

The file for relative humidity in TraCE21ka have information for different atmospheric levels. In this case, we first selected surface preasure level and then create a new file with the information to simplify the subsequent computations.

# BASH script 
cdo sellevel,992.5561 Data/TraCE21ka/RELHUM/trace.36.400BP-1990CE.cam2.h0.RELHUM.2160101-2204012.nc Data/TraCE21ka/RELHUM/surface_level/trace.36.400BP-1990CE.cam2.h0.RELHUM.2160101-2204012.nc

Once, the surface pressure level was selected the new file was inspected.

di.trace <- loadeR::dataInventory("Data/TraCE21ka/RELHUM/surface_level/trace.36.400BP-1990CE.cam2.h0.RELHUM.2160101-2204012.nc")
str(di.trace)
di.trace <- loadeR::dataInventory("Data/TraCE21ka/CLDTOT/trace.36.400BP-1990CE.cam2.h0.CLDTOT.2160101-2204012.nc")
str(di.trace)
di.trace <- loadeR::dataInventory("Data/TraCE21ka/PS/trace.36.400BP-1990CE.cam2.h0.PS.2160101-2204012.nc")
str(di.trace)
di.trace <- loadeR::dataInventory("Data/TraCE21ka/U/trace.36.400BP-1990CE.cam2.h0.U.2160101-2204012.nc")
str(di.trace)
di.trace <- loadeR::dataInventory("Data/TraCE21ka/V/trace.36.400BP-1990CE.cam2.h0.V.2160101-2204012.nc")
str(di.trace)

Create dictionary

In order to load those files in R, the climate4R framework allow to create a dictionary that is used to standardize variables.

file.create("Data/TraCE21ka/TraCE21ka_dictionary.dic")
writeLines(
  c(
    "identifier,short_name,time_step,lower_time_bound,upper_time_bound,cell_method,offset,scale,deaccum,derived,interface",
    "tasmax,TSMX,1mo,0,12,max,-273.15,1,0,0,",
    "tasmin,TSMN,1mo,0,12,min,-273.15,1,0,0,",
    "tas,TS,1mo,0,12,mean,-273.15,1,0,0,",
    "pr,PRECC,1mo,0,12,mean,0,2592000000,0,0,",
    "hurs,RELHUM,1mo,0,12,mean,0,1,0,0,",
    "cld,CLDTOT,1mo,0,12,mean,0,1,0,0,",
    "ps,PS,1mo,0,12,mean,0,1,0,0,",
    "u,U,1mo,0,12,mean,0,1,0,0,",
    "v,V,1mo,0,12,mean,0,1,0,0,"
  ),
  "Data/TraCE21ka/TraCE21ka_dictionary.dic"
)

UERRA historical reanalysis data

Reanalysis data for the historical period (1961-1990) comes from the UERRA project (https://www.uerra.eu/). The data can be downloaded from the Climate Data Store at the Copernicus website (https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-uerra-europe-single-levels?tab=overview). Technical details can be found in the same Climate Data Store or at the links provided in the website of the European Centre for Medium-Range Weather Forecasts (ECMWF) for the UERRA project (https://www.ecmwf.int/en/research/projects/uerra).

The project provide reanalysis from two different systems (UERRA-HARMONIE and MESCAN-SURFEX) that produce data in Lambert Conformal Conic Grid at 6 hours temporal resolution and two spatial resolutions: 11km x 11km for the UERRA-HARMONIE system and 5.5km x 5.5km for the MESCAN-SURFEX system. Because reanalysis data would be our predictand variables, we downloaded temperature, precipitation, relative humidity, cloud cover, surface pressure, and wind speed data using the following python scripts.

Downloading files from dataserver

While we were interested in downscaling at the spatial resolution of the UERRA-HARMONIE, precipitation data were downloaded from the MESCAN-SURFEX system. The main reason is that UERRA-HARMONIE doesn’t provide precipitation data. Because MESCAN-SURFEX system produce data at a finer spatial resolution they could be afterwards aggregated (or upscaled) at the desired resolution.

# Python script 
import cdsapi

c = cdsapi.Client()

for y in range(1961, 1990):
  print(y)
  
  c.retrieve(
    'reanalysis-uerra-europe-single-levels',
    {
      'format': 'grib',
      'origin': 'uerra_harmonie',
      'variable': '2m_temperature',
      'year': [
        str(y),
        ],
      'month': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        ],
      'day': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        '13', '14', '15',
        '16', '17', '18',
        '19', '20', '21',
        '22', '23', '24',
        '25', '26', '27',
        '28', '29', '30',
        '31',
        ],
      'time': [
        '00:00', '06:00', '12:00',
        '18:00',
        ],
    },
    'UERRA-HARMONIE/2m_temperature/'+ str(y) +'_2m_temperature.grib')
# Python script 
import cdsapi

c = cdsapi.Client()

for y in range(1961, 1990):
  print(y)
  
  c.retrieve(
    'reanalysis-uerra-europe-single-levels',
    {
      'format': 'grib',
      'origin': 'mescan_surfex',
      'variable': 'total_precipitation',
      'year': [
        str(y),
        ],
      'month': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        ],
      'day': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        '13', '14', '15',
        '16', '17', '18',
        '19', '20', '21',
        '22', '23', '24',
        '25', '26', '27',
        '28', '29', '30',
        '31',
        ],
      'time': [
        '00:00', '06:00', '12:00',
        '18:00',
        ],
    },
    'MESCAN-SURFEX/total_precipitation/'+ str(y) +'_total_precipitation.grib')
# Python script 
import cdsapi

c = cdsapi.Client()

for y in range(1961, 1990):
  print(y)
  
  c.retrieve(
    'reanalysis-uerra-europe-single-levels',
    {
      'format': 'grib',
      'origin': 'uerra_harmonie',
      'variable': '2m_relative_humidity',
      'year': [
        str(y),
        ],
      'month': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        ],
      'day': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        '13', '14', '15',
        '16', '17', '18',
        '19', '20', '21',
        '22', '23', '24',
        '25', '26', '27',
        '28', '29', '30',
        '31',
        ],
      'time': [
        '00:00', '06:00', '12:00',
        '18:00',
        ],
    },
    'UERRA-HARMONIE/2m_relative_humidity/'+ str(y) +'_2m_relative_humidity.grib')
# Python script 
import cdsapi

c = cdsapi.Client()

for y in range(1961, 1990):
  print(y)
  
  c.retrieve(
    'reanalysis-uerra-europe-single-levels',
    {
      'format': 'grib',
      'origin': 'uerra_harmonie',
      'variable': '10m_wind_speed',
      'year': [
        str(y),
        ],
      'month': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        ],
      'day': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        '13', '14', '15',
        '16', '17', '18',
        '19', '20', '21',
        '22', '23', '24',
        '25', '26', '27',
        '28', '29', '30',
        '31',
        ],
      'time': [
        '00:00', '06:00', '12:00',
        '18:00',
        ],
    },
    'UERRA-HARMONIE/10m_wind_speed/'+ str(y) +'_10m_wind_speed.grib')
# Python script 
import cdsapi

c = cdsapi.Client()

for y in range(1961, 1990):
  print(y)
  
  c.retrieve(
    'reanalysis-uerra-europe-single-levels',
    {
      'format': 'grib',
      'origin': 'uerra_harmonie',
      'variable': 'total_cloud_cover',
      'year': [
        str(y),
        ],
      'month': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        ],
      'day': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        '13', '14', '15',
        '16', '17', '18',
        '19', '20', '21',
        '22', '23', '24',
        '25', '26', '27',
        '28', '29', '30',
        '31',
        ],
      'time': [
        '00:00', '06:00', '12:00',
        '18:00',
        ],
    },
    'UERRA-HARMONIE/total_cloud_cover/'+ str(y) +'_total_cloud_cover.grib')
# Python script 
import cdsapi

c = cdsapi.Client()

for y in range(1961, 1990):
  print(y)
  
  c.retrieve(
    'reanalysis-uerra-europe-single-levels',
    {
      'format': 'grib',
      'origin': 'uerra_harmonie',
      'variable': 'surface_pressure',
      'year': [
        str(y),
        ],
      'month': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        ],
      'day': [
        '01', '02', '03',
        '04', '05', '06',
        '07', '08', '09',
        '10', '11', '12',
        '13', '14', '15',
        '16', '17', '18',
        '19', '20', '21',
        '22', '23', '24',
        '25', '26', '27',
        '28', '29', '30',
        '31',
        ],
      'time': [
        '00:00', '06:00', '12:00',
        '18:00',
        ],
    },
    'UERRA-HARMONIE/surface_pressure/'+ str(y) +'_surface_pressure.grib')

Reprojection and data aggregation

UERRA data come in Lambert Conformal Conic Grid projection that should be transformed to WGS84 to match with data from TraCE21ka and CMIP5. Furthermore, subdaily (6 hour) data from the original files were aggregated to daily and then monthly data. All variables were kept in their original metric and units, but temperature that was used to calculate maximum, minimum, and mean daily temperatures, and then monthly averages. In the case of precipitations, the aggregation was carried out by summing daily data, for the rest of variables aggregation was carried out by averaging subdaily (to daily) and daily (to monthly) data. All these transformations were carried out using the Climate Data Operator library (cdo).

# BASH script 
years=($(seq 1961 1990))

for y in "${years[@]}"
do

# Temporal and spatial aggregation
cdo -s -f nc remapcon,Data/UERRA/template_HARMONIE.nc -monavg -daymin Data/UERRA/UERRA-HARMONIE/2m_temperature/${y}_2m_temperature.grib Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/${y}_2m_tmin.nc

cdo -s -f nc remapcon,Data/UERRA/template_HARMONIE.nc -monavg -daymax Data/UERRA/UERRA-HARMONIE/2m_temperature/${y}_2m_temperature.grib Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/${y}_2m_tmax.nc

cdo -s -f nc remapcon,Data/UERRA/template_HARMONIE.nc -monavg -dayavg Data/UERRA/UERRA-HARMONIE/2m_temperature/${y}_2m_temperature.grib Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/${y}_2m_temperature.nc

done

# Temporal merging
tmin_files=( Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/*_2m_tmin.nc )
cdo mergetime ${tmin_files[@]}  Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/1961-90_2m_tmin.nc

tmax_files=( Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/*_2m_tmax.nc )
cdo mergetime ${tmax_files[@]} Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/1961-90_2m_tmax.nc

tmean_files=( Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/*_2m_temperature.nc )
cdo mergetime ${tmean_files[@]} Data/UERRA/UERRA-HARMONIE/2m_temperature/latlon/1961-90_2m_temperature.nc

# Remove temporary files
rm ${tmin_files[@]} ${tmax_files[@]} ${tmean_files[@]}
# BASH script 
years=($(seq 1961 1990))

for y in "${years[@]}"
do

# Temporal and spatial aggregation
cdo -s -f nc remapcon,Data/UERRA/template_SURFEX.nc -monsum Data/UERRA/MESCAN-SURFEX/total_precipitation/${y}_total_precipitation.grib Data/UERRA/MESCAN-SURFEX/total_precipitation/latlon/${y}_total_precipitation.nc

done

# Temporal merging
prec_files=( Data/UERRA/MESCAN-SURFEX/total_precipitation/latlon/*_total_precipitation.nc )
cdo mergetime ${prec_files[@]} Data/UERRA/MESCAN-SURFEX/total_precipitation/latlon/1961-90_total_precipitation.nc

# Remove temporary files
rm ${prec_files[@]} 
# BASH script 
years=($(seq 1961 1990))

for y in "${years[@]}"
do

# Temporal and spatial aggregation
cdo -s -f nc remapcon,Data/UERRA/template_HARMONIE.nc -monavg Data/UERRA/UERRA-HARMONIE/total_cloud_cover/${y}_total_cloud_cover.grib Data/UERRA/UERRA-HARMONIE/total_cloud_cover/latlon/${y}_total_cloud_cover.nc

done

# Temporal merging
cloud_files=( Data/UERRA/UERRA-HARMONIE/total_cloud_cover/latlon/*_total_cloud_cover.nc )
cdo mergetime ${cloud_files[@]}  Data/UERRA/UERRA-HARMONIE/total_cloud_cover/latlon/1961-90_total_cloud_cover.nc

# Remove temporary files
rm ${cloud_files[@]} 
# BASH script 
years=($(seq 1961 1990))

for y in "${years[@]}"
do

# Temporal and spatial aggregation
cdo -s -f nc remapcon,Data/UERRA/template_HARMONIE.nc -monavg Data/UERRA/UERRA-HARMONIE/2m_relative_humidity/${y}_2m_relative_humidity.grib Data/UERRA/UERRA-HARMONIE/2m_relative_humidity/latlon/${y}_2m_relative_humidity.nc

done

# Temporal merging
rhum_files=( Data/UERRA/UERRA-HARMONIE/2m_relative_humidity/latlon/*_2m_relative_humidity.nc )
cdo mergetime ${rhum_files[@]} Data/UERRA/UERRA-HARMONIE/2m_relative_humidity/latlon/1961-90_2m_relative_humidity.nc

# Remove temporary files
rm ${rhum_files[@]}
# BASH script 
years=($(seq 1961 1990))

for y in "${years[@]}"
do

# Temporal and spatial aggregation
cdo -s -f nc remapcon,Data/UERRA/template_HARMONIE.nc -monavg Data/UERRA/UERRA-HARMONIE/10m_wind_speed/${y}_10m_wind_speed.grib Data/UERRA/UERRA-HARMONIE/10m_wind_speed/latlon/${y}_10m_wind_speed.nc

done

# Temporal merging
wspeed_files=( Data/UERRA/UERRA-HARMONIE/10m_wind_speed/latlon/*_10m_wind_speed.nc )
cdo mergetime ${wspeed_files[@]} Data/UERRA/UERRA-HARMONIE/10m_wind_speed/latlon/1961-90_10m_wind_speed.nc

# Remove temporary files
rm ${wspeed_files[@]} 
# BASH script 
years=($(seq 1961 1990))

for y in "${years[@]}"
do

# Temporal and spatial aggregation
cdo -s -f nc remapcon,Data/UERRA/template_HARMONIE.nc -monavg Data/UERRA/UERRA-HARMONIE/surface_pressure/${y}_surface_pressure.grib Data/UERRA/UERRA-HARMONIE/surface_pressure/latlon/${y}_surface_pressure.nc

done

# Temporal merging
ps_files=( Data/UERRA/UERRA-HARMONIE/surface_pressure/latlon/*_surface_pressure.nc )
cdo mergetime ${ps_files[@]} Data/UERRA/UERRA-HARMONIE/surface_pressure/latlon/1961-90_surface_pressure.nc

# Remove temporary files
rm ${ps_files} 

Create dictionary

In order to load those files in R, the climate4R framework allow to create a dictionary that is used to standardize variables to the climate4R vocabulary (check climate4R.UDG::C4R.vocabulary()).

file.create("Data/UERRA/UERRA_dictionary.dic")

writeLines(
  c(
    "identifier,short_name,time_step,lower_time_bound,upper_time_bound,cell_method,offset,scale,deaccum,derived,interface",
    "tasmin,2t,1mo,1,12,min,-273.15,1,0,0,",
    "tasmax,2t,1mo,1,12,max,-273.15,1,0,0,",
    "tas,2t,1mo,1,12,mean,-273.15,1,0,0,",
    "pr,tp,1mo,1,12,sum,0,1,0,0,",
    "hurs,2r,1mo,1,12,mean,0,1,0,0,",
    "cld,tcc,1mo,1,12,mean,0,1,0,0,",
    "wss,10si,1mo,1,12,mean,0,1,0,0,",
    "ps,sp,1mo,1,12,mean,0,1,0,0,"
  ),
  "Data/UERRA/UERRA_dictionary.dic"
)

CMIP5 data

CMIP5 data are available from different sources (e.g., CMIP5 website or the Climate Data Store). Given the convenience downloading system of the Climate Data Store, which we use also to download UERRA data, we selected this option.

Downloading files from dataserver

CMIP5 data were download for two periods. On the one hand, historical period which correspond to 1850-2005 interval in the CMIP5 project. On the other hand, future scenarios projections which corresponded to 2006-2100 interval. Although there are available data from multiple General Circulation Models (GCMs) in the CMIP5 datasets, there were only three that have all the needed variables for the all four representative path ways (RCPs). Hence, we downloaded the needed variables (matching those from the TraCE21ka and UERRA datasets) for such three GCMs and four RCPs.

Historical data

Select a GCM

import cdsapi

c = cdsapi.Client()

c.retrieve(
  'projections-cmip5-monthly-single-levels',
  {
    'ensemble_member': 'r1i1p1',
    'format': 'zip',
    'experiment': 'historical',
    'variable': [
      '10m_wind_speed',
      '2m_temperature',
      'maximum_2m_temperature_in_the_last_24_hours',
      'minimum_2m_temperature_in_the_last_24_hours',
      'near_surface_relative_humidity',
      'surface_pressure',
      'total_cloud_cover',
      'mean_precipitation_flux', 
      ],
    'model': 'cesm1_cam5',
    'period': '185001-200512',
  },
  'CESM1-CAM5_historical.zip')
import cdsapi

c = cdsapi.Client()

c.retrieve(
  'projections-cmip5-monthly-single-levels',
  {
    'ensemble_member': 'r1i1p1',
    'format': 'zip',
    'experiment': 'historical',
    'variable': [
      '10m_wind_speed',
      '2m_temperature',
      'maximum_2m_temperature_in_the_last_24_hours',
      'minimum_2m_temperature_in_the_last_24_hours',
      'near_surface_relative_humidity',
      'surface_pressure',
      'total_cloud_cover',
      'mean_precipitation_flux', 
    ],
    'model': 'csiro_mk3_6_0',
    'period': '185001-200512',
  },
  'CSIRO-Mk3-6-0_historical.zip')
import cdsapi

c = cdsapi.Client()

c.retrieve(
  'projections-cmip5-monthly-single-levels',
  {
    'ensemble_member': 'r1i1p1',
    'format': 'zip',
    'experiment': 'historical',
    'variable': [
      '10m_wind_speed',
      '2m_temperature',
      'maximum_2m_temperature_in_the_last_24_hours',
      'minimum_2m_temperature_in_the_last_24_hours', 
      'near_surface_relative_humidity',
      'surface_pressure',
      'total_cloud_cover',
      'mean_precipitation_flux', 
    ],
    'model': 'ipsl_cm5a_mr',
    'period': '185001-200512',
  },
  'IPSL-CM5A-MR_historical.zip')

Future projections

Select a General Circulation Model

import cdsapi

c = cdsapi.Client()

c.retrieve(
  'projections-cmip5-monthly-single-levels',
  {
    'ensemble_member': 'r1i1p1',
    'format': 'zip',
    'experiment': 'rcp_2_6',
    'variable': [
      '10m_wind_speed',
      '2m_temperature',
      'maximum_2m_temperature_in_the_last_24_hours',
      'minimum_2m_temperature_in_the_last_24_hours',
      'near_surface_relative_humidity',
      'surface_pressure',
      'total_cloud_cover',
      'mean_precipitation_flux', 
      ],
    'model': 'cesm1_cam5',
    'period': '200601-210012',
  },
  'CESM1-CAM5_RCP_2_6.zip')
import cdsapi

c = cdsapi.Client()

c.retrieve(
  'projections-cmip5-monthly-single-levels',
  {
    'ensemble_member': 'r1i1p1',
    'format': 'zip',
    'experiment': 'rcp_2_6',
    'variable': [
      '10m_wind_speed',
      '2m_temperature',
      'maximum_2m_temperature_in_the_last_24_hours',
      'minimum_2m_temperature_in_the_last_24_hours',
      'near_surface_relative_humidity',
      'surface_pressure',
      'total_cloud_cover',
      'mean_precipitation_flux', 
    ],
    'model': 'csiro_mk3_6_0',
    'period': '200601-210012',
  },
  'CSIRO-Mk3-6-0_RCP_2_6.zip')
import cdsapi

c = cdsapi.Client()

c.retrieve(
  'projections-cmip5-monthly-single-levels',
  {
    'ensemble_member': 'r1i1p1',
    'format': 'zip',
    'experiment': 'rcp_2_6',
    'variable': [
      '10m_wind_speed',
      '2m_temperature',
      'maximum_2m_temperature_in_the_last_24_hours',
      'minimum_2m_temperature_in_the_last_24_hours', 
      'near_surface_relative_humidity',
      'surface_pressure',
      'total_cloud_cover',
      'mean_precipitation_flux', 
    ],
    'model': 'ipsl_cm5a_mr',
    'period': '200601-210012',
  },
  'IPSL-CM5A-MR_RCP_2_6.zip')

Create dictionary

Before importing the data in an R session, we need to define a dictionary to standarize units of variables to the climate4R vocabulary (check climate4R.UDG::C4R.vocabulary()).


file.create("Data/CMIP5/CMIP5_dictionary.dic")

writeLines(c(
  "identifier,short_name,time_step,lower_time_bound,upper_time_bound,cell_method,offset,scale,deaccum,derived,interface",
  "tasmax,tasmax,1mo,0,12,max,-273.15,1,0,0,",
  "tasmin,tasmin,1mo,0,12,min,-273.15,1,0,0,",
  "tas,tas,1mo,0,12,mean,-273.15,1,0,0,",
  "pr,pr,1mo,0,12,mean,0,2592000,0,0,",
  "hurs,hurs,1mo,0,12,mean,0,1,0,0,",
  "cld,clt,1mo,0,12,mean,0,1,0,0,",
  "ps,ps,1mo,0,12,mean,0,1,0,0,",
  "wss,sfcWind,1mo,0,12,mean,0,1,0,0,"
), "Data/CMIP5/CMIP5_dictionary.dic")