Sie sind auf Seite 1von 5

Übung 0: Einführung in ParaView und Python

1 Eintragen in das Stud.IP System


Stud.IP ist ein web-basierendes System, mit dem Lehrveranstaltungen inhaltlich und organi-
satorisch unterstützt werden. Im Rahmen der Vorlesung FEM 2 werden hier die Übungsunterlagen
zum Download angeboten, Termine ankündigt und ein Forum bereitgestellt. Der Zugriff erfolgt
über ein Internet-Browser und über die Internetseite der TU Braunschweig.
https://studip.tu-braunschweig.de/ → Stud.IP
Zum Einloggen braucht man eine gültige y-Nummer und Passwort. Um sich für den Kurs FEM 2
zu registrieren, verwendet man die Suchfunktion und sucht nach Finite-Elemente-Methoden 2.

2 Einführung in ParaView
Es soll in diesem Abschnitt zunächst auf das in den Rechnerübungen verwendete Programm-
system eingegangen werden.

2.1 Was ist ParaView ?


ParaView ist ein Open-Source Programm für die Visualisierung von wissenschaftlicher Daten.
Durch die integrierte Pythonschnittstelle lassen sich zusätzlich multidisziplinäre Berechnungen rea-
lisieren. ParaView dient dabei als Bedienoberfläche über dem Visualization ToolKit (Vtk). In
den Rechnerübungen dient ParaView zur Programmierung und Visualisierung von verschiedenen
Aspekten, wie sie bei den finiten Element-Methoden vorkommen und in der Vorlesung behandelt
werden. Interaktives Arbeiten wird durch ein Datenflussmodell und durch eine universelle graphi-
sche Benutzeroberfläche realisiert.

2.2 Was ist ParaView nicht?


ParaView ist kein Fem-System, wie beispielsweise Ansys oder Nastran, welche eine breite indus-
trielle Anwendung finden. In den Rechnerübungen, begleitend zur Vorlesung, sollen die vermittelten
Theorien und Konzepte der Fem programmtechnisch umgesetzt werden ParaView unterstützt dies
durch Visualisierung der Ergebnisse und eine graphische Benutzeroberfläche.

2.3 Konzepte von ParaView


ParaView besteht aus verschiedenen Kernmodulen, wie z.B Python, Vtk und weiteren Erwei-
tungspaketen. Module werden so u.a. in der objektorientierten Skript-Sprache Python geschrieben
und können in speziellen Filtern in ParaView eingebunden werden. Python ist eine für Ingenieure
leicht zu beherrschende Sprache, welche sich durch eine einfache Syntax auszeichnet. Das bereits
angesprochene Datenflussmodell wird durch Vtk realisiert. Mit Vtk lassen sich die Datenflüsse
zwischen den einzelnen Modulen (genauer formuliert werden Input- und Output-Daten miteinander
verknüpft) durch sog. Pipelines visualisieren. Eine Vielzahl von Modulen ist bereits in ParaView
vorhanden. Sie lassen sich grob in zwei Gruppen einteilen: Kernmodule ohne jeglichen Ingenieurbe-
zug und Module, welche Modellierungs- und Analysewerkzeuge enthalten. In die zweite Kategeorie
fällt u.a. die Modulgruppe fem, welche hier in der Rechnerübung von zentraler Bedeutung ist.

2.4 Bedienung von ParaView - ein kleines Beispiel


Das folgende kleine Beispiel soll die Konzepte und Bedienung von ParaView näher beleuchten. Es
wird dargelegt, wie einzelne Module aufgerufen werden und eine Pipeline aufgebaut wird, um ein
einfaches Rechteckgitter darzustellen. ParaView wird dabei während den gesamten Rechnerübun-
gen unter dem Betriebssystem Linux benutzt. In den späteren Übungen wird es allerdings nicht
mehr nötig sein, eine solche Pipeline komplett aufzubauen, da wir sie bereits vorgeben und der
Schwerpunkt der Übungen auf der Abänderung einzelner Module mit Hilfe von Python liegen
wird.

Finite Elemente Methode II 1


2.4.1 Aufgabe: Erstellung und Visualisierung eines Rechteckgitters
a.) Starten von ParaView : Starten Sie eine Konsole (Datei → Im Terminal öffnen) und geben
Sie den Befehl paraview314 ein. Es erscheint das ParaView GUI:

Die für uns interessanten Schaltflächen in der Menu Bar sind Sources und Filter. Sources sind
vordefinierte anpassbare Datensätze. Oft werden für die Visualisierung Output-Daten von an-
deren Programmen als source verwendet. Filter werden auf vorhandene Daten angewendet,
um diese Daten für die Visualisierung zu manipulieren. So kann man aus einem Datensatz
beispielsweise nur Daten anzeigen lassen, die in einer gewünschten Bandbreite liegen. Dafür
würde man einen Threshold-Filter einsetzen. Im Pipeline Browser wird die aufgebaute Pipe-
line aus Quellen und Filtern dargestellt. Der Object Inspector gibt im Reiter Properties die
Eigenschaften der selektierten Quellen oder Filter wieder. Diese Eigenschaften können nach
Wunsch verändert werden. Unter dem Reiter Display lassen sich die Einstellungen des Map-
pers - also der Oberflächengestaltung - des selektierten Objekts festlegen. Letztlich enthält
der Reiter Information einen Überblick über den Objekttyp und die dazugehörigen Werte.
b.) Generierung eines Gitters: Wählen Sie aus Menu Bar → Sources die Plane aus. Im Object
Inspector muss Apply geklickt werden, um die Quelle zu erzeugen. Die Visualisierung des
Gitters erfolgt automatisch im 3D View. Die Ansicht kann frei rotiert und gezoomt werden.

c.) Ändern der Elementanzahl: In der Toolbar findet sich ein Drop-Down-Menü welches Sur-
face ausgewählt hat. Wählen Sie hier Surface with Edges aus. Unter Properties könne Sie
jetzt die X- und Y-Resolution auf 10 stellen. Sie sehen, dass sich zwar nicht die Abmes-
sungen der Plane ändern, diese jedoch jetzt anstatt aus einer aus 100 Zellen besteht. Das
Visualisierungfenster updatet automatisch die Darstellung.

d.) Einfügen eines Glyph-Filters: Wählen Sie aus Menu Bar → Filters → Common den Fil-
ter Glyph aus. Klicken Sie auf Apply. Der Filter erstellt an jedem Gitterpunkt einen Pfeil
in Normalenrichtung. Das Visualisierungfenster updatet automatisch die Darstellung. Unter
Properties kann der Glyph Type angepasst werden. Wählen Sie Sphere. Passen Sie zusätzlich
den Radius auf einen Wert von 0.1 an. Klicken Sie auf Apply.

Finite Elemente Methode II 2


3 Die Programmiersprache Python
Python ist eine leicht zu erlernende, objektorientierte Programmier(-Skript-)sprache und wird
daher in den Rechnerübungen eingesetzt. Skriptsprache bedeutet hier, dass der Programmcode
in eine Datei geschrieben werden kann und sofort vom Python-Interpreter ausgeführt wird. Die
Quelldatei muss also nicht kompiliert werden, wie das z.B. bei C++ der Fall ist. Im Folgenden sollen
nur die für die Übungen wichtigsten Aspekte der Sprache in eine Art Kurzreferenz zusammengefasst
werden. Für ein vertiefendes Studium wird auf www.python.org und diverse vorhandene Lehrbücher
verwiesen.

1. Datentypen:
• Allgemeines:
In Python ist es nicht notwendig Variablen mit bestimmten Datentypen zu deklarie-
ren, stattdessen wird der Datentyp implizit festgelegt. Kommentare werden durch #
eingeleitet.
• Integer: i=2 #ganze Zahl
• Float: f=0.5 #Gleitpunktzahl
• Bool: b=True #Wahrheitswert
• String: s=’Guten Tag’ oder s="Guten Tag" #Zeichenkette
• Liste: l=[2, 3.3, "d", "fem2"] #veränderbar
• Tupel: t=(1.2, "ifl", 5) #unveränderbar
• Dictionary: d={1:"wert", "a":6, 1.2:122 } #Zuordnung Schlüssel:Wert
• Listen, Tupels, Dictionaries können beliebig geschachtelt werden, z.B.:
beisp = {1:[1.1,3,3]; "z":{4.3:5}, 3:7}
• Zugriff auf einzelne Elemente eines Strings, einer Liste, eines Tupel erfolgt über den
Klammeroperator:
s[0]; l[2]; t[1]

Finite Elemente Methode II 3


• Beim Dictionary erfolgt der Zugriff über den Schlüssel:
d["a"]; d[1.2]; d[1]
2. Grundelemente:
• Operatoren: -, +, *, /, %
• Potenzen: i=2**3 #2 hoch 3
• Slicing:
s="Finite Elemente"
print s[7] #Ausgabe: "E"
print s[7:] #Ausgabe: "Elemente"
print s[7:10] #Ausgabe: "Ele"
print s[-1] #Ausgabe: "e"
print s[-5:] #Ausgabe: "mente"
Slicing funktioniert auch bei Listen und Tupel.
3. Kontrollstrukturen:
Hinweis: Allgemein muss man in Python den Programmcode einrücken.
• Verzweigung:
if i>5:
print "i groesser 5"
else:
print "i kleiner gleich 5"

• for-Schleife: Diese Schleife läuft über Listen oder Tupels:


for x in [1,2,3,4]:
print x

Mit der Funktion range(n) kann eine Liste [0,...,n] erzeugt werden:
for x in range(6):
print x

• while-Schleife: Diese Schleife läuft solange eine Bedingung erfüllt ist:


while x>5:
print x
i += 1

4. Funktionen:
Funktionen werden durch das Schlüsselwort def gefolgt vom Funktionsnamen und der Para-
meterliste definiert:

def plus(a,b):
return a+b

print plus(6,4) #Ausgabe: 10

5. Klassen:
• Klassen sind Baupläne für Datenstrukturen, die aus Methoden und Attributen bestehen.
• Objekte sind Instanzen von Klassen.
• Methoden sind Funktionen eines Objekts.

Finite Elemente Methode II 4


• Attribute sind die Daten eines Objekts.
• Der Zugriff auf Methoden und Attribute erfolgt über den Punkt-Operator.
Z.B.: Eine Liste l=[8,9,7] ist eigentlich ein Objekt der Klasse Liste:
l=[8,9,7]
l.append(5)
print l[3] #Ausgabe: 5
l.sort()
print l #Ausgabe: [5,7,8,9]

• Eigene Klasse werden durch das Schlüsselwort class gefolgt vom Klassennamen defi-
niert.
6. Numerik-Paket

• Im Rahmen der Übung wird das Numerik-Paket fem2 benutzt, welches auf dem Standard-
Numeric-Paket aufbaut.
• Um die Funktionen, Klassen und Methoden zu benutzen, wird das Paket mittels import fem2
eingebunden.
• Mit dem Paket können so Matrizen und Vektoren als Objekte instanziiert und einfache
Berechnungen durchgeführt werden:
#import fem2
m1 = fem2.Identity(3) #erzeugt eine 3x3 Einheitsmatrix
m2 = fem2.Zeros((3,3)) #erzeugt eine 3x3 Null-Matrix
m3 = fem2.FMatrix( [[1,2],[3,4]] ) #erzeugt eine 2x2 Matrix von Listen
v1 = fem3.FVector([1,2,3]) #erzeugt einen Vektor aus einer Liste
print m3**-1 #berechnet die Inverse von m3
print m3.I #berechnet die Inverse von m3
print m3.det() #berechnet die Determinante von m3
print m3.T #erzeugt die Transponierte zu m3
print m3.I * m3 #fuehrt die Matrix-Matrix-Multiplikation durch
print m1*v1 #fuehrt die Matrix-Vector-Multiplikation durch

Finite Elemente Methode II 5

Das könnte Ihnen auch gefallen