Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Diplomarbeit WS 2002 / 2003 Autor: Boris Meier <meierbo@student.ethz.ch> Betreuer: Marc Wintermantel <wintermantel@imes.mavt.ethz.ch> Version 3 7. Februar 2003 Zentrum fr Strukturtechnologien u 03-050
Zusammenfassung Das C++-Programm FELyX soll dahingehend erweitert werden, dass Eigenfrequenzen und Eigenschwingungsformen von Strukturen berechnet werden knnen. Dafr ist das o u 2 Mu zu lsen, wobei die Eigenfrequenzen allgemeine Eigenwertproblem Kui = i o i i und ui die dazugehrigen Eigenvektoren, die die Eigenschwingungsformen beschreiben, o bedeuten. Die Generierung der Steigkeitsmatrix K ist in FELyX bereits implementiert, da sie auch fr statische Analysen bentigt wird. Die Bildung der Massenmatrix M ist zu u o programmieren. Sie geschieht hnlich wie die Bildung von K. a K und M sind grosse Matrizen, deren Ordnung gleich der Anzahl Freiheitsgrade der in nite Elemente unterteilten Struktur ist. Sie weisen eine Bandstruktur auf, so dass die meisten Eintrge Null sind. Dies erlaubt ein ezientes Speichern der Matrizen und a ermglicht schnelle Rechenalgorithmen. o In einem ersten Versuch wird das allgemeine Eigenwertproblem auf das spezielle 2 Eigenwertproblem Cui = i ui reduziert. Ein spezielles Eigenwertproblem ist einfacher zu lsen. Es gibt OpenSource Algorithmen dazu. Bei der Reduktion geht jedoch die o Bandstruktur der Matrizen K und M verloren, so dass der Speicheraufwand fr C sehr u gross wird. In einem weiteren Versuch wird die Methode der simultanen Vektoriteration implementiert. Sie eignet sich, um die p kleinsten Eigenwerte und die dazugehrigen Eigenvektoren o des allgemeinen Eigenwertproblems zu berechnen. Es werden dabei gleichzeitig p verschiedene Vektoren iteriert, bis sie gegen die gesuchten Eigenvektoren konvergieren. Diese Methode erweist sich in der Implementierung als inezient. Zum Ziel fhrt schliesslich das Verfahren von Lanczos mit dem inversen Eigenwertprou blem. Damit knnen die p kleinsten Eigenwerte und ihre Eigenvektoren ezient bestimmt o werden. Es werden typischerweise 8 bis 20 Lanczos Schritte ausgefhrt, wobei in jedem u Schritt ein Gleichungssystem Ku = h nach u gelst werden muss. Da die Matrix K o konstant bleibt kann dies so geschehen, dass K anfangs einmal zerlegt und in jedem Schritt dann nur noch einmal rckwrts eingesetzt wird. Der gesamte Rechenaufwand u a hlt sich so in Grenzen. a Der gefundene Rechenablauf ist ezient und kann mit kommerziellen Eigensolvern mithalten. Die Generierung der Massenmatrix knnte hingegen noch beschleunigt werden, o wenn K und M gleichzeitig und nicht nacheinander aufgebaut wrden. u
Inhaltsverzeichnis
1 Einleitung 1.1 Eigenschwingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Praktische Relevanz der Eigenfrequenzen . . . . . . . . . . . . . . . . . . . . 1.3 Eigenfrequenzoptimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Grundstzliche Uberlegungen a 2.1 Die Steigkeitsmatrix . . . . 2.2 Die Massensmatrix . . . . . . 2.3 Eigenfrequenzen . . . . . . . 2.4 Eigenschwingungsformen . . . 3 Massenmatrix 3.1 Link1 . . . . . . . . . . 3.2 Link8 . . . . . . . . . . 3.3 Beam3 . . . . . . . . . . 3.4 Beam4 . . . . . . . . . . 3.5 Plane2 . . . . . . . . . . 3.6 Plane182 . . . . . . . . . 3.7 Plane183 . . . . . . . . . 3.8 Solid185 . . . . . . . . . 3.9 Solid186 . . . . . . . . . 3.10 Solid187 . . . . . . . . . 3.11 Numerische Integration 3.12 Globale Massenmatrix . 1 1 2 2 5 5 6 7 8 9 9 9 9 10 11 11 12 12 13 15 15 16 17 17 17 18 20 20 20 22 22
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
4 Spezielles Eigenwertproblem 4.1 Idee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Durchfhrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . u 4.3 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Vektoriteration 5.1 Idee . . . . . . . . . . . 5.2 Umsetzung . . . . . . . 5.3 Orthogonalisierung . . . 5.4 Weitere Detaillierungen
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
7 Testresultate 7.1 Link8 . . . . 7.2 Beam3 . . . . 7.3 Beam4 . . . . 7.4 Plane2 . . . . 7.5 Plane182 . . . 7.6 Plane183 . . . 7.7 Solid185 . . . 7.8 Solid186 . . . 7.9 Solid187 . . . 7.10 2D-Mix . . . 7.11 3D-Mix . . . 7.12 Eigenvektoren
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
8 Benchmarking 39 8.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.2 Anzahl Freiheitsgrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 8.3 Anzahl Eigenfrequenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 9 Schlussbemerkungen 9.1 Dmpfungsmatrix C . a 9.2 Lumped Mass Matrix 9.3 Simultane Generierung 9.4 Ziel . . . . . . . . . . . 9.5 Matlab . . . . . . . . . 9.6 To do . . . . . . . . . 41 41 41 41 42 42 42 45 47 51
. . . . . . . . von K . . . . . . . . . . . .
. . . . . . . . . . und M . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
Kapitel 1
Einleitung
1.1 Eigenschwingungen
Die wohl einfachste Form einer Eigenschwingung ist ein Feder-Masse-System mit einer Masse und einer Feder (Abb. 1.1). Versetzt man die Masse in Bewegung, verschiebt sich ihre kinetische Energie in Federenergie, bis die Masse in extremaler Position stillsteht. Danach wird die Federenergie wieder in kinetische Energie umgewandelt. Diese Energieumwandlung ist die Basis jeder Schwingung. Falls das System nicht von aussen angeregt wird, verkleinert sich die Amplitude der Schwingung mit der Zeit aufgrund von Dmpfung. Diese tritt in der Realitt immer auf und ist eine Folge der Reibung zwischen a a den Atomen. Bei der beschriebenen Energieumwandlung wird also ein Teil der Engergie immer auch in Wrme umgewandelt. a
Jeder Krper, jede Struktur ist eigentlich nichts anderes als ein komplexes System o aus Federn und Massen (und Dmpfern). Auf unterster Ebene knnen Atmokerne durch a o Massepunkte und Elementarkrfte durch Federkrfte modelliert werden. Soweit geht man a a in der Ingenieurspraxis allerdings nicht. Sondern man unterteilt eine Struktur in kleine Einheiten, in nitie Elemente. Diese Elemente haben eine Masse und auf sie wirken Krfte, was wiederum eine Art Feder-Masse-System bedeutet. a Uberlsst man das angeregte System aus Abb. 1.1 sich selber, schwingt es mit einer a klar denierten Frequenz weiter, der Eigenfrequenz f des Systems. Sie berechnet sich aus dem Impulssatz und ergibt f = m/k. Hngt man an die Masse eine zweite Feder a mit einer weiteren Masse, hat das neue System zwei Eigenfrequenzen, sofern man nur Schwingungen in z-Richtung betrachtet. 1
KAPITEL 1. EINLEITUNG
Betrachtet man alle Schwingungen, die das System aus Abb. 1.1 ausfhren kann, u kommt man auf sechs Eigenschwingungsformen. Die Masse kann nmlich auch in xa oder y-Richtung schwingen (pendeln) und um alle drei Achsenrichtungen rotieren. Beim System mit zwei Massen ergeben sich so total zwlf Eigenschwingungsformen mit je o einer Eigenfrequenz. Jede beliebige Schwingung dieses Systems ist eine Superposition der Eigenschwingungsformen. Die Anzahl Schwingungsformen und Eigenfrequenzen eines beliebigen Systems ist also die Summe der Massen multipliziert mit der Anzahl ihrer jeweiligen Freiheitsgrade. Fr u einen in nite Elemtente unterteilten Krper ergeben sich so exorbitant viele Eigenfreo quenzen. Relevant sind in der Praxis jedoch nur die tiefsten.
1.2
Regt man das Feder-Masse-System aus Abb. 1.1 mit einer der Eigenfrequenz hnlichen a Frequenz an, gert das System in Resonanz. Die Amplitude des Schwingung kann sehr a gross werden. In der Praxis kann dies gefhrlich oder zumindest unangenehm sein. a Die Eigenfrequenzen eines Eisenbahnwagens zum Beispiel sollen nicht durch Unwuchten, die in jedem Rad auftreten, angeregt werden knnen. Bei der Fahrt mit einer bestimmo ten Geschwindigkeit wrde so der Wagen zu schwingen beginnen, was fr die Passagiere u u unangenehm wre. Damit eine Eigenfrequenz nicht wesentlich angeregt wird, muss sie a mindestens etwa vier mal hher sein als die Frequenz der Anregung [2]. o
Welch dramatische Folgen eine Vernachlssigung der Betrachtung der Eigenfrequena zen haben kann, zeigt der berhmte Fall der Tacoma Narrows Bridge (Abb. 1.2), welche u am 7. November 1940 in Folge starker Schwingungen einstrzte. Bei der Planung war u die Ablsung von Wirbeln bei Wind nicht gengend bercksichtigt worden. Die Windgeo u u schwindigkeit an jenem Tag versetzte die Brcke in Resonanzschwingung, welche schliesu slich zum katastrophalen Versagen fhrte. u
1.3
Eigenfrequenzoptimierung
Das Ziel der Eigenfrequenzoptimierung einer Struktur ist es meist, die tiefsten Eigenfrequenzen so hoch wie mglich zu machen. Dies kann zum Beispiel gelingen, indem man o 2
KAPITEL 1. EINLEITUNG
die Struktur steifer macht oder ein Material mit hherem Elastizittsmodul whlt. o a a Um eine Optimierung zu illustrieren, dient folgendes Beispiel. Es wird eine fachwerkartige Brckenstruktur betrachtet (Abb. 1.3 - 1.5). Die drei Konstruktionsvorschlge u a haben je das gleiche Gewicht, das heisst die Stbe haben bei den Vorschlgen verschieden a a grosse Querschnitte. Der obere und untere Biegebalken sei aber gleich.
Die Spannweite der Brke sei 8 m, der Abstand zwischen den Biegebalken 3 m. Das c Material hat eine Dichte von 2700 kg/m3 und einen E-Modul von 70 GPa. Die Balken haben eine Querschnittshe von 16 cm2 und ein Flchentrgheitsmoment I von 2106 m4 . c a a Die unterschiedlichen Parameter der drei Strukturen sind in Tabelle 1.1 zusammengefasst, wobei l die horizontale Distanz zwischen zwei Fachwerkknoten und GL die Gesamtlnge a der Stbe bedeutet. a Struktur 1 2 3 l [m] 2 4 1 GL [m] 16.00 10.58 57.69 A [cm2 ] 16.00 24.19 4.44 I [106 m4 ] 2.00 3.02 0.55 f1 [Hz] 54.33 29.67 31.68
Die berechneten tiefsten Eigenfrequenzen f1 der Strukturen sind ebenfalls in Tabelle 1.1 ersichtlich. Die Struktur 1 hat die hchste primre Eigenfrequenz. Das ist insofern o a erstaunlich, als dass die Struktur ein Kompromiss zwischen den Strukturen 2 und 3 ist. Intuitiv erkennt man, dass es einen optimalen Kompromiss zwischen 2 und 3 geben muss. Abbildung 1.6 zeigt den qualitativen Verlauf der tiefsten Eigenfrequenz in Abhngigkeit von l. a
KAPITEL 1. EINLEITUNG
Dieses Beispiel ist eine typische einfache Optimierungsaufgabe mit einzigem Parameter l. Komplizierte Optimierungsaufgaben haben mehrer Paramter. Es gibt verschiedene Optimierungsstrategien, wie zum Beispiel Genetische Algorithmen oder Simulated Annealing. Optimierung ist aber nicht Aufgabe dieser Arbeit, sondern die eziente Berechnung von Eigenfrequenzen.
Kapitel 2
Grundstzliche Uberlegungen a
Die Bestimmung der Eigenfrequenzen eines Bauteils unter Verwendung niter Elemente soll am einfachen Beispiel eines einseitig eingespannten Balkens (Abb. 2.1) mit Elemtentlnge l und Querschnittsche b2 untersucht werden. Fr diese zweidimensionale Aufa a u gabe werden Beam3-Elemente verwendet. Das Vorgehen fr komplexere Strukturen ist u analog. Die Parameter des Beispielproblems sind in Tabelle 2.1 zusammengefasst. L b E 4 4 2700 8 1010 m cm kg/m3 Pa
2.1
Die Steigkeitsmatrix
Die Steigkeitselementmatrix k fr ein Beam3-Element ist [9] u E k= 3 l Al2 0 0 Al2 0 0 0 12I 6Il 0 12I 6Il 0 6Il 4Il2 0 6Il 2Il2 Al2 0 0 Al2 0 0 0 12I 6Il 0 12I 6Il 0 6Il 2Il2 0 6Il 4Il2
(2.1)
6 k = 10
128 0 0 128 0 0 0 0.205 0.102 0 0.205 0.102 0 0.102 0.0683 0 0.102 0.0341 128 0 0 128 0 0 0 0.205 0.102 0 0.205 0.102 0 0.102 0.0341 0 0.102 0.0683
(2.2)
Die globale Steigkeitsmatrix setzt sich aus den Elementsteigkeitsmatrizen zusam men, welche sich gegenseitig uberlappen (Abb. 2.2). Die Uberlappung beruht darauf, dass ein Knoten jeweils zu zwei Elemten gehrt. Weil der Balken sich im Knoten 1 weder o verschieben noch verdrehen kann, werden die ersten drei Zeilen und Spalten der globalen Steigkeitsmatrix, welche den drei Freiheitsgraden des ersten Knoten entsprchen, gestrichen. Damit wird die Matrix K positiv denit.
Gleichung 2.3 zeigt die globale Steigkeitsmatrix. Sie ist symmetrisch mit deutlicher Bandstruktur. Dank diesen Eigenschaften kann die Matrix ezient gespeichert werden, was bei Matrizen hherer Ordnung wichtig wird. Ebenfalls erlaubt die Speicherung im o Enveloppe-Format eziente Rechenalgorithmen.
260 0 0 130 0 0 0 0 0 0 0 0 0 0.41 0 0 0.2 0.1 0 0 0 0 0 0 0 0.14 0 0.1 0.034 0 0 0 0 0 0 0 0 260 0 0 130 0 0 0 0 0 130 0 0 0.2 0.1 0 0.41 0 0 0.2 0.1 0 0 0 0 0.1 0.034 0 0 0.14 0 0.1 0.034 0 0 0 0 0 0 130 0 0 260 0 0 130 0 0 0 0 0 0 0.2 0.1 0 0.41 0 0 0.2 0.1 0 0 0 0 0.1 0.034 0 0 0.14 0 0.1 0.034 0 0 0 0 0 0 130 0 0 130 0 0 0 0 0 0 0 0 0 0.2 0.1 0 0.2 0.1 0 0 0 0 0 0 0 0.1 0.034 0 0.1 0.068
K = 106
(2.3)
2.2
Die Massensmatrix
Die Massenelementmatrix m fr ein Beam3-Element ist in Abschnitt 3.3 deniert. Setzt u man die Parameter aus Tabelle 2.1 ein, erhlt man a 1.44 0 0 0.72 0 0 0 1.6 0.226 0 0.555 0.134 0 0.226 0.0411 0 0.134 0.0309 m= (2.4) 0 0 1.44 0 0 0.72 0 0.555 0.134 0 1.6 0.226 0 0.134 0.0309 0 0.226 0.0411 6
Die Bildung der globalen Massenmatrix M geschieht genau analog zur Bildung der globalen Steigkeitsmarix. Sie ist ebenfalls symmetrisch und positiv denit und kann in der gleichen Hllenform wie K gespeichert werden. u
2.9 0 0 0.72 0 0 0 0 0 0 0 0 0 3.2 0 0 0.56 0.13 0 0 0 0 0 0 0 0.082 0 0.13 0.031 0 0 0 0 0 0 0 0.72 0 0 2.9 0 0 0.72 0 0 0 0 0 0 0.56 0.13 0 3.2 0 0 0.56 0.13 0 0 0 0 0.13 0.031 0 0 0.082 0 0.13 0.031 0 0 0 0 0 0 0.72 0 0 2.9 0 0 0.72 0 0 0 0 0 0 0.56 0.13 0 3.2 0 0 0.56 0.13 0 0 0 0 0.13 0.031 0 0 0.082 0 0.13 0.031 0 0 0 0 0 0 0.72 0 0 1.4 0 0 0 0 0 0 0 0 0 0.56 0.13 0 1.6 0.23 0 0 0 0 0 0 0 0.13 0.031 0 0.23 0.041
M=
(2.5)
2.3
Eigenfrequenzen
Die globale Steigkeits- und Massenmatrix erlauben nun die Eigenfrequenzen und Eigenschwingungsformen des Balkens zu berechnen. Gleichung 2.6 beschreibt den Zusammenhang zwischen den erwhnten Matrizen und den Eigenfrequenzen bzw. Eigenschwingungsa formen. Zu lsen ist ein allgemeines Eigenwertproblem. o
2 Kui = i Mui
(2.6)
Multipliziert man die Gleichung beidseitig mit M1 erhlt man das spezielle Eigena wertproblem in Gleichung 2.7.
2 (M1 K)ui = i ui
(2.7)
Die Eigenfrequenzen i des Systems erhlt man also, indem man aus den Eigenwerten a 1 K die Wurzeln zieht. Da die Matrizen K und M positiv denit sind, sind der Matrix M alle Eigenwerte positiv.
2 i = eig(M1 K)
(2.8)
Die Einheit ist rad/s. Will man die Eigenfrequenzen in Hertz ausdrcken, wie sie z.B. u Ansys als Resultat ausgibt, sind die Eigenkreisfrequenzen i in Gleichung 2.9 noch durch 2 zu dividieren. fi = i 2 (2.10)
Vergleicht man die berechneten Eigenfrequenzen mit den exakten Werten [2] in Gleichungen 2.11, stellt man vor allem fr die tiefste Eigenfrequenz eine hohe Genauigkeit u fest. In je mehr nite Elemente der Balken unterteilt wird, desto weiter nhert sich das a Ergebnis den exakten Werten an. 1 = 3.516 EI = 13.8122 mL3 2 = 22.03 EI = 86.5420 mL3 (2.11)
2.4
Eigenschwingungsformen
2 Der zum Eigenwert i gehrende Eigenvektor ui beschreibt die Form der Eigenschwino gung. Beim Balkenproblem stehen in den Eigenvektoren die Verschiebungen der Knoten in horizontale und vertikale Richtung (u bzw. v) sowie die Verdrehung gegenber der u Horizontalen ().
ui =
u2 v2 2 u3 v3 3 u4 v4 4 u5 v5 5
(2.12)
Die zu den tiefsten zwei Eigenfrequenzen gehrenden Eigenvektoren sind o u1 = u2 = 0 0.07 0.13 0 0.25 0.21 0 0.48 0.24 0 0.72 0.25
T
(2.13)
T
In Abbildungen 2.3 und 2.4 sind die dazugehrigen Eigenschwingungsformen gezeicho net. In den Eigenvektoren (Gl. 2.14) erkennt man, dass die Verschiebungen der Knoten in horizontale Richtung sehr klein sind.
Die Eigenvektoren knnen beliebig skaliert werden. Sie enthalten keine absoluten Wero te, sondern beschreiben lediglich das Verhltnis der maximalen Auslekungen zueinander. a Sie knnen bezglich irgendeiner Norm normiert werden. o u
Kapitel 3
Massenmatrix
Dieses Kapitel behandelt das Aufstellen der Massenmatrix fr die verschiedenen Elementu typen. Bei den einfacheren Elementtypen kann die Elementmassenmatrix in geschlossener Form angegeben werden. Bei komplexeren Elementtypen muss die Elementmassenmatrix numerisch an verschiedenen Integrationspunkten auntegriert werden (Abschn. 3.11).
3.1
Link1
Das Link1-Element modelliert einen zweidimensionalen Zug- oder Druckstab. Es kann keine Biegelast aufnehmen. Die Massenmatrix des Link1-Elements lsst sich geschlossen darstellen: a 2 0 1 m = Al 1 6 0 0 2 0 1 1 0 2 0 0 1 0 2
(3.1)
3.2
Link8
Das Link8-Element modelliert einen dreidimensionalen Zug- oder Druckstab. Es kann keine Biegelast aufnehmen. Die Massenmatrix des Link8-Elements lsst sich geschlossen darstellen: a 1 m = Al 6 2 0 0 1 0 0 0 2 0 0 1 0 0 0 2 0 0 1 1 0 0 2 0 0 0 1 0 0 2 0 0 0 1 0 0 2
(3.2)
3.3
Beam3
Das Beam3-Element modelliert einen zweidimensionalen Biegebalken. Es kann nebst Zug und Druck auch eine Biegelast aufnehmen. 9
KAPITEL 3. MASSENMATRIX
0 0 m = Al 1 6 0 0
0 A C 0 B D
0 C E 0 D F
1 6
0 0
1 3
0 0
0 0 B D D F 0 0 A C C E
(3.3)
3.4
Beam4
Das Beam4-Element modelliert einen dreidimensionalen Biegebalken. Es kann nebst Zug und Druck auch eine Biegelast in zwei Achsenrichtungen sowie Torsion aufnehmen. Die Massenmatrix des Beam4-Elements lsst sich geschlossen darstellen [7]: a 1 0 0 0 0 0 1 0 0 0 0 0 3 6 0 Az 0 0 0 Cz 0 Bz 0 0 0 Dz 0 0 Ay 0 Cy 0 0 0 By 0 Dy 0 Iy +Iz Iy +Iz 0 0 0 0 0 0 0 0 0 0 3A 6A 0 0 Cy 0 Ey 0 0 0 Dy 0 Fy 0 0 Cz 0 0 0 Ez 0 Dz 0 0 0 Fz m = Al 1 0 0 0 0 0 1 0 0 0 0 0 6 3 0 Bz 0 0 0 Dz 0 Az 0 0 0 Cz 0 0 By 0 Dy 0 0 0 Ay 0 Cy 0 Iy +Iz Iy +Iz 0 0 0 0 0 0 0 0 0 0 6A 3A 0 0 Dy 0 Fy 0 0 0 Cy 0 Ey 0 0 Dy 0 0 0 Fz 0 Cz 0 0 0 Ez (3.4) Wobei gilt Ai = Bi = Ci = Di = Ei = Fi = und i = y, z. 13 6 Ii + 2 5 Al 35 6 Ii 9 + 5 Al2 70 1 Ii 11l + 10 Al 210 1 Ii 13l 10 Al 420 2 Ii l2 + 15 A 105 1 Ii l2 30 A 140 (3.5)
10
KAPITEL 3. MASSENMATRIX
3.5
Plane2
Das Plane2-Element ist ein zweidimensionales Dreieckelement mit sechs Knoten (Abb. 3.1).
Die Formfunktionen sind [8]: N1 = (2L1 1)L1 N2 = (2L2 1)L2 N3 = (2L3 1)L3 N4 = 4L1 L2 N5 = 4L2 L3 N6 = 4L1 L3 wobei L1 , L2 , und L3 die Dreieckskoordinaten sind [8]. (3.6)
3.6
Plane182
Das Plane182-Element ist ein zweidimensionales Viereckelement mit vier in den Ecken angeordneten Knoten (Abb. 3.2).
11
KAPITEL 3. MASSENMATRIX
3.7
Plane183
Das Plane183-Element ist ein zweidimensionales Viereckelement mit acht Knoten. Diese sind in den Ecken und an den Seitenmitten angeordnet (Abb. 3.3).
N1 = N2 = N3 = N4 = N5 = N6 = N7 = N8 =
(3.8)
3.8
Solid185
Das Solid185-Element ist ein dreidimensionales Quaderelement mit acht Knoten. Diese sind in den Ecken angeordnet (Abb. 3.4). 12
KAPITEL 3. MASSENMATRIX
N1 = N2 = N3 = N4 = N5 = N6 = N7 = N8 =
1 (1 )(1 )(1 ) 8 1 (1 + )(1 )(1 ) 8 1 (1 + )(1 + )(1 ) 8 1 (1 )(1 + )(1 ) 8 1 (1 )(1 )(1 + ) 8 1 (1 + )(1 )(1 + ) 8 1 (1 + )(1 + )(1 + ) 8 1 (1 )(1 + )(1 + ) 8
(3.9)
3.9
Solid186
Das Solid186-Element ist ein dreidimensionales Quaderelement mit 20 Knoten. Diese sind in den Ecken und in den Kantenmitten angeordnet (Abb. 3.5). 13
KAPITEL 3. MASSENMATRIX
Die Formfunktionen sind [8]: 1 N1 = (1 )(1 )(1 )( 2) 8 1 N2 = (1 + )(1 )(1 )( 2) 8 1 N3 = (1 + )(1 + )(1 )( + 2) 8 1 N4 = (1 )(1 + )(1 )( + 2) 8 1 N5 = (1 )(1 )(1 + )( + 2) 8 1 N6 = (1 + )(1 )(1 + )( + 2) 8 1 N7 = (1 + )(1 + )(1 + )( + + 2) 8 1 N8 = (1 )(1 + )(1 + )( + + 2) 8 1 N9 = (1 2 )(1 )(1 ) 4 1 N10 = (1 2 )(1 + )(1 ) 4 1 N11 = (1 2 )(1 + )(1 ) 4 1 N12 = (1 2 )(1 )(1 ) 4 1 N13 = (1 2 )(1 )(1 + ) 4 1 N14 = (1 2 )(1 + )(1 + ) 4 1 N15 = (1 2 )(1 + )(1 + ) 4 1 N16 = (1 2 )(1 )(1 + ) 4 1 N17 = (1 2 )(1 )(1 ) 4 1 N18 = (1 2 )(1 + )(1 ) 4 1 N19 = (1 2 )(1 + )(1 + ) 14 4 1 N20 = (1 2 )(1 )(1 + ) 4
(3.10)
KAPITEL 3. MASSENMATRIX
3.10
Solid187
Das Solid187-Element ist ein dreidimensionales Tetraederelement mit zehn Knoten. Diese sind in den Ecken und in den Kantenmitten angeordnet (Abb. 3.6).
Die Formfunktionen sind [8]: N1 = (2L1 1)L1 N2 = (2L2 1)L2 N3 = (2L3 1)L3 N4 = (2L4 1)L4 N5 = 4L1 L2 N6 = 4L2 L3 N7 = 4L1 L3 N8 = 4L1 L4 N9 = 4L2 L4 N10 = 4L3 L4 wobei L1 , L2 , L3 und L4 Tetraeder-Koordinaten sind [8]. (3.11)
3.11
Numerische Integration
Fr die Elementtypen in den Abschnitten 3.5 - 3.10 muss die Elementmassenmatrix durch u numerisches Auntegrieren an bestimmten Integrationspunkten ermittelt werden. Fr u zweidimensionale Elementtypen gilt an jedem Integrationspunkt i: Ni = N1,i 0 N2,i 0 N3,i 0 Nn,i 0 0 N1,i 0 N2,i 0 N3,i 0 Nn,i (3.12)
wobei n die Anzahl Knoten des Elements ist. Fr dreidimensionale Elemente gilt: u N1,i 0 0 N2,i 0 0 Nn,i 0 0 N1,i 0 0 N2,i 0 0 Nn,i 0 Ni = 0 0 0 N1,i 0 0 N2,i 0 0 Nn,i
(3.13)
Die Massenmatrix m eines Elements wird durch Aufsummierung der skalierten Matrizen NT N erhalten. 15
KAPITEL 3. MASSENMATRIX
m=
i=1
wi det(Ji )NT N
(3.14)
wobei wi die Gewichtung des Integrationspunkts, die Dichte des Materials und k die Anzahl Integrationspunkte des Elements sind. Ji ist die Jacobi-Matrix am Integrationspunkt i. Sie wird auch fr das Aufstellen der Steigkeitsmatrix gebraucht und von dort u ubernommen.
3.12
Globale Massenmatrix
Das Aufstellen der globalen Massenmatrix GMM geschieht analog zum Aufstellen der globalen Steigkeitsmatrix GSM. Der Code, der die GSM generiert, ist ubernommen und entsprechend modiziert worden. Anpassungen waren ntig in PreProcessing.inl, o Element.inl, der Basisklassen der Elementtypen und der Klassen der Elementtypen selber.
16
Kapitel 4
Spezielles Eigenwertproblem
4.1 Idee
Um die Eigenfrequenzen einer Struktur zu berechnen, ist ein allgemeines Eigenwertproblem (Gleichung 4.1) zu lsen. o Kui = i Mui (4.1) wobei i die Eigenwerte und ui die Eigenvektoren des Problems sind. Einfacher zu lsen und in der Literatur huger beschrieben ist allerdings ein spezielles o a Eigenwertproblem (Gleichung 4.2). Cui = i ui (4.2)
Wre die Matrix C bekannt, knnte das Eigenwertproblem auf einfachere Weise a o gelst werden. Als Solver knnte zum Beispiel die Iterative Eigenproblem Template o o library [11] verwendet werden. Die Matrix C kann man durch Invertieren der Matrix M und Multiplizieren mit der Matrix K (Gleichung 4.3) erhalten. C = M1 K (4.3)
Dieser Weg hat zwei Schwachpunkte. Die Inversion der Matrix M ist mit sehr viel Rechenaufwand verbunden. Daneben ist die Matrix C im Allgemeinen nicht mehr symmetrisch.
4.2
Durchfuhrung
Es gibt noch einen anderen Weg, das allgemeine Eigenwertproblem auf ein spezielles zurckzufhren [4]. Hier ist keine Inversion ntig und die erhaltene Matrix C ist symu u o metrisch, was die Eigenwertsuche vereinfacht. Zuerst fhrt man eine Cholesky-Zerlegung der Massenmatrix durch. u M = LLT (4.4)
Da L keine grssere Enveloppe als M hat, kann die Zerlegung an der Stelle von M paso sieren, um Speicherplatz zu sparen. Dann wird eine Hilfsmatrix H gebildet. H = KLT (4.5) 17
Die Matrix H ist voll besetzt und nicht mehr symmetrisch. Es gengt jedoch, ihre untere u Hlfte zu bestimmen. Dies geschieht kollonnenweise mittels Gleichung 4.6. a HLT = K (4.6)
Jetzt kann aus Gleichung 4.7 die symmetrische Matrix C durch Vorwrtseinsetzen berecha net werden. LC = H (4.7)
Die Matrix C ist zwar symmetrisch, aber vollbesetzt. Da die Speicherung einer vollbesetzten Matrix bei vielen Freiheitsgraden enorm viel Speicherplatz beansprucht, wurde dieser Lsungsweg als unrealistisch bewertet und nicht weiter verfolgt. o
4.3
Beispiel
Das folgende Beispiel soll die Reduktion eines allgemeinen auf ein spezielles Eigenwertproblem illustrieren. Die Steigkeits- und Massenmatrix stammen aus dem Balkenproblem in Kapitel 2.
K = 106
260 0 0 130 0 0 0 0 0 0 0 0 0 0.41 0 0 0.2 0.1 0 0 0 0 0 0 0 0.14 0 0.1 0.034 0 0 0 0 0 0 0 0 260 0 0 130 0 0 0 0 0 130 0 0 0.2 0.1 0 0.41 0 0 0.2 0.1 0 0 0 0 0.1 0.034 0 0 0.14 0 0.1 0.034 0 0 0 0 0 0 130 0 0 260 0 0 130 0 0 0 0 0 0 0.2 0.1 0 0.41 0 0 0.2 0.1 0 0 0 0 0.1 0.034 0 0 0.14 0 0.1 0.034 0 0 0 0 0 0 130 0 0 130 0 0 0 0 0 0 0 0 0 0.2 0.1 0 0.2 0.1 0 0 0 0 0 0 0 0.1 0.034 0 0.1 0.068
(4.8)
M =
2.9 0 0 0.72 0 0 0 0 0 0 0 0 0 3.2 0 0 0.56 0.13 0 0 0 0 0 0 0 0.082 0 0.13 0.031 0 0 0 0 0 0 0 0.72 0 0 2.9 0 0 0.72 0 0 0 0 0 0 0.56 0.13 0 3.2 0 0 0.56 0.13 0 0 0 0 0.13 0.031 0 0 0.082 0 0.13 0.031 0 0 0 0 0 0 0.72 0 0 2.9 0 0 0.72 0 0 0 0 0 0 0.56 0.13 0 3.2 0 0 0.56 0.13 0 0 0 0 0.13 0.031 0 0 0.082 0 0.13 0.031 0 0 0 0 0 0 0.72 0 0 1.4 0 0 0 0 0 0 0 0 0 0.56 0.13 0 1.6 0.23 0 0 0 0 0 0 0 0.13 0.031 0 0.23 0.041
(4.9)
L =
1.7 0 0 0 0 0 0 0 0 0 0 0 0 1.8 0 0 0 0 0 0 0 0 0 0 0 0 0.29 0 0 0 0 0 0 0 0 0 0.42 0 0 0 0 0 0 0 0 0 0 0 0.31 0.47 1.6 1.7 0 0 0 0 0 0 0 0 0.075 0.11 0 0.043 0.25 0 0 0 0 0 0 0 0 0 0.44 0 0 1.6 0 0 0 0 0 0 0 0 0 0.33 0.48 0 1.7 0 0 0 0 0 0 0 0 0.079 0.11 0 0.046 0.25 0 0 0 0 0 0 0 0 0 0 0.44 0 0 1.1 0 0 0 0 0 0 0 0 0 0.33 0.48 0 1.1 0 0 0 0 0 0 0 0 0.079 0.11 0 0.13 0.075
(4.10)
H = 106
0 0 120 0 0 0.23 0 0 0.16 0 0.48 0 0.19 0 0 180 0 75 0 0 0.11 0.36 0 0.36 0 0.057 0.12 0 0.043 0 0 0 78 0 0 0 0 0 0.12 0 0 0 0 0.06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
150
0 31 0 0 12 0.5 0 0.11 0.19 0 0.37 0 0.068 0.12 0 0 120 0 0 49 0.25 0 0.12 0.44 0 0.62 0 0.23 0.44 0 0 180 0 0 180 0.39 0 0.37 0.28 0 0.13 0 0.047 0.63 0 0 78 0 0 150 0 0 0.12 0.39 0 0 0 0.06 0.13 0
18
C = 106
89 0 0 69 0 0 18 0 0 7.2 0 0
69 0 0 120 0 0 81 0 0 32 0 0
0 18 0 0 7.2 0 0 0.28 0 0.061 0.11 0 0.027 0.042 1.3 0 0.24 0.4 0 0.1 0.16 0 81 0 0 32 0 0 0.55 0 0.005 0.13 0 0.055 0.094 3.2 0 1 1.9 0 0.51 0.82 0 130 0 0 120 0 0 1 0 0.5 0.72 0 0.052 0.37 1.9 0 0.72 3.5 0 1.6 3.2 0 120 0 0 180 0 0 0.51 0 0.052 1.6 0 1 2.7 0.82 0 0.37 3.2 0 2.7 12
(4.12)
Hier und in Rechnungen mit Matrizen hherer Ordnung fllt auf, dass die Matrix C o a zwar vollbesetzt ist, dass aber Eintrge stark kleiner werden, je weiter weg sie von der a Diagonalen sind. Es ist wohl gut mglich, in gengendem Abstand von der Diagonalen o u ein Band zu legen und die Werte ausserhalb des Bandes Null zu setzen, ohne dass die Eigenwerte von C signikant verflscht werden. a Da dieser Weg in der Literatur aber kaum beschrieben ist, wird dies nicht die optimale Lsung fr das gegebene Problem sein. o u
19
Kapitel 5
Vektoriteration
5.1 Idee
eignet sich, um die kleinsten Eigenwerte und die dazugehrigen o allgemeinen Eigenwertaufgabe zu berechnen. Bei dieser Methode zur Reduktion auf ein spezielles Eigenwertproblem, die Hllenform u Massenmatrix optimal ausgentzt. u
Die Vektoriteration startet mit einem beliebigen Startvektor, dessen Dimension gleich der Anzahl Freiheitsgrade des Problems ist. Im Verlauf der Iteration nhert er sich a immer mehr einem Eigenvektor an. Bei gengender Genauigkeit wird der Algorithmus u abgebrochen und mit Hilfe des Eigenvektors der dazugehrige Eigenwert berechnet. o Fr die mathematische Herleitung des Algorithmus sei auf Schwarz [4] verwiesen. u
5.2
Umsetzung
Fr die Umsetzung in C++ wird die simultane Vektoriteration verwendet. Dabei werden u statt nur einem Vektor y mehrere Vektoren gleichzeitig iteriert. Die Anzahl der Vektoren entspricht der Anzahl der gesuchten Eigenwerte. Die Vektoren werden in die Matrix Y geschrieben. Abbildung 5.1 zeigt das Flussdiagramm der simultanen Vektoriteration. Die Matrizen Y, H1 , H2 , H3 , und Z haben die Dimensionen mn, wobei m die Ordnung der Steigkeitsbzw. Massenmatrix und n die Anzahl der gesuchten Eigenwerte ist. Die Matrizen R, C, und G haben die Dimensionen n n. In einem ersten Schritt wird die Cholesky-Zerlegung (Gl. 5.1) auf die Steigkeitsund Massenmatrix angewendet. Daraus ergeben sich die Matrizen LK und LM , welche in der gleichen Hlle wie K und M gespeichert werden knnen. Die Startmatrix Y0 kann u o beliebig gewhlt werden. a K = LK LT K M = LM LT M (5.1)
Im Iterationsprozess wird zuerst die Matrix H1 berechnet durch Multiplikation der Matrizen LM und Y. Damit wird nun die Matrix H2 mittels Vorwrtseinsetzen im Gleia 20
KAPITEL 5. VEKTORITERATION
chungssystem 5.2 ermittelt. LK H2 = H1 (5.2) Im Gleichungssystem 5.3 wird dann die Matrix H3 mittels Rckwrtseinsetzen berechnet. u a LT H3 = H2 K (5.3)
Nach einer weiteren Multiplikation von LT mit H3 gelangt man zur Matrix Z. Diese wird M einer QR-Zerlegung unterzogen, wobei nur die Matrix R berechnet und fr den weiteren u Verlauf bentigt wird. Aus der Multiplikation der Matrix R mit ihrer Transponierten o ergibt sich die Matrix H. In einem weiteren Schritt wird die Matrix H diagonalisiert, daraus ergibt sich die orthogonale Matrix G. Die neue Matrix Y erhlt man schliesslich durch Multiplikation a von Q mit G. Falls Y schon gengend gegen die Eigenvektoren konvergiert ist, wird die Iteration u abgebrochen und die Eigenwerte berechnet. Ansonsten wird der ganze Rechenablauf nochmals mit dem neuen Vektor Y wiederholt. Ein Matlab-Programm fr die simultane Vektoriteration ndet sich in Anhang A. u
21
KAPITEL 5. VEKTORITERATION
5.3
Orthogonalisierung
Die Orthogonalisierung der Matrix H geschieht mit dem Jacobi-Verfahren [12]. Dafr u ist eine eigene Iteration ntig. G und V haben die Dimensionen von H. Die Matrix G o wird gleich der Einheitsmatrix gesetzt. Im Iterationsschritt wird zuerst der absolut grsste o Eintrag hp,q der Matrix H gesucht. Dann wird der Wert gemss Gleichung 5.4 berechnet a = 1 arctan 2 2hp,q hp,p hq,q (5.4)
wobei hp,q der Eintrag in der pten Zeile und qten Spalte von H ist. Dann wird V gleich der Einheitsmatrix gesetzt. Die folgenden Eintrge werden in V vorgenommen. a vp,p = vq,q = cos() vp,q = sin() vq,p = sin() Aus VT HV wird ein neues H berechnet, welches sich immer mehr einer Diagonalmatrix annhert. Schliesslich wird mit GV ein neues G berechnet. Wenn dieses sich nicht mehr a stark ndert oder eine bestimmte Anzahl Iterationsschritte erreicht ist, approximiert G a die orthogonalisierte Matrix H. Ein Matlab-Programm zur Orthogonalisierung ndet sich ebenfalls in Anhang A. (5.5)
5.4
Weitere Detaillierungen
QR-Zerlegung sei auf Schwarz [4]
22
KAPITEL 5. VEKTORITERATION
Die in der simultanen Vektoriteration nach erfolgter Konvergenz erhaltenen Vektoren yi mssen noch durch Rckwrtseinsetzen mit LM auf die eigentlich gesuchten Eigenveku u a toren ui zurcktransformiert werden. Da Rckwrtseinsetzen schon im dritten Schritt u u a der Iteration vorkommt, kann dieselbe Funktion verwendet werden.
2 Die Eigenwerte i ergeben sich als Rayleighsche Quotienten der Eigenvektoren. 2 i =
(5.6)
Fr den praktischen Einsatz eignet sich die Vektoriteration in der C++u Implementierung nicht. Sie bentigt schon fr kleine Matrizen uber 100 Mal mehr o u Zeit um die Lsung zu berechnen, als das Verfahren von Lanczos. Die Implementierung o ist nicht optimal, ihre Ezienz knnte sicher noch betrchtlich gesteigert werden. o a
23
Kapitel 6
Das eigentliche Verfahren von Lanczos eignet sich um die grssten Eigenwerte eines speo ziellen Eigenwertproblems zu berechnen. Um ein bestimmtes Spektrum von Eigenwerten zu erhalten, bentzt man ein invertiertes, spektralverschobenes Eigenwertproblem. Auf u das allgemeine Eigenwertproblem wird zuerst eine Spektralverschiebung um angewandt.
2 (K M)ui = (i )Mui
(6.1)
Die Reduktion auf ein spezielles Eigenwertproblem geschieht nicht explizit wie in Kapitel 4, sondern implizit im Verfahren von Lanczos. Formal sieht das spezielle spektralverschobene Eigenwertproblem dann folgendermassen aus
2 Cyi = L1 (K M)LT yi = (i )yi M M
(6.2)
wobei LM die Cholesky-Zerlegung von M und yi = LT ui sei. M Ursprnglich sind ja diejenigen Eigenwerte gesucht, die am nchsten zum Wert liegen. u a Diese sind die betragsmssig kleinsten Eigenwerte von C. Da aber die kleinsten Eigenwerte a im vergleich zum gesamten Spektrum von Eigenwerten schlecht voneinander getrennt sind, wrde der Lanczos-Algorithmus nur langsam gegen die gesuchten Werte konvergieren. u Deshalb wird mit der Inversen von C gearbeitet, deren Eigenwerte i = 21 sind. Die i betragskleinen Eigenwerte werden so in betragsgrosse uberfhrt, welche in der Regel gut u getrennt sind (Abb. 6.1). Dies hat eine schnelle Konvergenz des Algorithmus zur Folge.
Die Aufgabe dieser Arbeit ist es, die kleinsten Eigenfrequenzen einer Struktur zu bestimmen. Aus diesem Grund betrgt bei der Implementierung der Wert immer Null. a 24
Es wird also mit einem invertierten, aber nicht spektralverschobenen System gerechnet. Dies hat insbesondere beim Lsen des Gleichungssystems Fu = h im Lanczos-Algorithmus o den Vorteil, dass die Matrix F immer positiv denit, und so das Lsen nach u deutlich o einfacher ist. Um die Allgemeinheit jedoch nicht einzuschrnken, wird im Bericht aber a die Methode mit einer Spektralverschiebung weiterverfolgt. Fr die mathematische Herleitung des Algorithmus, insbesondere der impliziten Reu duktion auf ein spezielles Eigenwertproblem, sei auf Schwarz [4] verwiesen.
6.2
Umsetzung
Abbildung 6.2 zeigt das Flussdiagramm des Verfahren von Lanczos. Die Vektoren h, q, r und u haben dieselbe Ordnung wie die Steigkeits- bzw. Massenmatrix. F kann in dieselbe Hlle wie K oder M geschrieben werden. und sind Skalare. u
K, M, : r0 whlen h0 = Mr0 $0 = (h0Tr0)1/2 F = K-:M qk = rk/$k hk = hk/$k Fuk = hk rk = uk-$kqk-1 "k = hkTrk rk+1 = rk-"kqk ev, evec
evec berechnen vollstndige M-orthogonalisierung von rk+1
++k
ev
evec berechnen?
ev = eig(T(",$))
ev konvergiert?
25
Zuerst wird der Startvektor r0 beliebig gewhlt. Mittels Multiplikation mit der a 2 Massenmatrix wird damit h0 berechnet. Das Skalarprodukt von r0 und h0 ergibt 0 . Die Matrix F kann an der Stelle von K aufgebaut werden, da die Steigkeitsmatrix im und nach dem Lanczos-Algorithmus nicht mehr bentigt wird. Ohne Spektraltransformation o sind F und K ohnehin identisch. Um das Gleichungssystem Fu = h im dritten Schritt der Iteration mglichst ezio ent Lsen zu knnen, ist eine Zerlegung der Matrix F notwendig. Diese geschieht am o o besten gleich vor der ersten Iteration. Wie in Abschnitt 6.1 bereits erwhnt, ist F ohne a Spektralverschiebung immer positiv denit. Die Matrix F kann direkt zerlegt und in dieselbe Hlle geschrieben werden, weil sie nur zum Lsen des Gleichungssystems bentigt wird. u o o Mit skyline solve() existiert bereits eine eziente Funktion in FELyX, um die Zerlegung und die anschliessende Rcksubstition zur Lsung eines Gleichungssystems u o vorzunehmen. Da die rechenaufwndige Zerlegung nur einmal, die Rcksubstition aber in a u jedem Iterationsschritt gebraucht wird, wird der Algorithmus zur Rcksubstition in die u neue Funktion backsubstitution() geschrieben. Bei einer Spektralverschiebung ist F in der Regel nicht positiv denit. Bei der Zerlegung msste anders vorgegangen werden. F msste in einer erweiterten Hlle von K u u u aufgebaut werden, die pro Zeile zwei Eintrge mehr aufnehmen knnte [4]. a o
1 Beim eigentlichen Lanczos-Schritt werden zuerst die Vektoren r bzw. h mit skaliert und in den Vektor q bzw. wieder in h geschrieben. Dann wird das Gleichungssystem Fu = h, wie bereits erwhnt, mit der Funktion backsubstitution() gelst. Im ersten a o Lanczos-Schritt wird r gleich u gesetzt und in jedem folgenden dann gleich u minus dem mit skalierten Vektor q aus dem vorhergehenden Lanczos-Schritt. Aus dem Skalarprodukt der Vektoren h und r ergibt sich und damit ein neuer Vektor r, indem der mit skalierte Vektor q von r subtrahiert wird.
qk sind die Basisvektoren des Krylov-Unterraums. Mit zunehmender Schrittzahl k geht ihre Orthogonalitt verloren, so dass sie schliesslich linear abhngig werden und a a man nicht mehr von einer Basis sprechen kann. Dies fhrt dazu, dass mehrfache Kopien u von Eigenpaaren berechnet werden. Der Lanczos-Algorithmus galt deshalb lange Zeit als instabil und nicht brauchbar. Die Orthogonalitt der Basisvektoren qk kann aber a durch eine vollstndige Orthogonalisierung bezglich aller vorangehenden Vektoren q a u numerisch erzwungen werden. Die Vektoren qk mssen also in jedem Lanczos-Schritt u gespeichert werden. Sie werden in die kte Spalte der (m n)-Matrix Q geschrieben, wobei m der Ordnung von q entspricht und n die zu Beginn festzulegende maximale Anzahl der Lanczos-Schritte ist. Die vollstndige Orthogonalisierung bezglich M ist in Gleichung a u 6.3 dargestellt.
r = r Q(QT (Mr))
(6.3)
Nach erfolgter Orthogonalisierung wird M mit r multipliziert und so ein neuer Vektor h erzeugt. 2 ergibt sich dann als Skalarprodukt von h und r. 26
6.3
Bisektionsmethode
Die skalaren Werte k und k werden in eine mit jedem Lanczos-Schritt wachsende Matrix T geschrieben. 1 1 1 2 2 2 3 3 T= (6.4) 3 4 4 .. .. .. . . . Die gesuchten grssten Eigenwerte der Matrix C (Gl. 6.2) entsprechen den Eigenwero ten der Matrix T. Diese ist mit der Ordnung k relativ klein und ausserdem tridiagonal. Dies erlaubt ein ezientes Berechnen ihrer Eigenwerte mit der Bisektionsmethode. Zuerst wird eine untere und obere Schranke a und b fr das Spektrum der Eigenwerte u festgelegt (Abb. 6.3). Fr die obere Schranke eignet sich eine beliebige Matrixnorm, in u der Implementierung die Zeilenmaximumnorm. Die untere Schranke ist im allgemeinen Fall a = b. Ohne Spektralverschiebung kann Null als untere Schranke angenommen werden, da dann sicher keine Eigenwerte von C negativ sind.
In jedem Bisektionsschritt wird die Folge [q1 , q2 , q3 , ..., qk ] rekursiv deniert nach der Rekursionsvorschrift 6.5. q1 = 1 qj = ( j )
2 j1
(6.5) qj1
mit j = 2, 3, ..., k. Falls ein q Null werden sollte, wird es gleich minus der kleinsten Maschinenzahl (Maschinen-Epsilon) gesetzt, damit keine Division durch Null auftritt [4]. Die Anzahl Elemente der Folge mit negativem Vorzeichen ist gleich der Anzahl Eigenwerte, die grsser als der Wert sind. o Damit lsst sich nun jeder Eigenwert beliebig genau lokalisieren. Zur Illustration des a Vorgehens dient das Beispiel in Abbildung 6.3. Es sei der grsste Eigenwert gesucht. Zu o a+b Beginn wird 1 = 2 gesetzt. Die Folge 6.5 wird berechnet, woraus sich ergibt, dass drei Eigenwerte grsser als 1 sind. 1 wird zur neuen unteren Schranke a und 2 = a+b o 2 wird berechnet. Die Folge sagt aus, dass noch ein Eigenwert grsser als 2 ist. 2 wird o neue untere Schranke a. Oberhalb von 3 liegt kein Eigenwert mehr, so dass die obere Schranke b auf 3 gesetzt wird. Und so weiter. Ungleichung 6.6 beschreibt die Anzahl ntiger Bisektionsschritte t, um eine absolute o Genauigkeit zu erreichen. ba t log2 1 (6.6) 27
6.4
Mit jedem Lanczos-Schritt, das heisst mit grsser werdender Matrix T approximieren die o ermittelten Eigenwerte von T die grssten Eigenwerte von C besser (Abb. 6.4). In der Imo plementation gilt als Konvergenzkriterium die relative Anderung eines Eigenvektors von einem zum nchsten Lanczos-Schritt. Fllt diese relative Anderung bei allen gesuchten a a Eigenvektoren unter einen bestimmten Wert tol, wird das Verfahren von Lanczos abgebrochen. Es macht natrlich erst Sinn die Eigenwerte von T zu berechnen, wenn die Ordnung u der Matrix grsser oder gleich der Anzahl gesuchter Eigenwerte ist. o
Da ja ein inverses und eventuell spektralverschobenes Eigenwertproblem behandelt worden ist (Abschn. 6.1), mssen die konvergierten Eigenwerte i von C auf die uru 2 sprnglich gesuchten Eigenwerte i mittels Gleichung 6.7 zurcktransformiert werden. u u
2 i =
1
i
(6.7)
Die erhaltenen Eigenwerte i sind schliesslich noch durch 2 zu dividieren, um die gesuchten Eigenfrequenzen der Struktur in Hertz zu erhalten. i fi = (6.8) 2 Fr die Berechnung der Eigenvektoren, die erst am Schluss erfolgt und kaum Zeit u beansprucht, werden nur die Matrizen Q und T bentigt. Der Algorithmus dazu stammt o aus einem Fortran-Programm [5] und ist in C++ ubersetzt worden.
6.5
Probleme, Block-Lanczos
Das Problem von mehrfachen Kopien einzelner Eigenpaar ist durch die vollstndige a Orthogonalisierung eliminiert worden. Dabei wird die Matrix Q mit smtlichen je berecha 28
neten Vektoren q bentzt. Um die Ezienz noch etwas zu steigern, knnte die selektive u o Orthogonalisierung angewendet werden, welche aber schwieriger zu implementieren ist. Es kann im Verfahren von Lanczos gelegentlich vorkommen, dass Eigenwerte ausgelassen werden. Dies ist bei Testberechnungen nur einmal geschehen. Bei felyx-solid186-200.ansys wird der 18. Eigenwert ausgelassen (Tab. 6.1). Die Werte LANB sind mit der Block-Lanczos-Methode von Ansys6.0 berechnet worden. Die Vollstndigkeit des Eigenwertspektrums msste nachtrglich mittels erneuter Rechnung a u a und geeignet gewlter Spektralverschiebung um uberprft werden [4]. a u Ein aulligeres Problem ist, dass der Lanczos-Algorithmus grundstzlich nicht fhig a a a ist, mehrfache Eigenwerte zu bestimmen, weil die tridiagonale Matrix T nur paarweise verschiedene Eigenwerte haben kann. Bei den Testberechnungen ist dies jedoch nicht oft aufgetreten. Bei der oben erwhnten Struktur werden zwei doppelte Eigenwerte nur a einfach berechnet. Nr. 1 2 3 4 5 6 7 8 9 10 LANB 20.835 20.835 129.61 129.61 358.77 358.77 460.77 691.75 691.75 806.22 FELyX 20.835 20.835 129.61 129.61 358.77 358.77 460.77 691.75 691.75 806.22 Nr. 11 12 13 14 15 16 17 18 19 LANB 1120.8 1120.8 1382.3 1635.6 1635.6 2225.9 2225.9 2303.8 2303.8 FELyX 1120.8 1120.8 1382.3 1635.6 2225.9
Der Grund, warum die meisten mehrfachen Eigenwerte auch als mehrfache berechnet werden, sind wohl numerische Ungenauheiten. Bei der Berechnung eines doppelten Eigenwerts werden wohl kaum zwei genau gleiche Eigenwerte resultieren, sondern sie werden sich ein wenig unterscheiden. Sei es aus Grnden von kleinen Fehlern, die schon beim u Meshen entstehen, oder aus Rundungsfehlern irgendwo im ganzen Rechengang. Hier hat das Rechnen mit approximierten Werten fr einmal einen Vorteil. u Um mehrfache Eigenwerte sicher berechnen zu knnen, ist das Block-Lanczoso Verfahren entwickelt worden [3]. Die Matrix T ist dabei nur blockweise tridiagonal. Die Eigenwerte knnen nicht mehr mit der Bisektionsmethode bestimmt werden, es muss zum o Beispiel die Methode der Vektoriteration (Kap. 5) angewendet werden.
29
Kapitel 7
Testresultate
Das Aufstellen der Massenmatrizen der verschiedenen Elementtypen sowie das programmierte Verfahren von Lanczos bedrfen einer Verikation. Dafr werden die tiefsten zehn u u Eigenfrequenzen der Strukturen in den Testles von FELyX berechnet. Es muss jeweils noch die Dichte des Materials bestimmt werden, die fr die statische Berechnung nicht u ntig ist. o In den folgenden Abschnitten ist jeweils angegeben, wie lange die Berechnung mit den Eigensolvern Subspace (SUBSP) und Block-Lanczos (LANB) von Ansys6.0 sowie mit FELyX auf einem SunBlade100, 450 MHz dauert. Die Zeit bezieht sich nur auf das Lsen o des Eigenwertproblems nach Eigenwerten und Eigenvektoren. Die Zeiten t fr SUBSP und LANB werden folgendermassen berechnet. u t = (c2 c1 ) w c (7.1)
wobei c1 bzw. c2 die CPU-Zeiten vor bzw. nach dem Lsen des Eigenwertproblems beo deuten. c ist die CPU-Zeit und w die tatschlich verstrichene Zeit fr die gesamte a u Berechnung.
7.1
Link8
Spezikationen fr felyx-link8-21.ansys: u Freiheitsgrade SUBSP [s] LANB [s] FELyX [s] 18 2.7e-6 0.03
30
KAPITEL 7. TESTRESULTATE
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
7.2
Beam3
Spezikationen fr felyx-beam3-800.ansys: u Freiheitsgrade SUBSP [s] LANB [s] FELyX [s] 2387 2.7e-6 3.1 2.2 1.3
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
31
KAPITEL 7. TESTRESULTATE
7.3
Beam4
Spezikationen fr felyx-beam4-50.ansys: u Freiheitsgrade SUBSP [s] LANB [s] FELyX [s] 3558 0.0027 10.1 5.1 2.4
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
7.4
Plane2
Spezikationen fr felyx-plane2-6654.ansys: u Freiheitsgrade SUBSP [s] LANB [s] FELyX [s] 27196 0.0027 82.9 79.6 56.2
32
KAPITEL 7. TESTRESULTATE
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
7.5
Plane182
Spezikationen fr felyx-plane182-bwopt-4731.ansys: u Freiheitsgrade SUBSP [s] LANB [s] FELyX [s] 9996 0.0027 13.1 19.1 7.6
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
33
KAPITEL 7. TESTRESULTATE
7.6
Plane183
Spezikationen fr felyx-plane183-2500.ansys: u Freiheitsgrade SUBSP [s] LANB [s] FELyX [s] 15398 0.0027 80.4 45.3 45.7
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
7.7
Solid185
Spezikationen fr felyx-solid185-200.ansys: u Freiheitsgrade SUBSP [s] LANB [s] FELyX [s] 1350 0.0027 2.20 1.52 1.14
34
KAPITEL 7. TESTRESULTATE
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
7.8
Solid186
Spezikationen fr felyx-solid186-200.ansys: u Freiheitsgrade SUBSP [s] LANB [s] FELyX [s] 4500 2.7e-6 10.2 13.9 6.8
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
7.9
Solid187
Spezikationen fr felyx-solid187-1453.ansys: u
35
KAPITEL 7. TESTRESULTATE
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
7.10
2D-Mix
Spezikationen fr felyx-2d-mixed-316.ansys: u Freiheitsgrade 1 2 SUBSP [s] LANB [s] FELyX [s] 1391 2.7e-6 8e-6 1.7 2.0 1.0
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
36
KAPITEL 7. TESTRESULTATE
7.11
3D-Mix
Spezikationen fr felyx-3d-mixed-718.ansys: u Freiheitsgrade 1 2 SUBSP [s] LANB [s] FELyX [s] 6796 2.7e-6 8e-6 27.7 25.5 16.5
Nr. 1 2 3 4 5
Nr. 6 7 8 9 10
37
KAPITEL 7. TESTRESULTATE
7.12
Eigenvektoren
Die berechneten Eigenvektoren zu verizieren gestaltet sich etwas umstndlich. Das a Beispiel aus Kapitel 2 wird mit 16 Elementen berechnet. Dies fhrt auf 48 Freiheitsgrade, u also auch auf Eigenvektoren der Dimension 48. In Anhang C sind die berechneten Eigenvektoren dargestellt. Die extremalen Verschiebungen in horizontale Richtung sind sehr klein, jene in vertikale Richtung sind in Abbildung 7.12 dargestellt. Vergleicht man die entsprechenden Eintrge in den Vektoren a mit den berechneten Eigenvektoren in Gleichung 2.14 erkennt man nach entsprechender Skalierung Ubereinstimmung.
Abbildung 7.12: Erste vier Eigenformen des einseitig eingespannten Balken aus Kapitel 2
38
Kapitel 8
Benchmarking
8.1 Allgemeines
Zum Bestimmen der Ezienz des erstellten Eigensolvers wird ein Modell sowohl mit FELyX wie auch mit Ansys6.0 gerechnet. Als Testmodell dient die in der y-z-Ebene eingespannte Struktur in Abbildung 8.1 mit Solid187 Elementen. Alle mit FELyX errechneten Eigenfrequenzen stimmen exakt mit den Werten von Ansys6.0 uberein. In der Rechenzeit auf einem SunBlade100, 450 MHz gibt es aber Unterschiede.
8.2
Anzahl Freiheitsgrade
In Tabelle 8.1 sind die Rechenzeiten zusammengefasst, um die Steigkeits- und Massenamtrizen zu generieren und die tiefsten sechs Eigenfrequenzen und ihre Eigenvektoren der Struktur in Abbildung 8.1 zu berechnen. Elemente 311 833 1900 5408 9373 12577 Freiheitsgrade 2487 6165 12804 31584 50043 65547 SUBSP 4 11 25 80 192 291 LANB 5 15 34 111 313 509 FELyX 3.0 8.2 23.4 92.9 206.9 295.6
39
KAPITEL 8. BENCHMARKING
8.3
Anzahl Eigenfrequenzen
Als Testmodell dient wieder die Struktur in Abbildung 8.1 mit 5408 Solid187 Elementen, das heisst 31584 Freiheitsgraden. In Tabelle 8.2 sind die Rechenzeiten zusammengefasst, um die Steigkeits- und Massenamtrizen zu generieren und die tiefsten n Eigenfrequenzen und ihre Eigenvektoren zu berechnen. n 1 3 5 7 9 11 15 19 SUBSP 86 84 83 92 96 126 160 142 LANB 95 126 107 117 134 137 152 153 FELyX 72 82 88 97 104 119 144 142
40
Kapitel 9
Schlussbemerkungen
9.1 Dmpfungsmatrix C a
Bei der Berechnung von Eigenfrequenzen und Eigenschwingungsformen wird von idealen Strukturen ohne Dmpfung ausgegangen. In der Realitt tritt jedoch immer Dmpfung a a a auf, so dass eine Schwingung ohne ussere Anregung mit der Zeit abklingt (Abschn. 1.1). a Dmpfung bewirkt, dass die Eigenfrequenzen in Wirklichkeit tiefer liegen als die im a idealisierten Modell berechneten. Der Einuss der Dmpfung auf die Eigenfrequenzen a ist jedoch gering, dass diese in der Rechnung vernachlssigt werden darf [2]. Von der a Dmpfung verursachte Krfte sind in der Regel nur etwa 10 % so stark wie die anderen a a dynamischen Krfte. Zur Bestimmung von Antworten eines Systems auf dynamische a a u a u ussere Einsse muss die Dmpfung jedoch bercksichtigt werden. Die Dmpfungsmatrix wird gleich wie die Massenmatrix aus den Elementmatrizen a generiert. Die Elementdmpfungsmatrix wird analog zur Elementmassenmatrix (Gl. 3.14) a auntegriert.
k
c=
i=1
wi c det(Ji ) NT N
(9.1)
9.2
Um die Eigenwertberechnung etwas zu vereinfachen, knnte anstatt der Elementmasseno matrizen in Kapitel 3 die Lumped Mass Matrices angewendet werden. Das Ziel besteht darin, in den Elementmassematrizen nur Eintrge auf der Diagonalen zu haben. Dies a geschieht so, dass nur die Eintrge auf der Diagonalen gemss Kapitel 3 berechnet und a a dann so skaliert werden, dass die Elementmasse erhalten wird. Fr mehr Details sei auf u [2] verwiesen. Als weitere Variante existiert Optimal Lumping. Bei der Verwendung dieser Methoden wird die Rechenzeit etwas krzer auf Kosten der Genauigkeit der Resultate. u
9.3
Bei Vergleichen der Rechengeschwindigkeit von FELyX mit Ansys6.0 fllt auf, dass die a Generierung der globalen Steigkeits- und Massenmatrix bei FELyX mehr als doppelt 41
KAPITEL 9. SCHLUSSBEMERKUNGEN
so lange dauert als bei Ansys6.0. Bei FELyX werden die beiden Matrizen nacheinander aufgebaut, was zu Doppelspurigkeiten fhrt. Die Jacobi-Matrix J muss fr jedes Element u u zweimal berechnet werden. Hier liesse sich Zeit sparen, wenn K und M simultan generiert wrden. u Um statische Probleme zu lsen ist die Massenmatrix nicht ntig. Ihre Generierung o o muss sicher vermieden werden. Das ist bei der aufeinanderfolgenden Generierung einfach. Bei der simultanen Generierung muss jedoch tiefer im Code etwas verndert werden. a
9.4
Ziel
Das Ziel der Arbeit ist, einen ezienten Algorithmus zur Eigenfrequenz- und Eigenschwingungsformberechnung in FELyX zu implementieren. Vom Standpunkt der Ezienz ist das Ziel erreicht. Der implementierte Lanczos-Algorithmus kann mit kommerziellen Anwendungen mithalten. Es knnen nur die tiefsten Eigenpaare ermittelt werden. Eio ne Berechnung der Eigenpaare irgendwo im Spektrum ist aber ausdrcklich nicht verlangt. u Vom Standpunkt der Zuverlssigkeit gibt es noch kleine Makel. Es kann gelegentlich a vorkommen, dass Eigenpaare ausgelassen werden (Abschn. 6.5). Bei Tests geschieht das aber selten, und wenn, dann nicht bei den tiefsten zehn Eigenwerten. Gefordert ist, dass die tiefsten etwa zehn Eigenpaare berechnet werden knnen. Der Algorithmus ist also o sicher gut fr den alltglichen Einsatz brauchbar. u a
9.5
Matlab
Die Implementierung eines Rechenalgorithmus direkt in C++ ist schwierig, weil dabei ein kleiner Fehler zu falschen Ergebnissen oder zum Abbruch der Berechnung fhrt. Als u hilfreiche Anwendung hat sich dabei Matlab erwiesen, als Zwischenschritt zwischen dem Flowchart auf Papier und der Implementierung in C++. Weil Matlab eine hohe Programmiersprache ist, knnen Algorithmen unkompliziert auf wenigen Zeilen programmiert o werden (Anh. A, B). Sobald der Rechenablauf einwandfrei funktioniert, kann mit der Implementation in C++ begonnen werden. Falls dabei schliesslich falsche Ergebnisse resultieren, knnen mit Matlab Schritt fr Schritt die Zwischenergebnisse kontrolliert und so o u der Fehler lokalisiert werden. Dieses Vorgehen hat sich bewhrt und als ezient erwiesen. a
9.6
To do
Um die Arbeit zu kompletisieren und optimieren, knnten folgende Aufgaben erledigt o werden:
Massenmatrix der Shell-Elemente. Whrend dem Verlauf der Arbeit sind die a Shell-Klassen noch in Bearbeitung. Die Generierung der Massenmatrix wird nicht implementiert. Block-Lanczos-Verfahren. Um auch mehrfache Eigenwerte sicher darzustellen, kann die Block-Lanczos-Methode [3] implementiert werden (Abschn. 6.5). Spektralverschiebung. Um auch Eigenpaare an einer bestimmten Stelle im ganzen Spektrum ermitteln zu knnen, kann die Spektralverschiebung des Eigenwerto
42
KAPITEL 9. SCHLUSSBEMERKUNGEN
problems um implementiert werden. Dabei ist ein anderer Zerlegungsalgorithmus fr die Matrix F zu whlen, da diese nicht mehr positiv denit ist (Abschn. 6.1). u a
43
Literaturverzeichnis
[1] Z. Bai, J. Demmel, J. Dongarra, A. Ruhe, H. van der Vorst: Templates for the Solution of Algebraic Eigenvalue Problems, Siam, 2000 [2] R. Cook, D. Marlkus, M. Plesha, R. Witt: Concepts and Applications of Finite Element Analysis, Wiley, 2002 [3] R. Grimes, J. Lewis, H. Simon: A Shifted Block Lanczos Algorithm for Solving Sparse Symmetric Generalized Eigenproblems, Journal on Matrix Analysis and Applications, Vol. 15, 1994 [4] H.R. Schwarz: Methode der niten Elemente, Teubner, 1991 [5] H.R. Schwarz: FORTRAN-Programme zur Methode der niten Elemente, Teubner, 1991 [6] G.W. Stewart: Matrix Algorithms, Volume II, Siam, 2001 [7] T. Yokoyama: Vibrations of a Hanging Timoshenko Beam Under Gravity, Journal of Sound and Vibration, Vol. 141, 1990 [8] O.C. Zienkiewicz, R.L. Taylor: The Finite Element Method, Butterworth, Heinemann, 2000 [9] Ansys Theory Reference, www1.ansys.com/customer/content/documentation/60/theory toc.html [10] T. Irvine: The Tacoma Narrows Bridge Failure, www.vibrationdata.com/Tacoma.htm [11] P. Dayal, M. Troyer: The Iterative Eigenproblem Template library, www.comp-phys.org/software/ietl/ietl.html, 2002 [12] M. Ramek: Mathematik Tutorial: Das Jacobi-Verfahren, fptchal1.tu-graz.ac.at:8000/quanten/mjacobi.html, 2002
44
Anhang A
[m,n]=size(A); LAT = chol(A); LA = LAT; LBT = chol(B); LB = LBT; Y=zeros(n,p); H1=zeros(n,p); H2=zeros(n,p); H3=zeros(n,p); for i=1:p Y(i,i)=1; end for k=1:loops H1=LB*Y; H2=LA^(-1)*H1; H3=LAT^(-1)*H2; Z=LBT*H3; [Q,R]=qr(Z); C1=R*R; G=orth(C1); D=G*C1*G; Y=Q*G; 45
Programmcode fr die Orthogonalisierung (Abschn. 5.3). u function [U] = or2(C,loops) % C: zu orthogonalisierende Matrix % loops: Anzahl Iterationen [m,n]=size(C); U=eye(m); for k=1:loops temp=0; for j=1:m for i=1:j-1 if (abs(C(j,i))>temp) temp=abs(C(j,i)); jj=j; ii=i; end end end temp=2*C(jj,ii) / (C(jj,jj) - C(ii,ii)) alpha=.5*atan (temp) V=eye(m); V(ii,ii)=cos(alpha); V(jj,jj)=cos(alpha); V(jj,ii)=-sin(alpha); V(ii,jj)=sin(alpha); C=(V*C)*V; U=U*V; end
46
Anhang B
[ll,n]=size(d); % Berechnung der Eigenvektoren for j=1:n a(j,1)=mu+1/d(j); for i=1:jmax-1 al(i)=alpha(i)-d(j); be(i)=beta(i+1); ga(i)=beta(i+1); end; al(jmax)=alpha(jmax)-d(j); be(jmax)=0; for i=1:jmax-1 s1=abs(al(i))+abs(be(i)); s2=abs(ga(i))+abs(al(i+1))+abs(be(i+1)); if(abs(al(i))/s1 >= abs(ga(i))/s2) de(i)=0; uu=ga(i); u1=al(i+1); u2=be(i+1); vert(i)=0; else uu=al(i); u1=be(i); u2=0; al(i)=ga(i); be(i)=al(i+1); de(i)=be(i+1); vert(i)=1; end; ga(i)=uu/al(i); al(i+1)=u1-ga(i)*be(i); be(i+1)=u2-ga(i)*de(i); end; for i=1:jmax v1(i)=1; v(i)=0; end; iter=0; dif=1; while (dif >= 1e-8) v1(jmax)=-v1(jmax)/al(jmax); s=v1(jmax); v1(jmax-1)=-(v1(jmax-1)+be(jmax-1)*v1(jmax))/al(jmax-1); if (abs(v1(jmax-1))>abs(s)) s=v1(jmax-1); end; for i=jmax-2:-1:1 v1(i)=-(v1(i)+be(i)*v1(i+1)+de(i)*v1(i+2))/al(i); if(abs(v1(i))>abs(s)) s=v1(i); end; end; zz(:,iter+1)=v1; dif=0; vn=0; for i=1:jmax aux=v(i); v(i)=v1(i)/s; v1(i)=v(i); vn=vn+v(i)^2; 48
dif=max(dif,abs(aux-v(i))); end; if (dif >= 1e-8) if (iter>4) fprintf(keine konvergenz! end; for i=1:jmax-1 if (vert(i)==0) uu=v1(i+1); else uu=v1(i); v1(i)=v1(i+1); end; v1(i+1)=uu-ga(i)*v1(i); end; iter=iter+1; end; end; vn=sqrt(vn); v=v/vn; for i=1:m s=0; for l=1:jmax s=s+v(l)*q(i,l); end; x(i,j)=s; end; rhoj=beta(jmax+1)*abs(v(jmax)); end;
);
break;
Programmcode fr die Bisektionsmethode (Abschn. 6.3). u function [ev] = ewerte(T,nev) % T: T-Matrix (tridiagonal) % nev: Anzahl der gewuenschten Eigenwerte [m,n]=size(T); for i=1:n zeile(i)=sum(T(i,:)); end; b=max(zeile); a=-b; for nrev=1:nev an=a; bn=b; for k=1:50 mu=(an+bn)/2; q(1)=mu-T(1,1); if q(1)==0, q(k)=-eps; end; for k=2:n q(k)=(mu-T(k,k))-T(k-1,k)^2/q(k-1); 49
if q(k)==0, q(k)=-eps; end; end; vf=0; for k=1:n if q(k)<0, vf=vf+1; end; end; if vf>=nrev, an=mu; else bn=mu; end; end; ev(nrev)=(an+bn)/2; b=bn; end;
50
Anhang C
Eigenvektorberechnung
Mit FELyX berechnete Eigenvektoren zu den tiefsten vier Eigenwerten der Aufgabe in Kapitel 2 mit 16 Beam3-Elementen. 2.0024e17 5.9001e16 4.0367e13 1.1547e08
0.0032092 0.018641 0.048488 0.087607 0.35014 0.59783 0.025294 0.14088 1.2918e18 5.6318e16 7.4874e14 2.1468e09 0.012458 0.066338 0.15653 0.24977 0.048316 0.23256 0.47848 0.61015 6.7996e18 5.9877e16 1.2164e13 3.4767e09 0.027178 0.13092 0.27115 0.35606 0.069071 0.27629 0.40879 0.18742 3.9399e18 6.016e16 2.2223e13 6.3666e09 0.046805 0.20072 0.3485 0.32964 0.087574 0.27498 0.19076 0.4 1.0081e17 5.0841e16 2.5562e13 7.3456e09 0.07078 0.26506 0.36013 0.16809 0.10385 0.23357 0.10364 0.84602 1.143e17 6.322e16 2.4557e13 7.0522e09 0.09855 0.31473 0.29719 0.062555 0.11795 0.15893 0.39209 0.92846 9.0832e18 5.1654e16 2.0708e13 5.9716e09 0.12958 0.34247 0.17101 0.26135 0.12994 0.059674 0.59822 0.60022 1.9854e17 5.5937e16 1.5458e13 4.4648e09 0.34333 0.0095698 0.34013 0.16335 0.13989 0.054473 0.66764 0.0059066 1.6207e17 6.3173e16 9.6541e14 2.7922e09 0.19936 0.31484 0.14956 0.26451 0.14793 0.17335 0.57937 0.58596 1.988e18 5.3898e16 3.8435e14 1.1358e09 0.25708 0.26824 0.070202 0.23716 0.15418 0.2872 0.34968 0.90545 1.615e18 6.0846e16 1.4069e14 3.8254e10 0.27632 0.17238 0.31661 0.15252 0.15882 0.38755 0.027107 0.80314 1.0581e17 5.9385e16 5.939e14 1.6855e09 0.31645 0.064965 0.27971 0.2988 0.46804 0.32039 0.3158 0.16203 6.4072e18 5.6436e16 9.5534e14 2.727e09 0.35723 0.059687 0.16016 0.29494 0.16404 0.52516 0.62353 0.35507 1.1652e17 6.1806e16 1.2148e13 3.482e09 0.39839 0.19565 0.024 0.12828 0.1651 0.55881 0.8312 0.94437 3.9604e18 6.9965e16 1.3702e13 3.9384e09 0.33744 0.24603 0.15412 0.43973 0.57279 0.92755 1.2631 0.16551 9.3319e18 4.8995e16 1.4322e13 4.0909e09 0.48112 0.48105 0.48096 0.48088 0.16557 0.575 0.94394 1.3225
(C.1)
51