Schnelle L osungsverfahren f ur Gleichungssysteme aus dem ... · tischen dunnen Film, dessen Dicke...

105
Universit¨ at Ulm Fakult¨ at f¨ ur Mathematik und Wirtschaftswissenschaften Schnelle L ¨ osungsverfahren f ¨ ur Gleichungssysteme aus dem Bereich des Mikromagnetismus Bachelorarbeit in Wirtschaftsmathematik vorgelegt von Kristin Kirchner am 30. September 2010 Gutachter Prof. Dr. Stefan A. Funken

Transcript of Schnelle L osungsverfahren f ur Gleichungssysteme aus dem ... · tischen dunnen Film, dessen Dicke...

Universitat Ulm

Fakultat fur Mathematik und

Wirtschaftswissenschaften

Schnelle Losungsverfahren fur

Gleichungssysteme aus dem Bereich des

Mikromagnetismus

Bachelorarbeit

in Wirtschaftsmathematik

vorgelegt vonKristin Kirchner

am 30. September 2010

Gutachter

Prof. Dr. Stefan A. Funken

Inhaltsverzeichnis

1 Einleitung 1

2 Modellierung und Diskretisierung 32.1 Modellproblem 32.2 Diskretisierung und Penalisierung 9

3 Numerische Realisierung 173.1 Das Newton-Verfahren zur Losung des nichtlinearen Gleichungssystems 173.2 Das PCR-Verfahren fur indefinite Matrizen 193.3 Ein Multigrid-Verfahren 243.4 Ein Prakonditionierer fur das PCR-Verfahren 363.5 Losung des Gesamtproblems 42

4 Konvergenzanalyse 57

5 Fazit 67

A AundPgenerieren.m zum Aufstellen von A` und P`−1 69A.1 AundPgenerieren.m 69A.2 STEMA.m 71

B Multigrid Test.m zum Testen des Multigrid-Verfahrens 73

C Kern B.m zum Testen der Dimension des Kerns von B 77

D Minimaler und maximaler Eigenwert von A` 79

E Spektralverhalten der Matrix P−1M M 81

F Iterationszahlen 83

G Verwendete Matlab-Funktionen 89G.1 GeneriereInneres.m 89G.2 GeneriereKantennr.m 90G.3 GraduiertesQuadrat.m 91G.4 Verfeinerung.m 92

Literaturverzeichnis 95

Abbildungsverzeichnis

2.1 Dichtefunktion ρuni und Konvexifizierung ρ∗∗uni fur den uniaxialen Fallmit Vorzugsachse e = (1, 2)/

√5 6

2.2 Ein Crouzeix-Raviart-Element und die Ansatzfunktion φ1 zum Kno-ten M1 9

2.3 Referenzelement T 11

3.1 Freiheitsgrade einer Triangulierung T1 sowie die der Verfeinerung T2 253.2 Prolongation in den drei verschiedenen Fallen 263.3 iter Schritte des Multigrid-Verfahrens als Flussdiagramm 283.4 Rotation um eine innere Ecke einer allgemeinen regularen Triangulie-

rung T |ω 373.5 Struktur einer Magnetisierung m aus dem Kern von B 383.6 Triangulierung T1 im betrachteten Beispiel 393.7 Die Rotationen w(1), w(2) und w(9) aus dem Kern von B auf der Tri-

angulierung T1 403.8 Position der Ecke Ei in den jeweiligen Elementen 52

4.1 Losung des Potentials u und der Magnetisierung m auf der Triangu-lierung T2 fur die Falle e(1), e(2) und e(3) 65

Tabellenverzeichnis

3.1 Fehler”err“ bei Anwendung des Multigrid-Verfahrens mit den klassi-

schen Iterationsverfahren als Glatter 353.2 Geometrische Vielfachheit r des Eigenwerts 0 der Matrix BTB und

Anzahl der inneren Ecken von ω in Abhangigkeit der Triangulierung 40

4.1 Große der Matrizen A` in Abhangigkeit von ` 594.2 Theoretische und tatsachliche Konvergenzrate fur den Fall e(1) 634.3 Theoretische und tatsachliche Konvergenzrate fur den Fall e(2) 634.4 Theoretische und tatsachliche Konvergenzrate fur den Fall e(3) 64

D.1 Minimaler und maximaler Eigenwert λmin und λmax der Matrix A`bei Verwendung eines V-Zyklus 79

D.2 Minimaler und maximaler Eigenwert λmin und λmax der Matrix A`bei Verwendung eines W-Zyklus 80

E.1 Die Konstanten c0, c1, c2 und c3 fur den Fall e(1) 81E.2 Die Konstanten c0, c1, c2 und c3 fur den Fall e(2) 82E.3 Die Konstanten c0, c1, c2 und c3 fur den Fall e(3) 82

F.1 Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwen-dung eines V-Zyklus fur den Fall e(1) 83

F.2 Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwen-dung eines W-Zyklus fur den Fall e(1) 84

F.3 Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwen-dung eines V-Zyklus fur den Fall e(2) 85

F.4 Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwen-dung eines W-Zyklus fur den Fall e(2) 86

F.5 Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwen-dung eines V-Zyklus fur den Fall e(3) 87

F.6 Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwen-dung eines W-Zyklus fur den Fall e(3) 88

Kapitel 1

Einleitung

Die vorliegende Arbeit beschaftigt sich mit der Losung von Gleichungssystemen,die bei der Analyse von mikromagnetischen Vorgangen auftreten. Innerhalb des Mi-kromagnetismus werden Magnetisierungen von Strukturen untersucht, deren Ab-messungen im Nano- oder Mikrometerbereich liegen. Dieses Thema spielt in vielenForschungsgebieten eine wichtige Rolle. So treten beispielsweise bei der Entwicklungvon magnetischen Schreib-Lese-Kopfen, die ein wichtiger Bestandteil von Festplat-ten sind, mikromagnetische Phanomene auf. Die Simulation dieser Phanomene sowiederen numerische Auswertung sind daher von großer Bedeutung.Die Ideen dieser Arbeit knupfen hauptsachlich an die Ergebnisse von [3] und [5] an.In [5] sind wesentliche Aussagen uber die mathematische Modellierung mikroma-gnetischer Vorgange getroffen worden. Die Berechnung einer Magnetisierung einesferromagnetischen Korpers und deren induziertes Potential werden dort auf die Mi-nimierung eines nichtlinearen Energiefunktionals zuruckgefuhrt. Grundlage hierfurist das Modell von Landau und Lifshitz [12]. Die numerische Losung dieses nichtli-nearen Energiefunktionals wird in [3] diskutiert. Dort wird die vereinfachte Annahmeeingefuhrt, dreidimensionale dunne Schichtstrukturen, wie etwa einen mikromagne-tischen dunnen Film, dessen Dicke im Nanometerbereich liegt, mathematisch als einzweidimensionales Gebiet aufzufassen. Mit Hilfe dieser Annahme gelangt man in [3]von der Minimierungsaufgabe uber Diskretisierungs- und Penalisierungsstrategiender zweidimensionalen nichtkonformen Finite-Elemente-Methode zu einem nicht-linearen Gleichungssystem, welches unter Anwendung des Newton-Verfahrens aufeine Folge linearer Gleichungssysteme zuruckgefuhrt wird. Die Losung dieser linea-ren Gleichungssysteme mit der Dimension n erfolgt dort in jeder Newton-Iterationmit dem Gauß-Verfahren, welches einen Aufwand von O(n3) hat. Um moglichst ex-akte Werte fur die Magnetisierung und das Potential zu erhalten ist es notig, eineDiskretisierung unter Anwendung von genugend kleinen Elementen vorzunehmen.Je kleiner die Elemente in der Finiten-Elemente-Methode aber werden, desto großerwerden auch die Gleichungssysteme und somit der Aufwand bei der Losung mit demGauß-Verfahren. Daher scheinen iterative Methoden mit einem geringeren Aufwandals Losungsverfahren sinnvoll zu sein.Ziel dieser Ausarbeitung ist es, zunachst ein iteratives Verfahren zur Losung derlinearen Gleichungssysteme vorzustellen. Des Weiteren gilt es, aus der besonderenForm der Koeffizientenmatrizen einen Prakonditionierer herzuleiten, der die Itera-tionszahlen dieses Verfahrens moglichst klein halt. Mit Hilfe der Kombination vonPrakonditionierung und iterativer Losung der Gleichungssysteme sollen die langeRechenzeit und der hohe Speicherbedarf reduziert werden, um die Berechnung vongroßen Systemen zu ermoglichen. Damit ware eine moglichst exakte Berechnung derMagnetisierung und des Potentials gewahrleistet, da die Elemente in der Finiten-Elemente-Methode genugend klein gewahlt werden konnen.

2 Kapitel 1: Einleitung

Hierzu wird in Kapitel 2 zunachst das betrachtete Modell vorgestellt und das nicht-lineare Gleichungssystem hergeleitet. Dies geschiet in zwei Abschnitten: Im erstenTeil 2.1 wird nach Einfuhrung der relevanten Energien das zu minimierende Energie-funktional aufgestellt, mit dem die Magnetisierung des Korpers und das induziertePotential bestimmt werden konnen. Zu diesem Minimierungsproblem werden aquiva-lente Formulierungen betrachtet und Aussagen uber die Existenz und Eindeutigkeitvon Losungen der gestellten Probleme getroffen. Der zweite Abschnitt 2.2 dient da-zu, dass untersuchte Problem unter Anwendung von nichtkonformen Elementen zudiskretisieren sowie Nebenbedingungen mit Hilfe von Penalisierungsparametern zuberucksichtigen. Hierbei wird insbesondere auch auf die Eigenschaften des verwen-deten nichtkonformen Crouzeix-Raviart-Elementes eingegangen. Das Vorgehen derDiskretisierung und Penalisierung fuhrt schließlich am Ende dieses Abschnitts aufein nichtlineares Gleichungssystem.Kapitel 3 widmet sich der numerischen Losung dieses nichtlinearen Gleichungssys-tems. Mittels des Newton-Verfahres kann es auf eine Folge linearer Gleichungs-systeme mit indefiniter Koeffizientenmatrix zuruckgefuhrt werden. Dies geschiehtin Abschnitt 3.1. Mit dem prakonditionierten Verfahren der konjugierten Residu-en (PCR-Verfahren) wird in Abschnitt 3.2 eine iterative Methode zur Losung vonlinearen Gleichungssystemen vorgestellt, die auch indefinite Koeffizientenmatrizenzulasst.Der Abschnitt 3.3 untergliedert sich in drei Teile: Der erste von ihnen 3.3.1 lie-fert eine Erlauterung der Theorie der Multigrid-Verfahren im Allgemeinen sowie einmogliches Vorgehen bei dem zu Grunde liegenden konkreten Fall des nichtkonfor-men Crouzeix-Raviart-Elementes. Im mittleren Teil 3.3.2 wird die Implementierungder zuvor vorgestellten Variante des Multigrid-Verfahrens erlautert. Der Abschnittdes Multigrid-Verfahrens schließt mit einer Uberprufung der Funktionsweise undder Konvergenz dieser implementierten Methode innerhalb eines numerischen Ex-perimentes in Teil 3.3.3.Nachdem das Multigrid-Verfahren ausfuhrlich diskutiert wurde, dient der Abschnitt3.4 dazu, einen Prakonditionierer zu finden, der zu einer moglichst guten Konver-genzrate im PCR-Verfahren fuhrt. Unter anderem wird das Multigrid-Verfahren zumPrakonditionieren der linearen Gleichungssysteme dienen. Kapitel 3 schließt mit demAbschnitt 3.5, der die Implementierung einer moglichen Gesamtlosung des Modell-problems sowie deren ausfuhrliche Erlauterung beinhaltet.Im Anschluss an das Kapitel 3, das die numerische Herangehensweise an das unter-suchte Modellproblem sowie deren Realisierung behandelt hat, werden in Kapitel4 die Konvergenzergebnisse der implementierten Verfahren diskutiert. Hierbei wirdeine a-priori-Konvergenzabschatzung den tatsachlichen Konvergenzergebnissen ge-genubergestellt.Die Arbeit schließt mit Kapitel 5, dem Fazit. Hier werden die Ergebnisse der vorge-stellten Losung zusammengefasst und zu ihnen kritisch Stellung bezogen.

Kapitel 2

Modellierung und Diskretisierung

2.1 Modellproblem

Die Theorie des Mikromagnetismus basiert auf dem klassischen Modell von Landauund Lifshitz aus dem Jahr 1935 [12], in dem durch Einfuhrung der relevanten Ener-gien mittels eines Variationsansatzes eine Differentialgleichung entwickelt wird. Un-tersucht wird hierbei ein statischer ferromagnetischer Korper K ⊂ R3, K = ω×(0, t),wobei ω ⊂ R2 ein beschranktes Lipschitz-Gebiet und 0 < t diam(ω) die Dickedes magnetischen Korpers ist. Da die Dicke t im Nanometerbereich liegt, kann manfolgende Vereinfachung vornehmen: Anstatt die Magnetisierung des Korpers K aufganz K zu untersuchen, wird der Grenzubergang t → 0 und somit die Magnetisie-rung m : ω → R2 nur auf dem zweidimensionalen Gebiet ω betrachtet. Dieselbevereinfachte Annahme wird im Folgenden auch bei dem von der Magnetisierung minduzierten Potential u : Ω → R verwendet. Dessen Eigenschaften werden nichtauf einem dreidimensionalen Raum V , K ⊂ V ⊂ R3 analysiert, sondern auf einemeinfach zusammenhangenden, beschrankten Lipschitz-Gebiet Ω ⊂ R2, das ω ⊂⊂ Ωenthalt.Gemaß Landau und Lifshitz ergibt sich die mikromagnetische Gesamtenergie alsSumme von Austauschenergie, anisotroper Energie, der Energie des außeren Feldesund der Streufeldenergie:

E(m) = α

∫ω

|∇m|2 dx+

∫ω

ρ(m) dx−∫ω

fext ·mdx+1

2

∫Ω

|∇u|2 dx . (2.1)

Diese vier Energiebeitrage kann man als lokale und nichtlokale Energien klassifizie-ren. Lokale Energiebeitrage hangen ausschließlich von der Magnetisierungsrichtungab. Zu ihnen zahlt die Austauschenergie

EAust(m) = α

∫ω

|∇m|2 dx ,

die den Grad der Abweichung der Magnetisierungsrichtung von einer homogenenAusrichtung widerspiegelt, wobei α > 0 einen materialabhangigen Parameter dar-stellt. Die anisotrope Energie hingegen zeigt die Abhangigkeit der Magnetisierungvon den strukturellen Achsen des Materials. Ihre Energiedichte ρ : Bild(m) → R≥0

ist eine stetige, gerade Funktion. Diese Energie ist ebenso ein lokaler Energiebei-trag wie die Energie, die durch die Wechselwirkung der Magnetisierung mit einemaußeren Feld fext : ω → R2 entsteht:

Eani(m) =

∫ω

ρ(m) dx , Eext(m) =

∫ω

fext ·mdx .

4 Kapitel 2: Modellierung und Diskretisierung

Die Streufeldenergie, die als einziger nichtlokaler Energiebeitrag auftritt, da sie injedem Punkt von dem Potential und somit von der Magnetisierung aller anderenPunkte im Raum abhangig ist, ist ein Maß fur die Divergenz der Magnetisierung

EStreu(u) =1

2

∫Ω

|∇u|2 dx .

Das Potential u ∈ H1(Ω) wird durch die Magnetisierung m ∈ L2(ω; R2) bzw. durchderen Erweiterung m ∈ L2(Ω; R2) auf Ω

m(x) =

m(x), falls x ∈ ω,0, falls x ∈ Ω \ ω,

induziert und ist gegeben durch den in der magnetostatischen Maxwellgleichung

−∆u+ div(m) = 0 in H−1(Ω) (2.2)

eindeutig bestimmten Gradienten ∇u ∈ L2(Ω; R2), wobei

H−1(Ω) := [H1(Ω)]′ = f : H1(Ω)→ R, linear und stetig

der Dualraum zum Sobolevraum H1(Ω) ist. Fordert man u ∈ H10 (Ω), so ist das

Potential u eindeutig bestimmt [3]. Diese Forderung ist nicht nur mathematischsinnvoll, sondern modelliert auch die physikalische Eigenschaft, dass das Potentialu auf dem Rand ∂Ω konstant ist und somit dort o.B.d.A. verschwindet. Zu derpartiellen Differentialgleichung (2.2) in klassischer Formulierung erhalt man dannfolgende starke Formulierung: Man finde u ∈ H1

0 (Ω), sodass∫Ω

∆u · w dx =

∫Ω

div(m) · w dx ∀w ∈ H10 (Ω) . (2.3)

Durch Anwenden der Formel von Green auf beiden Seiten von (2.3) und unterBerucksichtigung, dass w|∂Ω ≡ 0 gilt, ergibt sich:∫

Ω

∆u · w dx =

∫∂Ω

∂u

∂n· w dx−

∫Ω

∇u · ∇w dx = −∫Ω

∇u · ∇w dx sowie

∫Ω

div(m) · w dx =

∫∂Ω

m · n · w dx−∫Ω

m · ∇w dx = −∫ω

m · ∇w dx .

Dies fuhrt zur schwachen Formulierung von (2.2): Gesucht ist u ∈ H10 (Ω), sodass fur

alle w ∈ H10 (Ω) gilt: ∫

Ω

∇u · ∇w dx =

∫ω

m · ∇w dx . (2.4)

Fur eine Magnetisierung m ∈ L2(ω; R2) ist die Abbildung

P : L2(Ω; R2)→ L2(Ω; R2) ,

m 7→ ∇u(m) ,

Abschnitt 2.1: Modellproblem 5

eine orthogonale Projektion auf den Unterraum der Funktionen, die eine Stamm-funktion in H1

0 (Ω) besitzen [13],

L2∇(Ω; R2) := w ∈ L2(Ω; R2) | ∃u ∈ H1

0 (Ω) : ∇u = w ,

also insbesondere linear und stetig mit ‖P‖ ≤ 1.Zur korrekten mathematischen Modellierung des mikromagnetischen Zustandesmuss außerdem folgende Tatsache berucksichtigt werden: Unterhalb einer kritischenTemperatur, der sogenannten Curie Temperatur, ist der Betrag der Magnetisierungm punktweise fest. Es kann daher zur Vereinfachung eine konstante Temperatur und|m| = 1 f.u. in ω angenommen werden.Da der tatsachliche Zustand der Magnetisierung in einem ferromagnetischen Mate-rial ein Minimierer des nichtlinearen Energiefunktionals (2.1) ist [5], lautet somitdas vom Materialparameter α abhangige, zu untersuchende Modellproblem (Mα):Man finde m ∈ A := m ∈ L2(ω; R2) : |m| = 1 f.u. zu einem gegebenen außerenFeld fext ∈ L2(ω; R2), sodass

Eα(m) = α

∫ω

|∇m|2 dx+

∫ω

ρ(m) dx−∫ω

f ·mdx+1

2

∫Ω

|Pm|2 dx −→ min .

Die Minimierer von (Mα) weisen fur kleine positive Werte von α feine Oszillationenin einer α-abhangigen Große auf, welche wesentlich kleiner ist, als eine realisierbareGittergroße einer Triangulierung. Im Folgenden wird daher gemaß [5] der Grenzfall(M0) fur α = 0 untersucht, d.h. die Austauschenergie vernachlassigt.

Die Formulierung (M0) stellt sich jedoch als problematisch heraus, da sie unterUmstanden keine Losung besitzt [10]. Dieser Fall tritt beispielsweise in dem phy-sikalisch wichtigen, uniaxialen Fall ein, in dem die Energiedichte der anisotropenEnergie ρ(m) ≥ 0 zwei Nullzustande hat:

ρuni(m) = 0 ⇐⇒ m = ±e

fur einen normierten Vektor e ∈ R2, |e| = 1. Weil in vielen konkreten Anwen-dungsfallen nur durchschnittliche Eigenschaften des Ferromagneten wichtig sind,stellt man daher ein modifiziertes, leicht verallgemeinertes mathematisches Modellauf, um dieses Problem zu umgehen. An die Stelle der Dichtefunktion ρ ∈ C(S; R≥0),S := x ∈ R2 : |x| = 1 ruckt die Konvexifizierung ρ∗∗ von ρ, d.h.

ρ∗∗ : R2 → R, ρ∗∗(x) = sup %(x)| % : R2 → R konvex und %|S ≤ ρ.

In dem speziellen Fall der uniaxialen Ausrichtung ergibt sich zu

ρuni(x) =1

2

(1− (x · e)2) ∀x ∈ S

die einhullende konvexe Funktion

ρ∗∗uni(x) =1

2(x · e⊥)2 ∀x ∈ R2 .

Der Vektor e ∈ R2, |e| = 1, stellt dabei die Vorzugsachse der magnetischen Ausrich-tung sowie e⊥ einen Normalenvektor zu ihm dar.

6 Kapitel 2: Modellierung und Diskretisierung

(a) Dichtefunktion ρuni (b) Konvexifizierung ρ∗∗uni

Abb. 2.1: Dichtefunktion ρuni fur den uniaxialen Fall mit Vorzugsachse e = (1, 2)/√

5

auf [−1, 1] × [−1, 1] (links) sowie ρuni auf S und deren Konvexifizierung ρ∗∗uni auf

[−1, 1]× [−1, 1] (rechts)

Hieraus ergibt sich folgende modifizierte Formulierung (M∗∗0 ) des Minimierungspro-

blems (M0): Gesucht ist ein Minimierer

m ∈ A∗∗ := conv(A) = m ∈ L2(ω; R2) : |m| ≤ 1 f.u.

des konvexifizierten, nichtlinearen Energiefunktionals

E∗∗0 (m) =

∫ω

ρ∗∗(m) dx−∫ω

f ·mdx+1

2

∫Ω

|Pm|2 dx . (2.5)

Die Minimierer dieser Energie nennt man auch makroskopische Losungen der Ma-

gnetisierung m. Im Gegensatz zum ursprunglichen Problem (M0) besitzt (M∗∗0 ) fur

jede stetige, gerade Dichtefunktion ρ(m) ≥ 0 mindestens eine Losung und im uni-

axialen Fall ist die Losung sogar eindeutig, siehe [3], [5].

Um das Minimierungsproblem (M∗∗0 ) zu losen, benotigt man folgende Definition der

Differenzierbarkeit fur allgemeine Funktionale, vgl. [14].

Definition 2.1.1 (Gateaux-Differenzierbarkeit, Gateaux-Ableitung) Es sei

X ein normierter Raum, U ⊂ X offen und f : U → R eine Abbildung. f heißt

Gateaux-differenzierbar in x0 ∈ U , falls ein stetiger linearer Operator T : X → Rmit

limh→0

f(x0 + hv)− f(x0)

h= Tv ∀v ∈ X (2.6)

existiert. f heißt Gateaux-differenzierbar auf U , falls f an jeder Stelle x0 ∈ U

Gateaux-differenzierbar ist. Der Grenzwert in (2.6) hangt dann von x0 ab und man

schreibt Df(x0) statt T . Df heißt die Gateaux-Ableitung von f .

Abschnitt 2.1: Modellproblem 7

Satz 2.1.2 (Konvexitat und Differenzierbarkeit von E∗∗0 ) Das in (2.5) defi-

nierte Funktional E∗∗0 : L2(ω; R2)→ R ist konvex, d.h.

E∗∗0 (ϑ y + (1− ϑ)z) ≤ ϑE∗∗0 (y) + (1− ϑ)E∗∗0 (z) ∀ y, z ∈ L2(ω; R2), ϑ ∈ [0, 1].

Gilt daruber hinaus, dass ρ∗∗ auf ganz R2 mit Dρ∗∗ stetig differenzierbar ist, so ist

E∗∗0 fur jedes m ∈ L2(ω; R2) Gateaux-differenzierbar mit

DE∗∗0 (m)(v) =

∫ω

Dρ∗∗(m) · v dx−∫ω

f · v dx+1

2

∫Ω

Pm · P v dx ∀v ∈ L2(ω; R2) .

Beweis. Zunachst wird die Konvexitat bewiesen. Seien dazu y, z ∈ L2(ω; R2),

ϑ ∈ [0, 1]. Fur das Funktional E∗∗0 ergibt sich dann:

E∗∗0 (ϑ y + (1− ϑ)z) =

∫ω

ρ∗∗(ϑ y + (1− ϑ)z) dx−∫ω

f · (ϑ y + (1− ϑ)z) dx

+1

2

∫Ω

|P (ϑ y + (1− ϑ)z)|2 dx

≤∫ω

(ϑ ρ∗∗(y) + (1− ϑ)ρ∗∗(z)) dx− ϑ∫ω

f · y dx

− (1− ϑ)

∫ω

f · z dx+1

2

∫Ω

|ϑP y + (1− ϑ)P z|2 dx

≤ ϑE∗∗0 (y) + (1− ϑ)E∗∗0 (z) ,

wobei im letzten Schritt die folgende Ungleichung verwendet wurde:∫Ω

|ϑP y + (1− ϑ)P z|2 dx = ‖ϑP y + (1− ϑ)P z‖2L2(Ω)

≤(ϑ ‖P y‖L2(Ω) + (1− ϑ) ‖P z‖L2(Ω)

)2

≤ ϑ ‖P y‖2L2(Ω) + (1− ϑ) ‖P z‖2

L2(Ω)

= ϑ

∫Ω

|P y|2 dx+ (1− ϑ)

∫Ω

|P z|2 dx .

Um die Gateaux-Differenzierbarkeit zu zeigen, seien m, v ∈ L2(ω; R2), h ∈ R.

limh→0

∫ωρ∗∗(m+ hv) dx−

∫ωρ∗∗(m) dx

h= lim

h→0

∫ω

ρ∗∗(m+ hv)− ρ∗∗(m)

hdx

=

∫ω

limh→0

ρ∗∗(m+ hv)− ρ∗∗(m)

hdx

=

∫ω

Dρ∗∗(m) · v dx

Hierbei ist in der zweiten Gleichung die Vertauschung von Integral und Limes legi-

tim, da Dρ∗∗ stetig differenzierbar ist. Fur die beiden anderen Terme ergibt sich:

limh→0

∫ωf · (m+ hv) dx−

∫ωf ·mdx

h=

∫ω

f · v dx sowie

8 Kapitel 2: Modellierung und Diskretisierung

limh→0

∫Ω|P (m+ hv)|2 dx−

∫Ω|Pm|2 dx

h= lim

h→0

∫Ω

(2Pm · P v + hP v · P v) dx

= 2

∫Ω

Pm · P v dx .

Aufgrund der Konvexitat und der Gateaux-Differenzierbarkeit des Operators E∗∗0kann die dem Problem (M∗∗

0 ) entsprechende Euler-Lagrange-Gleichung formuliertwerden. Diese lautet in dem Fall:

P ad Pm+Dρ∗∗(m) + λm = f in L2(ω; R2) ,

wobei P adP die Verknupfung der adjungierten Abbildung zu P mit P ist. Unter de-ren Verwendung und nach Einfuhrung eines Lagrange-Multiplikators λ ∈ L2(ω; R2)bzgl. der Nebenbedingung |m| ≤ 1 f.u. in ω erhalt man folgendes Problem: Gesuchtsind m ∈ L2(ω; R2) und λ ∈ L2(ω; R), sodass

Pm+Dρ∗∗(m) + λm = f f.u. in ω,

0 ≤ λ, |m| ≤ 1, λ(1− |m|)+ = 0 f.u. in ω.

Hierbei stellt (x)+ := maxx, 0 den nichtnegativen Teil einer reellen Zahl x dar, wasin der letzten Bedingung bewirkt, dass λ 6= 0 nur fur den Fall |m| = 1 moglich ist,d.h. entweder nimmt E∗∗0 ein lokales und somit auch globales Minimum in conv(A)an oder das in conv(A) gesuchte Minimum liegt auf dem Rand. Berucksichtigt manweiterhin die Definition des Funktionals P : L2(Ω; R2) → L2(Ω; R2) in (2.4), soerhalt man insgesamt das Modellproblem (P ): Man finde u ∈ H1

0 (Ω), m ∈ L2(ω; R2)und λ ∈ L2(ω; R) mit∫

Ω

∇u · ∇w dx =

∫ω

m · ∇w dx ∀w ∈ H10 (Ω), (2.7)

∇u+Dρ∗∗(m) + λm = f f.u. in ω, (2.8)

0 ≤ λ, |m| ≤ 1, λ(1− |m|)+ = 0 f.u. in ω. (2.9)

Dieses Problem fuhrt im Weiteren auf ein zu losendes nichtlineares Gleichungssys-

tem, dessen numerische Losung diskutiert wird. Diese Formulierung hat den Vorteil,

dass sich ein gut implementierbarer Algorithmus finden lasst, der zu der Losung

(u,m) fuhrt, die im uniaxialen Fall eindeutig bestimmt ist, wie der folgende Satz

zeigt.

Satz 2.1.3 (Losbarkeit von (P )) Jede Losung m ∈ L2(ω; R2) von (M∗∗0 ) ist

auch Losung von (P ). Insbesondere hat das Problem (P ) mindestens eine Losung

(u,m, λ). Im uniaxialen Fall existiert jeweils genau eine Losung der Probleme (M∗∗0 )

und (P ) und die Losungen stimmen uberein.

Beweis. Siehe [3, Theorem 2.1] und [2, Theorem 2.2].

Abschnitt 2.2: Diskretisierung und Penalisierung 9

2.2 Diskretisierung und Penalisierung

Zur numerischen Losung des Problems (P ) im uniaxialen Fall bietet sich die Methodeder finiten Elemente an. Jedoch hat sich herausgestellt, dass hierbei die Anwendungkonformer Elemente niedrigster Ordnung nicht immer praktikabel ist, da in diesemFall zwar die Existenz von Losungen gesichert ist, jedoch im Allgemeinen nicht dieEindeutigkeit (vgl. hierzu das Gegenbeispiel in [3, Example 1.1]). Diese zusatzlicheEigenschaft erhalt man durch die Einfuhrung nichtkonformer Elemente. Daher wirdim Folgenden bei der Bestimmung des Potentials u das nichtkonforme P1-Element,auch Crouzeix-Raviart-Element genannt, betrachtet. Zur Vereinfachung wird ange-nommen, dass Ω einen polygonen Rand hat und somit eine regulare TriangulierungT von Ω existiert. Außerdem sei die Triangulierung so beschaffen, dass ω genau vonder Subtriangulierung T |ω = T ∈ T : T ⊂ ω bedeckt wird. Zu dieser Triangulie-rung sei K die Menge aller Kanten, E die Menge aller Ecken undM die Menge allerMittelpunkte auf den Kanten aus K.Die L2-Funktionen m und λ werden durch auf den Elementen der Triangulierungkonstante Funktionen approximiert. Man betrachtet hierzu also den Splineraum

L0(T ) := v ∈ L∞(Ω) : v|T const. ∀T ∈ T .

Fur die Approximation von u ∈ H10 (Ω) reicht dieser Ansatzraum nicht aus, da

man auch den Gradienten ∇u approximieren muss. Daher geht man bei der Wahldes Ansatzraumes fur H1-Funktionen zu dem Raum der auf den Elementen derTriangulierung stuckweise affinen Funktionen uber. Da man hierbei aber nicht dieStetigkeit der Ansatzfunktionen auf dem gesamten Gebiet Ω, sondern nur in denKantenmittelpunkten der Elemente der Triangulierung, die nicht auf dem Rand ∂Ωliegen, fordert, sind die Splineraume

S1,nc(T ) := v ∈ L∞(Ω) : v|T affin ∀T ∈ T ∧ v stetig bei z ∀ z ∈M|Ω,S1,nc

0 (T ) := v ∈ S1,nc(T ) : v(z) = 0 ∀ z ∈M|∂Ω

im Gegensatz zu konformen Elementen nicht in den Sobolevraumen H1(Ω) bzw.H1

0 (Ω) eingebettet. Daher spricht man auch von nichtkonformen Elementen. Ihr

Abb. 2.2: Ein Crouzeix-Raviart-Element und die Ansatzfunktion φ1 zum Knoten M1

10 Kapitel 2: Modellierung und Diskretisierung

klassischer Reprasentant ist das Crouzeix-Raviart-Element, das Crouzeix und Ra-viart im Jahr 1973 erstmalig einfuhrten, um die stationare Stokes-Gleichung zu losen,vgl. [4]. Dieses Element definiert Basisfunktionen des Ansatzraumes S1,nc

0 (T ), derenFreiheitsgrade sich an den drei Kantenmittelpunkten befinden, siehe Abbildung 2.2.Man kann diese Basisfunktionen leicht uber die zwei-dimensionalen Hutfunktionendefinieren. Hierzu seien Λi die zur Ecke Ei ∈ E des Elements T ∈ T gehorendeHutfunktion, i ∈ 1, 2, 3, d.h. Λi(xEj

, yEj) = δij, wobei δij das Kronecker-Delta

darstellt. Diese lassen sich fur (x, y) ∈ T geschickt folgendermaßen bestimmen:

Λ1(x, y) =1

2 |T |det

1 1 1x xE2 xE3

y yE2 yE3

,

Λ2(x, y) =1

2 |T |det

1 1 1xE1 x xE3

yE1 y yE3

,

Λ3(x, y) =1

2 |T |det

1 1 1xE1 xE2 xyE1 yE2 y

,

2 |T | = det

1 1 1xE1 xE2 xE3

yE1 yE2 yE3

.

|T | stellt den Flacheninhalt des Elements T dar. Mit Hilfe dieser Hutfunktionenist man nun in der Lage, die nodalen Basisfunktionen φ1, φ2, φ3 von S1,nc

0 (T ) aufT ∈ T zu definieren, fur die gilt: φi(xMj

, yMj) = δij. Fur (x, y) ∈ T ergeben sich

diese Basisfunktionen wie folgt:

φ1(x, y) = −Λ1(x, y) + Λ2(x, y) + Λ3(x, y) ,

φ2(x, y) = −Λ1(x, y)− Λ2(x, y) + Λ3(x, y) ,

φ3(x, y) = −Λ1(x, y) + Λ2(x, y)− Λ3(x, y) .

Zu beachten ist hierbei, dass jede Basisfunktion, die zu einer Kantenseite im Innern

der Triangulierung gehort, wie in Abbildung 2.2 dargestellt, jeweils auf zwei Elemen-

ten definiert ist; auf allen anderen Elementen verschwindet sie. Diese Basisfunktio-

nen erfullen unter anderem nachfolgende Eigenschaften, die sie fur die numerische

Anwendung attraktiv machen.

Satz 2.2.1 (Eigenschaften der Basisfunktionen φi von S1,nc0 (T )) Die Funk-

tionen φi sind auf T ∈ T bezuglich des L2-Skalarprodukts orthogonal, es gilt also

(φi, φj)L2(T ) :=

∫T

φi φj dx dy = 0 fur i 6= j .

Außerdem gilt fur die Integrale uber die Kanten des Elements T∫ki

φj ds = δij |ki| .

Hierbei ist ki ∈ K die Kante des Dreiecks T , auf die der Knoten Mi ∈ M liegt,

sowie |ki| deren Lange.

Abschnitt 2.2: Diskretisierung und Penalisierung 11

Abb. 2.3: Referenzelement T

Beweis. Bewiesen wird hier nur die erste Aussage, da die zweite unmittelbar aus

der Definition der Funktionen φi hervorgeht.

Um die erste Aussage zu beweisen, kann o.B.d.A. angenommen werden, dass das

Referenzelement T ∈ T aus Abbildung 2.3 zu Grunde liegt. Alle anderen Elemente

lassen sich durch Translation und Rotation auf diese Form zuruckfuhren. Es seien

zu diesem Element φ1, φ2, φ3,Λ1,Λ2 und Λ3 wie oben definiert. Fur φ1 φ2 ergibt sich

dann

(φ1 φ2)(x, y) = (−Λ1 + Λ2 + Λ3)(Λ1 − Λ2 + Λ3)(x, y)

= − (Λ1(x, y)− Λ2(x, y))2 + Λ32(x, y) .

Fur das betrachtete Referenzelement betragt die Flache |T | = c (b − a)/2 und die

Funktionen Λ1,Λ2 und Λ3 sind gegeben durch

Λ1(x, y) =1

2 |T |(−xc− yb+ bc) ,

Λ2(x, y) =1

2 |T |(xc+ ya− ac) ,

Λ3(x, y) =1

2 |T |(y(b− a)) .

Hieraus ergibt sich

(φ1 φ2)(x, y) =1

4 |T |2(−4c2x2 − 4aby2 − 4c(b+ a)xy + 4c2(a+ b)x

+ 2c(a+ b)2y − a2c2 − 2abc2 − b2c2).

Es folgt schließlich nach Berechnung der Integrale

∫T

φ1 φ2 dy dx =

0∫a

− cax+c∫

0

(φ1 φ2)(x, y) dy dx+

b∫0

− cbx+c∫

0

(φ1 φ2)(x, y) dy dx

=1

4 |T |2

(1

6abc3(a+ b)

)+

1

4 |T |2

(−1

6abc3(a+ b)

)= 0

Die verbleibenden Falle φ1 φ3 und φ2 φ3 ergeben sich durch Umnummerierung der

Ecken.

12 Kapitel 2: Modellierung und Diskretisierung

Formuliert man die Gleichungen (2.7) bis (2.9) des Problems (P ) nun in den obenbetrachteten Raumen, so erhalt man folgendes diskretisiertes Problem: Man findeuh ∈ S1,nc

0 (T ), mh ∈ L0(T |ω; R2) und λh ∈ L0(T |ω; R), sodass∫Ω

∇T uh · ∇T wh dx =

∫ω

mh · ∇T wh dx ∀wh ∈ S1,nc0 (T ), (2.10)

∇T uh +Dρ∗∗(mh) + λhmh = fT f.u. in ω, (2.11)

0 ≤ λh, |mh| ≤ 1, λh(1− |mh|)+ = 0 f.u. in ω. (2.12)

In dieser Formulierung steht ∇T fur den auf T stuckweise definierten Gradienten,d.h.∇T uh(x) := ∇uh|T (x) fur x ∈ T ∈ T , sowie fT ∈ L0(T |ω; R2) fur das stuckweiseIntegralmittel von f ∈ L2(ω; R2), gegeben durch

fT |T :=1

|T |

∫T

f dx ∈ R2 ∀T ∈ T |ω .

Die Abbildung f → fT ist dabei die L2-Orthogonalprojektion auf den UnterraumL0(T |ω; R2). Um die Nebenbedingungen aus (2.12) zu realisieren, geht man zu ei-nem penalisierten Problem uber. Dafur erweitert man zunachst die zu minimierendeEnergie E∗∗0 (m) aus (2.5) um den Strafterm

ε(m) =1

2

∫ω

ε−1 (|m| − 1)2+ dx

und ersetzt dadurch die Nebenbedingung |m| ≤ 1. Betrachtet man zu diesem Straf-term das Gateaux-Differential

Dε(m)(v) =

∫ω

ε−1 (|m| − 1)+

|m|m · v dx ,

so erhalt man zu dem diskretisierten Modellproblem folgende penalisierte Formu-lierung (Pε): Man finde uh ∈ S1,nc

0 (T ), mh ∈ L0(T |ω; R2) und λh ∈ L0(T |ω; R),sodass ∫

Ω

∇T uh · ∇T wh dx =

∫ω

mh · ∇T wh dx ∀wh ∈ S1,nc0 (T ), (2.13)

∇T uh +Dρ∗∗(mh) + λhmh = fT f.u. in ω, (2.14)

λh = ε−1 (|mh| − 1)+ / |mh| f.u. in ω. (2.15)

Hierbei ist λh = 0, falls |mh| = 0. Mit Hilfe dieser Formulierung wird im Folgen-

den ein effizienter Algorithmus zur Berechnung von m und u im uniaxialen Fall

hergeleitet. Dies erlaubt der folgende Satz.

Satz 2.2.2 (Losbarkeit von (Pε)) Im uniaxialen Fall besitzt das diskretisierte

und penalisierte Problem (Pε) eine eindeutige Losung.

Beweis. Siehe [3, Theorem 3.1].

Abschnitt 2.2: Diskretisierung und Penalisierung 13

Die Funktion ρ∗∗ ist im uniaxialen Fall durch ρ∗∗(m) = 12(m·e⊥)2 gegeben und daher

lautet ihr GradientDρ∗∗(m) = (m·e⊥) e⊥. Berucksichtigt man dies und transformiertdie Gleichung (2.8) des Problems (P ) in deren Variationsformulierung, so erhaltman fur diesen konkreten Fall folgendes Problem: Zu zwei gegebenen Funktioneng ∈ L2(Ω; R) und f ∈ L2(ω; R2) finde man u ∈ H1

0 (Ω), m ∈ L2(ω; R2) sowieλ ∈ L2(ω; R), sodass fur alle w ∈ H1

0 (Ω) und µ ∈ L2(ω; R2) gilt:∫Ω

∇u · ∇w dx−∫ω

m · ∇w dx =

∫Ω

g · w dx ,∫ω

∇u · µ dx+

∫ω

(m · e⊥)(µ · e⊥) dx+

∫ω

λm · µ dx =

∫ω

f · µ dx ,

0 ≤ λ, |m| ≤ 1, λ(1− |m|)+ = 0 f.u. in ω.

Hierbei wurde die erste Gleichung, die aus der Maxwell-Gleichung resultiert, durchdie Funktion g leicht abgeandert, sodass auch allgemeinere Zusammenhange zwi-schen der Magnetisierung m und dem induzierten Potential u moglich sind. Wendetman nun auf dieses konkrete Problem die in (2.13) bis (2.15) genannte Diskretisie-rung und Penalisierung an, gelangt man schließlich zu folgendem speziellen Problem,das unter Anwendung der zu den Raumen S1,nc

0 und L0(T |ω; R2) gehorenden Ba-sisfunktionen als Testfunktionen auf ein nichtlineares Gleichungssystem fuhrt: Ge-sucht sind uh ∈ S1,nc

0 (T ), mh ∈ L0(T |ω; R2) und λh ∈ L0(T |ω; R), sodass fur allewh ∈ S1,nc

0 (T ) und µh ∈ L0(T |ω; R2) gilt∫Ω

∇T uh · ∇T wh dx−∫ω

mh · ∇T wh dx =

∫Ω

g · wh dx , (2.16)∫ω

∇T uh · µh dx+

∫ω

(mh · e⊥)(µh · e⊥) dx+

∫ω

λhmh · µh dx =

∫ω

f · µh dx , (2.17)

λh = ε−1 (|mh| − 1)+ / |mh| . (2.18)

Die oben zu dem Crouzeix-Raviart-Element definierten Funktionen φi,i ∈ 1, . . . , J, sind eine Basis des Ansatzraumes S1,nc

0 (T ). Die endliche Dimen-sion J dieses Raumes ist dabei festgelegt durch die Anzahl der Kanten bzw. dieAnzahl der Kantenmittelpunkte der Triangulierung T , die im Inneren von Ω undsomit nicht auf dem Rand ∂Ω liegen, d.h. J = |K|Ω| = |M|Ω|. Auch fur den ebenfallsendlich-dimensionalen Raum L0(T |ω; R2) lasst sich mit(

χk0

),

(0χk

): k = 1, . . . , K

, χk(x) :=

1, falls x ∈ Tk,0, falls x /∈ Tk,

eine Basis finden. Hierbei stellt K = |T |ω| die Anzahl der Elemente in der Subtrian-gulierung T |ω = T1, . . . , TK dar. Mit Hilfe dieser Basen ist man nun in der Lage,uh ∈ S1,nc

0 (T ) und mh ∈ L0(T |ω; R2) wie folgt darzustellen

uh =J∑j=1

xjφj , (2.19)

mh =K∑k=1

(yk

(χk0

)+ yK+k

(0χk

))=

K∑k=1

(yk χkyK+k χk

)=

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

).

(2.20)

14 Kapitel 2: Modellierung und Diskretisierung

Die Bestimmung von uh ∈ S1,nc0 (T ) und mh ∈ L0(T |ω; R2) ist also aquivalent zur

Berechnung der Vektoren x = (x1, . . . , xJ)T ∈ RJ und y = (y1, . . . , y2K)T ∈ R2K .Die Anzahl der Freiheitsgrade in dem zu Grunde liegenden Problem betragt somit

N = dim(S1,nc0 ) + dim(L0(T |ω; R2)) = |M|Ω|+ 2 |T |ω| = J + 2K .

Setzt man nun die Darstellungen (2.19) und (2.20) von uh bzw. mh in das Mo-dellproblem (2.16) bis (2.18) ein und berucksichtigt, dass man als Testfunktionenwh ∈ S1,nc

0 und µh ∈ L0(T |ω; R2) die Basisfunktionen des jeweiligen Raumes wahlenkann, so gelangt man zu folgendem nichtlinearen Gleichungssystem∫

Ω

(J∑j=1

xj∇T φj

)· ∇T φi dx−

∫ω

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)· ∇T φi dx

=

∫Ω

g φi dx ∀ i ∈ 1, . . . , J , (2.21)∫ω

(J∑j=1

xj∇T φj

)·(χ`0

)dx+

∫ω

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)· e⊥ ·

(χ`0

)· e⊥ dx

+

∫ω

λh

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)·(χ`0

)dx

=

∫ω

f ·(χ`0

)dx ∀ ` ∈ 1, . . . , K , (2.22)∫

ω

(J∑j=1

xj∇T φj

)·(

0χ`

)dx+

∫ω

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)· e⊥ ·

(0χ`

)· e⊥ dx

+

∫ω

λh

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)·(

0χ`

)dx

=

∫ω

f ·(

0χ`

)dx ∀ ` ∈ 1, . . . , K , (2.23)

λh|Tk= ε−1 (| (yk, yK+k) | − 1)+

| (yk, yK+k) |∀ k ∈ 1, . . . , K . (2.24)

Fur die Integrale aus (2.21) gilt∫Ω

(J∑j=1

xj∇T φj

)· ∇T φi dx =

J∑j=1

(∫Ω

∇T φj · ∇T φi dx)

︸ ︷︷ ︸=:Aij

xj =J∑j=1

Aij xj ,

(2.25)

−∫ω

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)· ∇T φi dx =

K∑k=1

(ykyK+k

)·∫ω

−χk∇T φi dx︸ ︷︷ ︸:=(Bi,k, Bi,K+k)

=K∑k=1

(Bi,k, Bi,K+k)

(ykyK+k

),∫

Ω

g φi dx ≈1

3

∑T`⊂supp(φi)

|T`| g(sT`) =: Gi ,

Abschnitt 2.2: Diskretisierung und Penalisierung 15

wobei sT`den Schwerpunkt des Element T` ∈ T bezeichnet. In Matrixschreibweise

ergibt sich alsoAx+By = G .

Betrachtet man nun die Integrale aus (2.22) bzw. (2.23), so erhalt man∫ω

(J∑j=1

xj∇T φj

)·(χ`0

)dx

∫ω

(J∑j=1

xj∇T φj

)·(

0χ`

)dx

=J∑j=1

(∫ω

χ`∇T φj dx)T

︸ ︷︷ ︸=−(Bj,`, Bj,K+`)T

xj =J∑j=1

−(Bj,`, Bj,K+`)Txj ,

∫ω

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)· e⊥ ·

(χ`0

)· e⊥ dx∫

ω

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)· e⊥ ·

(0χ`

)· e⊥ dx

=

∫T`

(y`yK+`

)· e⊥ e⊥ dx

= |T`| e⊥ ⊗ e⊥(

y`yK+`

),

∫ωλh

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)·(χ`0

)dx∫

ωλh

( ∑Kk=1 yk χk∑K

k=1 yK+k χk

)·(

0χ`

)dx

=

∫ω

λh

(y`yK+`

)χ` dx = λh |T`|

(y`yK+`

),

∫ωf ·(χ`0

)dx∫

ωf ·(

0χ`

)dx

=

∫ω

f χ` dx ≈ |T`| f(sT`) =:

(F`FK+`

).

Das bedeutet, dass man die Gleichungen (2.22) und (2.23) zusammenfassen kann zu

−BTx+

(C +

1

εE(y)

)y = F ,

wobei fur ` ∈ 1, . . . , K die Matrizen C und E gegeben sind durch(C`, ` C`,K+`

CK+`, ` CK+`,K+`

)= |T`| e⊥ ⊗ e⊥ ,(

E`, `(y) E`,K+`(y)EK+`, `(y) EK+`,K+`(y)

)= |T`|λh I2×2 = |T`|

(| (y`, yK+`) | − 1)+

| (y`, yK+`) |I2×2 .

Insgesamt lasst sich das nichtlineare Gleichungssystem (2.21) bis (2.24) also folgen-dermaßen schreiben (

A B−BT C + 1

εE(y)

)(xy

)=

(GF

). (2.26)

Hierbei muss berucksichtigt werden, dass im Vektor x – so wie er oben konstruiertwurde – nur die Werte der zu den im Inneren von Ω liegenden Kantenmittelpunktegehorenden Ansatzfunktionen stehen. Die Werte von u auf dem Rand sind bereitsdurch die Randbedingung u|∂Ω ≡ 0 festgelegt.Die folgenden Abschnitte beschaftigen sich mit der approximativen Losung des nicht-linearen Gleichungssystems (2.26) sowie deren effiziente Berechnung.

16 Kapitel 2: Modellierung und Diskretisierung

Kapitel 3

Numerische Realisierung

3.1 Das Newton-Verfahren zur Losung des nicht-

linearen Gleichungssystems

Das nichtlineare Gleichungssystem (2.26) lasst sich auch als Nulstellenproblem auf-fassen:

h(x, y) = 0 fur ein (x, y) ∈ RJ+2K

mit

h : RJ+2K → RJ+2K , h(x, y) :=

(A B−BT C + 1

εE(y)

)(xy

)−(GF

).

Da die Funktion h bis auf den Anteil E(y) y linear ist, ist ihre JacobimatrixJh ∈ R(J+2K)×(J+2K) in allen anderen Komponenten konstant und damit unabhangigvon dem betrachteten Punkt (x, y). Diese Eigenschaft macht das Newton-Verfahrenfur die Berechnung der gesuchten Nullstelle attraktiv, weil man in jedem Itera-tionsschritt nicht die komplette Jacobi-Matrix neu brechnen muss, sondern nur dieSub-Jacobi-Matrix der Funktion E(y) y. Dieser Anteil macht das Gleichungssystemzu einem nichtlinearen Gleichungssystem, aber auch dessen Jacobi-Matrix lasst sichwie folgt explizit angeben:

∂(E(y) y)1∂y1

· · · ∂(E(y) y)1∂y2K

.... . .

...∂(E(y) y)2K

∂y1· · · ∂(E(y) y)2K

∂y2K

= D(y) + E(y) ,

wobei die Matrix D(y) fur ` ∈ 1, . . . , K definiert ist durch(D`, `(y) D`,K+`(y)DK+`, `(y) DK+`,K+`(y)

)=

|T`||(y`, yK+`)|2

(H(|(y`, yK+`)| − 1)− λ) ·(

y`yK+`

)⊗(

y`yK+`

)=

1

|(y`, yK+`)|2

(|T`| H(|(y`, yK+`)| − 1) I2×2

−(

E`, `(y) E`,K+`(y)EK+`, `(y) EK+`,K+`(y)

))·(

y`yK+`

)⊗(

y`yK+`

).

H : R→ R+0 bezeichnet hierbei die Heaviside-Funktion, d.h.

H(a) =

1, falls a ≥ 0,

0, falls a < 0.

18 Kapitel 3: Numerische Realisierung

Unter Berucksichtigung der Linearitaten in den anderen Komponenten ergibt sichdie Jacobi-Matrix von h insgesamt zu

Jh(x, y) =

(A B−BT C + 1

ε(D(y) + E(y))

). (3.1)

Das Newton-Verfahren zum nichtlinearen Gleichungssystem (2.26) lautet dann: Zueinem gebenen Startvektor (x(0), y(0)) ∈ RJ+2K und einem Toleranzwert tol berechneman die Iterierten (x(µ), y(µ)) fur µ = 1, 2, 3, . . . bis

∣∣h(x(µ), y(µ))∣∣ ≤ tol uber

Jh(x(µ), y(µ)

)(s(µ)x

s(µ)y

)=

(G(µ)

F (µ)

),

(x(µ+1)

y(µ+1)

)=

(x(µ)

y(µ)

)−

(s

(µ)x

s(µ)y

), (3.2)

wobei die rechte Seite des linearen Gleichungssystems gerade der Funktionswert vonh an der Stelle (x(µ), y(µ)) ist, also(

G(µ)

F (µ)

)= h

(x(µ), y(µ)

)=

(A B−BT C + 1

εE(y(µ))

)(x(µ)

y(µ)

)−(GF

).

Ein nichtlineares Gleichungssystem wurde damit zuruckgefuhrt auf eine Folge li-nearer Gleichungssysteme. Die Wahl des Startvektors (x(0), y(0)) spielt hierbei einewichtige Rolle, denn je naher er an der exakten Losung liegt, umso weniger Newton-Iterationen werden benotigt. Im Folgenden wird stets mit einer relativ groben Trian-gulierung T1 begonnen und diese dann uniform verfeinert. Fur jede Triangulierungmuss ein neues nichtlineares Gleichungssystem gelost werden. Da vor der ersten Ver-feinerung noch keine Informationen uber das Potential u und die Magnetisierung mvorliegen, setzt man hier den Startvektor (x(0), y(0)) = (0, 0). Verfeinert man aberdas Gitter von einer Triangulierung Tn zu Tn+1, so bietet es sich an, die auf Tnberechnete Losung von u und m zu verwenden, indem man sie bzw. die Vektorenx und y auf das feinere Gitter von Tn+1 prolongiert und die so berechneten Vek-toren als Startvektor (x(0), y(0)) einsetzt, was spater noch genauer erlautert wird.Je mehr die Triangulierung verfeinert wird, desto großer werden also die ParameterJ und K und somit auch die Gleichungssysteme, desto besser wird aber auch derStartvektor (x(0), y(0)). Es wird sich zeigen, dass diese Eigenschaft die Anzahl derNewton-Iterationsschritte beschrankt.

Abschnitt 3.2: Das PCR-Verfahren fur indefinite Matrizen 19

3.2 Das PCR-Verfahren fur indefinite Matrizen

Dieser Abschnitt beschaftigt sich mit dem linearen Gleichungssystem (3.2), das injedem Iterationsschritt des Newton-Verfahrens zu losen ist. Hierzu seien zunachst dieDefinitheitseigenschaften der symmetrischen Jacobi-Matrix Jh aus (3.1) betrachtet.Die Matrix A stellt die Steifigkeitsmatrix des Laplace-Problems dar und ist daherpositiv definit. Die Matrizen C, D und E sind hingegen nach Konstruktion positivsemidefinit. Daher liegt mit der Matrix

M(y) :=

(−A −B−BT C + 1

ε(D(y) + E(y))

)(3.3)

eine indefinite Matrix vor. Man beachte, dass die Matrix M aus der Block-MatrixJh durch Multiplikation der ersten Block-Zeile mit (−1) hervorgeht und somit dasLosen des Gleichungssystems (3.2) aquivalent ist zum Losen von

M(y(µ))

(s

(µ)x

s(µ)y

)=

(−G(µ)

F (µ)

). (3.4)

Das 1952 von Hestenes und Stiefel [9] entwickelte Verfahren der konjugierten Gradi-enten (cg-Verfahren) ist eine effiziente numerische Methode zur Losung von großen,symmetrischen, positiv definiten Gleichungssystemen. Fur indefinite Koeffizienten-matrizen liefert das Verfahren jedoch im Allgemeinen keine Konvergenz. Verwendetman aber in dieser Methode einen Vorkonditionierer und eine andere Bilinearforman Stelle des euklidischen Skalarprodukts auf dem Rd, so gelangt man zum prakondi-tionierten Verfahren der konjugierten Residuen (PCR-Verfahren), welches auch beiindefiniten Matrizen Anwendung findet.Um den Hintergrund und die Idee des PCR-Verfahrens erlautern zu konnen, sei des-halb hier kurz das cg-Verfahren vorgestellt. Im Folgenden bezeichnet 〈·, ·〉 stets daseuklidische Skalarprodukt im Rd, d.h.

〈x, y〉 = xTy ∀x, y ∈ Rd ,

sowie 〈·, ·〉M die von einer Matrix M ∈ Rd×d induzierte Bilinearform, d.h.

〈x, y〉M = 〈x,My〉 = xTMy ∀x, y ∈ Rd .

Das konjugierte Gradientenverfahren fasst das Losen eines linearen Gleichungssys-tems Mx∗ = b mit einer positiv definiten Matrix M ∈ Rd×d und b ∈ Rd als Mini-mierungsaufgabe auf

x∗ = arg minx∈Rd

f(x), f(x) :=1

2xTMx− bTx .

Es ist ein iteratives Verfahren, das bzgl. des Skalarprodukts 〈·, ·〉M orthogonali-

sierte Suchrichtungen p ∈ Rd verwendet und deren optimale Schrittweite sich aus

σOPT = arg minσ ∈R

f(x+ σp) ergibt. Hieraus resultiert folgender Algorithmus.

20 Kapitel 3: Numerische Realisierung

Algorithmus 3.2.1 (cg-Verfahren) Input : M, b, x0

r0 := b−Mx0

p0 := r0

Iteration : k = 0, 1, . . . , d; Abbruch, falls rk = 0

σk :=〈rk, pk〉〈Mpk, pk〉

(3.5)

xk+1 := xk + σk pk

rk+1 := b−Mxk+1 = rk − σkMpk

pk+1 := rk+1 −〈rk+1,Mpk〉〈Mpk, pk〉

pk (3.6)

Das PCR-Verfahren unterscheidet sich nun in zwei entscheidenden Punkten vondiesem Verfahren. Anstatt das Gleichungssystem Mx∗ = b zu losen, stellt manhierbei eine sogenannte prakonditionierte Gleichung

Mx∗ = b, M = P−12MP−

12 , x∗ = P

12 x∗, b = P−

12 b, (3.7)

auf, in der eine symmetrische, positiv definite Matrix P den Prakonditionierer dar-

stellt. Auf diese prakonditionierte Gleichung wendet man im PCR-Verfahren den

Algorithmus 3.2.1 an, jedoch benutzt man hierbei in (3.5) und (3.6) zur Berechnung

von σk und pk+1 nicht das euklidische Skalarprodukt, sondern das Skalarprodukt

〈·, ·〉P−1M . Unter Berucksichtigung der Definition von M, b und x∗ aus (3.7) und der

Tatsache, dass rk = P−12 rk sowie pk = P

12 pk gilt, ergibt sich nach einigen Umfor-

mungen und Vereinfachungen (siehe [7]) der Algorithmus 3.2.2.

Algorithmus 3.2.2 (PCR-Verfahren, erste Version) Input : M, b, x0, P−1, tol

r0 := b−Mx0

p0 := P−1r0

Iteration : k = 0, 1, . . . , solange ‖rk‖ > tol und 〈Mpk, P−1Mpk〉 6= 0

σk :=〈rk, P−1Mpk〉〈Mpk, P−1Mpk〉

xk+1 := xk + σk pk

rk+1 := rk − σkMpk (3.8)

ξk :=〈MP−1rk+1, P

−1Mpk〉〈Mpk, P−1Mpk〉

pk+1 := P−1rk+1 − ξk pk (3.9)

Abschnitt 3.2: Das PCR-Verfahren fur indefinite Matrizen 21

Diese Version des PCR-Verfahrens ist in der Praxis noch nicht zum Losen von indefi-niten Systemen geeignet, da in diesem Fall der Suchvektor pk = 0 sein kann, obwohlxk noch nicht der Losung des Systems entspricht. Ein Gegenbeispiel findet man in[7, S. 267]. Abhilfe bietet eine alternative Rekursionsformel fur die Suchrichtungenpk, die unabhangig ist von den Residuen rk. Durch Einsetzen von rk+1 aus (3.8) inpk+1 aus (3.9) und Skalierung mit −1/σk ergibt sich folgender Rekursionsansatz furpk+1:

pk+1 = P−1Mpk −k∑i=0

αi, k+1 pk−i , αi, k+1 ∈ R ∀ i ∈ 1, . . . , k .

Die geforderte M-Orthogonalitat der Suchvektoren bzgl. 〈·, ·〉P−1M , d.h. die Bedin-gung 〈Mpk+1, P

−1Mpj〉 = 0 fur j = 1, . . . , k, bestimmt die Koeffizienten αi, k+1

eindeutig zu

i = 0 : α0, k+1 =〈MP−1Mpk, P

−1Mpk〉〈Mpk, P−1Mpk〉

,

i = 1 : α1, k+1 =〈MP−1Mpk, P

−1Mpk−1〉〈Mpk−1, P−1Mpk−1〉

,

i ≥ 2 : αi, k+1 = 0 .

Dies fuhrt zu einer Dreitermrekusion von pk+1

pk+1 = P−1Mpk − α0, k+1 pk − α1, k+1 pk−1 . (3.10)

Ersetzt man nun in der Formulierung 3.2.2 des PCR-Verfahrens die Berechnung (3.9)von pk+1 durch die Dreitermrekursion (3.10), so wurde der Algorithmus zunachstaufgrund des Terms MP−1M pro Iterationsschritt zwei Multiplikationen mit derMatrix M benotigen. Dies lasst sich optimieren, indem man noch zusatzlich eineRekursionsformel fur p

(M)k := Mpk findet und somit die Anzahl der Matrixmultipli-

kationen mit M verringert. Aus der Rekursionsformel fur pk+1 gewinnt man

p(M)k+1 = Mpk+1 = MP−1Mpk − α0, k+1 Mpk − α1, k+1Mpk−1

= MP−1p(M)k − α0, k+1 p

(M)k − α1, k+1 p

(M)k−1 .

Unter Verwendung dieser beiden Rekursionen erhalt man schließlich den Algorith-mus 3.2.3, der pro Iterationsschritt nur noch eine Multiplikation mit der Matrix Merfordert.

22 Kapitel 3: Numerische Realisierung

Algorithmus 3.2.3 (PCR-Verfahren, stabile Formulierung)

Input : M, b, x0, P−1, tol

k := 0

r0 := b−Mx0

p−1 := 0

p0 := P−1r0

p(M)0 := Mp0

p(P−1M)0 := P−1p

(M)0

p(MP−1M)0 := Mp

(P−1M)0

Iteration : k = 0, 1, . . . , solange ‖rk‖ > tol und 〈Mpk, P−1Mpk〉 6= 0

σk :=〈rk, p(P−1M)

k 〉〈p(M)k , p

(P−1M)k 〉

xk+1 := xk + σk pk

rk+1 := rk − σk p(M)k

α0 :=〈p(MP−1M)k , p

(P−1M)k 〉

〈p(M)k , p

(P−1M)k 〉

α1 :=〈p(MP−1M)k , p

(P−1M)k−1 〉

〈p(M)k−1, p

(P−1M)k−1 〉

pk+1 := p(P−1M)k − α0 pk − α1 pk−1

p(M)k+1 := p

(MP−1M)k − α0 p

(M)k − α1 p

(M)k−1

p(P−1M)k+1 := P−1p

(M)k+1

p(MP−1M)k+1 := Mp

(P−1M)k+1

Der nachstehende Satz erlautert naher die Besonderheit des PCR-Verfahrens in die-

ser Formulierung, namlich das Konvergenzresultat, das nicht nur fur positiv definite

Matrizen, sondern allgemein fur symmetrische Matrizen M gilt.

Satz 3.2.1 (Konvergenz des PCR-Verfahrens) Sei M = MT sowie P eine po-

sitiv definite Matrix, M,P ∈ Rd×d. Die Zahl κ sei definiert durch:

κ := κ(P−1M

)=

max|λ| : λ ist Eigenwert von P−1Mmin|λ| : λ ist Eigenwert von P−1M

.

Dann gilt fur den Algorithmus 3.2.3 der konjugierten Residuen die Fehlerabschatzung

‖P−1/2M(xk − x∗)‖2 ≤2 ck

1 + c2k‖P−1/2(Mx0 − b)‖2 , (3.11)

wobei c :=√

κ−1√κ+1

die asymptotische Konvergenzrate ist.

Abschnitt 3.2: Das PCR-Verfahren fur indefinite Matrizen 23

Beweis. Siehe [7, Satz 9.5.13].

Mit Algorithmus 3.2.3 liegt somit ein iteratives Verfahren vor, welches zur Losung ei-nes linearen Gleichungssystems Mx = b mit einer indefiniten Koeffizientenmatrix Mangewandt werden kann. Im Weiteren wird er daher zur Losung von (3.4) eingesetzt,in dem mit der Matrix M(y), wie bereits erwahnt, eine indefinite Matrix vorliegt.Gemaß Satz 3.2.1 ist die Konvergenzgeschwindigkeit und somit die Gute dieses Ver-fahrens von den Eigenwerten der Matrix P−1M und somit vom PrakonditioniererP abhangig. Die Herausforderung besteht demzufolge darin, zu der Matrix M(y)einen geeigneten Prakonditionierer PM zu finden, sodass die Intervalle [−c1,−c0]und [c2, c3] mit c0, c1, c2, c3 > 0, in denen die Eigenwerte von P−1

M M liegen, moglichstklein sind. Im Abschnitt 3.4 wird eine mogliche Wahl von PM vorgestellt, derenKonvergenzergebnisse in Kapitel 4 diskutiert werden.

24 Kapitel 3: Numerische Realisierung

3.3 Ein Multigrid-Verfahren

Die Multigrid-Verfahren stellen sehr effektive Verfahren zum Losen linearer Glei-chungssysteme, die durch die Diskretisierung einer kontinuierlichen Aufgabe entste-hen, dar. Sie basieren auf der Idee, eine Kombination aus zwei Methoden herzustel-len, von denen die eine besonders den oszillierenden Anteil des Fehlers und die andereden glatten Anteil schnell reduziert. Ziel dieses Abschnittes ist es, zunachst kurz denAblauf eines Multigrid-Verfahrens zu erlautern und dabei insbesondere auch einemogliche Struktur der Prolongation und Restriktion bei Anwendung des nichtkon-formen Crouzeix-Raviart-Elementes vorzustellen. Im Anschluss wird anhand eineskonkreten Beispiels die Konvengenz dieses Verfahrens in einem numerischen Expe-riment untersucht.

3.3.1 Ein Multigrid-Verfahren fur das nichtkonforme

Crouzeix-Raviart-Element

Fur die Idee der Multigrid- oder Mehrgitterverfahren ist die Beobachtung, dassbeim Losen linearer Gleichungssysteme zur Reduktion des oszillierenden Anteils desFehlers und des glatten Anteils unterschiedliche Vorgehensweise nutzlich sind, cha-rakteristisch. Zur Beseitigung der oszillierenden Anteile der Fehlerfunktion eignensich klassische Iterationsverfahren, wie z.B. das Richardson-, das Jacobi- oder dasGauß-Seidel-Verfahren. Sie besitzen die Eigenschaft, den Fehler deutlich zu reduzie-ren, solange dieser wesentliche oszillierende Anteile aufweist. Ist der Fehler jedochglatt, so ist die Fehlerreduktion betrachtlich geringer, vgl. [1].Um nun ein lineares Gleichungssystem effizient losen zu konnen, ist zusatzlich nocheine andere Methode notig, die im Gegensatz zu den klassischen Iterationsverfah-ren die glatten Anteile des Fehlers stark reduziert. Hierzu wird das Gleichungssys-tem Ax = v, das durch eine Diskretisierung eines kontinuierlichen Problems wieetwa bei der Finiten-Elemente-Methode entstanden ist, in eine Familie von Glei-chungssystemen eingebettet. Dies geschieht, indem man das zu Grunde liegendelineare Gleichungssystem Ax = v als Gleichungssystem auf einem Level ` betrach-tet: A` x

(`) = v(`). Hierbei beschreibt ` die Feinheit der betrachteten TriangulierungT = T`. Diese Triangulierung vergrobert man bis zu einer Triangulierung T1, furdie die zugehorige Steifigkeitsmatrix A1 eine Dimension hat, in der das Losen desGleichungssystems A1 x

(1) = v(1) direkt geschehen kann.Die Umsetzung der Kombination dieser beiden Verfahren lauft bei zwei Gittern inder Praxis wie folgt ab: Man fuhrt zuerst einige Schritte einer Glattungsiterationaus, um die oszillierenden Anteile des Fehlers zu dampfen. Im Anschluss restringiertman das verbleibende Residuum auf das grobere Netz T`−1. Dort wird die Korrekturdirekt berechnet und auf das `-te Netz prolongiert, wo x(`) schließlich um diesenKorrekturterm erganzt wird. Fuhrt man dieses Verfahren nicht nur auf zwei Trian-gulierungen, sondern bis zum grobsten Gitter aus, d.h. lost nur fur die Matrix A1

ein lineares Gleichungssystem direkt, so gelangt man schließlich zu den Multigrid-Verfahren.Wie oben erwahnt ist der Ubergang zwischen den einzelnen Triangulierungen furdiese Verfahren von enormer Bedeutung. Deswegen sei hier zunachst die im Fol-genden verwendete Prolongation erlautert. Allgemein ist eine Prolongation eine li-

Abschnitt 3.3: Ein Multigrid-Verfahren 25

neare Abbildung P`−1 : Rd`−1 → Rd` eines Vektors x(`−1), der einer Losung einesdiskretisierten Problems auf einer Triangulierung T`−1 entspricht, auf einen Vek-tor x(`), der ebendiese Losung auf dem feineren Netz T` reprasentiert. Um derenKonstruktion zu erlautern, ist es hilfreich, sich die zu Grunde liegende Triangu-lierung anzuschauen. Diese ist im betrachteten Fall stets ein gleichmaßiges Gitter,das uniform verfeinert wird. Es sei also eine Triangulierung T`−1 sowie deren Ver-feinerung T` gegeben. Wie in Abbildung 3.1 dargestellt mussen im feineren Gitterdrei verschiedene Arten von Punkten M

(`)i ∈ M` unterschieden werden: Zum einen

diejenigen Punkte, die auf einer Kante k(`−1)i ∈ K`−1 der groberen Triangulierung

T`−1 liegen, welche sich im Inneren eines betrachteten Gebietes Ω befinden undsomit an zwei Elemente grenzen (rot), zum anderen die Punkte im Inneren dergroberen Elemente (grun) und schließlich die Punkte auf dem Rand ∂Ω (gelb). Diezuletzt genannten Punkte werden in der Praxis meist in der ProlongationsmatrixP`−1 nicht berucksichtigt, da die Werte einer gesuchten Funktion u auf dem Rand∂Ω uber Dirichlet-Bedingungen festgelegt sind und somit diese Stutzstellen gar nichtim Gleichungssystem Ax = v vertreten sind. Hier seien trotzdem auch die Prolon-

Abb. 3.1: Freiheitsgrade einer Triangulierung T1 sowie die der Verfeinerung T2

gation und Restriktion von Randpunkten erlautert, da der Ubergang zu derjenigenProlongationsmatrix, die Dirichlet-Bedingungen berucksichtigt, durch Streichen derZeilen und Spalten, die den Freiheitsgraden auf dem Rand entsprechen, leicht ge-wonnen werden kann. Grundsatzlich werden bei der Prolongation auf einen Punktder feineren Triangulierung durch lineare Interpolation alle Ansatzfunktionen dergroberen Triangulierung berucksichtigt, die auf diesem Punkt nicht verschwinden.Fur die in Abbildung 3.1 rot eingefarbten Punkte M

(2)4 und M

(2)6 bedeutet dies also

die Berucksichtigung aller funf Ansatzfunktionen φ(1)1 bis φ

(1)5 . Gemaß des linearen

Ansatzes ergibt sich der approximierte Funktionswert an der Stelle M(2)4 auf dem

groberen Gitter zu

u(M

(2)4

)≈ u(1)

(M

(2)4

):=

5∑i=1

x(1)i φ

(1)i

(M

(2)4

)= x

(1)1 −

1

2x

(1)2 +

1

2x

(1)3 +

1

2x

(1)4 −

1

2x

(1)5 .

Aufgrund der Lage des Punktes M(1)1 im Inneren der Triangulierung und auf der-

selben Kante wie M(2)4 wird der Anteil x

(1)1 φ

(1)1

(M

(2)4

)= x

(1)1 beim Ubergang zur

26 Kapitel 3: Numerische Realisierung

Bestimmung des Wertes x(2)4 = u(2)

(M

(2)4

)starker gewichtet als die anderen An-

satzfunktionen:

x(2)4 :=

u(1)(M

(2)4

)+ x

(1)1 φ

(1)1

(M

(2)4

)2

= x(1)1 −

1

4x

(1)2 +

1

4x

(1)3 +

1

4x

(1)4 −

1

4x

(1)5 .

Die Bestimmung der Werte fur die auf dem Rand ∂Ω sowie im Inneren der groberenElemente liegenden Punkte erfolgt ebenfalls durch lineare Interpolation: Es mussenjeweils nur die drei Ansatzfunktionen berucksichtigt werden, deren FreiheitsgradeM

(1)i sich in demselben Element befinden wie der Punkt selbst.

Abb. 3.2: Prolongation in den drei verschiedenen Fallen

Man wahlt als Naherungswert an dieser Stelle den durch die lineare Approximationauf dem groberen Netz erhaltenen Wert. Fur einen Punkt auf dem Rand, beispiels-weise M

(2)7 , ergibt sich daher:

x(2)7 := u(1)

(M

(2)7

)=

5∑i=1

x(1)i φ

(1)i

(M

(2)7

)=

1

2x

(1)1 + x

(1)2 −

1

2x

(1)3 .

Analog gewinnt man die Werte fur die Punkte im Inneren eines Elements der grobe-ren Triangulierung, an denen jeweils nur zwei der Ansatzfunktionen φ

(1)i nicht ver-

schwinden. Am Beispiel von M(2)3 ergibt sich:

x(2)3 := u(1)

(M

(2)3

)=

5∑i=1

x(1)i φ

(1)i

(M

(2)3

)=

1

2x

(1)1 +

1

2x

(1)2 .

Da in einer uniformen Triangulierung T`−1 mit uniformer Verfeinerung T` nur diesedrei Punktarten auftreten, ist somit eine lineare Abbildung P`−1, die Prolongation,konstruiert, die als Matrixmultiplikation aufgefasst werden kann:

x(`) = P`−1 x(`−1) .

Die Restriktion der Werte von dem feineren Gitter T` auf das grobere T`−1 ergebensich als die adjungierte Abbildung, d.h. durch Multiplikation mit der transponiertenMatrix PT

`−1.Nachdem der Ubergang zwischen zwei Triangulierungen erlautert wurde, kann nunder komplette Algorithmus des Multigrid-Verfahrens vorgestellt werden. Zu einemgegebenen Level ` ∈ N, einem Startvektor x(`, 0) ∈ Rd` und dem eingebetteten

Abschnitt 3.3: Ein Multigrid-Verfahren 27

Gleichungssystem A` x(`) = v` fuhrt man zunachst ν1 Schritte eines Vorglatters

durch. Im Anschluss restringiert man das verbleibende geglattete Residuum auf dasgrobere Gitter T`−1

v(`−1) := PT`−1

(v(`) − A` x(`)

).

Dort ist die exakte Berechnung des Korrekturterms A−1`−1 v

(`−1) unnotig, da er durch

die Prolongation auf das feinere Gitter dort nur angenahert wird. Daher fuhrt man

die Vorglattung und Restriktion iterativ fort, bis man zu einem Gleichungssystem

mit der Koeffizientenmatrix A1 der grobsten Triangulierung T1 gelangt, dort lost

man das System A1 x(1) = v(1) zur Bestimmung des Korrekturterms direkt, pro-

longiert diese Korrektur mit ν2 Nachglattungsschritten pro Level auf das Gitter T`und addiert dort den Korrekturtem zu x(`) hinzu. Hieraus ergibt sich der folgende

Algorithmus:

Algorithmus 3.3.1 (Mutigrid-Zyklus (MGZ), vgl. [8])

Input : `, A`, v(`), x(`, 0)

IF ` = 1

x(`) := A−11 v(1) Lose direkt auf T1

ELSE

x(`) := G ν1(A`, v

(`), x(`, 0))

Vor-Glattung

r(`) := v(`) − A− ` x(`) Berechnung Residuum

r(`−1) := PT`−1 r

(`) Restriktion Residuum

k(`−1, 0) := 0

FOR i = 1 : γ γ-Zyklus

k(`−1, i) := MGZ(`− 1, A`−1, r(`−1), k(`−1, i−1)) Rekursion

END

x(`) := x(`) + P`−1 k(`−1, γ) Prolongation, Korrektur

x(`) := G ν2(A`, v

(`), x(`))

Nach-Glattung

END

Hierbei ist die Wahl γ = 1 oder γ = 2 ublich. Im ersten Fall spricht man von einem

V-Zyklus, im zweiten von einem W-Zyklus, vgl. hierzu [11]. Wendet man diesen Zy-

klus wie in Algorithmus 3.3.2 iterativ an, so gelangt man zum Multigrid-Verfahren.

Algorithmus 3.3.2 (Multigrid-Verfahren (MGV), vgl. [8])

Input : `, A`, v(`), x(`, 0), iter

i := 0

IF i < iter

r(`, i) = v(`) − A` x(`, i)

k(`, i) = MGZ(`, A`, r(`, i), 0)

x(`, i+1) = x(`, i) + k(`, i)

i = i+ 1

END

28 Kapitel 3: Numerische Realisierung

Eine anschauliche Darstellung dieses Verfahrens ist mit dem Flussdiagramm ausAbbildung 3.3 gegeben. In den weiteren Abschnitten wird das Multigrid-Verfahrenzur Prakonditionierung eines linearen Gleichungssytems dienen. Dabei wird, umden Aufwand gering zu halten, stets nur ein Multigrid-Schritt aus Agorithmus 3.3.1verwendet. Zuvor sei aber in den nachsten zwei Abschnitten die Implementierungdes Multigrid-Zyklus vorgestellt sowie die Konvergenz des Verfahrens 3.3.2 anhandeines konkreten Beispiels untersucht.

Abb. 3.3: iter Schritte des Multigrid-Verfahrens als Flussdiagramm

3.3.2 Implementierung

Um den Multigrid-Zyklus 3.3.1 zu realisieren, ist zunachst die Implementierung derProlongationsmatrix P`−1 notig. Dies geschieht in der Matlab-Funktion

”Generiere-

Prolongation.m“.

Abschnitt 3.3: Ein Multigrid-Verfahren 29

MatlabMatlabMatlab-Funktion: GeneriereProlongation.m

1 % Bestimmung der Prolongationsmatrix bei uniformer

2 % Verfeinerung mit linearer Interpolation

3 function P = GeneriereProlongation(NeuDirichlet ,...

4 Dirichlet ,Elemente ,NeuKantennr ,Kantennr ,...

5 VK,Koordinaten)

6 % Kantennr und NeuKantennr symmetrisch machen

7 Kantennr = (Kantennr + Kantennr ’ + ...

8 abs(Kantennr -Kantennr ’))/2;

9 NeuKantennr = (NeuKantennr + NeuKantennr ’ + ...

10 abs(NeuKantennr -NeuKantennr ’))/2;

11 % Anlegen der Prolongationsmatrix P

12 P = sparse(max(max(NeuKantennr)),max(max(Kantennr)));

13 isucc =[2,3 ,1]; iprae =[3,1 ,2];

14 % Elementweises Durchlaufen der alten Mittelpunkte

15 for j =1: size(Elemente ,1)

16 I = diag(Kantennr(Elemente(j,[2,3 ,1]) ,...

17 Elemente(j,[3,1 ,2])));

18 for k=1:3

19 % Berucksichtigt die Mittelpunkte auf den

20 % alten Elementkanten

21 a = NeuKantennr(Elemente(j,[isucc(k),iprae(k)]) ,...

22 VK(I(k)));

23 P(a,I(k)) = P(a,I(k)) + 1;

24 P(a,I(isucc(k))) = P(a,I(isucc(k))) + [ -1;1]/2;

25 P(a,I(iprae(k))) = P(a,I(iprae(k))) + [1; -1]/2;

26 % Berucksichtigt die Mittelpunkte im Inneren

27 % der alten Elemente

28 if VK(I(isucc(k)))

29 a = NeuKantennr(VK(I(isucc(k))),VK(I(k)));

30 P(a,I(k)) = P(a,I(k)) + 1/2;

31 P(a,I(isucc(k))) = P(a,I(isucc(k))) + 1/2;

32 end

33 end

34 end

35 % Normieren der Zeilensummen auf 1

36 s=sum(P,2);

37 Z=sparse(size(P,1),size(P,1));

38 for i=1: size(P,1)

39 Z(i,i)=1/s(i);

40 end

41 P = Z*P;

30 Kapitel 3: Numerische Realisierung

42 % Berucksichtigung des Dirichlet -Randes

43 I=diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

44 P(:,I) = [];

45 I=diag(NeuKantennr(NeuDirichlet (:,1),NeuDirichlet (:,2)));

46 P(I,:) = [];

• Zeile 1–5: Die Funktion GeneriereProlongation stellt zu einer gegebenenTriangulierung T`−1 und deren Verfeinerung T` die oben beschriebene Prolon-gationsmatrix P`−1 auf. Die Triangulierung T`−1 wird dabei durch die DatenElemente, Kantennr, Koordinaten und Dirichlet gekennzeichnet:Elemente ist eine (|T`−1| × 3)-Matrix, in der pro Zeile die Nummern der dreiEcken des Elementes stehen, hierbei ist die Kante von der ersten Ecke zurzweiten stets die langste im Element.Sofern der Eintrag Kantennr(i,j) nicht null ist, gibt es eine Kante von der

Ecke E(`−1)i zur Ecke E

(`−1)j und dieser Eintrag liefert die Nummer der Kante.

In der (|E`−1| × 2)-Matrix Koordinaten sind die x- und y-Koordinaten derEcken der Triangulierung gespeichert.Schließlich liefert die Matrix Dirichlet pro Zeile zwei Ecken einer Kante, dieauf dem Teil des Randes liegt, deren Werte uber Dirichlet-Bedingungen vor-gegeben sind.Die Daten der feineren Triangulierung T` werden in dieser Funktion ausNeuKantennr sowie NeuDirichlet, die analog zu Kantennr und Dirichlet

zu verstehen sind, abgerufen.

• Zeile 6–10: In den Matrizen Kantennr und NeuKantennr kann es vorkom-men, dass es zwar einen Eintrag in Kantennr(i,j) gibt, aber keinen inKantennr(j,i). Damit alle Kantennummern dort vollstandig eingetragensind, wird in diesem Fall der Eintrag Kantennr(j,i) = Kantennr(i,j) ge-setzt.

• Zeile 11–12: Die Prolongationsmatrix wird als schwachbesetzte sparse-Matrixangelegt, deren Dimension von der Anzahl der Mittelpunkte |M`−1| in dergroberen Triangulierung und der der feineren Triangulierung |M`| bestimmtwird. Eine Zeile der Matrix entspricht einem Freiheitsgrad von T`, eine Spalteeinem von T`−1.

• Zeile 13: In den Zeilenvektoren iprae und isucc wird die zur Ecke mit der Po-sition 1, 2 und 3 im Element jeweils vorhergehende bzw. nachfolgende Positionder Ecke im Element gespeichert.

• Zeile 14–15: Die for-Schleife durchlauft alle Elemente der groberen Triangu-lierung T`−1.

• Zeile 16–17: Die drei Kantennummern eines Elementes werden in dem VektorI gespeichert.

• Zeile 18: Alle drei Ecken bzw. alle drei Kanten eines Elementes werden durch-laufen.

Abschnitt 3.3: Ein Multigrid-Verfahren 31

• Zeile 19–25: Die den in Abbildung 3.1 gelb und rot gekennzeichneten Freiheits-graden entsprechenden Eintrage in der Prolongationsmatrix werden angelegt,indem zu einer Kante der groberen Triangulierung in Zeile 21–22 die zwei Kan-tennummern der Kanten in der feineren Triangulierung ermittelt werden, diebeide auf der alten Kante liegen. Fur die zwei dazugehorigen Freiheitsgradewerden in Zeile 23–25 gemaß in Abschnitt 3.3.1 die Eintrage berechnet.

• Zeile 26–31: Die den in Abbildung 3.1 grun gekennzeichneten Freiheitsgradenentsprechenden Eintrage in der Prolongationsmatrix werden angelegt, indemmit dem Skalar a fur jedes k ∈ 1, 2, 3 eine Kante der feineren Triangulierungbetrachtet wird, welche im Inneren des Elementes j der groberen Triangulie-rung liegt.

• Zeile 35–41: Die den in Abbildung 3.1 rot gekennzeichneten Freiheitsgradenentsprechenden Eintrage haben pro Zeile noch nicht die Werte 1, 1

4,−1

4, 1

4,−1

4,

sondern 2, 12,−1

2, 1

2,−1

2. Dies resultiert aus dem elementweisen Durchlaufen der

Kanten sowie Zeile 19–25. Daher werden hier die Zeilensummen der Prolon-gationsmatrix aufgestellt und durch diese geteilt. Fur die Zeilen, die zu dengelben und grunen Mittelpunkten gehoren, bewirkt dies keine Anderung, dasie bereits Zeilensumme 1 besitzen.

• Zeile 42–46: Die Dirichlet-Bedingung wird berucksichtigt, indem die Spaltengestrichen werden, die Mittelpunkten aus M`−1 auf dem Rand entsprechen,analog fur T` werden die Zeilen geloscht.

Hat man die Prolongationsmatrizen P1, . . . ,P`−1 zu den Triangulierungen T1, . . . , T`aufgestellt sowie die Steifigkeitsmatrizen A1, . . . , A` zu einem diskretisierten Problemberechnet, so kann man den Multigrid-Zyklus dazu nutzen, lineare Gleichungssys-teme mit dem Multigrid-Verfahren zu losen. Die direkte Umsetzung des Multigrid-Zyklus 3.3.1 erfolgt in der Matlab-Funktion

”MG.m“. Die verwendeten Glattungsi-

terationen sind hierbei die drei klassischen Iterationsverfahren: Gauß-Seidel, Jacobiund Richardson. Hierbei wird allerdings das symmetrische Gauß-Seidel-Verfahrenbetrachtet. Um dies zu erlautern, sei A = LA+DA+RA die Zerlegung der Matrix Ain eine strikt linke untere Dreiecksmatrix LA, eine Diagonalmatrix DA und eine striktrechte obere Dreiecksmatrix RA. Dann ist das symmetrische Gauß-Seidel-Verfahrenim Multigrid-Zyklus definiert durch

xk+1 = xk + (DA + LA)−1(v − Axk) bei Vorglattung

xk+1 = xk + (DA +RA)−1(v − Axk) bei Nachglattung.

Das Jacobi-Verfahren

xk+1 = xk +1

CJD−1A (v − Axk)

wurde aus Stabilitatsgrunden um den Relaxationsparameter CJ , welcher der maxi-male Eigenwert der Matrix D

−1/2A AD

−1/2A ist, erganzt. Im Richardson-Verfahren

xk+1 = xk +1

CR(v − Axk)

wurde der Parameter CR als der maximale Eigenwert der Matrix A gesetzt. Mit die-sen Glattungsiterationen ergibt sich die folgende Realisierung des Multigrid-Zyklus.

32 Kapitel 3: Numerische Realisierung

MatlabMatlabMatlab-Funktion: MG.m

1 % Multigrid -Algorithmus zur Losung

2 % des Problems A*x = v auf dem k-ten Level

3 function x=MG(k,x,v,A,P,MAXEW_R ,MAXEW_J)

4 % Lose auf dem grobsten Gitter direkt

5 if k==1;

6 x = Ak\v;

7 else

8 % Vorglattung

9 for nue = 1:1 % nue Schritte des Vorglatters

10 % Gauß -Seidel:

11 x=x+tril(Ak)\(v-Ak*x);

12 % % Jacobi:

13 % x=x+1/ MAXEW_J *(diag(diag(Ak))\(v-Ak*x));

14 % % Richardson:

15 % x=x+1/ MAXEW_R *(v-Ak*x);

16 end

17 % Restriktion auf groberes Gitter

18 residuum = Pk-1’*(v-Ak*x);

19 % Berechne Grobgitterkorrektur

20 korrektur = zeros(size(residuum));

21 for gamma = 1:1 % V- oder W-Zyklus

22 korrektur = MG(k-1,korrektur ,residuum ,A,P,...

23 MAXEW_R ,MAXEW_J);

24 end

25 % Prolongation auf feineres Gitter und Korrektur

26 x = x + Pk-1 * korrektur;

27 % Nachglattung

28 for nue = 1:1 % nue Schritte des Nachglatters

29 % Gauß -Seidel:

30 x = x + triu(Ak)\(v-Ak*x);

31 % % Jacobi:

32 % x=x+1/ MAXEW_J *(diag(diag(Ak))\(v-Ak*x));

33 % % Richardson:

34 % x=x+1/ MAXEW_R *(v-Ak*x);

35 end

36 end

Abschnitt 3.3: Ein Multigrid-Verfahren 33

3.3.3 Numerisches Experiment

Dieser Abschnitt soll dazu dienen, die Funktionsweise des Multigrid-Verfahrens 3.3.2fur das nichtkonforme Crouzeix-Raviart-Element anhand eines konkreten Beispielszu uberprufen und das Konvergenzverhalten zu untersuchen. Hierbei wird auchauf die Gute der Glattungsiterationen eingegangen und die optimale Anzahl anGattungsschritten diskutiert.Es wird dazu das Problem

−∆u(x, y) ≡ 1 ∀ (x, y) ∈ Ω := (−5.5, 5.5)× (−5.5, 5.5) (3.12)

u|∂Ω(x, y) = −1

4x2 − 1

4y2 (3.13)

mit der in C2(Ω) eindeutig bestimmten exakten Losung

uexakt(x, y) = −1

4x2 − 1

4y2 ∀ (x, y) ∈ Ω (3.14)

betrachtet. Nach Diskretisierung in dem nichtkonformen Raum S1,nc(T`) zu einerTriangulierung T` gelangt man schließlich – ahnlich wie in Kapitel 2 – zu dem Pro-blem, ein u(`) ∈ S1,nc(T`) zu finden, sodass∫

Ω

∇u(`)∇φ(`)i dy dx =

∫Ω

φ(`)i dy dx ∀ i ∈ 1, . . . , J (`)

u(`)|∂Ω(x, y) = −1

4x2 − 1

4y2 .

Hierbei beschreibt ` wiederum die Feinheit der Triangulierung T` und die Anzahl derFreiheitsgrade J (`) ist durch die Machtigkeit der Menge der Mittelpunkte J (`) = |M`|gegeben, wobei als Testfunktionen alle Basisfunktionen φ

(`)j aus dem Ansatzraum

S1,nc(T`) gewahlt wurden. Der eindeutig bestimmte Vektor x(`) sei so, dass dieLosung u(`) ∈ S1,nc(T`) sich schreiben lasst als

u(`) =J(`)∑j=1

x(`)j φ

(`)j . (3.15)

Auf dem Level ` entsteht eine Steifigkeitsmatrix A` mit den Eintragen

A(`)ij :=

∫Ω

∇φ(`)i ∇φ

(`)j dy dx .

Da in diesem Fall – anders als in Kapitel 2 – auch Ansatzfunktionen gewahlt wurden,welche auf dem Rand Γ := ∂Ω nicht verschwinden, ist die Matrix A` wie folgtaufgebaut:

A` =

(A

(`)Ω,Ω A

(`)Ω,Γ

A(`)Γ,Ω A

(`)Γ,Γ

),

wobei die Indizierung mit Γ bedeutet, dass Basisfunktionen des Randes in dem Teilder Matrix betrachtet werden, analog steht die Indizierung mit Ω fur Ansatzfunk-tionen des Inneren. Mit der Dirichlet-Bedingung (3.13) ist der Anteil x

(`)Γ in dem

34 Kapitel 3: Numerische Realisierung

Gleichungssystem (A

(`)Ω,Ω A

(`)Ω,Γ

)(x(`)Ω

x(`)Γ

)= F

(`)Ω

mit der rechten Seite

F(`)i =

∫Ω

φ(`)i dy dx =

1

3

∑Tk⊂supp(φ

(`)i )

|Tk| ∀ i ∈ 1, . . . , J (`)

bereits vorgegeben und dies lasst sich umschreiben zu

A(`)Ω,Ω x

(`)Ω = F

(`)Ω − A

(`)Ω,Γ x

(`)Γ .

Zur Losung dieses linearen Gleichungssystems wird im Folgenden das Multigrid-Verfahren 3.3.2 mit iter = 50 Iterationen angewandt, das die Naherungslosung x(`)

zu x(`) liefert. Es wird mit einer Triangulierung T1 begonnen, die das Gebiet Ωin rechtwinklige Dreiecke mit Kathetenlange 0.5 einteilt, vgl. Abbildung 3.6. Die-se wird dreimal uniform verfeinert bis zur Triangulierung T4. Aufgrund der großenDimension der daraus resultierenden Matrizen A` werden diese sowie die Prolonga-tionsmatrizen P1, . . . ,P`−1 in dem separaten Matlab-Skript

”AundPgenerieren.m“

(siehe Anhang A) aufgestellt, in der Datei”AundP.mat“ abgespeichert und in allen

anderen Programmen, in denen sie verwendet werden, aufgerufen.Das Matlab-Skript

”Multigrid Test.m“, vgl. Anhang B, lost das enstandene lineare

Gleichungssystem mit dem Multigrid-Verfahren. Fur den dort berechneten Fehler

err :=

J(`)∑j=1

(uexakt(M

(`)j )− x(`)

j

)2

12

ergibt sich in Abhangigkeit der Glattungsiterationen, der Anzahl der Glattungs-schritte und des Zyklus die in Tabelle 3.1 dargestellten Werte. Bei deren Betrach-tung fallt auf, dass sich der Fehler

”err“ bereits bei einer Vor- und Nachglattung der

symmetrischen Gauß-Seidel-Iteration mit einer Verfeinerung der Triangulierung hal-biert. Das Jacobi-Verfahren bewirkt unter Anwendung eines W-Zyklus dasselbe, beieinem V-Zyklus hingegen werden in diesem Fall bei 50 Multigrid-Iterationen mindes-tens zwei Vor- und Nachglattungen benotigt. Die Richardson-Iteration braucht imV-Zyklus fur dieses Ergebnis sogar drei Vor- und Nachglattungen, im W-Zyklus,in dem alle anderen Iterationen nach einem Glattungsschritt Konvergenz errei-chen, werden zwei Glattungsschritte notwendig. Aufgrund der wesentlich besserenGlattungseigenschaften des symmetrischen Gauß-Seidel Verfahrens sowie des Jacobi-Verfahrens gegenuber der Richardson-Iteration werden diese im Folgenden bei An-wendung des Multigrid-Zyklus als Glattungsiterationen gewahlt werden.

Abschnitt 3.3: Ein Multigrid-Verfahren 35

Fehler ”err“: G = Gauß-Seidel, V-Zyklus` ν1 = ν2 = 1 ν1 = ν2 = 2 ν1 = ν2 = 3

1 0.114583333333594 0.114583333333594 0.1145833333335942 0.057291666668344 0.057291666668295 0.0572916666682903 0.028645833346788 0.028645833346970 0.0286458333470684 0.014322916715617 0.014322916716477 0.014322916715164

Fehler ”err“: G = Gauß-Seidel, W-Zyklus` ν1 = ν2 = 1 ν1 = ν2 = 2 ν1 = ν2 = 3

1 0.114583333333594 0.114583333333594 0.1145833333335942 0.057291666668344 0.057291666668295 0.0572916666682903 0.028645833347351 0.028645833346294 0.0286458333466254 0.014322916712160 0.014322916715213 0.014322916714617

Fehler ”err“: G = Jacobi, V-Zyklus` ν1 = ν2 = 1 ν1 = ν2 = 2 ν1 = ν2 = 3

1 0.000114583333334 e+003 0.114583333333594 0.1145833333335942 0.000057292810399 e+003 0.057291666668254 0.0572916666681863 0.020702948332430 e+003 0.028645833347638 0.0286458333466154 5.216978074613378 e+003 0.014322916730374 0.014322916714860

Fehler ”err“: G = Jacobi, W-Zyklus` ν1 = ν2 = 1 ν1 = ν2 = 2 ν1 = ν2 = 3

1 0.114583333333594 0.114583333333594 0.1145833333335942 0.057292810398791 0.057291666668254 0.0572916666681863 0.028645770657670 0.028645833347537 0.0286458333465084 0.014322868324788 0.014322916714368 0.014322916714277

Fehler ”err“: G = Richardson, V-Zyklus` ν1 = ν2 = 1 ν1 = ν2 = 2 ν1 = ν2 = 3

1 0.000000000011458 e+010 0.114583333333594 0.1145833333335942 0.000000001324373 e+010 0.057291666964949 0.0572916666682193 0.002228131127070 e+010 0.028666029719377 0.0286458333469954 1.608008724940161 e+010 0.022302332890469 0.014322916716500

Fehler ”err“: G = Richardson, W-Zyklus` ν1 = ν2 = 1 ν1 = ν2 = 2 ν1 = ν2 = 3

1 0.114583333333594 0.114583333333594 0.1145833333335942 13.243729498142248 0.057291666964949 0.0572916666682193 0.059575272001780 0.028645833347151 0.0286458333472614 0.014322117720291 0.014322916714631 0.014322916715236

Tab. 3.1: Fehler”err“ bei Anwendung des Multigrid-Verfahrens mit den klassischen

Iterationsverfahren als Glatter

36 Kapitel 3: Numerische Realisierung

3.4 Ein Prakonditionierer fur das PCR-Verfahren

Ziel dieses Teils ist es, einen moglichst”guten“ Prakonditionierer PM fur die Matrix

M =

(−A −B−BT C + 1

ε(D + E)

)auszumachen, d.h. insbesondere zu einer kleinen asymptotischen Konvergenzrate0 < c 1 zu gelangen. Da in jeder Iteration des PCR-Verfahrens jeweils eineMultiplikation der Matrix P−1 mit dem Vektor p

(M)k+1 notig ist, muss somit jedes Mal

ein lineares Gleichungssystem gelost werden. Ein Prakonditionierer P muss daherentweder leicht zu invertieren sein oder es muss einen guten Algorithmus zur Losungdes linearen Gleichungssystems Px = p

(M)k+1 geben. Betrachtet man die Zerlegung

M =

(I 0

BTA−1 I

)(−A 00 C + 1

ε(D + E) +BTA−1B

)(I A−1B0 I

)von M, so liegt die Vermutung nahe, dass mit einem Block-diagonalen Prakonditio-nierer der Form

PM =

(PA 00 PC

), PA ∈ RJ×J , PC ∈ R2K×2K

die Eigenwerte von P−1M M in Intervallen um −1 bzw. 1 liegen, falls PA und PC spek-

tralaquivalent zu A bzw. zu C + 1ε(D +E) +BTA−1B gewahlt werden. Die Matrix

A wird in (2.25) gerade als die Steifigkeitsmatrix, welche in der nichtkonformenFiniten-Elemente-Methode unter Anwendung des Crouzeix-Raviart-Elements auf-tritt, definiert. Fur diese Matrizen wurde in Kapitel 3.3 mit dem Multigrid-Verfahrenein effektives Verfahren zur Losung eines Gleichungssystems Ax = v vorgestellt. Mitdem Operator

P−1A v = MGZ(`, A, v, 0) ,

hier exemplarisch angewandt auf einen Spaltenvektor v, scheint daher ein guterKandidat fur den oberen Block des Prakonditionierers gefunden zu sein.Die Bestimmung des unteren Blocks PC ∈ R2K×2K stellt sich als schwieriger heraus.Zwar ist die Dimension 2K deutlich kleiner als J , da ω ⊂⊂ Ω, sodass die Matrix PCin den meisten Fallen sogar noch direkt invertiert werden kann, aber die triviale WahlPC = C+ 1

ε(D+E)+BTA−1B ist aufgrund des Terms BTA−1B viel zu aufwendig zu

berechnen. Die Idee ist nun, PC = C+ 1ε(D+E)+ PC zu setzen, wobei PC ∈ R2K×2K

spektralaquivalent zur Matrix BTA−1B ist. Hierzu ist zunachst zu bemerken, dassdie Matrix A zwar positive Definitheit aufweist, bei der Matrix BTA−1B aber nurnoch positive Semidefinitheit vorliegt, da der Kern von B nichttrivial ist. Aufgrundder Konstruktion der Matrizen A und B ist davon auszugehen, dass die Abbildung,die aus der Multiplikation von BTA−1B mit dem Anteil einer Magnetisierung m ∈R2K , der nicht im Kern von B liegt, resultiert, in etwa spektralaquivalent ist zu derSkalierung dieses Anteils mit den Flachen der Elemente. Im Folgenden wird daherzunachst der Kern von B, ker(B) = w(1), . . . , w(r) ⊂ R2K , wobei w(1), . . . , w(r)

linear unabhangig sind, bestimmt, um dann einen Operator zu konstruieren, dereine Magnetisierung m auf den Anteil abbildet, der nicht im Kern von B liegt,

Abschnitt 3.4: Ein Prakonditionierer fur das PCR-Verfahren 37

skaliert mit den jeweiligen Flachen.Die Vektoren w ∈ R2K , die im Kern von B liegen, erfullen

K∑k=1

∫Tk

∇T φi ·(

wkwK+k

)dx = 0 ∀ i ∈ 1, . . . , J ,

wobei T1, . . . , TK = T |ω, wie in Abschnitt 2.2 beschrieben, die Subtriangulierungvon ω ⊂ Ω darstellt. Man gelangt damit zu der Vermutung, dass in einer allge-meinen regularen Triangulierung gerade die Magnetisierungen durch Multiplikationmit B auf 0 abgebildet werden, welche - wie in Abbildung 3.4 dargestellt - um eineinnere Ecke von T |ω rotieren und auf den anderen Elementen verschwinden bzw.eine Linearkombination dieser Rotationen sind.

Abb. 3.4: Rotation um eine innere Ecke einer allgemeinen regularen Triangulierung

T |ω

Damit ware die Richtung der Vektoren w auf den Elementen Tk zwar festgelegt,jedoch noch nicht deren Lange. Eine mogliche Skalierung liefert der folgende Satz.

Satz 3.4.1 Fur die Magnetisierung m aus Abbildung 3.5 mit

m|T1 =

(w1

wK+1

):=

1

h1

√x2

1 + y21

(−x1

−y1

),

m|T2 =

(w2

wK+2

):=

1

h2

√x2

2 + y22

(x2

y2

)

gilt: ∫T1∪T2

∇T φi ·mdx =

∫T1

∇T φi ·m|T1 dx+

∫T2

∇T φi ·m|T2 dx = 0 .

38 Kapitel 3: Numerische Realisierung

Abb. 3.5: Struktur einer Magnetisierung m aus dem Kern von B

Beweis. Fur die Flacheninhalte der Elemente T1 und T2 gilt offensichtlich

|T1| = −1

2|ki|x1 ,

|T2| = −1

2|ki|x2 .

Somit gilt fur die Hohen h1 und h2, die zu den dem Rotationszentrum (0, |ki|) ge-

genuberliegenden Grundseiten g1 und g2 gehoren,

h1 =2 |T1||g1|

= − |ki|x1√x2

1 + y21

,

h2 =2 |T2||g2|

= − |ki|x2√x2

2 + y22

.

Die Magnetisierung m ist daher gegeben durch

m|T1 =1

|ki|

(1

y1/x1

),

m|T2 =1

|ki|

(1

y2/x2

).

Fur das zu berechnende Integral ergibt sich somit∫T1

∇T φi ·m|T1 dx =

∫∂T1

φi n1m|T1 dx

=

(1

0

)· 1

|ki|

(1

y1/x1

) ∫∂T1

φi dx =1

|ki||ki| = 1

Abschnitt 3.4: Ein Prakonditionierer fur das PCR-Verfahren 39

∫T2

∇T φi ·m|T2 dx =

∫∂T2

φi n2m|T2 dx

=

(−1

0

)· 1

|ki|

(1

y2/x2

) ∫∂T2

φi dx = − 1

|ki||ki| = −1

=⇒∫

T1∪T2

∇T φi ·mdx = 1− 1 = 0 .

Die so skalierten Rotationen um die inneren Ecken von T |ω liegen demnach im Kernvon B. Es ist aber noch nicht geklart, ob diese bereits den gesamten Kern ausma-chen oder ob noch weitere Vektoren im Kern von B liegen.Um diese Frage zu beantworten, wird sich im Weiteren eines numerischen Experi-ments bedient. In allen folgenden Beispielen sei das Gebiet Ω stets durch

Ω = (−5.5, 5.5)× (−5.5, 5.5)

sowie ω als ein Stabmagnet auf dem Teilgebiet

ω = (−0.5, 0.5)× (−2.5, 2.5)

gegeben. Die erste Triangulierung T1 teilt das Gebiet Ω in Quadrate der Lange 0.5ein (# = 22 · 22) und diese wiederum in zwei gleichgroße rechtwinklige Dreie-cke, siehe Abbildung 3.6. Die feineren Triangulierungen T2, T3, . . . enstehen dann

Abb. 3.6: Triangulierung T1 im betrachteten Beispiel

nacheinander durch uniforme Verfeinerungen, d.h. konkret auf das Beispiel bezogenwerden die Seitenlangen der Elemente halbiert. Fur die ersten vier Triangulierungen

40 Kapitel 3: Numerische Realisierung

Triangulierung gometr. VF r des EW 0 von BTB Anz. innerer Ecken von ω

T1 9 9

T2 57 57

T3 273 273

T4 1185 1185

Tab. 3.2: Geometrische Vielfachheit r des Eigenwerts 0 der Matrix BTB und Anzahl

der inneren Ecken von ω in Abhangigkeit der Triangulierung

werden im Experiment die Matrix B aufgestellt sowie die geometrische Vielfachheitr des Eigenwerts 0 von BTB bestimmt. Stimmt diese Vielfachheit mit der Anzahlder inneren Ecken von ω uberein, sind mit den oben konstruierten Rotationen be-reits alle Vektoren aus dem Kern von B aufgefunden. Das numerische Experimentunter Verwendung der Matlab-Skripts

”Kern B.m“ (siehe Anhang C) ergibt die in

Tabelle 3.2 dargestellten Ergebnisse. Hierbei wurde zu der Triangulierung Tn dieAnzahl der inneren Ecken von ω uber (2n − 1)(2n · 10− 1) berechnet. Mit den obengenannten Rotationen scheinen demzufolge bereits alle Vektoren w(1), . . . , w(r) ausdem Kern von B vorzuliegen. Fur den konkreten Fall der ersten Triangulierung sinddie Vektoren w(1), . . . , w(9) in Abbildung 3.7 grafisch dargestellt.

Abb. 3.7: Die Rotationen w(1), w(2) und w(9) aus dem Kern von B auf der Triangu-

lierung T1

Um nun einen Operator zu konstruieren, der eine gegebene Magnetisierung m nurauf den Anteil abbildet, der nicht im Kern von B liegt, sei die Matrix

W :=(w(1), . . . , w(r)

)∈ R2K×r

Abschnitt 3.4: Ein Prakonditionierer fur das PCR-Verfahren 41

definiert. Eine Magnetisierung m ∈ R2K lasst sich schreiben als

m =r∑i=1

βiw(i) +

2K∑i=r+1

βiw(i) = Wβ + (m−Wβ) , βr+1, . . . , β2K ∈ R , β =

β1...βr

,

wobei die Vektoren w(r+1), . . . , w(2K) ∈ R2K gerade so gewahlt wurden, dassw(1), . . . , w(r), w(r+1), . . . , w(2K) eine Basis des R2K ist und dass sie jeweils ortho-gonal sind zu allen Vektoren aus W , d.h.

w(j) ⊥ w(i) ∀ i ∈ 1, . . . , r, ∀ j ∈ r + 1, . . . , 2K. (3.16)

Der gesuchte Operator muss m auf (m−Wβ) abbilden. Wegen (3.16) gilt

(m−Wβ) ⊥ w(i) ∀ i ∈ 1, . . . , r

und daher die folgende Normalengleichung

WT (m−Wβ) = 0 ⇐⇒ WTWβ = WTm.

Diese kann man als ein uberbestimmtes Gleichungssystem

Wβ = m (3.17)

auffassen, welches man mit einer QR-Zerlegung der Matrix W so losen kann, dassder Fehler |m −Wβ| minimal wird. Dies entspricht dem Herausfiltern aller Rota-tionsanteile aus m. Weil die r Spalten von W linear unabhangig sind, betragt derRang von W gerade r. Dies fuhrt zu folgender QR-Zerlegung:

W = QR =[Q1 Q2

] [R1

0

]= Q1R1, R1 ∈ Rr×r, Q1 ∈ R2K×r, Q2 ∈ R2K×(2K−r) .

Unter Berucksichtigung des uberbestimmten Gleichungssystems (3.17) ergibt sichschließlich mit der QR-Zerlegung

m−Wβ = m−Q1R1R−11 QT

1 m =(I −Q1Q

T1

)m.

Infolgedessen entspricht die Multiplikation eines Vektors m ∈ R2K mit der Matrix(I − Q1Q

T1 ) dem gesuchten Operator, der m nur auf den Anteil abbildet, der nicht

im Kern der Matrix B liegt.Da fur die betrachteten Triangulierungen Tn stets ein uniformes Gitter sowie unifor-me Verfeinerungen verwendet werden, ist die Flache |T | fur alle Elemente T inner-halb einer Triangulierung Tn identisch. Der unter der Multiplikation mit der MatrixB nichtverschwindende Teil kann daher einheitlich mit der Flache |T | skaliert unddie Matrix BTA−1B wie folgt approximiert werden.

BTA−1Bm = BTA−1B (m−Wβ) ≈ |T |(I −Q1Q

T1

)m

Gemaß der oben dargelegten Idee erhalt man hiermit fur den unteren Teil PC desPrakonditionierers PM

PC = |T |(I −Q1Q

T1

)=⇒ PC = C +

1

ε(D + E) + |T |

(I −Q1Q

T1

).

42 Kapitel 3: Numerische Realisierung

In diesem Abschnitt wurde also ein Prakonditionierer

P−1M =

(P−1A 00 P−1

C

)=

(MGZ(`, A, · , 0) 0

0(C + 1

ε(D + E) + |T |

(I −Q1Q

T1

))−1

)zum Losen eines linearen Gleichungssystems mit Koeffizientenmatrix M konstruiert,von dem erhofft wird, dass er zu einer moglichst kleinen Konvergenzrate c > 0im PCR-Verfahren fuhrt. Nachdem im Abschnitt 3.5 eine mogliche Losung des Ge-samtproblems sowie deren Implementierung vorgestellt sein wird, soll in Kapitel 4schließlich deren Konvergenz untersucht werden. Hier werden unter anderem auchAbschatzungen fur die Intervalle [−c1,−c0] und [c3, c4] der Eigenwerte von P−1

M M ge-geben sowie die Konvergenzrate c des PCR-Verfahrens fur jeden Schritt des Newton-Verfahrens, in dem ein lineares Gleichungssystem mit dem PCR-Verfahren gelostwird, berechnet.

3.5 Losung des Gesamtproblems

In diesem Abschnitt wird die Implementierung zur Losung des Gesamtproblemserlautert. Da in jedem Newton-Schritt zur Losung des linearen Gleichungssys-tems (3.2) das PCR-Verfahren aufgerufen wird, sei die Implementierung des PCR-Verfahrens

”pre cr special.m“ hier vorangestellt.

MatlabMatlabMatlab-Funktion: pre cr special.m

1 % Prakonditioniertes CR-Verfahren zur iterativen Losung

2 % eines linearen Gleichungssystem Ex=b mit Blockmatrix E

3 function x = pre_cr_special(E,b,x0,iter ,Cinv ,Ah,P)

4 % Festlegung der Werte fur die Abbruchbedingung

5 tol1 = 10^ -12;

6 tol2 = 10^ -30;

7 maxit = 150;

8 % Werte fur den Multigrid -Zyklus

9 x0_A = zeros(size(Ahiter,1) ,1);

10 MAXEW_R = maxew(Ahiter,1e-5,10);

11 MAXEW_J = maxew(diag(diag(Ahiter).^( -0.5))...

12 *Ahiter*diag(diag(Ahiter).^( -0.5)) ,1e-5 ,20);

13 % Ausgangswerte

14 x = x0;

15 rk = b - E*x0;

16 p_old = zeros(length(x0) ,1);

17 Ainvrk = MG(iter ,x0_A ,rk(1: size(Ahiter,1)),Ah ,...

18 P,MAXEW_R ,MAXEW_J);

19 Cinvrk = Cinv*rk(size(Ahiter,1)+1: end);

20 pk = [Ainvrk; Cinvrk ];

Abschnitt 3.5: Losung des Gesamtproblems 43

21 ek = E * pk;

22 Ainvek = MG(iter ,x0_A ,ek(1: size(Ahiter,1)),Ah ,...

23 P,MAXEW_R ,MAXEW_J);

24 Cinvek = Cinv*ek(size(Ahiter,1)+1: end);

25 We = [Ainvek; Cinvek ];

26 EWe = E * We;

27 d = ek’ * We;

28 k = 0;

29 while norm(rk) > tol1 && k < maxit && abs(d) > tol2

30 % Optimale Schrittweite

31 c = rk’ * We;

32 d = ek’ * We;

33 sigma = c/d;

34 % x und das Residuum iterativ berechnen

35 x = x + sigma * pk;

36 rk = rk - sigma * ek;

37 % Dreitermrekursion fur p_k und e_k = E*p_k

38 if k > 0

39 alpha_0 = (EWe ’ * We)/(ek ’ * We);

40 alpha_1 = (EWe ’ * We_old)/(e_old ’ * We_old);

41 pk1 = We - alpha_0 * pk - alpha_1 * p_old;

42 ek1 = EWe - alpha_0 * ek - alpha_1 * e_old;

43 else % Nur fur die erste Iteration

44 alpha_0 = (We ’ * E * We)/(ek ’ * We);

45 pk1 = We - alpha_0 * pk;

46 ek1 = EWe - alpha_0 * ek;

47 end

48 % Werte erneuern , k erhohen

49 p_old = pk;

50 pk = pk1;

51 e_old = ek;

52 ek = ek1;

53 We_old = We;

54 k = k+1;

55 % Prakonditionieren

56 Ainvek = MG(iter ,x0_A ,ek(1: size(Ahiter,1)),Ah ,...

57 P,MAXEW_R ,MAXEW_J);

58 Cinvek = Cinv*ek(size(Ahiter,1)+1: end);

59 We = [Ainvek; Cinvek ];

60 EWe = E * We; % Einzige Multiplikation mit E

61 end

44 Kapitel 3: Numerische Realisierung

• Zeile 3: Die Funktion pre_cr_special lost das Gleichungssystem Ex = biterativ mit dem prakonditionierten Verfahren der konjugierten Residuen. Diesymmetrische Matrix E weist hierbei eine besondere Blockstruktur auf,

E =

(E1 E2

ET2 E3

), E1 ∈ Rn×n, E2 ∈ Rn×m, E3 ∈ Rm×m .

E1 ist eine symmetrische Matrix, welche als Steifigkeitsmatrix aus der Diskre-tisierung eines kontinuierlichen Problems resultiert.Die Eingabeparameter sind daher die Matrix E, der Vektor b, ein Startvektorx0 fur das PCR-Verfahren, das Level ` = iter der Steifigkeitsmatrix E1, sowieder Anteil Cinv des blogdiagonalen Prakonditionierers

P−1E =

(MG 00 Cinv

).

MG steht hierbei fur einen Schritt des Multigrid-Zyklus bzgl. der Steifigkeits-matrix E1, weswegen in Ah alle Steifigkeitsmatrizen der Form E1 von Level 1bis iter gespeichert sind sowie in P die dazugehorigen Prolongationsmatrizen.

• Zeile 5–7: Die Werte, die fur die Abbruchbedingung des PCR-Verfahrens aus-schlaggebend sind, werden festgelegt. tol1 legt hierbei die maximale Großedes Residuums fest, tol2 legt den minimalen Wert fur die Große d fest, durchdie dividiert werden muss, und maxit gibt schließlich die maximale Anzahl anIterationen im PCR-Verfahren an.

• Zeile 9–12: Der Startwert fur den Multigrid-Zyklus wird auf 0 festgelegt sowiedie Parameter fur die Glattungsiterationen des Zyklus berechnet.

• Zeile 14–28: Die Ausgangswerte werden berechnet:

– Zeile 14: x = x0,

– Zeile 15: r0 = b− Ex0,

– Zeile 16: p−1 = 0,

– Zeile 17–20: p0 = P−1E r0,

– Zeile 21: p(E)0 = E p0,

– Zeile 22–25: p(P−1E)0 = P−1

E p(E)0 ,

– Zeile 26: p(EP−1E)0 = E p

(P−1E)0 ,

– Zeile 27: d = 〈p(E)0 , p

(P−1E)0 〉 .

• Zeile 29: Iteration: k = 0, . . . , maxit− 1, solange ‖rk‖2 > tol1 und d > tol2.

• Zeile 31–33: Berechnet optimale Schritteweite:

σk =〈rk, p(P−1E)

k 〉〈p(E)k , p

(P−1E)k 〉

.

• Zeile 35: xk+1 := xk + σk pk.

Abschnitt 3.5: Losung des Gesamtproblems 45

• Zeile 36: rk+1 := rk − σk p(M)k .

• Zeile 38–42: Dreitermrekursionen:

α0 :=〈p(EP−1E)k , p

(P−1E)k 〉

〈p(E)k , p

(P−1E)k 〉

,

α1 :=〈p(EP−1E)k , p

(P−1E)k−1 〉

〈p(E)k−1, p

(P−1E)k−1 〉

,

pk+1 := p(P−1E)k − α0 pk − α1 pk−1 ,

p(E)k+1 := p

(EP−1E)k − α0 p

(E)k − α1 p

(E)k−1 .

• Zeile 43–47: Berechnung von pk+1 und p(E)k+1 fur k = 0.

• Zeile 48–54: k wird um 1 erhoht, die Werte umgeschrieben.

• Zeile 55–60: Berechnung von

p(P−1E)k = P−1

E p(E)k sowie

p(EP−1E)k := E p

(P−1E)k .

Nachdem die Realisierung des PCR-Verfahrens nun vorgestellt wurde, wird imrestlichen Teil dieses Abschnitts die Implementierung des Newton Verfahrens

”MAGNET load.m“ zur Losung des nichtlinearen Gleichungssystems sowie das

Matlab-Skript”magnet skript.m“, das dieses Verfahren fur jede Triangulierung

aufruft, erlautert. Die Funktionen”GeneriereInneres.m“,

”GeneriereKantennr.m“,

”GraduiertesQuadrat.m“ und

”Verfeinerung.m“ sind im Anhang G zu finden.

MatlabMatlabMatlab-Funktion: MAGNET load.m

1 function [U, M, Inneres , Kantennr] = ...

2 MAGNET_load(Elemente ,Koordinaten ,Dirichlet ,ell ,...

3 u_alt ,m_alt)

4 global epsilon Eeasi Eortho;

5 load AundP.mat % Laden von A und der Prolongationsmatrizen

6 [Kantennr ,Elemente] = ...

7 GeneriereKantennr(Elemente ,Koordinaten);

8 Inneres = GeneriereInneres(Elemente ,Koordinaten);

9 AnzKanten = full(max(max(Kantennr)));

10 A = Aganzell;

11

12 % Aufstellen von B und C in Klein -Omega

13 B = sparse(AnzKanten ,2* size(Inneres ,1));

46 Kapitel 3: Numerische Realisierung

14 C = sparse (2* size(Inneres ,1) ,2*size(Inneres ,1));

15 for j = 1:size(Inneres ,1)

16 I = diag(Kantennr(Inneres(j,[2 ,3 ,1]+1) ,...

17 Inneres(j,[3 ,1 ,2]+1)));

18 Ecken = Koordinaten(Inneres(j,[1 ,2 ,3]+1) ,:);

19 Flaeche = det ([1 1 1; Ecken ’]) /2;

20 B(I,[j,j+size(Inneres ,1)]) = ...

21 B(I,[j,j+size(Inneres ,1)]) - 2* Flaeche ...

22 *([ ones (1,3);Ecken ’]\[ zeros (1,2);eye(2)]);

23 C([j,j+size(Inneres ,1)],[j,j+size(Inneres ,1)])=...

24 (Eortho * Eortho ’) * Flaeche;

25 end

26 D = [A , B; -B’, C];

27

28 % rechte Seite = (G, F), Volumenkrafte

29 b = sparse(AnzKanten ,1);

30 for j = 1:size(Elemente ,1)

31 I = diag(Kantennr(Elemente(j,[2,3 ,1]) ,...

32 Elemente(j,[3,1 ,2])));

33 b(I,1) = b(I,1) ...

34 +det([1 1 1; Koordinaten(Elemente(j,:) ,:) ’])...

35 * g(1/3* sum(Koordinaten(Elemente(j,:) ,:)))/6;

36 end;

37 d = sparse (2* size(Inneres ,1) ,1);

38 for j = 1:size(Inneres ,1)

39 Ecken = Koordinaten(Inneres(j,[1 ,2 ,3]+1) ,:);

40 d([j,j+size(Inneres ,1)],1) = det([1 1 1; Ecken ’]) ...

41 * f(1/3* sum(Ecken)) ’/2;

42 end;

43 rhs = [b;d];

44

45 % Berucksichtigung der Dirichletbedingungen

46 maske1 = zeros(AnzKanten +2* size(Inneres ,1) ,1);

47 maske2 = zeros(AnzKanten ,1);

48 I = diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

49 maske1(I) = ones(size(I,1) ,1);

50 maske2(I) = ones(size(I,1) ,1);

51 freieKnoten = find(~ maske1);

52 freie_u = find(~ maske2);

53 u = zeros(AnzKanten +2* size(Inneres ,1) ,1);

54 u(I) = u_D (1/2*( Koordinaten(Dirichlet (:,1) ,:) ...

55 + Koordinaten(Dirichlet (:,2) ,:)));

56 rhs = rhs - D * u;

Abschnitt 3.5: Losung des Gesamtproblems 47

57 % u_alt und m_alt als Startwerte im Newton -V. verwenden

58 if ell == 1

59 u(freie_u) = u_alt(freie_u);

60 u(AnzKanten +1: AnzKanten +2* size(Inneres ,1)) = m_alt;

61 else

62 u(freie_u) = Prolongell -1* u_alt;

63 sizeInneresalt = size(Inneres ,1) /4;

64 for p=1: size(Inneres ,1)

65 u(AnzKanten+p) = m_alt(ceil(p/4));

66 u(AnzKanten+size(Inneres ,1)+p) = ...

67 m_alt(sizeInneresalt+ceil(p/4));

68 end

69 end

70 iter = 0; % Anzahl der Newton -Iterationen

71 G = sparse (2* size(Inneres ,1) ,2*size(Inneres ,1));

72

73 % Aufstellen von W

74 AnzKnotenInneres = full(max(max(Inneres (:,[2,3,4]))));

75 KnotenInneren = sparse(AnzKnotenInneres ,13);

76

77 % Zahlt wie viele und welche Kanten

78 % an einen Knoten in Klein -Omega grenzen

79 for j = 1 : size(Inneres ,1)

80 for p = 2:4

81 KnotenInneren(Inneres(j,p) ,1) = ...

82 KnotenInneren(Inneres(j,p) ,1) + 1;

83 KnotenInneren(Inneres(j,p) ,...

84 KnotenInneren(Inneres(j,p) ,1)+1) = Inneres(j,1);

85 KnotenInneren(Inneres(j,p) ,...

86 KnotenInneren(Inneres(j,p) ,1)+7) = j;

87 end

88 end

89 KnotenInneren (:,1) = KnotenInneren (:,1) -6;

90 Treffer = find(~ KnotenInneren (:,1));

91 KnotenInneren = ...

92 [Treffer ,full(KnotenInneren(Treffer ,[2:13]))];

93

94 W = sparse (2* size(Inneres ,1),size(KnotenInneren ,1));

95 h = abs(Koordinaten(Elemente (1,2) ,2) - ...

96 Koordinaten(Elemente (1,3) ,2));

97

98 for i = 1:size(KnotenInneren ,1) % Anzahl der Wirbel

99 for k = 1:6 % Die 6 Elemente , auf denen der Wirbel lebt

48 Kapitel 3: Numerische Realisierung

100 if Elemente(KnotenInneren(i,k+1) ,1) ...

101 == KnotenInneren(i,1)

102 if Koordinaten(KnotenInneren(i,1) ,2) > ...

103 Koordinaten(Elemente(KnotenInneren(i,k+1) ,2) ,2)

104 W([ KnotenInneren(i,k+7) ,...

105 KnotenInneren(i,k+7)+size(Inneres ,1)],i)...

106 = [0;1] * 1/h;

107 else

108 W([ KnotenInneren(i,k+7) ,...

109 KnotenInneren(i,k+7)+size(Inneres ,1)],i)...

110 = [0;-1] * 1/h;

111 end

112 elseif Elemente(KnotenInneren(i,k+1) ,2) ...

113 == KnotenInneren(i,1)

114 if Koordinaten(KnotenInneren(i,1) ,2) > ...

115 Koordinaten(Elemente(KnotenInneren(i,k+1) ,1) ,2)

116 W([ KnotenInneren(i,k+7) ,...

117 KnotenInneren(i,k+7)+size(Inneres ,1)],i)...

118 = [1;0] * 1/h;

119 else

120 W([ KnotenInneren(i,k+7) ,...

121 KnotenInneren(i,k+7)+size(Inneres ,1)],i)...

122 = [ -1;0] * 1/h;

123 end

124 else

125 if Koordinaten(KnotenInneren(i,1) ,1) > ...

126 Koordinaten(Elemente(KnotenInneren(i,k+1) ,1) ,1)

127 W([ KnotenInneren(i,k+7) ,...

128 KnotenInneren(i,k+7)+size(Inneres ,1)],i)...

129 = [1;-1] * 1/h;

130 else

131 W([ KnotenInneren(i,k+7) ,...

132 KnotenInneren(i,k+7)+size(Inneres ,1)],i)...

133 = [ -1;1] * 1/h;

134 end

135 end

136 end

137 end

138

139 % QR -Zerlegung von W und Berechnung von Q1

140 % fur den Prakonditionierer

141 [Q,RR] = qr(W);

142 Q1 = Q(: ,[1: size(RR ,2)]);

Abschnitt 3.5: Losung des Gesamtproblems 49

143 while (iter < 10000) % Newton -Iteration

144 % Alte Magnetisierung

145 M(:,1) = u(AnzKanten +1: AnzKanten+size(Inneres ,1));

146 M(:,2) = u(AnzKanten+size(Inneres ,1) +1:...

147 AnzKanten +2* size(Inneres ,1));

148 % Aufstellen R, der rechten Seiten im LGS

149 % mit Berucksichtigung des Strafterms

150 R = zeros(AnzKanten +2* size(Inneres ,1) ,1);

151 for j = 1:size(Inneres ,1)

152 Area = det ([1 1 1; ...

153 Koordinaten(Inneres(j ,[2:4]) ,:) ’])/2;

154 EPS=epsilon * norm(Koordinaten(Inneres(j,3) ,:)...

155 - Koordinaten(Inneres(j,2) ,:));

156 lambda = max(0,norm(M(j,:))^2-1) / EPS;

157 if norm(M(j,:)) > 1e-10

158 lambda = lambda / norm(M(j,:));

159 end

160 I = AnzKanten+j+[0; size(Inneres ,1)];

161 R(I) = R(I) + lambda * Area * M(j,:) ’;

162 end

163 R(freieKnoten) = R(freieKnoten) + ...

164 D(freieKnoten ,:)*u - rhs(freieKnoten);

165 % Abbruchbedingung im Newton -Verfahren

166 if (norm(R) < 10^( -12) )

167 U = full(u(1: AnzKanten));

168 iter

169 return

170 end

171 % Aufstellen von G = 1/ epsilon (D(y)+E(y))

172 G = 0 * G;

173 for j = 1:size(Inneres ,1)

174 Area = det ([1 1 1; ...

175 Koordinaten(Inneres(j ,[2:4]) ,:) ’])/2;

176 EPS=epsilon * norm(Koordinaten(Inneres(j,3) ,:)...

177 - Koordinaten(Inneres(j,2) ,:));

178 lambda = max(0,norm(M(j,:))^2-1) / EPS;

179 I = j+[0; size(Inneres ,1)];

180 if norm(M(j,:)) > 1e-10

181 G(I,I) = G(I,I) + Area * ( lambda * eye(2) ...

182 +2* sign(lambda)*(M(j,:) ’*M(j,:))...

183 /norm(M(j,:))/ EPS) ;

184 end

185 end

50 Kapitel 3: Numerische Realisierung

186 E = [A , B; -B’, C+G];

187

188 Ecke = Koordinaten(Elemente (1,:) ,:);

189 Flache = det ([1 1 1; Ecke ’]) /2;

190

191 % Prakonditionerer aufstellen und invertieren

192 Cinv = inv(C+G+Flache *(eye(size(Q1 ,1))-Q1*Q1 ’));

193 % Erste Blockzeile des LGS mit -1 multiplizieren

194 % um die richtige Ausgangssituation zu haben

195 E(1: AnzKanten ,:) = -E(1: AnzKanten ,:);

196 R(1: AnzKanten) = -R(1: AnzKanten);

197

198 ndim = size(R(freieKnoten) ,1);

199

200 % PCR -Verfahren anwenden

201 ulu = pre_cr_special(E(freieKnoten ,freieKnoten) ,...

202 R(freieKnoten),zeros(ndim ,1),ell ,Cinv ,Ah,Prolong);

203 u(freieKnoten) = u(freieKnoten) - ulu;

204 % Newton -Iterationen zahlen

205 iter = iter + 1;

206 end

• Zeile 1–3: Die Funktion MAGNET_load liefert zu den gegebenen DatenElemente, Koordinaten, Dirichlet, ell, u_alt und m_alt eine approxi-mierte Losung U und M zu uh und mh des diskretisierten und penalisiertenProblems (Pε). Elemente, Koordinaten und Dirichlet sind dabei wie in derFunktion GeneriereProlongation aus Abschnitt 3.3.2 zu verstehen. ell be-schreibt die Feinheit der Triangulierung; fur das erste Gitter ist ell = 1. u_altund m_alt sind ausschlaggebend fur den Startvektor (x(0), y(0)) im Newton-Verfahren.

• Zeile 4–10: Die Matrizen A1, . . . , A` sowie die ProlongationsmatrizenP1, . . . ,P`−1 werden aus der Datei AundP.mat geladen und die Elemente desStabmagneten ω werden in Inneres hinterlegt.

• Zeile 13–14: Anlegen der Matrizen B und C als schwachbesetzte Matrizen,B ∈ RJ×2K , J = |M| = AnzKanten, K = size(Inneres,1), C ∈ R2K×2K .

• Zeile 15: Die for-Schleife durchlauft alle Elemente in ω, um die Matrizen Bund C aufzustellen:

– Zeile 16–17: Generiert die Kantennummern der drei Kanten des aktuellenElements.

– Zeile 18–19: Berechnung der Flache des Elements |T |.

Abschnitt 3.5: Losung des Gesamtproblems 51

– Zeile 20–22: Eintrage von B:

(Bi,k, Bi,K+k) = −∫Tk

∇T φi dx = −|Tk| ∇T φi .

– Zeile 23–24: Eintrage von C:(Ck, k Ck,K+k

CK+k, k CK+k,K+k

)= |Tk| e⊥ ⊗ e⊥ .

• Zeile 29–43: Berechnung des Vektors

(GF

):

– Zeile 29–36:

Gi =∑

Tk⊂supp(φi)

|Tk|3

g(sTk) , g ≡ 0 ,

– Zeile 37–42: (FkFK+k

)= |Tk| f(sTk

) ,

wobei fur das außere Feld f der Fall

f(x, y) =

(0

1.1

)∀(x, y) ∈ ω

betrachtet wird.

• Zeile 46–52: Auffinden derjenigen Kantennummnern, die nicht auf dem Rand∂Ω liegen und Ablegen dieser Nummern in dem Vektor freie_u. Der VektorfreieKnoten berucksichtigt zusatzlich die Dimension des Vektors y(µ), welcherdie Approximation an die Magnetisierung m darstellt.

• Zeile 53: Der Vektor u wird angelegt. Er beinhaltet die Iterierten des Newton-Verfahrens:

u =

(x(µ)

y(µ)

).

• Zeile 54–56: Die Dirichlet-Bedingungen werden berucksichtigt:ui = u(Mi) = uD(Mi) fur alle Mi ∈M|∂Ω, wobei hier uD ≡ 0 ist.

• Zeile 58–69: Aufstellen des Startvektors (x(0), y(0)) fur das Newton-Verfahrenin Abhangigkeit von der Triangulierung:

– Zeile 58–60: Liegt die erste Triangulierung T1 vor, so wurden mit denParametern u_alt und m_alt die Anfangswerte ubergeben;

– Zeile 61–69: Im Fall ` > 1 wird die Losung des groberen Netzes T`−1 pro-longiert: In Zeile 62 geschieht dies fur die lineare Approximation u_alt

durch Multiplikation mit der Prolongationsmatrix P`−1 und fur die kon-stante Approximation m_alt in Zeile 63–68 durch Setzen der Werte einesElementes des feineren Gitters auf den Wert des groberen Gitters, in demes liegt.

52 Kapitel 3: Numerische Realisierung

• Zeile 70–71: Die Anzahl der Newton-Iterationen iter wird auf 0 gesetzt undDie Matrix G wird als schwachbesetzte Matrix angelegt. Sie wird den Term1ε(D(y(µ)) + E(y(µ))) beinhalten.

• Zeile 74–137: Aufstellen der Matrix W = (w(1), . . . , w(r)), welche aus den Vek-toren des Kerns der Matrix B besteht.

– Zeile 74: AnzKnotenInneres nimmt den großten Wert einer Ecke aus ωan.

– Zeile 75: Die schwachbesetzte Matrix KnotenInneren speichert in der Zei-le i in der ersten Spalte die Anzahl der Elemente, welche an die Ecke Eigrenzen. Im Hochstfall sind es 6 Elemente und dies ist auch der Fall, beidem es sich um eine Ecke aus dem Inneren von ω handelt. In den Spal-ten 2 bis 7 stehen die Nummern der Elemente, die diese Ecke enthalten,sowie in Splte 8 bis 13 die Zeilen, in denen diese Elemente in der Ma-trix Inneres stehen. Diese Eintrage werden in der folgenden for-Schleifevorgenommen.

– Zeile 79–88: Die for-Schleife durchlauft alle Elemente von ω. Fur diesewerden jeweils alle drei Ecken betrachtet und sobald eine Ecke Ei zueinem Element gehort, wird die Anzahl in der ersten Spalte und der i-tenZeile um 1 erhoht, sowie die Zeilen, in der das dazugehorige Element inder Matrix Elemente und in der Matrix Inneres zu finden ist, in denfolgenden Spalten abgelegt.

– Zeile 89–92: Hier werden diejenigen Ecken herausgefiltert, welche an 6 Ele-mente grenzen, also im Inneren von ω liegen. Die Matrix KnotenInneren

wird auf diese Eintrage beschrankt.

– Zeile 94–96: Anlegen der schwachbesetzten Matrix W sowie Berechnungder Kathetenlange h.

– Zeile 98–137: Die Eintrage von W werden berechnet. Hierzu ist wichtig,an welcher Stelle die Ecke aus dem Inneren von ω in einem Elementsteht. Diese Anordnung liegt wie in Abbildung 3.8 vor. Die erste if-

Abb. 3.8: Position der Ecke Ei in den jeweiligen Elementen

Schleife fragt genau diese Position ab und innerhalb dieser Abfrage wirddann uber eine weitere if-Schleife uberpruft, welche der zwei moglichenElemente tatsachlich vorliegt, und der jewelige Anteil des Wirbels wirdeingetragen.

• Zeile 139–142: QR-Zerlegung von W sowie Bestimmung von Q1.

• Zeile 143: while-Schleife zur Newton-Iteration.

Abschnitt 3.5: Losung des Gesamtproblems 53

• Zeile 144–147: Die Naherungslosung y(µ) an m wird aus dem Gesamtvektor(x(µ), y(µ)) herausgelesen.

• Zeile 148–164: Die rechte Seite der linearen Gleichungssysteme innerhalb desNewton-Verfahrens wird aufgestellt.

R =

(G(µ)

F (µ)

)=

(A B−BT C + 1

εE(y(µ))

)(x(µ)

y(µ)

)−(GF

)Hierbei ist zu erwahnen, dass in dem Strafterm aus Stabilitatsgrunden

λ = (|m|2 − 1)+

gesetzt wurde und E(y) daher bestimmt ist uber(Ek, k Ek,K+k

EK+k, k EK+k,K+k

)=(|(y(µ)

k , y(µ)K+k)|

2 − 1)

+I2×2 ∀ k ∈ 1, . . . , K .

• Zeile 165–169: Abbruchbedingung im Newton-Verfahren:

|(G(µ), F (µ))| < 10−12 .

• Zeile 171–184: Die Matrix G = 1ε(D(y) +E(y)) wird aufgestellt. Aufgrund des

veranderten Ansatzes fur λ ergibt sich auch ein anderer Aufbau in D:(Dk, k Dk,K+k

DK+k, k DK+k,K+k

)= |Tk|

2H(|(y(µ)k , y

(µ)K+k)| − 1)

|(y(µ)k , y

(µ)K+k)|

(y

(µ)k

y(µ)K+k

)⊗

(y

(µ)k

y(µ)K+k

)

• Zeile 192: Der untere Teil des Prakonditionierers PC wird aufgestellt und in-vertiert.

• Zeile 195–196: Multiplizieren der ersten Blockzeile des linearen Gleichungssys-tems mit (−1).

• Zeile 201–202: Aufrufen des PCR-Verfahrens.

• Zeile 203–205: Berechnung von (x(µ+1), y(µ+1)) und Erhohung der Newton-Iterationszahl.

Das Matlab-Skript”magnet skript.m“ stellt die erste Triangulierung T1 wie in Ab-

bildung 3.6 dargestellt auf. Fur dieses Gitter und die verfeinerten TriangulierungenT2, . . . T`max wird jeweils das Newton-Verfahren

”MAGNET load.m“ aufgerufen, um

die Approximationen uh an das Potential u und die Magnetisierung mh naherungs-weise zu bestimmen.

54 Kapitel 3: Numerische Realisierung

MatlabMatlabMatlab-Skript: magnet skript.m

1 clear all

2 format long

3 global epsilon Eeasi Eortho;

4

5 epsilon = 10^( -2); % Penalisierungsparamter

6 Eeasi_raw = [1;2]; % 1. Fall Vorzugsachse

7 %Eeasi_raw = [1;0]; % 2. Fall Vorzugsachse

8 %Eeasi_raw = [0;1]; % 3. Fall Vorzugsachse

9 Eeasi = Eeasi_raw (:)/norm(Eeasi_raw);

10 Eortho = [0,1;-1,0] * Eeasi;

11 max_iter = 4; % Anzahl der Triangulierungen

12

13 % Gitter fur Groß -Omega

14 [Elemente ,Koordinaten ,Dirichlet ,Neumann] = ...

15 GraduiertesQuadrat (22,22,1,1);

16 Koordinaten = [11* Koordinaten (:,1) -5.5, ...

17 11* Koordinaten (:,2) -5.5];

18 [Kantennr ,Elemente] = GeneriereKantennr(Elemente , ...

19 Koordinaten);

20 AnzKanten = full(max(max(Kantennr)));

21 % Elemente in Klein -Omega

22 Inneres = GeneriereInneres(Elemente ,Koordinaten);

23 % Ruft das Newton -Verfahren auf

24 [u, m, Inneres , Kantennr] = MAGNET_load(Elemente ,...

25 Koordinaten ,Dirichlet ,Neumann ,1,...

26 zeros(AnzKanten ,1),zeros (2* size(Inneres ,1) ,1));

27

28 for ell = 2: max_iter

29 % Losungen des groberen Netzes als Startwerte

30 % fur das feinere Netz verwenden

31 AnzKanten = full(max(max(Kantennr)));

32 maske = zeros(AnzKanten ,1);

33 I = diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

34 maske(I) = ones(size(I,1) ,1);

35 freie_u = find(~ maske);

36 m_alt = m;

37 u_alt = u(freie_u);

38 % Verfeinerung des Netzes

39 VK=(1: full(max(max(Kantennr))))’+size(Koordinaten ,1);

Abschnitt 3.5: Losung des Gesamtproblems 55

40 [Koordinaten ,Elemente ,Dirichlet ,Neumann ]=...

41 Verfeinerung(Koordinaten ,Elemente ,Dirichlet ,...

42 Neumann ,Kantennr ,VK);

43 % Ruft das Newton -Verfahren auf

44 [u, m, Inneres ,Kantennr ] = MAGNET_load(Elemente ,...

45 Koordinaten ,Dirichlet ,Neumann ,ell ,u_alt ,m_alt);

46 end

• Zeile 1–10: Der Penalisierungsparameter ε sowie die Vorzugsachse e = Eeasi

der magnetischen Ausrichtung wird festgelegt und hieraus e⊥ = Eortho be-rechnet.

• Zeile 11: max_iter = `max gibt die maximale Anzahl an Triangulierungen vor.

• Zeile 14–20: Das erste Gitter T1 fur Ω wird wie in Abbildung 3.6 dargestelltuber die Funktion GraduiertesQuadrat generiert sowie die dazugehorigen Ko-ordinaten und Kantennummern berechnet.

• Zeile 22: GeneriereInneres stellt in der Matrix Inneres die Elemente desStabmagneten ω auf.

• Zeile 24–26: Das Newton-Verfahren wird mit der Funktion MAGNET_load auf-gerufen. Startvektor (x(0), y(0)) ist auf dem ersten Netz (0, 0).

• Zeile 28: Die for-Schleife durchlauft die Triangulierungen T2, . . . , T`max .

• Zeile 31–37: Die zuletzt berechneten Losungen fur u und m des groberen Git-ters werden in u_alt und m_alt gespeichert.

• Zeile 39–42: Uniforme Verfeinerung der Triangulierung.

• Zeile 44–45: Das Newton-Verfahren MAGNET_load wird fur das verfeinerte Git-ter aufgerufen. Als Startwert werden u_alt und m_alt ubergeben.

56 Kapitel 3: Numerische Realisierung

Kapitel 4

Konvergenzanalyse

Nachdem in Kapitel 3 ausfuhrlich die numerischen Methoden sowie deren Imple-mentierung zur Losung des in Kapitel 2 hergeleiteten nichtlinearen Gleichungssys-tems (2.26) vorgestellt worden sind, wird in diesem Kapitel nun die Konvergenz die-ser Verfahren untersucht. Der Schwerpunkt liegt hierbei auf der Untersuchung derbenotigten Iterationen im Newton-Verfahren sowie des Konvergenzverhaltens desPCR-Verfahrens. In Abschnitt 3.2 wurde mit Satz 3.2.1 bereits eine Aussage uberdie Konvergenz des PCR-Verfahrens fur indefinite Matrizen und die Kovergenzra-te c getroffen. Um nun diese Konvergenzrate fur den konkreten Fall des linearenGleichungssystems

M(y(µ))

(s

(µ)x

s(µ)y

)=

(A −B−BT C + 1

ε(D(y(µ)) + E(y(µ)))

)(s

(µ)x

s(µ)y

)=

(−G(µ)

F (µ)

),

welches in der µ-ten Iteration des Newton-Verfahrens angewandt auf das nichtlinea-re Gleichungssystem (2.26) auftritt, prakonditioniert mit PM gemaß Satz 3.2.1 zuberechnen, ware es notig, die Eigenwerte von

P−1M M =

(P−1A 00 P−1

C

)(−A −B−BT C + 1

ε(D + E)

)=

(−P−1

A A −P−1A B

−P−1C BT P−1

C

(C + 1

ε(D + E)

))zu berechnen. Folgender Satz liefert eine Abschatzung der Intervalle [−c1,−c0] und

[c2, c3], die das Spektrum von P−1M M enthalten.

Satz 4.0.1 Sei H ∈ Rm×m symmetrisch und positiv semidefinit, A ∈ Rn×n sym-

metrisch und positiv definit, B ∈ Rn×m. C ∈ Rm×m sei so, dass C + H + BTA−1B

positiv definit ist, sowie Z ∈ Rm×m so, dass C+Z positiv definit ist. Es gabe positive

Konstanten ∆,Θ, θ, sodass die folgenden Ungleichungen fur alle x ∈ Rm\0 erfullt

sind:

xT(C + H)x

xT(C + Z)x≤ ∆ ,

xTBTA−1Bx

xT(C + Z)x≤ Θ2

und

θ2 ≤xT(C + H + BTA−1B

)x

xT(C + Z)x.

Man definiere

M :=

(−A B

BT C + H

)und P :=

(PA 0

0 PC

),

58 Kapitel 4: Konvergenzanalyse

wobei PA ∈ Rn×n und PC ∈ Rm×m symmetrisch und positiv definit seien. Die Ei-

genwerte von P−1C (C + Z) seien mit

0 < η1 ≤ η2 ≤ · · · ≤ ηm

bezeichnet sowie die Eigenwerte von P−1A A mit

0 < λ1 ≤ λ2 ≤ · · · ≤ λn .

Dann liegen die Eigenwerte von P−1M in der Vereinigung der Intervalle[−1

2

(λn +

√λ2n + 4ηmλnΘ2

), −λ1

]∪[

1

2

(−λ1 +

√λ2

1 + 4η1λ1θ2

),

1

2

(−(λ1 −∆ηm) +

√(λ1 + ∆ηm)2 + 4ηmλnΘ2

)].

Beweis. Siehe [6, Theorem 1].

Dieser Satz kann zur Abschatzung der Eigenwerte von P−1M M verwendet werden. In

dem Fall ist P−1 = P−1M sowie M = M und die einzelnen Blockmatrizen sind wie

folgt gegeben:

A = A ,

B = −B ,

C = C ,

H =1

ε(D + E) .

Damit die Voraussetzungen des Satzes 4.0.1 erfullt sind, muss die Matrix

C +1

ε(D + E) +BTA−1B

positiv definit sein. Da die Matrizen C, D, E und BTA−1B fur sich genommenjeweils nur positiv semidefinit sind, ist dies nicht ohne Weiteres klar. Die positiveDefinitheit folgt aus der Tatsache, dass der Kern der Matrix B, der aus den in3.4 beschriebenen Rotationen besteht, nicht im Kern der Matrix C ∈ R2K×2K liegenkann. Denn die Struktur der Matrix C legt die 2K linear unabhagigen Eigenvektorenv(k), k ∈ 1, . . . , 2K, gerade folgendermaßen fest:(

v(k)k

v(k)K+k

)= e ist Eigenvektor zum Eigenwert 0,(

v(K+k)k

v(K+k)K+k

)= e⊥ ist Eigenvektor zum Eigenwert |Tk| .

Der Kern der Matrix C besteht also aus den K Vektoren, deren k-te und (K+k)-teKomponente zusammengenommen dem Vektor e ∈ R2 entsprechen, k ∈ 1, . . . , K.Dies sind gerade diejenigen Magnetisierungen, die auf dem k-ten Element Tk derSubtriangulierung T |ω, k ∈ 1, . . . , K, ein Vielfaches der Vorzugsachse e annehmen.

59

Diese Vektoren konnen aber nicht mit dem Kern der Matrix B zusammenfallen, dennbei ihnen liegt niemals eine Rotation vor. Selbst wenn eine Magnetisierung aus demKern von B auf einem Element mit der Vorzugsachse e ubereinstimmt, so muss siezwangslaufig auf einem anderen Element von dieser Richtung abweichen, da sonstkeine Rotation vorlage.Die Matrix C + 1

ε(D + E) + BTA−1B ist demzufolge positiv definit. Daher ist die

WahlZ = BTA−1B

zulassig. Damit sind fur ∆ = Θ = θ = 1 die Eigenschaften der Konstanten des Satzes4.0.1 erfullt. Um nun Intervalle [−c1,−c0] und [c2, c3], in denen die Eigenwerte vonP−1

M M liegen, zu bestimmen, mussen gemaß des Satzes 4.0.1 die minimalen undmaximalen Eigenwerte von P−1

A A und P−1C (C + 1

ε(D + E) + BTA−1B) berechnet

werden. Dies wird numerisch fur P−1A A auf funf verschieden feinen Triangulierungen

T`, ` ∈ 1, . . . , 5 erfolgen, fur P−1C (C + 1

ε(D+E) +BTA−1B) gelingt dies aufgrund

des Terms BTA−1B leider nur auf den ersten drei Gittern.Da die Matrix A und der Operator P−1

A fur jedes Level ` nur von der Struktur derTriangulierung T` und nicht von der Vorzugsachse e oder den Iterierten (x(µ), y(µ))des Newton-Verfahrens abhangig sind, seien im Folgenden mit A` bzw. PA`

die zur`-ten Triangulierung gehorenden Matrizen bezeichnet. Mit dem Operator

P−1A`

:= MGZ(`, A`, · , 0)

wird zur Bestimmung des Vektors

p(P−1M)k+1 := P−1

M p(M)k+1 ,

der in jedem Schritt des PCR-Verfahrens auftritt, der Multigrid-Zyklus ein Malangewandt. Es sind daher der minimale und maximale Eigenwert der MatrixA` ∈ RJ×J zu berechnen, die durch Anwendung eines Schrittes des Multigrid-Verfahrens auf die einzelnen Spalten der Matrix A` enstehen.

A` =(a(1, `) · · · a(J, `)

)⇒ A` =

(a(1, `) · · · a(J, `)

)mit a(i, `) := MGZ(`, A`, a

(i, `), 0) ∀ i ∈ 1, . . . , J.

Hierbei bezeichnet MGZ(`, A`, a(i, `), 0) den Multigrid-Zyklus 3.3.1 auf dem `-ten

Level angewandt auf die i-te Spalte der Matrix A`, bei dem der Startvektor x(`, 0) = 0gesetzt wird.Die große Dimension d` der Matrizen A` ∈ Rd`×d` , siehe Tabelle 4.1, ist der Grunddafur, dass die Eigenwerte von A` schon fur ` = 3 nicht mehr mit der vordefinier-ten Matlab-Funktion

”eig.m“ berechnet werden konnen. Daher wird der maximale

Eigenwert von A` fur ein Level ` mit der Potenzmethode ermittelt. Die minima-len Eigenwerte konnen leider nur fur ` = 1, 2 konkret berechnet werden. Da essich bei dem Multigrid-Verfahren um ein symmetrisches Verfahren handelt, wird im

` 1 2 3 4 5d` 1408 5720 23056 92576 371008

Tab. 4.1: Große der Matrizen A` in Abhangigkeit von `

60 Kapitel 4: Konvergenzanalyse

Folgenden die Abweichung des minimalen Eigenwerts von dem Wert 1 durch dieAbweichung des maximalen Eigenwerts von dem Wert 1 approximiert, d.h.

λmin ≈ 1− (λmax − 1) = 2− λmax , (4.1)

obwohl dies nicht mathematisch bewiesen wird. In Abhangigkeit vom Glatter, derAnzahl der Glattungsschritte und der Zyklusart ergeben sich fur den V-Zyklus diein Tabelle D.1 und fur den W-Zyklus die in Tabelle D.2 im Anhang D dargestelltenDaten. Hierbei wurde unter Anwendung des V-Zyklus die Untersuchung der Eigen-werte bei einmaliger Vor- und Nachglattung mit dem Jacobi-Verfahren aufgrund derin Kapitel 3.3.3 genannten Nachteile ausgespart. Die dort mit einem ∗ versehenenWerte wurden gemaß der Formel (4.1) geschatzt.Der minimale und maximale Eigenwert η1 und ηm der Matrix

P−1C

(C` +

1

ε(D`(y

(µ)) + E`(y(µ))) +BT

` A−1` B`

)hangen nicht nur von der Triangulierung T`, sondern auch von den Iterierten(x(µ), y(µ)) und der gewahlten Vorzugsachse e ab. Eine Berechnung der Eigenwertekann daher nur innerhalb der Newton-Iteration erfolgen. Dazu wird das Gesamt-problem mittels der Dateien

”MAGNET load.m“ und

”magnet skript.m“ fur drei

verschiedene Vorzugsachsen e gelost werden. In jeder Newton-Iteration konnen diegesuchten Eigenwerte η1 und ηm bestimmt werden. Diese Werte wurden in den Ta-bellen 4.2 bis 4.4 exemplarisch fur den V-Multigrid-Zyklus mit jeweils zwei Vor- undNachglattungen mit dem Gauß-Seidel-Verfahren fur die Falle

e(1) =1√5

(12

), e(2) =

(10

)und e(3) =

(01

)berechnet. Aus ihnen ergeben sich mit Satz 4.0.1 unter Berucksichtigung, dass indiesem Fall ∆ = Θ = θ = 1 gilt, Abschatzungen fur die Intervalle [−c1,−c0] und[c2, c3] durch

c0 = λ1 ,

c1 =1

2

(λn +

√λ2n + 4ηmλn

),

c2 =1

2

(−λ1 +

√λ2

1 + 4η1λ1

),

c3 =1

2

(−(λ1 − ηm) +

√(λ1 + ηm)2 + 4ηmλn

).

und damit auch ein theoretischer Wert ctheo fur die Konvergenzzahl c. Die Intervall-grenzen −c1,−c0, c2, c3 sind in den Tabellen E.1 bis E.3 im Anhang E dargestellt undder Wert ctheo wird in den Tabellen 4.2 bis 4.4 gemaß der Definition von c =

√κ−1√κ+1

in Satz 3.2.1 bestimmt, wobei die Konditionszahl κ(P−1M M) wie folgt approximiert

wird:

κ ≈ maxc1, c3minc0, c2

.

Fur die Falle der Vorzugsachse e(1) und e(3) ergeben sich theoretische Konvergenz-raten zwischen 0.67 und 0.76. Das heißt, pro Iterationsschritt nimmt der Fehler

61

mindestens um ca. ein Viertel bis ein Drittel ab. Eine schlechtere theoretische Kon-vergenzrate erhalt man im Fall der Vorzugsachse e(2). Hier liegt der Wert ctheo zwi-schen 0.83 und 0.85. Die schlechteren Zahlen sind damit zu begrunden, dass in demFall der Eigenwert η1 mit ca. 0.43 naher bei 0 liegt als er es bei den Vorzugsachsee(1) und e(3) tut. Dies hangt mit der Tatsache zusammen, dass fur

e(2) =

(10

)die Vorzugsachse senkrecht auf dem Stabmagneten steht. Dies ist ein extremer Fall,der zu einer uneinheitlichen Ausrichtung der Magnetisierungen besonders an den Po-len des Stabmegneten fuhrt, vgl. Abbildung 4.1 (b). Numerische Experimente habengezeigt, dass diese Form der Ausrichtung einer Magnetisierung fur den Prakonditio-nierer PM den ungunstigsten Fall darstellt.Insgesamt ergeben sich mit ctheo langsamere Konvergenzraten, als die Anzahlen derbenotigten Iterationen im PCR-Verfahren N erwarten lassen. Dem theoretischenWert wurde daher in den Tabellen 4.2 bis 4.4 mit cprakt fur verschiedene Level `der Triangulierung und verschiedene Stufen µ im Newton-Verfahren die tatsachlichemittlere Konvergenzzahl gegenubergestellt. Diese wurde uber

cprakt := N

√√√√‖P−1/2M (MsN − b)‖2

‖P−1/2M (Ms0 − b)‖2

ermittelt, wobei N(`, µ) die Anzahl der benotigten Iterationen im PCR-Verfahrensowie

b(`, µ) :=

(−G(µ)

F (µ)

)die zu dem Level ` und der Newton-Stufe µ gehorende rechte Seite des linearenGleichungssystems darstellt und

sk(`, µ) :=

(s

(µ)x, k

s(µ)y, k

)fur k = 0, . . . , N die Iterierten des PCR-Verfahrens seien. Man erkennt in Tabellen4.2 bis E.1 einen deutlichen Unterschied zwischen den beiden Werten ctheo und cprakt.Dies liegt daran, dass fur die Berechnung von ctheo die Daten c0, c1, c2, c3 und somitauch κ(P−1

M M) fur den schlechtesten Fall, der eintreten kann, abgeschatzt wurdenund die Abschatzungen in diesem Fall nicht scharf sind. Der Wert ctheo sichert abera-priori eine Konvergenz und wurde aus diesem Grund berechnet.Die tatsachlichen Konvergenzzahlen cprakt nehmen fur die Vorzugsachsen e(1) unde(3) abhangig vom Level ` Werte zwischen 0.3 und 0.4 an. Dies ist ein guter Wert,der sich aus der relativ schnellen Konvergenz des PCR-Verfahrens, gemessen ander Anzahl benotigter Iterationen N , herleitet. Auch fur den ungunstigen Fall e(2)

ergeben sich mit Konvergenzraten um 0.6 noch vertretbare Werte. Man kann alsofesthalten, dass die theoretische Konvergenzrate ctheo die Konvergenz im Allgemei-nen unterschatzt, jedoch einen richtigen Trend angibt, was das Konvergenzverhaltenbei unterschiedlichen Vorzugsachsen e betrifft.Fur die unterschliedlichen Varianten des Multigrid-Zyklus ist die Anzahl der Itera-tionen im Newton- sowie im PCR-Verfahren in Tabelle F.1 bis F.6 in Anhang F fur

62 Kapitel 4: Konvergenzanalyse

die verschiedenen Falle der Vorzugsachen dargestellt. Nennenswert ist hierbei, dassdurch die geschickte Wahl von (x(0, `), y(0, `)) als Startvektor im Newton-Verfahrenfur ` > 1 als Prolongation der approximierten Losung (x(µmax, `−1), y(µmax, `−1)) aufdem groberen Netz T`−1 die Anzahl der Iterationen µmax im Newton-Verfahren be-schrankt sind. Im Fall e(1) und e(3) nehmen sie mit dem Level der Triangulierungsogar ab. Wurde man den Startwert statt der prolongierten Losung trivial als Null-vektor setzen, so wurden auf dem vierten Netz fur diese zwei Vorzugsachsen uber20 Iterationen notwendig. Im Fall e(2) ist dies ein wenig anders: Hier liegt bei derersten und zweiten Triangulierung ein lineares Gleichungssystem vor, da der Straf-term E(y), der die Nichtlinearitat ausmacht, dort null ist und erst auf dem drittenNetz zur Geltung kommt. Aber auch hier liegen die Anzahl der Iterationen mit 8und 9 immer noch im einstelligen Bereich, was ein gutes Ergebnis fur das Newton-Verfahren ist.Betrachtet man die ebenfalls in Tabelle F.1 bis F.6 aufgelisteten Anzahlen N derPCR-Iterationen, so kann man erkennen, dass die Prakonditionierung mit demGauß-Seidel-Verfahren als Glattungsiteration im Multigrid-Zyklus deutlich bessereKonvergenzergebnisse liefert als das Jacobi-Verfahren. Man braucht beim Jacobi-Verfahren ungefahr eine Glattungsiteration mehr, um vergleichbare Ergebnisse wiebeim Gauß-Seidel-Verfahren zu erzielen. Außerdem fallt auf, dass ein W-Zyklus beider Prakonditionierung gegenuber dem V-Zyklus keine nennenswerte Verbesserungliefert, die Erhohung der Glattungsiterationszahl hingegen schon. Besonders bei derVorzugsachse e(3) kommt zum Ausdruck, dass die Anzahl N der PCR-Iterationenmit großer werdendem `, d.h. mit feiner werdender Triangulierung, gar nicht odernur kaum ansteigt. Dies ist ein großer Gewinn fur die Gesamtlosung.Mit der Matrix PM wurde daher auf den Triangulierungen T1, . . . , T4 ein guterPrakonditionierer fur die im Newton-Verfahren zu losenden Gleichungssysteme ge-funden, wobei die Wahl des symmetrischen Gauß-Seidel-Verfahrens als Glattungsite-ration im Multigrid-Zyklus aufgrund der oben genannten Eigenschaften dem Jacobi-Verfahren vorzuziehen ist. Um den Aufwand nicht zu groß werden zu lassen, emp-fiehlt es sich, zwei Glattungsschritte vorzunehmen sowie den V- und nicht denW-Zyklus anzuwenden, da der letztgenannte keine Verbesserung liefert, die denzusatzlichen Aufwand rechtfertigen konnte. Problematisch bei dem gewahltenPrakonditionierer ist allerdings, dass aufgrund der benotigten QR-Zerlegung derMatrix W die Verfeinerung der Triangulierungen nur bis zum vierten Gitter T4 vor-genommen werden kann.

63

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` µ η1 ηm ctheo cprakt N

1

1 0.995811808975243 1.000000000000003 0.669647572981836 0.040531824534743 102 0.988325692649765 1.000000000000002 0.671273797098361 0.062553580473101 113 0.947227758623291 1.000000000000014 0.680308262879745 0.145742570971623 154 0.894986465139262 1.000000000000015 0.692067205998071 0.226435118186262 195 0.952684070190281 1.000000000000004 0.679098187096985 0.153738828622524 176 0.867303236655318 1.000000000000019 0.698431490055257 0.267834171375143 217 0.903405675017017 1.000000000000004 0.690150377115809 0.232246860034656 198 0.843046118941102 1.000000000000004 0.704088361614713 0.309389747351637 239 0.842393748528700 1.000000000000004 0.704241563070093 0.306808979317837 2110 0.836708619348051 1.000000000000006 0.705579052067031 0.317070075609906 1911 0.836664127484216 1.000000000000004 0.705589536335609 0.303780617869529 1312 0.836663786916687 1.000000000000005 0.705589616589543 0.275729694965720 713 0.836663786101993 1.000000000000005 0.705589616781523 0.126342527575256 1

2

1 0.857496012094861 1.000000000000021 0.746494125734651 0.391653373013086 292 0.845597877131713 1.000000000000026 0.748820550132147 0.409459824094722 273 0.825100235549031 1.000000000000027 0.752866794570411 0.409505481213014 264 0.823670439765634 1.000000000000022 0.753150882272265 0.408310322272192 225 0.823444657320424 1.000000000000021 0.753195765505098 0.401352329910003 156 0.823444347079876 1.000000000000020 0.753195827181918 0.332168135628895 67 0.823444346785779 1.000000000000026 0.753195827240386 0.366760232769449 1

3

1 0.849896586080665 1.000000000000103 0.759725048347712 0.420383042579435 312 0.838128126481126 1.000000000000110 0.761900600480647 0.416757417660210 293 0.816708283682927 1.000000000000145 0.765900167464510 0.439654131802677 274 0.815971821082230 1.000000000000175 0.766038613100798 0.413836938010632 245 0.814955378285107 1.000000000000104 0.766229794489815 0.440603231572907 186 0.814954315010739 1.000000000000137 0.766229994542313 0.378645225127714 6

Tab. 4.2: Theoretische und tatsachliche Konvergenzrate fur den Fall e(1)

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` µ η1 ηm ctheo cprakt N

1 1 0.493527204741723 1.000000000000005 0.826773120579093 0.206473809372621 222 1 0.415887280393295 1.000000000000008 0.847146791911034 0.609196389750546 55

3

1 0.368442895640012 1.000000000000020 0.865886557333869 0.633669022186180 572 0.431157076945602 1.000000000000020 0.849422084566118 0.594150373865726 513 0.430724285768977 1.000000000000045 0.849532052101778 0.607256746402761 484 0.429654115163653 1.000000000000073 0.849804177100677 0.626165020537145 495 0.429735083867245 1.000000000000107 0.849783577941501 0.604572692260326 426 0.429431224192739 1.000000000000135 0.849860891254838 0.629264472464876 387 0.429428388704799 1.000000000000135 0.849861612821277 0.595505897845864 238 0.429428340844091 1.000000000000375 0.849861625000753 0.417236038817416 2

Tab. 4.3: Theoretische und tatsachliche Konvergenzrate fur den Fall e(2)

64 Kapitel 4: Konvergenzanalyse

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` µ η1 ηm ctheo cprakt N

1

1 0.995799942876393 1.000000000000002 0.669650146058900 0.040556515304290 102 0.988178417132214 1.000000000000003 0.671305848842265 0.063145799625670 113 0.943435034663631 1.000000000000006 0.681151358515725 0.152026885389379 174 0.910719014641967 1.000000000000008 0.688492244547785 0.214011161034165 195 0.954433352549736 1.000000000000006 0.678710940403852 0.150724656085958 176 0.887295347801028 1.000000000000012 0.693825814983613 0.258828954887795 217 0.937192733763653 1.000000000000002 0.682542511538335 0.182587927438301 178 0.856792054315695 1.000000000000002 0.700873347506363 0.287485341231675 239 0.861961156957675 1.000000000000002 0.699670733722219 0.270651357494096 2110 0.845468771050182 1.000000000000002 0.703519925065010 0.302335821039997 1911 0.845208684474837 1.000000000000003 0.703580912937297 0.293487276487990 1512 0.845196728422078 1.000000000000001 0.703583716735305 0.302232677154707 1013 0.845196694106217 1.000000000000003 0.703583724782699 0.225124645355097 514 0.845196694007899 1.000000000000001 0.703583724805755 0.380497086903149 1

2

1 0.871538469047088 1.000000000000004 0.743768953325437 0.386438133969160 282 0.854554636905601 1.000000000000003 0.747067750193103 0.392248833688793 263 0.841407391337560 1.000000000000003 0.749643770820951 0.402102865243677 244 0.840497467195283 1.000000000000003 0.749822793622776 0.400483297758878 215 0.840431373549254 1.000000000000005 0.749835800940108 0.389284089120442 156 0.840431275620116 1.000000000000004 0.749835820213068 0.304936010567342 6

3

1 0.871485305377607 1.000000000000035 0.755773259325501 0.409830865697438 302 0.847609095852479 1.000000000000019 0.760146725784138 0.407470732384257 273 0.837892583649697 1.000000000000025 0.761944300210908 0.430828738691566 264 0.837045228375601 1.000000000000026 0.762101559298578 0.407524474609939 225 0.836946820199412 1.000000000000021 0.762119827882722 0.412196529401225 156 0.836946715399205 1.000000000000026 0.762119847338506 0.347068758283023 6

Tab. 4.4: Theoretische und tatsachliche Konvergenzrate fur den Fall e(3)

65

(a) Vorzugsachse: e(1)

(b) Vorzugsachse: e(2)

(c) Vorzugsachse: e(3)

Abb. 4.1: Losung des Potentials u (links) und der Magnetisierung m (rechts) auf der

Triangulierung T2 fur die Falle e(1), e(2) und e(3)

66 Kapitel 4: Konvergenzanalyse

Kapitel 5

Fazit

Im Rahmen dieser Ausarbeitung wurde mit der Methode der konjugierten Residuenin Abschnitt 3.2 ein effizientes Verfahren zur Losung von symmetrischen linearenGleichungssystemen vorgestellt. Aufgrund der Eigenschaft, dass dieses Verfahrenauch indefinite Koeffizientenmatrizen zulasst, kann es innerhalb der Folge von linea-ren Gleichungssystemen, welche bei der Anwendung des Newton-Verfahrens auf dasin Kapitel 2 hergeleitete nichtlineare Gleichungssystem enstehen, zur naherungswei-sen Bestimmung einer Magnetisierung m und deren induzierten Potentials u einge-setzt werden. Die Iterationszahlen des Newton-Verfahrens und damit die Anzahl derauftretenden Gleichungssysteme wurde im Verlauf dieser Arbeit durch die in Kapitel3 beschriebene, geschickte Wahl des Startvektors (x(0), y(0)) erfolgreich reduziert.Fur die Effektivitat des PCR-Verfahrens ist der Prakonditionierer entscheidend. Da-her widmete sich der Abschnitt 3.4 ausfuhrlich einer moglichen Variante des Prakon-ditionierers. Fur den oberen Block P−1

A des dort gewahlten Block-diagonalen Prakon-ditionierer PM fiel die Wahl auf den Multigrid-Zyklus. Dies geschah hauptsachlichaufgrund der in Abschnitt 3.3 beschriebenen Tatsache, dass das Multigrid-Verfahrenbei Anwendung einer passenden Glattungsiteration, wie etwa dem Gauß-Seidel-Verfahren, auch fur die nichtkonforme Finite-Elemente-Methode ein sehr effizientesVerfahren zur Losung der dort entstandenen linearen Gleichungssystemen ist. Eswurde damit das Ziel verfolgt, die Eigenwerte der Matrix A = P−1

A A moglichst we-nig um den Wert 1 streuen zu lassen. Dies ist mit dem gewahlten Multigrid-Zyklus,besonders bei Vor- und Nachglattung mit dem Gauß-Seidel-Verfahren, zufriedenstel-lend gelungen.Dasselbe Spektralverhalten sollte auch fur die Matrix P−1

C (B+ 1ε(D+E)+BTA−1B)

erzielt werden. Fur die drei verschiedenen Vozugsachsen e(1), e(2) und e(3) ergab sichhierbei ein unterschiedliches Ergebnis. Nimmt die Vorzugsachse dieselbe Richtungan wie der untersuchte Stabmagnet (e(3)) oder steht in einem Winkel auf diesem,der unter 90 lag (e(1)), so wies das Spektrum der betrachteten Matrix gute Werteauf: Der kleinste Eigenwert η1 war in diesen Fallen durch 0.8 beschrankt und dermaximale durch 1. Steht die Vozugsachse jedoch senkrecht auf dem Magneten (e(2)),so liegt der kleinste Eigenwert η1 bei 0.4, wahrend 1 weiterhin der maximale Eigen-wert ist. Mit der großeren Streuung der Eigenwerte lassen sich in diesem Fall auchdie gegenuber den Fallen der Vorzugsachsen e(1) und e(3) deutlich hoheren Iterati-onszahlen im PCR-Verfahren erklaren.Die Gute des Prakonditionierer PC ist daher von der gewahlten Vorzugsachseabhangig. Da aber selbst im Fall e(2), welcher die hochsten Iterationszahlen auf-weist, relativ zu der Große des linearen Gleichungssystems (fur den Fall der feinstenTriangulierung ` = 4: 97696) mit unter 60 PCR-Iterationen ein akzeptables Ergebniserzielt wurde, ist insgesamt mit dem Prakonditionierer PM fur die TrianglierungenT1, . . . , T4 eine gute Wahl getroffen. Der große Nachteil dieser Prakonditionierung istallerdings, dass man zur Bestimmung des Blockes PC die QR-Zerlgung der in Ka-

68 Kapitel 5: Fazit

pitel 3.4 beschriebenen Matrix W benotigt. Diese Zerlegung kann aber nur bis zurdritten Verfeinerung, also bis zur Triangulierung T4 mit der Kathetenlange 1/32,vorgenommen werden. Eine genauere Berechnung der Magnetisierung m und desPotentials u ist daher nicht moglich.Um noch feinere Gitter zuzulassen, musste eine Alternative zu dem Prakonditionie-rer PC gefunden werden. Diese konnte zum Beispiel die Matrix

PC = |T | I +1

ε(D + E) ,

sein, fur die wahrend der Ausarbeitung zwar nicht so gute Iterationszahlen wie furden vorgestellten Prakonditionierer PM erzielt wurden, deren Berechnung und In-vertierung aber auch noch fur feinere Triangulierungen moglich ist.Es bleibt demzufolge festzuhalten, dass innerhalb dieser Arbeit zum einen derAufwand zur Losung des nichtlinearen Gleichungssystems mittels des Newton-Verfahrens durch die Wahl des Startvektors deutlich gesenkt wurde und zum an-deren ein Prakonditionierer vorgestellt wurde, der bis zu einer gewissen Gittergroßedie iterative Losung der dort auftretenden linearen Gleichungssysteme mit relativgeringem Aufwand ermoglicht.

Anhang A

AundPgenerieren.m zum

Aufstellen von A` und P`−1

A.1 AundPgenerieren.m

MatlabMatlabMatlab-Skript: AundPgenerieren.m

1 max_iter = 5; % Anzahl der Triangulierungen

2 Prolong = cell(1, max_iter -1); % enthalt die

3 % Prologationsmatrizen

4 Aganz = cell(1,max_iter); % enthalt die Matrizen A_l

5 % mit Dirichletknoten

6 Ah = cell(1, max_iter); % enthalt die Matrizen A_l

7 % ohne Dirichletknoten

8 % Startgitter erzeugen auf [-5.5,5,5]x[-5.5,5,5]

9 [Elemente ,Koordinaten ,Dirichlet ,Neumann] = ...

10 GraduiertesQuadrat (22,22,1,1);

11 Koordinaten = [11* Koordinaten (:,1) -5.5, ...

12 11* Koordinaten (:,2) -5.5];

13 [Kantennr ,Elemente] = GeneriereKantennr(Elemente ,...

14 Koordinaten);

15 AnzKanten = full(max(max(Kantennr)));

16 % Dirichlet -Randbedingung

17 maske = zeros(AnzKanten ,1);

18 I = diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

19 maske(I) = ones(size(I,1) ,1);

20 freie_u = find(~ maske);

21 % Aufstellen der FEM -Laplace -Matrix A in ganz Omega

22 A = sparse(AnzKanten ,AnzKanten);

23 for j = 1:size(Elemente ,1)

24 I = diag(Kantennr(Elemente(j,[2,3 ,1]) ,...

25 Elemente(j,[3,1 ,2])));

26 A(I,I) = A(I,I) + STEMA(Koordinaten(Elemente(j,:) ,:));

27 end

70 Anhang A: AundPgenerieren.m zum Aufstellen von A` und P`−1

28 Aganz 1 = A;

29 Ah1 = A(freie_u ,freie_u);

30 for i = 2: max_iter

31 % Verfeinerung des Netzes

32 VK=(1: full(max(max(Kantennr))))’+size(Koordinaten ,1);

33 [Koordinaten ,NeuElemente ,NeuDirichlet ,Neumann ]=...

34 Verfeinerung(Koordinaten ,Elemente ,Dirichlet ,...

35 Neumann ,Kantennr ,VK);

36 %Prolongation bestimmen

37 [NeuKantennr , NeuElemente] = ...

38 GeneriereKantennr(NeuElemente ,Koordinaten);

39 Prolongi-1 = GeneriereProlongation(NeuDirichlet ,...

40 Dirichlet , Elemente , NeuKantennr , ...

41 Kantennr , VK , Koordinaten);

42

43 Elemente = NeuElemente;

44 Dirichlet = NeuDirichlet;

45 Kantennr = NeuKantennr;

46 AnzKanten = full(max(max(Kantennr)));

47 % Dirichlet -Randbedingung

48 maske = zeros(AnzKanten ,1);

49 I = diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

50 maske(I) = ones(size(I,1) ,1);

51 freie_u = find(~ maske);

52

53 % Auftsllen der FEM -Laplace -Matrix A in ganz Omega

54 A = sparse(AnzKanten ,AnzKanten);

55 for j = 1:size(Elemente ,1)

56 I = diag(Kantennr(Elemente(j,[2,3 ,1]) ,...

57 Elemente(j,[3,1 ,2])));

58 A(I,I) = A(I,I) + ...

59 STEMA(Koordinaten(Elemente(j,:) ,:));

60 end

61 Aganzi = A;

62 Ahi = A(freie_u ,freie_u);

63 end

64 % Abspeichern der Matrizen A und P

65 save(’AundP2.mat’,’Aganz’,’Ah’,’Prolong ’)

Abschnitt A.2: STEMA.m 71

A.2 STEMA.m

MatlabMatlabMatlab-Funktion: STEMA.m

1 function M = STEMA(Ecken)

2 % Erstellung der lokalen nichtkonformen

3 % Steifigkeitsmatrix fur das Laplace Problem mit

4 % Ecken = [x1, y1; x2, y2; x3, y3]

5 D_eta = [ones (1,3);Ecken ’] \ [zeros (1,2);eye(2)];

6 M = 2 * det([ones (1,3);Ecken ’]) * D_eta * D_eta ’;

72 Anhang A: AundPgenerieren.m zum Aufstellen von A` und P`−1

Anhang B

Multigrid Test.m zum Testen des

Multigrid-Verfahrens

MatlabMatlabMatlab-Skript: Multigrid Test.m

1 format long

2 max_iter = 4;

3 load AundP.mat

4 err = zeros(max_iter ,1);

5 error_max = zeros(max_iter ,1);

6 exakt = @(x) -1/4.* x(1).^2 - 1/4 .* x(2) .^2;

7 % Gitter erzeugen

8 [Elemente ,Koordinaten ,Dirichlet ,Neumann] = ...

9 GraduiertesQuadrat (22,22,1,1);

10 Koordinaten =[11* Koordinaten (:,1) -5.5, ...

11 11* Koordinaten (:,2) -5.5];

12 [Kantennr ,Elemente] = ...

13 GeneriereKantennr(Elemente ,Koordinaten);

14 AnzKanten = full(max(max(Kantennr)));

15 % Dirichlet -Randbedingung berucksichtigen

16 maske = zeros(AnzKanten ,1);

17 I = diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

18 maske(I) = ones(size(I,1) ,1);

19 freie_u = find(~ maske);

20 nichtfreie_u = I;

21 u = zeros(AnzKanten ,1);

22 u(I) = u_D_test (1/2*( Koordinaten(Dirichlet (:,1) ,:) ...

23 + Koordinaten(Dirichlet (:,2) ,:)));

24 % Matrix A und Matrix A_Omega ,Omega laden

25 A = Aganz 1;

26 AA = Ah1;

27

28 % Rechte Seite

29 b = sparse(AnzKanten ,1);

74 Anhang B: Multigrid Test.m zum Testen des Multigrid-Verfahrens

30 for j = 1:size(Elemente ,1)

31 I = diag(Kantennr(Elemente(j,[2,3 ,1]) ,...

32 Elemente(j,[3,1 ,2])));

33 Flaeche = det ([1 1 1; ...

34 Koordinaten(Elemente(j,:) ,:) ’])/2;

35 b(I,1) = b(I,1) + Flaeche * 1/3;

36 end

37 b(freie_u) = b(freie_u) - ...

38 A(freie_u ,nichtfreie_u) * u(nichtfreie_u);

39 % Bestimmung der Parameter fur die Glatter

40 MAXEW_R = maxew(Ah1,1e-5,10);

41 MAXEW_J = maxew(diag(diag(Ah1) .^( -0.5))*Ah 1...

42 *diag(diag(Ah1) .^( -0.5)) ,1e-5 ,20);

43 % Multigrid -Verfahren

44 u(freie_u) = MG(1,zeros(length(freie_u) ,1),b(freie_u) ,...

45 Ah ,Prolong ,MAXEW_R ,MAXEW_J);

46 fehler = zeros(51, max_iter);

47 for k = 1:50

48 resid = b(freie_u) - AA*u(freie_u);

49 korrek = MG(1,zeros(length(freie_u) ,1),resid ,...

50 Ah ,Prolong ,MAXEW_R ,MAXEW_J);

51 u(freie_u) = u(freie_u)+korrek;

52 end

53 resid = b(freie_u) - AA*u(freie_u);

54 % exakte Werte berechnen

55 u_exakt = zeros(AnzKanten ,1);

56 for j = 1:size(Elemente ,1)

57 u_exakt(Kantennr(Elemente(j,1),Elemente(j,2))) = ...

58 exakt (1/2*( Koordinaten(Elemente(j,1) ,:)...

59 +Koordinaten(Elemente(j,2) ,:)));

60 u_exakt(Kantennr(Elemente(j,2),Elemente(j,3))) = ...

61 exakt (1/2*( Koordinaten(Elemente(j,2) ,:)+...

62 Koordinaten(Elemente(j,3) ,:)));

63 u_exakt(Kantennr(Elemente(j,3),Elemente(j,1))) = ...

64 exakt (1/2*( Koordinaten(Elemente(j,3) ,:)+...

65 Koordinaten(Elemente(j,1) ,:)));

66 end

67 % Fehler berechnen

68 err(1) = norm(u_exakt - u);

69 error_max (1) = max(abs(u_exakt - u));

70

71 for i = 2: max_iter %--- Anzahl der Verfeinerungen

72 % Uniforme Verfeinerung des Netzes

75

73 VK = (1: full(max(max(Kantennr))))’ + ...

74 size(Koordinaten ,1);

75 [Koordinaten ,Elemente ,Dirichlet ,Neumann ]=...

76 Verfeinerung(Koordinaten ,Elemente ,Dirichlet ,...

77 Neumann ,Kantennr ,VK);

78 [Kantennr , Elemente] = ...

79 GeneriereKantennr(Elemente ,Koordinaten);

80 AnzKanten = full(max(max(Kantennr)));

81 % Dirichlet -Randbedingung

82 maske = zeros(AnzKanten ,1);

83 I = diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

84 maske(I) = ones(size(I,1) ,1);

85 freie_u = find(~ maske);

86 nichtfreie_u = I;

87 u = zeros(AnzKanten ,1);

88 u(I) = u_D_test (1/2*( Koordinaten(Dirichlet (:,1) ,:) ...

89 + Koordinaten(Dirichlet (:,2) ,:)));

90 % Matrix A und Matrix A_Omega ,Omega laden

91 A = Aganzi;

92 AA = Ahi;

93 % Rechte Seite

94 b = sparse(AnzKanten ,1);

95 for j = 1:size(Elemente ,1)

96 I = diag(Kantennr(Elemente(j,[2,3 ,1]) ,...

97 Elemente(j,[3,1 ,2])));

98 Flaeche = det ([1 1 1;...

99 Koordinaten(Elemente(j,:) ,:) ’])/2;

100 b(I,1) = b(I,1) + Flaeche * 1/3;

101 end

102 b(freie_u) = b(freie_u) - ...

103 A(freie_u ,nichtfreie_u) * u(nichtfreie_u);

104 % Bestimmung der Parameter fur die Glatter

105 MAXEW_R = maxew(Ahi,1e-5,10);

106 MAXEW_J = maxew(diag(diag(Ahi).^( -0.5))*Ahi...

107 *diag(diag(Ahi).^( -0.5)) ,1e-5 ,20);

108 % Multigrid -Verfahren

109 u(freie_u) = MG(i,zeros(length(freie_u) ,1) ,...

110 b(freie_u),Ah,Prolong ,MAXEW_R ,MAXEW_J);

111 for k=1:50

112 resid = b(freie_u) - AA*u(freie_u);

113 korrek = MG(i,zeros(length(freie_u) ,1) ,...

114 resid ,Ah ,Prolong ,MAXEW_R ,MAXEW_J);

115 u(freie_u) = u(freie_u)+korrek;

76 Anhang B: Multigrid Test.m zum Testen des Multigrid-Verfahrens

116 end

117 resid = b(freie_u) - AA*u(freie_u);

118 % exakte Werte berechnen

119 u_exakt = zeros(AnzKanten ,1);

120 for j = 1:size(Elemente ,1)

121 u_exakt(Kantennr(Elemente(j,1),Elemente(j,2)))=...

122 exakt (1/2*( Koordinaten(Elemente(j,1) ,:)+...

123 Koordinaten(Elemente(j,2) ,:)));

124 u_exakt(Kantennr(Elemente(j,2),Elemente(j,3)))=...

125 exakt (1/2*( Koordinaten(Elemente(j,2) ,:)+...

126 Koordinaten(Elemente(j,3) ,:)));

127 u_exakt(Kantennr(Elemente(j,3),Elemente(j,1)))=...

128 exakt (1/2*( Koordinaten(Elemente(j,3) ,:)+...

129 Koordinaten(Elemente(j,1) ,:)));

130 end

131 % Fehler berechnen

132 err(i) = norm(u_exakt - u);

133 error_max(i) = max(abs(u_exakt - u));

134 end

135 % Ausgabe des Fehlers

136 err

137 error_max

Anhang C

Kern B.m zum Testen der

Dimension des Kerns von B

MatlabMatlabMatlab-Skript: Kern B.m

1 max_iter = 4; % Anzahl der Triangulierungen

2 % Erstellen der ersten Triangulierung

3 [Elemente ,Koordinaten ,Dirichlet ,Neumann] = ...

4 GraduiertesQuadrat (22,22,1,1);

5 Koordinaten =[11* Koordinaten (:,1) -5.5,...

6 11* Koordinaten (:,2) -5.5];

7 [Kantennr ,Elemente] = GeneriereKantennr(Elemente ,...

8 Koordinaten);

9 Inneres = GeneriereInneres(Elemente ,Koordinaten);

10 AnzKanten = full(max(max(Kantennr)));

11 % Aufstellen von B in Klein -Omega

12 B = sparse(AnzKanten ,2* size(Inneres ,1));

13 for j = 1:size(Inneres ,1)

14 I = diag(Kantennr(Inneres(j,[2 ,3 ,1]+1) ,...

15 Inneres(j,[3 ,1 ,2]+1)));

16 Ecken = Koordinaten(Inneres(j,[1 ,2 ,3]+1) ,:);

17 Flaeche = det ([1 1 1; Ecken ’]) /2;

18 B(I,[j,j+size(Inneres ,1)]) = ...

19 B(I,[j,j+size(Inneres ,1)])- 2* Flaeche ...

20 *([ ones (1,3);Ecken ’]\[ zeros (1,2);eye(2)]);

21 end

22 % Berucksichtigt nur die freien Knoten M_i

23 maske = zeros(AnzKanten ,1);

24 I = diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

25 maske(I) = ones(size(I,1) ,1);

26 freie_u = find(~ maske);

27 % Eigenwerte berechnen

28 ei = eig(full((B(freie_u ,:))’*B(freie_u ,:)));

29 counter = 0;

78 Anhang C: Kern B.m zum Testen der Dimension des Kerns von B

30 for j = 1 : size(ei ,1)

31 if ei(j) < 10^ -15

32 counter = counter +1;

33 end

34 end

35 counter % Ausgabe , wie viele Eigenwerte 0 sind

36 for i = 2: max_iter % Verfeinerung des Netzes

37 VK=(1: full(max(max(Kantennr))))’+size(Koordinaten ,1);

38 [Koordinaten ,Elemente ,Dirichlet ,Neumann ]=...

39 Verfeinerung(Koordinaten ,Elemente ,Dirichlet ,...

40 Neumann ,Kantennr ,VK);

41 [Kantennr ,Elemente] = GeneriereKantennr(Elemente ,...

42 Koordinaten);

43 Inneres = GeneriereInneres(Elemente ,Koordinaten);

44 AnzKanten = full(max(max(Kantennr)));

45 % Aufstellen von B in Klein -Omega

46 B = sparse(AnzKanten ,2* size(Inneres ,1));

47 for j = 1:size(Inneres ,1)

48 I = diag(Kantennr(Inneres(j,[2 ,3 ,1]+1) ,...

49 Inneres(j,[3 ,1 ,2]+1)));

50 Ecken = Koordinaten(Inneres(j,[1 ,2 ,3]+1) ,:);

51 Flaeche = det ([1 1 1; Ecken ’]) /2;

52 B(I,[j,j+size(Inneres ,1)]) = ...

53 B(I,[j,j+size(Inneres ,1)])- 2* Flaeche ...

54 *([ ones (1,3);Ecken ’]\[ zeros (1,2);eye(2)]);

55 end

56 % Berucksichtigt nur die freien Knoten M_i

57 maske = zeros(AnzKanten ,1);

58 I = diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

59 maske(I) = ones(size(I,1) ,1);

60 freie_u = find(~ maske);

61 % Eigenwerte berechnen

62 ei = eig(full((B(freie_u ,:))’*B(freie_u ,:)));

63 counter = 0;

64 for j = 1 : size(ei ,1)

65 if ei(j) < 10^ -15

66 counter = counter +1;

67 end

68 end

69 counter % Ausgabe , wie viele Eigenwerte 0 sind

70 end

Anhang D

Minimaler und maximaler

Eigenwert von A`V

-Zyk

lus,ν 1

=ν 2

=1

`Gauß-Seidel

λmin λmax

1 0.999999999999997 1.0000000000000022 0.542652947207565 1.5180307096357863 0.473526040194208* 1.5264739598057924 0.459575036018931* 1.5404249639810695 0.438228264765603* 1.561771735234397

V-Z

yklu

s,ν 1

=ν 2

=2

`Gauß-Seidel Jacobi

λmin λmax λmin λmax

1 0.999999999999997 1.000000000000002 0.999999999999997 1.0000000000000022 0.857629367071802 1.213242589048977 0.471989128005407 1.4390119324982403 0.757765523840629* 1.242234476159371 0.452822887040206* 1.5471771129597944 0.739381950409357* 1.260618049590643 0.417032767834986* 1.5829672321650145 0.725510727142614* 1.274489272857386 0.401008906564161* 1.598991093435839

V-Z

yklu

s,ν 1

=ν 2

=3

`Gauß-Seidel Jacobi

λmin λmax λmin λmax

1 0.999999999999997 1.000000000000002 0.999999999999997 1.0000000000000022 0.920085030176196 1.099144495883829 0.616258937310914 1.3034371904029583 0.875533679311275* 1.124466320688725 0.605512715884786* 1.3944872841152144 0.868010897881618* 1.131989102118382 0.572615198674582* 1.4273848013254185 0.854056226070343* 1.145943773929657 0.557871175334037* 1.442128824665963

Tab. D.1: Minimaler und maximaler Eigenwert λmin und λmax der Matrix A` fur

` = 1, . . . , 5 bei Verwendung eines V-Zyklus in Abhangigkeit der Glatter und der

Anzahl der Glattungsschritte

80 Anhang D: Minimaler und maximaler Eigenwert von A`

W-Z

yklu

s,ν 1

=ν 2

=1

`Gauß-Seidel Jacobi

λmin λmax λmin λmax

1 0.999999999999997 1.000000000000002 0.999999999999997 1.0000000000000022 0.542652947207565 1.518030709635786 0.273414938165380 1.7563950807381793 0.663389088552596* 1.336610911447404 0.566343791306733* 1.4336562086932674 0.685606497823004* 1.314393502176996 0.566940982129280* 1.4330590178707205 0.682640540418267* 1.317359459581733 0.567195021051336* 1.432804978948664

W-Z

yklu

s,ν 1

=ν 2

=2

`Gauß-Seidel Jacobi

λmin λmax λmin λmax

1 0.999999999999997 1.000000000000002 0.999999999999997 1.0000000000000022 0.857629367071802 1.213242589048977 0.471989128005407 1.4353292876720463 0.801958102611473* 1.198041897388527 0.711511954428743* 1.2884880455712574 0.793729045166942* 1.206270954833058 0.710776460686118* 1.2892235393138825 0.793250238025106* 1.206749761974894 0.710361841923907* 1.289638158076093

W-Z

yklu

s,ν 1

=ν 2

=3

`Gauß-Seidel Jacobi

λmin λmax λmin λmax

1 0.999999999999997 1.000000000000002 0.999999999999997 1.0000000000000022 0.920085030176196 1.099144495883829 0.616258937310914 1.3034371904029583 0.901446864556439* 1.098553135443561 0.787108139617472* 1.2128918603825284 0.893594844975622* 1.106405155024378 0.786518947351512* 1.2134810526484885 0.893175662126648* 1.106824337873352 0.786105691181347* 1.213894308818653

Tab. D.2: Minimaler und maximaler Eigenwert λmin und λmax der Matrix A` fur

` = 1, . . . , 5 bei Verwendung eines W-Zyklus in Abhangigkeit der Glatter und der

Anzahl der Glattungsschritte

Anhang E

Spektralverhalten der Matrix

P−1M M

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` µ −c1 −c0 c2 c3

1

1 -1.618033988749899 -0.999999999999997 0.616159401239466 1.4142135623731002 -1.618033988749898 -0.999999999999997 0.612800832426793 1.4142135623730993 -1.618033988749903 -0.999999999999997 0.594179034081393 1.4142135623731134 -1.618033988749904 -0.999999999999997 0.570040403507859 1.4142135623731155 -1.618033988749899 -0.999999999999997 0.596669535543994 1.4142135623731016 -1.618033988749906 -0.999999999999997 0.557025655627770 1.4142135623731197 -1.618033988749899 -0.999999999999997 0.573967259750974 1.4142135623731018 -1.618033988749899 -0.999999999999997 0.545488459496852 1.4142135623731019 -1.618033988749899 -0.999999999999997 0.545176419810885 1.41421356237310110 -1.618033988749900 -0.999999999999997 0.542453173695610 1.41421356237310311 -1.618033988749899 -0.999999999999997 0.542431833495224 1.41421356237310112 -1.618033988749899 -0.999999999999997 0.542431670142790 1.41421356237310213 -1.618033988749899 -0.999999999999997 0.542431669752024 1.414213562373102

2

1 -1.864091764960900 -0.857629367071802 0.529984458586945 1.5119973463281442 -1.864091764960902 -0.857629367071802 0.524648270635747 1.5119973463281503 -1.864091764960902 -0.857629367071802 0.515384567470318 1.5119973463281514 -1.864091764960900 -0.857629367071802 0.514734992288297 1.5119973463281455 -1.864091764960900 -0.857629367071802 0.514632375441108 1.5119973463281446 -1.864091764960899 -0.857629367071802 0.514632234430850 1.5119973463281427 -1.864091764960902 -0.857629367071802 0.514632234297178 1.511997346328150

3

1 -1.897056538986761 -0.757765523840629 0.508571168738705 1.5405077359203672 -1.897056538986764 -0.757765523840629 0.503532529248703 1.5405077359203753 -1.897056538986781 -0.757765523840629 0.494287054146606 1.5405077359204194 -1.897056538986796 -0.757765523840629 0.493967432398237 1.5405077359204565 -1.897056538986761 -0.757765523840629 0.493526108055981 1.5405077359203676 -1.897056538986778 -0.757765523840629 0.493525646281177 1.540507735920409

Tab. E.1: Die Konstanten c0, c1, c2 und c3 fur den Fall e(1)

82 Anhang E: Spektralverhalten der Matrix P−1M M

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` µ −c1 −c0 c2 c3

1 1 -1.618033988749899 -0.999999999999997 0.362280235620487 1.4142135623731022 1 -1.864091764960894 -0.857629367071802 0.306412613204984 1.511997346328127

3

1 -1.897056538986720 -0.757765523840629 0.271306034584499 1.5405077359202632 -1.897056538986720 -0.757765523840629 0.306878213602239 1.5405077359202633 -1.897056538986733 -0.757765523840629 0.306639054885668 1.5405077359202944 -1.897056538986746 -0.757765523840629 0.306047324240042 1.5405077359203295 -1.897056538986763 -0.757765523840629 0.306092112231815 1.5405077359203716 -1.897056538986776 -0.757765523840629 0.305924016546648 1.5405077359204067 -1.897056538986776 -0.757765523840629 0.305922447755616 1.5405077359204068 -1.897056538986893 -0.757765523840629 0.305922421275681 1.540507735920706

Tab. E.2: Die Konstanten c0, c1, c2 und c3 fur den Fall e(2)

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` µ −c1 −c0 c2 c3

1

1 -1.618033988749898 -0.999999999999997 0.616154085633517 1.4142135623730992 -1.618033988749899 -0.999999999999997 0.612734657109328 1.4142135623731003 -1.618033988749900 -0.999999999999997 0.592444522464930 1.4142135623731034 -1.618033988749901 -0.999999999999997 0.577366703885899 1.4142135623731065 -1.618033988749900 -0.999999999999997 0.597466788814010 1.4142135623731036 -1.618033988749903 -0.999999999999997 0.566440503638636 1.4142135623731117 -1.618033988749898 -0.999999999999997 0.589583743345895 1.4142135623730998 -1.618033988749898 -0.999999999999997 0.552041850078073 1.4142135623730999 -1.618033988749898 -0.999999999999997 0.554495688449068 1.41421356237309910 -1.618033988749898 -0.999999999999997 0.546646440327478 1.41421356237309911 -1.618033988749899 -0.999999999999997 0.546522185371546 1.41421356237310012 -1.618033988749898 -0.999999999999997 0.546516473077265 1.41421356237309813 -1.618033988749899 -0.999999999999997 0.546516456681985 1.41421356237310014 -1.618033988749898 -0.999999999999997 0.546516456635011 1.414213562373098

2

1 -1.864091764960891 -0.857629367071802 0.536244391548923 1.5119973463281222 -1.864091764960891 -0.857629367071802 0.528668050090988 1.5119973463281213 -1.864091764960891 -0.857629367071802 0.522761756535186 1.5119973463281214 -1.864091764960891 -0.857629367071802 0.522351623495702 1.5119973463281215 -1.864091764960892 -0.857629367071802 0.522321826004305 1.5119973463281246 -1.864091764960891 -0.857629367071802 0.522321781853489 1.511997346328122

3

1 -1.897056538986728 -0.757765523840629 0.517740718828009 1.5405077359202822 -1.897056538986720 -0.757765523840629 0.507594027291395 1.5405077359202623 -1.897056538986723 -0.757765523840629 0.503431388397959 1.5405077359202694 -1.897056538986723 -0.757765523840629 0.503067442591653 1.5405077359202705 -1.897056538986721 -0.757765523840629 0.503025165765746 1.5405077359202646 -1.897056538986723 -0.757765523840629 0.503025120741780 1.540507735920270

Tab. E.3: Die Konstanten c0, c1, c2 und c3 fur den Fall e(3)

Anhang F

Iterationszahlen

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 44 40 39 31 23 9 23 7 45 40 39 34 26 9 14 6 45 40 39 32 28 10

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 29 27 26 22 15 6 13 6 31 29 27 24 18 64 6 31 28 27 23 20 8

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 26 25 24 20 14 6 13 6 28 25 25 20 16 64 6 26 25 23 20 17 6

V-Zyklus, Jacobi, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 44 42 39 33 23 9 23 6 45 42 40 34 27 104 6 45 41 41 35 29 12

V-Zyklus, Jacobi, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 36 34 32 27 19 7 13 6 38 34 34 29 22 94 6 37 34 34 29 24 9

Tab. F.1: Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwendung

eines V-Zyklus fur den Fall e(1)

84 Anhang F: Iterationszahlen

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 44 40 39 31 23 9 23 6 43 38 38 31 25 94 6 42 38 38 31 27 10

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 29 27 26 22 15 6 13 6 30 27 27 24 18 84 6 30 27 27 22 19 8

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 26 25 24 20 14 6 13 6 26 25 25 20 16 64 6 26 25 23 20 17 6

W-Zyklus, Jacobi, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 66 60 57 48 33 13 23 6 56 52 51 45 30 134 6 57 52 52 45 39 16

W-Zyklus, Jacobi, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 44 42 39 33 23 9 23 6 42 39 38 32 25 94 7 42 38 38 31 27 10 2

W-Zyklus, Jacobi, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 13 10 11 15 19 17 21 19 23 21 19 13 7 12 7 36 34 32 27 19 7 13 6 35 33 33 28 21 94 6 35 33 33 26 23 9

Tab. F.2: Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwendung

eines W-Zyklus fur den Fall e(1)

85

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 1 222 1 743 8 78 72 67 66 58 53 30 24 9 83 74 69 69 70 67 65 47 27

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 1 222 1 553 8 57 51 48 49 42 38 23 24 9 61 55 49 49 52 49 47 33 20

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 1 222 1 493 8 50 47 43 43 38 34 21 24 9 54 48 45 45 45 44 42 31 17

V-Zyklus, Jacobi, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 1 222 2 70 63 8 76 73 67 67 59 54 33 24 9 81 75 70 70 71 68 66 50 28

V-Zyklus, Jacoobi, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 1 222 1 633 8 65 62 55 56 50 45 28 24 9 68 63 59 59 60 57 55 40 23

Tab. F.3: Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwendung

eines V-Zyklus fur den Fall e(2)

86 Anhang F: Iterationszahlen

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 1 222 1 743 8 75 71 66 65 57 52 29 24 9 80 71 66 68 69 66 64 46 26

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 1 222 1 553 8 57 51 48 49 42 38 23 24 9 59 53 49 49 49 48 47 33 19

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 1 222 1 493 8 50 47 42 44 38 34 21 24 9 52 48 44 44 45 44 42 31 17

W-Zyklus, Jacobi, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 1 222 2 91 213 8 85 85 79 78 71 66 43 24 9 98 97 89 88 89 84 84 66 37

W-Zyklus, Jacobi, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 1 222 2 70 63 8 71 72 65 66 58 52 31 24 9 79 73 69 67 70 67 65 48 27

W-Zyklus, Jacobi, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 1 222 1 633 8 63 61 55 55 50 43 27 24 9 67 62 58 58 59 56 54 40 23

Tab. F.4: Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwendung

eines W-Zyklus fur den Fall e(2)

87

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 44 40 37 30 21 7 13 6 45 40 37 32 22 74 6 43 38 37 31 24 7

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 6 28 26 24 21 15 63 6 30 27 26 22 15 64 6 29 27 25 22 16 6

V-Zyklus, Gauß-Seidel, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 25 23 23 18 12 4 13 6 26 25 23 19 14 54 6 26 23 23 19 14 5

V-Zyklus, Jacobi, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 44 40 39 32 21 7 23 6 45 41 40 33 24 74 6 44 41 39 32 25 8

V-Zyklus, Jacobi, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 36 34 32 26 18 6 23 6 37 33 32 27 20 74 6 35 33 32 27 20 7

Tab. F.5: Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwendung

eines V-Zyklus fur den Fall e(3)

88 Anhang F: Iterationszahlen

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 44 40 37 30 21 7 13 6 41 37 36 30 21 74 6 41 36 36 29 22 7

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 6 28 26 24 21 15 63 6 30 27 26 22 15 64 6 29 27 25 22 16 6

W-Zyklus, Gauß-Seidel, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 25 23 23 18 12 4 13 6 26 25 23 19 14 54 6 26 23 23 19 14 5

W-Zyklus, Jacobi, ν1 = ν2 = 1` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 64 59 55 46 30 11 13 6 55 51 49 43 31 104 6 55 52 50 43 32 10

W-Zyklus, Jacobi, ν1 = ν2 = 2` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 44 40 39 32 21 7 23 6 41 38 36 30 21 74 6 41 37 36 30 23 7

W-Zyklus, Jacobi, ν1 = ν2 = 3` Newton-It. PCR-Iterationen1 14 10 11 17 19 17 21 17 23 21 19 15 10 5 12 7 36 34 32 26 18 6 23 6 35 32 31 26 19 64 6 34 32 31 26 19 6

Tab. F.6: Anzahl der Iterationen im Newton- und PCR-Verfahren bei Anwendung

eines W-Zyklus fur den Fall e(3)

Anhang G

Verwendete Matlab-Funktionen

G.1 GeneriereInneres.m

MatlabMatlabMatlab-Funktion: GeneriereInneres.m

1 function Inneres = GeneriereInneres(Elemente ,Koordinaten)

2 % Generiert die Elemente des Stabmagneten Klein -Omega

3 Inneres = [];

4 for j = 1:size(Elemente ,1)

5 if (1/3* sum(Koordinaten(Elemente(j,:) ,1)) >= -0.5 &...

6 1/3* sum(Koordinaten(Elemente(j,:) ,1)) <= 0.5 )...

7 & (1/3* sum(Koordinaten(Elemente(j,:) ,2)) >= -2.5 &...

8 1/3* sum(Koordinaten(Elemente(j,:) ,2)) <= 2.5)

9 Inneres =[ Inneres ;[j,Elemente(j,:) ]];

10 end

11 end

90 Anhang G: Verwendete Matlab-Funktionen

G.2 GeneriereKantennr.m

MatlabMatlabMatlab-Funktion: GeneriereKantennr.m

1 function [Kantennr ,Elemente] = ...

2 GeneriereKantennr(Elemente ,Koordinaten)

3 % Umsortierung , so dass die 1. Kante eines Elementes

4 % eine laengste Kante ist

5 for j=1: size(Elemente ,1)

6 [tmp ,a]=max(sum(( Koordinaten(Elemente(j,[2,3 ,1]) ,:)...

7 - Koordinaten(Elemente(j,[1 ,2,3]) ,:)).^2’));

8 Elemente(j,:)=Elemente(j,[a,rem(a,3)+1,rem(a+1,3) +1]);

9 end

10

11 Kantennr=sparse(size(Koordinaten ,1),size(Koordinaten ,1));

12 Anz_Kant =0;

13 for j=1: size(Elemente ,1)

14 for k=1:3

15 a=[ Elemente(j,k),Elemente(j,rem(k,3)+1)];

16 if Kantennr(a(2),a(1))

17 Kantennr(a(1),a(2))=Kantennr(a(2),a(1));

18 else

19 Anz_Kant=Anz_Kant +1;

20 Kantennr(a(1),a(2))=Anz_Kant;

21 end

22 end

23 end

Abschnitt G.3: GraduiertesQuadrat.m 91

G.3 GraduiertesQuadrat.m

MatlabMatlabMatlab-Funktion: GraduiertesQuadrat.m

1 function [Elemente ,Koordinaten ,Dirichlet ,Neumann ]=...

2 GraduiertesQuadrat(xDimension ,yDimension ,alpha ,beta)

3 % erzeugt ein graduiertes Gitter auf dem Einheitsquadrat

4 Elemente = [];

5 Koordinaten = [];

6 Dirichlet = [];

7 Neumann = [];

8 dx = 1 / xDimension;

9 dy = 1 / yDimension;

10 for iy = 0 : yDimension

11 for ix = 0 : xDimension

12 Koordinaten(size(Koordinaten ,1)+1,:) = ...

13 [(ix*dx)^alpha ,(iy*dy)^beta];

14 end

15 end

16 for iy = 0 : yDimension -1

17 for ix = 0 : xDimension -1

18 Elemente(size(Elemente ,1)+1,:) =...

19 [iy*( xDimension +1)+ix+1 ,...

20 iy*( xDimension +1)+ix+2,...

21 (iy+1)*( xDimension +1)+ix+1];

22 Elemente(size(Elemente ,1)+1,:) =...

23 [iy*( xDimension +1)+ix+2 ,...

24 (iy+1)*( xDimension +1)+ix+2 ,...

25 (iy+1)*( xDimension +1)+ix+1];

26 end

27 Dirichlet(size(Dirichlet ,1)+1,:) = [iy+1,iy+2];

28 Dirichlet(size(Dirichlet ,1)+1,:) = ...

29 [(iy+1)*( xDimension +1) ,(iy+2)*( xDimension +1)];

30 Dirichlet(size(Dirichlet ,1)+1,:) = ...

31 [(iy+1)*( xDimension +1)+1,iy*( xDimension +1) +1];

32 Dirichlet(size(Dirichlet ,1)+1,:) = ...

33 [( xDimension +1)*yDimension+iy+2,...

34 (xDimension +1)*yDimension+iy+1];

35 end

92 Anhang G: Verwendete Matlab-Funktionen

G.4 Verfeinerung.m

MatlabMatlabMatlab-Funktion: Verfeinerung.m

1 function [Koordinaten ,NeueElemente ,Dirichlet ,Neumann ]=...

2 Verfeinerung(Koordinaten ,Elemente ,Dirichlet ,...

3 Neumann ,Kantennr ,VK)

4 % Koordinaten anpassen

5 K=find(VK);

6 for j=1: nnz(VK)

7 [a,b]=find(K(j)== Kantennr);

8 Koordinaten(VK(K(j)) ,:) = (Koordinaten(a(1) ,:) + ...

9 Koordinaten(b(1) ,:))/2;

10 end

11 % Elemente anpassen

12 Aussenkanten=nonzeros(tril(abs(Kantennr -Kantennr ’)));

13 NeueElemente=zeros (2* nnz(VK)-nnz(VK(Aussenkanten)) + ...

14 size(Elemente ,1) ,3);

15 ell =0;

16 for j=1: size(Elemente ,1)

17 I = diag(Kantennr(Elemente(j,:),Elemente(j,[2,3 ,1]))) ’;

18 RefineEdge=find(VK(I));

19 NeuKnoten=VK(I(RefineEdge)) ’;

20 if size(RefineEdge ,1) ==3

21 locNeueElemente =[ NeuKnoten ([2,3 ,1]);

22 [Elemente(j,1) NeuKnoten (1) NeuKnoten (3)];

23 [NeuKnoten (1) Elemente(j,2) NeuKnoten (2)];

24 [NeuKnoten (3) NeuKnoten (2) Elemente(j,3)]];

25 elseif size(RefineEdge ,1) ==2

26 locNeueElemente =...

27 [[ NeuKnoten (1) ,...

28 Elemente(j,RefineEdge (2)) ,...

29 NeuKnoten (2)];

30 [Elemente(j,5- RefineEdge (2)) ,...

31 Elemente(j,rem(5- RefineEdge (2) ,3)+1) ,...

32 NeuKnoten (1)];

33 [Elemente(j,rem(RefineEdge (2) ,3)+1) ,...

34 NeuKnoten (1) ,...

35 NeuKnoten (2)]];

36 elseif size(RefineEdge ,1) ==1

37 locNeueElemente =[[ Elemente(j,[2 ,3]),NeuKnoten ];

Abschnitt G.4: Verfeinerung.m 93

38 [Elemente(j,[3 ,1]),NeuKnoten ]];

39 else

40 locNeueElemente=Elemente(j,:);

41 end

42 NeueElemente(ell +1: ell+size(locNeueElemente ,1) ,:) = ...

43 locNeueElemente;

44 ell=ell+size(locNeueElemente ,1);

45 end

46 % Dirichlet und Neumann anpassen

47 tmp=0;

48 if ~isempty(Dirichlet);

49 Dirichletnr = ...

50 diag(Kantennr(Dirichlet (:,1),Dirichlet (:,2)));

51 for k=1: size(Dirichlet ,1)

52 if VK(Dirichletnr(k))

53 Dirichlet =[ Dirichlet (1:k-1+tmp ,:);

54 Dirichlet(k+tmp ,1),VK(Dirichletnr(k));

55 VK(Dirichletnr(k)),Dirichlet(k+tmp ,2);

56 Dirichlet(k+1+tmp:size(Dirichlet ,1) ,:)];

57 tmp=tmp +1;

58 end

59 end

60 end

61 tmp=0;

62 if ~isempty(Neumann);

63 Neumannnr=diag(Kantennr(Neumann (:,1),Neumann (:,2)));

64 for k=1: size(Neumann ,1)

65 if VK(Neumannnr(k))

66 Neumann = [Neumann (1:k-1+tmp ,:);

67 Neumann(k+tmp ,1),VK(Neumannnr(k));

68 VK(Neumannnr(k)),Neumann(k+tmp ,2);

69 Neumann(k+1+ tmp:size(Neumann ,1) ,:)];

70 tmp=tmp+1;

71 end

72 end

73 end

94 Anhang G: Verwendete Matlab-Funktionen

Literaturverzeichnis

[1] D. Braess: Finite Elemente, Theorie, schnelle Loser und Anwender in derElastizitatstheorie, 4. Auflage, Springer-Verlag, Berlin, 2007.

[2] C. Carstensen, D. Praetorius: Stabilization yields strong convergenceof macroscopic magnetization vectors for micromagnetics without exchangeenergy, ANUM Preprint 20/2004, Institute for Applied and Numerical Ma-thematics, TU Wien, 2004.

[3] C. Carstensen, A. Prohl: Numerical Analysis of Relaxed Micromagne-tics by Penalised Finite Elements, Numer. Math. 90, S. 65–99, 2001.

[4] M. Crouzeix, P.-A. Raviart: Conforming and nonconforming finite ele-ment methods for solving the stationary Stokes equations I, Revue Francaised’Automatique, Informatique et Recherche Operationnelle 3, S. 33–75, 1973.

[5] A. De Simone: Energy Minimizers for Large Ferromagnetic Bodies, Arch.Rational Mech. Anal. 125, S. 99–143, 1993.

[6] S. A. Funken, E. P. Stephan: Fast solvers with block-diagonal precon-ditioners for linear FEM-BEM coupling, Numerical Linear Algebra with Ap-plications, Vol. 16, S. 365–395, 2009.

[7] W. Hackbusch: Iterative Losung großer schwachbesetzter Gleichungssys-teme, 2. Auflage, Teubner-Verlag, Stuttgart, 1993.

[8] W. Hackbusch: Multi-Grid Methods and Applications, 1. Auflage,Springer-Verlag, Berlin, 1985.

[9] M. R. Hestenes, E. Stiefel: Methods of Conjugate Gradients for SolvingLinear Systems, Journal of Research of the National Bureau of Standards,Vol. 49, S. 409–436, 1952.

[10] R. D. James, D. Kinderlehrer: Frustration in ferromagnetic materials,Continuum Mechanics and Thermodynamics 2, S. 215–239, 1990.

[11] C. Kanzow: Numerik linearer Gleichungssysteme, 1. Auflage, Springer-Verlag, Berlin, 2005.

[12] L. D. Landau, E. M. Lifshitz: On the theory of the dispersion of magneticpermeability in ferromagnetic bodies, Physik. Zeits. Sowjetunion 8, S. 153–169, 1935.

[13] D. Praetorius: Analysis of the Operator ∆−1 div Arising in Magnetic Mo-dels, ZAA 23, S. 589–605, 2004.

[14] D. Werner: Funktionalanalysis, 5. Auflage, Springer-Verlag, Berlin, 2005.

Ehrenwortliche Erklarung

Ich erklare hiermit ehrenwortlich, dass ich die vorliegende Arbeit selbststandig ange-fertigt habe; die aus fremden Quellen direkt oder indirekt ubernommenen Gedankensind als solche kenntlich gemacht. Die Arbeit wurde bisher keiner anderen Prufungs-behorde vorgelegt und auch noch nicht veroffentlicht.

Ich bin mir bewußt, dass eine unwahre Erklarung rechtliche Folgen haben wird.

Ulm, den 30.09.2010

(Unterschrift)