From 4c01070f386ac878101d7bd4e6935bf9c01e8550 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Mon, 31 Dec 2018 20:19:15 +0100 Subject: Unify lattice node styles --- content.tex | 15 ++++++++++----- img/algo_completion_overview.tikz | 6 +++--- img/interpolation_basis.tikz | 6 +++--- img/interpolation_detail.tikz | 4 ++-- img/interpolation_edge_case.tikz | 6 +++--- img/multi_domain.tikz | 4 ++-- img/multi_domain_plain.tikz | 4 ++-- img/multi_grid.tikz | 4 ++-- img/overlap_zone.tikz | 4 ++-- 9 files changed, 29 insertions(+), 24 deletions(-) diff --git a/content.tex b/content.tex index 35c1643..370b131 100644 --- a/content.tex +++ b/content.tex @@ -221,6 +221,7 @@ Kern des Multi-Domain Ansatzes ist es, außerhalb von etwaigen verfahrensbedingt \caption{Teiligitter in der Multi-Domain Herangehensweise} \end{figure} +\noindent Vorteil gegenüber des Multi-Grid Ansatzes ist hier der weiter reduzierte Speicherbedarf sowie erwartete Einsparungen in der benötigten Rechenzeit. Erkauft werden diese Vorteile durch aufwendigere Kopplung \cite[Kap.~3.1]{lagrava12} der verschiedenen Teilgitter in den Übergangsbereichen. \newpage @@ -500,6 +501,12 @@ Entsprechend (\ref{eq:gridTime}) müssen für jeden groben Zeitschritt \(\delta \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{figure}[h] +\centering +\input{img/algo_completion_overview.tikz} +\caption{Übersicht der zu vervollständigenden Knoten} +\end{figure} + \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 Kopplungen (\ref{eq:expandedDirectG2F}) und (\ref{eq:expandedInterpolG2F}) anzuwenden, fehlen jedoch Werte der groben Stützstellen \(\smash{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}) zur linearen Zeitinterpolation der benötigten Werte von \(\rho_g, u_g\) und \(f_{g,i}^\text{neq}\): \[\star(x,t+\delta t_f) \approx \frac{\star(x,t+\delta t_g) + \star(x,t)}{2} \text{ für } \star \in \{\rho_g,u_g,f_{g,i}^\text{neq}\}, x \in \G\] @@ -513,11 +520,6 @@ Der Interpolationsoperator vierter Ordnung (\ref{eq:ipol4ord}) löst sich dabei \ipolarg{\star}{x_{g \to f}^f} = &\frac{9}{16}(\star(x_{g \to f}^f-\delta x_f v, t+\delta t_f) + \star(x_{g \to f}^f+\delta x_f v, t+\delta t_f))\\ + &\frac{1}{16}(\star(x_{g \to f}^f-3\delta x_f v, t+\delta t_f) + \star(x_{g \to f}^f+3\delta x_f v, t+\delta t_f)) \end{align*} -\begin{figure}[h] -\centering -\input{img/algo_completion_overview.tikz} -\caption{Übersicht der zu vervollständigenden Knoten} -\end{figure} \item[Vervollständigung von \(\F\) zu Zeitpunkt \(t+\delta t_g\):] 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. @@ -529,6 +531,9 @@ f_{g,i}(x_{f \to g},t+\delta t_g) &= f_i^\text{eq}(\rho_f(x_{f \to g},t+\delta t \end{description} Zu erwähnen bleibt, dass wir aus Konsistenzgründen alle Kopplungsformeln immer auf alle -- und nicht nur die fehlenden -- Richtungen \(i \in [q-1]\) einer betrachteten Zelle \(x\) anwenden. +Nach Durchführung der drei Vervollständigungsschritte haben wir die Invariante für \(t+\delta t_g\) wieder hergestellt und können von vorne beginnen. + + % ToDo: Einschränkungen der Gitterpositionierung (keine hängenden feinen Knoten) ausarbeiten % ToDo: Randfälle der Restriktion ausarbeiten, analog zu Interpolation (fehlt im Paper) % ToDo: Experimentelle Begründung, warum Kopplungsformel immer auf alle Richtungen angewandt wird diff --git a/img/algo_completion_overview.tikz b/img/algo_completion_overview.tikz index 8d06eda..d6a8e70 100644 --- a/img/algo_completion_overview.tikz +++ b/img/algo_completion_overview.tikz @@ -1,9 +1,9 @@ \begin{tikzpicture}[ scale=0.6, coarse/.style={circle,draw=gray,inner sep=2}, - fine/.style={cross out,draw=gray,inner sep=2}, - fchange/.style={ultra thick,draw=black,inner sep=1}, - cchange/.style={ultra thick,draw=black} + fine/.style={cross out,draw=gray,inner sep=1}, + fchange/.style={very thick,draw=black}, + cchange/.style={very thick,draw=black} ] \fill [gray!20!white] (12+2.3,1.3) rectangle (12+3.7,5.7); diff --git a/img/interpolation_basis.tikz b/img/interpolation_basis.tikz index 1d8d86e..567e8be 100644 --- a/img/interpolation_basis.tikz +++ b/img/interpolation_basis.tikz @@ -1,8 +1,8 @@ \begin{tikzpicture}[ scale=1.5, - coarse/.style={circle,draw=gray,inner sep=4pt}, + coarse/.style={circle,draw=gray,inner sep=4}, + fine/.style={cross out,draw=gray,inner sep=2}, ibase/.style={coarse,draw=black,very thick}, - fine/.style={cross out,draw=gray,minimum size=8pt}, wantedfine/.style={fine,draw=black,ultra thick}, arrow/.style={-{Latex[length=2mm]},thick} ] @@ -21,7 +21,7 @@ \node[ibase] at (2,0){ }; \node[ibase] at (2,-1){ }; -\draw[dashed,thick] (1.8,-1.2) rectangle (2.2,2.2); +\draw[dashed,very thick] (1.8,-1.2) rectangle (2.2,2.2); \draw[dashed,draw=gray] (2.8,-1.2) rectangle (3.2,2.2); \draw[arrow] (2,3.3) node[right] {Interpolation von grob nach fein, \(\U_{g \to f}\)} -- (2,2.3); diff --git a/img/interpolation_detail.tikz b/img/interpolation_detail.tikz index c8eeb5a..29cd74e 100644 --- a/img/interpolation_detail.tikz +++ b/img/interpolation_detail.tikz @@ -1,8 +1,8 @@ \begin{tikzpicture}[ scale=1.5, - coarse/.style={circle,draw=gray,inner sep=4pt}, + coarse/.style={circle,draw=gray,inner sep=4}, + fine/.style={cross out,draw=gray,inner sep=2}, ibase/.style={coarse,draw=black,very thick}, - fine/.style={cross out,draw=gray,inner sep=4pt}, wantedfine/.style={fine,draw=black,ultra thick}, arrow/.style={-{Latex[length=2mm]},thick} ] diff --git a/img/interpolation_edge_case.tikz b/img/interpolation_edge_case.tikz index b0a8d44..1105588 100644 --- a/img/interpolation_edge_case.tikz +++ b/img/interpolation_edge_case.tikz @@ -1,8 +1,8 @@ \begin{tikzpicture}[ scale=1.5, - coarse/.style={circle,draw=gray,inner sep=4pt}, + coarse/.style={circle,draw=gray,inner sep=4}, + fine/.style={cross out,draw=gray,inner sep=2}, ibase/.style={coarse,draw=black!40!blue,very thick}, - fine/.style={cross out,draw=gray,minimum size=8pt}, wantedfine/.style={fine,draw=black!40!blue,ultra thick}, arrow/.style={-{Latex[length=2mm]},thick}, ] @@ -29,7 +29,7 @@ \node[ibase,draw=black!40!green] at (5,1){ }; \node[ibase,draw=black!40!green] at (4,1){ }; -\draw[dashed,thick] (1.8,-2.2) -- (1.8,1.2) -- (6.2,1.2) -- (6.2,0.8) -- (2.2,0.8) -- (2.2,-2.2) -- (1.8,-2.2); +\draw[dashed,very thick] (1.8,-2.2) -- (1.8,1.2) -- (6.2,1.2) -- (6.2,0.8) -- (2.2,0.8) -- (2.2,-2.2) -- (1.8,-2.2); \draw[dashed,draw=gray] (2.8,-2.2) -- (2.8,0.2) -- (6.2,0.2) -- (6.2,-0.2) -- (3.2,-0.2) -- (3.2,-2.2) -- (2.8,-2.2); \end{tikzpicture} diff --git a/img/multi_domain.tikz b/img/multi_domain.tikz index 8b9a02c..7fa0072 100644 --- a/img/multi_domain.tikz +++ b/img/multi_domain.tikz @@ -1,7 +1,7 @@ \begin{tikzpicture}[ scale=0.4, - coarse/.style={circle,draw=black,inner sep=2pt}, - fine/.style={circle,draw=black,inner sep=1pt} + coarse/.style={circle,draw=black,inner sep=2}, + fine/.style={cross out,draw=black,inner sep=1}, ] \foreach \x in {0,...,3} diff --git a/img/multi_domain_plain.tikz b/img/multi_domain_plain.tikz index 29c0276..f58b762 100644 --- a/img/multi_domain_plain.tikz +++ b/img/multi_domain_plain.tikz @@ -1,7 +1,7 @@ \begin{tikzpicture}[ scale=0.4, - coarse/.style={circle,draw=black,inner sep=2pt}, - fine/.style={circle,draw=black,inner sep=1pt} + coarse/.style={circle,draw=black,inner sep=2}, + fine/.style={cross out,draw=black,inner sep=1}, ] \foreach \x in {0,...,3} diff --git a/img/multi_grid.tikz b/img/multi_grid.tikz index b58b609..30b0036 100644 --- a/img/multi_grid.tikz +++ b/img/multi_grid.tikz @@ -1,7 +1,7 @@ \begin{tikzpicture}[ scale=0.4, - coarse/.style={circle,draw=black,inner sep=2pt}, - fine/.style={circle,draw=black,inner sep=1pt} + coarse/.style={circle,draw=black,inner sep=2}, + fine/.style={cross out,draw=black,inner sep=1}, ] \foreach \x in {0,...,7} diff --git a/img/overlap_zone.tikz b/img/overlap_zone.tikz index 63476b2..bdf0f00 100644 --- a/img/overlap_zone.tikz +++ b/img/overlap_zone.tikz @@ -1,7 +1,7 @@ \begin{tikzpicture}[ scale=1.5, - coarse/.style={circle,draw=black,thick,inner sep=4pt}, - fine/.style={cross out,draw=black,thick,minimum size=8pt}, + coarse/.style={circle,draw=black,thick,inner sep=4}, + fine/.style={cross out,draw=black,thick,inner sep=2}, arrow/.style={-{Latex[length=2mm]},thick} ] -- cgit v1.2.3