Package FlowVis
Java-Applikation für Bsp.2 der UE Visualisierung
Allgemeines zum Programm:
FlowVis ist eine Applikation zum Visualisierung von Strömungsfeldern. Um eine Strömungslinie zu errechnen, wird ein Ausgangspunkt genommen, und mittels Integrator (Euler, Runge-Kutta) der nächste Punkt auf der Strömungslinie errechnet. Der neue Punkt ist nun der Ausgangspunkt für die Berechnung eines weiteren Punktes. So wächst die Strömungslinie, bis sie entweder auf ein Hindernis stößt (Begrenzung, andere Strömungslinie) oder die maximale Integrationslänge erreicht hat. Die Strömungsvektoren des nächsten Punktes können dabei wahlweise mit der nearest neighbour-Methode oder mit bilinearer Interpolation berechnet werden.
Die Auswahl der Strömungslinien erfolgt entweder nach dem Zufallsprinzip, oder es wird der Algorithmus von Bruno Jobard und Wilfrid Lefer verwendet. Dabei werden erst alle Strömungslinien in einem bestimmten Abstand dSep von der aktuellen Strömungslinie integriert, bevor nacheinander eine von diesen Linien als neue aktuelle Strömungslinie bestimmt wird. dSep ist der minimalen Abstand, den ein sogenannter seedpoint (=Ausgangspunkt einer Strömung) von einer benachbarten Strömungslinie haben darf.
Die errechneten Strömungslinien können nun auf dem Bildschirm dargestellt werden. Dabei sind einige unterschiedliche Darstellungsmöglichkeiten vorhanden. Etwa kann der Handzeichnungs-Eindruck des entstehenden Bildes durch einen Tapering-Effekt verstärkt werden, oder bei dichten Strömungsfeldern eine Textur aufgebracht bzw. durch Zeichnen von Pfeilen eine Richtungsinformation gegeben werden. Außerdem ist es möglich, die Strömungslinien durch Pfeil-Icons statt mit Linien zu zeichnen.
Als weiteres Feature kann zusätzlich in den Daten mitgelieferte Information wie Druck auf verschiedene Art dargestellt werden. Um Details in der Strömung genauer zu sehen, zoomt man in den entsprechenden Bereich hinein.
Den Sourcecode, Sourcedoku gibt es als FlowVis.zip zum Downloaden, die Sourcedoku gibt es auch hier zum Anschauen.
Hinweise zur Installation für Win32:
Das verwendete Java ist jdk1.3.1_01. Für eine Neucompilation muß Java3D installiert sein.
Befindet sich das Verzeichnis FlowVis im aktuellen Verzeichnis, dann wird das Programm gestartet mit
java -Xmx256000k FlowVis/Gui
Angenommen, Geometriefile und Datenfile liegen in einem Verzeichnis daten, dann kann man das Programm auch mit dem Befehl
java -Xmx256000k FlowVis/Gui daten/c_block.gri daten/c_block.0000.dat
starten, wodurch Geometrie- und Datenfile sofort geladen werden. Kopiert man Geometrie- und Datenfile in ein Verzeichnis daten, kannt auch das Batch-File flow (im FlowVis.zip mitgeliefert) ausgeführt werden.
Hauptbildschirm der Anwendung
Bedienhinweise:
Zuerst muss das Geometriefile geladen werden, dann das dazu entsprechende Datenfile. Beides findet sich im Menü File. Dann kann im Menü Image mit recalc ein neues Bild gezeichnet werden.
Die aktuelle Strömungslinieninformation wird gespeichert und kann im Bild mit dem Titel current frame dargestellt werden. Berechnet man die Strömungslinieninformation neu, verwirft man dadurch die alte.
Für Detailansichten wird der Menüpunkt detail angewählt. Dann kann mit der Maus eine Bereich aufgezogen werden, der im Detail dargestellt wird. Um die Detailzeichnung auszuschalten drückt man noch einmal auf detail.
Die wichtigsten Punkte aus dem Drawing style-Menü und dem Line style-Menü kann man auch in den entsprechenden Toolbars auswählen.
Zu den einzelnen Hauptmenüpunkten:
Menü File
Meüpunkte zum Laden von Geometrie- und Datenfile, außerdem können Icons für die Glyphen-Zeichnung und der Darstellung der Vektor-Information geladen werden.
Menü Image
Beinhaltet Menüpunkte zum Neuberechnen und Zeichnen des Bildes
Menü Drawing style
Beinhaltet verschiedene Menüpunkte für die Darstellung der berechneten Strömungs-Information auf dem Bildschirm.
drawing style: Strömungslinien können mit Linien- oder Glyphen dargestellt werden.
additional info: soll zusätzliche Information (Druck, Verwirbelung rechtwinklig zum Slice) dargestellt werden
textur function: Auswahl der Texturfunktion(sinus-f, modulo-f), die auf Strömungslinie aufgetragen wird(nur Linien-Modus)
additional info representation: Darstellungsform von zusätzlicher Information (Schwellwert-Methode, farbkodiert)
period of textur function: Anzahl von Punkten in der Streamline, nach der sich Texturfunktion wiederholt
glyph size
pressure window: Dialog zum Einstellen des Schwellwert-Fensters für Druck-Information
perp. vorticity window: Dialog zum Einstellen des Schwellwert-Fensters für Verwirbelung rechtwinklig zum Slice
zoom factor: Vergrößerungsfaktor der Daten
update frequency: Anzahl von Strömungslinien, nach deren Berechnung das Bild aufgefrischt wird
rotate 90deg: Stellt Bild um 90 Grad gedreht dar
vector plot: Zeichnet Vektorinformation mit Glyphen
enable detail: Macht die Darstellung von Details in dem Strömungsfeld möglich. durch Aufziehen eines Fensters im Bild mit der Maus kann der entsprechende Bereich vergrößert dargestellt werden. Um die Detailzeichnung auszuschalten drückt man noch einmal auf enable detail.
Menü Line style
Verschiene Einstellung für die Darstellung der Strömungslinien im Linien-Modus
add texture: zeichnet Textur auf die Strömungslinien
add arrow: zeichnet Pfeile auf die Strömungslinien
add tapering: verwendet Tapering-Effekt beim Linienzeichnen
add pressure: Druckinformation auf der Strömungslinie
line color
line width
Menü Algorithm Options
Verschiedene Optionen, die den Ablauf des Algorithmus beeinflussen.
integrator operator: Es kann zwischen Euler-Integrator und Runge-Kutta-Integrator gewählt werden
streamline selection method: Zufallsmethode oder Auswahl der Strömungslinien nahe bei existierenden Strömungslinien
choose start point: Zufallsmethode oder Mittelpunkt von Bildschirm als Startpunkt
vector interpolation: nearest neighbour, bilinear standard (ohne explizite Vektorlängen-Interpolation), binear(+vector length)
delta d: Genauigkeit, in der der Integrator die Streamline berechnet ( sollte größer dSep sein, um korrekte Bilder zu ermöglichen)
separating distance: Dialog zum Einstellen der Distanz zu einer anderen Strömungslinie, an der eine neue Strömungslinie begonnen wird(dSep) und der Distanz, an der die Integration einer Strömungslinie als zu nahe an einer anderen Strömungslinie abgebrochen wird(dTest)
random alg. it-depth: Anzahl der Strömungslinien, nach deren Berechnung der Algorithmus abgebrochen wird(nur Zufallsmethode)
streamline it-depth: Anzahl der Schritte, die eine Strömungslinie maximal integriert wird.
Beispielbilder:
In Beispiel 1 werden die Strömungslinien durch Pfeile und im Hintergrund die Druck-Information farbkodiert dargestellt
Beispiel 2 ist eine Detailansicht mit Druckinformation und sinus-Texturfunktion
Beispiel 3 ist eine Detailansicht von Verwirbelungen rechts von dem die Strömung teilenden Hindernis
Beispiel 4 ist eine Detailansicht der Verwirbelungen an einer Grenze zwischen Druck und Unterdruck
Beispiel 5 ist eine extreme Vergrößerung (9251x) eines Wirbels
Beispiel 6 verwendet Icon-Pfeile und zeigt die Verwirbelungen rechtwinkelig zum Slice mit einer Schwellwert-Darstellung
Beispiel 7 stellt die Strömungslinien als Pfeile und die Druckinformation mit Schwellwert-Zeichnung dar
Beispiel 8 zeigt die Strömungslinien als Icons und die Vektorinformation mit anderen Icons
Beispiel 9 zeigt Verwirbelungen in der Nähe des Hindernisses mit Verwirbelung rechtwinklig zum Slice als color code
Beispiel 10 zeigt den ganzen Fluß um 90 Grad gedreht mit modulo-Textur
Beispiel 12 zeigt schöne Wirbel mit aufgetragener sinus-Textur
Oliver Mattausch, Matrikelnummer 9506124