Visualisierung Übung
WS 2001
Alois Dornhofer
Kontakt:e9626201@stud4.tuwien.ac.at



Flow Visualization


Einleitung

Das zweite Beispiel in der LU bestand darin, eine Strömungsvisualisierung zu machen. Der zur Verfügung gestellte Datensatz bestand aus zwei Teilen. Nähere Informationen dazu sowie zur Verwendung desselben sind hier zu finden.


Aufgabenstellung

Das Visualisierungsproblem wurde in 3 Teilen gelöst. Zu jedem Teil wird hier der Lösungsansatz erklärt. Aus den beiden Eingabedatensätzen wurden Positionsdaten sowie Strömungsdaten, Druck- und Verwirbelungsdaten extrahiert und daraus wurde die Strömung in x und y Richtung sowie die Strömungsgeschwindigkeit berechnet. Diese Daten lagen auf einem nicht-äquidistant gesampelten Grid, daher mussten sie für die Ausgabe auf ein reguläres Grid gerechnet werden. Dies erfolgte mittels bilinearer Interpolation.


Hedgehog Plot

Für diesen Plot wurden die Strömungsdaten in x- und y-Richtung verwendet und je nach GUI-Auswahl ist es möglich, die Länge der Linien mit der Strömungsgeschwindigkeit zu skalieren oder fix zu lassen. Die Linien selbst sind so implementiert, dass der Startpunkt rot eingefärbt wird und der Endpunkt weiss und dazwischen ein kontinuierlicher Übergang erfolgt.


Streamlines

Für die Streamlines wurden 3 numerische Integrationsmethoden implementiert: Euler-Integration, Runge-Kutta 2. Ordnung sowie Runge-Kutta 4. Ordnung. Eine einzelne Streamline wird folgendermassen berechnet: Es wird ein gültiger Seedpoint berechnet, der als Startpunkt der Integration (mit einer der 3 Methoden - je nach GUI-Auswahl) dient, ausgewählt. Davon ausgehend wird nun solange in positive Richtung ("vorwärts") integriert, bis der zulässige Bereich verlassen wird. Danach wird der Seedpoint ein zweites Mal als Startpunkt gewählt und nun wird aber in negative Richtung ("rückwärts") integriert, und zwar wieder, bis der zulässige Bereich verlassen wird. Die resultierenden Punkte müssen nun natürlich auch entsprechend in anderer Reihenfolge in das Streamline-Objekt eingefügt werden.


Evenly Spaced Streamlines

Hier wurde nach dem Paper "Creating Evenly-Spaced Streamlines of Arbitrary Density" von Bruno Jobard und Wilfrid Lefer vorgegangen. Hier geht man folgendermassen vor: Zuerst wird (wie vorher) ein Seedpoint gewählt, und von dem ausgehend vorwärts und rückwärts integriert. Daraus resultiert die erste Streamline. Nun stellt man sich ein "superimposed grid" vor, das über dem Koordinatensystem liegt und Abstände "dsep" hat. dsep ist die "separating distance" die ein neu gewählter Seedpoint von allen anderen Streamlines haben muss! Da man für die Bestimmung des neuen Seedpoints jedoch alle Punkte von allen Streamlines mit dem neuen möglichen Seedpoint checken muss, bietet sich so ein übergrosses grid als Performancesteigerung an. Sobald eine Streamline berechnet wurde, werden ihre Punkte jeweils einer Cell zugeordnet, in der sich der jeweilige Punkt befindet. Somit sind in den Cells alle Punkte von Streamlines gespeichert, die diese Cell durchqueren. Damit kann aber nun der Distance-Check mit dem neuen möglichen Seedpoint erheblich reduziert werden, da der neue Seedpoint nur mehr mit allen möglichen Punkten der aktuellen Cell sowie der maximal acht umliegenden Cells vollzogen werden. Ein zweiter Parameterwert wird benötigt um zu checken, ob der aktuell berechnete Punkt einer Streamline gültig ist. Dieser Parameterwert dtest wird in Prozent des Wertes dsep angegeben. Je kleiner dtest ist, desto "zusammenhängender" sind die resultierenden Streamlines, je grösser dtest ist, desto kürzer und "unzusammenhängender" werden die Streamlines. Ist nun eine Streamline fertig berechnet worden, werden je zwei Punkte der Streamline hergenommen und es werden die möglichen Seedpoints im Abstand dsep berechnet. Hier wird das Prinzip veranschaulicht. Die beiden blauen Punkte repräsentieren die beiden Punkte der Streamline, die beiden roten sind die berechneten möglichen Seedpoints (im Abstand dsep vom unteren blauen Punkt). Diese möglichen Seedpoints werden in eine Queue gegeben, und sobald eine Streamline fertig ist, wird in dieser Queue der nächste Punkte hergenommen und untersucht, ob er von allen anderen Streamlinepunkten dsep entfernt liegt. Wenn ja, wird er ein neuer Seedpoint, andernfalls wird der nächste Punkt in der Queue genommen und untersucht. Dies passiert solange, bis keine möglichen Seedpoints mehr vorhanden sind. Dann terminiert der Algorithmus.


User Interface



Das User Interface bietet die Möglichkeit, die Parameter dsep und dtest zu verändern, sowie den Hintergrund festzulegen, die Integrationsmethode zu wählen, zwischen Darstellung von Streamlines und Hedgehog Plot umzustellen und festzulegen, wie lang die Linien im Hedgehog Plot sein sollen.

dsep legt die Anzahl der Pixel fest, die ein neuer Seedpoint von allen bereits bestehenden Streamlines entfernt sein muss.

dtest legt die Grösse in Abhängigkeit von dsep in Prozent fest. Dieser Parameter entscheidet, wie nah sich Streamlines kommen dürfen. Durch Wahl eines niedrigen Prozentsatzes erhält man eine stark zusammenhängende Visualisierung, durch Wahl eines hohen Prozentsatzes erhält man eine stark unzusammenhängende Darstellung.

Bg: Background. Zur Auswahl stehen Strömungsgeschwindigkeit (Vel), Druck (Pres) und Verwirbelung (Vort).

Meth Integration Method. Zur Auswahl stehen Euler-Integration (Euler), Runge-Kutta 2. Ordnung (RK2) und Runge-Kutta 4. Ordnung (RK4).

Streamline vs. Hedgehog Sollen Evenly-Spaced Streamlines oder ein Hedgehog Plot erstellt werden.

Vel Der zu Hedgehog gehörige Parameter legt fest, ob die Liniensegmente mit der Strömungsgeschwindigkeit (Vel) skaliert werden sollen.

Draw Die festgelegten Parameter werden übernommen und auf die Visualisierung angewendet.


Beispielbilder

... sind hier zu sehen.


Klassendokumentation

... ist hier zu finden.


Download

FlowViz.exe
c_block.gri
c_block.00000.dat
FlowViz.tar.gz (kontaktiere die Übungsleitung)


last updated: 2002-01-22, 20:00