Topology1D network topology.The topology information is stored as attributes to a dummy variable (in the example below called 'Mesh1'); the first attributes are dimensionality and locations. The value of the dimensionality attribute should be integer 1 for a 1D network. The value of the location attribute is a string with a space separated, extendable list of location names. Initially these locations have a purely topological meaning, but they may be used to define additional numerical stagger positions too. The names are not formally standardized, but the names 'node' and 'edge' are recommended for the 1D network geometry. For each location name X, there will be a further attribute composed of the concatenation of the name X and '_coordinates'. For example, the location name 'edge' points to an attribute 'edge_coordinates'. These coordinates attributes follow the CF-conventions, i.e. they point to the variables that contain the latitude and longitude (or other coordinate) variables that contain the coordinate data for that particular location. From these attributes it's still not clear what the exact network topology is. Therefore, we need one more attribute that specifies the connectivity of the locations. The attribute 'edge_node_connectivity' is composed of the location names 'edge' and 'node' and the word 'connectivity'. It tells us: 1. that the location 'edge' corresponds to the edges/links of the 1D network. 2. that the location 'node' corresponds to the nodes/points of the 1D network. 3. that "Mesh1_edge_nodes" (the value of edge_node_connectivity) is the variable that defines each edge by means of its two end points. The connectivity indices are 1-based, i.e. if the Mesh_edge_nodes array contains values 1 and 2 then this means that that edge connects the first two points. Example: Code Block |
---|
dimensions:
nMesh1_node = 3 ;
nMesh1_edge = 2 ;
Two = 2;
variables:
// Mesh coordinates
double Mesh1_node_x(nMesh1_node) ;
Mesh1_node_x:standard_name = "longitude" ;
Mesh1_node_x:long_name = "Longitude of 1D network nodes." ;
Mesh1_node_x:units = "degrees_east" ;
double Mesh1_node_y(nMesh1_node) ;
Mesh1_node_y:standard_name = "latitude" ;
Mesh1_node_y:long_name = "Latitude of 1D network nodes." ;
Mesh1_node_y:units = "degrees_north" ;
double Mesh1_edge_x(nMesh1_edge) ;
Mesh1_edge_x:standard_name = "longitude" ;
Mesh1_edge_x:long_name = "Characteristic longitude of 1D network edge (e.g. center coordinate of the link)." ;
Mesh1_edge_x:units = "degrees_east" ;
double Mesh1_edge_y(nMesh1_edge) ;
Mesh1_edge_y:standard_name = "latitude" ;
Mesh1_edge_y:long_name = "Characteristic latitude of 1D network edge (e.g. center coordinate of the link)." ;
Mesh1_edge_y:units = "degrees_north" ;
// Mesh topology
integer Mesh1_edge_nodes(nMesh1_edge, Two) ;
Mesh1_edge_nodes:standard_name = "" ; // YET TO BE DETERMINED
Mesh1_edge_nodes:long_name = "Maps every edge/link to the two nodes that it connects." ;
integer Mesh1 ;
Mesh1:standard_name = "" ; // YET TO BE DETERMINED
Mesh1:long_name = "Topology data of 1D network" ;
Mesh1:dimensionality = 1 ;
Mesh1:locations = "edge node" ;
Mesh1:node_coordinates = "Mesh1_node_x Mesh1_node_y" ;
Mesh1:edge_coordinates = "Mesh1_edge_x Mesh1_edge_y" ;
Mesh1:edge_node_connectivity = "Mesh1_edge_nodes" ;
|
2D triangular mesh topology.The topology information is stored as attributes to a dummy variable (in the example below called 'Mesh2'); the first attributes are dimensionality and locations. The value of the dimensionality attribute should be integer 2 for a 2D (triangular) mesh. The value of the location attribute is a string with a space separated, extendable list of location names. Initially these locations have a purely topological meaning, but they may be used to define additional numerical stagger positions too. The names are not formally standardized, but the names 'node', 'edge' and 'face' are recommended for the 2D mesh geometry. For each location name X, there will be a further attribute composed of the concatenation of the name X and '_coordinates'. For example, the location name 'face' points to an attribute 'face_coordinates'. These coordinates attributes follow the CF-conventions, i.e. they point to the variables that contain the latitude and longitude (or other coordinate) variables that contain the coordinate data for that particular location. From these attributes it's still not clear what the exact mesh topology is. Therefore, we need two more attributes that specify the connectivity of the locations. The attributes 'face_node_connectivity' and 'edge_node_connectivity' are composed of two location names and the word 'connectivity'. They tell us: 1. that the location 'node' corresponds to the nodes/points of the 2D triangular mesh. 2. that the location 'edge' corresponds to the edges of the 2D triangular mesh (the second dimension of the variable it points to is 2). 3. that the location 'face' corresponds to the triangles of the 2D triangular mesh (the second dimension of the variable it points to is larger than 2). 4. that this is a triangular mesh since the second dimension of the variable that face_node_connectivity points to is 3. 5. that "Mesh2_edge_nodes" (the value of edge_node_connectivity) is the variable that defines each edge by means of its end points. 6. that "Mesh2_face_nodes" (the value of face_node_connectivity) is the variable that defines each triangular face by means of its three corners. The connectivity indices are 1-based, i.e. if the Mesh_edge_nodes array contains values 1 and 2 then this means that that edge connects the first two points. The example includes an optional face_connectivity attribute that specifies which triangular faces are neighbors. Example: Code Block |
---|
dimensions:
nMesh2_node = 4 ;
nMesh2_edge = 5 ;
nMesh2_face = 2 ;
nMesh2_face_links = 1;
Two = 2;
Tri = 3;
variables:
// Mesh coordinates
double Mesh2_node_x(nMesh2_node) ;
Mesh2_node_x:standard_name = "longitude" ;
Mesh2_node_x:long_name = "Longitude of 2D mesh nodes." ;
Mesh2_node_x:units = "degrees_east" ;
double Mesh2_node_y(nMesh2_node) ;
Mesh2_node_y:standard_name = "latitude" ;
Mesh2_node_y:long_name = "Latitude of 2D mesh nodes." ;
Mesh2_node_y:units = "degrees_north" ;
double Mesh2_face_x(nMesh2_face) ;
Mesh2_face_x:standard_name = "longitude" ;
Mesh2_face_x:long_name = "Characteristics longitude of 2D mesh triangle (e.g. circumcenter coordinate)." ;
Mesh2_face_x:units = "degrees_east" ;
double Mesh2_face_y(nMesh2_face) ;
Mesh2_face_y:standard_name = "latitude" ;
Mesh2_face_y:long_name = "Characteristics latitude of 2D mesh triangle (e.g. circumcenter coordinate)." ;
Mesh2_face_y:units = "degrees_north" ;
double Mesh2_edge_x(nMesh2_edge) ;
Mesh2_edge_x:standard_name = "longitude" ;
Mesh2_edge_x:long_name = "Characteristic longitude of 2D mesh edge (e.g. center coordinate of the edge)." ;
Mesh2_edge_x:units = "degrees_east" ;
double Mesh2_edge_y(nMesh2_edge) ;
Mesh2_edge_y:standard_name = "latitude" ;
Mesh2_edge_y:long_name = "Characteristic latitude of 2D mesh edge (e.g. center coordinate of the edge)." ;
Mesh2_edge_y:units = "degrees_north" ;
// Mesh topology
integer Mesh2_edge_nodes(nMesh2_edge, Two) ;
Mesh2_edge_nodes:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_edge_nodes:long_name = "Maps every edge to the two nodes that it connects." ;
integer Mesh2_face_nodes(nMesh2_face, Tri) ;
Mesh2_face_nodes:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_face_nodes:long_name = "Maps every triangular face to its three corner nodes." ;
integer Mesh2_face_links(nMesh2_face_links, Two) ;
Mesh2_face_links:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_face_links:long_name = "Indicates which triangular faces are neighbors." ;
integer Mesh2 ;
Mesh2:standard_name = "" ; // YET TO BE DETERMINED
Mesh2:long_name = "Topology data of 2D unstructured mesh" ;
Mesh2:dimensionality = 2 ;
Mesh2:locations = "face edge node" ;
Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y" ;
Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y" ;
Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ;
Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y" ;
Mesh2:face_node_connectivity = "Mesh2_face_nodes" ;
Mesh2:face_connectivity = "Mesh2_face_links" ;
|
2D flexible mesh (mixed triangles, quadrilaterals, etc.) topology.The topology information is stored as attributes to a dummy variable (in the example below called 'Mesh2'); the first attributes are dimensionality and locations. The value of the dimensionality attribute should be integer 2 for a 2D mesh. The value of the location attribute is a string with a space separated, extendable list of location names. Initially these locations have a purely topological meaning, but they may be used to define additional numerical stagger positions too. The names are not formally standardized, but the names 'node', 'edge' and 'face' are recommended for the 2D mesh geometry. For each location name X, there will be a further attribute composed of the concatenation of the name X and '_coordinates'. For example, the location name 'face' points to an attribute 'face_coordinates'. These coordinates attributes follow the CF-conventions, i.e. they point to the variables that contain the latitude and longitude (or other coordinate) variables that contain the coordinate data for that particular location. From these attributes it's still not clear what the exact mesh topology is. Therefore, we need two more attributes that specify the connectivity of the locations. The attributes 'face_node_connectivity' and 'edge_node_connectivity' are composed of two location names and the word 'connectivity'. They tell us: 1. that the location 'node' corresponds to the nodes/points of the 2D mesh. 2. that the location 'edge' corresponds to the edges of the 2D mesh (the second dimension of the variable it points to is 2). 3. that the location 'face' corresponds to the faces of the 2D mesh (the second dimension of the variable it points to is larger than 2). 4. that this is a mesh composed of quandrilaterals (and possibly some triangles) since the second dimension of the variable that face_node_connectivity points to is 4. 5. that "Mesh2_edge_nodes" (the value of edge_node_connectivity) is the variable that defines each edge by means of its end points. 6. that "Mesh2_face_nodes" (the value of face_node_connectivity) is the variable that defines each face by means of its corner nodes. The connectivity indices are 1-based, i.e. if the Mesh_edge_nodes array contains values 1 and 2 then this means that that edge connects the first two points. If the mesh contains triangles then the last node numbers of those faces in the Mesh2_face_nodes array will be 0 (_FillValue). The example includes an optional face_connectivity attribute that specifies which faces are neighbors. Example: Code Block |
---|
dimensions:
nMesh2_node = 6 ;
nMesh2_edge = 7 ;
nMesh2_face = 2 ;
nMesh2_face_links = 1;
nMaxMesh2_face_nodes = 4;
Two = 2;
variables:
// Mesh coordinates
double Mesh2_node_x(nMesh2_node) ;
Mesh2_node_x:standard_name = "longitude" ;
Mesh2_node_x:long_name = "Longitude of 2D mesh nodes." ;
Mesh2_node_x:units = "degrees_east" ;
double Mesh2_node_y(nMesh2_node) ;
Mesh2_node_y:standard_name = "latitude" ;
Mesh2_node_y:long_name = "Latitude of 2D mesh nodes." ;
Mesh2_node_y:units = "degrees_north" ;
double Mesh2_face_x(nMesh2_face) ;
Mesh2_face_x:standard_name = "longitude" ;
Mesh2_face_x:long_name = "Characteristics longitude of 2D mesh face (e.g. circumcenter coordinate)." ;
Mesh2_face_x:units = "degrees_east" ;
double Mesh2_face_y(nMesh2_face) ;
Mesh2_face_y:standard_name = "latitude" ;
Mesh2_face_y:long_name = "Characteristics latitude of 2D mesh face (e.g. circumcenter coordinate)." ;
Mesh2_face_y:units = "degrees_north" ;
double Mesh2_edge_x(nMesh2_edge) ;
Mesh2_edge_x:standard_name = "longitude" ;
Mesh2_edge_x:long_name = "Characteristic longitude of 2D mesh edge (e.g. center coordinate of the edge)." ;
Mesh2_edge_x:units = "degrees_east" ;
double Mesh2_edge_y(nMesh2_edge) ;
Mesh2_edge_y:standard_name = "latitude" ;
Mesh2_edge_y:long_name = "Characteristic latitude of 2D mesh edge (e.g. center coordinate of the edge)." ;
Mesh2_edge_y:units = "degrees_north" ;
// Mesh topology
integer Mesh2_edge_nodes(nMesh2_edge, Two) ;
Mesh2_edge_nodes:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_edge_nodes:long_name = "Maps every edge to the two nodes that it connects." ;
integer Mesh2_face_nodes(nMesh2_face, nMaxMesh2_face_nodes) ;
Mesh2_face_nodes:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_face_nodes:long_name = "Maps every face to its corner nodes." ;
Mesh2_face_nodes:_FillValue = 0 ;
integer Mesh2_face_links(nMesh2_face_links, Two) ;
Mesh2_face_links:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_face_links:long_name = "Indicates which faces are neighbors." ;
integer Mesh2 ;
Mesh2:standard_name = "" ; // YET TO BE DETERMINED
Mesh2:long_name = "Topology data of 2D unstructured mesh" ;
Mesh2:dimensionality = 2 ;
Mesh2:locations = "face edge node" ;
Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y" ;
Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y" ;
Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ;
Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y" ;
Mesh2:face_node_connectivity = "Mesh2_face_nodes" ;
Mesh2:face_connectivity = "Mesh2_face_links" ;
|
3D layered mesh topology.For a 3D layered unstructured mesh topology the approach is taken as for the structured mesh according CF-conventions. For the horizontal plane a 2D unstructured mesh topology is defined, which is extruded in the vertical direction by means of a vertical coordinate. The example below matches the example in the previous section combined with a vertical coordinate according CF-conventions. This example introduces also the attributes grid and location on the 2D variables Mesh2_surface and Mesh2_depth. For more information about these attributes see the data definition section below. Example: Code Block |
---|
dimensions:
nMesh2_node = 6 ;
nMesh2_edge = 7 ;
nMesh2_face = 2 ;
nMesh2_face_links = 1;
nMaxMesh2_face_nodes = 4;
Mesh2_layers = 3 ;
Two = 2;
variables:
// Mesh coordinates
double Mesh2_node_x(nMesh2_node) ;
Mesh2_node_x:standard_name = "longitude" ;
Mesh2_node_x:long_name = "Longitude of 2D mesh nodes." ;
Mesh2_node_x:units = "degrees_east" ;
double Mesh2_node_y(nMesh2_node) ;
Mesh2_node_y:standard_name = "latitude" ;
Mesh2_node_y:long_name = "Latitude of 2D mesh nodes." ;
Mesh2_node_y:units = "degrees_north" ;
double Mesh2_face_x(nMesh2_face) ;
Mesh2_face_x:standard_name = "longitude" ;
Mesh2_face_x:long_name = "Characteristics longitude of 2D mesh face (e.g. circumcenter coordinate)." ;
Mesh2_face_x:units = "degrees_east" ;
double Mesh2_face_y(nMesh2_face) ;
Mesh2_face_y:standard_name = "latitude" ;
Mesh2_face_y:long_name = "Characteristics latitude of 2D mesh face (e.g. circumcenter coordinate)." ;
Mesh2_face_y:units = "degrees_north" ;
double Mesh2_edge_x(nMesh2_edge) ;
Mesh2_edge_x:standard_name = "longitude" ;
Mesh2_edge_x:long_name = "Characteristic longitude of 2D mesh edge (e.g. center coordinate of the edge)." ;
Mesh2_edge_x:units = "degrees_east" ;
double Mesh2_edge_y(nMesh2_edge) ;
Mesh2_edge_y:standard_name = "latitude" ;
Mesh2_edge_y:long_name = "Characteristic latitude of 2D mesh edge (e.g. center coordinate of the edge)." ;
Mesh2_edge_y:units = "degrees_north" ;
// Mesh topology
integer Mesh2_edge_nodes(nMesh2_edge, Two) ;
Mesh2_edge_nodes:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_edge_nodes:long_name = "Maps every edge to the two nodes that it connects." ;
integer Mesh2_face_nodes(nMesh2_face, nMaxMesh2_face_nodes) ;
Mesh2_face_nodes:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_face_nodes:long_name = "Maps every face to its corner nodes." ;
Mesh2_face_nodes:_FillValue = 0 ;
integer Mesh2_face_links(nMesh2_face_links, Two) ;
Mesh2_face_links:standard_name = "" ; // YET TO BE DETERMINED
Mesh2_face_links:long_name = "Indicates which faces are neighbors." ;
integer Mesh2 ;
Mesh2:standard_name = "" ; // YET TO BE DETERMINED
Mesh2:long_name = "Topology data of 2D unstructured mesh" ;
Mesh2:dimensionality = 2 ;
Mesh2:locations = "face edge node" ;
Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y" ;
Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y" ;
Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ;
Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y" ;
Mesh2:face_node_connectivity = "Mesh2_face_nodes" ;
Mesh2:face_connectivity = "Mesh2_face_links" ;
// Vertical coordinate
double Mesh2_layers(Mesh2_layers) ;
Mesh2_layers:standard_name = "ocean_sigma_coordinate" ;
Mesh2_layers:long_name = "sigma at layer midpoints" ;
Mesh2_layers:positive = "up" ;
Mesh2_layers:formula_terms = "sigma: Mesh2_layers eta: Mesh2_surface depth: Mesh2_depth" ;
double Mesh2_depth(nMesh2_node) ;
Mesh2_depth:standard_name = "sea_floor_depth_below_geoid" ;
Mesh2_depth:units = "m" ;
Mesh2_depth:positive = "down" ;
Mesh2_depth:grid = "Mesh2"
Mesh2_depth:location = "node" ;
Mesh2_depth:coordinates = "Mesh2_node_x Mesh2_node_y" ;
double Mesh2_surface(nMesh2_node) ;
Mesh2_surface:standard_name = "sea_surface_height_above_geoid" ;
Mesh2_surface:units = "m" ;
Mesh2_surface:grid = "Mesh2"
Mesh2_surface:location = "face" ;
Mesh2_surface:coordinates = "Mesh2_face_x Mesh2_face_y" ;
|
Data defined on meshes.Location maps.Data variables.The case of an integrated 1D-2D-3D mesh.Combined mesh topology.Example of a combination of connected 1D network, 2D mesh and 3D mesh.The variable and dimension names used in this example differ slightly from those used in the examples on Unstructured grids. Please find a translation table below: Unstructured grids | This example |
---|
NetNode | node | NetLink | edge/edge_nodes | NetElem/NetCell | face | NetElemNode/NetCellNode | face_nodes | NetElemLink/NetCellLink/FlowLink | face_links |
Code Block |
---|
netcdf test_map {
dimensions:
// dimensions for mesh 1
nMesh1_node = 3 ;
nMesh1_edge = 2 ;
nMaxMesh1_contour_pts = 99 ;
nMesh1_cell = 2 ;
nMesh1_interface = 2 ;
// dimensions for mesh 2
nMesh2_node = 6 ;
nMesh2_edge = 7 ;
nMesh2_face = 2 ;
nMesh2_face_links = 1;
nMaxMesh2_face_nodes = 4;
nMaxMesh2_contour_pts = 99 ;
// dimensions for mesh 3
nMesh3_node = 6 ;
nMesh3_edge = 7 ;
nMesh3_face = 2 ;
nMesh3_face_links = 1;
nMaxMesh3_face_nodes = 4;
nMaxMesh3_contour_pts = 99 ;
nMesh3_layer = 3 ;
nMesh3_interface = 4;
// common dimensions
Two = 2;
time = UNLIMITED ; // (1 currently)
variables:
// Basic mesh data (coordinates independent of computational cells whatsoever)
double Mesh1_node_x(nMesh1_node) ;
Mesh1_node_x:standard_name = "projection_x_coordinate" ;
Mesh1_node_x:long_name = "netnodal x-coordinate" ;
Mesh1_node_x:units = "m" ;
Mesh1_node_x:bounds = "Mesh1_node_contour_x" ;
double Mesh1_node_y(nMesh1_node) ;
Mesh1_node_y:standard_name = "projection_y_coordinate" ;
Mesh1_node_y:long_name = "netnodal y-coordinate" ;
Mesh1_node_y:units = "m" ;
Mesh1_node_y:bounds = "Mesh1_node_contour_y" ;
double Mesh1_edge_x(nMesh1_edge) ;
Mesh1_edge_x:standard_name = "projection_x_coordinate" ;
Mesh1_edge_x:long_name = "Center coordinate of net link (velocity point)." ;
Mesh1_edge_x:units = "m" ;
double Mesh1_edge_y(nMesh1_edge) ;
Mesh1_edge_y:standard_name = "projection_y_coordinate" ;
Mesh1_edge_y:long_name = "Center coordinate of net link (velocity point)." ;
Mesh1_edge_y:units = "m" ;
double Mesh1_node_contour_x(nMesh1_node, nMaxMesh1_contour_pts) ;
Mesh1_node_contour_x:standard_name = "projection_x_coordinate" ;
Mesh1_node_contour_x:long_name = "List of x-points that form outline of flow volume" ;
Mesh1_node_contour_x:units = "m" ;
double Mesh1_node_contour_y(nMesh1_node, nMaxMesh1_contour_pts) ;
Mesh1_node_contour_y:standard_name = "projection_y_coordinate" ;
Mesh1_node_contour_y:units = "m" ;
Mesh1_node_contour_y:long_name = "List of y-points that form outline of flow volume" ;
// Basic mesh topology
integer Mesh1_edge_nodes(nMesh1_edge, Two) ;
Mesh1_edge_nodes:long_name = "links between two nodes" ;
integer Mesh1 ;
Mesh1:long_name = "Topology data of Mesh1" ;
Mesh1:dimensionality = 1 ;
Mesh1:locations = "link node" ;
Mesh1:node_coordinates = "Mesh1_node_x Mesh1_node_y" ;
Mesh1:edge_coordinates = "Mesh1_edge_x Mesh1_edge_y" ;
Mesh1:edge_nodes = "Mesh1_edge_nodes" ;
Mesh1:parent_mesh = "CombinedMesh" ;
// Similar for Mesh2
double Mesh2_node_x(nMesh2_node) ;
Mesh2_node_x:standard_name = "projection_x_coordinate" ;
Mesh2_node_x:long_name = "netnodal x-coordinate" ;
Mesh2_node_x:units = "m" ;
double Mesh2_node_y(nMesh2_node) ;
Mesh2_node_y:standard_name = "projection_y_coordinate" ;
Mesh2_node_y:long_name = "netnodal y-coordinate" ;
Mesh2_node_y:units = "m" ;
double Mesh2_face_x(nMesh2_face) ;
Mesh2_face_x:standard_name = "projection_x_coordinate" ;
Mesh2_face_x:long_name = "Flow element circumcenter x" ;
Mesh2_face_x:units = "m" ;
Mesh2_face_x:bounds = "Mesh2_face_contour_x" ;
double Mesh2_face_y(nMesh2_face) ;
Mesh2_face_y:standard_name = "projection_y_coordinate" ;
Mesh2_face_y:long_name = "Flow element circumcenter y" ;
Mesh2_face_y:units = "m" ;
Mesh2_face_y:bounds = "Mesh2_face_contour_y" ;
double Mesh2_face_contour_x(nMesh2_face, nMaxMesh2_contour_pts) ;
Mesh2_face_contour_x:standard_name = "projection_x_coordinate" ;
Mesh2_face_contour_x:long_name = "List of x-points that form outline of flow volume" ;
Mesh2_face_contour_x:units = "m" ;
double Mesh2_face_contour_y(nMesh2_face, nMaxMesh2_contour_pts) ;
Mesh2_face_contour_y:standard_name = "projection_y_coordinate" ;
Mesh2_face_contour_y:units = "m" ;
Mesh2_face_contour_y:long_name = "List of y-points that form outline of flow volume" ;
double Mesh2_edge_x(nMesh2_edge) ;
Mesh2_edge_x:standard_name = "projection_x_coordinate" ;
Mesh2_edge_x:long_name = "Center coordinate of net link (velocity point)." ;
Mesh2_edge_x:units = "m" ;
double Mesh2_edge_y(nMesh2_edge) ;
Mesh2_edge_y:standard_name = "projection_y_coordinate" ;
Mesh2_edge_y:long_name = "Center coordinate of net link (velocity point)." ;
Mesh2_edge_y:units = "m" ;
integer Mesh2_edge_nodes(nMesh2_edge, Two) ;
Mesh2_edge_nodes:long_name = "link between two nodes" ;
integer Mesh2_face_nodes(nMesh2_face, nMaxMesh2_face_nodes) ;
Mesh2_face_nodes:long_name = "Mapping from net face to net nodes." ;
integer Mesh2_face_links(nMesh2_face_links, Two) ;
FlowLink:long_name = "link/interface between two flow elements (faces)" ;
integer Mesh2 ;
Mesh2:long_name = "Topology data of Mesh2" ;
Mesh2:dimensionality = 2 ;
Mesh2:locations = "face edge node" ;
Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y" ;
Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y" ;
Mesh2:edge_nodes = "Mesh2_edge_nodes" ;
Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y" ;
Mesh2:face_nodes = "Mesh2_face_nodes" ;
Mesh2:face_connectivity = "Mesh2_face_links" ;
Mesh2:parent_mesh = "CombinedMesh" ;
// Similar for Mesh3
double Mesh3_node_x(nMesh3_node) ;
Mesh3_node_x:standard_name = "projection_x_coordinate" ;
Mesh3_node_x:long_name = "netnodal x-coordinate" ;
Mesh3_node_x:units = "m" ;
double Mesh3_node_y(nMesh3_node) ;
Mesh3_node_y:standard_name = "projection_y_coordinate" ;
Mesh3_node_y:long_name = "netnodal y-coordinate" ;
Mesh3_node_y:units = "m" ;
double Mesh3_face_x(nMesh3_face) ;
Mesh3_face_x:standard_name = "projection_x_coordinate" ;
Mesh3_face_x:long_name = "Flow element circumcenter x" ;
Mesh3_face_x:units = "m" ;
Mesh3_face_x:bounds = "Mesh3_face_contour_x" ;
double Mesh3_face_y(nMesh3_face) ;
Mesh3_face_y:standard_name = "projection_y_coordinate" ;
Mesh3_face_y:long_name = "Flow element circumcenter y" ;
Mesh3_face_y:units = "m" ;
Mesh3_face_y:bounds = "Mesh3_face_contour_y" ;
double Mesh3_face_contour_x(nMesh3_face, nMaxMesh3_contour_pts) ;
Mesh3_face_contour_x:standard_name = "projection_x_coordinate" ;
Mesh3_face_contour_x:long_name = "List of x-points that form outline of flow volume" ;
Mesh3_face_contour_x:units = "m" ;
double Mesh3_face_contour_y(nMesh3_face, nMaxMesh3_contour_pts) ;
Mesh3_face_contour_y:standard_name = "projection_y_coordinate" ;
Mesh3_face_contour_y:units = "m" ;
Mesh3_face_contour_y:long_name = "List of y-points that form outline of flow volume" ;
double Mesh3_edge_x(nMesh3_edge) ;
Mesh3_edge_x:standard_name = "projection_x_coordinate" ;
Mesh3_edge_x:long_name = "Center coordinate of edges (velocity point)." ;
Mesh3_edge_x:units = "m" ;
double Mesh3_edge_y(nMesh3_edge) ;
Mesh3_edge_y:standard_name = "projection_y_coordinate" ;
Mesh3_edge_y:long_name = "Center coordinate of edges (velocity point)." ;
Mesh3_edge_y:units = "m" ;
integer Mesh3_edge_nodes(nMesh3_edge, Two) ;
Mesh3_edge_nodes:long_name = "link between two nodes" ;
integer Mesh3_face_nodes(nMesh3_face, nMaxMesh3_face_nodes) ;
Mesh3_face_nodes:long_name = "Mapping from faces to nodes." ;
integer Mesh3_face_links(nMesh3_face_links, Two) ;
FlowLink:long_name = "link/interface between two flow elements (faces)" ;
double Mesh3_layers(Mesh3_layers) ;
Mesh3_layers:standard_name = "ocean_sigma_coordinate" ;
Mesh3_layers:long_name = "sigma at layer midpoints" ;
Mesh3_layers:positive = "up" ;
Mesh3_layers:formula_terms = "sigma: Mesh3_layers eta: Mesh3_zwl depth: Mesh3_depth" ;
double Mesh3_interfaces(Mesh3_interfaces) ;
Mesh3_interfaces:standard_name = "ocean_sigma_coordinate" ;
Mesh3_interfaces:long_name = "sigma at layer interfaces" ;
Mesh3_interfaces:positive = "up" ;
Mesh3_interfaces:formula_terms = "sigma: Mesh3_interfaces eta: Mesh3_zwl depth: Mesh3_depth" ;
integer Mesh3 ;
Mesh3:long_name = "Topology data of Mesh3" ;
Mesh3:dimensionality = 2 ;
Mesh3:locations = "face edge node" ;
Mesh3:node_coordinates = "Mesh3_node_x Mesh3_node_y" ;
Mesh3:edge_coordinates = "Mesh3_edge_x Mesh3_edge_y" ;
Mesh3:edge_nodes = "Mesh3_edge_nodes" ;
Mesh3:face_coordinates = "Mesh3_face_x Mesh3_face_y" ;
Mesh3:face_nodes = "Mesh3_face_nodes" ;
Mesh3:face_connectivity = "Mesh3_face_links" ;
Mesh3:parent_mesh = "CombinedMesh" ;
integer CombiMesh_edge_mesh(nCombiMesh_contacts, Two) ;
CombiMesh_edge_mesh:long_name = "Mesh number of contact" ;
CombiMesh_edge_mesh:valid_range = 0, 2;
CombiMesh_edge_mesh:valid_values = 0, 1, 2;
CombiMesh_edge_mesh:flag_meanings = "Mesh1 Mesh2 Mesh3" ;
integer CombiMesh_edge(nCombiMesh_contacts, Two) ;
CombiMesh_edge:long_name = "Edge number of contact" ;
integer CombinedMesh(nCombinedMesh_contacts, Four) ;
CombinedMesh:long_name = "Topology data of CombinedMesh" ;
CombinedMesh:sub_meshes = "Mesh1 Mesh2 Mesh3" ;
CombinedMesh:contact = "CombiMesh_edge_mesh CombiMesh_edge" ;
double time(time) ;
time:standard_name = "time" ;
time:units = "seconds since 1992-08-31 00:00:00" ;
// 1D mesh nodes may be merged with 2D mesh faces. Or 2D mesh faces may be masked and omitted in
// solution output. As a result, allow for a map between flow node numbers and basic mesh entities/numbers).
//
// Relation between basic mesh (nodes/edges/faces) and computational mesh (corners/interfaces/cells)
// (For cell center data, nMesh1_cell <= nMesh1_node, nMesh2_cell <= nMesh2_face)
// (In case of identity maps, leave out the location_map, and specify coordinates, grid and location
// directly in attributes of solution variable.)
double Mesh1_cell_x(nMesh1_cell) ;
Mesh1_cell_x:standard_name = "projection_x_coordinate" ;
Mesh1_cell_x:long_name = "flow cell circumcenter x-coordinate" ;
Mesh1_cell_x:units = "m" ;
double Mesh1_cell_y(nMesh1_cell) ;
Mesh1_cell_y:standard_name = "projection_y_coordinate" ;
Mesh1_cell_y:long_name = "flow cell circumcenter y-coordinate" ;
Mesh1_cell_y:units = "m" ;
double Mesh1_flownode(nMesh1_cell) ;
Mesh1_cell_node:long_name = "map from flowcell to 1D mesh node" ;
Mesh1_cell_node:grid = "Mesh1" ;
Mesh1_cell_node:location = "node" ; // location of flow cell on topological mesh entity.
double Mesh1_flowlink(nMesh1_interface) ;
Mesh1_cell_node:long_name = "map from flowlink to 1D mesh edge" ;
Mesh1_cell_node:grid = "Mesh1" ;
Mesh1_cell_node:location = "edge" ; // location of flow link on topological mesh entity.
double Mesh1_zwl(time, nMesh1_cell) ;
Mesh1_zwl:standard_name = "sea_surface_height_above_geoid" ;
Mesh1_zwl:units = "m" ;
Mesh1_zwl:location_map = "Mesh1_flownode" ;
Mesh1_zwl:coordinates = "Mesh1_cell_x Mesh1_cell_y" ;
double Mesh1_u(time, nMesh1_interface) ;
Mesh1_zwl:standard_name = "sea_water_speed" ;
Mesh1_u:long_name = "Velocity (along the edge)" ;
Mesh1_u:units = "m s-1" ;
Mesh1_u:location_map = "Mesh1_flowlink" ;
Mesh1_u:coordinates = "Mesh1_interface_x Mesh1_interface_y" ;
double Mesh2_depth(nMesh2_node) ;
Mesh2_depth:standard_name = "sea_floor_depth_below_geoid" ;
Mesh2_depth:units = "m" ;
Mesh2_depth:positive = "down" ;
Mesh2_depth:grid = "Mesh2"
Mesh2_depth:location = "node" ;
Mesh2_depth:coordinates = "Mesh2_node_x Mesh2_node_y" ;
double Mesh2_zwl(time, nMesh2_face) ;
Mesh2_zwl:standard_name = "sea_surface_height_above_geoid" ;
Mesh2_zwl:units = "m" ;
Mesh2_zwl:grid = "Mesh2"
Mesh2_zwl:location = "face" ;
Mesh2_zwl:coordinates = "Mesh2_face_x Mesh2_face_y" ;
double Mesh2_ucx(time, nMesh2_face) ;
Mesh2_ucx:standard_name = "eastward_sea_water_velocity" ;
Mesh2_ucx:units = "m s-1" ;
Mesh2_ucx:grid = "Mesh2"
Mesh2_ucx:location = "face" ;
Mesh2_ucx:coordinates = "Mesh2_face_x Mesh2_face_y" ;
double Mesh2_ucy(time, nMesh2_face) ;
Mesh2_ucy:standard_name = "northward_sea_water_velocity" ;
Mesh2_ucy:units = "m s-1" ;
Mesh2_ucy:grid = "Mesh2"
Mesh2_ucy:location = "face" ;
Mesh2_ucy:coordinates = "Mesh2_face_x Mesh2_face_y" ;
double Mesh2_unorm(time, nMesh2_edge) ;
Mesh2_unorm:long_name = "Normal component of velocity at the interface" ;
Mesh2_unorm:units = "m s-1" ;
Mesh2_unorm:grid = "Mesh2"
Mesh2_unorm:location = "edge" ;
Mesh2_unorm:coordinates = "Mesh2_edge_x Mesh2_edge_y" ;
todo: meaning?
integer Mesh2_edgetype(nMesh2_edge) ;
Mesh2_edgetype:long_name = "Type of edge" ;
Mesh2_edgetype:valid_range = 0, 2 ;
Mesh2_edgetype:valid_values = 0, 1, 2 ;
Mesh2_edgetype:flag_meanings = "closed_edge open_internal_edge open_boundary_edge" ;
Mesh2_edgetype:grid = "Mesh2"
Mesh2_edgetype:location = "edge" ;
Mesh2_edgetype:coordinates = "Mesh2_edge_x Mesh2_edge_y" ;
double Mesh3_depth(nMesh3_node) ;
Mesh3_depth:standard_name = "sea_floor_depth_below_geoid" ;
Mesh3_depth:units = "m" ;
Mesh3_depth:positive = "down" ;
Mesh3_depth:grid = "Mesh3"
Mesh3_depth:location = "node" ;
Mesh3_depth:coordinates = "Mesh3_node_x Mesh3_node_y" ;
double Mesh3_zwl(time, nMesh3_face) ;
Mesh3_zwl:standard_name = "sea_surface_height_above_geoid" ;
Mesh3_zwl:units = "m" ;
Mesh3_zwl:grid = "Mesh3"
Mesh3_zwl:location = "face" ;
Mesh3_zwl:coordinates = "Mesh3_face_x Mesh3_face_y" ;
double Mesh3_ucx(time, nMesh3_face, nMesh3_layer) ;
Mesh3_ucx:standard_name = "eastward_sea_water_velocity" ;
Mesh3_ucx:units = "m s-1" ;
Mesh3_ucx:grid = "Mesh3"
Mesh3_ucx:location = "face" ;
Mesh3_ucx:coordinates = "Mesh3_face_x Mesh3_face_y Mesh3_layers" ;
double Mesh3_ucy(time, nMesh3_face, nMesh3_layer) ;
Mesh3_ucy:standard_name = "northward_sea_water_velocity" ;
Mesh3_ucy:units = "m s-1" ;
Mesh3_ucy:grid = "Mesh3"
Mesh3_ucy:location = "face" ;
Mesh3_ucy:coordinates = "Mesh3_face_x Mesh3_face_y Mesh3_layers" ;
double Mesh3_unorm(time, nMesh3_edge, nMesh3_layer) ;
Mesh3_unorm:long_name = "Normal component of velocity at the interface" ;
Mesh3_unorm:units = "m s-1" ;
Mesh3_unorm:grid = "Mesh3"
Mesh3_unorm:location = "edge" ;
Mesh3_unorm:coordinates = "Mesh3_edge_x Mesh3_edge_y Mesh3_layers" ;
TODO: meaning
integer Mesh3_edgetype(nMesh3_edge) ;
Mesh3_edgetype:long_name = "Type of edge" ;
Mesh3_edgetype:valid_range = 0, 2 ;
Mesh3_edgetype:valid_values = 0, 1, 2 ;
Mesh3_edgetype:flag_meanings = "closed_edge open_internal_edge open_boundary_edge" ;
Mesh3_edgetype:grid = "Mesh3"
Mesh3_edgetype:location = "edge" ;
Mesh3_edgetype:coordinates = "Mesh3_edge_x Mesh3_edge_y" ;
// global attributes:
:institution = "Deltares" ;
:references = "http://www.deltares.nl" ;
:source = "UNSTRUC" ;
:history = "Created on 2010-04-12, Bert Jagers\n",
"2010-06-01, distinguish basic mesh/net and flow mesh, include mapping between the two, Arthur van Dam" ;
:Conventions = "CF-1.4:Deltares-0.1" ;
|
|