und Lösungsmethoden für Integro-Differentialgleichungen am

Transcription

und Lösungsmethoden für Integro-Differentialgleichungen am
Spezielle Diskretisierungs- und
Lösungsmethoden für
Integro-Differentialgleichungen am
Beispiel der
Strahlungstransportgleichung
Diplomarbeit
von
Thomas Hübner
Betreuung:
Prof.Dr. Stefan Turek
dem Fachbereich Mathematik
der Universität Dortmund
vorgelegt im März 2005
1
Inhaltsverzeichnis
1 Einleitung
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Ziel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Vorgehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
5
6
2 Hier: Die Radiative Transfer Equation
8
3 Numerische Lösungsansätze
3.1 Die klassische Lambda-Iteration
3.2 Allgemeine Diskretisierung . . .
3.3 Iterative Lösungsansätze . . . .
3.4 Generalized Mean Intensity . .
3.5 Symmetrie . . . . . . . . . . . .
3.6 Das BiCG-Stab Verfahren . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Implementierung
4.1 Konstante Charakteristiken Upwind Diskretisierung erster Ordnung .
4.2 Konstante Charakteristiken Upwind Diskretisierung zweiter Ordnung
4.3 Topologische Nummerierung der Knoten . . . . . . . . . . . . . . . .
4.4 Numerische Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Erste Tests
5.1 Laufzeitanalyse: Initialisierung und Transportschritt
5.2 Erste/Zweite Ordnung auf unstrukturierem Gitter .
5.3 Vergleich mit externen Ergebnissen . . . . . . . . .
5.4 Approximation des Integralterms . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
10
11
12
14
15
.
.
.
.
17
17
18
22
26
.
.
.
.
31
32
33
34
39
6 Numerische Herausforderungen
42
6.1 Umgang mit Unstetigkeiten, steilen Gradienten . . . . . . . . . . . . . . 42
6.2 Adaptive Gitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7 Weiterführende Tests
56
7.1 Konvergenzverhalten abhängig von Winkelzahl, Diskretisierung und Strukturiertheit des Gitters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.2 Konvergenzverhalten auf adaptiven Gittern . . . . . . . . . . . . . . . . . 57
8 Zusammenfassung und Ausblick
59
9 Anhang 1
60
10 Anhang 2
71
1
Abbildungsverzeichnis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Upwind-Vorgehen erster Ordnung auf einem kartesischen Gitter: Vorgehen in Knoten v0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unstrukturiertes Dreiecksgitter (Ausschnitt) mit Upwind-Vorgehen zweiter Ordnung: Vorgehen in Knoten v0 . . . . . . . . . . . . . . . . . . . .
1D Ansicht zur Diskretisierung des Transportproblems . . . . . . . . . .
Beispiel für eine (unzureichende) Nummerierungstechnik am kartesischen
Gitter: Vorgehen in Knoten v0 . . . . . . . . . . . . . . . . . . . . . . . .
Grobgitter mit einer ’steilen’ Testkonfiguration . . . . . . . . . . . . . . .
Grobgitter mit ’Quadhex’ Testkonfiguration . . . . . . . . . . . . . . . .
Gitterkonfiguration zum Test der Auswirkungen von h2 ≪ h1 . . . . . . .
Grobgitter für ‘Flow around cylinder’ . . . . . . . . . . . . . . . . . . . .
Lösung des ‘nichtglatten’ Testproblems (links: UPW1; rechts: UPW2) auf
Level 3 (oben) bis Level 6 (unten); Querschnitt der Lösung am rechten
Gebietsrand auf Level 4 (links) und Level 5 (rechts) für β = 0◦ . . . . . .
strukturiertes (links) sowie unstrukturiertes, stochastisch gestörtes Grobgitter (rechts) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Intensität und Absorption (α = 5) für Testfall 5.3.1 (Glatte Lösung),
Quelle: [33] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Intensität für Testfall 5.3.2 (H 3 Lösung), Quelle: [33] . . . . . . . . . . .
Glatte Lösung: max{Fehler I i } . . . . . . . . . . . . . . . . . . . . . . .
Glatte Lösung: Fehler für mittlere Intensität J . . . . . . . . . . . . . . .
Glatte Lösung: EOC für max{Fehler I i } . . . . . . . . . . . . . . . . . .
Glatte Lösung: EOC für mittlere Intensität J . . . . . . . . . . . . . . .
Glatte Lösung: Error vs. Runtime für max{Fehler I i } . . . . . . . . . . .
Glatte Lösung: Error vs. Runtime für mittlere Intensität J . . . . . . . .
H 3 Lösung: max{Fehler I i } . . . . . . . . . . . . . . . . . . . . . . . . .
H 3 Lösung: Fehler für mittlere Intensität J . . . . . . . . . . . . . . . . .
H 3 Lösung: EOC für max{Fehler I i } . . . . . . . . . . . . . . . . . . . .
H 3 Lösung: EOC für mittlere Intensität J . . . . . . . . . . . . . . . . .
Intensität I(θ) für Testfall 5.4.1 . . . . . . . . . . . . . . . . . . . . . . .
Testfunktion: H=1, ε=0.5 . . . . . . . . . . . . . . . . . . . . . . . . . .
Testfunktion: H=1, ε=0.05 . . . . . . . . . . . . . . . . . . . . . . . . . .
Testfunktion: H=0.25, ε=0.5 . . . . . . . . . . . . . . . . . . . . . . . . .
Testfunktion: H=0.25, ε=0.05 . . . . . . . . . . . . . . . . . . . . . . . .
Errechneter Gradient in Richtung θ = 45◦ , ε = 0.05 mit Konfig. 6.1.1 . . .
Errechneter Gradient in Richtung θ = 0◦ , ε = 0.01 mit Konfig. 6.1.1 . . .
Samarski Funktion für β = 1, 2, 3 (hellgrau, grau, schwarz) . . . . . . . .
Samarski Funktion mit zwei Toleranzwerten und β = 2 . . . . . . . . . .
(fast) Referenzlösung für Konf. 6.1.2, Upwind 1. (links) und 2. Ordnung
(rechts) auf ungestörtem Gitter . . . . . . . . . . . . . . . . . . . . . . .
typisches Verhalten für Konf. 6.1.2, Upwind 1. (links) und 2. Ordnung
(rechts) auf gestörtem Gitter . . . . . . . . . . . . . . . . . . . . . . . . .
2
18
19
20
22
26
26
28
28
31
35
36
36
36
36
37
37
37
37
38
38
38
38
40
44
44
45
45
45
45
46
46
48
49
34
35
36
37
38
39
40
41
α-Gewichtsverteilung unter Verwendung von Upwind Gradienten, sowie
resultierende Lösung (Param. Wahl Nr. 21) . . . . . . . . . . . . . . . . .
α-Gewichtsverteilung unter Verwendung von Upwind+Crosswind Gradienten, sowie resultierende Lösung (Param. Wahl Nr. 26) . . . . . . . . .
Grobgitter: uniformes Gitter . . . . . . . . . . . . . . . . . . . . . . . . .
Grobgitter: moderat adaptiertes Gitter . . . . . . . . . . . . . . . . . . .
Grobgitter: fein adaptiertes Gitter und Vergrößerung . . . . . . . . . . .
Konvergenzraten: gestörtes kartesisches Gitter, 32 Winkel, 2113568 NEQ,
UPW 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konvergenzraten: gestörtes kartesisches Gitter, 32 Winkel, 2113568 NEQ,
UPW 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konvergenzraten: gestörtes kartesisches Gitter, 32 Winkel, 2113568 NEQ,
ADAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
49
50
52
52
53
70
70
70
1 Einleitung
1.1 Motivation
Als Motivation dieser Diplomarbeit dient eine in der Physik bekannte Problemklasse,
die durch eine partielle Differentialgleichung (PDE) wie folgt beschrieben werden kann:
nθ · ∇x f (x, θ) = R(x, θ) in Ω × S
In einem Ortsraum Ω ist also eine physikalische Größe f abhängig von Ort x ∈ Ω und
Richtung θ aus dem Richtungsraum S gesucht, die durch ein Medium mit bestimmten
Eigenschaften in Richtung θ transportiert wird. Die Lösung dieser Gleichung ist ausserdem abhängig von der rechten Seite, die unter Umständen eine nichtlineare Kopplung
der Größe f über alle möglichen Richtungen θ hineinbringt. Beispielhaft seien zwei Anwendungen aus (recht unterschiedlichen) Gebieten aufgezählt:
1. Lattice Boltzmann Methoden (LBM) für Strömungsprobleme
Als erstes Beispiel werde die Tatsache ([1], [5]) genannt, daß für (fast) inkompressible Strömungen die ‘klassischen’ Navier-Stokes Gleichungen durch folgende
diskrete bzw. Lattice Boltzmann Gleichungen ([3]) - mit geeigneten Randwerten approximiert werden können:
∂fi
1
+ vi · ∇fi = − (fi − fieq ) ,
∂t
τ
3
9
3
fieq = wi ρ [1 + (vi · u) + (vi · u)2 − |u|2 ] (1)
2
2
2
Den Zusammenhang der (mikroskopischen) Funktionen fi , die die ‘Partikelverteilung’ entlang der i-ten Geschwindigkeitsrichtung vi beschreiben, mit den NavierStokes Gleichungen erhält man über
X
X
ρ=
fi , ρu =
fi vi
(2)
i
i
womit Approximationen für die (makroskopische) Dichte ρ und die Geschwindigkeiten u erzeugt werden. Der geschilderte Ansatz entspricht in 2D gerade dem
‘d2q9 Modell’: wi sind Gewichte entsprechend den diskreten Geschwindigkeiten
(=Richtungen) vi , i = 1, . . . , 9 (siehe auch [1],[2],[5],[6],[7] für detaillierte theoretische und praktische Aspekte, Modellvarianten/-erweiterungen, Randwerte wie
auch Setzung der Parameter in Gleichung (1)).
2. Radiative Transfer Equation (RTE)
Als zweites Bespiel sei die Strahlungstransportgleichung aufgeführt, die in der
Astro- und Umweltphysik eine große Rolle spielt, aber auch in der Industrie ([35],
[36]) und Medizin ([37]).
Die (lineare) 2+1D-Strahlungstransportgleichung (2D im Ort, 1D in den Ordinaten) läßt sich mit Ω̃ := Ω × [0, 2π) und Γ−
θ := {x ∈ ∂Ω|nx · nθ < 0} schreiben
als:
4
nθ · ∇x I(x, θ) + κ(x, θ)I(x, θ) = λ(x, θ)
Z
2π
R(θ, θ′ )I(x, θ′ )dθ′ + f (x, θ) in Ω̃ (3)
0
I(x, θ) = g(x, θ) on Γ−
θ
(4)
(Siehe z.B. [4]) Dabei repräsentiert nx den äußeren Normalenvektor zu ∂Ω in x ∈
∂Ω, und der Richtungsvektor nθ ist definiert als nθ := (cos θ, sin θ)T .
f (.), g(., .), κ(.), λ(.) ∈ L2 (Ω) beschreiben Quellterme, Randwerte, Absorption und
Emission, während die Phasenfunktion R(., .) hier als konstant, R(θ, θ′ ) := 1/2π,
angenommen wird (siehe auch [10],[8],[12]).
Ein Zusammenhang zwischen den Beispielen sollte deutlich werden, denn angenommen man diskretisiert die RTE im Ordinatenraum, indem man einen Satz von Richtungen auswählt(also θk , k ∈ {1, . . . , K} und I(θk ) ∼ I k , siehe Kapitel 3), dann wird
offensichtlich, daß die Problemstellung des Strahlungstransports sehr ähnlich zu den
Lattice Boltzmann Gleichungen ist, wenn wir mit 9 Richtungen/Ordinaten arbeiten und
die diskretisierte Zeitableitung mit dem Term κI k abgleichen. Desweiteren hängt bei
den Lattice Boltzmann Gleichungen der Term rechts vom Gleichheitszeichen nichtlinear
(quadratisch, rationales Polynom) von allen Teillösungen I k in (1) ab, während bei der
RTE der Integralterm in (3) für eine nichtlineare Kopplung über alle Richtungen sorgt.
Bei der numerischen Lösung dieser PDEs müssen je nach Anzahl der Richtungen viele
Transportprobleme mit jeweils konstanter Charakteristik gelöst werden. Eine angemessene Diskretisierung vorausgesetzt, erhalten wir ein lineares Gleichungssystem (LGS).
Wird zur Lösung des LGS ein iteratives Verfahren verwendet, das evtl. 100 oder mehr
Schritte zur Konvergenz benötigt, multipliziert sich die Anzahl der Transportschritte
entsprechend mit der Anzahl der Iterationen. Damit wird deutlich, daß das vorgestellte Thema einen nichttrivialen Ansatz erfordert, um mit den zur Verfügung stehenden
Ressourcen komplexen Konfigurationen aus den Anwendungsgebieten (siehe Kapitel 2)
begegnen zu können.
1.2 Ziel
Ziel dieser Diplomarbeit ist, Methoden zur Lösung der vorgestellten PDEs zu untersuchen, und zwar anhand des Beispiels der Strahlungstransportgleichung mit ihren speziellen Eigenschaften. An diese Methoden werden viele Anforderungen gestellt, um einerseits
Genauigkeit und Robustheit und gleichzeitig ansprechende Effizienz zu gewährleisten.
Zunächst muß die Auswertung geeignet diskretisiert werden, zum Besipiel mit einem Finite Element/Finite Differenzen Ansatz. Neben dem Ortsraum muß der Richtungsraum
ebenfalls diskretisiert werden. Der Integralterm wird durch eine Quadraturformel höherer Ordnung approximiert, in die die spezifischen Lösungen der diskreten Richtungen
einfließen. Die hier erwähnte Kopplung durch das Integral erfordert dabei hocheffiziente Lösungsmethoden, die bei schwierigen physikalischen Konfigurationen gleichbleibend
5
gute Konvergenzraten liefern. Im Hinblick auf diese iterativen Löser und die damit auftretende vielfache Wiederholung des Transportproblems, soll die Diskretisierung mit dem
Ziel vor Augen geschehen, immer eine untere Dreiecksmatrix für den Transportoperator
zu der jeweiligen konstanten Charakteristik zu erhalten. Damit kann der Transportschritt
jeweils direkt gelöst werden. Um Ressourcen zu sparen, sollte zusätzlich dieser Schritt
nicht explizit als eine Matrix gespeichert werden, die Einträge sollen erst dann (effizient)
berechnet werden, wenn sie gebraucht werden. Damit ist ebenfalls eine Implementierung
möglich, die einen Speicheraufwand unabhängig von der Anzahl diskreter Ordinaten
aufweist, auch wenn sich der Rechenaufwand entsprechend der Hinzunahme von Richtungen erhöht. Dies wird durch die Methode der Generalized Mean Intensity (GMI, siehe
[23]) erreicht. Um die Robustheit der Methode zu gewährleisten, müssen Unstetigkeiten
bzw. steile Gradiente in der Lösung bewältigt werden. Dies geschieht mit Hilfe einer a
posteriori Limitertechnik, die eine Diskretisierung nach Vorbild des Samarski-Upwind
Ansatzes ermöglicht. Auftretende steile Gadienten erfordern darüber hinaus adaptive
Gitter, die an den kritischen Stellen fein genug aufgelöst sind, um eine erste bzw. zweite
Fehlerordnung des Lösungschemas zu ermöglichen. Die entwickelten Methoden müssen
also auf hochgradig unstrukturierten Gittern ebenso effizient und konsistent ablaufen
wie auf uniformen Gitterkonfigurationen.
1.3 Vorgehen
Die Arbeit basiert auf dem von Professor Turek, aus seiner Tätigkeit in Heidelberg (innerhalb des SFB 359), hervorgebrachten Code, den er zusammen mit Rannacher (Mathematik) und Wehrse (Astrophysikalisches Institut) entwickelte. Der Code implementierte
einen gitterorientierten Zugang (Finite Elemente, Finite Differenzen) und enthielt Module für diverse Lösungsschemata (Richardson, AMR, CG, BiCG-Stab). Es war jedoch
nicht durchgehend möglich ein Upwinding zweiter Ordnung auf beliebigen Gittern durchzuführen, da das verwendete geometrische Sortieren nicht ausreichend ist (siehe Kapitel
4.3). Nach der Einleitung gliedern sich der weitere Verlauf der Diplomarbeit und die
eigenen Leistungen wie folgt
• In Kapitel 2 wird die Strahlungstransportgleichung vor dem physikalischen Hintergrund vorgestellt.
• In Kapitel 3 erfolgt eine Erörterung allgemeiner Lösungsansätze für die Strahlungstransportgleichung, inklusive einer Betrachtung der Methode der Generalized
Mean Intensity (GMI), im Hinblick auf die Veträglichkeit mit der folgenden Upwind Diskretisierung und iterativer Lösungsschemata.
• Kapitel 4 enthält den Großteil der eigenen Arbeiten. In diesem Hauptteil wird das
konstante Charakteristiken Upwinding erster bzw. zweiter Ordnung zur Diskretisierung im Ortsraum vorgestellt, inklusive mathematischer Herleitung.
• Darüber hinaus erfolgt die Herleitung eines neuen, effizienten topologischen Sortierverfahrens für die Knoten des Diskretisierungsschemas auf beliebig unstruktu-
6
rierten Gittern. Ausserdem wird dessen Implementierung unter Verwendung einer
speziellen sparse matrix -Speichertechnik beschrieben.
• In Kapitel 5 erfolgt die Verifikation des linearen Sortierverfahrens und der resultierenden höheren Ordnung der Diskretisierung auf beliebigen Gittern. Dazu dienen
auch Vergleichsrechnungen mit veröffentlichten Ergebnissen von Andreas Dedner
aus [32], [33].
• In Kapitel 6 wird die Entwicklung und Implementierung einer a posteriori Diskretisierungstechnik, zur Verknüpfung der Vorzüge des first order und second order
upwind, beschrieben, mit dem Ziel der Verminderung von Oszillationen bei hoher
Genauigkeit.
• Dazu wird die geforderte Veträglichkeit der Upwind Diskretisierung mit adaptiven
Gittern untersucht, sowie die erhofften Genauigkeitgewinne analysiert.
• Schliesslich werden in Kapitel 7 die bisherigen Ergebnisse an einem System nichtlinear gekoppelter partieller Differentialgleichungen getestet, und zwar auf adaptiven, hochgradig nichtuniformen Gittern. Bei der Verwendung iterativer Schemata
soll vor allem die Laufzeiteffizienz erhalten bleiben, was anhand der Ergebnisse
verifiziert wird.
7
2 Hier: Die Radiative Transfer Equation
Die zu Beginn kurz eingeführte Strahlungstransportgleichung soll zunächst genauer vorgestellt werden: Als Beispielproblem dieser Diplomarbeit dient speziell der Strahlungstransport, allgemein gesehen der ’Transport von Strahlung durch ein Medium’.
Gerade in astrophysikalischen Anwendungen ist es von Interesse, kosmische Erscheinungen zu beobachten, zu interpretieren und zu simulieren. Die Strahlungstransportgleichung leitete erstmals Schuster im Jahre 1905 in [9] unter Berücksichtigung von
Absorptions- und Emissionseffekten her. Ausserdem zeigen Beobachtungen Streuprozesse auf, die je nach Intensität auch dominant sein können. Praxisnahe astrophysikalische
Anwendungen erfordern Mehrdimensionalität der Gleichung, eindimensionale Konfigurationen, wie sie seit Mitte des 20. Jahrhunderts untersucht, und für die diverse Methoden
entwickelt wurden, reichen nicht mehr aus. Im Einzelnen sind das drei Veränderliche
im Raum, zwei für die Richtung der Strahlung sowie eine Dimension für die Frequenz.
Große Fortschritte in der Beobachtungstechnik, unter anderem Instrumente, die vom
Weltraum aus arbeiten, erbrachten bessere räumliche Auflösung kosmischer Objekte
und zeigten dabei, daß im weiteren komplexe Geometrien der Gebiete modelliert und interne Bewegungen simuliert werden müssen. Auch die umgebende Materie der stellaren
Objekte kann nicht als homogen angenommen werden. Um die komplexen Konfigurationen komplett aufarbeiten zu können, sind neben dem eingetretenen Fortschritt in der
Hardwaretechnologie vor allem hocheffiziente Methoden notwendig. Einen Ansatz für
eine vereinfachte Konfiguration zeigt der weitere Verlauf dieser Arbeit.
Zunächst eine Andeutung der Komplexität der dreidimensionalen Strahlungstransportgleichung (siehe [34]):
Z Z
1∂
v
∂I
I + nθ · ∇x I −
nθ · ∇x (nθ · β)
= −(κ + λ)I + λ
P Idθdv + κB
c ∂t
1 + nθ · β
∂v
R+ S 2
Zur Erläuterung: Es soll die spezifische Strahlungsintensität I(x, θ, v, t) ermittelt werden,
die von Ort, Richtung, Frequenz und Zeit abhängt. In der vollständigen Gleichung geht
die Streuung als Integralterm ein, ebenso wie die Frequenz. Dieses Integral über R+
sowie der Dopplereffekt sorgt für eine Kopplung der Frequenzen. Im Allgemeinen ist der
Zustand des Systems nicht-statisch über die Zeit, da die Strahlung auf die Komponenten
einwirkt. Es gelte hier der Spezialfall des lokalen thermodynamischen Gleichgewichtes,
damit tritt als Quellterm das Produkt aus Absorptionskoeffizient κ und Planckfunktion
B = B(T (x)) auf. Letztere ist abhängig vom Temperaturfeld (siehe [8] und die darin
zitierte Literatur für physikalische Grundlagen).
Zur Demonstration der Lösungsstrategie wird hier ein stark vereinfachtes Modellproblem
(2+1 Modell, siehe [4]) in Ω × [0, 2π) betrachtet (die Resultate können auf allgemeinere
Strahlungstransportgleichungen übertragen werden):
Z 2π
nθ · ∇x I(x, θ) + (κ + λ) (x, θ)I(x, θ) = λ(x, θ)
P (θ, θ̂)I(x, θ̂)dθ̂ + f (x, θ)
| {z }
0
Extinktionχ
8
Mit Randbedingung (Strahlungsintensität von Aussen einfallend vorgegeben):
I(x, θ) = g(x, θ) auf
Γ−
θ := {x ∈ ∂Ω|nx · nθ < 0}
Die einflussgebenden Komponenten sind also der Transportoperator in Richtung θ, Extinktion χ als Summe vom Absorptionskoeffizienten κ und Streukoeffizienten λ, Quellfunktion f sowie Wiederverteilungsfunktion P . Es wird hier speziell die standard product
expansion λ(x, θ)P (θ, θ̂) für die Phasenfunktion angenommen (siehe [8]). Die Wiederverteilung tritt als Wahrscheinlichkeitsverteilung P (θ, θ̂) auf, die angibt mit welcher Wahrscheinlichkeit ein Photon mit Richtung θ̂ in Richtung θ gestreut wird. Mit der zusätzliche
Annahme, daß die streuenden Atome oder Moleküle zufällig angeordnet sind (z.B. in Gasen, siehe [8]), wir also eine isotrope Streuung haben, ist die Phasenfunktion nicht von
der gewählten Richtung θ abhängig, d.h. wir haben eine konstante Wahrscheinlichkeitsverteilung.
Also P (θ, θ̂) = 1/2π in 2D bzw. P (θ, θ̂) = 1/4π in 3D, da immer gelten soll
R
P (θ, θ̂)dθ̂ = 1. Wir setzen hier L2 -Regularität für die Funktionen f, λ, κ voraus.
S
9
3 Numerische Lösungsansätze
3.1 Die klassische Lambda-Iteration
Zur Lösung der Strahlungstransportgleichung ist in Physikerkreisen die Λ-Iteration üblich
(siehe [10], [11], [12], [22]), die als simple Fixpunktiteration wie folgt durchgeführt wird:
1. Zuerst wird der Integralausdruck berechnet
Z 2π
l
P (θ, θ̂)I l (x, θ̂)dθ̂
SI (x, θ) ∼ λ(x, θ)
0
2. Danach wird mit dem Ergebnis für jedes θ das Transportproblem gelöst
n · ∇x I l+1 (x, θ) + (κ + λ)I l+1 (x, θ) = SI l (x, θ) + f (x, θ)
{z
}
|θ
=:T θ I l+1 (x,θ)
In diesem Schritt ist ein natürlicher Ansatzpunkt für Parallelisierung gegeben, da
die Rechnung für jede einzelne Richtung aufgeteilt wird.
Das Verfahren in kompakter Form geschrieben liest sich wie folgt:
T I l+1 = SI l + f,
wobei T die einzelnen Transportschritte T θ zusammenfasst. Im späteren Verlauf wird
gezeigt, wie sich das in numerischer Schreibweise darstellt und daß die Methode bei
bestimmten Konfigurationen unbefriedigende Ergebnisse (d.h. Konvergenzraten) liefert.
3.2 Allgemeine Diskretisierung
Um auf die Lösung mit effektiven numerischen Methoden zu kommen, muß die Strahlungstransportgleichung diskretisiert werden. Dieses erfolgt in zwei Stufen:
1. Diskretisierung der Rechnung mittels diskreter Ordinaten, dazu werden äquidistante Punkte auf dem Einheitskreis gewählt und numerische Quadratur angewendet. Dieses liefert ein System von semidiskreten, gekoppelten PDE´s wobei
I k (x) ∼ I(x, θk ) entspricht.
k
k
k
k
k
nθk · ∇x I (x) + (κ (x) + λ (x))I (x) = λ (x)
K
X
ωj I j (x) + f k (x) ,
k = 1, . . . , K
j=1
Ein Beispiel für eine Quadraturformel ist die summierte Trapezregel. Bei äquidistanter Verteilung der Richtungen in 2D, ergibt sich dabei für die Gewichte einfach
eine gleichförmige Belegung von ωj = K1 .
10
2. Diskretisierung im Raum mit N Gitterpunkten, zum Beispiel vom Typ Finite Differenzen oder Finite Elemente Methoden, so daß insgesamt die Diskretisierung K
diskrete N× N Gleichungssysteme (mit Feinheitsgrad h) liefert:
Thk Ihk + Mhκ+λ Ihk = Mhλ
K
X
ωj Ihj + Bhk
,
k = 1, . . . , K
j=1
Hierbei ist Ihk der (approximierte) Lösungsvektor bzw. Koeffizientenvektor der
Lösung in Richtung θk . Als lineare Operatoren treten Steifheitsmatrizen Thk zum
k
Transportoperator, und die Massematrizen Mhκ+λ,k , Mhλ auf. Für den Vektor IN,K
aus Lösungsvektoren erhält man ein Gleichungssystem
AN,K IN,K = BN,K
mit Systemmatrix
λ
κ+λ
AN,K := TN,K + MN,K
− M N,K
 
  κ+λ,1


1
K
ω1 Mhλ . . . ωK Mhλ
Mh
0
0
Th1 0
0
 
 


..
..
...
...
:=  0 . . . 0  + 
−

0
0
.
.
1
K
κ+λ,K
K
λ
λ
0 0 Th
0
0 Mh
ω1 Mh . . . ωK Mh
3.3 Iterative Lösungsansätze
Insgesamt ist also ein unsymmetrisches System von Blockmatrizen gegeben, wobei die
Steifheitsmatrizen untere Dreiecksmatrizen bei geeignetem upwind sein sollen (siehe Kapitel 4.3), die Massematrizen als einfache Diagonalmatrizen bei geeignetem lumping gegeben sind. Hieraus kann bei bestimmten Diskretisierungen die M-Matrix-Eigenschaft für
die Systemmatrix folgen (siehe [26]), was eine Konvergenzaussage für iterative Lösungsmethoden liefert, hier das vorkonditioniertes Richardson-Schema:
l+1
−1
l
l
− σN,K CN,K
− BN,K )
IN,K
= IN,K
(AN,K IN,K
Analog zu den üblichen Vorkonditionierern, die sich z.B. der Diagonale der Systemmatrix
bedienen, treten hier aufgrund des blockweisen Aufbaus als Varianten Block-Jacobi und
Block-SOR Vorkonditionierer auf:
1. Unvollständiger Block-Jacobi Vorkonditionierer
κ+λ
CN,K := TN,K + MN,K
Diese vorkonditionierte Richardson-Variante entspricht wie oben angesprochen der
üblichen Λ-Iteration.
Beweis: Bezeichne I l den Iterationsvektor, so schreibt sich das komplette Schema:
λ
κ+λ −1
κ+λ
I l+1 = I l − (TN,K + MN,K
) ((TN,K + MN,K
+ M N,K )I l − BN,K )
λ
κ+λ −1
κ+λ −1
= I l − I l + (TN,K + MN,K
) M N,K I l + (TN,K + MN,K
) BN,K
11
Wenn man die Schreibweise des klassischen Verfahrens nimmt, wobei hier TN,K +
κ+λ
MN,K
= T , also der linken Seite, entspricht, erhält man (mit den enthaltenen
Transportoperatoren T θ )
I l+1 = T −1 SI l + T −1 f
bzw.
T I l+1 = SI l + f
also die klassische Λ-Iteration.
q.e.d
Bei Vorkonditionierung ist allgemein bekannt, daß der Vorkonditionierer möglichst
genau der Systemmatrix entsprechen soll, also C ∼ A, bzw. C −1 A ∼ Id. Da bei
dieser Methode der Integralterm im Vorkonditionierer nicht enthalten ist, wird
diese Bedingung nur unzureichend erfüllt, was sich umso stärker auswirkt je mehr
die Strahlungsgleichung als streudominantes Problem auftritt. Dieses bestätigen
numerische Tests und liefern degradierende Konvergenzraten (siehe [4]).
2. Als bessere Variante wählt man die ganze Block-Diagonale
λ
κ+λ
CN,K := TN,K + MN,K
− blockdiag(M N,K )
3. Die Block-SOR-Methode ist wiederum besser und enthält einen Großteil des Integraloperators
λ
κ+λ
CN,K := TN,K + MN,K
− lowerpart(M N,K )
Alternativ sind diese Vorkonditionierer in Krylow-Raum-Methoden (CG, GMRES, etc.)
einzusetzen. Diese ’besseren Richardson-Schemata’, bestimmen den optimalen Relaxationsparameter bei jedem Iterationsschritt neu, insbesondere sei die BiCG-Stab Methode
([27]) als möglicher ’black-box’ Kandidat erwähnt.
3.4 Generalized Mean Intensity
Das Strahlungstransportproblem erreicht wegen der angesprochenen Multidimensionalität sehr schnell einen hohen Speicheraufwand, für physikalische Anwendungen ist aber
die Hinzunahme von Raumdimensionen unerlässlich. Schon eine Rechnung des 3+2Modells liefert bei verfeinertem Gitter mit 26.000 Gitterpunkten und 240(15 × 16) Richtungen ca. 6, 2 × 106 Unbekannte. Mit einer Schleife über 21 Frequenzen kommt man
schon auf 108 Gleichungen. Zur besseren Demonstration wird analog das 3+2 Modell
diskretisiert (hier mit κ = κ(x, θ), λ = λ(x), f = f (x, θ)):
I
nθ · ∇x I + (κ(x, θ) + λ(x))I = λ(x) P (θ, θ̂)I dθ̂ + f (x, θ)
S
12
Einführung von sphärischen Koordinaten und erneute Diskretisierung im Ordinatenraum
liefert mit der Annahme P (θ, θ̂) = P (θ̂):
I
Z π Z 2π
P (ω̂, ϕ̂)I(x, ω̂, ϕ̂)dω̂sinϕ̂dϕ̂
P (θ̂)I(x, θ̂) dθ̂ =
S
∼
0
0
L
K
XX
lk
k
l
c (P )I(x, ω , ϕ ) =:
MX
=L·K
cm (P )I m (x)
m=1
l=1 k=1
Hier erkennt man schon direkt die Zunahme der Komplexität. Der Trick ist nun, die
gewichteten Itensitäten summiert über alle Richtungen zu betrachten, als eine Funktion, die nur ortsabhängige Informationen enthält, die sogenannte generalized mean
intensity (GMI, siehe [23]):
J(x) :=
M
X
cm (P )I m (x)
m=1
Damit kann das obige semidiskrete System geschrieben werden als:
nθm · ∇x I m (x) + (κm + λ)(x)I m (x) = λ(x)J(x) + f m (x) ,
m = 1, . . . , M
Nehme nun diskrete Versionen der linken Seite, des Skalars und der Quelle rechts, also
Thm Ihm ≈ nθm · ∇x I m (x) + (κm + λ)(x)I m (x)
Lh Jh ≈ λ(x)J(x)
fhm ≈ f m (x)
Damit liest sich das diskrete System
Thm Ihm = Lh Jh + fhm
m = 1, . . . , M
⇔
m
Ih = (Thm )−1 (Lh Jh + fhm )
m = 1, . . . , M
(5)
Um das System nur mit der GMI schreiben zu schreiben, wird die Gleichung mit den
Gewichten cm (P ) multipliziert und über alle m aufsummiert:
M
X
m=1
|
c
m
(P )Ihm
{z
Jh
}
=
M
X
c
m
(Thm )−1
|m=1 {z
Lh Jh +
}
=:Th
Das ergibt die diskrete mean intensity Formulierung
(I − T L )
| h {z h h}
impl. Systemmatrix Ah
13
M
X
|m=1
Jh = Fh
cm (Thm )−1 fhm
{z
=:Fh
(6)
}
(7)
Da Th inverse Transportmatrizen enthält, haben wir kein explizites Ah , statt dessen wird
die nächste Iterierte der Richardson-Iteration jeweils bestimmt durch geeignetes Lösen
der Transportoperatoren bzw. unteren Dreiecksmatrizen (bei geeigneter Diskretisierung),
die gewichteten Ergebnisse werden dabei sukzessive aufaddiert. Also ist eine enorme
Speicherersparnis um die Anzahl diskreter Ordinaten gegeben, bei jedoch gleichem
Aufwand, da man immer noch jeden Transportoperator lösen muß.
Ermittle also zunächst die mittlere Intensität, danach die spezifischen Itensitäten in
einem einzigen Postprozessing Schritt durch (5).
Die Vorkonditionierung ist jetzt nur mehr eingeschränkt möglich, da die Systemmatrix
in der Regel nicht mehr explizit gegeben ist, jedoch:
1. Es wird Dreiecksstruktur der Thm angenommen (Upwind + geeignete Nummerierung, siehe Kapitel 4), damit gilt jeweils diag((Thm )−1 ) = diag(Thm )−1 . A ist zusammengesetzt aus diesen (skalierten) Transportmatrizen, also ist die Diagonale
von A bekannt und der sogenannte purely local approximate Λ-operator (siehe [10],
[11], [22]) wird als Vorkonditionierer eingesetzt.
Ch := diag(Ah ) = diag(Ih −
M
X
cm (P )(diag(Thm ))−1 Lh )
m=1
2. Alles was ausserhalb der Diagonale ist, ist im Algorithmus unbekannt. Will man
also mehr Informationen über die Systemmatrix, ist auf jeden Fall entsprechender
Rechenaufwand zur Bestimmung notwendig. Zum Beispiel könnte man die erste
Subdiagonale berechnen und damit den nearest neighbour approximate Λ-operator
als alternativen Vorkonditionierer erhalten. Es müßte geprüft werden, ob sich der
zusätzliche Aufwand rechnet.
3.5 Symmetrie
Um ’konjugierte Gadienten’(CG)-Methoden auf das System anwenden zu können, wird
die Symmetrie des Systems untersucht. Denn für das CG-Verfahren ([28]) und symmetrische LGS gibt es eine einheitliche Konvergenztheorie, die z.B. bei der BiCG-Stab
Methode nicht gegeben ist. Zunächst deuten jedoch die unteren Dreiecksmatrien nicht
auf diese Eigenschaft (Symmetrie der Systemmatrix) hin, deswegen wird das System
etwas umformuliert.
1/2
1/2
Jh = Th Lh Jh + Fh = Th Lh Lh Jh + Fh
Es wird hier die Massematrix zum Streukoeffizienten zur Skalierung verwendet, bei angenommener (positiver) Diagonalgestalt nimmt man ihre Wurzel und definiert neu:
1/2
J˜h := Lh Jh
1/2
F̃h := Lh Fh
Damit schreibt man das neue System als
1/2
1/2
J˜h = Lh Th Lh Jh + F̃h
1/2
1/2
bzw. (Ih − Lh Th Lh )J˜h = F̃h
14
mit Systemmatrix
1/2
1/2
Ãh = (Ih − Lh Th Lh )
Diese ist genau dann symmetrisch, wenn Th symmetrisch ist. Nimmt man nun an, daß
für jede Richtung ω m die entgegengesetzte Richtung ebenfalls zum Satz diskreter Ordinaten {ω m , m = 1, . . . , M } gehört, kann man an dieser Stelle eine Theorie benutzen
die sich zum Beispiel in [25] finden läst. Nämlich daß dann Th für h → 0 gegen einen
semidiskreten, selbstadjungierten Operator T = T (M ) konvergiert. Im finite Differenzen Kontext kann die Symmetrie damit für kleine Gitterweiten h etabliert werden, beim
FEM Ansatz gilt das sogar für (fast) beliebiges h.
3.6 Das BiCG-Stab Verfahren
Eine iterative Methode zur Lösung von unsymmetrischen LGS wurde von Van der Vorst
in [27] untersucht. BiCG-Stab ist ein populäres Krylow-Unterraum Verfahren für dieses
Anwendungsgebiet. Eines der Hauptmerkmale ist, daß es ohne transponierte Matrix
auskommt, was bei einer impliziten Systemmatrix zur Lösung der RTE von großem
Vorteil ist. Ausserdem nutzt es effizienter Matrix-Vektor Multiplikationen verglichen
mit BiCG (siehe [28]) und ist dabei stabiler als CGS (siehe [29]). Dies sind jedoch nur
Resultate aus der Praxis, es gibt keine umfassende Konvergenztheorie für LGS mit der MMatrix Eigenschaft. Wir sollten deswegen mit etwas Skepsis an die Methode herangehen
und die Ergebnisse aus Kapitel 7 abwarten.
Algorithmus 3.6.1 (Das BiCG-Stab Verfahren)
BiCG-Stab(x, b, A, K)
0. INIT: r = b − Ax , rˆ0 = r , ρ0 = α = ω0 = 1,
,
v=p=0
1. DO WHILE NOT(Stoppkriterium) AND k < K
a.) k = k + 1
ρk
b.) β = ρk−1
· ωα , p := r + β(p − ωr)
c.) v = Ap
d.) α = rˆρTk v , s = r − αr , t = As
0
T
t s
, ρk+1 = −ω rˆ0 T t
e.) ω = ktk
2
f.) x = x + αp + ωs
g.) r = s − ωt
Das in Algorithmus 3.6.1 beschriebene Verfahren approximiert die Lösung des LGS
Ax = b wie es in (7) aufgestellt wurde. Es benutzt einige Hilfsvektoren und führt
pro Iterationsschritt zwei Matrix-Vektor Multiplikationen mit der Systemmatrix durch
(Matrix-Vektor Multiplikationen werden auch bei den anderen iterativen Verfahren notwendig). Im Kontext der Strahlungsstransportgleichung und der GMI ist diese Matrix
jedoch nicht explizit gegeben. Wir können sie dennoch auf einen Vektor anwenden, denn
in Gleichung (7) wird die implizite Systemmatrix Ah auf den Koeffizientenvektor Jh
der summierten gewichteten Intensitäten angewandt. Dies geschieht schrittweise, da die
15
Matrix Th implizit die einzelnen invertierten Transportmatrizen (Thm )−1 enthält, welche
beim Erreichen einer unteren Dreiecksstruktur direkt (also in O(N ) Laufzeit) angewendet werden können. Die einzelnen gewichteten Transportschritte werden dann zum
Ergebnisvektor der Matrix-Vektor Multiplikation aufsummiert. Die, im nächsten Kapitel aufgeführten, Vorgehensweisen zum Erreichen einer Dreiecksgestalt der Thm sind
demnach ausschlaggebend für die Effizienz beim Lösen der RTE.
16
4 Implementierung
In diesem Kapitel werden die mathematischen Grundlagen für die, dann folgende, Implementierung vorgestellt. Hier finden sich die Kernaussagen der Diplomarbeit, die uns effiziente Methoden zur Behandlung partieller Differentialgleichungen liefern. Die Aussagen
sollen jetzt etwas von dem Gebiet des Strahlungstransports losgelöst betrachtet werden.
Als Ansatz arbeiten wir mit konstanten Charakteristiken, also für eine Richtung β suchen
wir eine Approximation der Lösung u für die Transportgleichung nβ · ∇x u(x) = f (x).
4.1 Konstante Charakteristiken Upwind Diskretisierung erster
Ordnung
Abbildung 1 zeigt ein kartesisches Gitter, auf dem eine Triangulierung durchgeführt wurde, die Implementierung arbeitet also mit Dreieckselementen. Außerdem ist die Transportrichtung mit β = 22, 5◦ eingezeichnet. Wie in Gleichung (4) aufgeführt, wird zur
Lösung der Transportgleichung die, auf den Rand einfallende, Strahlung vorgegeben. Im
Bild sind das die grünen (hellen) Randknoten, auf denen die Lösung vorgegeben ist.
Um die Lösung wie hier in Knoten v0 zu approximieren, werden die Knoten auf den
Elementeckpunkten genutzt. Dazu dreht man das Bild anschaulich um den Winkel β, so
daß wir statt der partiellen Differentialgleichung ein eindimensionales Problem (analog
zu gewöhnlichen Dgl.) erhalten
nβ · ∇x u(v0 ) = u′ (v0 ) = f (v0 ),
(8)
welches wir mit Hilfe eines einfachen Differenzenquotienten lösen können. Da die Lösung
u in den ’rückwärtigen’ Randpunkten gegeben ist, ist es ein natürliches Vorgehen, diese
Knoten fortschreitend zu nutzen. Dies geschieht mit Hilfe eines rückwärtigen Differenzenquotienten, da wir dann (bei entsprechender Nummerierung der Knoten) eine Transportmatrix erhalten, die direkt zu invertieren ist (wegen der resultierenden Dreiecksgestalt).
Also in diesem Fall schreibt sich der einseitige (Upwind) Diffenrenzenquotient
u′ (v0 ) ∼
u(v0 ) − u(v1 )
h
(9)
Da v1 kein echter Knoten des Gitters ist, muß er bestenfalls zwischen den Eckpunkten
p1 und p2 unter Verwendung des Gewichtes α ∈ [0, 1] interpoliert werden:
u(v1 ) ∼ (1 − α)u(p1 ) + αu(p2 )
(10)
Wir erhalten also insgesamt zur Approximation der Lösung ein Verfahren, das, analog
zum expliziten Eulerverfahren aus dem Gebiet der gewöhnlichen Differentialgleichungen,
konsistent und von erster Fehlerordnung ist. Dieses Upwinding ist außerdem wegen der
ersten Ordnung monoton und oszillations-frei (siehe auch [33]).
17
Abbildung 1: Upwind-Vorgehen erster Ordnung auf einem kartesischen Gitter: Vorgehen
in Knoten v0
4.2 Konstante Charakteristiken Upwind Diskretisierung zweiter
Ordnung
Wir haben also für das betrachtete eindimensionale Problem eine Diskretisierung erhalten, die bei der angenommenen Dreiecksgestalt die gewünschten Geschwindigkeitsvorteile mit sich bringt. Auf dem Gebiet der gewöhnlichen Dgl. ist das explizite Eulerverfahren
jedoch nur der erste Schritt, es wurde eine Vielzahl weiterer Verfahren entwickelt, die
vor allem höhere Fehlerordnung liefern. Dies wollen wir hier ebenfalls erreichen, wollen aber weiterhin ein Vorgehen vom Upwind-Typ. Dazu benutzen wir eine Herleitung
18
Abbildung 2: Unstrukturiertes Dreiecksgitter (Ausschnitt) mit Upwind-Vorgehen zweiter
Ordnung: Vorgehen in Knoten v0
über die polynomial fitting technique (siehe [15]). Dabei wird die Lösung u in den drei
Punkten v0 , v1 , v2 (siehe Abb. 3) durch ein quadratisches Polynom interpoliert. Die Gestalt der Ableitung des Polynoms im Punkt v0 nutzt man dann bei der Suche nach der
Approximation der Lösung.
∂u
∂u
∼ b + 2cx, ( )0 = b
(11)
∂x
∂x
Da wir im Kontext des Transports in eine beliebige Richtung β nicht von einem äquidistanten Gitter ausgehen können, reicht es nicht die Abstände hi als gleich zu betrachten,
deswegen sei h1 +h2 = rh1 mit r > 1. Damit erhalten wir (nach Einsetzen der drei Punkte) ein lineares Gleichungssystem für die Koeffizienten a, b, c:
u ∼ a + bx + cx2 ,
u0 = a
u1 = a − bh1 + ch21
u2 = a − brh1 + c(rh1 )2
19
Abbildung 3: 1D Ansicht zur Diskretisierung des Transportproblems
Dieses ist eindeutig lösbar, somit erhalten wir für den gesuchten Koeffizienten b:
b=
∂u
−(1 − r2 )u0 − r2 u1 + u2
= ( )0
2
h1 (r − r)
∂x
(12)
Die Anwendung des so erhaltenen, einseitigen Differenzenschemas auf unser Transportproblem ist leicht. Abbildung 2 zeigt diesmal ein exemplarisches unstrukturiertes Gitter
(Ausschnitt), auf dem die Gleichung nβ · ∇x u(x) = f (x) für die konstante Charakteristik β gelöst wird. Dreht man wiederum den Betrachtungswinkel und blickt entlang
der Strahlung in Richtung β, muß ein entsprechendes 1D Problem gelöst werden (siehe
dazu auch Abbildung 3), wofür eben schon das polynomial fitting angesetzt wurde. Geht
man davon aus, daß die Funktionswerte in den ‘rückwärtigen’ Stützstellen, diesmal die
zwei Knoten v1 und v2 , schon ermittelt wurden, so schreibt sich die second order upwind
Diskretisierung in v0 (mit h1 + h2 = rh1 ) als:
nβ · ∇x u(v0 ) = u′ (v0 ) =
−(1 − r2 )u(v0 ) − r2 u(v1 ) + u(v2 )
+ O(h1 , h2 )2
h1 (r2 − r)
(13)
Im äquidistanten Fall (h1 = h2 ⇔ r = 2) folgt hieraus das wohlbekannte Schema
3u(v0 ) − 4u(v1 ) + u(v2 )
(14)
2h1
Zum Nachweis, daß es sich bei diesem Schema um eines von (mindestens) zweiter Ordnung handelt, betrachtet man den Abschneidefehler der Taylor-Reihen Entwicklung (siehe [15]). Es reicht aber nicht mehr aus, die Funktionswerte in den virtuellen Knoten v1
und v2 linear zu interpolieren. Diese Interpolation wäre von erster Ordnung und würde
die zweite Ordnung des Differenzenschemas zunichte machen. Deswegen werden nicht
mehr nur die zwei Elementeckpunte einbezogen. Man könnte zwar Knoten von benachbarten Zellen hinzunehmen, besser ist jedoch, das Vorgehen bei den Finite Elemente
u′ (v0 ) ∼
20
Methoden (FEM) abzuschauen. Dort werden stückweise polynomielle Ansatzfunktionen
auf den Zellen T einer Triangulierung des Gebietes verwendet, zum Beispiel, wie auch
hier, auf Dreieckszellen. Über diese Formfunktionen erhält man ein LGS zur Approximation der Lösung. Im Falle quadratischer FEM, d.h. die Ansatzfunktionen vh seien
elementweise quadratische Polynome, wird vh auf der Dreieckszelle als stetig in den
Knoten und Seitenmitten vorausgesetzt. Das ergibt also 6 Freiheitsgrade auf dem finiten Element (siehe auch [18], [19] für FEM im Kontext von upstream Techniken). Bei
unserem Finite Differenzen Ansatz gehen wir nun analog vor und plazieren einen dritten
Knoten auf die Mitte jeder Dreiecksseite. Dann werden v1 und v2 durch quadratische Interpolation auf der entsprechenden Dreiecksseite bestimmt, wobei nun auf jedem Dreieck
die Freiheitsgrade in den Knoten und Seitenmitten liegen. Für die Interpolation folgt
also
u(v1 ) = λ1 u(p11 ) + λ2 u(p21 ) + λm u(m1 )
(15)
mit von α1 (und analog für v2 von α2 ) abhängigen Gewichten:
λ1 = (1 − α1 )(1 − 2α1 ) , λ2 = α1 (2α1 − 1) , λm = 4α1 (1 − α1 )
(16)
Zum Beispiel ergäben folgende Werte die entsprechenden Gewichte
α1 = 0. : λ1 = 1, λ2 = 0, λm = 0
α1 = 1. : λ1 = 0, λ2 = 1, λm = 0
α1 = .5 : λ1 = 0, λ2 = 0, λm = 1
d.h. es würden genau die Knoten bzw. die Seitenmitte getroffen. Somit ist das allgemeine
Vorgehen definiert, es treten aber noch spezielle Fragen diesbezüglich auf:
1. Was geschieht mit der Diskretisierung am Rand?
Hier haben wir nicht ausreichend ’rückwärtige Stützstellen’, um unser Schema
höherer Ordnung anwenden zu können. In diesem Fall schalten wir runter auf
das Upwinding erster Ordnung. Dies geschieht für eine dünne Knotenschicht am
Rand mit einfallendem Transport, die Effekte auf das ganze Gebiet betrachtet sind
(wie die Tests zeigen werden) zu vernachlässigen. Umso mehr wenn Lösungen mit
Nullrand betrachtet werden.
2. Welche Gestalt hat unser Differenzenschema?
Die Diskretisierung ergibt für jede Unbekannte (Anzahl Knoten/Seitenmitten ∼
N EQ) jeweils eine Gleichung, in der insgesamt bis zu 7 Unbekannte auftauchen,
so daß eine dünn besetzte Matrix mit höchstens 7 Zeileneinträgen entsteht, die
- unter der Annahme einer unteren Dreiecksmatrix - mit ca. 14 × N EQ arithmetischen Operationen invertiert werden kann. Dabei kann sogar auf den Aufbau
der kompletten Matrix verzichtet werden, da für jede Unbekannte nur die entsprechenden 7 Einträge ‘on the fly’ berechnet werden müssen. Für dieses Ergebnis der
Diplomarbeit ist also der nächste Abschnitt über die Nummerierung der Knoten
grundlegend.
21
Abbildung 4: Beispiel für eine (unzureichende) Nummerierungstechnik am kartesischen
Gitter: Vorgehen in Knoten v0
4.3 Topologische Nummerierung der Knoten
Wegen der großen Anzahl Transportschritte, die während der (evtl. iterativen) Lösung
der Strahlungstransportgleichung durchgeführt werden müssen, ist es unerlässlich, die
Transportmatrizen in Gleichung (6) schnell, sogar direkt zu invertieren, d.h. in O(N EQ)
Aufwand. Für Dreiecksmatrizen ist dies immer möglich, wir müssen also eine Nummerierung der Knoten finden, die uns eine Dreiecksstruktur der Gleichungen (9) bzw. (14)
liefert. Es gibt viele Möglichkeiten die Knoten zu sortieren, um eine Matrix zu einer
gegebenen Diskretisierung aufzubauen, normalerweise wählt man eine lexikographische
22
Nummerierung. Will man jedoch eine untere Dreiecksmatrix speziell für die first/second
order upwind Diskretisierung erhalten, so zeigen sich schon bei einem einfachen kartesischen Gitter Schwierigkeiten. Denn nimmt man eine geometrische Nummerierung
senkrecht zur Transportrichtung θ (also bei 90◦ etwa die lexikographische Ordnung),
zeigt Abbildung 4 die Unzulänglichkeit. Die Transportrichtung ist hier 22,5◦ . Das blau
gefärbte Gebiet zeigt die abgearbeiteten Knoten, wenn man beim Knoten v0 angelangt
ist. Die second-order upwind Diskretisierung wie in Gleichung (14) benutzt zur Berechnung von u(v0 ) die Funktionswerte in den Knoten p11 , m1 , p21 sowie p12 , m2 , p22 . Wie man
jedoch sieht, ist der Funktionswert in p11 noch nicht berechnet, da er in der Nummerierung erst hinter Knoten v0 auftaucht. Das Programm muß also in diesem Fall auf das
Upwinding erster Ordnung umschalten und den Differenzenquotienten aus (9) benutzen,
denn der Funktionswert in v1 kann nur zwischen den Knotenwerten m1 und p21 interpoliert werden. Dies geschieht bei diesem Gitter wiederholt, so daß die zweite Ordnung der
Diskretisierung verlorengeht.
Um dennoch ein second-order upwind mit einer echten Deriecksmatrix zu erreichen,
bedienen wir uns Methoden aus der Graphentheorie (siehe [20]), denn die Struktur der
Gleichungen (14) kann als gerichteter Graph betrachtet werden, wobei eine Kante zwischen Knoten v und w existiert, falls zur Berechung von u(v) der Knotenwert u(w)
benutzt wird. Die entstandene Matrix ist gleichzeitig die Adjazenzmatrix dieses Graphen.
Wir gehen hier davon aus, daß speziell die 2nd-order upwind Methode eine Diskretisierung für das betrachtete Strahlungstransportproblem und beliebige Gitter liefert, die als
ein gerichteter kreisfreier Graph dargestellt werden kann. Diese ’azyklische’ Struktur
bedeutet, daß an jeder Stelle des Gitters für Knoten v und w die Lösung u(v) berechnet
und dazu u(w) benutzt wird. Zur Berechnung von u(w) wiederum Lösungen in anderen
Knoten, aber nicht mehr im ersten Knoten v, auch nicht mit Zwischenstationen. Unter
dieser Annahme liefert uns [20] die entscheidenden Aussagen und sogar Hilfsmittel zur
Implementierung:
Definition 4.3.1 (Gerichteter Graph) Ein gerichteter Graph G besteht aus einem
Satz Knoten V = v1 , v2 , . . ., einem Satz Kanten E = e1 , e2 , . . . und einer Zuordnung Φ
die jede Kante einem gerichteten Paar Knoten (vi , vj ) zuordnet.
Definition 4.3.2 (Ingrad, Outgrad) Die Anzahl der Kanten, die von einem Knoten
vi ausgeht, bezeichnet man als den Outgrad von vi , geschrieben d+ (vi ). Die Anzahl der
Kanten, die in einen Knoten vi inzident ist, bezeichnet man als den Ingrad von vi ,
geschrieben d− (vi ).
Definition 4.3.3 (Kreisfreier gerichteter Graph) Sei G ein gerichteter Graph. G
nennt man kreisfrei (’azyklisch’), wenn es keinen gerichteten Weg, also eine Folge von
23
Kanten (e0 , . . . , ek ), gibt, der einen Kreis bildet, also bei dem ein Knoten Anfangs- und
Endpunkt ist.
Definition 4.3.4 (Adjazenzmatrix) Sei G ein gerichteter Graph mit n Knoten. Die
Adjazenzmatrix A = [aij ] von G ist eine n × n Matrix mit Elementen
aij = 1,
= 0,
wenn es eine Kante gibt die vom i-ten Knoten zum j-ten Knoten zeigt
sonst
Lemma 4.3.1 (Potenzen von A) Der (i, j)-te Eintrag von Ar ist gleich der Anzahl
von verschiedenen, gerichteten Wegen mit r Kanten vom i-ten Knoten zum j-ten Knoten.
Beweis: Per vollständiger Induktion, siehe [20].
Lemma 4.3.2 Jeder gerichtete, kreisfreie Graph hat mindestens einen Knoten mit Ingrad Null und Outgrad Null.
Beweis: Siehe [20].
Nach der Vorstellung dieser Definitionen und Lemmata, kommen wir nun zum entscheidenden Satz dieses Abschnitts. In [20] und diesem Satz wird bei einer unteren bzw.
oberen Dreiecksmatrix angenommen, daß die Diagonalelemente ebenfalls Null sind. Dies
ist jedoch für unsere Arbeit keine Einschränkung. Da für jede beliebige Nummerierung
das Diagonalelement der Matrix dem Verweis eines Knotens auf sich selbst entspricht,
kann seine Existenz auch rein implizit angenommen werden. In den Differenzenschemata
(9) und (14) ist der Verweis von v0 auf sich selbst immer vorhanden, bei der Sortierung
der Knoten kann der zugehörige Eintrag auf der Diagonale vernachlässigt werden (und
das wird er auch in der Implementierung).
Satz 4.3.1 (Dreiecksmatrix) Ein gerichteter Graph G ist genau dann kreisfrei, wenn
die Knoten so geordnet werden können, daß die Adjazenzmatrix A eine untere (oder
obere) Dreiecksmatrix darstellt.
Beweis
a.) Angenommen A ist untere Dreiecksmatrix, d.h.
xij = 0 für i ≤ j
24
Durch einfache Multiplikation sieht man, daß A2 ebenfalls obere Dreiecksmatrix ist,
ebenso wie A3 , A4 , . . . und alle Potenzen von A. Da jedes Diagonalelement in jeder Potenz von A gleich Null ist, hat der Graph G keinen gerichteten Kreis, ist also kreisfrei.
b.) Angenommen G ist kreisfrei. Dann ordne die Knoten von G wie folgt: Entsprechend
Lemma 4.3.2, gibt es mindestens einen Knoten dessen Outgrad gleich Null ist. In der
Neuordnung der Knoten sei dies Knoten v1 . Jetzt entferne v1 und alle an v1 inzidenten
Kanten aus G. Der übriggebliebene Graph G - v1 muß ebenfalls kreisfrei sein, da G kreisfrei war. Also hat G - v1 mindestens einen Knoten, dessen Outrad in G - v1 gleich Null
ist. Sei also dieser Knoten v2 der zweite Knoten in der Neuordnung. Als nächstes entferne
v2 und alle an v1 inzidenten Kanten aus G - v1 . Indem man diesen Prozess weiterführt,
erhält man eine Neuordnung v1 , v2 , . . . der Knoten. Betrachte jetzt die Adjazenzmatrix A
von G mit den Knoten in dieser Ordnung aufgezählt. Die erste Zeile (gehörend zu v1 ) hat
nur Nullen. Die zweite Zeile rechts der ersten Spalte repräsentiert Knoten v2 in G - v1 ,
und enthält deswegen nur Nullen. Und so weiter, das ergibt eine untere Dreiecksgestalt
der Adjazenzmatrix, also die Behauptung. Die Aussage für die obere Dreiecksgestalt im
Satz kann bewiesen werden durch Abarbeiten der Knoten mit nulltem Ingrad.
q.e.d.
Unser Algorithmus, der die Knoten des Gitters umnummeriert, greift genauso auf topologisches Sortieren zurück, also auf das im Beweis zu Satz 4.3.1 beschreibene Vorgehen.
Der Algorithmus benutzt dabei sparse matrix Speichertechniken und neben der Adjazenzmatrix wird auch die transponierte Adjazenzmatrix gespeichert. Als Hilfsmittel wird
ausserdem ein Array benutzt, das für jeden Knoten die Anzahl der Zeileneinträge speichert, sowie eine Queue, woraus im Laufe der Iteration die Sortierung ausgeschrieben
wird: Es wird immer der Knoten aus dem Graph ‘entfernt’, auf den nicht mehr verwiesen wird (dazu dient die transponierte Adjazenzmatrix). Die entsprechenden Einträge
im Hilfsarray werden dekrementiert und die Queue mit den so evtl. neu entstandenen,
nicht mehr verwiesenen Knoten gefüllt.). Algorithmus 4.3.1 beschreibt das Vorgehen
in Pseudo-Code, die Arrays INKNOTEN und OUTKNOTEN enthalten die Knoten an
den eingehenden respektive ausgehenden Kanten des Graphen, sie entsprechen damit
auch der Adjazenzmatrix respektive transponierten Adjazenzmatrix. Zur Implementierung dieser Arrays wurde eine sparse matrix Speichertechnik verwendet, da die Zahl der
Einträge höchsten 7 · N EQ beträgt.
Algorithmus 4.3.1 (Nummerierung mit topologischem Sortieren)
ORDER (QUEUE[*], INKNOTEN[*][*], OUTKNOTEN[*][*], NVT)
0. INIT:
i.) QUEUE[*]=0, OUTDEG[*] = 0 , k = 1
ii.) FOR EACH ENTRY IN OUTKNOTEN[i][*] DO OUTDEG[i]++
iii.) FOR EACH i WITH OUTDEG[i]=0 DO i → QUEUE
1. DO WHILE k < NVT
a.) v=QUEUE[k]
25
Abbildung 5: Grobgitter mit einer
’steilen’ Testkonfiguration
Abbildung 6: Grobgitter mit
’Quadhex’ Testkonfiguration
b.) IF v=0 THEN OUTPUT ’Graph ist nicht kreisfrei’, STOP!
c.) FOR EACH j IN INKNOTEN[v][*] DO:
d.) OUTDEG[j]- e.) IF OUTDEG[j]=0 THEN j → QUEUE
f.) END FOR
g.) k = k + 1
Ein analog vorgehender Algorithmus, der mit anderen Datenstrukturen als Hilfsmittel
arbeitet (Adjazenzlisten statt Arrays), aber der die gleichen Voraussetzung benutzt und
ebenfalls eine topologische Nummerierung der Knoten liefert, wird in [21] beschrieben.
Dieser und auch der implementierte Algorithmus 4.3.1 zur (einmaligen) Initialisierung
benötigt - wie auch das jeweilige Invertieren der Matrizen - O(N EQ) Operationen.
Zur Verifizierung sollen die ersten Testrechnungen in Kapitel 5 dienen, genauso wie die
Ergebnisse für eine weitergehende Konfiguration in Kapitel 7.
4.4 Numerische Probleme
In diesem Abschnitt sollen einige Probleme angesprochen werden, die die in Kapitel 4
gemachten Aussagen beeinträchtigen könnten. Zum einen wäre da die Notwendigkeit der
unteren Dreiecksstruktur für die Transportmatrizen, die uns den entscheidenden Effizienzgewinn bringt. Was wäre zu tun wenn der Algorithmus auf einen Graphen trifft, der
einen Kreis enthält? Zum anderen muß auf die numerische Stabilität in der Berechnung
von Gleichung (13) geachtet werden, für den Fall r → 1 bzw. r → ∞ nimmt die Rundungsfehleranfälligkeit extrem zu. Schließlich wäre das allgemein bekannte Verhalten
(siehe z.B. [31]), daß Methoden höherer Ordnung zu numerischen Oszillationen neigen.
Die Probleme sollen hier angesprochen und erörtert werden.
1. Bisherige Tests auf unterschiedlich konfigurierten Gittern ergaben bisher immer
Nummerierungen der Knoten, die die gewünschte Dreiecksgestalt der Transport-
26
matrizen lieferten. Neben allen, in den Testrechungen aufgeführten, Gitterkonfigurationen, wurde der Algorithmus erfolgreich auf den in Abb. 5 und 6 aufgeführten
Gittern getestet. Falls es jedoch Konfigurationen gibt, die mit der beschriebenen
Upwind Diskretisierung erster oder zweiter Ordnung keinen kreisfreien Graphen
und damit eine Dreiecksmatrix liefern, wäre das zur Zeit der Simulation erst nach
dem Ausführen des Algorithmus 4.3.1 ersichtlich. Vorher haben wir keine Möglichkeit, diesen Fall festzustellen und eventuell Anpassungen am Gitter vorzunehmen.
Dann bliebe uns aber, statt der exakten Inversion der Transportmatrizen, ein Defektkorrekturverfahren anzuwenden. Wegen der nichtlinearen Kopplung der Richtungen wird ebenfalls ein iteratives Verfahren notwendig, für den Transportschritt
würde dann eine Defektkorrektur mit dem unteren Dreiecksteil der Transportmatrix durchgeführt. Im Falle der einfachen geometrischen Nummerierung der Knoten
wäre auch ein Großteil der Matrixeinträge in diesem Teil zu finden.
2. Ein mögliches Problem bei der konstante Charakteristiken Upwinding Diskretisierung ist, wenn, wie in Abbildung 4, der Knoten p22 fast, aber nicht genau getroffen
wird (der Code räumt eine Toleranz von 10−13 ein, um die echten Gitterknoten zu
treffen). Dann bekommen wir für die Weite h2 einen extrem kleinen Wert in der
Größenordnung ∼ 10−10 · h1 , was dann natürlich wegen numerischer Ungenauigkeit die zweite Ordnung des Schemas (13) gefährdet. Um dies zu beheben würde
ein ganz einfaches Vorgehen genügen, denn ist uns die Weite zu klein, bzw. das
Verhältnis zweier benachbarter Weiter hhji ≤ ǫ, geht man bis zur nächsten Dreiecksseite und interpoliert darauf den Wert der Lösung im (virtuellen) Knoten v3 . Dann
verwendet man u(v3 ) zur Berechnung des Differenzenquotienten (13). Die geschilderte Gefahr zeigte in den bisherigen Tests mit unstrukturierten bzw. stochastisch
gestörten Gittern keinen Einfluß. Deswegen konstruieren wir hier eine Testkonfiguration. Wir wollen uns nicht mit einer stochastischen Störung des Gitters zum
Testen begnügen, denn schon eine einfache Gitterkonfiguration, die uns genau den
beschriebenen Zustand liefert und die numerische Stabilität beansprucht, sieht
man in Abbildung 7. Bei dem Grobgitter wurde der Mittlere Knoten um 10−1
nach unten verschoben. Eine kleinere Verschiebung ist mit dem Auge nicht zu sehen, bei den weiteren Tests beträgt sie jedoch 10−n . Damit erhalten wir speziell
für den 0◦ Winkel fast durchgehend Weiten hi von ungefähr 10−n · hj . Die Tabelle
1 zeigt die Fehlerraten der 2. Ordnung Upwind Diskretisierung auf verschiedenen
Verfeinerungsstufen für diesen Winkel, sowie einen Counter für die Anzahl der
hi ≤ 2 · 10−n · hj Es wird deutlich, daß trotz der großen Anzahl ’kurzer’ hi die
Asymptotik erhalten bleibt, man sieht deutlich den Faktor 4 und somit die zweite
Ordnung des Diskretisierungsschemas. In der letzten Zeile sieht man, wie die Gitterpunkte, die nur ganz knapp (∼ 10−14 ) verfehlt werden, die virtuellen Knoten
’anziehen’, und damit der Counter für die Anzahl der hi ≤ 2 · 10−14 · hj auf Null
fällt.
3. Die Tendenz zu numerischen Oszillationen, bzw. zum Verschmieren der berechneten Lösung (für das Verfahren 2. bzw. 1.Ordnung) wollen wir an einem einfachen
27
Abbildung 7: Gitterkonfiguration zum Test der Auswirkungen von h2 ≪ h1
Abbildung 8: Grobgitter für ‘Flow around cylinder’
28
NEQ
16.641
66.049
263.169
16.641
66.049
263.169
16.641
66.049
263.169
16.641
66.049
263.169
16.641
66.049
263.169
16.641
66.049
263.169
Shift
0
0
0
1 · 10−1
1 · 10−1
1 · 10−1
1 · 10−2
1 · 10−2
1 · 10−2
1 · 10−4
1 · 10−4
1 · 10−4
1 · 10−8
1 · 10−8
1 · 10−8
1 · 10−14
1 · 10−14
1 · 10−14
min{ hh21 } =: δ
1 · 100
1 · 100
1 · 100
1 · 10−1
1 · 10−1
1 · 10−1
1 · 10−2
1 · 10−2
1 · 10−2
1 · 10−4
1 · 10−4
1 · 10−4
1 · 10−8
1 · 10−8
1 · 10−8
1 · 10−14
1 · 10−14
1 · 10−14
♯ Limiter in [δ, 2δ]
8192
32768
131070
4032
16256
65280
4032
16256
65280
4032
16256
65280
4032
16256
65280
0
0
0
Fehler
6.6076 · 10−4
1.7197 · 10−4
4.3950 · 10−5
5.7819 · 10−4
1.5000 · 10−4
3.8233 · 10−5
5.9395 · 10−4
1.5428 · 10−4
3.9214 · 10−5
5.9876 · 10−4
1.5629 · 10−4
4.0027 · 10−5
5.9881 · 10−4
1.7197 · 10−4
4.0038 · 10−5
6.6076 · 10−4
1.7197 · 10−4
4.3950 · 10−5
Tabelle 1: Test der Auswirkungen von h2 ≪ h1 : Limiter und Fehlerraten für 0◦ Winkel
Beispiel nachvollziehen. Dazu erzeugen wir eine nichtglatte Strahlung, und zwar
auf einem Gitter aus einer anerkannten Benchmarkkonfiguration (‘Flow around
cylinder’, siehe Abb. 8 sowie [24]) aus dem Bereich der Strömungsmechanik, wie
sie auch für die LBM verwendet wird. (Damit soll auch deutlich werden, daß die
Strahlungstransportgleichung stellvertretend für die partiellen Differentialgleichungen gelöst wird.) Dazu wird eine charakteristische Funktion für die Intensität am
inneren Rand festgelegt.
Konfiguration 4.4.1 Die Daten für die Strahlungstransportgelichung werden vorgegeben als
f (x, y) := 0
κ(x, y) := 0
½
1 ,
g(x, y) :=
0 ,
innerer einfallender Rand
sonst
Wegen der lokalen Randquelle im Inneren des Gitters wird die Strahlung in das
Gebiet transportiert.
Abbildung 9 bestätigt das vorhergesehene Verhalten, das Upwind 1. Ordnung ist zwar
Monoton, die berechnete Lösung verschmiert jedoch und kommt an die Referenzlösung
29
nicht heran. Das Upwind 2.Ordnung schiesst dagegen über die Referenzlösung hinaus, was uns die Freude über erreichte Gewinne bei der Genauigkeit wiederum etwas
schmälert. In Kaptitel 6 wird auf dieses Problem und evtl. Techniken zu dessen Vermeidung näher eingegangen.
30
1.2
1.2
"upw2_lev4"
"upw1_lev4"
"ref"
"upw2_lev5"
"upw1_lev5"
"ref"
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
-0.2
-0.2
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
Abbildung 9: Lösung des ‘nichtglatten’ Testproblems (links: UPW1; rechts: UPW2) auf
Level 3 (oben) bis Level 6 (unten); Querschnitt der Lösung am rechten Gebietsrand auf
Level 4 (links) und Level 5 (rechts) für β = 0◦
5 Erste Tests
Es ist im Allgemeinen nicht einfach, physikalische Konfigurationen zu finden, um die
Effizienz der numerischen Verfahren zu testen. Da es schwierig ist, zu gegebenen Daten
31
eine geschlossene Form für die Intensität I herzuleiten (vor allem, wenn der Integralterm
Einfluss nimmt) gehen wir hier immer den umgekehrten Weg: Wir geben uns eine Intensität I(x, θ) sowie Größen κ(x, θ) und λ(x, θ) vor und berechnen ausgehend von der
Gleichung (3) die Daten, also die rechte Seite und die einfallende Strahlung. Erhalten
wir für diese (möglichst anspruchsvollen) Konfigurationen die erwarteten guten Ergebnisse, und sind diese auch auf allgemeinen, unstrukturierten Gittern konsistent, können
wir annehmen, daß die Ergebnisse auch auf Konfigurationen aus der Praxis übertragbar
sind.
5.1 Laufzeitanalyse: Initialisierung und Transportschritt
Der erste Testfall soll uns die Aussagen bzgl. des Laufzeitverhaltens aus Kapitel 4.4
bestätigen. Dazu nehmen wir wiederum die Benchmarkkonfiguration. Wir werden mit
den beiden Upwind Diskretisierungen rechnen und konstruieren uns mit den Daten eine
glatte Lösung, so daß wir später auch eine Fehlerranalyse durchführen können.
Konfiguration 5.1.1 (Glatte Lösung mit Nullrand) Zu gegebener Intesität mit Nullrand
I(x, y, θ) := x(2.4 − x)y(0.41 − y)
werden der Quellterm sowie die Absorption wie folgt gesetzt:
f (x, y, θ) =
=
κ(x) =
λ(x) =
nθ · ∇x I(x, θ) + κ(x)I(x, θ)
n1 (y(y − 0.41)(2x − 2.4)) + n2 (x(x − 2.4)(2y − 0.41)) + κ(x)I(x, θ)
10n
0
Tabelle 2 zeigt das Laufzeiterhalten des Transportlösers für beide Upwind Diskretisierungen. In Kapitel 4 wurde gezeigt, daß die Anzahl arithmetischer Operationen, zur
Initialisierung der Diskretisierung und zur Anwendung einer Matrix-Vektor Multiplikation (inkl. ’invertieren’ der Transportmatrizen Thm ) jeweils von der Ordnung O(N EQ) ist.
In Testfällen ohne Kopplung durch den Integralterm (also λ(x) = 0), und beim Erreichen der Dreiecksgestalt der Transportmatrizen, reicht genau ein Iterationsschritt zur
Lösung des LGS aus. Damit kommt man mit einer Matrix-Vektor Multiplikation mit der
impliziten Systemmatrix aus, durch diesen Test wird demnach auch der Erfolg bei der
Nummerierung der Knoten nochmal bestätigt. In der Tabelle wird von oben nach unten schrittweise die Verfeinerung des Gitters vorgenommen. Die Anzahl der Gleichungen
erhöht sich um den Faktor 4. In der Laufzeit treten jedoch schon von der dritten zur vierten Verfeinerungsstufe und auch später Faktoren von 5, bis zu 6, auf. Dieses ist rechnerisch kein lineares Verhalten, sondern entspricht der Größenordnung von O(N EQ1.15 ) bis
zu O(N EQ1.3 ) für die Laufzeit. In [30] wurde für numerische Simulationen gezeigt, daß
das Laufzeitverhalten (Zeit für Speicherzugriffe etc.) von der Problemgröße beeinflußt
wird. D.h., je größer der Speicheraufwand, umso weniger effektiv können die Kapazitäten
32
und ’Gigaflops’ des Rechners genutzt werden. Wir haben speziell in dieser Simulation
Problemgrößen von 1.2×107 Gleichungen auf der feinsten Verfeinerungsstufe. Es werden
nicht viel größere Probleme auf verbreiteten PC-Systemen (die hier teilweise unsere Zielgruppe darstellen) gerechnet, somit können wir uns mit dieser Pseudo-Linearen Laufzeit
begnügen. Die ’arithmetische’ Laufzeit, die wir mit der Implementierung erreicht haben
ist auf jeden Fall linear. Weitere Laufzeiten, die dies auch bei Kopplung der Gleichungen
im Richtungsraum belegen, befinden sich in Kapitel 7.2.
NEQ
12992
50560
199424
792064
3156992
12605440
INIT-Time
5.00 · 10−2
2.50 · 10−1
1.10 · 10+0
5.53 · 10+0
31.16 · 10+0
174.40 · 10+0
SOLVER-Time
1.00 · 10−2
3.00 · 10−2
1.30 · 10−1
8.00 · 10−1
4.83 · 10+0
26.15 · 10+0
INIT-Time
8.00 · 10−2
2.70 · 10−1
1.31 · 10+0
6.59 · 10+0
36.81 · 10+0
208.51 · 10+0
SOLVER-Time
1.00 · 10−2
4.00 · 10−2
2.50 · 10−1
1.24 · 10+0
6.59 · 10+0
37.99 · 10+0
Tabelle 2: CPU Zeiten (in sec) für verschiedene Gitterverfeinerungen: Upwind 1.Ordnung
(links) vs. 2.Ordnung (rechts)
5.2 Erste/Zweite Ordnung auf unstrukturierem Gitter
Der zweite Test soll uns die Aussagen bzgl. der Fehlerraten aus Kapitel 4.2 bzw. 4.3
bestätigen. Dazu nehmen wir wiederum das Benchmarkgitter und Konfiguration 5.1.1
und lösen die Transportgleichung nβ · ∇x u(x) + κu(x) = f (x) für verschiedene Richtungen β und für variierende Absorptionsraten κ. Die Rechnungen auf verschiedenen
Verfeinerungsstufen, deren Fehlerraten in Tabellen 3 und 4 zu finden sind, zeigen das
erwartete Verhalten von O(h) bzw. O(h2 ), selbst auf unstrukturierten Gittern. Die
Fehlerraten werden dabei mit zunehmender Größe des κ besser. Das hängt damit zusammen, daß wir dann ein immer weniger transportdominantes Problem erhalten. Bei
einem Absorptionswert von ’quasi unendlich’ würde der Transport in der Gleichung
nβ · ∇x u(x) + κu(x) = f (x) auch quasi keine Rolle mehr spielen. Mit der entsprechenden
Funktion f für die rechte Seite würden wir nur eine Identität lösen und kein richtiges
Transportproblem.
33
UPW=1
0 (κ = 10−2 )
0◦ (κ = 10+0 )
0◦ (κ = 10+2 )
135◦ (κ = 10−2 )
135◦ (κ = 10+0 )
135◦ (κ = 10+2 )
◦
Level 3
8.40 · 10−2
4.30 · 10−2
9.90 · 10−4
1.87 · 10−1
1.52 · 10−1
5.80 · 10−3
Level 4
4.34 · 10−2
2.22 · 10−2
5.02 · 10−4
9.36 · 10−2
7.63 · 10−2
2.93 · 10−3
Level 5
2.21 · 10−2
1.13 · 10−2
2.54 · 10−4
4.68 · 10−2
3.83 · 10−2
1.47 · 10−3
Level 6
1.12 · 10−2
5.68 · 10−3
1.28 · 10−4
2.34 · 10−2
1.92 · 10−2
7.39 · 10−4
Level 7
5.62 · 10−3
2.85 · 10−3
6.40 · 10−5
1.17 · 10−2
9.60 · 10−3
3.70 · 10−4
Level 5
5.29 · 10−5
4.83 · 10−5
5.69 · 10−6
5.59 · 10−4
4.48 · 10−4
8.30 · 10−5
Level 6
1.26 · 10−5
1.16 · 10−5
1.48 · 10−6
1.36 · 10−4
1.08 · 10−4
2.09 · 10−5
Level 7
2.88 · 10−6
2.67 · 10−6
3.78 · 10−7
3.37 · 10−5
2.65 · 10−5
4.93 · 10−6
Tabelle 3: L2 -Fehler für 1.Ordnung Upwinding
UPW=2
0 (κ = 10−2 )
0◦ (κ = 10+0 )
0◦ (κ = 10+2 )
135◦ (κ = 10−2 )
135◦ (κ = 10+0 )
135◦ (κ = 10+2 )
◦
Level 3
9.00 · 10−4
8.16 · 10−4
8.23 · 10−5
9.96 · 10−3
8.25 · 10−3
1.03 · 10−3
Level 4
2.18 · 10−4
1.98 · 10−4
2.17 · 10−5
2.33 · 10−3
1.90 · 10−3
3.04 · 10−4
Tabelle 4: L2 -Fehler für 2.Ordnung Upwinding
5.3 Vergleich mit externen Ergebnissen
Um einen Vergleich mit anderen Verfahren aus dem Gebiet des Strahlungstransports zu
erhalten, nehmen wir eine Konfiguration aus den Arbeiten von Andreas Dedner ([32] und
[33] (Seiten 182 - 224)), und übernehmen sogleich die Auswertungen bzw. Darstellungen
für den L2 -Fehler, die Experimental Order of Convergence (EOC) sowie das Verhältnis
Fehler zu Laufzeit (Zeit für Initialisierung und den direkten Lösungsschritt).
Definition 5.3.1 (EOC) Für eine Sequenz von Gittern mit Parametern der Gitterweite h, βh, β 2 h, . . . und dazugehörigen Approximationen uh , uβh , uβ 2 h , . . . wird die EOC für
eine gegebene Norm k.kΩ wie folgt definiert.
EOCβ :=
ln(eβ i h ) − ln(eβ i+1 h )
ei
also hier EOC2 = log( 2 h )
ln(β)
e2i+1 h
Hier gibt eh den Fehler zwischen der exakten Lösung u und der Approximation uh an:
eh := ku − uh kΩ
Die Error vs. Runtime Analyse soll uns eine Aussage über die numerische Effizienz
des Verfahrens machen, während die EOC uns ausgibt welche Ordnung das Verfahren
tatsächlich in der Praxis erreicht. Wir erwarten also Werte von 1 für das erste Ordnung
Upwinding und 2 für das Upwinding zweiter Ordnung.
34
Abbildung 10: strukturiertes (links) sowie unstrukturiertes, stochastisch gestörtes Grobgitter (rechts)
Um die Anwendbarkeit der Diskretisierung auf nicht kartesische Gitter zu demonstrieren, nehmen wir (analog zum Gitter welches Dedner nutzte) ein stochastisch gestörtes
Gitter (siehe Abbildung 10). Die Testkonfiguration ist also auf dem quadratischen Gebiet [−1, 1] × [−1, 1] definiert und setzt die Absorption so, daß Werte von 0.0001 bis
10000 vom κ angenommen werden (siehe Abbildung 11).
Konfiguration 5.3.1 (Glatte Lösung) Zu gegebener Intesität und Absorptionsverteilung
I(x, y, θ) := (cos(2πx) + 2)sin(πy)2 + 1
κ(x, y) := (1000tanh(−αy) + 1000.001)(sin(πx) + 1.25)
wird der Quellterm wie folgt gesetzt:
f (x, y, θ) = nθ · ∇x I(x, y, θ) + κ(x)I(x, y, θ)
= n1 (−sin(πy))2 sin(2πx)2π) + n2 ((cos(2πx) + 2)2sin(πy)cos(πy)π) + κ(x)I(x, y, θ)
so daß die gewählte Intensität I eine Lösung der RTE ist.
Eine weitere Konfiguration aus der Vergleichsquelle wird wie folgt beschreiben (siehe
auch Abb. 12):
Konfiguration 5.3.2 Für die Intensität wird eine H3 Funktion gewählt, und zwar
½
−r6 + 3r4 − 3r2 + 2 , r ≤ 1
I(x, y) :=
1 , sonst
mit r =
16
(x2
9
+ y 2 ) und α ∈ R+ . D.h. die Daten werden wie folgt definiert
κ(x, y) := α
f (x, y) = nθ · ∇x I(x, y) + κ(x, y)I(x, y)
35
Abbildung 11: Intensität und Absorption (α = 5) für Testfall 5.3.1 (Glatte Lösung),
Quelle: [33]
Abbildung 12: Intensität für Testfall 5.3.2 (H 3 Lösung), Quelle: [33]
Abbildung 13: Glatte Lösung: max{Fehler I i }
36
Abbildung 14: Glatte Lösung: Fehler für mittlere Intensität J
Abbildung 15: Glatte Lösung: EOC für
max{Fehler I i }
Abbildung 16: Glatte Lösung: EOC für mittlere Intensität J
Abbildung 17: Glatte Lösung: Error vs. Runtime für max{Fehler I i }
Abbildung 18: Glatte Lösung: Error vs. Runtime für mittlere Intensität J
37
Abbildung 20: H 3 Lösung: Fehler für mittlere
Intensität J
Abbildung 19: H 3 Lösung: max{Fehler I i }
Abbildung 21:
max{Fehler I i }
=
½
32
(n1 x
9
H3
Lösung:
EOC
für
Abbildung 22: H 3 Lösung: EOC für mittlere
Intensität J
+ n2 y)(−6r5 + 12r3 − 6r) + κ(x, y)I(x, y) ,
1 ,
r≤1
sonst
Bewertung der Ergebnisse:
Die Rechnungen erfolgten diesmal mit 7 Richtungen. Vergleicht man die, hier dargestellten, Ergebnisse für die Konfiguration 5.3.1 (Glatte Lösung) mit den Bildern und Daten
die von Andreas Dedner erzeugt wurden, fällt einem sofort die Ähnlichkeit der Bilder
auf. Auch hier ergibt sich für die beiden Upwind Varianten asymptotisch (für h −→ 0)
eine EOC von 1 bzw. 2. Die Darstellung des Fehlers zeigt den Vorteil der Diskretisierung
zweiter Ordnung gegenüber dem einfachen Differenzenquotienten. Die, zu Beginn noch
nahe beieinander liegenden, Kurven in Abb. 13 und 14 trennen sich bald und das Upwinding 2. Ordnung erzielt bessere Fehlerraten. Die Darstellung von Error vs. Runtime
in Abb. 17 und 18 zeigt, daß die Effizienz unseres Verfahrens vergleichbar ist mit dem
Verfahren von Dedner. Man kann hier ebenfalls ein lineares Verhalten erkennen, unsere
38
Rechnungen bleiben also auf jeden Fall nicht hinter den Vergleichsrechnungen zurück.
Die andere Konfiguration 5.3.2 wurde mit der Absorption von κ(x) = 5 gerechnet und
liefert uns komplett analoge Ergebnisse. Auch diese sind praktisch den Rechnungen von
Dedner gleich.
5.4 Approximation des Integralterms
Der Integralterm in der RTE (3) muß nach der Diskretisierung im Ordinatenraum geeignet approximiert werden. Dies geschieht mit der summierten Trapezregel. Bei der
Parametrisierung des Richtungesraumes beim 2+1 Modell wird das Intervall [0, 2π] auf
den Einheitskreis abgebildet, nach Umlauf des Kreises um 360◦ blickt man wieder in die
ursprüngliche Richtung. Für 2π periodische Funktionen, wie sie hier auftreten, ist die
summierte Trapezregel von (mindestens) zweiter Ordnung. Zur Verifikation betrachten
wir den Testfall einer rein winkelabhängigen Funktion. Diesmal setzten wir Werte für
die Streuung λ in der Modellgleichung
Z 2π
1
nθ · ∇x I(x, θ) + u(x, θ) = (1 − α)
I(x, θ′ )dθ′ + f (x)
2π 0
also (1 − α) > 0, um eine Kopplung der spezifischen Intensitäten über das Integral zu
erhalten.
Konfiguration 5.4.1 (Ortsunabhängige Lösung) Zu gegebener, rein winkelabhängiger Intensität
I(θ) = θ(2π − θ)
mit
1
2π
R 2π
0
I(θ′ )dθ′ = 23 π 2 werden die Daten wie folgt gesetzt:
Z
1 − α 2π
f (x, θ) = nθ · ∇x I(θ) + I(x, θ) −
I(θ′ )dθ′
2π 0
2 2
= θ(2π − θ) − (1 − α) π
3
κ(x) = 1
λ(x) = 1 − α
Die gewählte spezifische Intensität wird in Abbildung 23 dargestellt. Das LGS wird
diesmal mit einem iterativen Verfahren (Richardson Schema) gelöst, die Fehlerschranken
für das Abbruchkriterium werden hoch angesetzt, um die Fehlerrate der Integralapproximation untersuchen zu können (siehe Kapitel 7).
Zur Diskretisierung wurde das Upwind 2. Ordnung verwendet. Die Ergebnisse in
Tabellen 5 und 6 werden stellvertretend für alle Verfeinerungsstufen auf Level 7 (mit
N EQ ∼ 25000 mal Anzahl Winkel) dargestellt, da die Gitterweite in diesem Fall keine
Rolle spielt und die Fehler auf allen Stufen gleichbleibend sind. Da die spezifischen Intensitäten jeweils ortsunabhängig sind, ist auch der Fehler in den spezifischen Intensitäten
39
Abbildung 23: Intensität I(θ) für Testfall 5.4.1
α=1
α=0.5
α=0.1
α=0.01
4 Winkel
6.25 · 10−2
8.72 · 10−2
1.28 · 10−1
1.43 · 10−1
8 Winkel
1.56 · 10−2
2.15 · 10−2
3.12 · 10−2
3.47 · 10−2
16 Winkel
3.91 · 10−3
5.37 · 10−3
7.73 · 10−3
8.60 · 10−3
8 Winkel
3.21 · 10−15
8.77 · 10−2
2.30 · 10−1
2.82 · 10−1
16 Winkel
3.21 · 10−15
2.19 · 10−2
5.71 · 10−2
6.99 · 10−2
32 Winkel
9.77 · 10−4
1.34 · 10−3
1.93 · 10−3
2.14 · 10−3
Tabelle 5: L2 -Fehler für J
α=1
α=0.5
α=0.1
α=0.01
4 Winkel
5.23 · 10−16
3.54 · 10−1
9.39 · 10−1
1.16 · 100
32 Winkel
3.21 · 10−15
5.46 · 10−3
1.42 · 10−2
1.74 · 10−2
Tabelle 6: maximaler L2 -Fehler aller I i
ohne Kopplung durch das Integral (Fall α = 1) gleich Null. Die Intensität in jeder
Richtung ist exakt, hier kann also die Quadraturformel für die Berechnung der mittleren
Intensität besonders gut untersucht werden. Hierbei sieht man, daß durch Verdopplung
40
der Winkel der Fehler stets geviertelt wird, aber nicht gleich Null ist. Das liegt an der
Winkelabhängigkeit, die dafür sorgt, daß wir bei der numerischen Integration auch ’etwas tun müssen’. Sieht man sich jetzt die Fälle mit Kopplung der Richtungen an (Fall
α < 1), so bleibt bei der Approximation der mittleren Intensität J das gleiche asymptotische Verhalten. Es werden nun aber auch die einzelnen Intensitäten I i nicht mehr
exakt gelöst. Die Kopplung sorgt dafür, daß auch sie einen Fehler von zweiter Ordnung
in der Anzahl der Winkel aufweisen. Zusammenfassend sehen wir an den Ergebnissen
einerseits, daß bei der Integro-Differentialgleichung die Kopplung der Richtungen auch
wirklich einen Einfluss auf die spezifischen Intensitäten hat. Andererseit sehen wir, daß
unsere verwendete Quadraturformel mindestens von zweiter Ordnung ist.
41
6 Numerische Herausforderungen
Im Abschnitt 4.4 wurde deutlich, daß bei Diskretisierungen höherer Ordnung und bei
bestimmten Konfigurationen mit Oszillationen zu rechnen ist, die bei der Lösung der
Strahlungstransportgleichung sogar negative, also unphysikalische Intensitäten liefern.
Im ersten Teil dieses Kapitels soll die vorhandene Implementierung dahingehend genutzt
und erweitert werden, mit diesem Problem fertigzuwerden.
Werden die starken over- und undershoots abgedämpft, bleibt jedoch ein Problem, denn
wenn große Änderungen in der Lösung auf sehr begrenztem Raum auftreten, geht die
Asymptotik unserer Diskretisierungen verloren. Denn der Raum ist zu begrenzt um
diese ’steilen Gradienten’ mit der uniformen Auflösung des Gitters zu ’bemerken’ und
damit eine hohe Genauigkeit zu erhalten. Da unsere Diskretisierung jedoch auf beliebigen
Gittern arbeitet, wird im zweiten Abschnitt dieses Kapitels untersucht, wie die erste bzw.
zweite Fehlerordnung auch bei sehr steilen Gradienten erreicht werden kann, und zwar
mit Hilfe von adaptierten Gittern.
6.1 Umgang mit Unstetigkeiten, steilen Gradienten
Methoden von höherer Ordnung zur Lösung der RTE reagieren empfindlich auf Unstetigkeiten in den Intensitäten bzw. dem Quellterm. Diese führen dann zu Oszillationen, starken sogenannten Over- und Undershoots, die sogar als unphysikalische, negative Werte
für die resultiere Intensität auftreten können. Methoden erster Ordnung sind zwar monoton und oszillationsfrei, bleiben bei der Genauigkeit aber weit zurück und zeigen ein
’Verschmieren’ der Lösung senkrecht zur Transportrichtung (crosswind ) auf (siehe Abb.
9 oder auch [33]). In diesem Falle - steile Gradienten - müssten zur Abhilfe zusätzlich
spezielle Techniken (Limitertechniken analog zu den TVD/FCT-Zugängen [16],[17], lokal
adaptives Verfeinern, lokales Umschalten zwischen 1. und 2.Ordnung Upwinding) entwickelt und damit ein robustes, genaues und effizientes numerisches Verhalten erreicht
werden. Hier wollen wir versuchen mittels einer a posteriori Fehlerkontrolle die Diskretisierung anzupassen, um mit dem angesprochenen Problem umzugehen. Die Idee dabei
ist, den bereits vorhandenen Code dazu zu nutzen und so eine adaptive Diskretisierung
zu wählen, die das Upwind erster und zweiter Ordnung (möglichst optimal gewichtet)
kombiniert, in der Hoffnung, die Oszillationen abzudämpfen und gleichzeitig eine höhere
Genauigkeit als bei der reinen Methode erster Ordnung zu erhalten. Dazu muß die Strahlungstransportgleichung einmal wie gehabt gelöst werden. Beim Postprozessing-Schritt
nutzt man die schon vorhandene Implementierung, um, ohne zusätzlichen Aufwand, zu
den berechneten Koeffizienten der Approximation der Lösung in jedem Knoten vi den
Gradienten Gki zur jeweiligen Richtung θk zu bestimmen. Für den Fall von adaptierten
Gittern, wie sie im nächsten Abschnitt beschrieben werden, nimmt man den Faktor hki
der lokalen Ortsgitterweite dazu, da die Auflösung in diesem Fall große Unterschiede
aufweist und dementsprechend eine stärkere (bei großer Gitterweite) oder schwächere
Adaptivität (bei kleiner Gitterweite) erfordert. Jetzt müssen aus den so erhaltenen Daten Gki · hki Gewichte αik ∈ [0, 1] berechnet werden, die dann eine Diskretisierung liefern,
die mehr dem Upwind erster Ordnung (αik ∼ 1) oder dem Upwind zweiter Ordnung
42
(αik ∼ 0) folgt. Hat man das Gewicht nach einem geeigneten Schema gewählt, so erhält
man das lokale Upwind Verfahren dementsprechend
V ARU P W = α × U P W 1 + (1 − α) × U P W 2
Doch zunächst brauchen wir die Informationen über die Lösung. Zur Demonstration,
daß uns der Code den Gradienten der berechneten Lösung liefern kann, werden wir eine
Testkonfiguration basteln, die uns auch in Kapitel 6 von Nutzen sein wird.
Wir betrachten für die spezifische Intensität eine polynomielle Funktion, die von einem
Nullzustand aus gleichmässig auf ein konzentrisches Werteniveau der Höhe H ansteigt.
Der Bereich des Anstiegs sei ε breit und das Plateau habe den Radius R. Dabei soll die
(zusammengesetzte) Funktion ebenfalls stetig differenzierbar sein, also wird durch die
Forderungen
f (R) = H
f (R + ε) = 0
f ′ (R) = 0
f ′ (R + ε) = 0
auf demp
Intervall [R, R + εein notwendigerweise kubischer Spline (abhängig vom Abstand r = (x − x0 )2 + (y − y0 )2 vom Zentrum (x0 , y0 )) eindeutig definiert, und zwar:

1 , für r ≤ R

3H
2H
2
H − ε2 (R − r) + ε3 (R − r)3 , für r ∈ [R, R + ε]
f (r) :=

0 , für r ≥ R + ε
(17)
Je schmaler der ε-Anstieg gewählt wird, umso größer wird der hier gewünschte steile
Gradient, der im Punkt R + ε/2 im Betrag sein Maximum annimt, und zwar
f ′ (R + ε/2) =
6H
6H 6H
3H
6H
(ε/2) + 3 (ε/2)2 = −
+
=−
2
ε
ε
2ε
4ε
2ε
Eine Zusammenstellung der Maxima fuer die zwei Peaks der Höhen 1 und 0.25 und
verschiedene ε findet sich in Tabelle 7.
Der Testfall wurde für die Intensität wie folgt implementiert:
Konfiguration 6.1.1 (Lösung mit steilen

H ,

3H
2H
2
H − ε2 (R − r) + ε3 (R − r)3 ,
I(x) :=

0 ,
Gradienten) Zu gegebener Intesität
für r ≤ R
für r ∈ [R, R + ε]
für r ≥ R + ε
(18)
werden die Daten wie folgt gesetzt:
f (x) = nθ · ∇x I(x, θ) + κ(x)I(x, θ)
43
(19)
ε
0.5
0.1
0.05
0.01
0.005
0.001
max{f ′ (r)}
3
15
30
150
300
1500
Höhe H
1
1
1
1
1
1
Höhe H
0.25
0.25
0.25
0.25
0.25
0.25
max{f ′ (r)}
0.75
3.75
7.5
37.5
75
375
Tabelle 7: Parameter und maximale Gradienten für Funkion in Gl. 17
Abbildung 24:
H=1, ε=0.5
=



−6x̂
n1 ( Hε
2
+
Testfunktion:
6x̂(r−R)
)
Hε3
+
−6ŷ
n2 ( Hε
2
+
Abbildung 25:
H=1, ε=0.05
6ŷ(r−R)
)
Hε3
κ(x)H ,
+ κ(x)H ,
0 ,
Testfunktion:
für r ≤ R
für r ∈ [R, R + ε]
für r ≥ R + ε
(20)
wobei die Koordinaten (x, y) aus dem Kreisring mit Radius r ∈ [R, R + ε] auf die Koordinaten (x̂, ŷ) auf dem Kreisring mit Radius r̂ ∈ [0, ε] projiziiert werden müssen.
Abbildungen 24 bis 27 zeigen verschiedene ’Peaks’ im Querschnitt. Wir benutzen sie
zunächst, um die Berechnung des Gradienten in einem Postprozess-Schritt zu testen.
Abbildungen 28 und 29 zeigen zwei Verteilungen von errechneten Gradienten zu unterschiedlich steilen Peaks und zu zwei verschiedenen Winkeln. Man sieht deutlich die
Winkelabhängigkeit und die erreichten Werte entsprechen denen in Tabelle 7.
Die Frage ist nun, wie man aus den Werten Gki · hki ein Gewicht bekommt, das für klei-
44
Abbildung 26:
H=0.25, ε=0.5
Testfunktion:
Abbildung 27:
H=0.25, ε=0.05
Abbildung 28: Errechneter Gradient in Richtung θ = 45◦ , ε = 0.05 mit Konfig. 6.1.1
45
Testfunktion:
Abbildung 29: Errechneter Gradient in Richtung θ = 0◦ , ε = 0.01 mit Konfig. 6.1.1
Abbildung 30: Samarski Funktion für β =
1, 2, 3 (hellgrau, grau, schwarz)
Abbildung 31: Samarski Funktion mit zwei
Toleranzwerten und β = 2
ne Eingaben möglichst nahe an Null ist, für eine bestimmte Toleranz TOL genau den
Wert 0.5 annimmt, und für Werte oberhalb der Toleranzgrenze, die dann auch beliebig
groß werden können, (asymptotisch) gegen den Wert 1 tendiert. Die hier beschriebene
Funktion ist als Samarski-Funktion bekannt und hat die Form
x
f (x) =
1+x
Eine Variante dieser Funktion ist die Form
f (x) =
(T OL · x)β
1 + (T OL · x)β
(21)
Sie sorgt für eine Verteilung der Gewichte αi , die in einer kleinen Umgebung um
den Toleranzwert eher oder langsamer von 0 auf 1 übergeht. Wie genau wirkt sich der
Toleranzwert auf das errechnete Gewicht aus? Angenommen in den Tests erreichen die
Gki · hki Werte um 0.05, dann wird die Wahl der Toleranz von T OL := 20 dazu führen,
daß sich das Gewicht in diesem Bereich um de Wert 0.5 bewegt, denn man muß nur
(Gki · hki ) · T OL = 1 in die Gleichung (21) einsetzen.
Für die Berechung des Gewichtes hat man also viele Möglichkeiten. Um die Resultate aus diesem Abschnitt zu testen, werden wir noch eine nichtglatte Lösung für die
spezifische Intensität konstruieren, und zwar bedienen wir uns zu diesem Zweck des
Quellterms:
Konfiguration 6.1.2 (Unstetige Lösung) Es werde die Intensität auf einem Kreis
vorgegeben, über den Quellterm und die Parameter
f (x, θ) = 10.000
κ(x) = 10.000
für r ≤ 0.2
für r ≤ 0.2
Dann wird der Quellterm und die Absorption auf Null gesetzt, so daß die Intensität nur
über den Transport in das restliche Gebiet gelangt, also
f (x, θ) = 0 für r > 0.2
κ(x) = 0 für r > 0.2
46
So wird ein nichtstetiger Peak der Höhe 1 erzeugt, wir setzen analog noch einen weiteren
Peak der Höhe 0.25 ins Gebiet, um die Ergebnisse diversifizierter bewerten zu können.
Abbildung 34 zeigt eine Gewichtsverteilung und die errechnete Lösung mit der adaptiven
Diskretisierung, die Overshoots wurden verglichen mit Abb. 33 schon gut abgedämpft,
man sieht aber entlang des Strahls ’Zacken’, die noch nicht weggeglättet wurden. Man
sieht dabei auch, daß die Gewichte, die senkrecht auf den Peak stoßen, hohe Werte von
ungefähr 1 annehmen, in diesem Bereich also eher das Upwind 1.Ordnung zur Diskretisierung benutzt wird. Entlang des Strahls jedoch, der als eine Rampe gesehen werden kann,
die oben genau 1 bzw. 0.25 hoch ist, und die links und rechts am Rand auf den Boden mit
Höhe Null trifft. Dort wo es steil runtergeht, sind die Gewichte in der Grafik nur leicht
zu erkennen, haben also kleine Werte und sind nicht durchgehend. Eine Komponente,
die wir jetzt zusätzlich einbringen, ist der Gradient senkrecht zur Transportrichtung,
um mehr Informationen aus der errechneten Lösung zu gewinnen. Wir berechnen also
mit Hilfe der Diskretisierungsinformationen zum Winkel in Cross-Richtung (d.h. die Anzahl der Winkel muß durch 4 teilbar sein, bei äquidistanter Verteilung der Richtungen),
den Crosswind Gradienten. Mit der lokalen Gitterweite in Crossrichtung werden analog
zu (21) aus den Informationen Gewichte αi∗ berechnet, mit einer separaten Wahl der
Parameter:
∗
(T OL∗ · x)β
f (x) =
(22)
1 + (T OL∗ · x)β ∗
Die beiden Gewichte aus (21) und (22) werden dann zu einem ausschlaggebenden Gewicht zusammengefasst (z.B. wie hier über das Maximum). In Tabelle 6.1 werden Tests
mit verschiedenen Parametern für das adaptive Upwind aufgeführt. Die Über- und Unterschwinger werden immer weniger, natürlich wird das verschmieren dabei auch mehr,
die optimale Balance zu finden ist dabei nicht einfach. Abbildung 35 zeigt eine Gewichtsverteilung und die errechnete Lösung, wobei beide Gradienten einbezogen wurden. Man
sieht, daß die Zacken entlang des Strahls schon mehr abgedämpft wurden.
Zusammenfassend ist zu bemerken, daß wir mit der beschriebenen Methode keine optimale Diskretisierung für alle möglichen Konfigurationen finden können. Es hat sich
gezeigt, daß, je nach Aussehen des Gitters, inkl. der Wahrscheinlichkeit die Gitterpunkte
zu treffen (siehe z.B. Abb. 32), sowie abhängig von der Steilheit und Höhe der Unstetigkeit, die Parameterwahl mehr oder weniger die erhofften Ergebnisse liefert. Es gibt
ein trade-off zwischen hoher Genauigkeit und Monotonie, das nicht einfach in den Griff
zu kriegen ist, umso mehr da es für die Einstellungen in Gleichung (21) eine unendliche
Anzahl von Möglichkeiten gibt. Zum Anderen benutzt man beim Vorgehen in Richtung
θ, für die Berechnung des Crosswind-Gradienten die Upwind Diskretisierung der Richtung θ+90◦ . Wegen der Einseitigkeit des Diffenrenzenquotienten kann dabei Information
verlorengehen, es wäre angebracht für die Crosswind Berechung die Winkel θ + 90◦ und
θ − 90◦ zu benutzen. Ein weiterer Aspekt ist, daß wir die adaptive Diskretisierung nach
einem restart, auf Basis einer berechneten Lösung, erhalten. Im Falle der Kopplung
der Richtungen durch den Integralterm wird ein iteratives Verfahren mit vielen, u.U.
sehr vielen Iterationen bis zur Konvergenz (siehe Kapitel 7), in Gang gesetzt. Es wäre
evtl. effizienter, nicht erst bis zum Ende des Iterationsprozesses zu warten, sondern den
47
Abbildung 32: (fast) Referenzlösung für Konf. 6.1.2, Upwind 1. (links) und 2. Ordnung
(rechts) auf ungestörtem Gitter
Neustart mit der adaptiven Diskretisierung nach wenigen Schritten vorzunehmen, wenn
man schon Informationen über die oszillierenden Bereiche der Lösung gesammelt hat. So
wären instabile Konvergenzprozesse, die teilweise gar nicht die gesetzten Fehlerschranken
erreichen können, zu vermeiden.
Referenz
UPW 1
UPW 1
UPW 1
UPW 1
UPW 2
UPW 2
UPW 2
UPW 2
θ
0◦
36◦
0◦
36◦
0◦
36◦
0◦
36◦
Störung
0%
0%
15%
15%
0%
0%
15%
15%
1/T OL
−
−
−
−
−
−
−
−
1/T OL∗
−
−
−
−
−
−
−
−
β
−
−
−
−
−
−
−
−
β∗
−
−
−
−
−
−
−
−
Overshoot
0, 0000
0, 0000
0, 0000
0, 0000
0, 0030
0, 0880
0, 1200
0, 0800
Undershoot
0, 0000
0, 0000
0, 0000
0, 0000
0, 0000
−0, 4160
−0, 5700
−0, 6400
Tabelle 8: Over- und Undershoots bei reiner Diskretisierung 1. und 2. Ordnung
6.2 Adaptive Gitter
In den physikalischen Anwendungen können evtl. Konfigurationen vorkommen, die zwar
nicht unstetig sind, aber bei denen große Veränderungen auf sehr begrenztem Raum
stattfinden. Dies bedeutet also steile Gradienten in der Lösung der Strahlungstransportgleichung. Es kann nicht erwartet werden, daß die numerische Behandlung eines solchen
Problems, bei der jeder Bereich des Ortsraumes mit gleicher Aufmerksamkeit betrachtet
wird, auch gleichbleibend gute Ergebnisse liefert. Eine feinere Auflösung des Gitters in
48
Abbildung 33: typisches Verhalten für Konf. 6.1.2, Upwind 1. (links) und 2. Ordnung
(rechts) auf gestörtem Gitter
Abbildung 34: α-Gewichtsverteilung unter Verwendung von Upwind Gradienten, sowie
resultierende Lösung (Param. Wahl Nr. 21)
49
Abbildung 35: α-Gewichtsverteilung unter Verwendung von Upwind+Crosswind Gradienten, sowie resultierende Lösung (Param. Wahl Nr. 26)
Adaptiv
Nr. 1
Nr. 2
Nr. 3
Nr. 4
Nr. 5
Nr. 6
Nr. 7
Nr. 8
Nr. 9
Nr. 10
Nr. 11
Nr. 12
Nr. 13
Nr. 14
Nr. 15
Nr. 16
Nr. 17
Nr. 18
Nr. 19
Nr. 20
θ
0◦
0◦
0◦
0◦
0◦
0◦
0◦
0◦
0◦
0◦
36◦
36◦
36◦
36◦
36◦
36◦
36◦
36◦
36◦
36◦
Störung
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
0%
1/T OL
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
1/T OL∗
∞
∞
1
1
0, 1
0, 1
0, 05
0, 05
0, 01
0, 01
∞
∞
1
1
0, 1
0, 1
0, 05
0, 05
0, 01
0, 01
β
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
β∗
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
Overshoot
0, 0025
−−
0, 0025
0, 0025
0, 0025
0, 0025
0, 0025
0, 0025
0, 0025
0, 0025
0, 0280
−−
0, 0300
0, 0280
0, 0184
0, 0285
0, 0115
0, 0210
0, 0050
0, 0056
Undershoot
0, 0000
−−
0, 0000
0, 0000
0, 0000
0, 0000
0, 0000
0, 0000
0, 0000
0, 0000
−0, 0420
−−
−0, 0420
−0, 0420
−0, 0430
−0, 0320
−0, 0367
−0, 0196
−0, 0083
−0, 0052
Tabelle 9: Verschiedene Parameter für adaptives Upwind und resultierende Over- und
Undershoots
50
Adaptiv
Nr. 21
Nr. 22
Nr. 23
Nr. 24
Nr. 25
Nr. 26
Nr. 27
Nr. 28
Nr. 29
Nr. 30
Nr. 31
Nr. 32
Nr. 33
Nr. 34
Nr. 35
Nr. 36
Nr. 37
Nr. 38
Nr. 39
Nr. 40
θ
0◦
0◦
0◦
0◦
0◦
0◦
0◦
0◦
0◦
0◦
36◦
36◦
36◦
36◦
36◦
36◦
36◦
36◦
36◦
36◦
Störung
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
15%
1/T OL
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
0, 05
1/T OL∗
∞
∞
1
1
0, 1
0, 1
0, 05
0, 05
0, 01
0, 01
∞
∞
1
1
0, 1
0, 1
0, 05
0, 05
0, 01
0, 01
β
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
β∗
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
Overshoot
0, 0347
−−
0, 0350
0, 0348
0, 0385
0, 0400
0, 0353
0, 0297
0, 0091
0, 0049
0, 0266
−−
0, 0262
0, 0264
0, 0159
0, 0198
0, 0113
0, 0144
0, 0061
0, 0050
Undershoot
−0, 0450
−−
−0, 0450
−0, 0450
−0, 0440
−0, 0330
−0, 0440
−0, 0210
−0, 0098
−0, 0043
−0, 0430
−−
−0, 0430
−0, 0430
−0, 0440
−0, 0325
−0, 0377
−0, 0215
−0, 0132
−0, 0153
Tabelle 10: Verschiedene Parameter für adaptives Upwind und resultierende Over- und
Undershoots
den besonders aktiven Bereichen ist unumgänglich, falls man nicht eine explosionsartige
Zunahme der Problemgröße, bei einer Verfeinerung eines uniformen Gitters über das
ganze Gebiet hinweg, in Kauf nehmen will.
In diesen Tests nehmen wir die glatten Peaks aus Konf. 6.1.1 mit unterschiedlichem
Steilheitsgrad ε und Höhe H = 1. Der Radius wird dabei immer so angepasst, daß der
Übergang von 0 auf 1 im adaptierten Kreisring der Gitter in Abbildungen 36 bis 38
liegt. Das uniforme Gitter hat dabei natürlich gar keine Anpassung an den Peak. Die
drei Grobgitter haben unterschiedlich viele Elemente, wir wählen die Verfeinerungsstufen
demnach so, daß wir immer vergleichbare Werte für die N EQ bekommen (siehe Tabelle
11).
Bewertung der Ergebnisse:
Die Rechnungen erfolgten mit 8 Winkeln. Tabellen 12 bis 14 zeigen die Fehlerraten für
die vier unterschiedlich steilen Peaks, auf den drei beschriebenen Gittern. Stellvertretend
für die zwei Winkel soll hier Tabelle 14 mit der mittleren Intensität J betrachtet werden.
Schaut man auf die Ergebnisse für den groben Peak (ε = 0.05) in der ersten Zeile, sieht
man, daß bei vergleichbarer Anzahl Gleichungen auf allen drei Gittern vergleichbare Fehlerraten erzielt wurden. Das moderat bzw. fein adaptierte Gitter brachte keinen Vorteil
gegenüber dem uniformen Gitter mit sich, auch die Asymptotik zeigt durchgehend Fak-
51
Abbildung 36: Grobgitter: uniformes Gitter
Abbildung 37: Grobgitter: moderat adaptiertes Gitter
tor 2 beim Upwind 1. sowie Faktor 4 beim Upwind 2. Ordnung. Die Asymptotik bzw. der
Faktor des adaptiven Upwinds liegt irgendwo dazwischen. Schaut man die Ergebnisse
für das uniforme Gitter und steiler werdende Peaks an (also die erste Spalte), so werden
die Fehlerraten schlechter, und die Asymptotik geht spätestens für den steilsten Peak
(ε = 0.001) verloren. Doch schon der Wechsel vom uniformen auf das moderat adaptierte Gitter bringt den größten Gewinn, konkret ist das eine Verbesserung der Fehlerraten
um bis zu zwei Zehnerpotenzen. Auch die typische Asymptotik der Diskretisierungen
ist wieder hergestellt. Nur das adaptive Upwind ist für den steilsten Peak nicht so gut,
das zeigt auch daß eine allumfassende Wahl der Parameter, die auf jeder Konfiguration
gleich gut funktioniert, nicht so einfach ist. Der zweite Wechsel wiederum, vom moderat
zum stark adaptierten Gitter, bringt nicht mehr so viel Verbesserung mit sich, bei den
ersten beiden (schwächeren) Peaks sieht man sogar eine leichte Verschlechterung. Die
letzten beiden (steileren) Peaks werden jedoch wieder etwas besser approximiert, was
darauf hindeutet, daß extreme adaptive Gitter auch für extreme Konfigurationen verwendet werden sollten. Insgesamt ist jedoch deutlich ein Gewinn der adaptiven Gitter
gegenüber dem uniformen Gitter festzustellen. Dieses müsste noch einige Male verfeinert
werden, um die guten Fehlerraten der adaptierten Gitter zu erreichen.
Level Nr.
1
2
3
uniform
529.416
2.107.400
8.409.096
moderat
adaptiv
311.944
335.080
1.242.376 1.339.080
4.958.728 5.353.864
Tabelle 11: Verfeinerungsstufen und Anzahl Gleichungen für Gittervergleich
52
Abbildung 38: Grobgitter: fein adaptiertes Gitter und Vergrößerung
53
Tabelle 12: Rechnung für 0◦ Winkel, ε = 0.05, ε = 0.01, ε = 0.005, ε = 0.001 (von oben nach unten)
UPW1
1.
2.
3.
1.
2.
3.
1.
2.
3.
1.
2.
3.
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
10−2
54
4, 27 ·
2, 13 · 10−2
1, 06 · 10−2
1, 15 · 10−1
5, 89 · 10−2
2, 77 · 10−2
2, 64 · 10−1
1, 06 · 10−1
5, 48 · 10−2
3, 42 · 100
2, 23 · 100
1, 27 · 100
uniform
UPW2
10−2
2, 12 ·
3, 89 · 10−3
1, 09 · 10−3
3, 17 · 10−1
4, 86 · 10−2
2, 07 · 10−2
2, 14 · 100
1, 38 · 10−1
6, 49 · 10−2
5, 37 · 100
3, 20 · 100
1, 92 · 100
ADAP
10−2
4, 76 ·
1, 37 · 10−2
3, 42 · 10−3
3, 74 · 10−1
9, 27 · 10−2
3, 54 · 10−2
2, 19 · 100
2, 06 · 10−1
9, 13 · 10−2
5, 37 · 100
3, 21 · 100
1, 92 · 100
UPW1
10−1
1, 47 ·
7, 30 · 10−2
3, 66 · 10−2
3, 81 · 10−2
2, 06 · 10−2
1, 11 · 10−2
4, 34 · 10−2
2, 36 · 10−2
1, 28 · 10−2
8, 46 · 10−2
4, 16 · 10−2
2, 21 · 10−2
moderat
UPW2
10−2
1, 09 ·
3, 24 · 10−3
9, 40 · 10−4
2, 33 · 10−2
3, 84 · 10−3
5, 17 · 10−4
5, 65 · 10−2
7, 73 · 10−3
1, 18 · 10−3
3, 55 · 10−1
9, 80 · 10−2
1, 28 · 10−2
ADAP
10−1
1, 15 ·
3, 77 · 10−2
1, 06 · 10−2
3, 53 · 10−2
1, 07 · 10−2
2, 88 · 10−3
9, 11 · 10−2
3, 43 · 10−2
9, 85 · 10−3
3, 96 · 10−1
1, 71 · 10−1
8, 72 · 10−2
adaptiv
UPW2
UPW1
10−1
2, 10 ·
1, 06 · 10−1
5, 41 · 10−2
1, 24 · 10−1
6, 46 · 10−2
3, 35 · 10−2
2, 46 · 10−2
1, 32 · 10−2
7, 02 · 10−3
6, 56 · 10−2
2, 09 · 10−2
8, 62 · 10−3
10−2
4, 61 ·
8, 49 · 10−3
1, 75 · 10−3
8, 76 · 10−2
3, 00 · 10−3
7, 06 · 10−4
3, 88 · 10−2
2, 71 · 10−3
6, 89 · 10−4
4, 73 · 10−1
4, 88 · 10−2
1, 25 · 10−2
ADAP
1, 73 · 10−1
6, 57 · 10−2
2, 30 · 10−2
8, 54 · 10−2
3, 37 · 10−2
9, 85 · 10−3
4, 54 · 10−2
6, 30 · 10−3
1, 88 · 10−3
2, 66 · 10−1
7, 60 · 10−2
1, 38 · 10−2
Tabelle 13: Rechnung für 135◦ Winkel, ε = 0.05, ε = 0.01, ε = 0.005, ε = 0.001 (von oben nach unten)
UPW1
1.
2.
3.
1.
2.
3.
1.
2.
3.
1.
2.
3.
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
10−2
8, 64 ·
4, 80 · 10−2
2, 58 · 10−2
1, 78 · 10−1
1, 11 · 10−1
6, 82 · 10−2
2, 64 · 10−1
1, 37 · 10−1
8, 44 · 10−2
9, 70 · 10−1
6, 50 · 10−1
2, 14 · 10−1
uniform
UPW2
10−2
2, 06 ·
5, 73 · 10−3
1, 49 · 10−3
2, 20 · 10−1
6, 68 · 10−2
1, 87 · 10−2
9, 36 · 10−1
2, 47 · 10−1
5, 47 · 10−2
2, 51 · 100
1, 79 · 100
1, 18 · 100
ADAP
10−2
4, 50 ·
1, 36 · 10−2
3, 46 · 10−3
2, 24 · 10−1
1, 26 · 10−1
4, 76 · 10−2
4, 74 · 10−1
1, 97 · 10−1
1, 25 · 10−1
1, 39 · 100
9, 73 · 10−1
5, 62 · 10−1
UPW1
10−2
8, 77 ·
4, 65 · 10−2
2, 43 · 10−2
3, 52 · 10−2
1, 86 · 10−2
9, 81 · 10−3
4, 33 · 10−2
2, 32 · 10−2
1, 24 · 10−2
8, 34 · 10−2
4, 38 · 10−2
2, 45 · 10−2
moderat
UPW2
10−2
1, 12 ·
3, 37 · 10−3
9, 70 · 10−4
3, 44 · 10−2
2, 45 · 10−3
4, 87 · 10−4
7, 64 · 10−2
5, 53 · 10−3
1, 21 · 10−3
4, 26 · 10−1
1, 11 · 10−1
1, 50 · 10−2
ADAP
10−2
4, 94 ·
1, 40 · 10−2
3, 77 · 10−3
2, 33 · 10−2
7, 49 · 10−3
2, 31 · 10−3
6, 04 · 10−2
2, 02 · 10−2
6, 60 · 10−3
3, 48 · 10−1
1, 11 · 10−1
6, 12 · 10−2
UPW1
10−1
1, 20 ·
6, 21 · 10−2
3, 15 · 10−2
8, 74 · 10−2
4, 46 · 10−2
2, 28 · 10−2
2, 14 · 10−2
1, 17 · 10−2
6, 48 · 10−3
6, 51 · 10−2
2, 06 · 10−2
8, 40 · 10−3
adaptiv
UPW2
10−2
1, 92 ·
4, 05 · 10−3
1, 06 · 10−3
2, 23 · 10−2
2, 45 · 10−3
6, 37 · 10−4
1, 99 · 10−2
2, 54 · 10−3
6, 58 · 10−4
3, 80 · 10−1
3, 90 · 10−2
9, 79 · 10−3
ADAP
7, 19 · 10−2
2, 34 · 10−2
6, 89 · 10−3
6, 68 · 10−2
2, 20 · 10−2
6, 43 · 10−3
1, 93 · 10−2
4, 65 · 10−3
1, 44 · 10−3
1, 37 · 10−1
4, 03 · 10−2
9, 13 · 10−3
Tabelle 14: Rechnung für mittlere Intensität J, ε = 0.05, ε = 0.01, ε = 0.005, ε = 0.001 (von oben nach unten)
UPW1
55
1.
2.
3.
1.
2.
3.
1.
2.
3.
1.
2.
3.
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
Lev
10−2
2, 09 ·
1, 12 · 10−2
6, 03 · 10−3
5, 80 · 10−2
2, 92 · 10−2
1, 65 · 10−2
1, 04 · 10−1
4, 53 · 10−2
2, 28 · 10−2
6, 93 · 10−1
4, 34 · 10−1
1, 91 · 10−1
uniform
UPW2
10−3
7, 74 ·
2, 04 · 10−3
5, 33 · 10−4
7, 81 · 10−2
1, 97 · 10−2
6, 65 · 10−3
3, 80 · 10−1
6, 33 · 10−2
1, 78 · 10−2
1, 10 · 100
7, 01 · 10−1
3, 82 · 10−1
ADAP
10−2
1, 16 ·
3, 38 · 10−3
7, 13 · 10−4
7, 50 · 10−2
2, 90 · 10−2
1, 27 · 10−2
3, 64 · 10−1
5, 81 · 10−2
3, 00 · 10−2
1, 02 · 100
6, 34 · 10−1
3, 35 · 10−1
UPW1
10−2
5, 58 ·
2, 84 · 10−2
1, 44 · 10−2
1, 26 · 10−2
6, 56 · 10−3
3, 45 · 10−3
1, 34 · 10−2
7, 26 · 10−3
3, 82 · 10−3
4, 01 · 10−2
1, 66 · 10−2
7, 15 · 10−3
moderat
UPW2
10−3
3, 97 ·
1, 14 · 10−3
3, 07 · 10−4
6, 53 · 10−3
9, 17 · 10−4
1, 90 · 10−4
1, 54 · 10−2
2, 13 · 10−3
5, 07 · 10−4
1, 38 · 10−1
3, 24 · 10−2
5, 43 · 10−3
ADAP
10−2
2, 82 ·
9, 10 · 10−3
2, 57 · 10−3
9, 41 · 10−3
2, 87 · 10−3
8, 39 · 10−4
2, 39 · 10−2
8, 12 · 10−3
2, 45 · 10−3
1, 77 · 10−1
4, 26 · 10−2
2, 70 · 10−2
UPW1
10−2
8, 02 ·
3, 99 · 10−2
2, 01 · 10−2
4, 99 · 10−2
2, 50 · 10−2
1, 26 · 10−2
7, 08 · 10−3
3, 89 · 10−3
2, 16 · 10−3
5, 93 · 10−2
1, 47 · 10−2
3, 82 · 10−3
adaptiv
UPW2
10−2
1, 03 ·
2, 25 · 10−3
5, 07 · 10−4
1, 52 · 10−2
1, 21 · 10−3
3, 13 · 10−4
8, 99 · 10−3
1, 15 · 10−3
2, 88 · 10−4
1, 17 · 10−1
1, 84 · 10−2
4, 36 · 10−3
ADAP
5, 27 · 10−2
1, 74 · 10−2
5, 38 · 10−3
3, 70 · 10−2
1, 20 · 10−2
3, 46 · 10−3
8, 43 · 10−3
1, 65 · 10−3
5, 02 · 10−4
1, 11 · 10−1
1, 86 · 10−2
3, 30 · 10−3
7 Weiterführende Tests
7.1 Konvergenzverhalten abhängig von Winkelzahl, Diskretisierung
und Strukturiertheit des Gitters
Im letzten Abschnitt soll endlich die Kopplung durch das Integral hinzukommen, zur
Lösung des LGS werden also iterative Methoden hinzugezogen. Hier wird wie schon
einmal eine unstetige Lösung für die spezifische Intensität vorgeben, diesmal kommt
aber noch die Kopplung durch die Streuung bzw. den Integralterm hinzu:
Konfiguration 7.1.1 (Intensität im streuenden Gebiet) Es werde die Intensität
auf einem Radius vorgegeben, über den Quellterm und die Parameter
f (x, θ) = 10.000 für r ≤ 0.2
κ(x) = 10.000 für r ≤ 0.2
λ(x) = 0
für r ≤ 0.2
Ausserhalb des Radius wird der Quellterm auf Null gesetzt, so daß die Intensität über den
Transport in das restliche Gebiet gelangt, wo sie darüber hinaus gestreut und absorbiert
wird, also
f (x, θ) = 0
κ(x) = 10n
λ(x) = α · κ(x)
für r > 0.2
für r > 0.2
für r > 0.2
Das Gitter für die Rechnungen ist die ungestörte und gestörte Variante des kartesischen Gitters aus Abb. 10. Wir Rechnen mit 8 und 32 Winkeln und mit den drei vorgestellten Diskretisierungen. Außerdem wurde jeweils ohne und mit Vorkonditionierung
gelöst, als Vorkonditionierer wurde (siehe Kapitel 3.4) die Diagonale der Systemmatrix
benutzt. Wir geben in den Tabellen die Anzahl der Iterationen aus, beziehungsweise die
Konvergenzraten in den Grafiken.
Bevor die Resultate betrachtet werden, sollen hier zunächst die Stopp-Kriterien vorgestellt werden, da sie stark die Geschwindigkeit unserer Verfahren beeinflussen. Hier ist
es eine Kombination aus drei unterschiedlich gewichteten Bedingungen: Das relative Residuum muß klein genug werden, ebenso wie das Maximum der relativen Änderungen
der (Rand-) Werte
(i)
(i)
kAh Jh − Fh kL2
≤ ǫ1
kFh kL2
,
(i−1)
kJh,bd − Jh,bd k1
(i)
kJh,bd k1
(i)
≤ ǫ2
,
(i−1)
kJh − Jh
k∞
(i)
kJh,bd k1 /#BDV
≤ ǫ3
(23)
(Die Randwerte gehen über das arithmetischen Mittel im Betrag ein)
Sind diese drei Kriterien zusammen erfüllt, oder eine strengere Schranke für das Maximum relativer Änderungen unterschritten, also
(i)
(i−1)
kJh − Jh
(i)
kJh k∞
56
k∞
≤ ǫ0
(24)
wird die Iteration gestoppt. Hier ist das der Fall für die Schranken ǫ1 = 10−9 , ǫ2 =
10−7 , ǫ3 = 10−7 , ǫ0 = 10−13 .
Für die Resultate siehe die Tabellen und Abbildungen (dort beschreibt der Zusatz ’C’
die vorkonditionierte Variante des iterativen Lösers) im Anhang 1. Die resultierenden
Konvergenzraten zeigen zunächst eine Unabhängigkeit von der Anzahl der Winkel sowie der stochastischen Störung des Gitters. Die Rate hängt vom Verhältnis α = λ/κ
ab, sowie davon welche Größenordnung der Unterschied zwischen Absorption und Intensität aufweist. D.h. der Faktor, um den das κ den Transportsteil übersteigt, den wir
hier und in den Abbildungen 39 bis 41 in Zehnerpotenzen 10l angeben (l ∈ {0, . . . , 5}),
spielt bei der Konvergenz eine entscheidende Rolle. Das (der λ-Iteration entsprechende)
Richardson Schema zeigt, mit dem l, kontinuierlich ansteigende Iterationszahlen, eine leichte Verbesserung wird durch die Vorkonditionierung erreicht. Das CG-Verfahren
auf das unsymmetrische LGS anzuwenden, ergab ein unbefriedigendes Verhalten, mit
Konvergenzraten die zu 1 tendieren. Der Konvergenzprozess wurde nach mehr als 3000
Iterationen abgebrochen, da er auch kein monotones Konvergenzverhalten aufwies. (In
den Tabellen bedeutet ’n’, daß die Fehlerschranken nach 3000 Iterationen nicht erreicht
wurden). Die in Kapitel 3.5 beschriebene Modifikation müßte Abhilfe schaffen, jedoch
dürfte das nicht nötig sein, wenn wir uns die anderen Ergebnisse anschauen. Denn in
allen Tests erwies sich die BiCG-Stab Variante der Krylov-Raum Verfahren als erste
Wahl. Es wurden durchgehend gute Konvergenzraten ohne jegliche Einbrüche erreicht,
die vorkonditionierte Variante ergab ebenfalls noch eine kleine Verbesserung.Auch hier
gab es einen Anstieg der Iteratinen mit Zunahme von l, sie fiel jedoch geringer als beim
Richardson-Schema aus. Auch für die drei Arten der Diskretisierung zeigte das BiCGStab Verfahren gleichbleibend gute Ergebnisse. Es zeigt sich eine gewisse Streuung der
Iterationszahlen, im Großen und Ganzen kann man jedoch von Unabhängigkeit von Diskretisierung und Gitterweite sprechen.
Für weitere Ergebnisse, die die Aussagen weiter untermauern, siehe [4].
7.2 Konvergenzverhalten auf adaptiven Gittern
In diesem Kapitel soll untersucht werden, wie die Löser auf den in Kapitel 6.2 beschreibenen, adaptierten Gittern ablaufen: Dort treten große Unterschiede der Gitterlängen
in den betrachteten Bereichen auf. Dazu wird die ’Quelle des Sterns’ aus Konfiguration
7.1.1 in das Zentrum (x0 , y0 ) = (0.2, 0.2) versetzt, um der Gestalt der adaptiven Gitter
zu entsprechen. Im zweiten Teil der Tests wurde also auf drei (unterschiedlich intensiv)
adaptierten Gitterkonfigurationen gerechnet. Das Richardson Schema, auf dem uniformen Gitter noch befriedigend, zeigte für das Upwind zweiter Ordnung Instabilitäten, die
teilweise durch die adaptive Upwind Diskretisierung behoben werden konnten. Hier hat
jedoch wiederum das BiCG-Stab Verfahren die besten Ergebnisse geliefert und festigt
damit die Position als black-box Löser.
Um die Laufzeit bewerten zu können, genauer gesagt, ob unsere Upwind Diskretisierung
die Linearität der arithmetischen Operationen in der Anzahl der Gitterpunkte auch beim
Iterationsprozess beibehält, kombinieren wir die Tabellen 29 und 30. Wir betrachten selektiv die Ergebnisse für κ = 100, und Teilen die erreichte Laufzeit durch die Anzahl
57
der Iterationen (bei der adaptiven Diskretisierung wurde die Laufzeit nach dem Restart
gemessen). In Tabelle 31 sehen wir dabei, daß wir ein eindeutiges lineares Verhalten
erreicht haben. Bei Verfeinerung des Gitters und Anwachsen der N EQ um den Faktor
4, steigt auch die Laufzeit pro Iteration um den Faktor 4 bis 5 an (siehe auch Kapitel
5.1). Es ist noch zu bemerken, daß die adaptive Upwind Diskretisierung ca. 25% mehr
Zeit gegenüber dem Upwind 2. Ordnung benötigt. Dabei muß man aber bedenken, daß
das adaptive Upwind zwei Diskretisierungsarten gewichtet miteinander kombiniert, und
dafür mehr arithmetische Operationen benötigt.
58
8 Zusammenfassung und Ausblick
Es wurde ein neuartiger Ansatz zur Diskretisierung und Lösung der RTE vorgestellt,
mit Hinblick darauf, die verwendeten Methoden auch auf weitere Problemstellungen
anwenden zu können, die partielle Differentialgleichungen enthalten und eine nichtlineare Kopplung der spezifischen Lösungen aufweisen. Zur Ortsdiskretisierung wurde
ein konstante Charakteristiken Upwinding erster bzw. zweiter Ordnung auf allgemeinen unstrukturierten Gittern vorgestellt. Die Variante zweiter Ordnung ergab bei den
verschiedenen Tests große Genauigkeitsvorteile, die sich schnell in den Fehleranalysen
herausstellten. IN Verbindung damit führte die Implementierung einer speziellen Nummerierungstechnik zu unteren Dreiecksmatrizen für die auftretenden Transportprobleme
und ermöglichte es damit, diese direkt in O(N EQ) Aufwand zu lösen! Dieses stellt, im
Hinblick auf iterative Verfahren zur Lösung von Integro-Differentialgleichungen, einen
enormen Effizienzgewinn dar.
Es wurde danach eine Möglichkeit vorgestellt, wie mit Hilfe einer a posteriori Diskretisierung vom Typ eines samarski-upwinding unter Verwendung der vorhandenen Diskretisierunsstrukturen, also ohne viel Zusatzaufwand, evtl. auftretende Oszillationen
gedämpft werden können. Das Verfahren erwies sich darüber hinaus stabil auf speziell adaptierten Gittern mit großen Unterschieden in den Gitternweiten zwischen den
verfeinerten und nicht verfeinerten Bereichen (im Test bis zu Faktor 500). Als iterativer
Löser erwies sich das in Physikerkreisen übliche (vorkonditionierte) Richardson Schema
als sehr unzureichend, die Konvergenzrate ging bei entsprehchenden Parametern früh gegen 1 (mit einem leichten Vorteil des vorkonditioniertem Schemas). Das CG Verfahren,
das eigentlich auf symmetrische Probleme ausgelegt ist, ergab kein zufriedenstellendes
Konvergenzverhalten, mit einem entsprechenden Preprozessing lassen sich etwas bessere
Ergebnisse erwarten. Dagegen erwies sich das BiCG-Stab Verfahren als ein Kandidat für
einen black-box Löser, es lieferte bei allen Konfigurationen und auf allen Gittern durchweg sehr gute Ergebnisse.
Die hier vorgestellten Methoden stellen also einen effizienten und leistungsstarken Ansatz
zur Diskretisierung und Lösung der RTE dar. Weitere Ansätze wurden in den Dissertationen von Dedner und Meinköhn ([33], [34]) ebenfalls erfolgreich auf diesem Gebiet
eingesetzt. Von diesem Startpunkt aus ist es erstrebenswert, den Weg in das verwandte
Gebiet der Lattice Boltzmann Methoden zu suchen, um dort die effizienten Techniken aus der Numerik für partielle Differentialgleichungen gewinnbringend einzusetzen.
Als Zeitdiskretisierungen sollten implizite Verfahren untersucht werden, die auch in direkten stationären Zugängen verwendet werden könnten. Die resultierenden nichtlinearen, gekoppelten, hochdimensionalen Systeme könnten mit Quasi-Newton Methoden und
Operator-Splitting Techniken behandelt werden, während die linearen Hilfsprobleme mit
den in dieser Arbeit beschriebenen Ansätzen hocheffizient gelöst werden können. Dazu
gehören die speziell vorkonditionierten Krylov-Raum Methoden, doch könnte aber auch
auf hierarchische Mehrgitterverfahren im Falle von gitterabhängigen Konvergenzraten
zurückgegriffen werden.
59
9 Anhang 1
60
Tabelle 15: Rechnung auf ungestörtem kartesischen Gitter, 8 Winkel: Richardson-Schema, mit bzw. ohne Vorkonditionierung
(oben bzw. unten)
61
κ=1
λ = 0.5
NEQ
upw1 upw2
33800
17
17
133128
17
17
528329
17
17
33800
17
17
133128
17
17
528329
17
17
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2
33800
1947 2036
133128 1997 2034
528329 2018 2033
33800
514
510
133128
822
788
528329 1165 1112
κ=1
κ=1
λ = 0.9
λ = 0.99
adp upw1 upw2 adp upw1 upw2
17
28
28
28
32
32
16
28
29
27
32
32
17
28
29
29
32
32
17
27
27
27
30
30
16
28
28
26
31
31
17
28
28
28
32
32
adp
2014
1795
2029
492
671
1100
κ = 1000
λ = 990
upw1 upw2
2056 2059
2060 2061
2064 2064
87
86
154
150
273
261
adp
2026
2001
2038
79
139
248
adp
32
30
32
30
29
32
κ = 10
λ = 9.9
upw1 upw2
373
404
394
414
404
416
286
298
341
351
375
381
κ = 10000
λ = 9900
upw1 upw2 adp
2075 2081 2066
2073 2075 1976
2075 2073 2051
19
20
18
27
29
27
44
44
40
adp
383
378
413
274
318
377
Tabelle 16: Rechnung auf ungestörtem kartesischen Gitter, 8 Winkel: CG-Verfahren, mit bzw. ohne Vorkonditionierung (oben
bzw. unten)
62
NEQ
33800
133128
528329
33800
133128
528329
κ=1
κ=1
κ=1
λ = 0.5
λ = 0.9
λ = 0.99
upw1 upw2 adp upw1 upw2 adp upw1 upw2
10
10
10
12
17
17
13
22
9
10
30
12
12
n
12
13
9
9
10
12
11
13
12
12
10
12
11
12
n
n
13
n
9
10
30
12
21
n
13
81
9
10
11
12
14
15
12
18
adp
22
n
13
n
n
19
κ = 10
λ = 9.9
upw1 upw2 adp
39
48
43
41
42
n
41
40
42
38
175 142
39
62
n
41
46
49
κ = 100
λ = 99
upw1 upw2 adp
113
n
n
111
n
n
117
159 152
81
n
n
94
n
n
109
n
n
Tabelle 17: Rechnung auf ungestörtem kartesischen Gitter, 8 Winkel: BiCG-Stab Löser, mit bzw. ohne Vorkonditionierung
(oben bzw. unten)
63
κ=1
κ=1
λ = 0.5
λ = 0.9
NEQ
upw1 upw2 adp upw1 upw2
33800
5
6
5
6
6
133128
5
5
6
6
7
528329
5
5
5
6
6
33800
5
6
6
6
7
133128
5
6
5
6
7
528329
5
5
5
6
7
Fortsetzung
κ = 100
κ = 1000
λ = 99
λ = 990
NEQ
upw1 upw2 adp upw1 upw2
33800
63
81
68
35
59
133128
74
76
69
47
63
528329
71
79
77
67
64
33800
49
47
53
23
21
133128
74
57
63
33
32
528329
75
69
67
44
36
κ=1
λ = 0.99
adp upw1 upw2 adp
7
7
7
7
7
7
7
7
6
7
7
7
7
7
7
7
6
7
7
7
7
6
7
7
κ = 10
λ = 9.9
upw1 upw2 adp
21
22
21
23
23
22
24
24
24
21
20
19
23
22
22
24
24
23
κ = 10000
λ = 9900
adp upw1 upw2
56
11
19
32
15
21
67
25
26
22
8
9
27
11
11
37
15
15
κ = 100000
λ = 99000
upw1 upw2 adp
7
7
7
8
8
14
10
12
12
5
5
5
5
6
6
6
7
7
adp
17
37
30
9
11
16
Tabelle 18: Rechnung auf gestörtem kartesischen Gitter, 8 Winkel: Richardson-Schema, mit bzw. ohne Vorkonditionierung
(oben bzw. unten)
64
κ=1
λ = 0.5
NEQ
upw1 upw2
33800
17
17
133128
17
17
528329
17
17
33800
17
17
133128
17
17
528329
17
17
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2
33800
1944 2035
133128 1996 2034
528329 2017 2033
33800
528
611
133128
839
922
528329 1183 1260
κ=1
κ=1
λ = 0.9
λ = 0.99
adp upw1 upw2 adp upw1 upw2
17
28
29
28
32
32
17
28
29
28
32
32
17
28
29
28
32
32
17
27
28
27
30
31
17
28
28
28
31
32
17
28
28
28
32
32
adp
2015
1934
2030
589
872
1245
κ = 1000
λ = 990
upw1 upw2
2055 2066
2060 2070
2064 2072
90
139
160
186
282
324
adp
2021
2025
2039
127
179
305
adp
32
32
32
31
31
32
κ = 10
λ = 9.9
upw1 upw2
371
414
392
417
403
415
287
331
341
372
375
392
κ = 10000
λ = 9900
upw1 upw2 adp
2074 2090 2068
2076 2097 2144
2076 2085 2051
19
26
24
29
46
40
45
82
68
adp
394
402
414
305
355
389
Tabelle 19: Rechnung auf gestörtem kartesischen Gitter, 8 Winkel: CG-Verfahren, mit bzw. ohne Vorkonditionierung (oben
bzw. unten)
65
NEQ
33800
133128
528329
33800
133128
528329
κ=1
κ=1
κ=1
λ = 0.5
λ = 0.9
λ = 0.99
upw1 upw2 adp upw1 upw2 adp upw1 upw2
10
10
10
13
13
12
13
13
10
10
11
13
13
13
13
13
10
10
11
12
12
13
13
13
10
10
10
13
13
12
13
13
10
10
10
13
13
13
13
13
9
10
10
12
12
13
13
13
adp
12
14
13
13
14
13
κ = 10
λ = 9.9
upw1 upw2 adp
44
85
49
44
60
73
44
46
45
42
n
n
43
n
120
44
57
53
κ = 100
λ = 99
upw1 upw2 adp
115
n
n
118
n
n
123
n
n
81
n
n
98
n
n
113
n
n
Tabelle 20: Rechnung auf gestörtem kartesischen Gitter, 8 Winkel: BiCG-Stab Löser, mit bzw. ohne Vorkonditionierung
(oben bzw. unten)
66
κ=1
κ=1
λ = 0.5
λ = 0.9
NEQ
upw1 upw2 adp upw1 upw2
33800
6
6
6
7
7
133128
6
6
6
7
7
528329
6
6
5
7
7
33800
6
6
5
7
7
133128
5
6
6
6
7
528329
5
6
5
6
7
Fortsetzung
κ = 100
κ = 1000
λ = 99
λ = 990
NEQ
upw1 upw2 adp upw1 upw2
33800
63
71
74
40
58
133128
77
75
67
53
65
528329
77
81
75
60
69
33800
58
70
62
24
30
133128
62
73
73
34
41
528329
74
75
75
46
50
κ=1
λ = 0.99
adp upw1 upw2 adp
7
7
7
7
7
7
7
7
6
7
7
7
7
7
7
7
7
7
7
7
6
7
7
7
κ = 10
λ = 9.9
upw1 upw2 adp
31
25
27
29
31
26
29
26
28
28
26
24
29
26
26
29
27
27
κ = 10000
λ = 9900
adp upw1 upw2
58
13
18
65
21
27
67
29
33
30
8
11
36
11
13
52
15
19
κ = 100000
λ = 99000
upw1 upw2 adp
7
8
7
8
15
21
10
14
14
5
5
5
5
7
6
7
8
7
adp
18
56
34
10
14
18
Tabelle 21: Rechnung auf gestörtem kartesischen Gitter, 32 Winkel: Richardson-Schema, mit bzw. ohne Vorkonditionierung
(oben bzw. unten)
67
κ=1
λ = 0.5
NEQ
upw1 upw2
135200
17
17
532512
17
17
2113568
17
17
135200
17
17
532512
17
17
2113568
17
17
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2
135200
1941 2034
532512
1994 2033
2113568 2017 2033
135200
539
642
532512
854
966
2113568 1199 1306
κ=1
λ = 0.9
adp upw1 upw2 adp
17
28
28
28
17
28
28
28
17
28
28
28
17
27
28
27
17
28
28
28
17
28
28
28
adp
2016
2026
2030
620
944
1291
κ = 1000
λ = 990
upw1 upw2
2055 2062
2060 2066
2064 2069
92
109
164
193
289
334
adp
2019
2027
2041
98
180
317
κ=1
λ = 0.99
upw1 upw2
31
32
32
32
32
32
30
31
31
32
31
32
adp
32
32
32
31
31
32
κ = 10
λ = 9.9
upw1 upw2
369
417
391
419
403
416
288
340
342
377
376
394
κ = 10000
λ = 9900
upw1 upw2 adp
2074 2087 2065
2075 2079 2053
2075 2078 2044
20
25
23
29
40
36
46
67
57
adp
397
410
414
314
365
391
Tabelle 22: Rechnung auf gestörtem kartesischen Gitter, 32 Winkel: CG-Verfahren, mit bzw. ohne Vorkonditionierung (oben
bzw. unten)
68
NEQ
135200
532512
2113568
135200
532512
2113568
κ=1
κ=1
λ = 0.5
λ = 0.9
upw1 upw2 adp upw1 upw2 adp
10
10
10
12
12
13
10
10
10
12
12
12
10
10
10
12
12
13
10
10
10
12
12
12
9
10
10
12
12
12
9
10
10
12
12
13
κ=1
λ = 0.99
upw1 upw2
13
13
13
13
13
13
13
13
13
13
13
13
adp
13
13
13
12
13
13
κ = 10
λ = 9.9
upw1 upw2 adp
43
48
48
44
49
47
44
44
44
41
n
n
43
73
73
43
51
49
κ = 100
λ = 99
upw1 upw2 adp
127
n
n
120
n
n
122
n
154
79
n
n
97
n
n
111
n
n
Tabelle 23: Rechnung auf gestörtem kartesischen Gitter, 32 Winkel: BiCG-Stab Löser, mit bzw. ohne Vorkonditionierung
(oben bzw. unten)
69
κ=1
κ=1
λ = 0.5
λ = 0.9
NEQ
upw1 upw2 adp upw1 upw2
135200
6
6
6
7
7
532512
6
6
6
7
7
2113568
6
6
6
7
7
135200
6
6
5
7
7
532512
5
6
5
7
7
2113568
5
6
5
6
7
Fortsetzung
κ = 100
κ = 1000
λ = 99
λ = 990
NEQ
upw1 upw2 adp upw1 upw2
135200
65
70
71
38
66
532512
74
76
71
52
60
2113568
72
74
81
66
67
135200
55
66
60
24
30
532512
71
74
68
35
38
2113568
74
81
73
47
49
adp
7
7
7
6
7
7
κ=1
λ = 0.99
upw1 upw2 adp
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
κ = 10
λ = 9.9
upw1 upw2 adp
31
27
26
29
30
28
29
28
28
29
26
24
29
24
26
28
27
25
adp
57
62
65
29
36
49
κ = 10000
λ = 9900
upw1 upw2
12
27
20
28
27
28
8
10
11
15
15
20
κ = 100000
λ = 99000
upw1 upw2 adp
7
8
7
8
10
8
10
13
12
5
5
5
5
6
6
7
8
7
adp
18
21
38
10
13
18
Abbildung 39: Konvergenzraten: gestörtes kartesisches Gitter, 32 Winkel, 2113568 NEQ,
UPW 1
Abbildung 40: Konvergenzraten: gestörtes kartesisches Gitter, 32 Winkel, 2113568 NEQ,
UPW 2
Abbildung 41: Konvergenzraten: gestörtes kartesisches Gitter, 32 Winkel, 2113568 NEQ,
ADAP
70
10 Anhang 2
71
Tabelle 24: Rechnung auf uniformem (nicht adaptiertem) Gitter mit 8 Richtungen: Richardson-Schema
72
κ=1
λ = 0.5
NEQ
upw1 upw2
34.056
13
13
133.640
13
13
529.416
13
13
34.056
12
13
133.640
13
13
529.416
13
13
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2
34.056
1202 1422
133.640 1306 1437
529.416 1368 1439
34.056
522
655
133.640
784
898
529.416 1023 1104
adp
13
12
13
13
12
13
adp
1375
1360
1430
623
848
1092
κ=1
λ = 0.9
upw1 upw2 adp
18
18
18
18
18
17
18
18
18
17
17
17
18
18
17
18
18
18
κ = 1000
λ = 990
upw1 upw2
2010 2060
2028 2051
2044 2053
161
185
288
323
492
538
adp
2015
1893
2036
170
287
519
κ=1
λ = 0.99
upw1 upw2
19
19
19
19
19
19
18
19
19
19
19
19
adp
19
19
19
19
18
19
κ = 10
λ = 9.9
upw1 upw2
118
125
122
125
123
125
103
110
113
118
119
121
κ = 10000
λ = 9900
upw1 upw2 adp
2060 2072 2039
2067 2071 1955
2068 2065 2035
29
42
37
46
72
64
78
105
94
adp
125
122
125
110
115
121
Tabelle 25: Rechnung auf uniformem (nicht adaptiertem) Gitter mit 8 Richtungen: BiCG-Stab Löser
73
κ=1
λ = 0.5
NEQ
upw1 upw2 adp
34.056
5
5
5
133.640
5
5
5
529.416
5
5
5
34.056
5
5
5
133.640
5
5
5
529.416
5
5
5
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2 adp
34.056
58
59
60
133.640
64
66
60
529.416
69
71
75
34.056
55
61
60
133.640
65
63
62
529.416
71
62
62
κ=1
λ = 0.9
upw1 upw2 adp
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
κ=1
λ = 0.99
upw1 upw2 adp
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
κ = 10
λ = 9.9
upw1 upw2 adp
17
18
18
18
19
19
19
19
19
17
17
17
18
18
19
18
19
19
κ = 1000
λ = 990
upw1 upw2
66
73
69
72
69
79
35
37
47
46
56
62
κ = 10000
λ = 9900
upw1 upw2
25
56
28
51
32
49
11
13
15
18
22
24
κ = 100000
λ = 99000
upw1 upw2 adp
8
13
13
15
26
26
15
14
14
5
6
6
7
7
7
7
9
9
adp
65
74
74
34
45
62
adp
46
47
54
12
19
24
Tabelle 26: Rechnung auf moderat adaptiertem Gitter mit 8 Richtungen: Richardson-Schema
74
κ=1
λ = 0.5
NEQ
upw1 upw2
34.056
13
n
133.640
13
n
311.944
13
n
34.056
12
n
133.640
12
n
529.416
12
n
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2
34.056
1208 1421
133.640 1307 1421
311.944 1363 1421
34.056
652
837
133.640
892
1034
529.416 1091 1187
adp
n
n
n
n
n
n
adp
1393
1388
1418
778
998
1181
κ=1
λ = 0.9
upw1 upw2 adp
17
n
n
18
n
n
18
n
n
17
n
n
17
n
n
17
n
n
κ = 1000
λ = 990
upw1 upw2 adp
2062 2328 2044
2064
n
n
2061
n
n
546
n
n
860
n
n
1198
n
n
κ=1
λ = 0.99
upw1 upw2 adp
19
n
n
19
n
n
19
n
n
18
n
n
18
n
n
19
n
n
κ = 10
λ = 9.9
upw1 upw2 adp
113
n
n
118
n
n
121
n
n
97
n
n
109
n
n
116
n
n
κ = 10000
λ = 9900
upw1 upw2 adp
2091 2085 2048
2091 2078 1939
2084 2084 2062
144
n
101
267
n
181
471
n
340
Tabelle 27: Rechnung auf moderat adaptiertem Gitter mit 8 Richtungen: BiCG-Stab Löser
75
κ=1
λ = 0.5
NEQ
upw1 upw2 adp
34.056
5
5
5
133.640
5
5
5
529.416
5
5
5
34.056
5
5
5
133.640
5
5
5
529.416
5
5
5
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2 adp
34.056
62
69
66
133.640
66
69
72
529.416
73
77
69
34.056
46
60
59
133.640
52
64
70
529.416
58
63
64
κ=1
λ = 0.9
upw1 upw2 adp
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
κ=1
λ = 0.99
upw1 upw2 adp
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
κ = 10
λ = 9.9
upw1 upw2 adp
18
19
19
18
19
18
19
19
19
16
18
17
18
18
17
18
19
19
κ = 1000
λ = 990
upw1 upw2
80
80
79
88
79
92
51
77
70
118
69
124
κ = 10000
λ = 9900
upw1 upw2
59
78
68
76
77
83
32
41
38
66
50
78
κ = 100000
λ = 99000
upw1 upw2 adp
21
36
35
32
40
50
35
52
48
10
15
14
14
20
20
19
30
26
adp
79
86
90
75
95
109
adp
69
79
78
38
51
75
Tabelle 28: Rechnung auf fein adaptiertem Gitter mit 8 Richtungen: Richardson-Schema
76
κ=1
λ = 0.5
NEQ
upw1 upw2
34.056
12
12
133.640
12
13
529.416
12
13
34.056
11
12
133.640
12
12
529.416
12
12
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2
34.056
925
1363
133.640 1107 1393
311.944 1235 1398
34.056
360
562
133.640
565
749
529.416
782
933
adp
12
12
12
12
12
12
adp
1252
1318
1384
402
651
897
κ=1
λ = 0.9
upw1 upw2 adp
17
17
17
17
18
17
17
18
17
15
16
16
16
17
16
17
17
17
κ = 1000
λ = 990
upw1 upw2
2055 2061
2074 2053
2077 2056
460
n
753
n
1077
n
adp
2053
1984
2051
322
553
1161
κ=1
λ = 0.99
upw1 upw2
18
18
18
19
19
19
16
17
17
18
18
19
adp
19
18
19
17
17
18
κ = 10
λ = 9.9
upw1 upw2
95
116
105
120
113
122
68
83
84
97
97
107
κ = 10000
λ = 9900
upw1 upw2 adp
2101 2087 2077
2101 2076 1928
2096 2075 2069
244
n
227
466
n
315
776
n
581
adp
113
118
122
76
93
106
Tabelle 29: Rechnung auf fein adaptiertem Gitter mit 8 Richtungen: BiCG-Stab Löser
77
κ=1
λ = 0.5
NEQ
upw1 upw2 adp
34.056
5
5
5
133.640
5
5
5
529.416
5
5
5
34.056
5
5
5
133.640
5
5
5
529.416
5
5
5
Fortsetzung
κ = 100
λ = 99
NEQ
upw1 upw2 adp
34.056
58
66
61
133.640
60
70
70
529.416
66
70
76
34.056
33
51
45
133.640
43
64
59
529.416
47
73
68
κ=1
λ = 0.9
upw1 upw2 adp
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
κ=1
λ = 0.99
upw1 upw2 adp
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
κ = 10
λ = 9.9
upw1 upw2 adp
17
18
18
18
19
19
19
20
20
12
16
15
15
17
17
17
18
18
κ = 1000
λ = 990
upw1 upw2
79
81
91
84
89
89
44
86
57
96
66
99
κ = 10000
λ = 9900
upw1 upw2
66
77
70
91
76
87
32
66
46
79
62
101
κ = 100000
λ = 99000
upw1 upw2 adp
25
61
50
47
47
56
55
74
69
16
27
21
22
36
34
32
49
44
adp
82
84
87
69
80
91
adp
68
76
89
54
64
93
Tabelle 30: Laufzeit zur Rechnung auf fein adaptiertem Gitter mit 8 Richtungen: BiCG-Stab Löser
NEQ
34.056
133.640
529.416
34.056
133.640
529.416
78
NEQ
34.056
133.640
529.416
34.056
133.640
529.416
NEQ
34.056
133.640
529.416
34.056
133.640
529.416
upw1
4, 70 · 10−1
2, 29 · 100
1, 03 · 101
4, 40 · 10−1
2, 33 · 100
1, 03 · 101
Fortsetzung
κ=1
λ = 0.5
upw2
6, 30 · 10−1
3, 00 · 100
1, 37 · 101
6, 50 · 10−1
3, 10 · 100
1, 35 · 101
κ = 100
λ = 99
upw2
1, 93 · 100
1, 08 · 101
5, 11 · 101
1, 96 · 100
9, 85 · 100
4, 63 · 101
upw1
1, 30 · 100
7, 43 · 100
3, 71 · 101
9, 90 · 10−1
6, 68 · 100
3, 29 · 101
Fortsetzung
κ = 10000
λ = 9900
upw1
upw2
0
4, 62 · 10 8, 40 · 100
2, 68 · 101 4, 74 · 101
1, 36 · 102 2, 07 · 102
2, 30 · 100 7, 01 · 100
1, 79 · 101 4, 19 · 101
1, 12 · 102 2, 43 · 102
adp
7, 00 · 10−1
3, 77 · 100
1, 72 · 101
8, 20 · 10−1
3, 96 · 100
1, 77 · 101
adp
2, 78 · 100
1, 35 · 101
6, 57 · 101
2, 29 · 100
1, 22 · 101
5, 97 · 101
adp
9, 58 · 100
4, 98 · 101
2, 72 · 102
7, 71 · 100
4, 24 · 101
2, 84 · 102
upw1
4, 90 · 10−1
2, 62 · 100
1, 21 · 101
5, 20 · 10−1
2, 63 · 100
1, 23 · 101
upw1
4, 64 · 100
2, 44 · 101
1, 26 · 102
2, 62 · 100
1, 76 · 101
9, 02 · 101
upw1
1, 90 · 100
1, 94 · 101
1, 08 · 102
1, 27 · 100
9, 12 · 100
6, 35 · 101
κ=1
λ = 0.9
upw2
7, 80 · 10−1
3, 65 · 100
1, 62 · 101
7, 80 · 10−1
3, 65 · 100
1, 68 · 101
κ = 1000
λ = 990
upw2
7, 48 · 100
4, 00 · 101
1, 78 · 102
6, 19 · 100
3, 66 · 101
1, 85 · 102
κ = 100000
λ = 99000
upw2
7, 08 · 100
2, 64 · 101
1, 88 · 102
3, 19 · 100
2, 03 · 101
1, 25 · 102
adp
9, 70 · 10−1
4, 46 · 100
2, 09 · 101
9, 60 · 10−1
4, 46 · 100
2, 07 · 101
adp
9, 17 · 100
4, 84 · 101
2, 43 · 102
6, 79 · 100
4, 16 · 101
2, 19 · 102
adp
7, 37 · 100
3, 89 · 101
2, 21 · 102
3, 23 · 100
2, 36 · 101
1, 41 · 102
upw1
5, 10 · 10−1
2, 57 · 100
1, 22 · 101
4, 90 · 10−1
2, 67 · 100
1, 24 · 101
upw1
6, 42 · 100
3, 73 · 101
1, 68 · 102
3, 41 · 100
2, 38 · 101
1, 27 · 102
κ=1
λ = 0.99
upw2
7, 50 · 10−1
3, 50 · 100
1, 62 · 101
7, 60 · 10−1
3, 68 · 100
1, 64 · 101
κ = 10000
λ = 9900
upw2
9, 52 · 100
4, 72 · 101
2, 27 · 102
1, 05 · 101
5, 42 · 101
2, 51 · 102
adp
9, 80 · 10−1
4, 38 · 100
2, 08 · 101
1, 03 · 100
4, 67 · 100
2, 04 · 101
adp
1, 23 · 101
5, 86 · 101
2, 81 · 102
1, 03 · 101
5, 74 · 101
2, 93 · 102
Tabelle 31: ausgewählte Laufzeit pro Iterationsschritt zur Rechnung auf fein adaptiertem Gitter mit 8 Richtungen: BiCG-Stab
Löser
79
NEQ
34.056
133.640
529.416
34.056
133.640
529.416
upw1
2, 2 · 10−2
1, 2 · 10−1
5, 6 · 10−1
3, 0 · 10−2
1, 6 · 10−1
7, 0 · 10−1
κ = 100
λ = 99
upw2
2, 9 · 10−2
1, 5 · 10−1
7, 3 · 10−1
3, 8 · 10−2
1, 5 · 10−1
6, 3 · 10−1
adp
4, 6 · 10−2
1, 9 · 10−1
8, 6 · 10−1
5, 1 · 10−2
2, 1 · 10−1
8, 8 · 10−1
Literatur
[1] H. Chen, S. Chen, W. H. Matthäus, Recovery of the Navier-Stokes equations using
a lattice-gas Boltzmann method, Phys. Rev. E. 45, No. 8 (1992) 5339–5342
[2] Golse, F., L. Saint-Raymond, The Navier-Stokes limit for the Boltzmann equation,
C. R. Acad. Sci. Paris 333, Série I (2001) 897–902
[3] Y.H. Quian, D. d’Humieres and P. Lallemand, Lattice BGK models for Navier
Stokes equations, Europhys. Lett. 17, No. 6 (1992) 479–484
[4] S.Turek, An efficient solution technique for the radiative transfer equation, Impact
of computing in science and engineering, 5, 2001-214, 1993
[5] M. Junk, A. Klar, Discretizations for the Incompressible Navier-Stokes Equations
based on the Lattice Boltzmann Method, SIAM J. Sci. Comput. 22 No. 1 (2000)
1–19
[6] P. Lallemand, L. S. Luo, Theory of the lattice Boltzmann method: Dispersion,
dissipation, isotropy, Galilean invariance, and stability, Phys. Rev. E 61, No. 6
(2000) 6546–6562
[7] R. R. Nourgaliev, T. N. Dinh, T. G. Theofanous, D. Joseph, The lattice Boltzmann
equation method: theoretical interpretation, numerics and implications, Int. Journal
of Multiphase Flow. 29 (2003) 117–169
[8] D.Mihalas, B.Weibel-Mihalas, Foundations of Radiation Hydrodynamics, Oxford
University Press, 1984
[9] A. Schuster, Radiation Through a foggy atmosphere, ApJ 21, 1-22 (1905)
[10] W.Kalkofen, Numerical Radiative Transfer, Cambridge University Press, 1987
[11] O.Steiner, A rapidly converging temperature correction procedure using operator
perturbation, Astronomy and Astrophysics, Springer, 231, 278–288 (1990)
[12] S.Turek, R. Wehrse, Spectral appearance of dust enshrouded stars: A combination
of a strongly accelerated solution technique with a finite element approach for 2D
radiative transfer, Astronomy and Astrophysics, Springer, (1993)
[13] Chr.Führer, A comparative study of finite element solvers for hyperbolic problems
with applications to radiative transfer, Technical report SFB 359, 65, Universität
Heidelberg, 1993
[14] S.Turek, Tools for simulation nonstationary incompressible flow via discretely
divergence-free finite element models, Technical Report 679, SFB 123, Universität
Heidelberg, 1992
80
[15] D.Kuzmin, Introduction to Computational
FEATFLOW-Summerschool (2003)
Fluid
Dynamics,
Skript
zur
[16] D. Kuzmin, S. Turek, Flux correction tools for finite elements, J. Comput. Phys.,
175, 525–558, 2002
[17] D. Kuzmin, S. Turek, Generalized TVD concepts for finite element discretizations
on arbitrary meshes, submitted to: Proceedings of the Second MIT Conference on
Computational Fluid and Solid Mechanics, Elsevier (2003)
[18] K.Ohmori, T.Ushijima, A technique of upstream type applied to a linear nonconforming finite element approximation of convective diffusion equations, R.A.I.R.O.
Numer. Anal., 18, 309–332 (1984)
[19] L.Tobiska, F.Schieweck, A nonconforming finite element method of upstream type
applied to the stationary Navier-Stokes equation, NMAN, 23, 627–647 (1989)
[20] N.Deo, Graph Theory with Applications to Engineering and Computer Science.
Prentice Hall International, (1974), 222–333
[21] I.Wegener, Datenstrukturen, Skriptum zur Vorlesung Datenstrukturen, WS 96/97,
Universität Dortmund
[22] H.M.Väth, Three dimensional radiative transfer on a massively parallel computer,
Astronomy and Astrophysics, Springer, (1993)
[23] S.Turek, A Generalized Mean Intensity Approach for the Numerical Solution of the
Radiative Transfer Equation, Preprint 94 - 04, Universität Heidelberg, 1994
[24] S.Geller, M.Krafczyk, J.Tölke, S.Turek, J.Hron Benchmark computations based on
Lattice-Boltzmann, Finite Element and Finite Volume Methods for laminar Flows,
Preprint submitted to Elsevier Science, 2004
[25] C.Johnson, J.Pitkaränta, Convergence of a fully discrete scheme for two-dimensional
neutron transport, SIAM J. Numer. Anal., 20, 951–966 (1983)
[26] R.S. Varga, Matrix Iterative Analysis, Prentice-Hall, Englewood, New Jersey 1961
[27] H.Van der Vorst, Bi-CGSTAB: A fast and smoothly converging variant of Bi-CG
for the solution of nonsymmetric linear systems, SIAM J. Sci. Stat. Comput., 13,
631–644
[28] C.Lanczos, Solution of systems of linear equations by minimized iterations, J. Research Nat. Bureau of Standards, 49 (1952), 33–53
[29] P.Sonneveld, CGS, a fast Lanczos-type solver for nonsymmetric linear systems,
SIAM J. Sci. Statist. Comput., 10 (1989), 36–52
81
[30] S.Turek, A.Runge, Ch.Becker, The FEAST Indices - Realistic evaluation of modern
software components and processor technologies, Computer and Mathematics with
Applications, 41, 1431 - 1464, 2001
[31] S.Richling, E.Meinköhn, N.Kryzhevoi, G.Kanschat, Radiative Transfer with Finite
Elements, Astronomy and Astrophysics 380, 776-788 (2001)
[32] A.Dedner, P.Vollmöller, An Adaptive Higher Order Method for Solving the Radiation Transport Equation on Unstructured Grids, J. Comput. Phys. 178 (2002),
263–289
[33] A.Dedner, Solving the System Radiation Magnetohydrodynammics - for solar physical simulations in 3d, Dissertation, 2003, Freiburg
[34] E.Meinköhn, Modellierung dreidimensionaler Strahlungsfelder im frühen Universum, Dissertation, 2002, Heidelberg
[35] H.Schütz, Monte-Carlo Radiation in Gas Turbine Combustors, Vortrag, Radconf
2003, Universität Heidelberg
[36] A.Soufiani, Present status of gas radiation modelling in combustion applications,
Vortrag, Radconf 2003, Universität Heidelberg
[37] O.Dorn, A level set method for shape reconstruction in Diffuse Optical Tomography,
Vortrag, Radconf 2003, Universität Heidelberg
82
Hiermit versichere ich, daß ich die vorliegende Arbeit selbständig und nur unter Verwendung der angegebenen Quellen und Hilfsmittel verfaßt habe.
Dortmund, den 10. März 2005
83
Einverständniserklärung des Urhebers
Name: Thomas Hübner
Fachbereich: Mathematik
Ich erkläre mich einverstanden, daß meine Diplomarbeit nach §6 (1) des URG der Öffentlichkeit durch die Übernahme in die Bereichsbibliotheken zugänglich gemacht wird. Damit können Leser der Bibliothek die Arbeit einsehen und zu persönlichen wissenschaftlichen Zwecken Kopien aus dieser Arbeit anfertigen. Weitere Urheberrechte werden nicht
berührt.
Dortmund, den 20. April 2005
84
Num. Math. für Physiker und Ingenieure
Freitag, 10-11 Uhr, M E29
85