North American Regional Climate Change Assessment Program
North American Regional Climate Change Assessment Program
    Home Data Output Requirements
 
  PROGRAM
About NARCCAP
About Data
Contact Us
  RESOURCES
For PIs
For Users
    Access Data
  User Directory
  Contributions
  Acknowledgements
  RESULTS
Output Data Catalog
General Results
    NCEP-Driven RCM Runs
Climate Change Results
CRCM+CCSM
CRCM+CGCM3
ECP2+GFDL
ECP2+HadCM3 NEW!
HRM3+GFDL
HRM3+HadCM3
MM5I+CCSM
MM5I+HadCM3 NEW!
RCM3+CGCM3
RCM3+GFDL
WRFG+CCSM
WRFG+CGCM3
  SPONSORS
 
Output Requirements
 

12 August 2010

Changes are summarized at the end of the document.

 

Overview

Much of the output for RCM and time-slice AGCM simulations performed for NARCCAP will be archived at PCMDI and NCAR, where it will be available for analysis and for input to other models. The user community will expect to be able to extract the data both efficiently and in a uniform way across all models. This imposes rather restrictive constraints on how the output files should be organized. With currently available resources, the effort to write the data in a uniform structure and format falls on the modeling centers contributing the data. This document provides the specifications for writing this model output. This standardization will promote use of the NARCCAP archive for a wide range of climate-change assessments and model performance analyses, which are major goals of NARCCAP. It should also reduce misunderstanding of archive contents.

Requirements for IPCC output stored at PCMDI have strongly guided development of the guidelines for the NARCCAP archive. Indeed, this document is largely the same as Requirements for IPCC Standard Output Contributed to the PCMDI Archive[1] (Taylor 2005).

The output-file protocols use Network Common Data Form (NetCDF) formatting with Climate and Forecast (CF) metadata conventions. Those needing to implement NetCDF should consult Unidata’s NetCDF web site[2]. Unidata also provides specifications for file formats[3] and recommendations on best practices[4]. The British Atmospheric Data Centre (BADC) web site gives an introduction to NetCDF[5] and CF conventions[6]. BADC also has a CF-convention compliance checker[7] that you can (and should) use to test small versions of your files. PCMDI has a CF-compliance checker known as CMOR [8], but as of this writing, CMOR can only handle atmospheric output on regular latitude-longitude grids and so cannot work with typical NARCCAP projections. For further guidance on details of using NetCDF, the NCO (NetCDF Operator) web site[9] provides a wealth of information including climate-oriented examples.

The requirements for data contributed to the archive are listed in four sections below, the first specifying the general structure and format of the data, the second the constraints imposed on the variables, the third the metadata required for describing the coordinates, and the last giving the required and recommended "global attributes". These are all essential for promoting knowledgeable and proper use of the output. They should also reduce the need for output users to ask the modeling centers numerous minor questions on output details.

Data format, data structure, and file composition requirements:

Data must be written through the NetCDF[2] API (application program interface) and conform to the CF metadata standards[10].

Each file must contain only a single output field from a single simulation (i.e., a single run). Each file will also include coordinate variables, attributes and other metadata as specified below. If the field is a function of time, more than one time sample (but not necessarily all time samples) may be included in a single file. File size should never exceed 2 gigabytes. Optimal archiving suggests that long time-series should not be parsed too finely: a few large files (within the 2 gigabyte limit) are preferred over many small files. The standard recommendation is to report three-dimensional output in files one-month long, two-dimensional output in files five-years long.

The output files will include specification of the latitude and longitude of each grid point in the reporting domain. The file attributes (see below) should give sufficient information, such as map projection used, to allow the user to understand the grid presented in the file.

Atmospheric fields that are functions of the vertical coordinate must be interpolated to NARCCAP-standard pressure levels: every 25 hPa in [1050 hPa , 25 hPa] (e.g., 1050, 1025, 1000,…25 hPa) every 25 hPa in [1050 hPa, 700 hPa] and every 50 hPa in [700 hPa, 050 hPa] (i.e., 1050, 1025, 1000 … 750, 725, 700, 650, 600 … 150, 100, 050).

The NARCCAP archive will comprise output from many different models and several simulation experiments. Recommended file-name structures (below) will help ensure that files maintain proper identity. The metadata embedded within the file will provide further checks to avoid misrepresentation of the model and simulation producing the output.

The names of output NetCDF files must follow this structure:

VariableName_ModelName_Driver_Time.nc

where

"VariableName" is the IPCC/CF-convention Variable Name in the NARCCAP Standard Output tables [11].

"ModelName" is a 4-character identifier chosen by the modeling group (but please clear it with the archival group beforehand to avoid conflicts!). It should be all-caps; all other parts of the filename should be lowercase.

"Driver" is name of the boundary condition: either "ncep" or the name of the driving GCM.

"Time" will be the first time step saved in the file, in the form "YearMonthDayUTC", e.g., 1979010100 for 00 UTC on 1 Jan 1979.

Requirements for output variables:

All output fields must be written as single precision floating-point numbers (NetCDF type "float").  

The variable names (in the NetCDF file) must be the names ("Variable Name") specified in the NARCCAP Standard Output tables[11](e.g., surface air temperature data will be stored in a variable named "tas").

The units required for the output fields are given in the NARCCAP Standard Output tables[11].  

The positive direction of vertical fluxes must be consistent with that specified in the NARCCAP Standard Output tables [11] entry "Standard Name". For example, the positive direction for vertical heat fluxes (e.g., "surface_upward_latent_heat_flux") and momentum fluxes (e.g., "surface_downward_eastward_stress") are implied by the standard name.  

Array dimensions must follow this order: time, level, latitude, longitude. For fields of lesser rank, one or more coordinate will be omitted, but the ordering must be preserved. The above order assumes the C language convention (opposite the FORTRAN convention) in which the last coordinate varies most rapidly. 

If longitude is a coordinate, data must be stored west to east (in degrees), starting with the first grid point greater than or equal to 0 degrees east. All coordinate locations must be unique (e.g., do not include both 0 and 360 degrees east).

If latitude is a coordinate, data must be stored south to north (in degrees).  

If there is a vertical coordinate, data must be stored starting with the grid point nearest the surface.  

If there is a time dimension, data must be stored with time increasing.  

All "missing data"[12] must be assigned the single precision floating point value of 1.e20  

Required attributes:  

  • standard_name = a character string containing a CF Standard Name that can be found in the NARCCAP Standard Output tables[11].
  • units = a character string containing the units given in the NARCCAP Standard Output tables [11], which must be in a form recognized by UNIDATA's Udunits package[12](e.g., "W m-2".)
  • _FillValue: If the variable has any "missing values", then define _FillValue = 1.e20, and assign that value to data that are "missing". As an example of "missing data", consider atmospheric data on portions of pressure surfaces that are underground, which are usually considered missing.
  • coordinates: When an output field has a coordinate that is single-valued (e.g., surface wind may have a vertical coordinate value of 10 meters), a "coordinates" attribute must be defined for the singleton dimension, and the scalar value must be stored in the file. The following variables require singleton dimension information: tas, tasmin, tasmax, uas, vas, spdmax, and huss. For each of these variables, the NARCCAP Standard Output tables [11] indicates what the value of the singleton dimension should be. See section 5.7 of the CF-conventions[14] for more information.
  • cell_methods: If the variable contains a time-mean, then the “cell_methods” attribute must be defined with the value “time: mean” or if you want to indicate that the interval between samples contributing to the mean is 3 hours, then cell_methods='time: mean (interval: 3 hours)'.

Recommended attributes:

  • missing_values: If the variable has any missing values, then define missing_value = 1.e20. Note that although this attribute seems to be redundant with _FillValue, some software that reads NetCDF files expects the missing-value attribute, while other software expects the _FillValue attribute, so including both is recommended.
  • original_name = the name of the variable as it is commonly known at the user's modeling institute. If the variable being written was computed in some simple way from two or more original fields (e.g., subtracting the upwelling and downwelling fluxes to get a net flux, or multiplying by a scalar or changing the sign), then it is recommended that this be indicated in the "original_name" (e.g., "irup – irdown", where "irup" and "irdown" are the names of the original fields that were subtracted). If more complicated processing is required, attribute would likely be omitted and the information would more naturally be included in a "history" attribute for this variable, described next.
  • history = how the variable was processed before outputting (e.g., give name(s) of the file(s) from which the data were read and indicate what calculations were performed, such as interpolating to standard pressure levels or changing the unit). This information should allow someone at the user's institute to reproduce the procedure that created the output. Note that this history attribute is variable-specific, whereas the global history attribute defined below (see "Recommended attributes" under "Requirements for global attributes") provides information concerning the model simulation itself or refers to processing procedures common to all variables.
  • original_units = a character string indicating the original units of the data before it has been processed to be consistent with the units appearing in the NARCCAP Standard Output tables[11].
  • long_name = a character string that might serve as a title for the variable on plots (e.g., "Surface Air Temperature").
  • comment = a character string providing further information concerning the variable (e.g., if the variable is mrso – soil_moisture_content –, the comment might read "includes subsurface frozen water but not surface snow and ice").

Requirements for coordinate variables:

All coordinate variables must be written as double precision floating point numbers (NetCDF type "double").

A longitude coordinate must be named either "longitude" or, preferably, "lon", its CF standard name[15] is "longitude", and its units must be "degrees_east". The values should be stored west to east starting with the first longitude greater than or equal to 0 degrees.  

A latitude coordinate must be named either "latitude" or, preferably, "lat", its CF standard name[15] is "latitude", and its units must be "degrees_north". The values should be stored south to north. 

A time coordinate must be named "time", its CF standard name[15] is "time", and its units must be "days since [basetime]", where [basetime] can be specified by the user, typically in the form year-month-day (e.g., "days since 1960-1-1"). The same 'base time' should apply to all time samples in a single simulation (i.e., when creating a series of files containing model output for a single run, do not change the units or basetime from one file to the next; in the above example 1960-1-1 is the 'base time' for all output files from the simulation). For time-mean data, the coordinate value should be the end-point of the interval over which the average is computed. This differs from PCMDI’s recommendation for AR4 GCMs, but it has the virtue of giving a time coordinate that is the same as for instantaneous fields.

An atmospheric pressure coordinate must be named "plev", its CF standard name[15] is "air_pressure" and its units must be "Pa" (Pascal). The values should be stored in order of decreasing pressure.

An atmospheric height coordinate must be named "height", its CF standard name[15] is "height" and its units must be "m" (meters). The values should be stored in order of increasing height.  

Special considerations for horizontal coordinate variables:

Regional climate models do not usually use regular latitude-longitude grids. Following CF conventions, the horizontal coordinates in NARCCAP will be represented using two-dimensional coordinate variables. For consistency and to avoid confusion with "true" latitude and longitude, the horizontal dimensions will be xc and yc. These variables are identified as coordinates by use of the coordinates attribute. Then the latitude and longitude of each point in (xc, yc) space is defined.

Here is an example for precipitation, adapted from the CF 1.0 document:

dimensions:
        xc = 160 ;
        yc = 135 ;
        time = UNLIMITED ; // (5848 currently)
        bnds = 2 ;
variables:
        char Lambert_Conformal ;
                Lambert_Conformal:grid_mapping_name = "lambert_conformal_conic" ;
                Lambert_Conformal:standard_parallel = 30.f, 60.f ;
                Lambert_Conformal:longitude_of_central_meridian = -97.f ;
                Lambert_Conformal:latitude_of_projection_origin = 47.5f ;
        double yc(yc) ;
                yc:long_name = "y-coordinate of Cartesian system" ;
                yc:standard_name = "projection_y_coordinate" ;
                yc:axis = "Y" ;
                yc:units = "m" ;
        double xc(xc) ;
                xc:long_name = "x-coordinate Cartesian system" ;
                xc:standard_name = "projection_x_coordinate" ; 
                xc:axis = "X" ;
                xc:units = "m" ;
        double lon(yc, xc) ;
                lon:units = "degrees_east" ;
                lon:long_name = "longitude" ;
                lon:standard_name = "longitude" ;
                lon:axis = "X";
        double lat(yc, xc) ;
                lat:units = "degrees_north" ;
                lat:long_name = "latitude" ;
                lat:standard_name = "latitude" ;
                lat:axis = "Y";
        double time(time) ;
                time:long_name = "time" ;
                time:standard_name = "time" ;
                time:axis = "T" ;
                time:units = "days since 1979-01-01 00:00:0.0" ;
                time:calendar = "gregorian";
                time:bounds = "time_bnds" ;
        double time_bnds(time, bnds) ;

        float pr(time, yc, xc) ;
                pr:units = "kg m-2 s-1" ;
                pr:standard_name = "precipitation_flux" ;
                pr:long_name = "Precipitation";
                pr:cell_methods = "time: mean (interval: 3 hours)" ;
                pr:_FillValue = 1.e+20f ;
                pr:coordinates = "lon lat" ;
                pr:grid_mapping = "Lambert_Conformal" ;

In the pr array, each element pr(j,i) is associated with the coordinate values lon(j,i) and lat(j,i). The latitude and longitude coordinates are represented by the auxiliary coordinate variables lat(yc,xc) and lon(yc,xc) which are identified by the coordinates attribute. In other words, the location of the point on the earth where pr(j,i) is valid is given by latitude lat(j,i) and longitude lon(j,i).

Note that coordinate variables are also defined for the xc and yc dimensions. These can be viewed as "dummy" coordinate values that facilitate processing of this data by generic applications that do not recognize multidimensional latitude and longitude coordinates. The CF conventions often use the same names for dimension sizes as for coordinate variables; this can be confusing until you get used to it.

With some exceptions (indicated immediately below), the bounds on coordinate variables must be included in the file. For time, the bounds must be included if the data represent a time-mean (e.g., three-hourly mean). For model-level data, the cell bounds should be included, indicating the interfaces between model levels (see example 4 below). For data that has been interpolated to pressure surfaces, there should be no “bounds” attribute attached to the pressure coordinate (see example 2 below). For data that represent a “snap-shot” in time (e.g., the values at a single model time-step), the time coordinate should have no “bounds” attribute. Note that CF requires cell bounds for 1-dimensional coordinates to be stored in 2-dimensional arrays as described in section 7.1 of the CF-conventions and as shown in the examples below.

Required attributes:

  • standard_name = a character string containing the standard name (see coordinate standard names given above).
  • units = a character string containing the units (see allowable coordinate units given above). Note that in the case of a dimensionless vertical coordinate, this attribute may be omitted.
  • axis = "X", "Y", "Z", or "T" as appropriate (see section 4 of the CF conventions). In the few cases where an additional dimension is required, this attribute should be omitted (for this additional dimension).
  • bounds = a character string containing the name of the variable where the cell bounds are stored.
  • calendar = For time coordinates, the “calendar” attribute must be included as described in section 4.4.1 of the CF conventions. Note that if a model has a gregorian calendar and the base time is defined to be prior to 1582, then the user should specify 'proleptic_gregorian', rather than 'gregorian' for the calendar attribute.

Recommended attributes:

  • positive: For vertical coordinates, define the “positive” attribute (e.g, “up” is expected).

Requirements for global attributes:

Required attributes:

  • institution = a character string containing an abbreviated name or acronym of the institution that performed the model simulation, followed in parentheses by the fully spelled-out name and location [e.g., 'GFDL (Geophysical Fluid Dynamics Laboratory, Princeton, NJ, USA)'] .
  • source = a character string identifying the model version as it should be identified by NARCCAP (although NARCCAP may in many cases choose to identify models only by the institution's acronym). Additionally, this attribute must include the year (i.e., model vintage) when this model version was first used in a scientific application. Finally it should include information concerning the component models. The following template should be used in constructing this string: '[climate_model_name] ([year]): atmosphere: [model_name] ([technical_name], [resolution_and_levels]); sea ice: [model_name] ([technical_name]); land: [model_name] ([technical_name])'' As an example, "source" might contain the string: 'MM5 (2002): atmosphere: MM5v3 non-hydrostatic, split-explicit; sea ice: Noah; land: Noah'. Additional explanatory information may follow the required information.
  • project_id = "NARCCAP"
  • table_id = should be assigned a character string identifying the NARCCAP Standard Output table[11] where this variable appears (e.g., Table 1).
  • realization = an integer identifying the ensemble member from which the data were obtained (e.g., 1, 2, 3, etc.; this attribute should be set to 1 if only a single simulation was performed).
  • experiment_id = the appropriate character string, identifying the experiment, taken from the following list:


    ‘present-day climate using NCEP/DOE Reanalysis’
    ‘present-day climate using ERA-40’
    'present-day control from CCCma’
    'present-day control from GFDL’
    'present-day control from Hadley Centre’
    'present-day control from NCAR’
    'scenario from GFDL’
    'scenario from Hadley Centre’
    'scenario from NCAR’
    'scenario from CGCM’

 

Recommended attributes:

  • Conventions = 'CF-1.0'
  • contact = name and contact information (e.g., email, address, phone number) of person who should be contacted for more information about the data.
  • history = A character string containing an audit trail for modifications to the original data. Each modification is typically preceded by a "timestamp". The "history" attribute provided here will be a global one that should not depend on which variable is contained in the file. A variable-specific "history" can also be included as an attribute attached to the output variable.
  • comment = A character string containing additional information about the data or methods used to produce it. The user may include, for example, a description of how the initial conditions for a simulation were specified and how the model was spun-up (including the length of the spin-up period). If the run was initiated from a ‘control’ run, it would be appropriate to indicate which control run was used and what time in that run provided the initial conditions (e.g. "This simulation was initiated from the end of control run eulT42cntrl"). Also please specify which forcing agents are included in the historical runs (e.g., greenhouse gases, sulfate aerosol direct effects, volcanoes, solar forcing, etc.)
  • references = A character string containing a list of published or web-based references that describe the data or the methods used to produce it. Typically, the user should provide references describing the model formulation here.
  • title = "[institute_model] model output prepared for NARCCAP [experiment_id]" where [institute_name] should be replaced by the contributing institution's acronym or name (e.g., "GFDL", "CCCma", "Hadley Centre", etc.) and [experiment_id] should be replaced by one of the following strings:

    ‘present-day climate using NCEP/DOE Reanalysis’
    ‘present-day climate using ERA-40’
    'present-day control from CCCma’
    'present-day control from GFDL’
    'present-day control from Hadley Centre’
    'present-day control from NCAR’
    'scenario from GFDL’
    'scenario from Hadley Centre’
    'scenario from NCAR’
    'scenario from CGCM’

A sample title is: ‘PNL WRF model output prepared for NARCCAP present-day climate using NCEP/DOE Reanalysis’

Acknowledgement

The source for this document is Requirements for IPCC Standard Output eontributed to the PCMDI Archive by Karl Taylor. This document is essentially his document with NARCCAP-specific modifications. We gratefully thank Karl lending us his text and for discussions with him on establishing the IPCC archive at PCMDI. We also thank those who contributed to his document. Links to references can be found at the end of the document.

 

Example 1: Surface latent heat flux
(a function of longitude, latitude, month)

netcdf hfls_A1 {
dimensions: 
	xc = 4 ;
	yc = 3 ;
	time = UNLIMITED ; // (2 currently)
	bnds = 2 ;
variables:
        double yc(yc) ;
                yc:long_name = "y-coordinate of Cartesian system" ;
                yc:axis = "Y" ;
        double xc(xc) ;
                xc:long_name = "x-coordinate Cartesian system" ;
                xc:axis = "X" ;
	double lon(yc,xc) ;
		lon:standard_name = "longitude" ;
		lon:long_name = "longitude" ;
		lon:units = "degrees_east" ;
		lon:axis = "X" ;
	double lat(yc,xc) ;
		lat:standard_name = "latitude" ;
		lat:long_name = "latitude" ;
		lat:units = "degrees_north" ;
		lat:axis = "Y" ;
	double time(time) ;
		time:standard_name = "time" ;
		time:long_name = "time" ;
		time:units = "days since 2030-1-1" ;
		time:axis = "T" ;
		time:calendar = "gregorian" ;
		time:bounds = "time_bnds" ;
	double time_bnds(time, bnds) ;

	float hfls(time, yc, xc) ;
       		hfls:standard_name = "surface_upward_latent_heat_flux" ;
		hfls:long_name = "Surface Latent Heat Flux" ;
  		hfls:units = "W m-2" ;
		hfls:cell_methods = "time: mean (interval: 20 minutes)" ;
                hfls:coordinates = "lon lat";
		hfls:_FillValue = 1.e+20f ;
		hfls:missing_value = 1.e+20f ;
		hfls:original_name = "LATENT" ;
		hfls:history = " At 17:54:19 on 06/07/2004: CMOR altered
			the data in the following ways: replaced missing 
                        valueflag (1.00000E+28) with standard missing 
                        value(1.00000E+20); multiplied by -1.00000E+00 to 
                        yieldoutput units;" ; 
			
// global attributes:

        :title = "GICC model output prepared for IPCC 
		FourthAssessment 2xCO2 equilibrium experiment";
        :institution = "GICC (Generic International Climate 
		Center,Geneva, Switzerland)" ;
	:source = "GICCM1 (2002): 
                  atmosphere: GICAM3 (gicam_0_brnchT_itea_2, T63L32); 
                  ocean: MOM (mom3_ver_3.5.2, 2x3L15); 
                  sea ice: GISIM4; 
                  land: GILSM2.5" ;
	:contact = "Rusty Koder (koder@middle_earth.net)" ;
	:project_id = "IPCC Fourth Assessment" ;
	:table_id = "Table A1 (7 April 2004)" ;
	:experiment_id = "2xCO2 equilibrium experiment" ;
	:realization = 1 ;
	:Conventions = "CF-1.0" ;
	:history = "Output from archive/giccm_03_std_2xCO2_2256. At 
		17:54:19 on 06/07/2004, CMOR rewrote data to comply withCF 
		standards and IPCC Fourth Assessment requirements" ;
	:references = "Model described by Koder and Tolkien (J.Geophys. 
		Res., 2001, 576-591). Also see 
		http://www.GICC.su/giccm/doc/index.html 2XCO2 simulation 
		described in Dorkey et al. (Clim. Dyn., 2003,323-357.)" ;
	:comment = "Equilibrium reached after 30-year spin-up afterwhich 
		data were output starting with nominal date ofJanuary 2030" 
		;data: 
		
	time = 30, 60 ; 
	time_bnds = 
		0, 30,
		30, 60 ; 

	hfls = 
		19, 15, 11, 7,
		3, -1, -5, -9,
		-13, -17, -21, -25,
		18, 14, 10, 6,
		2, -2, -6, -10,
		-14, -18, -22, -26 ;
} 

 

Example 2: Air temperature
(a function of longitude, latitude, pressure, month)

netcdf ta_A1 {
dimensions: 
	xc = 4 ;
	yc = 3 ;
	plev = 5 ;
	time = UNLIMITED ; // (2 currently)
	bnds = 2 ;
variables: 
        double yc(yc) ;
                yc:long_name = "y-coordinate of Cartesian system" ;
                yc:axis = "Y" ;
        double xc(xc) ;
                xc:long_name = "x-coordinate Cartesian system" ;
                xc:axis = "X" ;
        double lon(yc,xc) ;
                lon:standard_name = "longitude" ;
                lon:long_name = "longitude" ;
                lon:units = "degrees_east" ;
                lon:axis = "X" ;
        double lat(yc,xc) ;
                lat:standard_name = "latitude" ;
                lat:long_name = "latitude" ;
                lat:units = "degrees_north" ;
                lat:axis = "Y" ;
	double plev(plev) ;
		plev:standard_name = "air_pressure" ;
		plev:long_name = "pressure" ;
		plev:units = "Pa" ;
		plev:axis = "Z" ;
		plev:positive = "down" ;
	double time(time) ;
		time:standard_name = "time" ;
		time:long_name = "time" ;
		time:units = "days since 2030-1-1" ;
		time:axis = "T" ;
		time:calendar = "gregorian" ;
		time:bounds = "time_bnds" ;
	double time_bnds(time, bnds) ;

	float ta(time, plev, yc, xc) ;
 		ta:standard_name = "air_temperature";
 		ta:long_name = "Temperature" ;
		ta:units = "K" ;
		ta:cell_methods = "time: mean (interval: 20 minutes)" ;
                ta:coordinates = "lon lat plev";
		ta:_FillValue = 1.e+20f;
 		ta:missing_value = 1.e+20f ;
		ta:original_name = "T" ;
		ta:history = 
		" At 17:54:19 on 06/07/2004: CMOR altered the
			data in the following ways: replaced missing value 
			flag(1.00000E+28) with standard missing value(1.00000E+20);" 
			; 
// global attributes: 
	:title = "GICC model output prepared for IPCC 
		FourthAssessment 2xCO2 equilibrium experiment" ;
	:institution = "GICC (Generic International Climate 
		Center,Geneva, Switzerland)" ;
	:source = "GICCM1 (2002): atmosphere: GICAM3 
		(gicam_0_brnchT_itea_2, T63L32); ocean: 
		MOM(mom3_ver_3.5.2, 2x3L15); sea ice: GISIM4; 
		land:GILSM2.5" ;
	:contact = "Rusty Koder (koder@middle_earth.net)" ;
	:project_id = "IPCC Fourth Assessment" ;
	:table_id = "Table A1 (7 April 2004)" ;
	:experiment_id = "2xCO2 equilibrium experiment" ;
	:realization = 1 ;
	:Conventions = "CF-1.0" ;
	:history = "Output from archive/giccm_03_std_2xCO2_2256. At 
		17:54:19 on 06/07/2004, CMOR rewrote data to comply withCF 
		standards and IPCC Fourth Assessment requirements" ;
	:references = "Model described by Koder and Tolkien (J.Geophys. 
		Res., 2001, 576-591). Also see 
		http://www.GICC.su/giccm/doc/index.html 2XCO2 simulation 
		described in Dorkey et al. (Clim. Dyn., 2003,323-357.)" ;
	:comment = "Equilibrium reached after 30-year spin-up afterwhich
		 data were output starting with nominal date ofJanuary 2030" 
		 ;data: 
		 
plev = 10000, 20000, 30000, 40000, 50000 ; 

time = 30, 60 ; 

time_bnds = 
0, 30,
30, 60 ; 

ta = 
150.5, 152.5, 154.5, 156.5,
158.5, 160.5, 162.5, 164.5,
166.5, 168.5, 170.5, 172.5,
182.5, 184.5, 186.5, 188.5,
190.5, 192.5, 194.5, 196.5,
198.5, 200.5, 202.5, 204.5, 

 214.5, 216.5, 218.5, 220.5,222.5, 224.5, 226.5, 228.5,230.5, 232.5,
234.5, 236.5,246.5, 248.5, 250.5, 252.5,254.5, 256.5, 258.5, 
260.5,262.5, 264.5, 266.5, 268.5,278.5, 280.5, 282.5, 284.5,286.5, 
288.5, 290.5, 292.5,294.5, 296.5, 298.5, 300.5,151, 153, 155, 157,159,
161, 163, 165,167, 169, 171, 173,183, 185, 187, 189,191, 193, 195, 
197,199, 201, 203, 205,215, 217, 219, 221,223, 225, 227, 229,231, 233, 
235, 237,247, 249, 251, 253,255, 257, 259, 261,263, 265, 267, 269,279, 
281, 283, 285,287, 289, 291, 293,295, 297, 299, 301 ;} 

 

Example 3: Treatment of a scalar (i.e., singleton) dimension
Total soil moisture (a function of longitude, latitude, time)

netcdf mrso_A1 {
dimensions: 
	xc = 4 ;
	yc = 3 ;	
        time = UNLIMITED ; // (2 currently)
	bnds = 2 ;
variables: 
        double yc(yc) ;
                yc:long_name = "y-coordinate of Cartesian system" ;
                yc:axis = "Y" ;
        double xc(xc) ;
                xc:long_name = "x-coordinate Cartesian system" ;
                xc:axis = "X" ;
        double lon(yc,xc) ;
                lon:standard_name = "longitude" ;
                lon:long_name = "longitude" ;
                lon:units = "degrees_east" ;
                lon:axis = "X" ;
        double lat(yc,xc) ;
                lat:standard_name = "latitude" ;
                lat:long_name = "latitude" ;
                lat:units = "degrees_north" ;
                lat:axis = "Y" ;
	double time(time) ;
		time:standard_name = "time" ;
		time:long_name = "time" ;
		time:units = "days since 2030-1-1" ;
		time:axis = "T" ;
		time:calendar = "360_day" ;
		time:bounds = "time_bnds" ;
	double time_bnds(time, bnds) ;

	double depth ;
		depth:standard_name = "depth" ;
		depth:long_name = "depth" ;
		depth:units = "m" ;
		depth:axis = "Z" ;
		depth:positive = "down" ;
		depth:bounds = "depth_bnds" ;
	double depth_bnds(bnds) ;

	float mrsos(time, lat, lon) ;
 		mrso:standard_name = "soil_moisture_content" ;
		mrsos:long_name = " Total Soil Moisture Content " ;
		mrsos:units = "m" ;
		mrso:cell_methods = "time: mean (interval: 20 minutes)" ;
		mrso:coordinates = "depth";
		mrso:_FillValue = 1.e+20f ;
		mrso:missing_value = 1.e+20f;
		mrso:original_name = "SOIL_WET" ;
		mrso:comment = "includes subsurface frozen water but not 
		surface snow and ice" ; 
		mrsos:history = " At 17:54:19 on 06/07/2004: CMOR altered the 
                      data in the following ways: replaced missing valueflag 
                      (1.00000E+28) with standard missing value(1.00000E+20);" ; 
	
// global attributes:
		:title = "GICC model output prepared for IPCC 
			Fourth Assessment 2xCO2 equilibrium experiment" ;
		:institution = "GICC (Generic International Climate Center, 
			Geneva, Switzerland)" ;
		:source = "GICCM1 (2002): 
                        atmosphere : GICAM3 (gicam_0_brnchT_itea_2,
			 T63L32); 
 			ocean: MOM(mom3_ver_3.5.2, 2x3L15); 
			sea ice: GISIM4; land:GILSM2.5";
		:contact = "Rusty Koder (koder@middle_earth.net)" ;
		:project_id = "IPCC Fourth Assessment" ;
		:table_id = "Table A1 (7 April 2004)" ;
		:experiment_id = "2xCO2 equilibrium experiment" ;
		:realization = 1 ;
		:Conventions = "CF-1.0" ;
		:history = "Output from archive/giccm_03_std_2xCO2_225
			 6. At 17:54:19 on 06/07/2004, CMOR rewrote data to 
			comply with CF standards and IPCC Fourth Assessment 
			requirements" ;
		:references = "Model described by Baggins and Tolkien (J.Geophys. 
			Res., 2001, 576-591). Also see 
			http://www.GICC.su/giccm/doc/index.html 2XCO2 simulation 
			described in Gandalf et al. (Clim. Dyn., 2003,323-357.)" ;
		:comment = "Equilibrium reached after 30-year spin-up after 
			which data were output starting with nominal date of 
			January 2030" ;

data: 
		
time = 30, 60 ; 

time_bnds = 
0, 30,
30, 60 ; 

depth = 0.05 ; 
depth_bnds = 0, 0.1 ; 

mrsos = 10, 50, 90, 130,170, 210, 250, 290,330, 370, 410, 450,20, 60, 
100, 140,180, 220, 260, 300,340, 380, 420, 460 ;} 

 

Example 4: Treatment of model level data
Cloud fraction (a function of longitude, latitude, model level, month)

netcdf cl_A1 {
dimensions: 
	xc = 4 ;
	yc = 3 ;
	lev = 5 ;
	time = UNLIMITED ; // (2 currently)
	bnds = 2 ;
variables: 
        double yc(yc) ;
                yc:long_name = "y-coordinate of Cartesian system" ;
                yc:axis = "Y" ;
        double xc(xc) ;
                xc:long_name = "x-coordinate Cartesian system" ;
                xc:axis = "X" ;
        double lon(yc,xc) ;
                lon:standard_name = "longitude" ;
                lon:long_name = "longitude" ;
                lon:units = "degrees_east" ;
                lon:axis = "X" ;
        double lat(yc,xc) ;
                lat:standard_name = "latitude" ;
                lat:long_name = "latitude" ;
                lat:units = "degrees_north" ;
                lat:axis = "Y" ;

	double lev(lev) ;
		lev:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ;
		lev:long_name = "hybrid sigma pressure coordinate" ;
		lev:units = "1" ;
		lev:axis = "Z" ;
		lev:positive = "down" ;
		lev:bounds = "lev_bnds" ;
		lev:formula = "p(n,k,j,i) = a(k)*p0 + b(k)*ps(n,j,i)" ;
		lev:formula_terms = "p0: p0 a: a b: b ps: ps" ;
	double lev_bnds(lev, bnds) ;
		lev_bnds:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate" ;
		lev_bnds:formula = "p(n,k,j,i) = a(k)*p0 + b(k)*ps(n,j,i)" ;
		lev_bnds:formula_terms = "p0: p0 a: a_bnds b: b_bnds ps: ps";
		
	double time(time) ;
		time:standard_name = "time" ;
		time:long_name = "time" ;
		time:units = "days since 2030-1-1" ;
		time:axis = "T" ;
		time:calendar = "gregorian" ;
		time:bounds = "time_bnds" ;
	double time_bnds(time, bnds) ;
	double a_bnds(lev, bnds) ;
		a_bnds:long_name = "hybrid sigma coordinate A coefficient
	 		for layer bounds" ;
	double b_bnds(lev, bnds) ; 
		b_bnds:long_name = "hybrid sigma coordinate B coefficient for 
			layer bounds" ;
	float p0 ;
		p0:long_name = "reference pressure for hybrid sigmacoordinate" ;
		p0:units = "Pa" ;
	double a(lev) ;
		a:long_name = "hybrid sigma coordinate A coefficient for layer" ;
	double b(lev) ;
		b:long_name = "hybrid sigma coordinate B coefficient for layer" ;
	float ps(time, yc, xc) ;
		ps:long_name = "Surface Pressure" ;
		ps:units = "Pa" ;
                ps:coordinates= "lon lat" ;

	float cl(time, lev, lat, lon) ;
		cl:standard_name = "cloud_area_fraction" ;
		cl:long_name = "Total Cloud Fraction" ;
		cl:units = "%" ;
		cl:cell_methods = "time: mean (interval: 20 minutes)" ;
		cl:_FillValue = 1.e+20f ;
		cl:missing_value = 1.e+20f ;
		cl:original_name = "CLOUD" ;
		cl:history = " At 17:54:19 on 06/07/2004: CMOR altered the
			data in the following ways: replaced missing value 
			flag(1.00000E+28) with standard missing value
			(1.00000E+20);" ; 
			
// global attributes:
		:title = "GICC model output prepared for IPCC FourthAssessment 
			2xCO2 equilibrium experiment" ;
		:institution = "GICC (Generic International Climate Center,Geneva, 
			Switzerland)" ;
		:source = "GICCM1 (2002): 
			atmosphere: GICAM3 (gicam_0_brnchT_itea_2, T63L32); 
			ocean: MOM(mom3_ver_3.5.2, 2x3L15); 
			sea ice: GISIM4; 
			land:GILSM2.5" ;
		:contact = "Rusty Koder (koder@middle_earth.net)" ;
		:project_id = "IPCC Fourth Assessment" ;
		:table_id = "Table A1 (7 April 2004)" ;
		:experiment_id = "2xCO2 equilibrium experiment" ;
		:realization = 1 ;
		:Conventions = "CF-1.0" ;
		:history = "Output from archive/giccm_03_std_2xCO2_2256. At 
			17:54:19 on 06/07/2004, CMOR rewrote data to comply withCF 
			standards and IPCC Fourth Assessment requirements" ;
		:references = "Model described by Koder and Tolkien (J.Geophys. 
			Res., 2001, 576-591). Also see 
			http://www.GICC.su/giccm/doc/index.html 2XCO2 simulation 
			described in Dorkey et al. (Clim. Dyn., 2003,323-357.)" ;
		:comment = "Equilibrium reached after 30-year spin-up after which 
			data were output starting with nominal date ofJanuary 2030" 
			;data;
			
lev = 0.100000001490116, 0.300000004470348, 
0.500000014901161,0.700000002980232, 0.900000013411045 ; 

lev_bnds = 0, 0.200000006705523,0.200000006705523, 
0.400000005960464,0.400000005960464, 0.599999994039536,
0.599999994039536, 0.799999982118607,0.799999982118607, 1 ;
 
time = 30, 60 ; 

time_bnds = 
0, 30,
30, 60 ; 

a_bnds = 0, 
0.150000005960464,0.150000005960464, 
0.25,0.25, 0.25,0.25, 
0.150000005960464,0.150000005960464, 
0 ; 

b_bnds = 0, 0.0500000007450581,0.0500000007450581, 
0.150000005960464,0.150000005960464, 0.349999994039536,0.349999994039536, 
0.649999976158142,0.649999976158142, 1 ; 
p0 = 100000 ; 

a = 0.100000001490116, 0.200000002980232, 
0.300000011920929,0.200000002980232, 0.100000001490116 ; 

b = 0, 0.100000001490116, 0.200000002980232, 0.5, 0.800000011920929 ; 

ps =97100, 97500, 97900, 98300,98700, 99100, 99500, 99900,100300, 100700, 
101100, 101500,97200, 97600, 98000, 98400,98800, 99200, 99600, 100000,  
100400, 100800, 101200, 101600 ; 

cl = 
50.1, 50.5, 50.9, 51.3,
51.7, 52.1, 52.5, 52.9,
53.3, 53.7, 54.1, 54.5,
56.5, 56.9, 57.3, 57.7,
58.1, 58.5, 58.9, 59.3,
59.7, 60.1, 60.5, 60.9,
62.9, 63.3, 63.7, 64.1,
64.5, 64.9, 65.3, 65.7,
66.1, 66.5, 66.9, 67.3,
69.3, 69.7, 70.1, 70.5,
70.9, 71.3, 71.7, 72.1,
72.5, 72.9, 73.3, 73.7,
75.7, 76.1, 76.5, 76.9,
77.3, 77.7, 78.1, 78.5,
78.9, 79.3, 79.7, 80.1,
50.2, 50.6, 51, 51.4,
51.8, 52.2, 52.6, 53,
53.4, 53.8, 54.2, 54.6,
56.6, 57, 57.4, 57.8,
58.2, 58.6, 59, 59.4,
59.8, 60.2, 60.6, 61,
63, 63.4, 63.8, 64.2,
64.6, 65, 65.4, 65.8,
66.2, 66.6, 67, 67.4,
69.4, 69.8, 70.2, 70.6,
71, 71.4, 71.8, 72.2,
72.6, 73, 73.4, 73.8,
75.8, 76.2, 76.6, 77,
77.4, 77.8, 78.2, 78.6,
79, 79.4, 79.8, 80.2 ;

} 

References

[1] http://rainbow.llnl.gov/ipcc/IPCC_output_requirements.htm

[2] http://www.unidata.ucar.edu/software/netcdf/

[3] http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/File-Format-Specification.html

[4] http://www.unidata.ucar.edu/software/netcdf/docs/BestPractices.html

[5] http://badc.nerc.ac.uk/help/formats/netcdf/index.html

[6] http://badc.nerc.ac.uk/help/formats/netcdf/index_cf.html

[7] http://titania.badc.rl.ac.uk/cgi-bin/cf-checker.pl

[8] http://www-pcmdi.llnl.gov/software-portal/cmor/

[9] http://nco.sourceforge.net/

[10] http://www.cgd.ucar.edu/cms/eaton/cf-metadata/index.html

[11] http://rcmlab.agron.iastate.edu/narccap/output_archive.html

[12] http://cf-pcmdi.llnl.gov/documents/cf-standard-names/about

[13] http://www.unidata.ucar.edu/software/udunits/

[14] http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.0/ch05s07.html

[15] http://cf-pcmdi.llnl.gov/documents/cf-standard-names/

 

Recent Changes to this Document:

24 May 2006: Initial document adopted from Requirements for IPCC Standard Output Contributed to the PCMDI Archive.

27 April 2007: Major bug fixes/typographic errors and significant changes to examples to match NARCCAP conformance.

12 August 2010: Output pressure levels changed to reduce total data volume.

 
©2007 UCAR   |   Privacy Policy   |   Terms of Use   |   Site Map   |   top of page    
The National Center for Atmospheric Research is sponsored by the National Science Foundation. Any opinions, findings and conclusions or recommendations expressed in this material do not necessarily reflect the views of the National Science Foundation.