Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

where the padding type may be one of the four literal strings: "none", "low", "high", or "both" depending on whether the face_dimension is one shorter than the corresponding node_dimension (padding:none), one longer than the corresponding node_dimension (padding:both), or of equal length with one extra value stored on the low or high end of the dimension (see the figure below). The edge1_dimensions and edge2_dimensions attributes may be used to define separate dimensions for the edges (see the ROMS example below), but by default the edge dimensions are assumed to be consistent with the dimensions used by the edges and faces respectively. The optional vertical_dimensions attribute may be used to specify the names of the dimensions for the layers and layer interfaces respectively using the same syntax: layer_dimension:layer_interface_dimension (padding:type).

Note: The numbering of the edges corresponds to the order of the dimensions in the dimensions attributes. The order of the dimensions listed here does not change since these are specified as a string. The actual order of dimensions in the netCDF API (and hence in the dump generated by different tools) depends on the programming language used. Hence, the order of the dimensions listed here may differ from the order of the dimensions in the data definition.

 

Image Added

Figure 1: illustrating the formulations used for expressing the relationship between face and node dimensions.

Example:

Code Block
dimensions:
	time = UNLIMITED ;
	inode = 10 ;
	jnode = 20 ;
	icell = 9 ;
	jcell = 19 ;

variables:
	char time(time) ;
		time:standard_name = "time" ;
		time:long_name = "time" ;
		time:units = "seconds since 2015-01-01 00:00:00" ;
	float u(time, jcell, inode) ;
		u:description = "x-velocity" ;
		u:units = "m s-1" ;
		u:grid = "MyGrid" ;
		u:location = "edge1" ;
	float v(time, jnode, icell) ;
		u:description = "y-velocity" ;
		u:units = "m s-1" ;
		u:grid = "MyGrid" ;
		u:location = "edge2" ;
	float c(time, jcell, icell) ;
		c:description = "some concentration" ;
		c:grid = "MyGrid" ;
		c:location = "face" ;
	float node_lat(jnode, inode) ;
		node_lat:standard_name = "latitude" ;
		node_lat:units = "degree_north" ;
	float node_lon(jnode, inode) ;
		node_lon:standard_name = "longitude" ;
		node_lon:units = "degree_east" ;

	int MyGrid ;
		grid:cf_role = grid_topology
		grid:topology_dimension = 2 ;
		grid:node_dimensions = "inode jnode" ;
		grid:volume_dimensions = "icell: inode (padding: none) jcell: jnode (padding: none)" ;
		grid:node_coordinates = "node_lon node_lat" ;

...