next up previous contents
Next: 6. Dreidimensionale Visualisierung Up: 5. Geometrische Modellierung und Previous: 5.3 Geometrische Operationen und

5.4 Erzeugung des Simulationsgitters

Wie bereits in der Einleitung der Arbeit erwähnt, muss das Rechengitter die reale Geometrie möglichst präzise widerspiegeln, um genaue Simulationsergebnisse zu ermöglichen (geometriekonformes Gitter). Die bei der Simulation von Verbindungsleitungen auftretenden geometrisch komplexen Strukturen mit stark unterschiedlichen Größenverhältnissen, dünnen Schichten und mehreren Bereichen verschiedener Materialien erfordern für die Gittererzeugung sehr aufwendige Algorithmen [136,137]. Neben der erwähnten Geometriekonformität muss das Gitter noch weitere wichtige Eigenschaften aufweisen: Die Gitterdichte muss ausreichend hoch sein, um die Diskretisierungsfehler gering zu halten. Um iterative Lösungsverfahren effizient anwenden zu können, sollte die Form der Elemente so beschaffen sein, dass eine gut konditionierte Systemmatrix resultiert. Gleichzeitig sollte die Anzahl der Gitterpunkte klein sein, da sie sowohl den Speicherbedarf als auch die Laufzeit der Simulation beeinflussen. Die Gittererzeugung spielt deshalb für dreidimensionale Simulationen komplexer Strukturen eine Schlüsselrolle, da hier oft der Speicherbedarf entscheidet, ob eine Simulation durchführbar ist oder nicht.

Es ist nicht trivial ein solchermaßen ,,optimales`` Gitter zu finden, da es sowohl an die Geometrie als auch an den Differentialoperator samt Randbedingungen angepasst sein muss. Prinzipiell kann man erst nach beendeter Simulation und Analyse der Fehler die Qualität des Gitters beurteilen. Für die Ermittlung einer geeigneten Gitterdichteverteilung verwendet man deshalb entweder heuristische Methoden, oder Verfahren, die zuerst eine Simulation mit einem groben Initialgitter durchführen, um anschließend gemäß eines Fehlerkriteriums das Gitter gezielt zu verfeinern. Bei einem zu groben Initialgitter besteht dabei das Risiko, dass stark dynamische Bereiche der Lösung nicht ausreichend aufgelöst und deshalb die Fehler falsch eingeschätzt werden. Ein zu feines Initialgitter kann wiederum einen untragbar hohen Rechenaufwand zur Folge haben, wodurch das Problem der Wahl der Gitterdichte in abgeschwächter Form auf das Initialgitter übertragen wird. Es können deshalb einige Iterationen notwendig sein, bis man ein geeignetes Rechengitter gefunden hat.

Im Allgemeinen sind für die Gittererzeugung zur Lösung der Poisson-Gleichung heuristische Ansätze ausreichend. Die größte Dynamik in der Lösung ist an inhomogenen Stellen der Geometrie (Kanten, Ecken, dünne Schichten), sowie in Bereichen, wo die Quelldichtefunktion groß ist, zu erwarten. Es ist deshalb sinnvoll, an solchen Stellen die Gitterdichte zu erhöhen. Da die Fundamentallösung (Green'sche Funktion) des Laplace-Operators mit der Entfernung abklingt, kann man auch die Dichte des Gitters mit der Entfernung zu kritischen Bereichen abnehmen lassen. Abrupte Übergänge im Größenverhältnis benachbarter Gitterelemente sollten vermieden werden.

Da das Gitter konform zur Geometrie sein muss, ist bei kleinen Oberflächendetails auch automatisch die Gitterdichte hoch. Damit sich die hohe Gitterdichte ausreichend ins Innere fortpflanzt, kann man z.B. eine Beschränkung des Verhältnisses der Kantenlängen benachbarter Elemente fordern.

Für eine gute Kondition der Systemmatrix erweist es sich als günstig, wenn die Gitterelemente möglichst keine spitzen Winkel aufweisen. Eine Beschränkung des minimalen Winkels der Gitterelemente erhöht deshalb die Gitterqualität. Die Erfüllung eines solchen Kriteriums kann aber nur unter bestimmten Voraussetzungen an die Geometrie garantiert werden [138].

Das Problem der Gittererzeugung lässt sich nun in zwei Teilaufgaben aufspalten, und zwar die Wahl der Gitterpunkte und die Konstruktion der Elemente. Für die Konstruktion der Gitterelemente wird sehr häufig die Delaunay-Zerlegung verwendet. Dabei werden die Gitterdreiecke (-Tetraeder) so gebildet, dass innerhalb des Umkreises (der Umkugel) kein weiterer Gitterpunkt liegt. Im zweidimensionalen Fall ist es immer möglich so eine Zerlegung an einen gegebenen Rand anzupassen (Constrained Delaunay Triangulation), im dreidimensionalen Fall kann es notwendig sein, zusätzliche Gitterpunkte einzufügen, um randkonforme Gitter zu erhalten. Eine weitere wichtige Eigenschaft der Delaunay-Zerlegung ist, dass für eine gegebene Punktverteilung das erzeugte Gitter bezüglich der minimalen Elementswinkel optimal ist, was zu einer besseren Konvergenz iterativer Lösungsverfahren beiträgt. Für Materialien mit anisotropen Eigenschaften kann das Delaunay-Kriterium entsprechend modifiziert werden.

Im Rahmen dieser Arbeit wurde auf verschiedene existierende Gittergeneratoren zurückgegriffen, die in den folgenden Absätzen kurz vorgestellt werden.

Zweidimensionale Gitter:

Für die Simulation zweidimensionaler Geometrien wurden die Programme Triangle [139] und Trigen [140] verwendet. Ersteres ist ein Delaunay-Gittergenerator, der es erlaubt die Gitterqualität mittels Beschränkungen für den minimalen Winkel und die maximale Fläche eines Dreiecks zu kontrollieren. Er zeichnet sich durch eine hohe Robustheit aus, die unter anderem durch Verwendung einer adaptiven exakten Arithmetik erreicht wird.

Bei Trigen hat man die Möglichkeit mittels Begrenzungen für die maximale Kantenlänge und für das Größenverhältnis benachbarter Dreiecke Einfluss auf die Gitterdichte zu nehmen. Durch Vertauschen von Kanten wird versucht die Qualität der Dreiecke zu optimieren, das erzeugte Gitter ist aber nicht notwendigerweise ein Delaunay-Gitter. Ein Nachteil dieses Verfahrens ist, dass damit nur einfach zusammenhängende Gebiete trianguliert werden können--mehrfach zusammenhängende Gebiete müssen zuvor aufgeteilt werden.

Layer-Methode:

Die schichtweise aufgebaute Verbindungsstruktur kann für eine vereinfachte Gittererzeugung ausgenutzt werden. Dazu werden die Linien aller Schichten auf eine zweidimensionale Ebene projiziert und sämtliche Schnitte berechnet (siehe Abb. 5.11). Anschließend wird mit einem zweidimensionalen Gittergenerator ein Dreiecksgitter erzeugt. Mittels Extrusion ,,zieht`` man dieses Gitter in die dritte Dimension durch alle Schichten der Struktur. Man erhält ein prismatisches Gitter, das durch Aufspalten der Prismen in ein Tetraedergitter umgewandelt wird.

Abbildung 5.11: Gittererzeugung mit der Layer-Methode: Die Linien aus allen Schichten werden auf eine Ebene projiziert und in dieser vergittert. Daraus wird für jede Schicht ein Prismengitter konstruiert, das in Folge in Tetraeder aufgespalten wird.
\fbox{\resizebox{0.4\linewidth}{!}{\includegraphics{lay1}}}

Ist das zweidimensionale Ursprungsgitter ein Delaunay-Gitter und sind die Schichten planar, so besitzt auch das erzeugte Tetraedergitter Delaunay-Eigenschaft. Da das erzeugte Gitter das Produkt aus einem zweidimensionalen und einem eindimensionalen Gitter ist, kann die Gitterdichte nicht völlig frei gewählt werden. Ist beispielsweise eine hohe Gitterdichte in einem bestimmten zweidimensionalen Bereich gefordert, so erstreckt sich dieser Bereich automatisch in der dritten Dimension durch alle Schichten. Weiters kann es bei dieser Methode zu ungewollt hohen Gitterdichten kommen, wenn Linien aus unterschiedlichen Lagen in der Projektion knapp nebeneinander liegen.

Unstrukturierte Gittererzeugung:

Der Gittergenerator Delink [141] wird verwendet um dreidimensionale unstrukturierte Delaunay-Gitter zu erzeugen. Das Programm zeichnet sich durch hohe Robustheit unter endlicher Rechengenauigkeit aus. Eine fortschreitende Front durchläuft die gewünschten Gebiete und füllt sie mit Tetraedern aus. Es handelt sich dabei um eine Delaunay-konforme Gittererzeugung, wobei die Oberfläche zuerst durch eine Verfeinerung vorbehandelt wird. In diesem Schritt wird auch der Rand von nicht tetrahedrisierbaren Strukturen automatisch verfeinert und somit tetrahedrisierbar gemacht.

Gitterverfeinerung

Wenn die geforderte Genauigkeit einer Simulation mit einem bestimmten Gitter nicht erreicht werden kann, wird es notwendig, Methoden zur Gitterverfeinerung anzuwenden. Dies kann beispielsweise durch globale Verfeinerung, durch die Vorgabe von Punkten oder Linien an Stellen mit geringer Gitterdichte, die dann ins Gitter übernommen werden oder durch Qualitätskriterien erfolgen.

Globale Gitterverfeinerung

wird angewendet, wenn das ursprüngliche Gitter bereits hohe Elementqualität aufweist und gut an die Lösung angepasst ist, jedoch generell zu große Elemente enthält. Bei Dreiecksgittern werden dazu einfach alle Dreiecke in vier (oder 9, 16, usw.) kleinere Dreiecke aufgespalten. Da die entstandenen Dreiecke ähnlich zu den ursprünglichen sind, bleibt die Gitterqualität erhalten.

Bei einem Tetraeder kann man lediglich vier ähnliche Tetraeder an seinen Ecken abspalten (Abb. 5.12). Dabei bleibt in der Mitte ein Oktaeder bestehen.

Abbildung 5.12: Zerlegung eines Tetraeders in vier ähnliche Tetraeder und einen Oktaeder
\fbox{\resizebox{0.8\textwidth}{!}{\includegraphics{decomp}}}

Abbildung 5.13: Ein Oktaeder kann in vier Tetraeder zerlegt werden, indem diese rund um eine Raumdiagonale (strichlierte Linie) des Oktaeders abgespalten werden. Wählt man dazu die kürzeste der drei Diagonalen erreicht man die beste Gitterqualität.
\fbox{\resizebox{0.8\textwidth}{!}{\includegraphics{octsplit}}}

Dieser Oktaeder lässt sich wiederum in vier Tetraeder aufspalten (Abb. 5.13). Dabei gibt es drei verschiedene Varianten, je nachdem um welche Raumdiagonale aufgeteilt wird. Diese Tetraeder haben jedoch keine geometrische Ähnlichkeit zum Ursprungstetraeder. Die beste Elementqualität erreicht man, wenn rund um die kürzeste Raumdiagonale aufgespalten wird.

Gitterverfeinerung durch geometrische Vorgaben:

Eine höhere Gitterdichte kann man erreichen, indem man zusätzliche Punkte und Kanten in die Ausgangsgeometrie einfügt und vom Gittergenerator fordert, dass diese in das erzeugte Gitter integriert werden sollen. Ein Beispiel dafür ist die in Abb. 5.14 dargestellte Gitterverfeinerung mittels ,,Dummy-Flächen`` und ,,Dummy-Layern``. Hier wird die Layer-Methode zur Gittererzeugung verwendet und eine zusätzliche Schicht (in der Abbildung rot dargestellt) mit einem Quadrat, dessen Kantenlänge etwas kleiner als der Kontakt ist (nicht sichtbar) eingefügt, um in der Umgebung der Kontaktierung die Gitterdichte zu erhöhen. Um schlechte Gitterelemente zu verhindern, ist hier die Verwendung eines Winkelkriteriums für den zweidimensionalen Gittergenerator erforderlich.

Abbildung 5.14: Struktur eines einfachen Kontakts ohne (links) und mit (rechts) einem sogenannten ``Dummy-Layer'' um die Gitterdichte zu erhöhen
\centerline{%
\resizebox{0.48\textwidth}{!}{\includegraphics{contact}}\hfill
\resizebox{0.48\textwidth}{!}{\includegraphics{contact1}}}

Das linke Gitter in Abb. 5.14 hat 58 Knotenpunkte und liefert bei einer Widerstandsberechnung einen Fehler von 14.3%, das rechte hat 1440 Knoten und ergibt einen Fehler von 3.6%. Wenn das linke Gitter mehrfach global verfeinert wird, bis der Fehler die gleiche Größenordnung erreicht, wächst die Knotenzahl auf 9117 und sowohl Simulationszeit als auch Speicherverbrauch auf mehr als das Sechsfache.

Zum Vergleich ist in Abb. 5.15 ein Gitter angegeben, das mit dem Programm Delink erzeugt wurde. Hier wurde durch gezielte Streuung der Gitterpunkte eine hohe Gitterdichte im Bereich des Kontaktüberganges erreicht. Der Simulationsfehler ist mit diesem Gitter etwa gleich groß wie bei der Layer-Methode mit Dummy-Elementen, allerdings kommt man mit einer wesentlich geringeren Anzahl von Knoten (775) aus.

Abbildung 5.15: Ein mit dem Programm Delink erzeugtes unstrukturiertes Tetraedergitter
\fbox{\resizebox{0.48\textwidth}{!}{\includegraphics{contact2}}}

In Tab. 5.1 sind die Fehler der Simulationsergebnisse mit dem einfachen Laygrid-Gitter, dem Laygrid-Gitter mit Dummy-Elementen (Laygrid II) und einem Delink-Gittern gegenübergestellt. Man erkennt, dass das mit Delink erzeugte Gitter für eine vorgegebene Fehlerschranke am wenigsten Gitterpunke benötigt.


Tabelle 5.1: Vergleich der Simulationsgitter
  Laygrid Laygrid II Delink
  Knoten Fehler Knoten Fehler Knoten Fehler
ohne Verfeinerung 58 14.3% 1440 3.6% 775 3.9%
1$ \times$global Verf. 240 9.9% 10143 1.7% 5575 1.8%
2$ \times$global Verf. 1375 6.3% 75957 0.7% 42061 0.8%
3$ \times$global Verf. 9117 3.7% 587529 0.3% 326233 0.3%


next up previous contents
Next: 6. Dreidimensionale Visualisierung Up: 5. Geometrische Modellierung und Previous: 5.3 Geometrische Operationen und

R. Sabelka: Dreidimensionale Finite Elemente Simulation von Verdrahtungsstrukturen auf Integrierten Schaltungen