Aktionen

NetCDF Aggregation für unstrukturierte Gitter

Aus BAWiki


Kurze Beschreibung

Ein aus beliebigen Faces (Polygonen, Dreiecke und Vierecke) aufgebautes Berechnungsgitter wird beschrieben. Zusätzlich ist ein Aggregations-Gitter vorhanden. Typische Komponenten eines Aggregations-Gitters sind:

  • Kontrollvolumen: mehrere zusammenhängende Faces (Polygone) bilden ein Kontrollvolumen.
  • Austauschfläche: eine Austauschfläche (Exchange) entsteht zum einen dort, wo sich verschiedene Kontrollvolumina berühren. Und zum anderen an allen (offenen, durchströmten) Rändern eines Kontrollvolumens zur Umgebung. Austauschflächen setzen sich aus einer oder mehreren Kanten des Berechnungsgitters zusammen, die nicht notwendiger Weise alle zusammenhängen müssen.

Alle Abweichungen/Erweiterungen von den UGRID Conventions sind nachfolgend in der Farbe darkorange farblich hervorgehoben.

Die Beschreibung eines Aggregations-Gitters weist große Ähnlichkeiten mit NetCDF Unstrukturiertes Gitter mit SubGrid auf.

Berechnungsgitter

Die Beschreibung des Berechnungsgitters ist fast vollständig identisch mit der Beschreibung NetCDF Unstrukturiertes Gitter für ein unstrukturiertes Gitter ohne SubGrid. Nachfolgend werden nur diejenigen Variablen wiederholt, deren Definition sich (in Teilen) von derjenigen eines unstrukturierten Gitters ohne SubGrid unterscheidet.

Aggregations-Gitter

Zusätzlich zu dem Berechnungsgitter werden nachfolgend alle zur Beschreibung des Aggregations-Gitters benötigten Variablen aufgeführt.

Kombiniertes Gitter (Parent Mesh)

Die beiden vorgenannten Gitter - Berechnungsgitter und Aggregations-Gitter - werden in einem kombinierten Gitter (Parent Mesh) zusammengefasst. Hierzu gehören auch die verschiedenen Kontaktlisten, die den Zusammenhang ziwschen den beiden Teilnetzen beschreiben. Diese Art der Beschreibung basiert im Wesentlichen auf Ideen, die von Bert Jagers (Deltares) erdacht wurden (siehe Deltares Conventions).

Inhalt der Datei

Dimensionen

Berechnungsgitter

  1. nMesh2_node : Anzahl der Nodes
  2. nMesh2_edge : Anzahl der Edges
  3. nMesh2_face : Anzahl der Faces (Polygone)
  4. nMaxMesh2_face_nodes : maximale Anzahl der Nodes/Edges in einem Face (Polygon)

Aggregations-Gitter

  1. nCVMesh2_node : Anzahl der Nodes des Aggregations-Gitters
  2. nCVMesh2_edge : Anzahl der Edges des Aggregations-Gitters
  3. nCVMesh2_face : Anzahl der Faces (hier Kontrollvolumina) des Aggregations-Gitters
  4. nCVMaxMesh2_face_nodes : maximale Anzahl der zu einem Face (hier Kontrollvolumen) gehörenden Nodes
  5. nCVMesh2_exch : Anzahl der Exchanges (hier Austauschflächen)
  6. nCVMaxMesh2_face_exchs : maximale Anzahl der zu einem Face (hier Kontrollvolumen) gehörenden Exchanges (hier Austauschflächen)
  7. nCVMaxMesh2_exch_edges : maximale Anzahl der zu einem Face (hier Kontrollvolumen) gehörenden Edges

Konstante

  1. two : Konstante ( = 2 ).

Lokale Koordinaten

Die Beschreibung der lokalen Koordinaten des Berechnungsgitters stimmt mit derjenigen eines unstrukturierten Gitters überein. Siehe NetCDF Unstrukturiertes Gitter unter "Lokale Koordinaten".

Lokale Koordinaten des Aggregations-Gitters

Knoten

double CVMesh2_node_x(nCVMesh2_node) ;

CVMesh2_node_x:long_name = "x-Koordinate der Kontroll-Volumen-Knoten" ;
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-Koordinate der Kontroll-Volumen-Knoten" ;
CVMesh2_node_y:units = "m" ;
CVMesh2_node_y:name_id = 1651 ;
CVMesh2_node_y:standard_name = "projection_y_coordinate" ;

Hinweise:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.

Kanten

double CVMesh2_edge_x(nCVMesh2_edge) ;

CVMesh2_edge_x:long_name = "x-Koordinate der Kontroll-Volumen-Kanten" ;
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-Koordinate der Kontroll-Volumen-Kanten" ;
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" ;

Hinweise:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.

Faces (Kontrollvolumen)

double CVMesh2_face_x(nCVMesh2_face) ;

CVMesh2_face_x:long_name = "x-Koordinate der Kontrollvolumina" ;
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-Koordinate der Kontrollvolumina" ;
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" ;

Hinweise:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
  2. Die Koordinate bezeichnet einen beliebigen, innerhalb des Kontrollvolumens liegenden Punkt.

Exchanges (Austauschfläche)

double CVMesh2_exch_x(nCVMesh2_exch) ;

CVMesh2_exch_x:long_name = "x-Koordinate der 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-Koordinate der Exchanges" ;
CVMesh2_exch_y:units = "m" ;
CVMesh2_exch_y:name_id = 1651 ;
CVMesh2_exch_y:standard_name = "projection_y_coordinate" ;

Hinweise:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
  2. Diese Koordinate bezeichnet einen beliebigen, auf der Austauschfläche liegenden Ort. Z. B. die Mitte einer Kante, welche zu dieser Austauschfläche gehört.

Begrenzung der Kanten

double CVMesh2_edge_x_bnd(nCVMesh2_edge, two) ; \\ keine Metadaten erforderlich

double CVMesh2_edge_y_bnd(nCVMesh2_edge, two) ; \\ keine Metadaten erforderlich

Begrenzung der Faces (Kontrollvolumina)

double CVMesh2_face_x_bnd(nCVMesh2_face, nCVMaxMesh2_face_nodes) ; \\ _FillValue erforderlich, da nicht immer nCVMaxMesh2_face_nodes definiert

CVMesh2_face_x_bnd:_FillValue = 1.e+31 ;

double CVMesh2_face_y_bnd(nCVMesh2_face, nCVMaxMesh2_face_nodes) ; \\ _FillValue erforderlich, da nicht immer nCVMaxMesh2_face_nodes definiert

CVMesh2_face_y_bnd:_FillValue = 1.e+31 ;

Hinweise:

  1. Koordinaten der Knoten (Kontrollvolumina) entgegen dem Uhrzeigersinn angeben.
  2. Fehlende Punkte mit ungültigen Werten werden mit _FillValue gekennzeichnet. Diese dürfen nur am Ende vorhanden sein.

Geografische Koordinaten

Die Beschreibung der geografischen Koordinaten des Berechnungsgitters stimmt mit derjenigen eines unstrukturierten Gitters überein. Siehe NetCDF Unstrukturiertes Gitter unter "Geografische Koordinaten".

Geografische Koordinaten des Aggregations-Gitters

Knoten

double CVMesh2_node_lon(nCVMesh2_node) ;

CVMesh2_node_lon:long_name = "geografische Laenge der Kontroll-Volumen-Knoten" ;
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 = "geografische Breite der Kontroll-Volumen-Knoten" ;
CVMesh2_node_lat:units = "degrees_N" ;
CVMesh2_node_lat:name_id = 1652 ;
CVMesh2_node_lat:standard_name = "latitude" ;

Hinweise:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.

Kanten

double CVMesh2_edge_lon(nCVMesh2_edge) ;

CVMesh2_edge_lon:long_name = "geografische Laenge der Kontroll-Volumen-Kanten" ;
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 = "geografische Breite der Kontroll-Volumen-Kanten" ;
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" ;

Hinweise:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.

Faces (Kontrollvolumen)

double CVMesh2_face_lon(nCVMesh2_face) ;

CVMesh2_face_lon:long_name = "geografische Laenge der Kontrollvolumina" ;
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 = "geografische Breite der Kontrollvolumina" ;
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" ;

Hinweise:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
  2. Die Koordinate bezeichnet einen beliebigen, innerhalb des Kontrollvolumens liegenden Punkt.

Exchanges (Austauschfläche)

double CVMesh2_exch_lon(nCVMesh2_exch) ;

CVMesh2_exch_lon:long_name = "geografische Laenge der 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 = "geografische Breite der Exchanges" ;
CVMesh2_exch_lat:units = "degrees_N" ;
CVMesh2_exch_lat:name_id = 1652 ;
CVMesh2_exch_lat:standard_name = "latitude" ;

Hinweise:

  1. Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
  2. Diese Koordinate bezeichnet einen beliebigen, auf der Austauschfläche liegenden Ort. Z. B. die Mitte einer Kante, welche zu dieser Austauschfläche gehört.

Begrenzung der Kanten

double CVMesh2_edge_lon_bnd(nCVMesh2_edge, two) ; \\ keine Metadaten erforderlich

double CVMesh2_edge_lat_bnd(nCVMesh2_edge, two) ; \\ keine Metadaten erforderlich

Begrenzung der Faces (Kontrollvolumina)

double CVMesh2_face_lon_bnd(nCVMesh2_face, nCVMaxMesh2_face_nodes) ; \\ _FillValue erforderlich, da nicht immer nCVMaxMesh2_face_nodes definiert

CVMesh2_face_lon_bnd:_FillValue = 1.e+31 ;

double CVMesh2_face_lat_bnd(nCVMesh2_face, nCVMaxMesh2_face_nodes) ; \\ _FillValue erforderlich, da nicht immer nCVMaxMesh2_face_nodes definiert

CVMesh2_face_lat_bnd:_FillValue = 1.e+31 ;

Hinweise:

  1. Koordinaten der Knoten (Kontrollvolumina) entgegen dem Uhrzeigersinn angeben.
  2. Fehlende Punkte mit ungültigen Werten werden mit _FillValue gekennzeichnet. Diese dürfen nur am Ende vorhanden sein.

Topologische Daten

Berechnungsgitter

Die Konnektivitäts-Listen des Berechnungsgitters stimmen mit derjenigen eines unstrukturierten Gitters ohne SubGrid überein. Siehe NetCDF Unstrukturiertes Gitter unter "Topologische Daten".

Aggregations-Gitter

Knotenverzeichnis der Kontrollvolumina

int CVMesh2_face_nodes(nCVMesh2_face, nCVMaxMesh2_face_nodes) ;

CVMesh2_face_nodes:long_name = "Knotenverzeichnis der Kontrollvolumina" ;
CVMesh2_face_nodes:cf_role = "face_node_connectivity" ;
CVMesh2_face_nodes:_FillValue = -999 ;
CVMesh2_face_nodes:start_index = 0 ;

Hinweise:

  1. Nummern der Knoten (des Aggregations-Gitters) der Kontrollvolumina.
  2. Die Knoten müssen entgegen dem Uhrzeigersinn angegeben werden.
  3. Nicht vorhandene Knoten mit dem _FillValue kennzeichnen.
  4. Nicht vorhandene Knoten müssen für jedes Kontrollvolumen die letzten Einträge sein.

Kantenverzeichnis der Kontrollvolumina

int CVMesh2_face_edges(nCVMesh2_face, nCVMaxMesh2_face_nodes) ;

CVMesh2_face_edges:long_name = "Kantenverzeichnis der Kontrollvolumina" ;
CVMesh2_face_edges:cf_role = "face_edge_connectivity" ;
CVMesh2_face_edges:_FillValue = -999 ;
CVMesh2_face_edges:start_index = 0 ;
  1. Nummern der Kanten (des Aggregations-Gitters) der Kontrollvolumina.
  2. Die Kanten müssen entgegen dem Uhrzeigersinn angegeben werden.
  3. Nicht vorhandene Knoten mit dem _FillValue kennzeichnen.
  4. Nicht vorhandene Kanten müssen für jedes Kontrollvolumen die letzten Einträge sein.

Exchangeverzeichnis der Kontrollvolumina

int CVMesh2_face_exchs(nCVMesh2_face, nCVMaxMesh2_face_exchs) ;

CVMesh2_face_exchs:long_name = "Exchangeverzeichnis der Kontrollvolumina" ;
CVMesh2_face_exchs:cf_role = "face_exch_connectivity" ;
CVMesh2_face_exchs:_FillValue = -999 ;
CVMesh2_face_exchs:start_index = 0 ;
  1. Nummern der Austauschflächen (Exchanges) der Kontrollvolumina.
  2. Die Austauschflächen müssen entgegen dem Uhrzeigersinn angegeben werden.
  3. Nicht vorhandene Austauschflächen mit dem _FillValue kennzeichnen.
  4. Nicht vorhandene Austauschflächen müssen für jedes Kontrollvolumen die letzten Einträge sein.

Knotenverzeichnis der Kontrollvolumen-Kanten

int CVMesh2_edge_nodes(nCVMesh2_edge, two) ;

CVMesh2_edge_nodes:long_name = "Knotenverzeichnis der Kontrollvolumen-Kanten" ;
CVMesh2_edge_nodes:cf_role = "edge_node_connectivity" ;
CVMesh2_edge_nodes:start_index = 0 ;
  1. Nummern der Knoten (des Aggregations-Gitters) aller Kanten (des Aggregations-Gitters).

Kantenverzeichnis der Exchanges

int CVMesh2_exch_edges(nCVMesh2_exch, nCVMaxMesh2_exch_edges) ;

CVMesh2_exch_edges:long_name = "Kantenverzeichnis (unsortiert) der Exchanges" ;
CVMesh2_exch_edges:cf_role = "exch_edge_connectivity" ;
CVMesh2_exch_edges:_FillValue = -999 ;
CVMesh2_exch_edges:start_index = 0 ;
  1. Nummern der Kanten (des Aggregations-Gitters) aller Austauschflächen (Exchanges).
  2. Die Kanten sind entlang der Austauschfläche unsortiert angegeben.
  3. Nicht vorhandene Kanten mit dem _FillValue kennzeichnen.
  4. Nicht vorhandene Kanten müssen für jede Austauschfläche die letzten Einträge sein.

Kontrollvolumenverzeichnis der Kontrollvolumen-Kanten

int CVMesh2_edge_faces(nCVMesh2_edge, two) ;

CVMesh2_edge_faces:long_name = "Kontrollvolumenverzeichnis der Kontrollvolumen-Kanten" ;
CVMesh2_edge_faces:cf_role = "edge_face_connectivity" ;
CVMesh2_edge_faces:_FillValue = -999 ;
CVMesh2_edge_faces:start_index = 0 ;
  1. Nummern der Kontrollvolumina aller Kanten des Aggregations-Gitters.
  2. Auf Kanten des (Aggregations-Gitter) Randes darf ein Nachbar-Kontrollvolumen fehlen; _FillValue verwenden.

Kontrollvolumenverzeichnis der Exchanges

int CVMesh2_exch_faces(nCVMesh2_exch, two) ;

CVMesh2_exch_faces:long_name = "Kontrollvolumenverzeichnis der Exchanges" ;
CVMesh2_exch_faces:cf_role = "exch_face_connectivity" ;
CVMesh2_exch_faces:_FillValue = -999 ;
CVMesh2_exch_faces:start_index = 0 ;
  1. Nummern der Kontrollvolumina aller Austauschflächen (Exchanges) des Aggregations-Gitters.
  2. Auf Austauschflächen des (Aggregations-Gitter-) Randes darf ein Nachbar-Kontrollvolumen fehlen; _FillValue verwenden.

Topologievariable

Berechnungsgitter

int Mesh2 ;

Mesh2:long_name = "Berechnungsgitter" ;
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" ;

Hinweise:

  1. In der Praxis müssen nicht alle Verknüpfungslisten (connectivity) angegeben werden, da manche Informationen redundant sind. Sie sollten aber angegeben werden können.
  2. Die in 2D flexible mesh (mixed triangles, quadrilaterals, etc.) topology aufgeführten Attribute face_dimension und edge_dimension werden in der BAW nicht unterstützt. Dies ist auch nicht erforderlich, da die Reihenfolge der Dimensionen in den Konnektivitäts-Variablen standardkonform sind.
  3. Das Attribut "parent_mesh" verweist auf das kombinierte Gitter (Parent Mesh) dessen erster Bestandteil das Berechnungsgitter ist.

Aggregations-Gitter

int CVMesh2 ;

CVMesh2:long_name = "Aggregations-Gitter" ;
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:face_node_connectivity = "CVMesh2_face_nodes" ;
CVMesh2:face_edge_connectivity = "CVMesh2_face_edges" ;
CVMesh2:edge_node_connectivity = "CVMesh2_edge_nodes" ;
CVMesh2:exch_coordinates = "CVMesh2_exch_x CVMesh2_exch_y CVMesh2_exch_lon CVMesh2_exch_lat" ;
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" ;

Hinweise:

  1. Das Attribut "parent_mesh" verweist auf das kombinierte Gitter (Parent Mesh) dessen zweiter Bestandteil das Aggregationsgitter ist.

Kombiniertes Gitter

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

Hinweise:

  1. Das Konzept der Parent Mesh Variable ist nicht in den UGRID Conventions enthalten.
  2. Das Attribut "sub_meshes" verweist auf die beiden, zu dem Parent Mesh gehörenden Gitternetze (Berechnungsgitter, Aggregations-Gitter).
  3. Das Attribut "mesh_contacs" verweist auf Variablen, welche den Zusammenhang zwischen den zu dem Parent Mesh gehörenden Gitternetzen beschreiben.

Kontaktlisten

Kontaktliste Knoten <-> Aggregations-Gitter-Knoten

int CVMesh2_node_contact(nMesh2_node, two) ;

CVMesh2_node_contact:long_name = "Liste aller Kontakte zwischen Berechnungs- und CV-Gitter-Knoten" ;
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 ;

Hinweise:

  1. Das Konzept der Mesh Topology Contact Variable ist nicht in den UGRID Conventions enthalten.
  2. Indizes starten mit Null.
  3. Jeder Knoten des Berechnungsgitters verweist auf einen Knoten des Aggregations-Gitters, und umgekehrt.
  4. Knoten des Berechnungsgitters die keinen Kontakt zu Knoten des Aggregations-Gitters haben enthalten den _FillValue.

Kontaktliste Kanten <-> Aggregations-Gitter-Kanten

int CVMesh2_edge_contact(nMesh2_edge, two) ;

CVMesh2_edge_contact:long_name = "Liste aller Kontakte zwischen Berechnungs- und CV-Gitter-Kanten" ;
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 ;

Hinweise:

  1. Das Konzept der Mesh Topology Contact Variable ist nicht in den UGRID Conventions enthalten.
  2. Indizes starten mit Null.
  3. Jede Kante des Berechnungsgitters verweist auf eine Kante des Aggregations-Gitters, und umgekehrt.
  4. Kanten des Berechnungsgitters die keinen Kontakt zu Kanten des Aggregations-Gitters haben enthalten den _FillValue.

Kontaktliste Face (Polygon) <--> Kontrollvolumen

int CVMesh2_face_contact(nMesh2_face, two) ;

CVMesh2_face_contact:long_name = "Liste aller Kontakte zwischen Berechnungs- und CV-Gitter-Polygonen" ;
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 ;

Hinweise:

  1. Das Konzept der Mesh Topology Contact Variable ist nicht in den UGRID Conventions enthalten.
  2. Indizes starten mit Null.
  3. Jedes Face (Polygon) des Berechnungsgitters verweist auf ein Face (Kontrollvolumen) des Aggregations-Gitters.
  4. Umgekehrt sind jedem Kontrollvolumen i.d.R. mehr als ein Face des Berechnungsgitters zugeordnet.
  5. Faces (Polygone) des Berechnungsgitters die keinen Kontakt zu Faces (Kontrollvolumina) des Aggregations-Gitters haben enthalten den _FillValue.

Kontaktliste Kante <--> Austauschfläche

int CVMesh2_edge_exch_contact(nMesh2_edge, two) ;

CVMesh2_edge_exch_contact:long_name = "Liste aller Kontakte zwischen Berechnungs-Kanten und CV-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 ;

Hinweise:

  1. Das Konzept der Mesh Topology Contact Variable ist nicht in den UGRID Conventions enthalten.
  2. Indizes starten mit Null.
  3. Jede Kante des Berechnungsgitters verweist auf eine Austauschfläche (Exchange) des Aggregations-Gitters.
  4. Umgekehrt sind jeder Austauschfläche i.d.R. mehr als eine Kante des Berechnungsgitters zugeordnet.
  5. Kanten des Berechnungsgitters die keinen Kontakt zu Austauschflächen (Exchanges) des Aggregations-Gitters haben enthalten den _FillValue.

zurück zu NetCDF


Strukturübersicht