Aktionen

NetCDF Unstrukturiertes Gitter mit SubGrid: Unterschied zwischen den Versionen

Aus BAWiki

imported>Lang Guenther
imported>Lang Guenther
Zeile 191: Zeile 191:
::: Mesh2_poly_subpolydepth:_FillValue = ''fillvalue'' ; \\ for missing sub polygons
::: Mesh2_poly_subpolydepth:_FillValue = ''fillvalue'' ; \\ for missing sub polygons
:: ''Bemerkungen'':
:: ''Bemerkungen'':
::* Für jedes Berechnungspolygon und jedes seiner (Plot-) SubGrid-Polygone wird auf die jeweilige (lokale) Tiefenklasse verwiesen.
::* Für jedes Berechnungspolygon und jedes seiner (Plot-) SubGrid-Polygone wird auf die jeweilige (lokale) Tiefenklasse des Berechnungspolygons verwiesen.
::* Damit kann z. B. jedem (Plot-) SubGrid-Polygon seine aktuelle Tiefe zugeordnet werden.
::* Damit kann z. B. jedem (Plot-) SubGrid-Polygon seine aktuelle Tiefe zugeordnet werden.
::* Nur für Visualisierungszwecke erforderlich.
::* Nur für Visualisierungszwecke erforderlich.

Version vom 22. Dezember 2010, 08:56 Uhr

Kurze Beschreibung

Ein aus beliebigen Polygonen (Dreiecke und Vierecke) aufgebautes Gitter wird beschrieben. Zusätzlich sind typische Daten des SubGrid vorhanden. Die Dateitypen hierfür sind utrsub_grid.dat (Berechnungsgitter) und pltsub_grid.upi (Hilfsgitter für Postprocessoren, Plot-SubGrid). Die Speicherung von Daten auf diesem Gitter, z. B. der Tiefe (Bathymetrie), wird an anderer Stelle beschrieben (siehe NetCDF Synoptische Daten im unstrukturierten Gitter mit SubGrid). Ebenso werden hier keine Informationen über offene und geschlossene Kanten oder Positionen zum Einsteuern von Randwerten aufgeführt. Es wird ausschließlich die Struktur (Topologie) des Gitters beschrieben.

Die Beschreibung wurde vollständig für die staggered data Positionen node, edge, poly, subedge und subpoly gestaltet.

Inhalt der Datei

Dimensionen

  • Siehe NetCDF Unstrukturiertes Gitter, Abschnitt "Dimensionen".
  • Zusätzlich zu den dort angegebenen Dimensionen werden noch benötigt:
    Berechnungsgitter
    dimensions
    nMesh2_subedgedepth = number of sub edge depth classes
    nMesh2_subpolydepth = number of sub polygon depth classes
    nMaxMesh2_edge_subedgedepth = maximum number of sub depth classes along an edge
    nMaxMesh2_poly_subpolydepth = maximum number of sub depth classes within a polygon
    Anmerkungen:
    • Das mathematische SubGrid-Modellverfahren benötigt keinerlei geometrische Informationen hinsichtlich der Orte, an denen bestimmte Tiefen vorhanden sind.
    • Es genügt, die Tiefenverteilung innerhalb eines Berechnungspolygons bzw. entlang einer Berechnungskante zu kennen.
    • Die Informationen zur Tiefenverteilung werden in dem mathematischen SubGrid-Modellverfahren ausschließlich in integraler Weise berücksichtigt - Integral über das Berechnungspolygon bzw. über die Berechnungskante.
    • SubGrid-spezifische Daten des Modellverfahrens, wie z. B. die zeitvariable Tiefenverteilung, werden von dem Verfahren ausschließlich für die o. g. Tiefenklassen vorgehalten und ggf. auf Datei geschrieben.
    Hilfsgitter für Postprocessoren, Plot-SubGrid
    dimensions:
    nMesh2_subnode = number of sub grid nodes ;
    nMesh2_subedge = number of sub edges ;
    nMesh2_subpoly = number of sub polygons ;
    nMaxMesh2_edge_subedges = maximum number of sub edges along an edge ;
    nMaxMesh2_poly_subpolys = maximum number of sub polygons within a polygon ;
    nMaxMesh2_subpoly_subnodes = maximum number of nodes within a subpolygon ;
    Anmerkungen:
    • Alle Angaben zur geometrischen Konkretisierung der Tiefenverteilung stellen nur eine möglich Realisierung der gegebenen Tiefenverteilung im Berechnungspolygon bzw. auf Berechnungskanten dar. Diese müssen daher, aus Sicht des SubGrid-Modellverfahrens, in gewisser Weise als willkürlich bezeichnet werden.
    • Die zusätzlichen geometrischen Informationen werden i. d. R. für eine korrekte Analyse der SubGrid-Berechnungsergebnisse nicht benötigt. Sie stellen vielmehr Hilfsinformationen zur quasi-deterministischen Visualisierung der Ergebnisse des SubGrid-Modellverfahrens dar.

Lokale Koordinaten

Berechnungsgitter

Plot-SubGrid

(optional) SubKnoten

double Mesh2_subnode_x(nMesh2_subnode) ;
Mesh2_subnode_x:standard_name = "projection_x_coordinate" ;
Mesh2_subnode_x:long_name = "x-coordinate of 2D mesh sub grid nodes" ;
Mesh2_subnode_x:units = "m" ;
double Mesh2_subnode_y(nMesh2_subnode) ;
Mesh2_subnode_y:standard_name = "projection_y_coordinate" ;
Mesh2_subnode_y:long_name = "y-coordinate of 2D mesh sub grid nodes" ;
Mesh2_subnode_y:units = "m" ;
Hinweis: Prüfen, ob diese Daten überhaupt erforderlich sind. Den SubKnoten werden keine Daten zugeordnet. SubPolygone und SubKanten werden als Zellen durch ihre Abmessungen (Bounds) beschrieben. Falls kein Attribut FillValue in den Bounds-Variablen zulässig ist, so werden die SubKnoten in jedem Fall benötigt.

SubKanten

double Mesh2_subedge_x(nMesh2_subedge) ;
Mesh2_subedge_x:standard_name = "projection_x_coordinate" ;
Mesh2_subedge_x:long_name = "x-coordinate of 2D mesh sub grid edges, e.g. center of sub edge" ;
Mesh2_subedge_x:units = "m" ;
Mesh2_subedge_x:bounds = "Mesh2_subedge_x_bnd"
double Mesh2_subedge_y(nMesh2_subedge) ;
Mesh2_subedge_y:standard_name = "projection_y_coordinate" ;
Mesh2_subedge_y:long_name = "y-coordinate of 2D mesh sub grid edges, e.g. center of sub edge" ;
Mesh2_subedge_y:units = "m" ;
Mesh2_subedge_y:bounds = "Mesh2_subedge_y_bnd"

SubPolygone

double Mesh2_subpoly_x(nMesh2_subpoly) ;
Mesh2_subpoly_x:standard_name = "projection_x_coordinate" ;
Mesh2_subpoly_x:long_name = "x-coordinate of 2D mesh sub polygons, e.g. any position within sub polygon" ;
Mesh2_subpoly_x:units = "m" ;
Mesh2_subpoly_x:bounds = "Mesh2_subpoly_x_bnd"
double Mesh2_subpoly_y(nMesh2_subpoly) ;
Mesh2_subpoly_y:standard_name = "projection_y_coordinate" ;
Mesh2_subpoly_y:long_name = "y-coordinate of 2D mesh sub polygons, e.g. any position within sub polygon" ;
Mesh2_subpoly_y:units = "m" ;
Mesh2_subpoly_y:bounds = "Mesh2_subpoly_y_bnd"

Begrenzung für SubKanten

double Mesh2_subedge_x_bnd(nMesh2_subedge,Two) ; \\ no metadata required
double Mesh2_subedge_y_bnd(nMesh2_subedge,Two) ; \\ no metadata required

Begrenzung für SubPolygone

double Mesh2_subpoly_x_bnd(nMesh2_subpoly,nMaxMesh2_subpoly_subnodes) ;
Mesh2_subpoly_x_bnd:_Fillvalue = fillvalue ; \\ for missing subnodes
double Mesh2_subpoly_y_bnd(nMesh2_subpoly,nMaxMesh2_subpoly_subnodes) ;
Mesh2_subpoly_y_bnd:_Fillvalue = fillvalue ; \\ for missing subnodes

Geografische Koordinaten

Berechnungsgitter

Plot-SubGrid

(optional) SubKnoten

double Mesh2_subnode_lon(nMesh2_subnode) ;
Mesh2_subnode_lon:standard_name = "longitude" ;
Mesh2_subnode_lon:long_name = "longitude of 2D mesh sub grid nodes" ;
Mesh2_subnode_lon:units = "degrees_east" ;
double Mesh2_subnode_lat(nMesh2_subnode) ;
Mesh2_subnode_lat:standard_name = "latitude" ;
Mesh2_subnode_lat:long_name = "latitude of 2D mesh sub grid nodes" ;
Mesh2_subnode_lat:units = "degrees_north" ;
Hinweis: Prüfen, ob diese Daten überhaupt erforderlich sind. Den SubKnoten werden keine Daten zugeordnet. SubPolygone und SubKanten werden als Zellen durch ihre Abmessungen (Bounds) beschrieben. Falls kein Attribut FillValue in den Bounds-Variablen zulässig ist, so werden die SubKnoten in jedem Fall benötigt.

SubKanten

double Mesh2_subedge_lon(nMesh2_subedge) ;
Mesh2_subedge_lon:standard_name = "longitude" ;
Mesh2_subedge_lon:long_name = "longitude of 2D mesh sub grid edges, e.g. center of sub edge" ;
Mesh2_subedge_lon:units = "degrees_east" ;
Mesh2_subedge_lon:bounds = "Mesh2_subedge_lon_bnd"
double Mesh2_subedge_lat(nMesh2_subedge) ;
Mesh2_subedge_lat:standard_name = "latitude" ;
Mesh2_subedge_lat:long_name = "latitude of 2D mesh sub grid edges, e.g. center of sub edge" ;
Mesh2_subedge_lat:units = "degrees_north" ;
Mesh2_subedge_lat:bounds = "Mesh2_subedge_lat_bnd"

SubPolygone

double Mesh2_subpoly_lon(nMesh2_subpoly) ;
Mesh2_subpoly_lon:standard_name = "longitude" ;
Mesh2_subpoly_lon:long_name = "longitude of 2D mesh sub polygons, e.g. any position within sub polygon" ;
Mesh2_subpoly_lon:units = "degrees_east" ;
Mesh2_subpoly_lon:bounds = "Mesh2_subpoly_lon_bnd"
double Mesh2_subpoly_lat(nMesh2_subpoly) ;
Mesh2_subpoly_lat:standard_name = "latitude" ;
Mesh2_subpoly_lat:long_name = "latitude of 2D mesh sub polygons, e.g. any position within sub polygon" ;
Mesh2_subpoly_lat:units = "degrees_north" ;
Mesh2_subpoly_lat:bounds = "Mesh2_subpoly_lat_bnd"

(optional) Begrenzung für SubKanten

double Mesh2_subedge_lon_bnd(nMesh2_subedge,Two) ; \\ no metadata required
double Mesh2_subedge_lat_bnd(nMesh2_subedge,Two) ; \\ no metadata required

(optional) Begrenzung für SubPolygone

double Mesh2_subpoly_lon_bnd(nMesh2_subpoly,nMaxMesh2_subpoly_subnodes) ; \\ no metadata required
Mesh2_subpoly_lon_bnd:_Fillvalue = fillvalue ; \\ for missing subnodes
double Mesh2_subpoly_lat_bnd(nMesh2_subpoly,nMaxMesh2_subpoly_subnodes) ; \\ no metadata required
Mesh2_subpoly_lat_bnd:_Fillvalue = fillvalue ; \\ for missing subnodes

Topologische Daten

Berechnungsgitter

Knotenverzeichnis der Kanten

Knotenverzeichnis der Polygone

Polygonverzeichnis der Kanten

Plot-SubGrid

SubKantenverzeichnis der Kanten

integer Mesh2_edge_subedges(nMesh2_edge,nMaxMesh2_edge_subedges) ;
Mesh2_edge_subedges:standard_name = "???" ; \\ yet to be determined
Mesh2_edge_subedges:long_name = "list of sub edges for all edges" ;
Mesh2_edge_subedges:_FillValue = fillvalue ; \\ for missing sub edges
Bemerkungen:
  • Für jede Berechnungskante wird auf die Liste der (Plot-) SubGrid-Kanten verwiesen.
  • Nur für Visualisierungszwecke erforderlich.
  • Die Anzahl der (Plot-) SubGrid-Kanten einer Berechnungskante ist immer größer oder gleich der Anzahl ihrer SubGrid-Tiefenklassen.

SubPolygonverzeichnis der Polygone

integer Mesh2_poly_subpolys(nMesh2_poly,nMaxMesh2_poly_subpolys) ;
Mesh2_poly_subpolys:standard_name = "???" ; \\ yet to be determined
Mesh2_poly_subpolys:long_name = "list of sub polygons for all polygons" ;
Mesh2_poly_subpolys:_FillValue = fillvalue ; \\ for missing sub polygons
Bemerkungen:
  • Für jedes Berechnungspolygon wird auf die Liste der (Plot-) SubGrid-Polygone verwiesen.
  • Nur für Visualisierungszwecke erforderlich.
  • Die Anzahl der (Plot-) SubGrid-Polygone eines Berechnungspolygons ist immer größer oder gleich der Anzahl seiner SubGrid-Tiefenklassen.

Tiefenklassenverzeichnis der SubKanten

integer Mesh2_edge_subedgedepth(nMesh2_edge,nMaxMesh2_edge_subedges) ;
Mesh2_edge_subedgedepth:standard_name = "???" ; \\ yet to be determined
Mesh2_edge_subedgedepth:long_name = "list of (local) sub edge depth classes for all subedges" ;
Mesh2_edge_subedgedepth:_FillValue = fillvalue ; \\ for missing sub edges
Bemerkungen:
  • Für jede Berechnungskante und jede ihrer (Plot-) SubGrid-Kanten wird auf die jeweilige (lokale) Tiefenklasse der Berechnungskante verwiesen.
  • Damit kann einer (Plot-) SubGrid-Kante z. B. ihre (aktuelle) Tiefe zugewiesen werden.
  • Nur für Visualisierungszwecke erforderlich.
  • Die Anzahl der (Plot-) SubGrid-Kanten einer Berechnungskante ist immer größer oder gleich der Anzahl ihrer SubGrid-Tiefenklassen.

Tiefenklassenverzeichnis der SubPolygone

integer Mesh2_poly_subpolydepth(nMesh2_poly,nMaxMesh2_poly_subpolys) ;
Mesh2_poly_subpolydepth:standard_name = "???" ; \\ yet to be determined
Mesh2_poly_subpolydepth:long_name = "list of (local) sub polygon depth classes for all subpolygons" ;
Mesh2_poly_subpolydepth:_FillValue = fillvalue ; \\ for missing sub polygons
Bemerkungen:
  • Für jedes Berechnungspolygon und jedes seiner (Plot-) SubGrid-Polygone wird auf die jeweilige (lokale) Tiefenklasse des Berechnungspolygons verwiesen.
  • Damit kann z. B. jedem (Plot-) SubGrid-Polygon seine aktuelle Tiefe zugeordnet werden.
  • Nur für Visualisierungszwecke erforderlich.
  • Die Anzahl der (Plot-) SubGrid-Polygone eines Berechnungspolygons ist immer größer oder gleich der Anzahl seiner SubGrid-Tiefenklassen.

Topologievariable

integer Mesh2 ;
Mesh2:standard_name = "???" ; \\ yet to be determined
Mesh2:long_name = "name of grid can be stored here" ;
Mesh2:dimensionality = 2 ; \\ flat, two-dimensional topology
Mesh2:locations = "node edge poly subedge subpoly" ;
Mesh2:node_coordinates = "Mesh2_node_lon Mesh2_node_lat" ;
Mesh2:edge_coordinates = "Mesh2_edge_lon Mesh2_edge_lat" ;
Mesh2:poly_coordinates = "Mesh2_poly_lon Mesh2_poly_lat" ;
Mesh2:edge_node_connectivity = "Mesh2_edge_nodes" ;
Mesh2:poly_node_connectivity = "Mesh2_poly_nodes" ;
Mesh2:edge_poly_connectivity = "Mesh2_edge_polys" ;
Mesh2:subnode_coordinates = " Mesh2_subnode_lon Mesh2_subnode_lat" ;
Mesh2:subedge_coordinates = " Mesh2_subedge_lon Mesh2_subedge_lat" ;
Mesh2:subpoly_coordinates = " Mesh2_subpoly_lon Mesh2_subpoly_lat" ;
Mesh2:edge_subedge_connectivity = "Mesh2_edge_subedges" ;
Mesh2:poly_subpoly_connectivity = "Mesh2_poly_subpolys" ;
Mesh2:edge_subedgedepth_connectivity = "Mesh2_edge_subedgedepth" ;
Mesh2:poly_subpolydepth_connectivity = "Mesh2_poly_subpolydepth" ;

Koordinatentransformation

Siehe unter NetCDF Grid Mapping Variable.

Anmerkungen, Fragen

  • Datei nutzt Deltares-CF-Erweiterungen, und zusätzlich mit orange markierten (BAW-) Erweiterungen in der Topologievariablen.
  • Können auch für Kanten bounds angegeben werden?
  • Müssen die Indizes unbedingt mit Null starten?
  • Dürfen in Bounds-Variablen Werte mit _FillValue stehen?
  • Die Beschreibung der Koordinatentransformation ist für UTM- und Gauß-Krüger-Koordinaten geeignet.

zurück zu NetCDF


Strukturübersicht