Actions

NetCDF aggregation for unstructured grids: Difference between revisions

From BAWiki

imported>Lang Guenther
imported>Lang Guenther
Line 312: Line 312:
Comment:
Comment:
# Node numbers (of the aggregational grid) for all edges (of the aggregational grid).
# Node numbers (of the aggregational grid) for all edges (of the aggregational grid).
#     First an second node represent start and end point of an edge.
# First and second node represent start and end point of an edge.


====Exchange-edge connectivity====
====Exchange-edge connectivity====

Revision as of 13:10, 18 April 2016


Introduction

A grid consisting of arbitray faces (polygons, triangles and quadrilaterals) is described. In addition an aggregated grid is available. Typical components of an aggregated grid are:

  • Control volume: several connected faces (polygons) mold a control volume.
  • Exchange: area between two adjacent control volumes or at open boundaries (contact with the environment). Exchanges are buildt out of several edges of the computational grid, which are not necessarily all connected. Several edges (with more than two nodes) can form an exchange.

All deviations from UGRID Conventions are subsequently displayed in darkorange color.

The description of an aggregated grid shows many similarities with NetCDF unstructured grid with subgrid.

Program NCAGGREGATE can be used to aggregate data defined on a computational grid.

Computational grid

The description is almost fully identical with NetCDF unstructured grid for an unstructured grid without subgrid. Only those variables are subsequently presented which deviate to some extent from their known definition.

Aggregational grid

All variables required for the aggregational grid are subsequently listed.

Combined mesh (Parent Mesh)

Computational mesh and aggregational mesh are combined to form the parent mesh. In this context additional contact variables are required. They describe the relationship or ccnnectivity between the two grids. This concept (parent mesh, contact variables) is esentially based on ideas worked out by Bert Jagers (Deltares) (see Deltares Conventions).

File Contents

Dimensions

Computational grid

  1. nMesh2_node : number of nodes
  2. nMesh2_edge : number of edges
  3. nMesh2_face : number of faces (polygons)
  4. nMaxMesh2_face_nodes : maximum number of nodes/edges in a face (polygon)

Aggregational grid

  1. nCVMesh2_node : number of nodes for the aggregational grid
  2. nCVMesh2_edge : number of edges for the aggregational grid
  3. nCVMesh2_face : number of faces (control volumes) for the aggregational grid
  4. nCVMaxMesh2_face_nodes : maximum number of nodes (or egdes) for a single face (control volume)
  5. nCVMesh2_exch : number of exchanges
  6. nCVMaxMesh2_face_exchs : maximum number of exchanges for a single face (control volume)
  7. nCVMaxMesh2_exch_edges : maximum number of exchanges for a single edge (exchange)

Constants

  1. two : constant ( = 2 ).

Local coordinates

The definition for the local coordinates of the computational grid is identical to the description given for an unstructured computational grid without subgrid details. See NetCDF unstructured grid "local coordinates".

Local coordinates of the aggregational grid

Nodes

double CVMesh2_node_x(nCVMesh2_node) ;

CVMesh2_node_x:long_name = "x-coordinate of 2D aggregational grid nodes" ;
CVMesh2_node_x:units = "m" ;
CVMesh2_node_x:name_id = 1650 ;
CVMesh2_node_x:standard_name = "projection_x_coordinate" ;

double CVMesh2_node_y(nCVMesh2_node) ;

CVMesh2_node_y:long_name = "y-coordinate of 2D aggregational grid nodes" ;
CVMesh2_node_y:units = "m" ;
CVMesh2_node_y:name_id = 1651 ;
CVMesh2_node_y:standard_name = "projection_y_coordinate" ;

Comment:

  1. "name_id" corresponds to the so-called PHYDEF-Code of variables which is used internally at BAW.

Edges

double CVMesh2_edge_x(nCVMesh2_edge) ;

CVMesh2_edge_x:long_name = "x-coordinate of 2D aggregational grid edges" ;
CVMesh2_edge_x:units = "m" ;
CVMesh2_edge_x:name_id = 1650 ;
CVMesh2_edge_x:bounds = "CVMesh2_edge_x_bnd" ;
CVMesh2_edge_x:standard_name = "projection_x_coordinate" ;

double CVMesh2_edge_y(nCVMesh2_edge) ;

CVMesh2_edge_y:long_name = "y-coordinate of 2D aggregational grid edges" ;
CVMesh2_edge_y:units = "m" ;
CVMesh2_edge_y:name_id = 1651 ;
CVMesh2_edge_y:bounds = "CVMesh2_edge_y_bnd" ;
CVMesh2_edge_y:standard_name = "projection_y_coordinate" ;

Comment:

  1. "name_id" corresponds to the so-called PHYDEF-Code of variables which is used internally at BAW.

Faces (control volumes)

double CVMesh2_face_x(nCVMesh2_face) ;

CVMesh2_face_x:long_name = "x-coordinate of 2D aggregational grid faces (control volumes)" ;
CVMesh2_face_x:units = "m" ;
CVMesh2_face_x:name_id = 1650 ;
CVMesh2_face_x:bounds = "CVMesh2_face_x_bnd" ;
CVMesh2_face_x:standard_name = "projection_x_coordinate" ;

double CVMesh2_face_y(nCVMesh2_face) ;

CVMesh2_face_y:long_name = "y-coordinate of 2D aggregational grid faces (control volumes)" ;
CVMesh2_face_y:units = "m" ;
CVMesh2_face_y:name_id = 1651 ;
CVMesh2_face_y:bounds = "CVMesh2_face_y_bnd" ;
CVMesh2_face_y:standard_name = "projection_y_coordinate" ;

Comment:

  1. "name_id" corresponds to the so-called PHYDEF-Code of variables which is used internally at BAW.
  2. This coordinate defines an arbitrary point within each control volume.

Exchanges

double CVMesh2_exch_x(nCVMesh2_exch) ;

CVMesh2_exch_x:long_name = "x-coordinate of 2D aggregational grid exchanges" ;
CVMesh2_exch_x:units = "m" ;
CVMesh2_exch_x:name_id = 1650 ;
CVMesh2_exch_x:standard_name = "projection_x_coordinate" ;

double CVMesh2_exch_y(nCVMesh2_exch) ;

CVMesh2_exch_y:long_name = "y-coordinate of 2D aggregational grid exchanges" ;
CVMesh2_exch_y:units = "m" ;
CVMesh2_exch_y:name_id = 1651 ;
CVMesh2_exch_y:standard_name = "projection_y_coordinate" ;

Comment:

  1. "name_id" corresponds to the so-called PHYDEF-Code of variables which is used internally at BAW.
  2. This coordinate defines an arbitray point along each exchange. E. g. the center of an edge belonging to the exchange.

Bounds for edges

double CVMesh2_edge_x_bnd(nCVMesh2_edge, two) ; \\ no metadata required

double CVMesh2_edge_y_bnd(nCVMesh2_edge, two) ; \\ no metadata required

Bounds for faces (control volume)

double CVMesh2_face_x_bnd(nCVMesh2_face, nCVMaxMesh2_face_nodes) ; \\ _FillValue required, not all nCVMaxMesh2_face_nodes must be present in one face (control volume)

CVMesh2_face_x_bnd:_FillValue = 1.e+31 ;

double CVMesh2_face_y_bnd(nCVMesh2_face, nCVMaxMesh2_face_nodes) ; \\ _FillValue required, not all nCVMaxMesh2_face_nodes must be present in one face (control volume)

CVMesh2_face_y_bnd:_FillValue = 1.e+31 ;

Comment:

  1. Coordinates of faces (control volumes) must be prescribed in counter-clockwise orientation..
  2. Invalid coordinates are allowed to be present in the last position(s) in case there are less than nCVMaxMesh2_face_nodes nodes in a face (control volume).

Geographic coordinates

The definition for the geographic coordinates of the computational grid is identical to the description given for an unstructured computational grid without subgrid details. See NetCDF unstructured grid "geographic coordinates".

Geographic coordinates of the aggregational grid

Nodes

double CVMesh2_node_lon(nCVMesh2_node) ;

CVMesh2_node_lon:long_name = "longitude of 2D aggregational grid nodes" ;
CVMesh2_node_lon:units = "degrees_E" ;
CVMesh2_node_lon:name_id = 1653 ;
CVMesh2_node_lon:standard_name = "longitude" ;

double CVMesh2_node_lat(nCVMesh2_node) ;

CVMesh2_node_lat:long_name = "lotitude of 2D aggregational grid nodes" ;
CVMesh2_node_lat:units = "degrees_N" ;
CVMesh2_node_lat:name_id = 1652 ;
CVMesh2_node_lat:standard_name = "latitude" ;

Comment:

  1. "name_id" corresponds to the so-called PHYDEF-Code of variables which is used internally at BAW.

Edges

double CVMesh2_edge_lon(nCVMesh2_edge) ;

CVMesh2_edge_lon:long_name = "longitude of 2D aggregational grid edges" ;
CVMesh2_edge_lon:units = "degrees_E" ;
CVMesh2_edge_lon:name_id = 1653 ;
CVMesh2_edge_lon:bounds = "CVMesh2_edge_lon_bnd" ;
CVMesh2_edge_lon:standard_name = "longitude" ;

double CVMesh2_edge_lat(nCVMesh2_edge) ;

CVMesh2_edge_lat:long_name = "latitude of 2D aggregational grid edges" ;
CVMesh2_edge_lat:units = "degrees_N" ;
CVMesh2_edge_lat:name_id = 1652 ;
CVMesh2_edge_lat:bounds = "CVMesh2_edge_lat_bnd" ;
CVMesh2_edge_lat:standard_name = "latitude" ;

Comment:

  1. "name_id" corresponds to the so-called PHYDEF-Code of variables which is used internally at BAW.

Faces (control volumes)

double CVMesh2_face_lon(nCVMesh2_face) ;

CVMesh2_face_lon:long_name = "longitude of 2D aggregational grid faces" ;
CVMesh2_face_lon:units = "degrees_E" ;
CVMesh2_face_lon:name_id = 1653 ;
CVMesh2_face_lon:bounds = "CVMesh2_face_lon_bnd" ;
CVMesh2_face_lon:standard_name = "longitude" ;

double CVMesh2_face_lat(nCVMesh2_face) ;

CVMesh2_face_lat:long_name = "latitude of 2D aggregational grid faces" ;
CVMesh2_face_lat:units = "degrees_N" ;
CVMesh2_face_lat:name_id = 1652 ;
CVMesh2_face_lat:bounds = "CVMesh2_face_lat_bnd" ;
CVMesh2_face_lat:standard_name = "latitude" ;

Comment:

  1. "name_id" corresponds to the so-called PHYDEF-Code of variables which is used internally at BAW.
  2. This coordinate defines an arbitrary point within each control volume.

Exchanges

double CVMesh2_exch_lon(nCVMesh2_exch) ;

CVMesh2_exch_lon:long_name = "longitude of 2D aggregational grid exchanges" ;
CVMesh2_exch_lon:units = "degrees_E" ;
CVMesh2_exch_lon:name_id = 1653 ;
CVMesh2_exch_lon:standard_name = "longitude" ;

double CVMesh2_exch_lat(nCVMesh2_exch) ;

CVMesh2_exch_lat:long_name = "latitude of 2D aggregational grid exchanges" ;
CVMesh2_exch_lat:units = "degrees_N" ;
CVMesh2_exch_lat:name_id = 1652 ;
CVMesh2_exch_lat:standard_name = "latitude" ;

Comment:

  1. "name_id" corresponds to the so-called PHYDEF-Code of variables which is used internally at BAW.
  2. This coordinate defines an arbitray point along each exchange. E. g. the center of an edge belonging to the exchange.

Bounds for edges

double CVMesh2_edge_lon_bnd(nCVMesh2_edge, two) ; \\ no metadata required

double CVMesh2_edge_lat_bnd(nCVMesh2_edge, two) ; \\ no metadata required

Bounds for faces (control volumes)

double CVMesh2_face_lon_bnd(nCVMesh2_face, nCVMaxMesh2_face_nodes) ; \\ _FillValue required, not all nCVMaxMesh2_face_nodes must be present in one face (control volume)

CVMesh2_face_lon_bnd:_FillValue = 1.e+31 ;

double CVMesh2_face_lat_bnd(nCVMesh2_face, nCVMaxMesh2_face_nodes) ; \\ _FillValue required, not all nCVMaxMesh2_face_nodes must be present in one face (control volume)

CVMesh2_face_lat_bnd:_FillValue = 1.e+31 ;

Comment:

  1. Coordinates of faces (control volumes) must be prescribed in counter-clockwise orientation.
  2. Invalid coordinates are allowed to be present in the last position(s) in case there are less than nCVMaxMesh2_face_nodes nodes in a face (control volume).

Connectivities

Computational grid

Connectivity tables for the computational grid are identical to those used for an unstructured grid without subgrid. See NetCDF unstructured grid "Connectivities".

Aggregational grid

Control-volume-node connectivity

int CVMesh2_face_nodes(nCVMesh2_face, nCVMaxMesh2_face_nodes) ;

CVMesh2_face_nodes:long_name = "list of nodes for all control volumes" ;
CVMesh2_face_nodes:cf_role = "face_node_connectivity" ;
CVMesh2_face_nodes:_FillValue = -999 ;
CVMesh2_face_nodes:start_index = 0 ;

Comment:

  1. Node numbers (of the aggregational grid) for each control volume.
  2. Nodes must be prescribed in counter-clockwise orientation.
  3. Missing nodes should be indicated using _FillValue.
  4. Missing nodes must be the last entries for each control volume.

Control-volume-edge connectivity

int CVMesh2_face_edges(nCVMesh2_face, nCVMaxMesh2_face_nodes) ;

CVMesh2_face_edges:long_name = "list of edges for all control volumes" ;
CVMesh2_face_edges:cf_role = "face_edge_connectivity" ;
CVMesh2_face_edges:_FillValue = -999 ;
CVMesh2_face_edges:start_index = 0 ;

Comment:

  1. Edge numbers (of the aggregational grid) for each control volume.
  2. Edges must be prescribed in counter-clockwise orientation.
  3. Missing edges should be indicated using _FillValue.
  4. Missing edges must be the last entries for each control volume.

Control-volume-exchange connectivity

int CVMesh2_face_exchs(nCVMesh2_face, nCVMaxMesh2_face_exchs) ;

CVMesh2_face_exchs:long_name = "list of exchanges for all control volumes" ;
CVMesh2_face_exchs:cf_role = "face_exch_connectivity" ;
CVMesh2_face_exchs:_FillValue = -999 ;
CVMesh2_face_exchs:start_index = 0 ;

Comment:

  1. Exchange numbers for each control volume.
  2. Exchanges must be prescribed in counter-clockwise orientation.
  3. Missing exchanges should be indicated using _FillValue.
  4. Missing exchanges must be the last entries for each control volume.

Edge-node connectivity

int CVMesh2_edge_nodes(nCVMesh2_edge, two) ;

CVMesh2_edge_nodes:long_name = "list of nodes for each edge" ;
CVMesh2_edge_nodes:cf_role = "edge_node_connectivity" ;
CVMesh2_edge_nodes:start_index = 0 ;

Comment:

  1. Node numbers (of the aggregational grid) for all edges (of the aggregational grid).
  2. First and second node represent start and end point of an edge.

Exchange-edge connectivity

int CVMesh2_exch_edges(nCVMesh2_exch, nCVMaxMesh2_exch_edges) ;

CVMesh2_exch_edges:long_name = "list of edges (unsorted) for all exchanges" ;
CVMesh2_exch_edges:cf_role = "exch_edge_connectivity" ;
CVMesh2_exch_edges:_FillValue = -999 ;
CVMesh2_exch_edges:start_index = 0 ;

Comment:

  1. Edge numbers (of the aggregational grid)) for all exchanges.
  2. Edges are unsorted for each exchange.
  3. Missing edges should be indicated using _FillValue.
  4. Missing edges must be the last entries for each exchange.

Edge-control-volume connectivity

int CVMesh2_edge_faces(nCVMesh2_edge, two) ;

CVMesh2_edge_faces:long_name = "list of (neighbor) control volumes for each edge" ;
CVMesh2_edge_faces:cf_role = "edge_face_connectivity" ;
CVMesh2_edge_faces:_FillValue = -999 ;
CVMesh2_edge_faces:start_index = 0 ;

Comment:

  1. Control volume numbers for all edges (of the aggregational grid).
  2. Along edges (of the aggregational grid) missing neigbor control volumes are allowed; _FillValue is used to indicate missing neighbor.

Exchange-control-volume connectivity

int CVMesh2_exch_faces(nCVMesh2_exch, two) ;

CVMesh2_exch_faces:long_name = "list of (neighbor) control volumes for each exchange" ;
CVMesh2_exch_faces:cf_role = "exch_face_connectivity" ;
CVMesh2_exch_faces:_FillValue = -999 ;
CVMesh2_exch_faces:start_index = 0 ;

Comment:

  1. Control volume numbers for all exchanges (of the aggregational grid).
  2. For exchanges missing neigbor control volumes are allowed; _FillValue is used to indicate missing neighbor.

Topology

Computational grid

int Mesh2 ;

Mesh2:long_name = "computational grid" ;
Mesh2:cf_role = "mesh_topology" ; \\ UGRID required
Mesh2:topology_dimension = 2 ; \\ UGRID required
Mesh2:node_coordinates = "Mesh2_node_x Mesh2_node_y Mesh2_node_lon Mesh2_node_lat" ; \\ UGRID required
Mesh2:edge_coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ; \\ UGRID optionally required for data at edges
Mesh2:face_coordinates = "Mesh2_face_x Mesh2_face_y Mesh2_face_lon Mesh2_face_lat" ; \\ UGRID optionally required for data at faces
Mesh2:face_node_connectivity = "Mesh2_face_nodes" ; \\ UGRID required
Mesh2:face_edge_connectivity = "Mesh2_face_edges" ; \\ UGRID optional
Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ; \\ UGRID optional
Mesh2:edge_face_connectivity = "Mesh2_edge_faces" ;
Mesh2:parent_mesh = "Combined_Mesh2_and_CVMesh" ;

Comment:

  1. Not all connectivities must be available because some of them contain redundant information. But be friendly to the end-user and provide as much information as possible.
  2. Attributes face_dimension and edge_dimension from 2D flexible mesh (mixed triangles, quadrilaterals, etc.) topology are not supported by BAW. These are required only in case the dimension ordering is nonstandard in any of the connectivity variables for faces and edges, respectively.
  3. Attribute "parent_mesh" refers to the combined mesh (parent mesh). The computational grid is the first component of the combined grid.

Aggregational grid

int CVMesh2 ;

CVMesh2:long_name = "aggregational grid" ;
CVMesh2:cf_role = "mesh_topology" ;
CVMesh2:topology_dimension = 2 ;
CVMesh2:node_coordinates = "CVMesh2_node_x CVMesh2_node_y CVMesh2_node_lon CVMesh2_node_lat" ;
CVMesh2:edge_coordinates = "CVMesh2_edge_x CVMesh2_edge_y CVMesh2_edge_lon CVMesh2_edge_lat" ;
CVMesh2:face_coordinates = "CVMesh2_face_x CVMesh2_face_y CVMesh2_face_lon CVMesh2_face_lat" ;
CVMesh2:exch_coordinates = "CVMesh2_exch_x CVMesh2_exch_y CVMesh2_exch_lon CVMesh2_exch_lat" ;
CVMesh2:face_node_connectivity = "CVMesh2_face_nodes" ;
CVMesh2:face_edge_connectivity = "CVMesh2_face_edges" ;
CVMesh2:edge_node_connectivity = "CVMesh2_edge_nodes" ;
CVMesh2:edge_face_connectivity = "CVMesh2_edge_faces" ;
CVMesh2:face_exch_connectivity = "CVMesh2_face_exchs" ;
CVMesh2:exch_edge_connectivity = "CVMesh2_exch_edges" ;
CVMesh2:exch_face_connectivity = "CVMesh2_exch_faces" ;
CVMesh2:parent_mesh = "Combined_Mesh_and_CVMesh" ;

Comment:

  1. Attribute "parent_mesh" refers to the combined mesh (parent mesh). The aggregational grid is the second component of the combined grid.

Combined grid

int Combined_Mesh_and_CVMesh ;

Combined_Mesh_and_CVMesh:long_name = "Berechnungs- und Aggregations-Gitter" ;
Combined_Mesh_and_CVMesh:cf_role = "mesh_topology" ;
Combined_Mesh_and_CVMesh:sub_meshes = "Mesh2 CVMesh2" ;
Combined_Mesh_and_CVMesh:mesh_contacts = "CVMesh2_node_contact CVMesh2_edge_contact CVMesh2_face_contact CVMesh2_edge_exch_contact" ;

Comment:

  1. The Parent Mesh concept is so far not supported by the UGRID Conventions.
  2. Attribute "sub_meshes" refers to the two meshes (computational grid, aggregational grid) which constitute the Parent Mesh.
  3. Attribute "mesh_contacts" refers to variables (contact lists) which describe the inter-relation between the child meshes..

Contact lists

Contact list nodes <-> aggregational-grid-nodes

int CVMesh2_node_contact(nMesh2_node, two) ;

CVMesh2_node_contact:long_name = "contact list between computational grid nodes and aggregational grid nodes" ;
CVMesh2_node_contact:cf_role = "mesh_topology_contact" ;
CVMesh2_node_contact:_FillValue = -999 ;
CVMesh2_node_contact:coordinates = "Mesh2_node_x Mesh2_node_y Mesh2_node_lon Mesh2_node_lat" ;
CVMesh2_node_contact:grid_mapping = "Mesh2_crs" ;
CVMesh2_node_contact:contact_meshes = "Mesh2 CVMesh2" ;
CVMesh2_node_contact:contact_type = "node node" ;
CVMesh2_node_contact:start_index = 0 ;

Comment:

  1. The mesh topology contact concept is so far not supported by the UGRID Conventions.
  2. Indices start with zero..
  3. Each node of the computational grid refers to a node of the aggregational grid.
  4. Nodes of the computational grid with missing partner in the aggregational grid use _FillValue.

Contact list edges <-> aggregational-grid-edges

int CVMesh2_edge_contact(nMesh2_edge, two) ;

CVMesh2_edge_contact:long_name = "contact list between computational grid edges and aggregational grid edges" ;
CVMesh2_edge_contact:cf_role = "mesh_topology_contact" ;
CVMesh2_edge_contact:_FillValue = -999 ;
CVMesh2_edge_contact:coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ;
CVMesh2_edge_contact:grid_mapping = "Mesh2_crs" ;
CVMesh2_edge_contact:contact_meshes = "Mesh2 CVMesh2" ;
CVMesh2_edge_contact:contact_type = "edge edge" ;
CVMesh2_edge_contact:start_index = 0 ;

Comment:

  1. The mesh topology contact concept is so far not supported by the UGRID Conventions.
  2. Indices start with zero..
  3. Each edge of the computational grid refers to an edge of the aggregational grid.
  4. Edges of the computational grid with missing partner in the aggregational grid use _FillValue.

Contact list face <--> control volume

int CVMesh2_face_contact(nMesh2_face, two) ;

CVMesh2_face_contact:long_name = "contact list between computational grid faces and aggregational control volumes" ;
CVMesh2_face_contact:cf_role = "mesh_topology_contact" ;
CVMesh2_face_contact:_FillValue = -999 ;
CVMesh2_face_contact:coordinates = "Mesh2_face_x Mesh2_face_y Mesh2_face_lon Mesh2_face_lat" ;
CVMesh2_face_contact:grid_mapping = "Mesh2_crs" ;
CVMesh2_face_contact:contact_meshes = "Mesh2 CVMesh2" ;
CVMesh2_face_contact:contact_type = "face face" ;
CVMesh2_face_contact:start_index = 0 ;

Comment:

  1. The mesh topology contact concept is so far not supported by the UGRID Conventions.
  2. Indices start with zero..
  3. Each face of the computational grid refers to a face (control volume) of the aggregational grid.
  4. Faces of the computational grid with missing partner in the aggregational grid use _FillValue.
  5. In the opposite direction each control volume may reference several computational faces.

Contact list Edge <--> Exchange

int CVMesh2_edge_exch_contact(nMesh2_edge, two) ;

CVMesh2_edge_exch_contact:long_name = "contact list between computational grid edges and aggregational exchanges" ;
CVMesh2_edge_exch_contact:cf_role = "mesh_topology_contact" ;
CVMesh2_edge_exch_contact:_FillValue = -999 ;
CVMesh2_edge_exch_contact:coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ;
CVMesh2_edge_exch_contact:grid_mapping = "Mesh2_crs" ;
CVMesh2_edge_exch_contact:contact_meshes = "Mesh2 CVMesh2" ;
CVMesh2_edge_exch_contact:contact_type = "edge exch" ;
CVMesh2_edge_exch_contact:start_index = 0 ;

Comment:

  1. The mesh topology contact concept is so far not supported by the UGRID Conventions.
  2. Indices start with zero..
  3. Each edge of the computational grid refers to an exchange of the aggregational grid.
  4. Edges of the computational grid with missing partner in the aggregational grid use _FillValue.
  5. In the opposite direction each exchange may reference several computational edges.

back to NetCDF


Overview