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