Interface Skizze zu CMOR¶
Nachfolgend werden die Aufrufe der wichtigsten CMOR Funktionen erläutert.
- cmor_setup
CMOR kann im 'Append' Modus gestartet werden, sodass versucht wird, Daten an ein bestehendes File anzuhängen. Dieser Modus wird in cdo cmor über keyvalues gesteuert. Namentliche keys sind:"oflag", "append_file", "drs"
Wird ein keyvalue 'oflag=a' konfiguriert, wird der 'Append' Modus eingeschaltet. Mittels 'append_file=/beispieldirectory/beispielfile' kann der zu erweiternde File direkt registriert werden. Ist ein solches keyvaluepair konfiguriert, wird es auch genutzt. Andernfalls wird geprüft, ob ein DRS Baum erstellt werden soll ('drs=1'). Wenn dem so ist, wird versucht, aus einem Beschreibungsfile namens APPEND_FILE$keys.txt ein Datensatz einzulesen, an welchen Daten angehängt werden können. Klappt das, wird am Ende der in APPEND_FILE$keys.txt notierte Datensatz durch den erzeugten ersetzt.
Wird kein File gefunden, an das Daten passend angehängt werden können, wird in den REPLACE Modus umgeschaltet. - cmor_dataset
Alle Attribute, die an diese Funktion übergeben werden, können bzw. müssen durch keyvalues konfiguriert werden. Die für das Projekt CMIP5 notwendigen keys sind nachfolgend aufgeführt:"institute_id", "institution", "contact", "model_id", "source", "experiment_id", "member" (im RIP Format)
- cmor_axis
In cdo cmor werden die Achsen in der Reihenfolge registriert:
Zeitachse, Gitterachsen und vertikale Achse.- Die Zeitachse wird je nach 'cell_methods' konfiguriert und nicht für 'cell_methods=n'. Für CMIP5-Daten wird bei Variablen bestimmter MIP-Tabellen der CMOR-name für die Zeitdimension gesetzt. Bspw. wird statt "time" der benötigte Zeitdimensionsname "time1" für Variablen der MIP-Tabelle 'CMIP5_6hrPlev' gesetzt.
- Folgende Gittertypen werden automatisch erkannt und unterschieden:
Typ: GAUSSIAN oder LONLAT. Automatische Achsennamen: 'latitude' und 'longitude' TYP: CURVILINEAR. Automatische Achsennamen: 'j_index' und 'i_index'.
Um ein Gitter von Typ CURVILINEAR zu registrieren, wird zusätzlich die Funktion cmor_grid aufgerufen. Außerdem wird eine Informationstabelle zum Gitter via cmor_load_table und cmor_set_table* geladen. Boundaries bzw Vertices werden falls nicht vorhanden mit Hilfe der Koordinaten des Gitters berechnet. - Folgende vertikale Achsen mit mehr als zwei Einträgen werden automatisch erkannt und unterschieden:
Typ: PRESSURE. Automatischer Name: 'plevs' Typ: HYBRID. Automatischer Name: 'alternate_hybrid_sigma' Typ: DEPTH_BELOW_SEA. Automatischer Name: 'depth_coord' und automatische Einheit: 'm' Typ: DEPTH_BELOW_LAND. Automatischer Name: 'depth_coord' und automatische Einheit: 'cm'
Für CMIP5-Daten wird bei bestimmten MIP-Tabellen der CMOR-name für den Typ PRESSURE gesetzt. Bspw. wird statt "plevs" der benötigte Zeitdimensionsname "plev8" für Variablen der MIP-Tabelle 'CMIP5_day' übergeben.
Eine scalare vertikale Koordinate (szc) kann bspw. über 'szc=height2m_1.5' definiert werden.
Für eine Achse vom Typ HYBRID wird zusätzlich die Funktion cmor_zfactor aufgerufen, um notwendige Achsenparameter wie den Bodendruck zu definieren.
- cmor_variable
Die Variable wird mit dem Namen konfiguriert, der per 'vars=$varname' angegeben wird. Dieser Name muss dem in der MIP-Tabelle eingetragenen entsprechen. - cmor_write
Es wird immer ein Zeitschritt von jeder Variable einzeln geschrieben, damit CDO Operatoren weiterhin 'gepiped', also hintereinander ausgeführt werden können. CMOR erwartet relative Zeitangaben zu einem Referenzdatum, die in CDO mittels 'juldate' berechnet werden. Für die Berechnung sind values zu folgenden keys wichtig:'req_time_units', 'cell_methods', ggf. 'calendar' und ggf. 'frequency'
Die Frequenz wird benötigt, um 'time bounds' zu berechnen. Sie muss per keyvalue konfiguriert werden, wenn 'gepiped' wird und keine 'time bounds' im File stehen. Andernfalls wird sie auf Basis der Anzahl der Zeitschritte im File ermittelt. Aktuell unterstützte Frequenzen sind:'yr', 'mon', 'day'
- cmor_close_variable
Statt eines einzigen cmor_close wird jeder einzelne CMOR file mit dieser Funktion geschlossen, da dies das Ausgeben des Output-filenamen ermöglicht.