aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content.tex15
-rw-r--r--img/algo_completion_overview.tikz6
-rw-r--r--img/interpolation_basis.tikz6
-rw-r--r--img/interpolation_detail.tikz4
-rw-r--r--img/interpolation_edge_case.tikz6
-rw-r--r--img/multi_domain.tikz4
-rw-r--r--img/multi_domain_plain.tikz4
-rw-r--r--img/multi_grid.tikz4
-rw-r--r--img/overlap_zone.tikz4
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}
]