A Simple Mesh Generator in MATLAB

Ähnliche Dokumente
High Performance Computing Blatt 7

WS 2014/15 FINITE-ELEMENT-METHODE JUN.-PROF. D. JUHRE

Algorithmische Geometrie: Delaunay Triangulierung (Teil 2)

) (1 BE) 1 2 ln 2. und somit

Nichtrealistische Darstellung von Gebirgen mit OpenGL

Algorithmische Geometrie: Delaunay Triangulierung (Teil 1)

Abbildungsverzeichnis

Abitur 2013 Mathematik Geometrie V

Einleitung 2. 1 Koordinatensysteme 2. 2 Lineare Abbildungen 4. 3 Literaturverzeichnis 7

WS 2014/15 FINITE-ELEMENT-METHODE JUN.-PROF. D. JUHRE

Analyse eines zweistufigen, regionalen Clusteralgorithmus am Beispiel der Verbundenen Wohngebäudeversicherung

4. Der Berechnungsprozess

Temperaturverteilung auf einer homogenen Platte

5. Gitter, Gradienten, Interpolation Gitter. (Rezk-Salama, o.j.)

Dankert/Dankert: Technische Mechanik, 5. Auflage Lösungen zu den Aufgaben, Teil 5 (Kapitel 18)

Mathematische Experimente und Produktive Übungen

Die Finite-Elemente-Methode. Anwendungsbereiche Soft- und Hardwarevoraussetzungen Programmierbarkeit

Abitur 2011 G9 Abitur Mathematik GK Geometrie VI

Elemente der SchulgeometrieGrundschule. Aufgabenblatt 8 Körper und Kippen

Lernmaterialblatt Mathematik. Vektorrechnung eine Einführung. Anwendung Mathematik I. Einleitung:

Abitur 2016 Mathematik Geometrie V

Raimond Dallmann. Baustatik 1. Berechnung statisch bestimmter Tragwerke. 5., aktualisierte Auflage

Aufwand und Komplexität Vorlesung vom Komplexität und Effizienz

Rechnen mit Vektoren. 1. Vektoren im Koordinatensystem Freie Vektoren in der Ebene

P 0 f (0) schneidet die Gerade mit der Gleichung x Ermitteln Sie die Koordinaten von S.

3. Praktische Anwendung

Featurebasierte 3D Modellierung

Abitur 2011 G8 Musterabitur Mathematik Geometrie VI

17. Berliner Tag der Mathematik 2012 Wettbewerb Stufe III: Klassen 11 bis 12/13

Kollisionserkennung

Gleichgewicht am Punkt

Abitur 2017 Mathematik Geometrie VI

4. Segmentierung von Objekten Video - Inhaltsanalyse

Exemplar für Prüfer/innen

Triangulierung von Schnittflächen bei der Verschneidung räumlicher Geometrie

Analytische Geometrie II

KARL-FRANZENS-UNIVERSITÄT GRAZ. Seminar aus Reiner Mathematik. Die Museumswächter. Krupic Mustafa Wintersemester 2013/14

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

m2l 60.odt Klausur 12/I B 1. Gegeben seien zwei Geraden. Wie gehen Sie vor, um über deren Lagebeziehung eine Aussage zu treffen.

SYSTEMANALYSE 2 Kapitel 7: Zeitdiskrete Modelle

Inhalt. Mathematik für Chemiker II Lineare Algebra. Vorlesung im Sommersemester Kurt Frischmuth. Rostock, April Juli 2015

Ermitteln Sie die Koordinaten des Schnittpunktes dieser beiden Geraden und erklären Sie Ihre Vorgehensweise!

3. Analyse der Kamerabewegung Video - Inhaltsanalyse

2. Die Steifigkeitsmatrix

Quadtrees und Meshing

Geometrische Objekte im 3-dimensionalen affinen Raum oder,... wie nützlich ist ein zugehöriger Vektorraum der Verschiebungen

Was können die Studienanfänger wirklich?

Das Modellieren von 2D- und 3D-Objekten

& sind die Vektorkomponenten von und sind die Vektorkoordinaten von. A x. a) Der Betrag eines Vektors

Aufgabe 1 Erstelle mit Hilfe von GEOGEBRA ein dynamisches Geometrie-Programm, das die Mittelsenkrechte

Systemanalyse und Modellbildung

Meißnersche Körper: Konstruktion und 3D-Druck

Modellieren in der Angewandten Geologie II. Sebastian Bauer

Bildsegmentierung mit Snakes und aktiven Konturen

Parallele Algorithmen in der Bildverarbeitung

D-INFK Lineare Algebra HS 2017 Özlem Imamoglu Olga Sorkine-Hornung. Serie 11

Einführung in die linearen Funktionen. Autor: Benedikt Menne

1.1. Geradengleichung aus Steigung und y-achsenabschnitt

Quadtrees und Meshing

Bayern Aufgabe 1. Abitur Mathematik: Musterlösung. V = 1 G h, wobei G die Fläche des quadratischen Bodens und h die Höhe V = = 384 [VE]

Seminar. Algorithmische Geometrie

Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt

Abitur 2010 Mathematik LK Geometrie V

TECHNISCHE UNIVERSITÄT MÜNCHEN Zentrum Mathematik

Vektorgeometrie: Grundlagen Armin P. Barth -LERNZENTRUM, ETH ZÜRICH. Skript. Vektorgeometrie: Grundlagen

1 Vektorrechnung als Teil der Linearen Algebra - Einleitung

Algorithmische Geometrie

Lineares Gleichungssystem - Vertiefung

Geometrische Algorithmen Einige einfache Definitionen: Ist ein Punkt in einem Polygon? Punkt-in-Polygon-Problem. Das Punkt-in-Polygon-Problem

Übungsaufgabe Numerische Lösung DGL

6. Texterkennung in Videos Videoanalyse

Der Satz von Pick. Alexandra Zimmer

Darstellungsarten für 3D-Körper. Boundary Representation (BRep):

Theoretische Grundlagen der Informatik

Mathematik. Oktober 2015 AHS. Kompensationsprüfung Angabe für Kandidatinnen/Kandidaten

Grundlagen. [Vektorgeometrie] Armin P. Barth

Vorbemerkungen. Die Programmieroberfläche des ClassPad

Grundlagen zur Delaunay-Triangulierung und zur konvexen Hülle. zum Begriff des Voronoi-Diagramms (vgl. auch Vorlesung "Algorithmische Geometrie"):

Arbeitsblatt Mathematik 2 (Vektoren)

Abiturprüfung Mathematik 2007 (Baden-Württemberg) Berufliche Gymnasien ohne TG Analysis, Aufgabe 1

Darstellung dreidimensionaler Figuren in der Ebene. Schrägbild

Finite Elemente Modellierung

Dankert/Dankert: Technische Mechanik, 5. Auflage Lösungen zu den Aufgaben, Teil 4 (Kapitel 15-17)

2 Vektoren als Pfeile

Flächeninhalt, Volumen und Integral

Serie 8. D-BAUG Analysis II FS 2015 Dr. Meike Akveld. 1. Berechnen Sie für das Vektorfeld (siehe Abbildung 1) Abbildung 1: Aufgabe 1

Gymnasium Oberwil / Maturitätsprüfung Mathematik

Dynamische Geometrie

Transkript:

A Simple Mesh Generator in MATLAB Mariya Statnikova 10. April 2013 Einleitung Heutzutage gibt es eine Vielzahl von kommerzieller Software zum Erstellen einer Vernetzung eines Körpers. Diese unterstützen den Ingenieur in der frühen Entwicklungsphase und liefern in der Regel zuverlässige Ergebnisse. Allerdings stellen diese Programme eine sogenannte black- box dar. Der Entwickler kann die Berechnungsprozesse nicht kontrollieren oder beeinflussen. Im Jahr 2012 hat Herr Assistent Prof. Per- Olof Persson zusammen mit Herrn Prof. Gilbert Strang am Institut der Mathematik in MIT 1 einen Gittergenerator DistMesh in MATLAB entwickelt. Dieser MATLAB- Algorithmus schafft Transparenz bei der Berechnung einer Vernetzung. Mittels DistMesh lässt sich ein Körper mit Dreiecken oder Tetraedern vernetzen. Der Algorithmus besteht aus wenigen Dutzend Zeilen und kann vom Entwickler verändert oder ergänzt werden. Dabei vereinigt die Berechnung der erforderlichen Knotenverschiebung mit der Delaunay- Triangulierung. Die theoretisch auftretenden Stabkräfte verschieben die Gitterpunkte und die Delaunay- Triangulierung passt dementsprechend die Vernetzung an. In den folgenden Kapiteln sind die einzelnen Schritte des Algorithmus erklärt und anhand ausgewählter Beispiele demonstriert. Algorithmus In diesem Kapitel wird der DistMesh - Algorithmus anhand einer zweidimensionalen Vernetzung erklärt. Gitterpunkte sind paarweise durch Stäbe verbunden und bilden somit eine Triangulierung. Für jeden Stab ist eine Kraft- Abstandsfunktion!(!,!! ) definiert. Dabei beschreibt! die aktuelle Stablänge und!! die nicht verformte Anfangslänge des Stabes. Auf jedem Randknoten ist eine Reaktionskraft normal zu dem Rand definiert. Diese Kraft ist groß genug gewählt, um die Bewegung der Randknoten zu verhindern. Mittels Lösen des statischen Kräftegleichgewichts dieses Systems lassen sich die Positionen der Vernetzungspunkte ermitteln. Die Längen der Stäbe beschreibt man mit der relativen Größe h(!, ). Falls die alle Stäbe die gleiche Länge über die gesamte Geometrie nachweisen, also h!, = 1, kann man von einer regulären Triangulierungsvernetzung ausgehen. Die x- und y- Koordinaten aller N Vernetzungspunkte sind in einer! 2!- Matrix zusammengefasst. Der Kraftvektor!(!) beinhaltet horizontale und vertikale Kraftkomponenten an jedem Vernetzungspunkt und ist wie folgt definiert:!! =!!"#,! (!)!!"#,! (!) +!!"#,! (!)!!"#,! (!) 1 Massachusetts Institut of Technology, Cambridge 1

Im Algorithmus ist die Struktur der Vernetzung durch die Delaunay- Triangulierung vorgegeben. Dieses Verfahren erstellt aus einer Punktmenge ein Dreiecksnetz. Der Delaunay- Algorithmus erstellt, anhand der vorgegebenen Knoten, nichtüberlappende Dreieckselemente, sodass jede Kante maximal zu zwei Elementen zugeordnet werden kann. Dabei darf die gedachte Kreisfläche durch die Dreieckspunkte keine weiteren Punkte beinhalten. Dadurch weisen die Vernetzungsdreiecke möglichst große Innenwinkel auf. 2 Durch Knotenverschiebungen kann die Qualität der Triangulierung gemindert werden. Eine erneute Ausführung des Delaunay- Algorithmus wird demnach erforderlich, um eine optimierte Triangulierung wiederherstellen zu können. Somit ist der Kraftvektor!(!) keine kontinuierliche Funktion vom Ortsvektor!. Um den Gleichgewichtszustand finden zu können, muss das System!(!) = 0 gelöst werden. Wegen der Unstetigkeit des Kraftvektors und den externen Reaktionskräften auf den Rand ist das Lösen dieses Problem nicht trivial. Zur Vereinfachung wird die zeitliche Abhängigkeit eingeführt. Es folgt eine gewöhnliche Differentialgleichung, die jedoch keine physikalische Bedeutung hat.!"!" =!(!) Dabei wird der Anfangspunkt als!(0) =!! definiert. Somit lässt sich der stationäre Zustand durch!(!) = 0 beschreiben. Mittels der vorwärts Euler- Methode lässt sich die Differentialgleichung iterativ wie folgt lösen:!!!! =!! +!!(!! ) Die Knoten, die über die Geometriegrenze verschoben worden sind, werden durch externe Kräfte wieder auf den Rand der Geometrie gebracht. Im Algorithmus ist die Kraftfunktion!(!,!) als eine lineare Federfunktion gewählt. Dabei sind ausschließlich Abstoßkräfte berücksichtigt, während Anziehkräfte vernachlässigt werden.!(!,!! ) =!(!!!),! <!! 0,!"#!$ Die vom Benutzer definierte Elementgrößenfunktion h(!,!) bestimmt die relative Verteilung über den gesamten Bereich. Implementierung Dieses Kapitel befasst sich mit der Implementierung des zweidimensionalen Gittergenerators DistMesh. Um den zweidimensionalen Vernetzungsgenerator auszuführen, sind folgende Eingangsparameter notwendig. Die Geometrie ist durch die Abstandsfunktion!" gegeben. Dabei beschreibt die Funktion für jeden Knoten den Abstand vom Knoten bis zum nächstgelegenen Rand. Diese Abstandsfunktion ist im Inneren des Körpers negativ definiert. Mittels der!h- Funktion lässt sich die gewünschte relative Kantenlänge der Elemente festlegen. Der Parameter h! gibt den Abstand zwischen den Punkten für die Anfangsverteilung an. Der Randkasten für den Bereich ist durch die Koordinaten!!"#(!!"#!!"#;!!"#!!"#) gegeben. 2

Die Koordinaten fester Knoten lassen sich in!"#$ definieren. Zusätzliche Parameter für die Funktionen!h und!" können in varargin definiert werden. Anhand dieser Eingangsparameter berechnet die Funktion!"#$%&h2! die Knotenpositionen! und die Triangulierungsindizes!, die die Knotennummerierung in der Triangulierung wiedergeben. Zusätzlich werden zu Beginn des Algorithmus sechs Parameter, die für die numerische Lösung des Problems notwendig sind, definiert. Der Parameter!"#$% definiert die minimale Verschiebung eines Knotens, für die kein weiterer Iterationsschritt ausgeführt wird. Mit!!"# wird die maximale Knoten- verschiebung bestimmt, sodass keine neue Delaunay- Vernetzung notwendig ist. Der Innendruck der Stäbe lässt sich durch!"#$%& vorgeben. Der Zeitschritt der Euler- Methode ist definiert durch delta. Die Toleranz in der Geometrieabschätzung ist in!"#$ definiert. Die Rechnertoleranz zum Quadrat entspricht dem Ortsschritt in der numerischen Differenzierung. Zusätzlich skaliert man sowohl!"#$ als auch!"#$ mit h! um das Problem zu enddimensionieren. Als erstes berechnet der Algorithmus die Verteilung der Knoten innerhalb des vorgegebenen Randkastens. Dabei verwendet man die!"#h!"#$- Funktion, die eine Rechteckvernetzung generiert. Die vom Benutzer vorgegebene Kantenlänge h! gibt den Abstand zwischen den Gitter- punkten in x- Richtung vor. In y- Richtung ist der Abstand als 3h! 2 definiert. Im nächsten Schritt wird jeder zweite Knoten um h! 2 in x- Richtung verschoben. 3

Somit entsteht eine gleichmäßig verteilte Punktmenge, die einen minimalen Abstand von h! zwischen den Knoten aufweist. Im nächsten Schritt werden die Knoten, die außerhalb der Geometriegrenze liegen, gelöscht. Die dazu verwendete!"#$%- Funktion ermittelt den Vektor, der den Abstand zwischen den Knoten und der Geometriegrenze wiedergibt. Nur die im Inneren des Bereiches liegenden Knoten, also mit dem negativen Abstand, bleiben erhalten. 4

Anschließend wird zusätzlich die h(!, ) - Funktion an jedem Punkt ausgewertet, so dass die Knoten mit einer Wahrscheinlichkeit von 1 h(!,!)! ebenfalls entfernt werden. Als nächstes werden die Positionen der übriggebliebenen Knoten iterativ in einer!"#- Schleife optimiert, damit die vorgegebene Geometrie bestmöglich abgebildet werden kann. Bevor der Kraftvektor ausgewertet wird, ermittelt die Delaunay- Triangulierung die Struktur des Gitters. Um die Berechnungszeit zu reduzieren, wird die Delaunay- Triangulierung erst ausgeführt, wenn die Verschiebung der Knoten den maximalen Wert!!"# überschreitet. Im Vektor! wird eine Liste mit allen Dreiecken hinterlegt. Dabei ist jedes Dreieck durch die Nummer seiner Eckpunkte eindeutig definiert. In einer zusätzlichen Liste mit den Kanten sind die Dreiecke jeweils als drei Knotenpaare beschrieben. Neben den Knotenkoordinaten untersucht der Algorithmus zusätzlich die Mittelpunkt- positionen der Dreieckselemente. Falls der Elementmittelpunkt außerhalb der Geometriegrenze liegt, wird das Element gelöscht. 5

Anschließend wird an jedem Knoten die, durch Verschiebung entstandene, Federkraft ausgerechnet. Dabei ist die Federkraft definiert als die relative Längenänderung des Stabes. Da die Kraft nur abstoßend wirken kann, ergibt sich folgender Zusammenhang.! =!!!,!!! > 0 0,!"#!$ Dabei ist!! mit dem!"#$%&- Faktor skaliert, so dass die Stäbe unter Druck stehen. Die am Stabende anliegende Kraft ist definiert als:!! =!!!!! =!!! Die resultierende Kraft!!"! an jedem Gitterpunkt verschiebt iterativ die aktuelle Knoten- position.!!!! =!! +!!!"! Folgende Abbildung visualisiert die Knotenverschiebung. 6

Die Knoten, die über die Geometriegrenze verschoben wurden, werden im nächsten Schritt zurück auf den Rand bewegt. Bei dem iterativen Verfahren wird die oben beschriebene Vorgehensweise mit neu ermittelten Knotenpositionen wiederholt bis die aus den oben angegebenen Formeln berechnete Verschiebung den Wert von!"#$% unterschreitet. Bei einer relativen Knotenverschiebung von!!"# wird die Delaunay- Triangulierung ausgeführt. Dabei kann die Struktur des Netzes verändert werden. 7

Die Knotenverschiebung während eines Iterationsschrittes entscheidet über die Fortsetzung des Iterationsverfahren. Die vom Benutzer definierte Variable!"#$% gibt die zulässige Abweichung an. Falls der Knotenverschiebung diesen Wert unterschreitet, wird das Verfahren abgebrochen. Bei der Berechnung der Vernetzung des Einheitskreises mit h! = 1 wird der der stationäre Zustand nach 77 Iterationsschritte gefunden. Mittels der h(!, )- Funktion lässt sich die Größe von Elementen variieren. Für den Fall, dass die Elemente innerhalb des Körpers unterschiedliche Kantenlängen nachweisen sollen, lässt sich der Verlauf der Größenänderung mittels der h(!, )- Funktion beliebig definieren. 8

Die Vernetzung des Einheitskreises mit der oben dargestellten linearen Verteilung der h(!, )- Funktion ist im nächsten Bild dargestellt. Abstandsfunktion In diesem Kapitel werden die Methoden zur Erstellung einer Abstandsfunktion einer komplexen Geometrie vorgestellt. Neben den Abstandsfunktionen, die einfache Geometrie beschreiben, lässt sich die Abstandsfunktion eines Körpers auch für ein Polygon darstellen. Um zwei verschiedene Abstandsfunktionen zu kombinieren, stehen drei weitere Funktionen zur Verfügung. Die!"#$%#- Funktion erlaubt zwei verschiedene Abstands- funktionen, einer A - und einer B - Geometrie, zu vereinen.!!! = min (!!!,!,!! (!,!)) Folgende Abbildung stellt eine Vereinigung eines Einheitskreises mit einem Rechteck dar. 9

Ein Körper, der durch die Substitution zweier Geometrien entsteht, kann durch Substitution von deren Abstandsfunktionen beschrieben werden. Hierzu wird die!!"##- Funktion verwendet.!!! = max (!!!,!,!! (!,!)) In folgender Abbildung ist die Subtraktion mehrer Körper voneinander visualisiert. Falls sich ein Körper als Schnittstelle von zwei Geometrien darstellen lässt, kann seine Abstandsfunktion mittels!"#$%&'%(- Funktion ermittelt und wie folgt berechnet werden:!!! = max (!!!,!,!! (!,!)) Somit ergibt sich als Schnittstelle von drei Kreisen folgende Geometrie: 10

Drei- dimensionaler Vernetzungsgenerator Dieses Kapitel befasst sich mit der Vernetzung von dreidimensionalen Körpern. Zunächst soll der Körper mittels einer Abstandsfunktion beschrieben werden. Diese Vorgehensweise kann aus dem zweidimensionalen Fall analog übernommen werden. Der Vernetzungsgenerator unterteilt den Randkasten zunächst ebenfalls in vorgegebene Abstände. Anschließend werden die außerhalb der Geometrie liegenden Knoten entfernt. 11

Die Delaunay- Funktion ermittelt aus den vorgegebenen Knoten Tetraeder. Dabei werden jeweils vier Knoten zu einem Tetraeder zusammengefasst. Das iterative Verfahren verschiebt die äußeren Knoten analog zum zweidimensionalen Gittergenerator bis zum Geometrierand. Die Triangulierung der Geometrie wird nach einem Iterationsschritt mittels Delaunay- Funktion aktualisiert, wenn die Knotenverschiebung den Wert von!"#$% überschreitet. In der folgenden Abbildung ist die Triangulierung der Einheitskugel abgebildet. Dreidimensionale Geometrien lassen sich ebenfalls analog den zweidimensionalen Geometrien miteinander kombinieren. Dabei lassen sich die bereits oben vorgestellten Funktionen!"#$%#,!!"## und!"#$%&'%( verwenden. Analog zum zweidimensionalen Gittergenerator kann der Benutzer den Verlauf der Elementgröße mittels der h(!,!,!)- Funktion festlegen. Als Beispiel ist in der folgenden Abbildung die Triangulierung eines Körpers für einen linearen Verlauf der h(!,,!)- Funktion dargestellt. 12

Zusammenfassung DistMesh eröffnet neue Möglichkeiten zur Erstellung einer Vernetzung beliebiger Körper. Anhand einer Abstandsfunktion, die die Geometrie mathematisch beschreibt, bestimmt die Delaunay- Triangulierung eine grobe Vernetzung. Die Stabkräfte sind als Federkräfte definiert und verschieben die Gitterpunkte. Dabei dürfen die Stabkräfte nur abstoßend wirken. Mittels eines iterativen Verfahrens lässt sich die Vernetzung optimieren. Das iterative Verfahren kann beendet werden, wenn ein stationärer Zustand gefunden ist. Der Benutzer kann jeden Iterationsschritt kontrollieren und die eventuell auftretenden Fehler schneller finden. Somit bittet der DistMesh - Algorithmus eine gute Grundlage für den Entwickler, eigenen Gittergenerator zu entwickeln. Referenzen 1 Per- Olof Persson, Gilbert Strang, A Simple Mesh Generator in MATLAB Massachusetts Institut of Technology, Cambridge, 2012 13