Praktikum "Numerische Strömungsmechanik und Visualisierung WS 1999/2000"

Praktikum "Numerische Strömungsmechanik und Visualisierung"

WS 1999/2000

Prof. Dr. D. Kröner, Thomas Geßner

GRAPE links
GRAPE Kurzeinführung
GRAPE Dokumentation
(im Sun-Pool auch unter /volume/tmp/kurswd0/ als komprimierte tar-Datei (grape_doc.tgz) und auf Diskettengröße gesplitted (splitted_grape_doc1, splitted_grape_doc2) zu finden)
Beispiele: Bilder (1, 2, 3) und Videos
GRAPE Demoprogramme aus dem Visualisierungpraktikum SS 1999 von Rolf-Thomas Happe
Hilfreiche Dateien etc.
(Dateien mit ~/... können bei Bedarf ins Home-Verzeichnis kopiert werden)
~/.cshrc für Sun-Pool
der Pfad zur GRAPE-Bibliothek im Sun-Pool ist /home/grape/SYSTEM/install/sol7_ogl/ (Environment-Variable LD_LIBRARY_PATH)
~/.graperc zur schnelleren Bedienung von GRAPE via Hotkeys
als Ergänzung zu den eigenen Einträgen in ~/.Xdefaults zur automatischen Positionierung des GRAPE-Fenster
allgemeines Makefile für GRAPE-Programme im Sun-Pool
(wird ständig um neue Programme und Aufgaben erweitert)
Das Makefile enthält Beipiele für Programme die aus einer oder aus mehren Sourcen bestehen. Aufgerufen wird es durch 'make programmname', wobei die Namen der Beispiel- und Demo-Programme schon eingetragen sind.
Beispiel- und Demo-Programme etc.
öffen des GRAPE-GUI mit einer leeren Szene
automatische Triangulierung eines definierten Rechteckes mit der Methode "explicit"
(ggf. als Fläche mit Sinus-Funktion)
einige sinnvolle und weniger sinnvolle Beispiele für Fe2d-Funktionen
Einbau und Initialisierung eigener Bedienelemente innerhalb des GRAPE-Control-Fensters, wie Button, Ruler, usw., mit Hilfe der new_item-Funktion
Aufgaben und Programmgerüste
generiere Triangulierung eines Parallelogramms von Hand mit der Methode "list-alloc" oder den Grape Memory-Routinen
( eine Lösung dazu)
schreibe eine Programm, daß eine Triangulierung die durch diese ACSII-Format beschrieben in GRAPE darstellt.
Dazu zwei Beispiele ( 1, 2; im Sun-Pool auch unter /volume/tmp/kurswd0/ASCII_DATA/ zu linken) zum testen.
modifiziere das Programm "triang2d_auto" (automatische Triangulierung eines Rechteckes, wie oben) so, daß ein Fe2d-Objekt mit einer der angegebenen Funktion fz entsprechenden Fe2d-Funktion generiert wird. Dabei sollte die Fe2d-Funktion einmal stückweise konstante und einmal stückweise lineare Funktionen verwenden.
( eine Lösung dazu in der entweder die stückweise konstante oder die stückweise lineare Funktion verwendet wird)
erweitere das Programm zum Einlesen einer Triangulierung im obigen ACSII-Format so, daß ein Fe2d-Objekt generiert wird und zusätzlich ein dem Gitter entsprechendes Daten-File mit folgendem ACSII-Format eingelesen wird und die Daten im Pointer data der Fe2d-Struktur abgelegt werden.
Dazu zwei Beispiele - jeweils Gitter und Daten mit gzip (entpacken mit gunzip) komprimiert:
Strömung im Kanal mit Ecke (Forward Facing Step): Gitter mit Dichte
Strömung im Kanal mit Ecke (Forward Facing Step): Gitter mit Geschwindigkeit
Umströmung zweier versetzer Zylinder: Gitter mit Geschwindigkeitsfeld
(im Sun-Pool auch unter /volume/tmp/kurswd0/ASCII_DATA/ zu linken)
modifiziere obiges Programm so, daß die Daten nicht in den Fe2d Pointer data sondern in ein eigenes Datenfeld eingelesen werden. Die um dieses Datenfeld (und ggf. weitere Einträge) erweitere Datenstruktur soll als Unterklasse von Fe2d sein.
Für diese Unterklasse sollen die Methoden "list-alloc" und "list-free" geschrieben werden.
Getest werden kann das Programm dann an den oben genannten Beispielen.
(eine Lösung aus drei C-Dateien ( 1, 2, 3) und einem Headerfile; alle Dateien zusammen als tar-Datei)
generiere (mittels der Methode "explicit") eine Sequenz von Triang2d-Ojekten mit den Funktionen fx,fy,fz auf [-0.5,0.5]x[-0.4,0.4] im Programmgerüst (time_demo2.c). Diese sollen als TimeScene im Interval time=[0.0,2.0] (21 Steps; in jedem soll die Variable shift um 0.1 erhöht werden) betrachtet werden.
(eine Lösung dazu)
schreibe ein Programm das innerhalb einer Display-Methode (auf welcher Klasse ihr wollt) einen Kreis (mit Hilfe von g_draw_circle) zeichnet. Die Koordinaten des Mittelpunktes, der Radius, sowie die Diskretisierung des Kreises sollen dabei als Parameter über Ruler gesteuert werden.
Über 3 bis 4 Ruler soll ein Flügelprofil interaktiv modifiziert werden. Durck drücken eines Buttons soll es möglich sein ein vorgegebenes Gebiet [0,1]x[0.1] mit diesem Profil (das (0,0) enthält) mit Hilfe von triangle (s.u.) zu triangulieren.
Ein Programmgerüst (als tar-Datei; zum Übesetzen obiges Standardmakefiles für foil aufrufen) dazu von Rolf-Thomas Happe indem die generierte Triangulierung anschließend mit GRAPE angezeigt wird.
INFO: Auf dem Gitter soll numerisch der Auftrieb um das Flügelprofil bestimmt werden.
Gittergenerierung
als Grundlage für die Verwendung des Projektes "grid-edit" zur Gittergenerierung/-modifizierung mit GRAPE dient z.B. das Programm adapt2d_auto.c ( einfache Modifikation des Programms zur automatischen Triangulierung eines Rechteckes)
ein weiterer kompletter Gittergenerator für Triangulierungen in zwei Raumdimensionen ist triangle von J.R. Shewchuk.
Er basiert auf Delaunay (Voronoi) Techniken und ist sowohl als Kommandozeilenbefehl als auch innerhalb von C-Programmen verwendbar. Das komplette Paket als komprimierte tar-Datei inklusive Dokumentation und Programm showme zur Darstellung ( Dokumentation).
Dazu ein nicht interaktives Interface und ein Konverter zu GRAPE von Rolf-Thomas Happe aus dem Visualisierungspraktikum SS 1999.
Ein auf SunOS übersetzte Version von triangle inclusive der Bibliothek triangle.o finden sich unter /volume/tmp/kurswd0/TRIANGLE/ im Sun-Pool.

last updated: 17.01.2000 by Thomas Geßner ( gessner@mathematik.uni-freiburg.de).