Aktionen

NetCDF Synoptische Daten im unstrukturierten Gitter mit SubGrid

Aus BAWiki

Version vom 28. April 2011, 13:16 Uhr von imported>Lang Guenther (→‎Zeitvariabel: Variablennamen sinnvoll angepasst)

Kurze Beschreibung

Synoptische Daten für alle Berechnungspositionen eines unstrukturierten Gitters mit SubGrid.

Weitere Beschreibungen

Dimensionen

  1. nMesh2_node : Anzahl der Knoten.
  2. nMesh2_edge : Anzahl der Kanten.
  3. nMesh2_poly : Anzahl der Polygone (hier Dreiecke und Vierecke).
  4. nMesh2_subedgeclass : Anzahl der Subkanten-Tiefenklassen im Modellgebiet.
  5. nMesh2_subpolyclass : Anzahl der Subpolygon-Tiefenklassen im Modellgebiet.
  6. nMesh2_class_names_strlen : max. Anzahl der Zeichen in Schwebstoffklassennamen.
  7. nMesh2_time : Anzahl der Zeitpunkte (Gitterdatei).
  8. nMesh2_data_time : UNLIMITED-Dimension, Anzahl der synoptischen Datensätze.
  9. nMesh2_layer_2d : Anzahl der Schichten für tiefengemittelte Daten.
  10. nMesh2_layer_3d : Anzahl der Schichten für tiefenstrukturierte Daten.
  11. nMesh2_suspension_classes : Anzahl der Schwebstoffklassen, inklusive Summe aller Fraktionen.
  12. nMaxMesh2_poly_nodes : maximale Anzahl der Knoten/Kanten in einem Polygon.
  13. nMaxMesh2_subedgeclass : maximale Anzahl der Subkanten-Tiefenklassen für eine Kante.
  14. nMaxMesh2_subpolyclass : maximale Anzahl der Subpolygon-Tiefenklassen für ein Polygon.
  15. two : Konstante ( = 2 ).

Datenkompression

Auf Grund der Verwendung von z-Schichten sind über jeder Position in Abhängigkeit von der Wassertiefe unterschiedlich viele (aktive) Berechnungszellen vorhanden. Zur Reduktion der Größe der Ergebnisdatensätze könnten im Prinzip verschiedene Dimensionen in einer komprimierten Dimension zusammengefasst. Dauerhaft fehlende Daten würden dann erst gar nicht in der Datei abgespeichert. Dies reduzierte bei drei-dimensionalen Simulationen mit z-Schichten den Speicheraufwand typischer Weise um 60 bis 80 Prozent.

Gleiches gilt für die Subkanten- und Subpolygon-Tiefenklassen im Modellgebiet. Da die Anzahl der benutzten Klassen von Polygon zu Polygon, bzw. Kante zu Kante, sehr unterschiedlich sein kann, könnte mit Hilfe der Kompression der Speicheraufwand teilweise erheblich verkleinert werden.

Komprimierte Daten an Knoten

Daten an Knoten liegen in dem mathematischen Verfahren mit SubGrid UNTRIM2 nicht vor.

Komprimierte Daten an Kanten

Daten auf Seitenflächen

int nMesh2_face_3d(nMesh2_face_3d) ;

nMesh2_face_3d:long_name = "Kompressionsliste der Seitenflaechen orientierten Daten" ;
nMesh2_face_3d:compress = "nMesh2_layer_3d nMesh2_edge" ;

Daten auf Subpolygon-Tiefenklassen

int nMesh2_subedgeclass(nMesh2_subedgeclass) ;

nMesh2_subedgeclass:long_name = "Kompressionsliste der SubKanten-Tiefenklassen" ;
nMesh2_subedgeclass:compress = "nMesh2_edge nMaxMesh2_subedgeclass" ;

Komprimierte Daten an Polygonen

Daten auf Zellen

int nMesh2_cell_3d(nMesh2_cell_3d) ;

nMesh2_cell_3d:long_name = "Kompressionsliste der Zellen orientierten Daten" ;
nMesh2_cell_3d:compress = "nMesh2_layer_3d nMesh2_poly" ;

Daten auf Subpolygon-Tiefenklassen

int nMesh2_subpolyclass(nMesh2_subpolyclass) ;

nMesh2_subpolyclass:long_name = "Kompressionsliste der SubPolygon-Tiefenklassen" ;
nMesh2_subpolyclass:compress = "nMesh2_poly nMaxMesh2_subpolyclass" ;

Gewichte

Maximale Fläche der Polygone

double Mesh2_poly_cell_area(nMesh2_poly) ;

Mesh2_poly_cell_area:long_name = "Flaeche des Polygons, Modellflaeche" ;
Mesh2_poly_cell_area:units = "m2" ;
Mesh2_poly_cell_area:name_id = -999 ;
Mesh2_poly_cell_area:valid_range = 0., 1000000. ;
Mesh2_poly_cell_area:_FillValue = 1.e+31 ;
Mesh2_poly_cell_area:coordinates = "Mesh2_poly_x Mesh2_poly_y Mesh2_poly_lon Mesh2_poly_lat" ;
Mesh2_poly_cell_area:grid_mapping = "Mesh2_crs" ;
Mesh2_poly_cell_area:standard_name = "cell_area" ;
Mesh2_poly_cell_area:mesh = "Mesh2" ;
Mesh2_poly_cell_area:location = "poly" ;

Hinweise:

  1. Fläche entspricht der maximalen Wasserfläche (nutzbare Fläche) in einem Berechnungspolygon.
  2. Diese Fläche ist immer kleiner oder gleich der aus den Koordinaten des Polygons abgeleiteten Fläche.

Wasserbedeckte Fläche der Polygone

double Mesh2_poly_wet_area(nMesh2_data_time, nMesh2_poly) ;

Mesh2_poly_wet_area:long_name = "wasserbedeckte Flaeche des Polygons" ;
Mesh2_poly_wet_area:units = "m2" ;
Mesh2_poly_wet_area:name_id = -999 ;
Mesh2_poly_wet_area:valid_range = 0., 1000000. ;
Mesh2_poly_wet_area:_FillValue = 1.e+31 ;
Mesh2_poly_wet_area:coordinates = "Mesh2_poly_x Mesh2_poly_y Mesh2_poly_lon Mesh2_poly_lat" ;
Mesh2_poly_wet_area:grid_mapping = "Mesh2_crs" ;
Mesh2_poly_wet_area:standard_name = "sea_area" ;
Mesh2_poly_wet_area:mesh = "Mesh2" ;
Mesh2_poly_wet_area:location = "poly" ;

Hinweise:

  1. Fläche entspricht der aktuellen Wasserfläche in einem Berechnungspolygon.
  2. Diese Fläche ist immer kleiner oder gleich der maximal nutzbaren Fläche "Mesh2_poly_cell_area".

Durchströmte Fläche über Kanten

double Mesh2_edge_flow_area(nMesh2_data_time, nMesh2_layer_2d, nMesh2_edge) ;

Mesh2_edge_flow_area:long_name = "Durchflussflaeche, Kante" ;
Mesh2_edge_flow_area:units = "m2" ;
Mesh2_edge_flow_area:name_id = -999 ;
Mesh2_edge_flow_area:valid_range = 0., 10000. ;
Mesh2_edge_flow_area:_FillValue = 1.e+31 ;
Mesh2_edge_flow_area:coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat Mesh2_edge_z_2d" ;
Mesh2_edge_flow_area:grid_mapping = "Mesh2_crs" ;
Mesh2_edge_flow_area:mesh = "Mesh2" ;
Mesh2_edge_flow_area:location = "edge" ;
Mesh2_edge_flow_area:comment = "kein CF Standardname verfuegbar" ;

Hinweise:

  1. Entspricht der gesamten durchströmten Fläche über einer Kante.

Durchströmte Fläche der Zellenseiten

double Mesh2_face_flow_area(nMesh2_data_time, nMesh2_layer_3d, nMesh2_edge) ;

Mesh2_face_flow_area:long_name = "Durchflussflaeche, Zellenseitenflaechen" ;
Mesh2_face_flow_area:units = "m2" ;
Mesh2_face_flow_area:name_id = -999 ;
Mesh2_face_flow_area:valid_range = 0., 10000. ;
Mesh2_face_flow_area:_FillValue = 1.e+31 ;
Mesh2_face_flow_area:coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat Mesh2_edge_z_3d" ;
Mesh2_face_flow_area:grid_mapping = "Mesh2_crs" ;
Mesh2_face_flow_area:mesh = "Mesh2" ;
Mesh2_face_flow_area:location = "edge" ;
Mesh2_face_flow_area:comment = "kein CF Standardname verfuegbar" ;

Hinweise:

  1. Entspricht jeweils der durchströmten Fläche in einer Tiefenschicht über einer Kante.

Wasservolumen über Polygonen

double Mesh2_poly_water_volume(nMesh2_data_time, nMesh2_layer_2d, nMesh2_poly) ;

Mesh2_poly_water_volume:long_name = "Wasservolumen, Polygon" ;
Mesh2_poly_water_volume:units = "m3" ;
Mesh2_poly_water_volume:name_id = -999 ;
Mesh2_poly_water_volume:valid_range = 0., 1000000. ;
Mesh2_poly_water_volume:_FillValue = 1.e+31 ;
Mesh2_poly_water_volume:coordinates = "Mesh2_poly_x Mesh2_poly_y Mesh2_poly_lon Mesh2_poly_lat Mesh2_poly_z_2d" ;
Mesh2_poly_water_volume:grid_mapping = "Mesh2_crs" ;
Mesh2_poly_water_volume:standard_name = "sea_water_volume" ;
Mesh2_poly_water_volume:mesh = "Mesh2" ;
Mesh2_poly_water_volume:location = "poly" ;

Hinweise:

  1. Entspricht dem gesamten Wasservolumen über einem Polygon.

Wasservolumen in Zellen

double Mesh2_cell_water_volume(nMesh2_data_time, nMesh2_layer_3d, nMesh2_poly) ;

Mesh2_cell_water_volume:long_name = "Wasservolumen, Zelle" ;
Mesh2_cell_water_volume:units = "m3" ;
Mesh2_cell_water_volume:name_id = -999 ;
Mesh2_cell_water_volume:valid_range = 0., 1000000. ;
Mesh2_cell_water_volume:_FillValue = 1.e+31 ;
Mesh2_cell_water_volume:coordinates = "Mesh2_poly_x Mesh2_poly_y Mesh2_poly_lon Mesh2_poly_lat Mesh2_poly_z_3d" ;
Mesh2_cell_water_volume:grid_mapping = "Mesh2_crs" ;
Mesh2_cell_water_volume:standard_name = "sea_water_volume" ;
Mesh2_cell_water_volume:mesh = "Mesh2" ;
Mesh2_cell_water_volume:location = "poly" ;

Hinweise:

  1. Entspricht jeweils dem Wasservolumen in einer Tiefenschicht über einem Polygon.

Länge der Subkanten-Tiefenklassen

double Mesh2_subedgeclass_length(nMesh2_edge, nMaxMesh2_subedgeclass) ;

Mesh2_subedgeclass_length:long_name = "SubKanten Laengenklassen fuer alle Kanten" ;
Mesh2_subedgeclass_length:units = "m" ;
Mesh2_subedgeclass_length:name_id = -999 ;
Mesh2_subedgeclass_length:valid_range = 0., 10000. ;
Mesh2_subedgeclass_length:_FillValue = 1.e+31 ;
Mesh2_subedgeclass_length:coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ;
Mesh2_subedgeclass_length:grid_mapping = "Mesh2_crs" ;
Mesh2_subedgeclass_length:mesh = "Mesh2" ;
Mesh2_subedgeclass_length:location = "edge" ;

Hinweise:

  1. Länge ist ggf. aggregierte Länge aus mehreren Abschnitten mit identischer Tiefe.

Fläche der Subpolygon-Tiefenklassen

double Mesh2_subpolyclass_area(nMesh2_poly, nMaxMesh2_subpolyclass) ;

Mesh2_subpolyclass_area:long_name = "SubKanten Laengenklassen fuer alle Kanten" ;
Mesh2_subpolyclass_area:units = "m2" ;
Mesh2_subpolyclass_area:name_id = -999 ;
Mesh2_subpolyclass_area:valid_range = 0., 1000000. ;
Mesh2_subpolyclass_area:_FillValue = 1.e+31 ;
Mesh2_subpolyclass_area:coordinates = "Mesh2_poly_x Mesh2_poly_y Mesh2_poly_lon Mesh2_poly_lat" ;
Mesh2_subpolyclass_area:grid_mapping = "Mesh2_crs" ;
Mesh2_subpolyclass_area:standard_name = "cell_area" ;
Mesh2_subpolyclass_area:mesh = "Mesh2" ;
Mesh2_subpolyclass_area:location = "poly" ;

Hinweise:

  1. Fläche ist ggf. aggregierte Fläche aus mehreren Teilflächen mit identischer Tiefe.

Zeitkoordinaten

Vertikalkoordinaten

Knoten

Für das mathematische Verfahren UNTRIM2 mit SubGrid liegen keine Daten an Knoten vor.

Kanten

Tiefengemittelte Daten

double Mesh2_edge_z_2d(nMesh2_data_time, nMesh2_edge) ;

Mesh2_edge_z_2d:long_name = "zeit- und ortsvariable Tiefe der Datenpunkte" ;
Mesh2_edge_z_2d:units = "m" ;
Mesh2_edge_z_2d:positive = "down" ;
Mesh2_edge_z_2d:bounds = "Mesh2_edge_z_2d_bnd" ;
Mesh2_edge_z_2d:standard_name = "depth" ;

double Mesh2_edge_z_2d_bnd(nMesh2_data_time, nMesh2_edge, two) ;

Hinweise:

  1. Da Hilfs-Koordinatenvariable werden die Attribute "mesh" und "location" nicht angegeben.
  2. Der aktuelle Wert bezeichnet die Mitte zwischen aktueller Wasseroberfläche und maximaler Tiefe der Gewässersohle.
  3. Das Attribut "axis" ist nicht zulässig, da es sich um eine Hilfs-Vertikalkoordinate handelt.

Tiefenstrukturierte Daten

double Mesh2_edge_z_3d(nMesh2_data_time, nMesh2_layer_3d, nMesh2_edge) ;

Mesh2_edge_z_3d:long_name = "zeit- und ortsvariable Tiefe der Datenpunkte" ;
Mesh2_edge_z_3d:units = "m" ;
Mesh2_edge_z_3d:positive = "down" ;
Mesh2_edge_z_3d:bounds = "Mesh2_edge_z_3d_bnd" ;
Mesh2_edge_z_3d:standard_name = "depth" ;

double Mesh2_edge_z_3d_bnd(nMesh2_data_time, nMesh2_layer_3d, nMesh2_edge, two) ;

Hinweise:

  1. Da Hilfs-Koordinatenvariable werden die Attribute "mesh" und "location" nicht angegeben.
  2. Der aktuelle Wert bezeichnet die Mitte der jeweiligen z-Schicht.
  3. Aus der Boundary-Variablen ergeben sich die aktuellen Schichtgrenzen.
  4. Das Attribut "axis" ist nicht zulässig, da es sich um eine Hilfs-Vertikalkoordinate handelt.

Polygone

Tiefengemittelte Daten

double Mesh2_poly_z_2d(nMesh2_data_time, nMesh2_poly) ;

Mesh2_poly_z_2d:long_name = "zeit- und ortsvariable Tiefe der Datenpunkte" ;
Mesh2_poly_z_2d:units = "m" ;
Mesh2_poly_z_2d:positive = "down" ;
Mesh2_poly_z_2d:bounds = "Mesh2_poly_z_2d_bnd" ;
Mesh2_poly_z_2d:standard_name = "depth" ;
double Mesh2_poly_z_2d_bnd(nMesh2_data_time, nMesh2_poly, two) ;

Hinweise:

  1. Da Hilfs-Koordinatenvariable werden die Attribute "mesh" und "location" nicht angegeben.
  2. Der aktuelle Wert bezeichnet die Mitte zwischen aktueller Wasseroberfläche und maximaler Tiefe der Gewässersohle.
  3. Das Attribut "axis" ist nicht zulässig, da es sich um eine Hilfs-Vertikalkoordinate handelt.

Tiefenstrukturierte Daten

double Mesh2_poly_z_3d(nMesh2_data_time, nMesh2_layer_3d, nMesh2_poly) ;

Mesh2_poly_z_3d:long_name = "zeit- und ortsvariable Tiefe der Datenpunkte" ;
Mesh2_poly_z_3d:units = "m" ;
Mesh2_poly_z_3d:positive = "down" ;
Mesh2_poly_z_3d:bounds = "Mesh2_poly_z_3d_bnd" ;
Mesh2_poly_z_3d:standard_name = "depth" ;

double Mesh2_poly_z_3d_bnd(nMesh2_data_time, nMesh2_layer_3d, nMesh2_poly, two) ;

Hinweise:

  1. Da Hilfs-Koordinatenvariable werden die Attribute "mesh" und "location" nicht angegeben.
  2. Der aktuelle Wert bezeichnet die Mitte der jeweiligen z-Schicht.
  3. Aus der Boundary-Variablen ergeben sich die aktuellen Schichtgrenzen.
  4. Das Attribut "axis" ist nicht zulässig, da es sich um eine Hilfs-Vertikalkoordinate handelt.

Informationen für das HN-Verfahren

Aktuelle (zeitvariable) SubGrid-Topografie

Knoten

Für das mathematische Verfahren UNTRIM2 liegen keine Daten an Knoten vor.

Kanten

Konstant in Zeitraum

Hier nicht weiter ausgeführt.

Zeitvariabel

double Mesh2_subedgeclass_depth(nMesh2_data_time, nMesh2_edge, nMaxMesh2_subedgeclass) ;

Mesh2_subedgeclass_depth:long_name = "SubKanten Tiefenklassen fuer alle Kanten" ;
Mesh2_subedgeclass_depth:units = "m" ;
Mesh2_subedgeclass_depth:name_id = 17 ;
Mesh2_subedgeclass_depth:valid_range = -8848., 11034. ;
Mesh2_subedgeclass_depth:_FillValue = 1.e+31 ;
Mesh2_subedgeclass_depth:cell_methods = "nMesh2_data_time: point" ;
Mesh2_subedgeclass_depth:coordinates = "Mesh2_edge_x Mesh2_edge_y Mesh2_edge_lon Mesh2_edge_lat" ;
Mesh2_subedgeclass_depth:grid_mapping = "Mesh2_crs" ;
Mesh2_subedgeclass_depth:standard_name = "sea_floor_depth_below_geoid" ;
Mesh2_subedgeclass_depth:mesh = "Mesh2" ;
Mesh2_subedgeclass_depth:location = "edge" ;
Mesh2_subedgeclass_depth:comment = "cell_measure = length: Mesh2_subedgeclass_length nicht CF-konform" ;

Hinweise:

  1. Tiefen sind Mittelwerte für die entsprechenden Subkanten.
  2. Dieser Sachverhalt kann derzeit nicht CF konform ausgedrückt werden, da hierfür das Attribut "cell_measures" für "length" erweitert werden müsste.

Polygone

Konstant in Zeitraum

Hier nicht weiter ausgeführt.

Zeitvariabel

double Mesh2_max_subpoly_depth(nMesh2_poly, nMaxMesh2_subpolyclass) ;

Mesh2_max_subpoly_depth:long_name = "SubPolygon Tiefenklassen (nicht weiter erodierbare Tiefe) fuer alle Polygone" ;
Mesh2_max_subpoly_depth:units = "m" ;
Mesh2_max_subpoly_depth:name_id = 1149 ;
Mesh2_max_subpoly_depth:valid_range = -8848., 11034. ;
Mesh2_max_subpoly_depth:_FillValue = 1.e+31 ;
Mesh2_max_subpoly_depth:cell_methods = "area: mean" ;
Mesh2_max_subpoly_depth:cell_measures = "area: Mesh2_subpolyclass_area" ;
Mesh2_max_subpoly_depth:coordinates = "Mesh2_poly_x Mesh2_poly_y Mesh2_poly_lon Mesh2_poly_lat" ;
Mesh2_max_subpoly_depth:grid_mapping = "Mesh2_crs" ;
Mesh2_max_subpoly_depth:standard_name = "sea_floor_depth_below_geoid" ;
Mesh2_max_subpoly_depth:mesh = "Mesh2" ;
Mesh2_max_subpoly_depth:location = "poly" ;

Hinweise:

  1. Tiefen sind Mittelwerte für die entsprechenden Subpolygone.

zurück zu NetCDF


Strukturübersicht