Version 5 (modified by tomgross, 13 years ago) (diff)



Variables are variables, they should be very similar to the existing CF Conventions, but certain meta data should be added due the complexity of unstructured grid data.

I disagree (TomGross?) See my discussion on UgCellArrays : The variables are values. Nothing more. In the hierarchy view of describing the grids the smallest elements, the nodes, edges and faces. Do not require an association with the grid they will belong to. In fact they might belong to mulitple grids. The grids have lots of pointers which pick out which nodes etc belong to each cell of the grid.

Variable Meta Data additions for unstructured grids

  • Connectivity variables
  • The coordinate variables
    • the name of the mesh it belongs to
  • Data variables
    • the name of the mesh it belongs to
    • The location of the data on the cell


Connectivity CDL

See MeshMetaData

Edge Index CDL

Index of the edges which belong to each cell in an order which is specified for each type of cell. This describes which edge data belong to which cell similar to the connectivity that describes which nodes belong to which cell.

int  EDGES(nEdges,Cells)     
     EDGES:MESH = "MESH A"    
     EDGES:X edge coordinate = "x_edge"   ! Should the xyz location be standard?
     EDGES:Y edge coordinate = "y_edge"
     EDGES:Z edge coordinate = "z_edge"

Should there be an EDGE TYPE attribute? What would its purpose be?

Faces Index CDL

Index of the faces which belong to each 3D solid cells in the mesh. The order of faces is specified in for each type of cell similar to the connectivity that describes which nodes belong to which cell.

int  FACES(nFaces,Cells)     ! Data: List of faces for each cell:
     FACES:MESH = "MESH A"    !        [face1, face2, face3, ... face4] 
     FACES:X face coordinate = "x_face"   ! Should the xyz location be standard?
     FACES:Y face coordinate = "y_face"
     FACES:Z face coordinate = "z_face"

Grid Variable CDL

Simple Grid variable data:

float x_A(Nodes)		! Assuming only one standard set of Dimension names
	x_A:standard_name = "nodal x-coordinate"
	x_A:units =
		Other attributes?

float y_A(Nodes)
	y_A:standard_name = "nodal y-coordinate"
	y_A:Mesh = "Mesh A"
	y_A:units =

float z_A(Nodes)		[optional in case of 2D mesh or sigma coords]
	z_A:standard_name = "nodal z-coordinate"
	z_A:Mesh = "Mesh A"
	z_A:units =

Nodal coordinates can vary with time:

float x_B(time,Nodes)		
	x_B:standard_name = "nodal x-coordinate"
	x_B:Mesh = "Mesh B"
	x_B:units =

float y_B(time,Nodes)
	y_B:standard_name = "nodal y-coordinate"
	y_B:Mesh = "Mesh B"
	y_B:units =

float z_B(time,Nodes)		[optional in case of 2D mesh or sigma Coords]  
	z_B:standard_name = "nodal z-coordinate"
	z_B:Mesh = "Mesh B"
	z_B:units =

Grid variables for an Extruded Mesh:

float x_C(Nodes)
	x_C:standard_name = "nodal x-coordinate"
	x_C:units =

float y_C(Nodes)
	y_C:standard_name = "nodal y-coordinate"
	y_C:units =

float Sigma(Layers) 		
	Sigma:standard_name = "?"
	Sigma:Positive = "up"
		Additional attributes?

float Surface(time,Nodes)
	Surface:standard_name = "?"
	Surface:Units =
	Surface:Positive = 

float Bottom(Nodes)
	Surface:standard_name = "?"
	Surface:Units =
	Surface:Positive = 

Data CDL

Data at nodes in a non sigma coordinate mesh

float SomeData(time,Nodes)
	SomeData:standard_name = "this data"
	SomeData:Mesh = "MESH A"
	SomeData:Location = "NODECENT"
	SomeData:valid_min = "xx"
	SomeData:valid_max = "yy"

Data at nodes in a sigma coordinate mesh

float MoreData(time,levels, Nodes)
	MoreData:standard_name = "that data"
	MoreData:Mesh = "MESH B"
	MoreData:Location = "NODECENT 
	MoreData:valid_min = "xx"
	MoreData:valid_max = "yy"

Data at Cell centers in a sigma coordinate mesh

float lastData(time, layers, Cells)
	lastData:standard_name = "which data?"
	lastData:Mesh = "MESH C"
	lastData:Location = "CELLCENT"
	lastData:valid_min = "xx"
	lastData:valid_max = "yy"

Data at cell edges

float LessData(time, Edges)
	LessData:standard_name = "whos data?"
	LessData:Mesh = "MESH D"
	LessData:Location = "EDGECENT 
	LessData:valid_min = "xx"
	LessData:valid_max = "yy"

Data at cell faces

float ItsData(time, Faces)
	ItsData:standard_name = "why data?"
	ItsData:Mesh = "MESH D"
	ItsData:Location = "FACECENT 
	ItsData:valid_min = "xx"
	ItsData:valid_max = "yy"

Go Back to CdlDiscussion Table of Contents