]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[doc] Plots ausgemistet
authorPeter Schaefer <schaeferpm@gmail.com>
Wed, 3 Apr 2013 14:32:46 +0000 (16:32 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Wed, 3 Apr 2013 14:32:46 +0000 (16:32 +0200)
[doc] mehr Text
[doc] Code % eingebunden

doc/doc.pdf
doc/doc.tex

index 9ba726ca60d5725cecbf0b763200f20c3e0900dc..9730ffb25670e4cbb9815fcc2e55024ace1746bb 100644 (file)
Binary files a/doc/doc.pdf and b/doc/doc.pdf differ
index 16fb0fe81511359b4b7dbe072b58c9a350561284..74979a97f39c7808030cb6320374ea1e5aa0eea7 100644 (file)
@@ -84,6 +84,7 @@
 \newcommand{\todo}[1]{\textcolor{dred}{#1}}
 \newcommand{\why}[1]{\textcolor{dblue}{#1}}
 \newcommand{\Matlab}{{\sc Matlab}}
+\newcommand{\Cpp}{{\sc C++}}
 
 \newcommand{\showMesh}[2][]{\begin{figure}[ht]
 \caption{#1}
@@ -287,7 +288,7 @@ wobei $\varDelta u := \partial_x^2u+\partial_y^2u+\partial_z^2u$ den Laplace-Ope
 % \end{align}
 
 
-\subsection{Netze}
+\subsection{Netze} \label{sec:bem:net}
 Für die Diskretisierung des Problems wollen wir nun einige Begriffe definieren. Zunächst wollen wir ein achsenorientiertes Rechteck beschreiben, dessen Seiten parallel zu den Achsen des kartesischen Koordinatensystems liegen.
 \begin{defi}\label{thm:def:T} Sei $\bs v \in \R^3$, $\bs a,\bs b \in \{(1,0,0)^T,(0,1,0)^T,(0,0,1)^T\}$ mit $\bs a\neq \bs b$ und $a, b \in \R$ mit $a, b > 0$. Dann heißt
 \begin{align*}
@@ -361,7 +362,7 @@ Ferner liegen auf jeder Kante von $\T_{\ell}$ maximal 3 Knoten.
 \label{fig:net}
 \end{figure}
 
-\subsection{Verfeinern}
+\subsection{Verfeinern}  \label{sec:bem:ref}
 \begin{defi}[Lokale Verfeinerung]
 Ein Element $T \in \T$ wird isotrop in vier Elemente $T_1,\ldots,T_4$ geteilt, wenn $T = \bigcup_{n=1}^4 T_n$ gilt und alle Söhne $T_1,\ldots,T_4$  ähnlich sind zum Vaterelement $T$. Weiterhin wird ein Element $T \in \T$ anisotrop in zwei Elemente $T_1,T_2$ geteilt, wenn ebenfalls $T = T_1 \cup T_2$ gilt und $T_1,T_2$ untereinander gleich sind. Hierbei kann $T$ entweder horizontal oder vertikal geteilt werden, wie in Abbildung~\ref{fig:refType} gezeigt ist.
 \end{defi}
@@ -826,16 +827,6 @@ Durch ziehen der Wurzel auf beiden Seiten, folgt dann die Behauptung.
 \end{beweis}
 
 
-\noindent
-\todo{
-\begin{itemize}
-  \item approx $A_p$ besser als $A$
-  \item aufgrund von Quadratur sehr viele Auswertungsstellen (Aufwändig)
-  \item Folge : Semianalytisch
-\end{itemize}
-}
-
-
 \subsection{Quadratur über ein Element}
 
 
@@ -967,7 +958,7 @@ weshalb die Behauptung folgt.
   Seien $T_j,T_k$ zwei $\zeta_E$ zulässige Rechtecke. Ist $\diam(T_j) \leq \diam(T_k)$ so kann Satz (\ref{thm:sem:quad:E}) angewendet werden um $A_{jk}$ zu approximieren. Im Fall $\diam(T_j) > \diam(T_k)$ können wir, da für $\zeta_E$-zulässige Elemente auch $\dist(T_j,T_k)>0$ gilt, $A_{jk}$ approximieren indem wir mithilfe von $A_{jk} = A_{kj}$ und Satz (\ref{thm:sem:quad:E}), $A_{kj}$ berechnen.
 \end{bem}
 
-\begin{defi} \label{thm:sem:quad:Ap}
+\begin{defi} \label{thm:sem:quad:AE}
   Seien $T_1,T_2,\ldots,T_n$ Rechtecke und $A \in \R^{n \times n}$ gegeben durch \eqref{math:gal:kap}. Dann ist die $A$ approximierende Matrix $A_p$ folgendermaßen definiert.
   \begin{itemize}
     \item Sind $T_j$ und $T_k$ $\zeta_E$-unzulässig, so ist
@@ -985,13 +976,13 @@ weshalb die Behauptung folgt.
   \end{itemize}
 \end{defi}
 
-\begin{sat}
+\begin{sat} \label{thm:sem:quad:EAE}
   Seien $T_1,T_2,\ldots,T_n$ Rechtecke. Sei $\kappa : \R^3\times \R^3 \to \R$ eine asymptotisch glatte Kernfunktion mit Konstanten $c_1,c_2$ und Singularitätsordung $s \geq 0$. Sei  $\tilde C_{\zeta_E,j,k}$ wie in \eqref{math:sem:zetaE:c} für $\zeta_E$-zulässsige Rechtecke $T_j,T_k$ und für unzulässige sei $\tilde C_{\zeta_E,j,k} = 0$ . Sei $A\in \R^{n \times n}$ eine Matrix, deren Einträge gegeben sind durch
   \begin{align*}
     A_{jk} 
     &= \int_{T_j} \int_{T_k} \kappa(\bs x,\bs y) ds_{\bs y} ds_{\bs x}.
   \end{align*}
-  und sei $A_p$ die $A$ approximierende Matrix gemäß Definition \ref{thm:sem:quad:Ap}. Dann gilt
+  und sei $A_p$ die $A$ approximierende Matrix gemäß Definition \ref{thm:sem:quad:AE}. Dann gilt
   \begin{align*}
     \norm{A-A_p}_F \leq n \max_{j=1,\ldots,n} \max_{k=1,\ldots,n} \tilde C_{\zeta_E,j,k}\Lambda_{2p+1}^2 2(p+1)\left(1+ \sqrt 2 c_2\zeta_E\right)^{-2(p+1)}.
   \end{align*}
@@ -1008,6 +999,18 @@ weshalb die Behauptung folgt.
 Durch ziehen der Wurzel auf beiden Seiten, folgt dann die Behauptung.
 \end{beweis}
 
+
+\noindent
+\todo{
+\begin{itemize}
+  \item approx $A_p$ besser als $A$
+  \item aufgrund von Quadratur sehr viele Auswertungsstellen (Aufwändig)
+  \item Folge : Semianalytisch
+\end{itemize}
+}
+
+
+
 % 
 % 
 % \subsection{Quadratur über eine Seite}
@@ -1599,8 +1602,14 @@ dy_2 dy_1 dx_2 dx_1\\
 \end{itemize}
 }
 
+\noindent
+In diesem Abschnitt werden wir die Implementierung etwas genauer betrachten. 
+Hierzu werden wir kurz Festhalten wie die Diskretisierung des Netzes aus Kapitel \ref{sec:bem:net} in \Matlab~und \Cpp umgesetzt wurde. 
+Weiterhin gehen wir auch auf die Implementierung des Verfeinern Algorithmus aus Kapitel \ref{sec:bem:ref} ein. 
+Dabei werden wir wichtige Schritte anhand des Codes und kleinen Beispielen hervorheben.
 \subsection{Datenstruktur}
-Für die Implementierung in \Matlab~und C++ werden wir eine einheitliche Datenstruktur einführen. 
+Für die Implementierung in \Matlab~und \Cpp~werden wir eine einheitliche Datenstruktur einführen. 
 Die für die Partition $\T_{\ell} = \{T_1\ldots T_N\}$ benötigten Knoten $\K_{\ell} = \{k_1\ldots k_M\}$ stellen wir in einer $M \times 3$ Matrix $COO$ dar. Dabei enthält die $j$-te Zeile die Koordinaten des Knoten $C_j$, d.h. :
 \begin{align}
 COO[j,1:3] = k_j := (x_j,y_j,z_j)^{T} \text{ wobei } x_j,y_j,z_j \in \R.
@@ -1620,20 +1629,13 @@ NEI[i,1:8] = N_i := (n_1,\ldots,n_8)
 Offensichtlich ist $i \notin N_i$. Wir wollen uns aber noch genauer eine geeignete Anordnung für die Nachbarelemente überlegen. Hierbei bezeichnen wir die Seite $[j,k]$ eines Elements als Seite 1 und gegen den Uhrzeigersinn alle weiteren mit $\{2,3,4\}$. Für den einfacheren Zugriff auf die Elemente einer Seite $s$, seien die Nachbarelemente zur Seite $s$ unter den Indizes $n_s$ und $n_{s+4}$ abgespeichert. Die Nachbarelemente $\{T_{n_s}, T_{n_{s+4}}\}$ liegen also an der Seite $s$ des Elements. Für Seiten die nur einen Nachbarn $T_{n_s}$ besitzen setzen wir $n_{s+4}=0$ und für Seiten mit keinem Nachbarn setzen wir $n_s = n_{s+4} = 0$. Daraus folgt unmittelbar, dass für $n_s =0$ auch $n_{s+4} = 0$ gilt, die Seite $s$ also keine Nachbarelemente besitzt und umgekehrt folgt aus $n_{s+4} \neq 0$ $n_s \neq 0$, womit die Seite $s$ genau zwei Nachbarelemente hat.
 (Siehe Abb.:\ref{exmpl13:nei:part})
 \begin{figure}[ht]
-\label{exmpl13:nei:part}
 \centering
 \subfloat[Lage]{\includegraphics{fig/Net_Neigh}}
 \subfloat[Nachbarn]{\input{fig/exmpl3_nei_part}}
-\caption{Nachbarschaftsrelationen Element 4 aus Abb.\ref{exmpl13}, wobei nur der Index der Elemente $T_{n_s}$ notiert wurde}
+\caption{\scriptsize An dieser Stellen wollen wir die Nachbarschaftsrelationen des Elements 4 aus Abb.\ref{exmpl13} hervorheben, denn das Element hat an den ersten beiden Seiten jeweils einen Nachbarn, an der dritten Seite zwei Nachbarn und an der vierten Seite keinen. Der Index der Nachbarelemente ist jeweils in den Nachbarschaftsrelationen gespeichert. Dass das Element 4 selbst Nachbar einer Seite mit zwei Elementen ist geht aus den Informationen für Element 4 nicht hervor, ist aber dafür in Element 9 vermerkt. Sollte beispielsweise das Element 7 oder 12 horizontal geteilt werden, so muss klarer Weise auch Element 4 mindestens horizontal geteilt werden, welches auch eine horizontale Teilung von Element 9 erzwingen würde.}
+\label{exmpl13:nei:part}
 \end{figure}
 
-\noindent
-Ein ausführliches Beispiel ist in Abbildung \ref{exmpl13} dargestellt.
-
-
-
-
-
 \subsection{Verfeinern}
 Diese Funktion sei die Implementierung von Algorithmus \ref{alg:refine}.
 Da wir im weiteren Verlauf sowohl adaptive also auch anisotrope Netzverfeinerung zulassen wollen, ist es sinnvoll eine Verfeinerungsfunktion zu implementieren, die alle möglichen Teilungsprozesse auf einem Element realisiert. Dabei sind vier nur wirklich relevant:
@@ -1658,10 +1660,11 @@ Da wir später den Fehlerschätzer berechnen wollen, ist es wichtig sich zu jede
 
 
 \begin{figure}[ht]
-\caption{VaterSohn}
 \centering
 \subfloat[VaterSohn aus \ref{exmpl12}]{\input{fig/exmpl12_f2s}}
 \subfloat[VaterSohn aus \ref{exmpl13}]{\input{fig/exmpl13_f2s}}
+\caption{VaterSohn}
+\label{exmpl1:f2s:part}
 \end{figure}
 
 
@@ -1681,10 +1684,11 @@ Da wir später den Fehlerschätzer berechnen wollen, ist es wichtig sich zu jede
 }
 
 \subsection{Fehlerschätzer}
-In diesem Abschnitt definieren wir die a-posteriori Fehlerschätzer, die wir zur Steuerung des adaptiven Algorithmus einsetzen werden.
-Wir verwenden dazu die $h-h/2$ Strategie aus \cite{fer:errbem}. 
+Mithilfe des Galerkin-Verfahrens berechnen wir nur eine approximative Lösung, für die wir eine Aussage über die Genauigkeit der Lösung treffen wollen. Da wir für den Fehler $\enorm{\phi - \phi_{\ell}}$, nur die Galerkin-Lösung $\phi_{\ell}$ kennen und die exakte Lösung $\phi$ unbekannt ist, werden wir im Folgenden verschiedene Fehlerschätzer betrachten.
+% In diesem Abschnitt definieren wir die a-posteriori Fehlerschätzer, die wir zur Steuerung des adaptiven Algorithmus einsetzen werden.
+Hierzu verwenden wir die $h-h/2$ Strategie aus \cite{fer:errbem}. 
 Im Folgenden bezeichnen wir mit $\hat \T_{\ell}$ das Gitter welches entsteht, wenn das Gitter $\T_{\ell}$ uniform, also entlang aller Kanten geteilt wird. Weiterhin bezeichne $\phi$ die exakte Lösung des Galerkin-Verfahrens und $\phi_{\ell}$ die Lösung zum Gitter $\T_{\ell}$, sowie $\hat \phi_{\ell}$ die Lösung zum uniformen Gitter $\hat \T_{\ell}$. 
-\begin{defi}Es bezeichne $\phi$ die Lösung von Formel \todo{ref}, $\phi_{\ell}$ die Galerkin-Lösung auf dem Gitter $\T_{\ell}$ und $\hat \phi_{\ell}$ die Lösung auf dem uniform verfeinerten Gitter $\hat \T_{\ell}$. Dann gilt, der Schätzer
+\begin{defi}Es bezeichne $\phi$ die exakte Lösung von Formel \todo{ref}, $\phi_{\ell}$ die Galerkin-Lösung auf dem Gitter $\T_{\ell}$ und $\hat \phi_{\ell}$ die Lösung auf dem uniform verfeinerten Gitter $\hat \T_{\ell}$. Dann gilt, der Schätzer
 \begin{align*}
 \eta_{\ell} &:= \enorm{\hat \phi_{\ell} - \phi_{\ell}}
 \end{align*}
@@ -1815,7 +1819,7 @@ implementiert die Definitionen zum Bestimmen der Markierung.
 % 
 
 
-\subsection{Adaptiver Algorithmus}
+\subsection{Adaptivität}
 Mithilfe der oben Definierten Funktionen ist es uns nun möglich den Ablauf der Berechnungen zusammen zu fassen.
 
 \begin{alg}[Adaptives Verfahren] Sei $\theta,\nu \in (0,1)$ fest gewählt und das Netz $\T_{\ell}$ gegeben.
@@ -1833,6 +1837,12 @@ Mithilfe der oben Definierten Funktionen ist es uns nun möglich den Ablauf der
 \end{enumerate}
 \end{alg}
 
+\begin{figure}[ht]
+  \caption{Adaptivität im Vergleich}
+  \label{fig:fig:exmpl_2DQuad_tn_A}
+\end{figure}
+
+
 % Zum Plotten (Abb.\ref{fig:exmplAA_2DQuad})werden noch folgende Schritte ausgeführt
 % \begin{itemize}
 % \item Berechne Galerkinlösung $\phi_{\ell} \in P^0(\T_{\ell})$
@@ -1882,63 +1892,7 @@ Mithilfe der oben Definierten Funktionen ist es uns nun möglich den Ablauf der
 \subfloat[3D FichCube]{\includegraphics[width=0.5\textwidth]{fig/exmpl_3DFichCube_ref}}
 \end{figure}
 
-\begin{figure}[ht]
-\caption{2D Quad adaptiv anisotrop vollanalytisch $V\phi = 1$}
-\centering
-\label{fig:exmplAA_2DQuad}
-\subfloat[Fehler]{\includegraphics[width=0.5\textwidth]{fig/1t05n05_2DQuad_error}}
-\subfloat[Seitenverhältnis]{\includegraphics[width=0.5\textwidth]{fig/1t05n05_2DQuad_hminmax}}\\
-\subfloat[Kondition]{\includegraphics[width=0.5\textwidth]{fig/1t05n05_2DQuad_cond}}
-\end{figure}
-
-\begin{figure}[ht]
-\caption{3D FichCube adaptiv anisotrop vollanalytisch $V\phi = 1$}
-\centering
-\label{fig:exmplAA_3DQuad}
-\subfloat[Fehler]{\includegraphics[width=0.5\textwidth]{fig/1t05n05_3DFichCube_error}}
-\subfloat[Seitenverhältnis]{\includegraphics[width=0.5\textwidth]{fig/1t05n05_3DFichCube_hminmax}}\\
-\subfloat[Kondition]{\includegraphics[width=0.5\textwidth]{fig/1t05n05_3DFichCube_cond}}
-\end{figure}
-
-\begin{figure}[ht]
-\caption{2D Quad adaptiv anisotrop analytisch und volleQuadratur $V\phi = 1$}
-\centering
-\label{fig:12t05n05_2DQuad_31}
-\subfloat[Fehler]{\includegraphics[width=0.5\textwidth]{fig/12t05n05_2DQuad_31_error}}
-\subfloat[Energie Norm]{\includegraphics[width=0.5\textwidth]{fig/12t05n05_2DQuad_31_norm}}\\
-\subfloat[Kondition]{\includegraphics[width=0.5\textwidth]{fig/12t05n05_2DQuad_31_cond}}
-\subfloat[Seitenverhältnis]{\includegraphics[width=0.5\textwidth]{fig/12t05n05_2DQuad_31_hminmax}}
-\end{figure}
-
-\begin{figure}[ht]
-\caption{2D Quad adaptiv anisotrop analytisch und Quadratur über ein Element und volleQuadratur $V\phi = 1$}
-\centering
-\label{fig:13t05n05_2DQuad_30}
-\subfloat[Fehler]{\includegraphics[width=0.5\textwidth]{fig/13t05n05_2DQuad_30_error}}
-\subfloat[Energie Norm]{\includegraphics[width=0.5\textwidth]{fig/13t05n05_2DQuad_30_norm}}\\
-\subfloat[Kondition]{\includegraphics[width=0.5\textwidth]{fig/13t05n05_2DQuad_30_cond}}
-\subfloat[Seitenverhältnis]{\includegraphics[width=0.5\textwidth]{fig/13t05n05_2DQuad_30_hminmax}}
-\end{figure}
-
-\begin{figure}[ht]
-\caption{2D Quad adaptiv anisotrop volleQuadratur mit verschiedenen Quadraturgraden $V\phi = 1$ (von oben nach unten $2^0,2^1,2^2,2^3,2^4$)}
-\centering
-\label{fig:22222t05n05_2DQuad_30}
-\subfloat[Fehler]{\includegraphics[width=0.5\textwidth]{fig/22222t05n05_2DQuad_30_error}}
-\subfloat[Energie Norm]{\includegraphics[width=0.5\textwidth]{fig/22222t05n05_2DQuad_30_norm}}\\
-\subfloat[Kondition]{\includegraphics[width=0.5\textwidth]{fig/22222t05n05_2DQuad_30_cond}}
-\subfloat[Seitenverhältnis]{\includegraphics[width=0.5\textwidth]{fig/22222t05n05_2DQuad_30_hminmax}}
-\end{figure}
-
-\begin{figure}[ht]
-\caption{3D FichCube adaptiv anisotrop analytisch und volleQuadratur $V\phi = 1$}
-\centering
-\label{fig:12t05n05_3DFichCube_22}
-\subfloat[Fehler]{\includegraphics[width=0.5\textwidth]{fig/12t05n05_3DFichCube_22_error}}
-\subfloat[Energie Norm]{\includegraphics[width=0.5\textwidth]{fig/12t05n05_3DFichCube_22_norm}}\\
-\subfloat[Kondition]{\includegraphics[width=0.5\textwidth]{fig/12t05n05_3DFichCube_22_cond}}
-\subfloat[Seitenverhältnis]{\includegraphics[width=0.5\textwidth]{fig/12t05n05_3DFichCube_22_hminmax}}
-\end{figure}
+\clearpage
 
 \section{Anhang Code}
 \todo{
@@ -1951,10 +1905,26 @@ Die wichtigsten Funktionen
 \item plot
 \end{enumerate}
 }
-% \lstinputlisting[language=oC++]{../src/slpRectangle.cpp}
-% \lstinputlisting[language=oM]{../src/compute.m}
-
-\newpage
+%  \subsection{C++}
+%   \subsubsection{mex\_build\_V.cpp}
+%  \lstinputlisting[language=C++]{../src/mex_build_V.cpp}
+%   \subsubsection{slpRectangle.hpp}
+%  \lstinputlisting[language=C++]{../src/slpRectangle.hpp}
+%   \subsubsection{slpRectangle.cpp}
+%  \lstinputlisting[language=C++]{../src/slpRectangle.cpp}
+%   \subsubsection{gauss.hpp}
+%  \lstinputlisting[language=C++]{../src/gauss.hpp}
+%  \subsection{Matlab}
+%   \subsubsection{compute.m}
+%  \lstinputlisting[language=M]{../src/compute.m}
+%   \subsubsection{refineQuad.m}
+%  \lstinputlisting[language=M]{../src/refineQuad.m}
+%   \subsubsection{areaQuad.m}
+%  \lstinputlisting[language=M]{../src/areaQuad.m}
+%   \subsubsection{mark.m}
+%  \lstinputlisting[language=M]{../src/mark.m}
+\clearpage
 \bibliographystyle{gerabbrv}
 \bibliography{doc}