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:
    1. Die Funktion f(x,y). Die Eingabe dieser Funktion folgt den Konventionen der Programmiersprache FORTRAN.
    2. 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:
    1. Die letzte verwendete Zeit-Schrittweite.
    2. Die zuletzt verwendete Ordnung des BDF-Verfahrens.
    3. Die Anzahl der Zeitschritte.
    4. 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.
    5. Die Anzahl aller berechneten Auswertungen der (nicht)linearen Funktion G. (Hier ist das System ein lineares mit tridiagonaler Koeffizientenmatrix). G(uj+1)=0.
    6. 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?
 

Das Eingabeformular

 

Zurück: Partielle DGLs

 
Back to the top!

19.01.2009