# EAS3

EAS3 (Ein-Ausgabe-System 3) ist eine freie Software zum binären Lesen und Schreiben von strukturierten Daten inklusive Geometrieinformationen sowie zur Auswertung der gespeicherten Daten. Es dient dazu binäre Gleitkommadaten im IEEE-Format zwischen verschiedenen Rechnern auszutauschen, diese Daten gegebenenfalls zu bearbeiten oder in andere Formate umzuwandeln. Es ist generell für die Speicherung strukturierter Datensätze geeignet und wird insbesondere bei der Direkten Numerischen Simulation (DNS) verwendet.

## Programmpaket

Das Programmpaket besteht aus Bibliotheken zur Verwendung in eigenen Programmen sowie aus einem eigenständigen Kommandozeilenprogramm und läuft auf allen POSIX-Systemen. Es ist in Fortran und C geschrieben. Die Bibliotheken enthalten verschiedene numerische Algorithmen sowie Routinen zum Lesen und Schreiben im binären EAS3 Format. Die Schreib-Lese-Routinen werden als Fortran- und C-Routinen bereitgestellt. Als numerische Methoden sind unter anderem die Schnelle Fourier-Transformation (FFT), der Thomas-Algorithmus zur Lösung tridiagonaler Gleichungssysteme oder Interpolationsroutinen implementiert. Die Bibliotheken sind auch zur Verwendung auf Vektorrechnern geeignet.

## Geschichte

EAS3 wurde am Institut für Aerodynamik und Gasdynamik (IAG) der Universität Stuttgart entwickelt. Die Vorgängerversionen (EAS und EAS2) gehen auf das Ende der 1980er zurück, als die Rechnerkapazitäten erste große räumliche nichtlineare Direkte Numerische Simulationen ermöglichten. Mit den aufkommenden Datenmengen stellte sich das Problem einer effektiven Handhabung und Auswertung. Seit der Veröffentlichung von EAS3 im Jahre 1999 wird das Paket von Mitarbeitern der beteiligten Institute kontinuierlich weiterentwickelt.
Die aktuelle Versionsnummer des Softwarepakets ist 1.6.7 vom April 2009. Die Ziffer 3 im Namen des Programmpakets bezieht sich nicht auf die Versionsnummer, sondern auf den Schritt zur Speicherung von dreidimensionalen Datenfeldern (plus Parameter und Zeitschritt) im Gegensatz zum Vorgänger EAS2, bei dem einzelne spannweitige Moden noch in separaten Dateien gespeichert werden mussten.

## Dateiformat

Aufgabe des EAS3-Dateiformats ist es, Gleitkommazahlen binär im IEEE-Format zu speichern und zwischen verschiedenen Rechnerarchitekturen (little/big-endian) auszutauschen. Die Daten sind hierbei als Parameter organisiert. Ein Parameter ist ein strukturiertes ein-, zwei- oder dreidimensionales Datenfeld von Gleitkommadaten. Mehrere dieser Parameter können wiederum zu einem Zeitschritt zusammengefasst werden. Somit ist es möglich, fünfdimensionale Datenfelder zu speichern. Die Geometrieinformationen zu den jeweiligen Richtungen stehen im Kennsatz der Datei. Der Kennsatz kann auch zusätzliche Informationen in benutzerdefinierten Feldern enthalten. Die Daten können wahlweise in single-precision (32 Bit), double-precision (64 Bit) oder quadruple-precision (128 Bit) geschrieben werden. Die Dateigröße ist nur beschränkt durch das Dateisystem, die Rechnerarchitektur und dadurch, dass sich die Feldgrößen als 64 Bit Integer darstellen lassen müssen.

## Funktionalität

Das eigentliche EAS3-Programm besitzt eine Kommandozeilenschnittstelle, mit der EAS3-Dateien bearbeitet oder umgewandelt werden können. Die unterstützten Befehle reichen von grundlegenden Operationen wie Grundrechenarten über Dateioperationen bis hin zu komplexen Operationen wie Ableiten, Fourier-Transformationen oder Interpolation. Spezifische Befehle für Strömungsdaten sind ebenfalls implementiert, so etwa die Berechnung des lambda2-Wirbelkriteriums. Die Ausgabe in andere Datenformate wird unterstützt. Da die Befehle von der Standardeingabe gelesen werden, eignet sich EAS3 auch zur Verwendung in Skripten, um Abläufe zu automatisieren.
Übersicht über die wichtigsten Funktionen:
* Dateiverwaltung: Umordnen, Aneinanderhängen, Ausschneiden
* Konvertierung in andere Datenformate (ASCII, Covise, Tecplot)
* Mathematische Operationen: Grundrechenarten, Logarithmus etc.
* Ableiten und Integrieren
* Interpolieren
* Datenreduktion: Mittelung, RMS-Werte etc.
* Fouriertransformationen: einfach/doppelt, reell/komplex
* DNS-Spezifisches: Wirbelkriterium, Koordinatendrehung

## Installation

Die Quellen können direkt aus dem CVS-Repository oder als gezippte tar-Datei bezogen werden. Für verschiedene Rechnerarchtiketuren liegen Makefiles bei. Dies beinhaltet auch die Möglichkeit des Cross-Kompilierens, wie es z. B. für Supercomputer mit Frontend-Maschine üblich ist. Da es beim Linken von mit unterschiedlichen Fortran-Compilern erstellten Object-Files zu Problemen kommen kann, wurde bislang darauf verzichtet, ein fertiges Binärpaket (RPM, .deb) anzubieten.

## Vor- und Nachteile
### Vorteile

Für den Programmierer besteht der Hauptvorteil in einer einfachen Implementierung von Lese-Schreibzugriffen auf große binäre Datensätze. So wird durch die Bibliothek sichergestellt, dass die Daten stets im Big-Endian-Format geschrieben werden. Die sich daraus ergebende Plattformunabhängigkeit der Dateien ermöglicht ein problemloses Austauschen zwischen unterschiedlichen Rechnerarchitekturen. Dies ist insbesondere bei der Verwendung von Supercomputern von Bedeutung. Für den Anwender ist es vorteilhaft, dass verschiedene Methoden zur Datenauswertung bereitgestellt werden, die mittels Skripten auch automatisiert abgearbeitet werden können.

### Nachteile

Ein Nachteil ist für manche Anwender die Spezialisierung auf strukturierte Gitter. Bisher sind nur kartesische Gitter oder eine Darstellung im Spektralraum implementiert. Datensätze, die beispielsweise in Zylinderkoordinaten gegeben sind, können zwar abgespeichert werden, man kann jedoch die vorhandenen Auswerteroutinen nicht oder nur eingeschränkt darauf anwenden. Da die üblicherweise verwendeten Visualisierungsprogramme das EAS3-Format nicht direkt unterstützen, ist es in der Regel nötig, die Datensätze in das Dateiformat des jeweiligen Programms umzuwandeln. Das EAS3-Programm gibt es nur textbasiert, ein grafisches Benutzerinterface existiert nicht. Die automatische Vervollständigung in der EAS3-Konsole stellt zwar eine Erleichterung beim interaktiven Arbeiten dar, jedoch ist man für eine ausführliche Hilfe auf die Website angewiesen.

## Lizenz

Das komplette EAS3-Paket steht unter der MIT-Lizenz und ist somit frei verfügbar. Aufgrund der weniger strikten Lizenzbedingungen verglichen mit der GNU General Public License verpflichtet die Verwendung der bereitgestellten Routinen nicht zum Veröffentlichen des eigenen Quellcodes.

## Verwendung

EAS3 wird unter anderem von folgenden Einrichtungen verwendet:
* Transitionsgruppe am Institut für Aerodynamik und Gasdynamik (IAG) der Universität Stuttgart
* Computational Fluid Dynamics Laboratory an der University of Arizona
* Institute of Fluid Dynamics, Eidgenössische Technische Hochschule Zürich
* Lehrstuhl für Aerodynamik an der TU München (Gruppe Hochgeschwindigkeitsaerodynamik)

## Verwandte Datenformate

Andere Datenformate zum Speichern von binären Datensätzen sind:
* CFD General Notation System (CGNS)
* Common Data Format (CDF) der NASA
* Covise-Datenformat
* NetCDF, basiert auf (CDF)
* Tecplot-Binärdaten