Praktikum zur Vorlesung Numerik partieller Differentialgleichungen I

Mario Ohlberger, Felix Schindler

Blatt 05, 08.01.2020

  • Aktivieren Sie wie gewohnt ihre Arbeitsumgebung und starten Sie den Jupyter Notebook server, siehe zB Blatt 1, Aufgabe 0).
  • Laden Sie dieses Blatt von der Homepage herunter und speichern Sie es unter ~/NPDGL1/notebooks/blatt_05.ipynb.
  • Importieren Sie numpy und pymor.basic und machen Sie matplotlib für das Notebook nutzbar.
In [ ]:
%matplotlib notebook
import numpy as np
from pymor.basic import *
from matplotlib import pyplot as plt

Aufgabe 1

Sei $\Omega \subset \mathcal{R}^d$ für $d = 1, 2, 3$ ein Gebiet mit Lipschitz-Rand und sei $u \in H^1_0(\Omega)$ die schwache Lösung von

$$\begin{align*} -\nabla\cdot(A \nabla u) &= f &\text{in } \Omega \end{align*}$$

für eine gegebene Diffusion $A \in L^\infty(\Omega)$ und rechte Seite $f \in L^2(\Omega)$.

Sei $\mathcal{T}_h$ ein Simplexgitter von $\Omega$ und $S_h^1$ der zugehörige Lagrange-Raum erster Ordnung. Berechnen Sie $u_h \in S_h^1$ als Lösung von

$$\begin{align*} a_h(u_h, v_h) &= l_h(v_h) &&\text{für alle } v_h \in S_h^1, \end{align*}$$

wobei $a_h: S_h^1 \times S_h^1 \to \mathbb{R}$ und $l_h: S_h^1 \to \mathbb{R}$ die diskreten Varianten von $a: H^1 \times H^1 \to \mathbb{R}$ und $l: H^1 \to \mathbb{R}$, gegeben durch

$$\begin{align*} a(u, v) &:= \int_\Omega A(x) \nabla u(x) \nabla v(x) \text{d}x &&\text{und}\\ l(v) &:= \int_\Omega f(x) v(x)\text{d}x, \end{align*}$$

sind, wenn man alle Integrale durch geeignete Quadraturen ersetzt.

Testen Sie ihr Program für

  • $d = 1$
  • $A = 1$
  • $f = 1$

auf einem Gitter mit 4 Elementen.

In [ ]:
 

Aufgabe 2

Bestimmen Sie den EOC von $\|u - u_h\|_{L^2(\Omega)}$ für eine gegebene Referenzlösung $u \in H^1_0(\Omega)$.

Testen Sie ihr Programm für das Beispiel aus Aufgabe 1 und Gitter mit $2^2, 2^3, 2^4, 2^5$ Elementen, indem Sie $u$ analytisch bestimmen, und senden Sie ihr Jupyter Notebook unter Angabe aller bearbeitenden an Felix Schindler.

In [ ]: