From: Peter Schaefer Date: Tue, 23 Apr 2013 12:01:01 +0000 (+0200) Subject: [doc] 2DQuad fast fertig (Zeit von Quadgrad vergleich fehlt noch) X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=5e30a101885f70b903d24588a5917566928f605b;p=bacc.git [doc] 2DQuad fast fertig (Zeit von Quadgrad vergleich fehlt noch) [src] kleine Fehler behoben und Zeitmessung umgestellt --- diff --git a/doc/doc.pdf b/doc/doc.pdf index 4abbe24..87adc0b 100644 Binary files a/doc/doc.pdf and b/doc/doc.pdf differ diff --git a/doc/doc.tex b/doc/doc.tex index 0bf468b..572ce0b 100644 --- a/doc/doc.tex +++ b/doc/doc.tex @@ -178,11 +178,11 @@ \psfrag{Zeit 132t05n05 QEQA}{\tiny Zeit semiquadratur QE} \psfrag{cond 132t05n05 QEQA}{\tiny Kondition semiquadratur QE} -\psfrag{tmu 132t05n05 QA}{\tiny $\tilde \mu$ semiquadratur Q} -\psfrag{eta 132t05n05 QA}{\tiny $\eta$ semiquadratur Q} -\psfrag{fehler 132t05n05 QA}{\tiny Fehler semiquadratur Q} -\psfrag{Zeit 132t05n05 QA}{\tiny Zeit semiquadratur Q} -\psfrag{cond 132t05n05 QA}{\tiny Kondition semiquadratur Q} +\psfrag{tmu 132t05n05 QA}{\tiny $\tilde \mu$ volle Quadratur} +\psfrag{eta 132t05n05 QA}{\tiny $\eta$ volle Quadratur} +\psfrag{fehler 132t05n05 QA}{\tiny Fehler volle Quadratur} +\psfrag{Zeit 132t05n05 QA}{\tiny Zeit volle Quadratur} +\psfrag{cond 132t05n05 QA}{\tiny Kondition volle Quadratur} @@ -2184,7 +2184,7 @@ Zunächst wollen wir drei Verfeinerungs-Strategien genauer untersuchen. Hierzu b \centering \subfloat[Fehler und Fehlerschätzer für das Quadrat \label{fig:2DQuad:verfeinern:err}]{\includegraphics[width=0.5\textwidth]{fig/1tn_2DQuad_error}} \subfloat[Seitenverhältnisse für das Quadrat \label{fig:2DQuad:verfeinern:hminmax}]{\includegraphics[width=0.5\textwidth]{fig/1tn_2DQuad_hminmax}}\\ -\subfloat[Kondition der $V_{\ell}$ Matrix für das Quadrat \label{fig:2DQuad:verfeinern:cond}]{\includegraphics[width=0.5\textwidth]{fig/1tn_2DQuad_cond}} +\subfloat[Kondition der $\hat V_{\ell}$ Matrix für das Quadrat \label{fig:2DQuad:verfeinern:cond}]{\includegraphics[width=0.5\textwidth]{fig/1tn_2DQuad_cond}} \subfloat[Berechnungszeit für das Quadrat \label{fig:2DQuad:verfeinern:time}]{\includegraphics[width=0.5\textwidth]{fig/1tn_2DQuad_time}} \caption{Vergleich der Verfeinerungsstrategien auf dem Quadrat} \label{fig:2DQuad:verfeinern} @@ -2215,7 +2215,7 @@ Bei der "`adaptiv isotropen"' Strategie in \figLineB[] ist am Verhältnis $\min_ Anhand der \figLineC[] farbenen Linien, also der "`adaptiv anisotropen"' Strategie beobachten wir, am kleiner werdenden Verhältnis $\min_{}(h_{\min} /h_{\max})$, dass mit zunehmender Elementanzahl lange schmale Elemente entstehen. Am kleiner werden der anderen beiden Verhältnisse erkennen wir auch hier, dass die Differenz der Elementgrößen zunimmt. \noindent -Um auch die Stabilität der drei Strategien untersuchen zu können, sehen wir in der Abbildung \ref{fig:2DQuad:verfeinern:cond} die Konditionszahlen der $V_{\ell}$ Matrix in Abhängigkeit der Elementanzahl. +Um auch die Stabilität der drei Strategien untersuchen zu können, sehen wir in der Abbildung \ref{fig:2DQuad:verfeinern:cond} die Konditionszahlen der $\hat V_{\ell}$ Matrix in Abhängigkeit der Elementanzahl. Für die "`uniforme"' Strategie in \figLineA[] erkennen wir sehr gute Konditionszahlen, wissen aber, dass auch der Fehler der Galerkin-Lösung nur langsam gegen 0 konvergiert. Die Konditionszahlen der "`adaptiv anisotropen"' Strategie in \figLineC[] wachsen hingegen am schnellsten und steigen bei etwa 3000 Elemente sogar sprunghaft an. \noindent Weiterhin können wir in Abbildung \ref{fig:2DQuad:verfeinern:time} die benötigte Zeit für einen Berechnungsschritt ablesen. In einem Berechnungsschritt wird die Matrix $\hat V_{\ell}$ und $V_{\ell}$ aufgestellt und die Galerkin-Lösung inklusive aller Fehlerschätzer berechnet. Hierbei fällt auf, dass die Wahl der Strategie keinen Einfluss auf die benötigte Zeit hat, sondern nur die Anzahl der Elemente. Für die Berechnung mit 3000 Elementen benötigen alle drei Strategien etwa $10^4$ Sekunden, was fast drei Stunden entspricht. @@ -2236,7 +2236,7 @@ Bei der folgenden Berechnung werden wir wieder den Algorithmus \ref{alg:adapt} m \subfloat[Fehler und Fehlerschätzer für das Quadrat \label{fig:2DQuad:quad:err}]{\includegraphics[width=0.5\textwidth]{fig/2222t05n05_2DQuad_error}} % \subfloat[Seitenverhältnisse auf dem Quadrat \label{fig:2DQuad:quad:hminmax}]{\includegraphics[width=0.5\textwidth]{fig/2222t05n05_2DQuad_hminmax}} % \\ -% \subfloat[Kondition der $V_{\ell}$ Matrix \label{fig:2DQuad:quad:cond}]{\includegraphics[width=0.5\textwidth]{fig/2222t05n05_2DQuad_cond}} +% \subfloat[Kondition der $\hat V_{\ell}$ Matrix \label{fig:2DQuad:quad:cond}]{\includegraphics[width=0.5\textwidth]{fig/2222t05n05_2DQuad_cond}} \subfloat[Berechnungszeit für das Quadrat \label{fig:2DQuad:quad:time}]{\includegraphics[width=0.5\textwidth]{fig/2222t05n05_2DQuad_time}} \caption{Vergleich der Quadraturgrade auf dem Quadrat} \label{fig:2DQuad:quad} @@ -2263,13 +2263,24 @@ In der letzten Strategie "`volle Quadratur"' werden wir alle $\zeta_Q$-zulässig \subfloat[Fehler und Fehlerschätzer für das Quadrat \label{fig:2DQuad:sem:err}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_2DQuad_error}} % \subfloat[Seitenverhältnisse auf dem Quadrat \label{fig:2DQuad:quad:hminmax}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_2DQuad_hminmax}} \\ -\subfloat[Kondition der $V_{\ell}$ Matrix \label{fig:2DQuad:sem:cond}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_2DQuad_cond}} +\subfloat[Kondition der $\hat V_{\ell}$ Matrix \label{fig:2DQuad:sem:cond}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_2DQuad_cond}} \subfloat[Berechnungszeit für das Quadrat \label{fig:2DQuad:sem:time}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_2DQuad_time}} \caption{Vergleich der Berechnungsarten von $\hat V_{\ell}$ auf dem Quadrat} \label{fig:2DQuad:sem} \end{figure} +\noindent +In Abbildung \ref{fig:2DQuad:sem:err} haben wir die Ergebnisse des Fehlers gegenüber der tatsächlichen Lösung und der Fehlerschätzer $\tilde mu,\eta$ für die drei Strategien in Abhängigkeit der Elementanzahl vom Netz $\T_{\ell}$ eingezeichnet. Anhand der \figLineA[]farbenen Linie, welche den Fehler und Fehlerschätzer der "`analytischen"' Strategie zeigt, beobachten wir wieder eine gute Konvergenzrate bis etwa 2000 Elemente. Ab dieser Grenze, die auch in \figErr[] eingetragen wurde, erkennen wir deutlich, dass der $\tilde \mu$ Schätzer im Gegensatz zu den anderen Strategien wieder steigt. Der Fehler und $\eta$ Schätzer bleibt für die "`analytische"' Strategie in diesem Vergleich jedoch weiterhin stabil, was auf die Wahl des Steuerparameters der Verfeinerung zurückzuführen ist. An den Linien in \figLineB[] und \figLineC[] können wir die Ergebnisse für die "`semianalytische QE"' und "`volle Quadratur"' Strategie ablesen. Beide Strategien führen zu den selben Ergebnissen und zeigen auch für Berechnungen über 2000 Elemente eine gute Konvergenzrate von $N^{-3/4}$. +\noindent +In Abbildung \ref{fig:2DQuad:sem:cond} vergleichen wir noch einmal die Konditionszahlen der $\hat V_{\ell}$ Matrix für die verschiedenen Strategien. Auch hier wurde die \figErr[e] Grenzlinie bei etwa 2000 Elementen eingezeichnet. Anhand der Linie in \figLineA[] erkennen wir deutlich, dass ab der 2000 Elemente Grenze die Konditionszahlen für die analytische Berechnung sprunghaft gegenüber den Konditionszahlen der beiden Quadraturn in \figLineB[] und \figLineC[] ansteigen. Wir erkennen an dieser Stelle aber auch, dass die Kondtionszahlen der "`analytischen"' Berechnung schon ab 1000 Elementen von den Quadraturen geringfügig Abweichen und damit auf eine ungünstige Berechnung hindeuten. + +\noindent +Weiterhin wollen wir noch einmal die Laufzeit der drei Strategien in Abbildung \ref{fig:2DQuad:sem:time} betrachten. Gemessen wurde die Zeit eines Berechnungsschritt, welches wieder das Aufstellen der Matritzen und Lösen des Gleichungssystems beinhaltet. Hier erkennen wir, dass sich die Laufzeiten der drei Strategien nur minimal von einander unterscheiden. Für fast $10^4$ Elemente benötigen alle drei Berechnungsarten etwa $4*10^4$ Sekunden, was etwa elf Stunden entspricht. Da die Zeit zum Aufstellen im Vergleich der Quadraturgrade wesentlich kürzer war, können wir daraus schließen, dass die meiste Zeit beim Lösen und berechnen der Konditionszahlen verloren geht. + +\noindent +Die Ergebnisse zeigen, dass wir durch Gauss-Quadratur über das kleinere Element auf $\zeta_E$-zulässigen Elementen bis an die Speichergrenze stabil rechnen können und es nicht nötig ist alle Integrale durch Quadratur zu ersetzen. Weiterhin nimmt die Art der Berechnung von $\hat V_{\ell}$ kaum Einfluss auf die Laufzeit. +Damit haben wir in der semianalytischen Berechnung und adaptiv anisotroper Verfeinerung ein stabile Strategie für parallele Elemente gefunden. \subsection{Beispiel Fischer Würfel} Im Folgenden werden wir die Laplace-Gleichung @@ -2306,7 +2317,7 @@ Siehe Abbildung \ref{fig:3DFichCube:sem}. \\ \subfloat[Seitenverhältnisse auf dem Fischer Würfel \label{fig:3DFichCube:quad:hminmax}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_3DFichCube_hminmax}} % \\ -\subfloat[Kondition der $V_{\ell}$ Matrix \label{fig:3DFichCube:sem:cond}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_3DFichCube_cond}} +\subfloat[Kondition der $\hat V_{\ell}$ Matrix \label{fig:3DFichCube:sem:cond}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_3DFichCube_cond}} % \subfloat[Berechnungszeit für das Fischer Würfel \label{fig:3DFichCube:sem:time}]{\includegraphics[width=0.5\textwidth]{fig/132t05n05_3DFichCube_time}} \caption{Vergleich der Berechnungsarten von $\hat V_{\ell}$ auf dem Fischer Würfel} \label{fig:3DFichCube:sem} @@ -2358,19 +2369,19 @@ Siehe Abbildung \ref{fig:3DFichCube:sem}. % \end{itemize} -\showMesh[Beispiel 1.1]{exmpl11} +% \showMesh[Beispiel 1.1]{exmpl11} \showMesh[Beispiel 1.2]{exmpl12} \showMesh[Beispiel 1.3]{exmpl13} -\begin{figure}[ht] -\caption{Weitere Objekt Beispiele} -\centering -\label{fig:objects} -\subfloat[2D L Shape\label{fig:mesh:2DLShape}]{\includegraphics[width=0.5\textwidth]{fig/exmpl_2DLShape_ref}} -% \subfloat[2D Quad\label{fig:mesh:2DQuad}]{\includegraphics[width=0.5\textwidth]{fig/exmpl_2DQuad_ref}}\\ -\subfloat[3D Cube\label{fig:mesh:3DCube}]{\includegraphics[width=0.5\textwidth]{fig/exmpl_3DCube_ref}} -% \subfloat[3D FichCube\label{fig:mesh:3DFichCube}]{\includegraphics[width=0.5\textwidth]{fig/exmpl_3DFichCube_ref}} -\end{figure} +% \begin{figure}[ht] +% \caption{Weitere Objekt Beispiele} +% \centering +% \label{fig:objects} +% \subfloat[2D L Shape\label{fig:mesh:2DLShape}]{\includegraphics[width=0.5\textwidth]{fig/exmpl_2DLShape_ref}} +% % \subfloat[2D Quad\label{fig:mesh:2DQuad}]{\includegraphics[width=0.5\textwidth]{fig/exmpl_2DQuad_ref}}\\ +% \subfloat[3D Cube\label{fig:mesh:3DCube}]{\includegraphics[width=0.5\textwidth]{fig/exmpl_3DCube_ref}} +% % \subfloat[3D FichCube\label{fig:mesh:3DFichCube}]{\includegraphics[width=0.5\textwidth]{fig/exmpl_3DFichCube_ref}} +% \end{figure} \clearpage diff --git a/src/compute.m b/src/compute.m index 2290583..6be002e 100644 --- a/src/compute.m +++ b/src/compute.m @@ -174,7 +174,7 @@ for j = 1:times '% absolute Zeit ' t2str(build_time - start_time)]); end_time = build_time - start_time; - save ([ fileo int2str(size(data,1)) '_' int2str(typ(i))]... + save ([ 'tmu_' int2str(size(data,1)) '_' int2str(typ(i))]... , 'tmu') dataS = [dataS ...