Praktikum zu Vorlesung Modellreduktion parametrisierter Systeme
Mario Ohlberger, Felix Schindler
Aktivieren Sie wie gewohnt ihre Arbeitsumgebung und starten Sie den Jupyter Notebook server, siehe zB Blatt 1, Aufgabe 0.
Erstellen Sie ein neues Python 3 Notebook oder laden Sie dieses von der Homepage herunter.
Importieren Sie numpy und pymor.basic und machen Sie matplotlib für das Notebook nutzbar.
Wir betrachten wieder das vereinfachte Diffusionsproblem aus Blatt 02, mit dem Gebiet und den Datenfunktionen aus Blatt 02, Aufgabe 4.
Modellieren Sie das vereinfachte Diffusionsproblem mit Hilfe eines analytischen Problems in pyMOR und nutzen Sie einen Diskretizer, um eine Diskretisierung des Problems zu erhalten.
StationaryProblem vertraut und legen Sie ein problem_1 an, welches die gewünschten Datenfunktionen enthält.TriaGrid an.interpolations.py und visualizations.py.Diskretisieren Sie dasselbe Problem mit Hilfe einer Finite Volumen Diskretisierung für verschiedene Gittertypen und dieselbe Gitterweite $\tfrac{1}{2}$, visualisieren Sie die Lösungen.
Falls Sie die Meldungen von pyMOR einschränken wollen, können Sie
set_log_levels({'pymor': 'WARN'})
verwenden.
Vergleichen Sie die Lösungen für CG und FV.
Wir betrachten parameter-unabhängige Diffusionsprobleme. Sei dazu
Lipschitz-Rand $\partial \Omega$, der sich in einen
mit $\Gamma_\text{D} \cap \Gamma_\text{N} = \emptyset$ und $\Gamma_\text{D} \cup \Gamma_\text{N} = \partial \Omega$ aufteilt.
Sei außerdem
gegeben. Gesucht ist eine schwache Lösung $u \in H^1(\Omega)$, sodass
$$\begin{align} -\nabla\cdot( A \nabla u ) &= f &&\text{in } \Omega\\ u &= g_\text{D} &&\text{auf } \Gamma_\text{D}\\ - (A \nabla u) \cdot n &= g_\text{N} &&\text{auf } \Gamma_\text{N}\\ \end{align}$$im schwachen Sinne, wobei $n \in \mathbb{R}^d$ die aüßere Normale an den Gebietsrand $\partial \Omega$ sei.
Approximieren Sie die Lösung dieses Problems auf dem Gebiet
für die Datenfunktionen
problem_2 an. Beachten Sie dass die Definition der Randwerte schon im Problem erfolgen muss.Extrahieren Sie aus den bei der Diskretisierung anfallenden Daten das Rechte-Seite Funktional $l$ der nicht assemblierten Diskretisierung.
Wir betrachten das Problem aus Aufgabe 2 mit parametrischen Neumann Randwerten $g_{\text{N}, \mu}$, d.h. für jeden Parameter $\mu \in \mathbb{R}$ ist $g_{\text{N}, \mu} \in H^{-1/2}(\Gamma_\text{N})$ und wir suchen zu einem Parameter $\mu \in \mathbb{R}$ eine schwache Lösung $u_\mu \in H^1(\Omega)$, sodass
$$\begin{align} -\nabla\cdot( A \nabla u_\mu ) &= f &&\text{in } \Omega\\ u_\mu &= g_\text{D} &&\text{auf } \Gamma_\text{D}\\ - (A \nabla u_\mu) \cdot n &= g_{\text{N}, \mu} &&\text{auf } \Gamma_\text{N}\\ \end{align}$$Approximieren Sie die Lösungen dieses Problems für verschiedene Parameter auf dem Gebiet wie oben und zu den Datenfunktionen wie oben, aber mit
Legen Sie eine ExpressionFunction für $g_{\text{N}, \mu}$ an
ExpressionFunction, um die Neumann Randwerte als parametrische Funktion mit einem skalaren Parameter zu definieren (nennen Sie diesen z.B. 'neum').Werten Sie die Funktion für verschiedene Punkte auf dem Neumann Rand und verschiedene Parameter aus.
Parameter-Object mu an, welches $\mu = 1$ modelliert, lassen Sie sich den Paramter anzeigen und werten Sie die Funktion für dieses $\mu$ aus.problem_2 Objektes zu ersetzen, um ein neues analytisches Problem zu erhalten. Warum schlägt dies fehl? (Hinweis: nutzen Sie die mro Funktion aus dem inspect Modul, um sich alle Basisklassen des Typs von problem_2 anzeigen zu lassen)problem_3 als veränderte Kopie des problem_2 an, wobei nur die Neumann Randwerte ausgetauscht wurde.problem_3 mit dem CG Verfahren mit einer Gitterweite von höchstens $\tfrac{1}{32}$. Ist die Diskretisierung parametrisch? Wenn ja, lassen Sie sich den entsprechenden Parametertypen anzeigen.