Versions Compared

Key

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

...

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.

3d grid

Required topology attributes

Value

cf_role

mesh_topology

topology_dimension

3

node_dimensions

node_dimension1 node_dimension2 node_dimension3

volume_dimensions

face_dimension1:node_dimension1 (padding:type1) face_dimension2:node_dimension2 (padding:type2) face_dimension3:node_dimension3 (padding:type3)

Optional attributes

Default value

edge1_dimensionsface_dimension1:node_dimension1 (padding:type1) node_dimension2 node_dimension3
edge2_dimensionsnode_dimension1 face_dimension2:node_dimension2 (padding:type2) node_dimension3
edge3_dimensionsnode_dimension1 node_dimension2 face_dimension3:node_dimension3 (padding:type3)
face1_dimensionsnode_dimension1 face_dimension2:node_dimension2 (padding:type2) face_dimension3:node_dimension3 (padding:type3)
face2_dimensionsface_dimension1:node_dimension1 (padding:type1) node_dimension2 face_dimension3:node_dimension3 (padding:type3)
face3_dimensionsface_dimension1:node_dimension1 (padding:type1) face_dimension2:node_dimension2 (padding:type2) node_dimension3
node_coordinates
edge <i> _coordinates
face <i> _coordinates
volume_coordinates

Note: The edge1, edge2, and edge3 are in a 3D grid aligned to the dimensions1, 2, and 3 respectively, whereas the edge1 and edge2 are in a 2D grid perpendicular to the dimensions 1 and 2 respectively. The face1, face2, and face3 play that role in the 3D grid.

Examples

Delft3D

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" ;

3d grid

Required topology attributes

Value

cf_role

mesh_topology

topology_dimension

3

node_dimensions

node_dimension1 node_dimension2 node_dimension3

volume_dimensions

face_dimension1:node_dimension1 (padding:type1) face_dimension2:node_dimension2 (padding:type2) face_dimension3:node_dimension3 (padding:type3)

Optional attributes

Default value

edge1_dimensionsface_dimension1:node_dimension1 (padding:type1) node_dimension2 node_dimension3
edge2_dimensionsnode_dimension1 face_dimension2:node_dimension2 (padding:type2) node_dimension3
edge3_dimensionsnode_dimension1 node_dimension2 face_dimension3:node_dimension3 (padding:type3)
face1_dimensionsnode_dimension1 face_dimension2:node_dimension2 (padding:type2) face_dimension3:node_dimension3 (padding:type3)
face2_dimensionsface_dimension1:node_dimension1 (padding:type1) node_dimension2 face_dimension3:node_dimension3 (padding:type3)
face3_dimensionsface_dimension1:node_dimension1 (padding:type1) face_dimension2:node_dimension2 (padding:type2) node_dimension3
node_coordinates
edge <i> _coordinates
face <i> _coordinates
volume_coordinates

Note: The edge1, edge2, and edge3 are in a 3D grid aligned to the dimensions1, 2, and 3 respectively, whereas the edge1 and edge2 are in a 2D grid perpendicular to the dimensions 1 and 2 respectively. The face1, face2, and face3 play that role in the 3D grid.

Example:

Code Block
dimensions:
	time = UNLIMITED ;
	inode = 10 ;
	jnode = 20 ;
	knode = 30 ;
	iface = 9 ;
	jface = 19 ;
	kface = 29 ;

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, kface, jface, inode) ;
		u:description = "x-velocity" ;
		u:units = "m s-1" ;
		u:grid = "MyGrid3" ;
		u:location = "face1" ;
	float v(time, kface, jnode, iface) ;
		u:description = "y-velocity" ;
		u:units = "m s-1" ;
		u:grid = "MyGrid3" ;
		u:location = "face2" ;
	float w(time, knode, jface, iface) ;
		u:description = "z-velocity" ;
		u:units = "m s-1" ;
		u:grid = "MyGrid3" ;
		u:location = "face3" ;
	float c(time, kface, jface, iface) ;
		c:description = "some concentration" ;
		c:grid = "MyGrid3" ;
		c:location = "volume" ;
	float node_lat(knode, jnode, inode) ;
		node_lat:standard_name = "latitude" ;
		node_lat:units = "degree_north" ;
	float node_lon(knode, jnode, inode) ;
		node_lon:standard_name = "longitude" ;
		node_lon:units = "degree_east" ;
	float node_elevation(knode, jnode, inode) ;
		node_elevation:description = "elevation" ;
		node_elevation:units = "m" ;

	int MyGrid3 ;
		grid:cf_role = grid_topology
		grid:topology_dimension = 3 ;
		grid:node_dimensions = "inode jnode knode" ;
		grid:volume_dimensions = "iface: inode (padding: none) jface: jnode (padding: none) kface: knode (padding: none)" ;
		grid:node_coordinates = "node_lon node_lat node_elevation" ;

Data variables

The use of the attributes to associate a data variable with a specific grid and stagger location is copied from the UGRID conventions: To map the variable onto the topology of the underlying grid, two new attributes have been introduced. First, the attribute grid points to the grid_topology variable containing the meta-data attributes of the grid on which the variable has been defined. Second, the attribute location points to the (stagger) location within the grid at which the variable is defined.

Example:

Code Block
double waterlevel(time,j,i) ;
        waterlevel:standard_name = "sea_surface_height_above_geoid" ;
        waterlevel:units = "m" ;
        waterlevel:grid = "MyGrid"
        waterlevel:location = "face" ;
        waterlevel:coordinates = "lat_face_MyGrid lon_face_MyGrid" ;

Examples

Delft3D

Delft3D uses an Arikawa C-grid with the water level (pressure) computed in the cell centres, and the normal velocities at the cell edges. This example shows the use of asymmetric padding (at the low end of the horizontal coordinate indices there is an extra line of face/mid-point values). In the vertical there is no padding, so the number of layer interfaces is one more than the number of layers. The integer coodinate variables KMAX and KMAX1 are used to indicate that layer interfaces are numbered 0 to KMAX whereas all other indices use the default numbering from 1 to the maximum value.

...