|
Lösung der Wärmeleitungsgleichung |
|
- Die Wärmeleitungsgleichung ist das bekannteste Beispiel einer
parabolischen DGL. Die hier betrachtete Variante hat eine Raumdimension und
damit die Form
(d/dt)u = a (d/dx)**2 u + f(x,t)
wobei x in [0,1] und t >= 0 betrachtet wird.
- Parabolische DGLen beschreiben Diffusionsvorgänge.
- Um mit der Wärmeleitungsgleichung eine sinnvolle Problemstellung zu
definieren, werden Anfangs- und Randwerte benötigt.
Hier benutzen wir Dirichlet-Daten, also Vorgabe der Funktionswerte.
Die Anfangswerte geben
die Funktionswerte der Lösung u für t = 0 und x in
[0,1] vor, und die Randwerte definieren zu den Orten x = 0 bzw. x = 1
einen festen Verlauf der Lösung u(0,t) bzw. u(1,t).
- Gelöst wird das Problem mit einem zweistufigen Verfahren,
der sogenannten (vertikalen) Linienmethode. Im ersten
Schritt werden die Ortsableitungen mit den 2. Differenzenquotienten
diskretisiert. Das so entstehende System gewöhnlicher DGLen wird dann mit
einem BDF-Verfahren gelöst. Das BDF-Verfahren ist ein implizites
Mehrschrittverfahren. Das Verfahren mit der Schrittzahl k und
Ordnung k entsteht, indem man die Daten (tj+1-k,uj+1-k),...
,(tj+1,uj+1) durch ein Polynom in t
vom Grad <=k interpoliert, dieses Polynom differenziert,
t=tj+1 (das ist die Stelle, an der die Lösung gesucht ist)
einsetzt und das Resultat =F(tj+1,uj+1) setzt.
Diese Verfahren sind asymptotisch und zugleich A(alpha)-stabil nur für
1<=k<=5.
- Das BDF-Verfahren arbeitet adaptiv, d.h. die Zeitschrittweiten und
die Schrittzahl(=Ordnung) werden gesteuert.
|
|
|
Die Eingaben |
|
- Neben zwei voreingestellten Problemstellungen mit bekannter
exakter Lösung gibt es die
Möglichkeit, eine eigene Problemstellung zu definieren.
- Im Falle einer eigenen Problemstellung sind folgende Eingaben zu machen:
- Die Funktion f(x,y). Die Eingabe dieser Funktion folgt den
Konventionen der Programmiersprache FORTRAN.
- Die Randwerte phi0(t) und
phi1(t) und die Anfangswerte
u0(x) (Eingabe ebenfalls in FORTRAN-Konvention).
- Bei allen drei Fällen ist der
Wärmeleitfähigkeitskoeffizient a einzugeben. Wichtig : a >
0 !
- Die Anzahl n der inneren Gitterpunkte in
x-Richtung. Wichtig : 1<=n<=200 !
- Die Endzeit tend der Berechnung. Wichtig : tend > 0 !
- Die gewünschte relative Genauigkeit tol zur Steuerung der
Zeitintegration.
- Die maximale Ordnung ord des Zeitintegrators, also des
BDF-Verfahrens. Wichtig : ord aus {1,2,3,4,5} ! Dabei ist ord =
1 das implizite Euler-Verfahren.
- Anzahl grid der zu zeichnenden (und damit auch zu berechnenden )
Zeit-Schichten. Wichtig : 0 <= grid <=
200 ! Dabei bedeutet grid = 0 die Ausgabe aller intern berechneten
Zeitschichten. Falls grid > 0 ist, wird jeweils bis zur
nächsten zu zeichnenden Zeitschicht integriert und dann die Integration
neu gestartet.
- Da als Ausgabe ein PNG-Bild aus 3D-Plots erzeugt wird, kann man den
Betrachtungswinkel der Projektion bei der Erzeugung der Plots angeben.
|
|
|
Die Ausgaben |
|
- Ausgegeben werden zunächst kurze Angaben zu den gewählten
Parametern und danach eine kurze Statistik der Berechnung.
- In der Statistik werden angeben:
- Die letzte verwendete Zeit-Schrittweite.
- Die zuletzt verwendete Ordnung des BDF-Verfahrens.
- Die Anzahl der Zeitschritte.
- Die Anzahl aller Newton-Iterationen zur Lösung der
nichtlinearen Gleichungssysteme
G(uj+1)=0
im BDF-Verfahren.
Hier ist dies die Anzahl aller (versuchten) Integrationsschritte,
da das System hier linear ist.
- Die Anzahl aller berechneten Auswertungen
der (nicht)linearen Funktion G. (Hier ist das System ein
lineares mit tridiagonaler Koeffizientenmatrix).
G(uj+1)=0.
- Die Anzahl aller berechneten Jacobimatrizen von G,
hier I-delta_t*a/(delta_x)2*tridiag(1,-2,1)
- Ausgegeben wird ferner ein 3D-Plot des Fehlers auf dem verwendeten
Gitter, falls die exakte Lösung bekannt ist, im anderen Fall der
numerischen Lösung.
|
|
|
Fragen ?! |
|
- Wie verhält sich der Fehler abhängig von n und
tol ?
- Was passiert, wenn man die maximale Ordnung klein wählt ?
- Was ist bei der Vorgabe der Randfunktionen zu beachten, wenn man
eine glatte Lösung erhalten will?
|
|
|
|
| |