Dimensions for unstructured grid data
Some standard dimensions
 Nodes
 the number of nodes in the mesh
 Cells
 the number of cells in the mesh
 Connect

the number of nodes per cell [The maximum number for mixed cells]
 For an extruded mesh, these should describe the 2D pattern, not the 3D cells
 Better name?
 Edges
 the number of edges [optional  edge data only]
 Faces
 the number of Faces [optional  3D face center data only]
 Times
 The number of time points in the data set.
[Only for extruded meshes]
 Layers
 the number of stacked prismatic cell in an extruded mesh
 Levels
 the number of stacked nodes bounding the cells of an extruded mesh
Discusion of Dimension issues:
What about netCDF files which contain more than one mesh? That would require one complete set of these dimesions for each mesh in the file?
 The naming conventions will be very messy
 A strong case could be made for only allowing one set of standard dimensions in NETCDF3.6
 With out a way to store multiple mesh dimensions, zones and domain decomposition are impossible in a single file.
 Only one unlimited dimension is available anyway...
 These can become groups in NETCDF 4 where this *should* be included as a single file!
 What if we had pointers to other files for NETCDF 3.6 standard so that we could simulate groups? That way we can have as many meshes and dimensions as we need, without cluttering a single file. These would naturally turn into groups in NETCDF 4?
Example CDL Dimension for multiple mesh files
dimensions: nNodes_A = ; nCells_A = ; nConnect_A = ; nEdges_A= ; nFaces_A= ; Time_A = ; nNodes_B = ; nCells_B = ; nConnect_B = ; nEdges_B= ; nFaces_B= ; Time_B = ;
Better Ideas Please!?!?
 Comment

If two sets of dimensions are included each one should be complete and independent of the other.
 Exception: Common time variable?
A better idea for multiple grids:
I see no real problem. Let the file have single vectors of latitude, longitude, salinity all of dimension nodes. Then define several grid index arrays for different grids.
int grid1(ncell1,three) int grid2(ncell2,three) int grid3(ncell3,three)
Each one consists of triplets of indices picking out values from the lat, long, salt arrays
float lon(nodes) float lat(nodes) float salt(time,nodes)
Then a couple of matlab type calls would allow you to plot these different grids easily:
lon=nc{'lon'}(:); lat=nc{'lat'}(:) ; salt=nc{'salt'}(:) ; grid1=nc{'grid1'}(:) ; grid2= nc{'grid2'}(:); grid3= nc{'grid3'}(:); triplot(grid1,lon,lat,salt(3,:)) triplot(grid2,lon,lat,salt(3,:)) triplot(grid3,lon,lat,salt(3,:))
Now we come to the idea of a mosaic. What do we need to know in order to make connections between grid1, grid2, grid3? What would it mean to be connected? Sharing halo values?
Other dimensions to include:
We need dimensions for the following:
*maximum # of cells surrounding each cell
 maximum # of cells surrounding each node
 maximum # of nodes surrounding each cell
 maximum # of nodes surrounding each node
What about other dimensions required for variables used in gradient calculations? How do we standardize and name these?
Go Back to CdlDiscussion Table of Contents