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.
Mit dem Programm NCAGGREGATE können auf einem Berechnungsgitter vorliegende Daten aggregiert werden.
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 zwischen 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
- nMesh2_node : Anzahl der Nodes
- nMesh2_edge : Anzahl der Edges
- nMesh2_face : Anzahl der Faces (Polygone)
- nMaxMesh2_face_nodes : maximale Anzahl der Nodes/Edges in einem Face (Polygon)
Aggregations-Gitter
- nCVMesh2_node : Anzahl der Nodes des Aggregations-Gitters
- nCVMesh2_edge : Anzahl der Edges des Aggregations-Gitters
- nCVMesh2_face : Anzahl der Faces (hier Kontrollvolumina) des Aggregations-Gitters
- nCVMaxMesh2_face_nodes : maximale Anzahl der zu einem Face (hier Kontrollvolumen) gehörenden Nodes
- nCVMesh2_exch : Anzahl der Exchanges (hier Austauschflächen)
- nCVMaxMesh2_face_exchs : maximale Anzahl der zu einem Face (hier Kontrollvolumen) gehörenden Exchanges (hier Austauschflächen)
- nCVMaxMesh2_exch_edges : maximale Anzahl der zu einem Face (hier Kontrollvolumen) gehörenden Edges
Konstante
- 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:
- 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:
- 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:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
- 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:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
- 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:
- Koordinaten der Knoten (Kontrollvolumina) entgegen dem Uhrzeigersinn angeben.
- 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:
- 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:
- 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:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
- 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:
- Das Attribut "name_id" entspricht der (BAW) PHYDEF-Code-Kennung der Variablen.
- 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:
- Koordinaten der Knoten (Kontrollvolumina) entgegen dem Uhrzeigersinn angeben.
- 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:
- Nummern der Knoten (des Aggregations-Gitters) der Kontrollvolumina.
- Die Knoten müssen entgegen dem Uhrzeigersinn angegeben werden.
- Nicht vorhandene Knoten mit dem _FillValue kennzeichnen.
- 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 ;
Hinweise:
- Nummern der Kanten (des Aggregations-Gitters) der Kontrollvolumina.
- Die Kanten müssen entgegen dem Uhrzeigersinn angegeben werden.
- Nicht vorhandene Kanten mit dem _FillValue kennzeichnen.
- 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 ;
Hinweise:
- Nummern der Austauschflächen (Exchanges) der Kontrollvolumina.
- Die Austauschflächen müssen entgegen dem Uhrzeigersinn angegeben werden.
- Nicht vorhandene Austauschflächen mit dem _FillValue kennzeichnen.
- 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 ;
Hinweise:
- Nummern der Knoten (des Aggregations-Gitters) aller Kanten (des Aggregations-Gitters).
- Der erste Knoten kennzeichnet den Beginn, der zweite das Ende der Kante.
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 ;
Hinweise:
- Nummern der Kanten (des Aggregations-Gitters) aller Austauschflächen (Exchanges).
- Die Kanten sind entlang der Austauschfläche unsortiert angegeben. Austauschflächen können Lücken aufweisen.
- Nicht vorhandene Kanten mit dem _FillValue kennzeichnen.
- 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 ;
Hinweise:
- Nummern der Kontrollvolumina aller Kanten des Aggregations-Gitters.
- 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 ;
Hinweise:
- Nummern der Kontrollvolumina aller Austauschflächen (Exchanges) des Aggregations-Gitters.
- 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:
- In der Praxis müssen nicht alle Verknüpfungslisten (connectivity) angegeben werden, da manche Informationen redundant sind. Sie sollten aber angegeben werden können.
- 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.
- 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: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" ;
Hinweise:
- 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:
- Das Konzept der Parent Mesh Variable ist nicht in den UGRID Conventions enthalten.
- Das Attribut "sub_meshes" verweist auf die beiden, zu dem Parent Mesh gehörenden Gitternetze (Berechnungsgitter, Aggregations-Gitter).
- Das Attribut "mesh_contacts" 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:
- Das Konzept der Mesh Topology Contact Variable ist nicht in den UGRID Conventions enthalten.
- Indizes starten mit Null.
- Jeder Knoten des Berechnungsgitters verweist auf einen Knoten des Aggregations-Gitters, und umgekehrt.
- 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:
- Das Konzept der Mesh Topology Contact Variable ist nicht in den UGRID Conventions enthalten.
- Indizes starten mit Null.
- Jede Kante des Berechnungsgitters verweist auf eine Kante des Aggregations-Gitters, und umgekehrt.
- 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:
- Das Konzept der Mesh Topology Contact Variable ist nicht in den UGRID Conventions enthalten.
- Indizes starten mit Null.
- Jedes Face (Polygon) des Berechnungsgitters verweist auf ein Face (Kontrollvolumen) des Aggregations-Gitters.
- Umgekehrt sind jedem Kontrollvolumen i.d.R. mehr als ein Face des Berechnungsgitters zugeordnet.
- 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:
- Das Konzept der Mesh Topology Contact Variable ist nicht in den UGRID Conventions enthalten.
- Indizes starten mit Null.
- Jede Kante des Berechnungsgitters verweist auf eine Austauschfläche (Exchange) des Aggregations-Gitters.
- Umgekehrt sind jeder Austauschfläche i.d.R. mehr als eine Kante des Berechnungsgitters zugeordnet.
- Kanten des Berechnungsgitters, die keinen Kontakt zu Austauschflächen (Exchanges) des Aggregations-Gitters haben enthalten den _FillValue.
zurück zu NetCDF