diff options
75 files changed, 30769 insertions, 358131 deletions
diff --git a/content.tex b/content.tex index 932e914..ef1ae00 100644 --- a/content.tex +++ b/content.tex @@ -1035,34 +1035,38 @@ Insgesamt war unter dieser formaleren Analyse unsere intuitive Wahl des in Abbil \caption{Verbesserte Verfeinerungsstruktur um den Zylinder}
\end{figure}
-Typischerweise sind LBM-Simulationen des umströmten Zylinders für wirbelbildende Reynolds-Zahlen bei kleineren Auflösungen empfindlich gegenüber Verteilungsdivergenz im Ausflussbereich. Dies deutet sich auch bei noch ausreichender Auslösung in den Verfeinerungsfaktoren des Ausgangsbereiches an. So divergiert ein uniform mit \(N=5\) aufgelöstes Gitter mit den verwendeten Parametern und Randbedingungen schon nach wenigen Schritten. Es wäre vorteilhaft, wenn sich dieses Problem unter Einsatz möglichst weniger zusätzlicher Gitterknoten beheben ließe -- etwa durch Verfeinerung des Ausflussbereiches. Und tatsächlich genügt schon die Verfeinerung eines schmalen Stücks des Ausgangsbereiches zur Stabilisierung der Simulation bei dieser niedrigen Auflösung. In Abbildung~\ref{fig:CylinderOptimizedGridN5} sehen wir den Geschwindigkeitsplot eines solchen Gitters.
+Typischerweise sind LBM-Simulationen des umströmten Zylinders für wirbelbildende Reynolds-Zahlen bei kleineren Auflösungen empfindlich gegenüber Verteilungsdivergenz im Ausflussbereich. Dies deutet sich auch bei noch ausreichender Auslösung in den Verfeinerungsfaktoren des Ausgangsbereiches an. So divergiert ein uniform mit \(N=5\) aufgelöstes Gitter mit den verwendeten Parametern und Randbedingungen schon nach wenigen Schritten. Es wäre vorteilhaft, wenn sich dieses Problem unter Einsatz möglichst weniger zusätzlicher Gitterknoten beheben ließe -- etwa durch Verfeinerung des Ausflussbereiches.
+Und tatsächlich genügt schon die Verfeinerung eines schmalen Stücks des Ausgangsbereiches zur Stabilisierung der Simulation bei dieser niedrigen Auflösung. In Abbildung~\ref{fig:CylinderOptimizedGridN5} sehen wir den Geschwindigkeitsplot eines solchen Gitters.
+
+\bigskip
+
+Dieses Beispiel gewinnt insbesondere an Eindruck, wenn wir die Gesamtanzahl der Gitterzellen mit den für ein stabiles uniformes Gitter benötigten Zellen vergleichen: Während das im Ausgang verfeinerte Gitter nur 3608 aktive Zellen beinhaltet, benötigt ein stabiles uniformes Gitter eine Auflösung von mindestens \(N=12\), was 13500 Zellen entspricht. Interessieren wir uns an dieser Stelle also nur für ein subjektiv korrektes und nicht-divergentes Strömungsbild, so ermöglicht uns Gitterverfeinerung ein Auskommen mit nur etwa einem Viertel der für ein unverfeinertes Gitter benötigten Zellen.
\begin{figure}[h]
\begin{adjustbox}{center}
-\includegraphics[width=1.2\textwidth]{img/static/cylinder2d_low_resolution_outflow_refine_60s.pdf}
+\includegraphics[width=1.2\textwidth]{img/static/cylinder2d_low_resolution_outflow_refine_n5_re100_16s.pdf}
\end{adjustbox}
\caption{Stabile Zylinderumströmung mit \(N=5\) durch Ausgangsverfeinerung}
\label{fig:CylinderOptimizedGridN5}
\end{figure}
-Dieses Beispiel gewinnt insbesondere an Eindruck, wenn wir die Gesamtanzahl der Gitterzellen mit den für ein stabiles uniformes Gitter benötigten Zellen vergleichen: Während das im Ausgang verfeinerte Gitter nur 2693 aktive Zellen beinhaltet, benötigt ein stabiles uniformes Gitter eine Auflösung von \(N=9\), was 7326 Zellen entspricht. Interessieren wir uns an dieser Stelle also nur für ein subjektiv korrektes und nicht-divergentes Strömungsbild, so ermöglicht uns Gitterverfeinerung ein Auskommen mit nur knapp einem Drittel der für ein unverfeinertes Gitter benötigten Zellen.
+Alternativ ist es möglich über das Festhalten der Anzahl der Freiheitsgrade, d.h. der Knotenanzahl, beschränkte Rechenressourcen besser auf die zu simulierende Strömungssituation anzupassen. Beispielsweise fällt auf, dass der zentrale Zylinder in Abbildung~\ref{fig:CylinderOptimizedGridN5} nur sehr grob modelliert wird. Entsprechend wollen wir versuchen, bei Einschränkung auf die Anzahl der Gitterknoten eines uniformen Gitters mit \(N=12\), ein besseres Gitter zu erzeugen.
\begin{figure}[h]
\begin{adjustbox}{center}
-\includegraphics[width=1.2\textwidth]{img/static/cylinder2d_unoptimized_low_resolution_grid_60s.pdf}
+\includegraphics[width=1.2\textwidth]{img/static/cylinder2d_unrefined_n12_re100_16s.pdf}
\end{adjustbox}
\begin{adjustbox}{center}
-\includegraphics[width=1.2\textwidth]{img/static/cylinder2d_optimized_low_resolution_grid_60s.pdf}
+\includegraphics[width=1.2\textwidth]{img/static/cylinder2d_optimized_refinement_n5_re100_16s.pdf}
\end{adjustbox}
\caption{Vergleich von uniform und problembezogen verteilten Freiheitsgraden}
\label{fig:CylinderOptimizedGridComparison}
\end{figure}
-Alternativ ist es möglich über das Festhalten der Anzahl der Freiheitsgrade, d.h. der Knotenanzahl, beschränkte Rechenressourcen besser auf die zu simulierende Strömungssituation anzupassen. Beispielsweise fällt auf, dass der zentrale Zylinder in Abbildung~\ref{fig:CylinderOptimizedGridN5} nur sehr grob modelliert wird. Entsprechend wollen wir versuchen, bei Einschränkung auf die Anzahl der Gitterknoten eines uniformen Gitters mit \(N=9\), ein besseres Gitter zu erzeugen.
-
-Wir sehen das Geschwindigkeitsbild dieser Bemühungen in Abbildung~\ref{fig:CylinderOptimizedGridComparison}. Die dort dargestellten Gitter beinhalten beide jeweils insgesamt \(7327\pm2\) Zellen. Der kleine Unterschied in der Knotenanzahl ist dabei der Einschränkung auf quaderförmige Gitter geschuldet, welche eine exakte Fixierung der Knotenanzahl erschwert.
+\newpage
+Wir sehen das Geschwindigkeitsbild dieser Bemühungen in Abbildung~\ref{fig:CylinderOptimizedGridComparison}. Die dort dargestellten Gitter beinhalten beide jeweils maximal 13500 Zellen. Der kleine Unterschied in der Knotenanzahl ist dabei der Einschränkung auf quaderförmige Gitter geschuldet, welche eine exakte Fixierung der Knotenanzahl erschwert.
-Klar zu erkennen ist die in der verfeinerten Variante deutlich bessere Diskretisierung des Zylinders durch Konzentration der verfügbaren Gitterknoten in dessen Umfeld. Eine formalere Analyse der Qualität dieses optimierten Gitters erwartet uns im nachfolgenden Unterkapitel.
+Klar zu erkennen ist die in der verfeinerten Variante deutlich bessere Diskretisierung des Zylinders durch Konzentration der verfügbaren Gitterknoten in dessen Umfeld. Auch liegt dem Ausfluss des verfeinerten Gitters die Divergenz ferner als dem Ausfluss des uniformen Gitters, an welchem sich schon Artefakte abzeichnen. Eine formalere Analyse der Qualität dieses optimierten Gitters erwartet uns im nachfolgenden Unterkapitel.
\bigskip
diff --git a/img/cylinder2d_improved_grid_n20_re100_16s_knudsen.gnuplot b/img/cylinder2d_improved_grid_n20_re100_16s_knudsen.gnuplot new file mode 100644 index 0000000..1ad5e8b --- /dev/null +++ b/img/cylinder2d_improved_grid_n20_re100_16s_knudsen.gnuplot @@ -0,0 +1,18 @@ +plotname = "cylinder2d_improved_grid_n20_re100_16s_knudsen" +knudsen = 0.000288675 + +load 'common/knudsen_fluid.gnuplot' + +plot 'data/cylinder2d_improved_grid_twice_refined_n20_re100_16s_0.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 1.3 notitle,\ + 'data/cylinder2d_improved_grid_twice_refined_n20_re100_16s_2.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 0.7 notitle,\ + 'data/cylinder2d_improved_grid_twice_refined_n20_re100_16s_1.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 0.3 notitle,\ + +load 'common/knudsen_wrapper.gnuplot' + +set obj 1 rect from 0.5,0.05 to 8.51,4.05 +set obj 1 fillstyle empty border -1 front lw 1 + +set obj 2 rect from 1,1.08 to 5.01,3.08 +set obj 2 fillstyle empty border -1 front lw 1 + +load 'common/include_fluid.gnuplot' diff --git a/img/cylinder2d_low_resolution_outflow_refine_60s.gnuplot b/img/cylinder2d_low_resolution_outflow_refine_60s.gnuplot deleted file mode 100644 index 42ec009..0000000 --- a/img/cylinder2d_low_resolution_outflow_refine_60s.gnuplot +++ /dev/null @@ -1,13 +0,0 @@ -plotname = "cylinder2d_low_resolution_outflow_refine_60s" - -load 'common/velocity_fluid.gnuplot' - -plot 'data/cylinder2d_low_resolution_outflow_refine_60s_1.csv' using ($6+0.05):($7+0.05):(sqrt($2*$2+$3*$3)) palette pt 5 ps 5.3 notitle,\ - 'data/cylinder2d_low_resolution_outflow_refine_60s_0.csv' using 6:($7+0.05):(sqrt($2*$2+$3*$3)) palette pt 5 ps 2.6 notitle\ - -load 'common/velocity_wrapper.gnuplot' - -set obj 3 rect from 20.95,0 to 22,4.1 -set obj 3 fillstyle empty border -1 front lw 1 - -load 'common/include_fluid.gnuplot' diff --git a/img/cylinder2d_low_resolution_outflow_refine_60s_knudsen.gnuplot b/img/cylinder2d_low_resolution_outflow_refine_60s_knudsen.gnuplot deleted file mode 100644 index ca0d5e9..0000000 --- a/img/cylinder2d_low_resolution_outflow_refine_60s_knudsen.gnuplot +++ /dev/null @@ -1,14 +0,0 @@ -plotname = "cylinder2d_low_resolution_outflow_refine_60s_knudsen" -knudsen = 0.000866025 - -load 'common/knudsen_fluid.gnuplot' - -plot 'data/cylinder2d_low_resolution_outflow_refine_60s_1.csv' using ($6+0.05):($7+0.05):(log($5/knudsen)/log(2)) palette pt 5 ps 5.3 notitle,\ - 'data/cylinder2d_low_resolution_outflow_refine_60s_0.csv' using 6:($7+0.05):(log($5/knudsen)/log(2)) palette pt 5 ps 2.6 notitle\ - -load 'common/knudsen_wrapper.gnuplot' - -set obj 3 rect from 20.95,0 to 22,4.1 -set obj 3 fillstyle empty border -1 front lw 1 - -load 'common/include_fluid.gnuplot' diff --git a/img/cylinder2d_low_resolution_outflow_refine_n5_re100_16s.gnuplot b/img/cylinder2d_low_resolution_outflow_refine_n5_re100_16s.gnuplot new file mode 100644 index 0000000..5d5a46b --- /dev/null +++ b/img/cylinder2d_low_resolution_outflow_refine_n5_re100_16s.gnuplot @@ -0,0 +1,19 @@ +plotname = "cylinder2d_low_resolution_outflow_refine_n5_re100_16s" + +load 'common/velocity_fluid.gnuplot' + +set yrange [0:4.2] + +plot 'data/cylinder2d_low_resolution_outflow_refine_n5_re100_16s_2.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 5.3 notitle,\ + 'data/cylinder2d_low_resolution_outflow_refine_n5_re100_16s_1.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 2.6 notitle,\ + 'data/cylinder2d_low_resolution_outflow_refine_n5_re100_16s_0.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 2.6 notitle\ + +load 'common/velocity_wrapper.gnuplot' + +set obj 1 rect from 21.165,0 to 22,4.1 +set obj 1 fillstyle empty border -1 front lw 1 + +set obj 2 rect from 21.65,0 to 22,4.1 +set obj 2 fillstyle empty border -1 front lw 1 + +load 'common/include_fluid.gnuplot' diff --git a/img/cylinder2d_optimized_low_resolution_grid_60s.gnuplot b/img/cylinder2d_optimized_low_resolution_grid_60s.gnuplot deleted file mode 100644 index 7b9b453..0000000 --- a/img/cylinder2d_optimized_low_resolution_grid_60s.gnuplot +++ /dev/null @@ -1,27 +0,0 @@ -plotname = "cylinder2d_optimized_low_resolution_grid_60s" - -load 'common/velocity_fluid.gnuplot' - -plot 'data/cylinder2d_optimized_low_resolution_grid_60s_4.csv' using ($6+0.05):($7+0.05):(sqrt($2*$2+$3*$3)) palette pt 5 ps 5.3 notitle,\ - 'data/cylinder2d_optimized_low_resolution_grid_60s_3.csv' using ($6+0.05):($7+0.05):(sqrt($2*$2+$3*$3)) palette pt 5 ps 2.6 notitle,\ - 'data/cylinder2d_optimized_low_resolution_grid_60s_2.csv' using 6:($7+0.05):(sqrt($2*$2+$3*$3)) palette pt 5 ps 2.6 notitle,\ - 'data/cylinder2d_optimized_low_resolution_grid_60s_1.csv' using 6:($7+0.05):(sqrt($2*$2+$3*$3)) palette pt 5 ps 1.3 notitle,\ - 'data/cylinder2d_optimized_low_resolution_grid_60s_0.csv' using 6:($7+0.05):(sqrt($2*$2+$3*$3)) palette pt 5 ps 0.6 notitle,\ - -load 'common/velocity_wrapper.gnuplot' - -set obj 1 rect from 0.8,0.2 to 7.3,3.9 -set obj 1 fillstyle empty border -1 front lw 1 - -set obj 2 rect from 0.975,1.125 to 3.23,2.875 -set obj 2 fillstyle empty border -1 front lw 1 - -set obj 3 rect from 1.295,1.345 to 2.675,2.7 -set obj 3 fillstyle empty border -1 front lw 1 - -set obj 4 rect from 20.95,0 to 22,4.1 -set obj 4 fillstyle empty border -1 front lw 1 - -set title "Geeignet dreifach verfeinertes Gitter mit 7329 Knoten" - -load 'common/include_fluid.gnuplot' diff --git a/img/cylinder2d_optimized_low_resolution_grid_60s_knudsen.gnuplot b/img/cylinder2d_optimized_low_resolution_grid_60s_knudsen.gnuplot deleted file mode 100644 index 301a4fb..0000000 --- a/img/cylinder2d_optimized_low_resolution_grid_60s_knudsen.gnuplot +++ /dev/null @@ -1,23 +0,0 @@ -plotname = "cylinder2d_optimized_low_resolution_grid_60s_knudsen" -knudsen = 0.000866025 - -load 'common/knudsen_fluid.gnuplot' - -plot 'data/cylinder2d_optimized_low_resolution_grid_60s_3.csv' using ($6+0.05):($7+0.05):(log($5/knudsen)/log(2)) palette pt 5 ps 5.3 notitle,\ - 'data/cylinder2d_optimized_low_resolution_grid_60s_2.csv' using 6:($7+0.05):(log($5/knudsen)/log(2)) palette pt 5 ps 2.6 notitle,\ - 'data/cylinder2d_optimized_low_resolution_grid_60s_1.csv' using 6:($7+0.05):(log($5/knudsen)/log(2)) palette pt 5 ps 2.6 notitle,\ - 'data/cylinder2d_optimized_low_resolution_grid_60s_0.csv' using 6:($7+0.05):(log($5/knudsen)/log(2)) palette pt 5 ps 1.6 notitle,\ - -load 'common/knudsen_wrapper.gnuplot' - -set obj 1 rect from 0.75,0.2 to 8.85,3.9 -set obj 1 fillstyle empty border -1 front lw 1 - -set obj 2 rect from 0.95,1.0 to 4.65,3.05 -set obj 2 fillstyle empty border -1 front lw 1 -set obj 2 fillstyle empty border -1 front lw 1 - -set obj 3 rect from 20.95,0 to 22,4.1 -set obj 3 fillstyle empty border -1 front lw 1 - -load 'common/include_fluid.gnuplot' diff --git a/img/cylinder2d_optimized_refinement_n5_re100_16s.gnuplot b/img/cylinder2d_optimized_refinement_n5_re100_16s.gnuplot new file mode 100644 index 0000000..8c206e9 --- /dev/null +++ b/img/cylinder2d_optimized_refinement_n5_re100_16s.gnuplot @@ -0,0 +1,33 @@ +plotname = "cylinder2d_optimized_refinement_n5_re100_16s" + +load 'common/velocity_fluid.gnuplot' + +set yrange [0:4.2] + +plot 'data/cylinder2d_optimized_refinement_n5_re100_16s_5.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 5.3 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_4.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 2.6 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_2.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 2.6 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_3.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 1.7 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_1.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 1.7 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_0.csv' using ($6*10):($7*10):(sqrt($2*$2+$3*$3)) palette pt 5 ps 0.7 notitle\ + +load 'common/velocity_wrapper.gnuplot' + +set obj 1 rect from 21.165,0 to 22,4.1 +set obj 1 fillstyle empty border -1 front lw 1 + +set obj 2 rect from 21.65,0 to 22,4.1 +set obj 2 fillstyle empty border -1 front lw 1 + +set obj 3 rect from 1.4,1.45 to 2.675,2.7 +set obj 3 fillstyle empty border -1 front lw 1 + +set obj 4 rect from 0.97,0.355 to 6.05,3.75 +set obj 4 fillstyle empty border -1 front lw 1 + +set obj 5 rect from 0.55,0.15 to 11.05,3.95 +set obj 5 fillstyle empty border -1 front lw 1 + +set title "Geeignet dreifach verfeinertes Gitter mit 13454 Knoten" + +load 'common/include_fluid.gnuplot' diff --git a/img/cylinder2d_optimized_refinement_n5_re100_16s_knudsen.gnuplot b/img/cylinder2d_optimized_refinement_n5_re100_16s_knudsen.gnuplot new file mode 100644 index 0000000..b31be02 --- /dev/null +++ b/img/cylinder2d_optimized_refinement_n5_re100_16s_knudsen.gnuplot @@ -0,0 +1,32 @@ +plotname = "cylinder2d_optimized_refinement_n5_re100_16s_knudsen" +knudsen = 0.0011547 + +load 'common/knudsen_fluid.gnuplot' + +set yrange [0:4.2] + +plot 'data/cylinder2d_optimized_refinement_n5_re100_16s_5.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 5.3 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_4.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 2.6 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_2.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 2.6 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_3.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 1.7 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_1.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 1.7 notitle,\ + 'data/cylinder2d_optimized_refinement_n5_re100_16s_0.csv' using ($6*10):($7*10):(log($5/knudsen)/log(2)) palette pt 5 ps 0.7 notitle\ + +load 'common/knudsen_wrapper.gnuplot' + +set obj 1 rect from 21.165,0 to 22,4.1 +set obj 1 fillstyle empty border -1 front lw 1 + +set obj 2 rect from 21.65,0 to 22,4.1 +set obj 2 fillstyle empty border -1 front lw 1 + +set obj 3 rect from 1.4,1.45 to 2.675,2.7 +set obj 3 fillstyle empty border -1 front lw 1 + +set obj 4 rect from 0.97,0.355 to 6.05,3.75 +set obj 4 fillstyle empty border -1 front lw 1 + +set obj 5 rect from 0.55,0.15 to 11.05,3.95 +set obj 5 fillstyle empty border -1 front lw 1 + +load 'common/include_fluid.gnupl |