Sie sind hier: AMDiS > Gebietsbeschreibung mit macro-Format ...

Gebietsbeschreibung mit macro-Format von AMDiS

Dienstag 25. Januar 2011 von
Simon Praetorius
Eine Beschreibung des Gebietes, in der man eine Differentialgleichung lösen möchte, wird in AMDiS durch ein eigenes ".macro"-Dateiformat umgesetzt. Darin wird neben der Beschreibung der Zerlegung des Gebiets in Elemente auch die Dimension des Raumes und der Daten festgelegt, d.h. rechnet man auf einem 2d Gebiet in einer 2d Welt, oder auf der Oberfläche eines 3 dimensionalen Objekts (dies ist eine 2d Manigfaltigkeit) in einer 3d Welt, oder nur auf einer Linie (1d) die quer durch den 3d Raum geht, oder ... Ein Beispiel für das 2d Quadrat [0,1]2 im 2d Raum sieht folgendermaßen aus:
Einheitsquadrat zerlegt in 4 Dreiecke, mit Nummerierung der Elemente und Eckpunkte.Einheitsquadrat zerlegt in 4 Dreiecke, mit Nummerierung der Elemente und Eckpunkte.

DIM: 2
DIM_OF_WORLD: 2

number of elements: 4
number of vertices: 5

vertex coordinates:
0.0 0.0
1.0 0.0
1.0 1.0
0.0 1.0
0.5 0.5

element vertices:
0 1 4
1 2 4
2 3 4
3 0 4

element boundaries:
0 0 1
0 0 1
0 0 1
0 0 1

element neighbours:
1 3 -1
2 0 -1
3 1 -1
0 2 -1
Diese Gebietsbeschreibung findet man in den Demos von AMDiS unter macro/macro.stand.2d.

Eine kurze Beschreibung zum Aufbau der Datei


Zuerst wird definiert, welche Dimension das Gebiet und welche Dimension der Raum hat, in dem sich das Gebiet befindet. "DIM" steht dabei für die Dimension des Gebietes. Beschreibt man das Gebiet durch Intervalle, dann ist DIM=1, durch Dreiecke, dann ist DIM=2, wird es durch Tetraeder beschreiben, dann ist DIM=3. "DIM_OF_WORLD" bezeichnet die Dimension des Raums, in dem sich das Gebiet befindet. Das entspricht der Dimension des Koordinatenvektors (oder, wie es in AMDiS heißt, der Dimension des WorldVectors).
Nach der Angabe in wie viele Elemente (Dreiecke) das Gebiet zerlegt wird, und wie viele Punkte (vertices) zur Beschreibung notwendig sind, wird die Zerlegung des Gebiets definiert. Zuerst die Koordinaten der Punkte (vertex coordinates). Jeder Zeile entspricht einem Knoten des Gitters und jeder dieser Knoten bekommt eine Nummer, in der Reihenfolge, wie sie aufgeschrieben werden, beginnend bei 0 und dann aufsteigend +1.
Im Abschnitt "element vertices" werden die Dreiecke dann aus den nummerierten Punkten zusammen gesetzt, in dem die Nummern der Punkte, die das Dreieck definieren, gegen den Uhrzeigersinn aufgelistet werden. Das Dreieck mit der Nummer 0 besteht aus den Punkten mit den Nummern 0, 1 und 4, also den Koordinaten (0,0), (1,0) und (0.5,0.5).
Nun fehlen noch die Angaben zum Rand des Gebietes und zu Nachbarschaftsbeziehungen. Letztere können auch weggelassen werden, da sie sich aus den restlichen Daten ergeben. Den Rand des Gebietes (der Dreiecke) muss man aber festlegen (unter "element boundaries"), um später an den einzelnen Rändern Randbedingungen definieren zu können. Deswegen wird jedem Randstück eine Nummer gegeben (in dem obigen Fall die überall die Nummer 1). Die Definition der Ränder für die einzelnen Elemente wird in der selben Reihenfolge gemacht, wie die Definition der Elemente. Die drei Zahlen definieren die Randbedingungs-Nummer für die drei Kanten des Dreiecks. Dabei ist die erste Kante die, die dem ersten Knoten des Dreiecks gegenüber liegt. Betrachten wir z.B. das 2. Element (Zählung beginnt bei 0) mit den Knotennummern 2, 3 und 4, dann ist die erste Kante diejenige, die dem Knoten mit der Nummer 2 gegenüber liegt, also die Kante [3,4]. Diese liegt im Innern des Dreiecks, bekommt also keine Randnummer (das entspricht dew Wert 0). Der dritten Kante, gegenüber von Knoten 4 (entspricht [2,3]), wird eine Nummer 1 zugewiesen, da sie den Rand des Gebietes beschreibt.
Die Einträge in "element neighbours" werden ähnlich gefunden, wie die Randnummern, indem die Nummer des Elements eingetragen wird, das an des betrachtete Element in die Kante angrenzt. Z.B. grenzt an das 2. Element an Kante 1 (Zählung auch hier bei 0 beginnend, gegenüber von Knoten 3 = [2,4]) das Element mit der Nummer 1 an. Eine -1 wird gesetzt, wenn an die Kante kein Element angrenzt, also wenn die Kante eine Randkante ist.

GMsh Oberflächengitter von einem BauteilGMsh Oberflächengitter von einem Bauteil
Für einfache Gebiete mag solch eine Beschreibung noch von Hand erzeugt werden, kompliziertere Geometrien, insbesondere Rundungen, Oberflächengitter von irgendwelchen dreidimensionalen Objekten, oder feingliedrige Zerlegungen, werden natürlich nicht mehr selber aufgeschrieben, sondern es werden Programme zur Erzeugung der Datei verwendet. Mit dem AMDiS-Tool meshconv kann aus einer ganzen Reihe von Dateiformaten das AMDiS-Format erzeugt werden. Z.B. kann man mit dem Tool GMsh in einer graphischen Oberfläche ein Gitter erzeugen und die geschriebene mesh-Datei dann mit meshconv in eine .macro-Datei überführen.

Auch aus impliziten Beschreibungen einer Oberfläche lässt sich ein Gitter generieren. Wird z.B. eine Kugeloberfläche beschrieben durch x2+y2+z2=R2, kann man daraus ein Gitter auf der Oberfläche der Kugel erzeugen, also ein 2d-Gitter in einer 3d Welt. meshconv bietet noch einige weitere Methoden an, um Gitter zu erzeugen. Beispielsweise den Legomesher. Damit wird das Gebiet durch das Zusammensetzen aus kleinen Rechtecken (Quadern) beschrieben, wie Zusammenbauen einer Fläche durch Legosteine.
Besucher: 4519 | Permalink | Kategorie: AMDiS
Tags: , ,
Kommentar hinzufügen