From ff08d119cc6ffdd535a73240406e07f5567edeb4 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sun, 30 Dec 2018 20:02:46 +0100 Subject: Put algorithm figure into words --- content.tex | 11 +++++++++++ img/algorithm_birds_eye.tikz | 10 +++++----- main.tex | 1 + shell.nix | 1 + 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/content.tex b/content.tex index 867fd8c..25cfa29 100644 --- a/content.tex +++ b/content.tex @@ -135,6 +135,7 @@ Bemerkenswert ist an dieser Stelle, dass die Momente der Verteilungen mit \(\ove \newpage \subsubsection{Implementierung} +\label{kap:LBMimpl} Bei der Implementierung der {diskreten LBM BGK Gleichung}~\ref{def:LBGKeq} auf einem Computer ist die Aufteilung in Kollisions- und Strömungsschritt üblich. @@ -495,6 +496,16 @@ Entsprechend (\ref{eq:gridTime}) müssen für jeden groben Zeitschritt \(\delta \caption{Verfeinerungsalgorithmus mit Invariante aus der Vogelperspektive} \label{fig:AlgorithmBirdsEye} \end{figure} +\noindent +Aufbauend auf dieser Invariante ergibt sich die, in Abbildung~\ref{fig:AlgorithmBirdsEye} dargelegte, Reihenfolge der erforderlichen Schritte direkt aus den, für die einzelnen Komponenten der Gitterkopplung benötigen, Informationen. So sind zu Beginn alle Verteilungsfunktionen vollständig bekannt, was die Ausführung eines üblichen Kollisions- und Strömungsschritts (vgl. Kapitel~\ref{kap:LBMimpl}) in beiden Gittern ohne weitere Zuarbeit erlaubt. Nach diesen beiden Schritten fehlen Verteilungsfunktionen \(f_{g,i}(x_{f \to g})\) zur Wiederherstellung der Invariante des groben Gitters. Auch der benötigte zweite Simulationsschritt, um \(\F\) auf Zeitpunkt \(t+\delta t_g=t+2\delta t_f\) zu bringen, scheitert zunächst an der Unbestimmtheit von Verteilungsfunktionen \(f_{f,i}(x_{g \to f})\). + +\begin{description}[style=unboxed,leftmargin=0cm] +\item[Vervollständigung von \(\F\) zu Zeitpunkt \(t+\delta t_f\):] Zur Vervollständigung des feinen Gitters nach dem ersten Zeitschritt müssen die fehlenden Verteilungen aus dem groben Gitter rekonstruiert werden. Um die dazu erarbeiteten Näherungen (\ref{eq:expandedDirectG2F}) und (\ref{eq:expandedInterpolG2F}) mit der Interpolationsformel vierter Ordnung (\ref{eq:ipol4ord}) anzuwenden, fehlen jedoch Werte der groben Stützstellen \(f_{g,i}(x_{g \to f}^g)\) zu Zeitpunkt \(t+\delta t_f\). Diese sind zwar in den gesuchten Punkten, dank Trennung der Kopplungsrichtungen durch den Übergangsbereich, nach jedem Simulationsschritt direkt vollständig vorhanden -- jedoch nur zu Zeit \(t\) und \(t+\delta t_g\). Hier findet sich eine Anwendung des Interpolationsverfahrens zweiter Ordnung (\ref{eq:ipol2ord}), d.h. des arithmetischen Mittels zweier Stützpunkte, zur linearen Zeitinterpolation der benötigten Werte von \(\rho_g, u_g\) und \(f_{g,i}^\text{neq}\). Aufbauend darauf steht der Anwendung der Kopplungsformeln (\ref{eq:expandedDirectG2F}) und (\ref{eq:expandedInterpolG2F}) zur Vervollständigung von \(\F\) nichts mehr im Wege. + +\item[Vervollständigung von \(\F\) zu Zeitpunkt \(t+2\delta t_f\):] Dieser zweite Rekonstruktionsschritt auf dem feinen Gitter gestaltet sich einfacher, da die benötigten groben Verteilungen in \(\U_{g \to f}\) zur Zeitpunkt \(t+\delta t_g\) bereits durch den initialen Simulationschritt auf dem groben Gitter bekannt sind. Entsprechend können die Kopplungsformeln (\ref{eq:expandedDirectG2F}) und (\ref{eq:expandedInterpolG2F}) direkt zur Vervollständigung von \(\F\) angewandt werden. + +\item[Vervollständigung von \(\G\) zu Zeitpunkt \(t+\delta t_g\):] Nach zweimaliger Vervollständigung des feinen Gitters verbleibt, zur Wiederherstellung der Schleifeninvariante, der Abschluss des eingehenden Kollisions- und Strömungsschritts auf dem groben Gitter durch Restriktion der aus Richtung des feinen Gitters eingehenden Verteilungsfunktionen. Die Vollständigkeit des feinen Gitters zu Zeitpunkt \(t+\delta t_g\) erlaubt hier die direkte Anwendung von Kopplungsformel (\ref{eq:restrictedF2G}) mit Restriktionsoperator (\ref{eq:neqAvgRestrictionF2G}). +\end{description} % ToDo: Einschränkungen der Gitterpositionierung (keine hängenden feinen Knoten) ausarbeiten % ToDo: Randfälle der Restriktion ausarbeiten, analog zu Interpolation (fehlt im Paper) diff --git a/img/algorithm_birds_eye.tikz b/img/algorithm_birds_eye.tikz index 53ffc7e..923be01 100644 --- a/img/algorithm_birds_eye.tikz +++ b/img/algorithm_birds_eye.tikz @@ -26,11 +26,11 @@ \draw[yellow,fill] (1,-4) circle [radius=1mm]{}; \node[fine] at (1,-4) -{Setzen von \(f_{f,i}\) in \(x_{g \to f}^g \in \F\) mit (\ref{eq:expandedDirectG2F}).}; +{Setzen von \(f_{f,i}\) in \(x_{g \to f}^g \in \F\) mit (\ref{eq:expandedDirectG2F})}; \draw[yellow,fill] (1,-5) circle [radius=1mm]{}; \node[fine] at (1,-5) -{Interpolation von \(f_{f,i}\) in \(x_{g \to f}^f \in \F\) mit (\ref{eq:expandedInterpolG2F}).}; +{Interpolation von \(f_{f,i}\) in \(x_{g \to f}^f \in \F\) mit (\ref{eq:expandedInterpolG2F})}; \draw[green!60!black,fill] (1,-6) circle [radius=1mm]{}; \node[fine] at (1,-6) {\(f_{f,i}(\F)\) vollständig zu Zeit \(t + \delta t_f\)}; @@ -40,15 +40,15 @@ \draw[yellow,fill] (1,-8) circle [radius=1mm]{}; \node[fine] at (1,-8) -{Setzen von \(f_{f,i}\) in \(x_{g \to f}^g \in \F\) mit (\ref{eq:expandedDirectG2F}).}; +{Setzen von \(f_{f,i}\) in \(x_{g \to f}^g \in \F\) mit (\ref{eq:expandedDirectG2F})}; \draw[yellow,fill] (1,-9) circle [radius=1mm]{}; \node[fine] at (1,-9) -{Interpolation von \(f_{f,i}\) in \(x_{g \to f}^f \in \F\) mit (\ref{eq:expandedInterpolG2F}).}; +{Interpolation von \(f_{f,i}\) in \(x_{g \to f}^f \in \F\) mit (\ref{eq:expandedInterpolG2F})}; \draw[yellow,fill] (0,-10) circle [radius=1.5mm]{}; \node[coarse] at (0,-10) -{Setzen von \(f_{g,i}\) in \(x_{f \to g} \in \G\) mit (\ref{eq:basicF2G})}; +{Restriktion von \(f_{g,i}\) in \(x_{f \to g} \in \G\) mit (\ref{eq:restrictedF2G})}; \draw[green!60!black,fill] (0,-11) circle [radius=1.5mm]{}; \node[coarse] at (0,-11) {\(f_{g,i}(\G)\) vollständig zu Zeit \(t+\delta t_g\)}; diff --git a/main.tex b/main.tex index 2fab1af..3ed8b06 100644 --- a/main.tex +++ b/main.tex @@ -8,6 +8,7 @@ \usepackage{latexsym} \usepackage{amsmath,amssymb,amsthm} %\usepackage[euler-digits,euler-hat-accent]{eulervm} +\usepackage{enumitem} \usepackage{hyperref} \hypersetup{ diff --git a/shell.nix b/shell.nix index 5bdeaff..35b233b 100644 --- a/shell.nix +++ b/shell.nix @@ -10,6 +10,7 @@ stdenv.mkDerivation rec { amsmath eulervm cm-super + enumitem bibtex biblatex logreq xstring ; }; -- cgit v1.2.3