From: Peter Schaefer Date: Fri, 5 Oct 2012 16:11:57 +0000 (+0200) Subject: [doc] listings eingebunden X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=5014c2d2523df191b26632718871426aff72520a;p=bacc.git [doc] listings eingebunden --- diff --git a/doc/doc.bib b/doc/doc.bib new file mode 100644 index 0000000..a4b22bb --- /dev/null +++ b/doc/doc.bib @@ -0,0 +1,40 @@ +@comment{x-kbibtex-personnameformatting=<%l><, %f>} + +@article{dor:adapt, + __markedentry = "[treecity:6]", + abstract = "We construct a converging adaptive algorithm for linear elements applied to Poisson's equation in two space dimensions. Starting from a macro triangulation, we describe how to construct an initial triangulation from a priori information. Then we use a posteriori error estimators to get a sequence of refined triangulations and approximate solutions. It is proved that the error, measured in the energy norm, decreases at a constant rate in each step until a prescribed error bound is reached. Extensions to higher-order elements in two space dimensions and numerical results are included.", + author = "Dörfler, Willy", + copyright = "Copyright © 1996 Society for Industrial and Applied Mathematics", + issn = "00361429", + journal = "SIAM Journal on Numerical Analysis", + jstor_articletype = "research-article", + jstor_formatteddate = "Jun., 1996", + number = "3", + owner = "treecity", + pages = "pp. 1106--1124", + publisher = "Society for Industrial and Applied Mathematics", + timestamp = "2012.10.04", + title = "{A Convergent Adaptive Algorithm for Poisson's Equation}", + url = "http://www.jstor.org/stable/2158497", + volume = "33", + year = "1996" +} + +@article{fer:errbem, + author = "Ferraz-Leite, Samuel and Praetorius, Dirk", + journal = "Computing", + number = "4", + pages = "135--162", + title = "{Simple a posteriori error estimators fot the h-version of the boundary element method}", + volume = "83", + year = "2008" +} + +@techreport{mai:3dbem, + author = "Maischak, Matthias", + institution = "Institut f{\"u}r Angewandte Mthematik, University of Hannover", + month = jul, + title = "{The analytical computation of the Galerkin elements for the Laplace, Lam{\'e} and Helmholtz equation in 3D-BEM}", + year = "2000" +} + diff --git a/doc/doc.pdf b/doc/doc.pdf index 8b35c2c..5970c0c 100644 Binary files a/doc/doc.pdf and b/doc/doc.pdf differ diff --git a/doc/doc.tex b/doc/doc.tex index dc5e71a..0cc8ed3 100644 --- a/doc/doc.tex +++ b/doc/doc.tex @@ -1,5 +1,10 @@ \documentclass[a4paper,11pt,fleqn]{article} \usepackage{fullpage} %Seiten etwas Größer + +\usepackage[ngerman]{babel} %Sprachpacket für Überschriften +\usepackage[utf8]{inputenc} %Eingabekodierung +\usepackage{fixltx2e} %Deutschsprach Bugs + \usepackage{amsmath,amssymb} %Mathematische Symbole %\usepackage{moreverb} \usepackage{graphicx,psfrag,subfig} %Grafiken einbinden/Texte ersetzen/Bilder nebeneinander @@ -12,10 +17,21 @@ \usepackage{hyperref} %Links im Inhaltsverzeichnis \hypersetup{linkbordercolor={1 1 1},citebordercolor={1 1 1},urlbordercolor={1 1 1}} - -\usepackage[ngerman]{babel} %Sprachpacket für Überschriften -\usepackage[utf8]{inputenc} %Eingabekodierung -\usepackage{fixltx2e} %Deutschsprach Bugs +\usepackage{bibgerm} %Zitate und Referenzen Style + +\usepackage{lstings} %Code Einbinden (Private) + +\lstdefinelanguage{oC++}[ANSI]{C++}{ + morekeywords=[2]{pow,sqrt,fabs,log,asinh,atan,arsinh,cos,sin}, %lib Functions + morekeywords=[3]{quad,gauss_nodes,HILBERT3D_LAPLACE_SLPRECTANGLE_HPP_GUARD_}, %Globals + morekeywords=[4]{sign,max,min,switch_site,switch_dim ,dist,dist2,dist_s2,dist_s, + f_A,g_QY,g_AY,G_QY1Y2,G_AY2X2}, %own Functions +} +\lstdefinelanguage{oM}[]{Matlab}{ + morekeywords=[2]{}, %lib Functions + morekeywords=[3]{G_D}, %Globals + morekeywords=[4]{compute}, %own Functions +} \definecolor{gray}{gray}{.8} \definecolor{dred}{rgb}{.8,0,0} @@ -220,7 +236,7 @@ wobei $\varDelta u := \partial_x^2u+\partial_y^2u$ den Laplace-Operator bezeichn \section{Randelementmethode} \todo{ \begin{itemize} - \item kuerzer als in Ferraz-DA + \item kuerzer als in Ferraz-DA \cite{fer:errbem} \item insbesondere fastregulaere Triangulierung + K-Gitter (vgl. Ferraz-DA) \end{itemize} } @@ -306,6 +322,16 @@ analytisch/semidiskret/volldiskret \end{itemize} } +\noindent +Ziel diese Abschnitts ist die approximative Berechnung des Integrals +\begin{eqnarray}\label{math:gal:kap} +A_{jk} &=& \int_{T_j} \int_{T_k} \kappa(\bs x,\bs y) ds_{\bs y} ds_{\bs x}. +\end{eqnarray} +beziehungsweise als Spezialfall davon die Berechnung des Integrals +\begin{eqnarray}\label{math:gal:frac} +A_{jk} &=&\frac{1}{4\pi} \int_{T_j} \int_{T_k} \frac{1}{|\bs x- \bs y|} ds_{\bs y} ds_{\bs x}. +\end{eqnarray} +unter bestimmten Vorraussetzungen an die affinen Randstücke $T_j,T_k$ und den asymptotisch glatten Integranden $\kappa : \R^3 \times \R^3 \to \R$. \subsection{Gauss-Quadratur} \begin{displaymath} @@ -346,16 +372,19 @@ $\enorm{a}-\norm{b}$ Einfachschichtpotentials} \todo{ \begin{itemize} - \item Zusammenfassung des Maischak-Papers + \item Zusammenfassung des Maischak-Papers \cite{mai:3dbem} \item Ergebnisse ohne Beweise \item Betonen, wo Sie im Maischak-Paper einen Fehler gefunden haben \end{itemize} } -Es seien $T_j,T_k \subseteq\R^3$ zwei beschränkte, achsenorientierte Rechtecke in $\R^3$. -Die Berechnung der Matrix für das Galerkin-Verfahren benötigt die Auswertung von +\noindent +In diesem Abschnitt wollen wir uns mit der analytischen Berechnung der Galerkin-Matrix \begin{eqnarray}\label{math:V} -\frac{1}{4\pi} \int_{T_j} \int_{T_k} \frac{1}{|\bs x- \bs y|} ds_{\bs y} ds_{\bs x} \in \R^3. +A_{jk} &=& \frac{1}{4\pi} \int_{T_j} \int_{T_k} \frac{1}{|\bs x- \bs y|} ds_{\bs y} ds_{\bs x} \in \R^3. \end{eqnarray} +mit zwei beschränkte, achsenorientierte Rechtecke $T_j,T_k \subseteq\R^3$ beschäftigen. + +\noindent Wir betrachten zunächst die Berechnung von zwei Integralen, die dabei auftreten werden. \subsection{einfach Integral} Wir bezeichnen @@ -367,7 +396,7 @@ Für beliebige $x,p,y, \lambda \in \R$ mit $\lambda \neq 0$ gilt die Rekursionsf \begin{eqnarray*} (2p+1)g(p;y;x;\lambda) = (y-x) \{(y-x)^2+\lambda^2\}^p + 2p\lambda g(p-1;y;x;\lambda) \end{eqnarray*} -Für $p \in \{1/2 , 0 , -1/2 , -1, -3/2\}$ gilt explizit: +Für den Parameter $p \in \{1/2 , 0 , -1/2 , -1, -3/2\}$ gilt explizit: \begin{eqnarray*} g(1/2;y;x;\lambda) &=& \frac{y-x}{2}\{(y-x)^2+\lambda^2\}^{1/2} + \frac{\lambda^2}{2} \text{arsinh} \frac{y-x}{|\lambda|}\\ g(0;y;x;\lambda) &=& y-x\\ @@ -615,7 +644,7 @@ $[COO_{fine}, ELE_{fine}, NEI_{fine}, F2S ] = refineQuad(COO, ELE, NEI, marked); -\subsection{Markieren} +\subsection{Markieren} \cite{dor:adapt} Bestimme $M_{\ell} \subseteq T_{\ell}$ mit minimaler Kardinalität \begin{eqnarray*} \theta \sum_{T\in T_{\ell}} \mu_{\ell}(T)^2 & \leq & \sum_{T\in M_{\ell}} \mu_{\ell}(T)^2 @@ -707,7 +736,7 @@ Wie interpretiert man das? \subsection{Fehlerschätzer} In diesem Abschnitt definieren wir die a-posteriori Fehlerschätzer, die wir im Folgenden zur Steuerung des adaptiven Algorithmus einsetzen werden. Wir verwenden dazu die $h-h/2$ Strategie aus Ferraz-Leite (Provet. 108),wo die folgende Aussage bewiesen wird. -\begin{defi}Es bezeichne $\phi$ die Lösung von Formel \ref{Formel}, $\phi_{\ell}$ die Galerkinlösung auf dem Gitter $\T_{\ell}$ und $\hat \phi_{\ell}$ die Galerkinlösung auf dem uniform verfeinerten Gitter $\hat \T_{\ell}$. Dann gilt, der Schätzer +\begin{defi}Es bezeichne $\phi$ die Lösung von Formel , $\phi_{\ell}$ die Galerkinlösung auf dem Gitter $\T_{\ell}$ und $\hat \phi_{\ell}$ die Galerkinlö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} @@ -851,8 +880,11 @@ Die wichtigsten Funktionen \item plot \end{enumerate} } +\lstinputlisting[language=oC++]{../src/slpRectangle.cpp} +\lstinputlisting[language=oM]{../src/compute.m} - +\bibliographystyle{gerabbrv} +\bibliography{doc} \end{document} \ No newline at end of file diff --git a/doc/lstings.sty b/doc/lstings.sty new file mode 100755 index 0000000..7cc6820 --- /dev/null +++ b/doc/lstings.sty @@ -0,0 +1,54 @@ +%% Dieses Package ist eine Zusammenfassung von Packages und Konfigurationen +%% +%% TITLE = lstings +%% +%% + package listings & color +%% + sets the tt Font (to use bf with it) +%% + defines own colors (lst_*) +%% + sets the lststyle and default coloring styles +%% +%% P. Schaefer + + + +\usepackage{listings} +\usepackage{color} + +\renewcommand{\ttdefault}{pcr} + +\definecolor{lst_green}{rgb}{0,0.6,0} +\definecolor{lst_lgreen}{rgb}{0.6,0.6,0} +\definecolor{lst_gray}{rgb}{0.6,0.6,0.6} +\definecolor{lst_mauve}{rgb}{0.6,0,0.6} +\definecolor{lst_dmauve}{rgb}{0.3,0,0.3} +\definecolor{lst_blue}{rgb}{0,0,0.6} +\definecolor{lst_bleen}{rgb}{0,0.6,0.6} + + +\lstset{ % + basicstyle=\small\ttfamily, + numbers=left, + numberstyle=\tiny\color{lst_gray}, +% stepnumber=2, +% numbersep=5pt, +% backgroundcolor=\color{white}, + showspaces=false, + showstringspaces=false, +% showtabs=false, +% frame=single, +% rulecolor=\color{black}, + tabsize=2, +% captionpos=b, +% breaklines=true, +% breakatwhitespace=false, +% title=\lstname, +% identifierstyle=\color{red}, % + keywordstyle=[1]\color{lst_mauve}\bfseries, %buildin commands + keywordstyle=[2]\bfseries\color{lst_dmauve}, %lib commands + keywordstyle=[3]\color{lst_bleen}, %globals + keywordstyle=[4]\bfseries, %Functions + commentstyle=\color{lst_green}, + stringstyle=\color{lst_blue}, +% escapeinside={\%*}{*)}, +extendedchars=true +} \ No newline at end of file diff --git a/src/compute.m b/src/compute.m index 2e69bd7..d83bc0d 100644 --- a/src/compute.m +++ b/src/compute.m @@ -1,6 +1,6 @@ function [data er fileo] = compute(file,times,zeta,type,theta,nu,vcon) % [data er] = compute(file,times,zeta,type,theta,nu,vcon,out) -% Führt times Verfeinerungsschritte aus +% Fuehrt times Verfeinerungsschritte aus % % file - StartNetz % times - wie oft Verfeinert werden soll @@ -8,7 +8,7 @@ function [data er fileo] = compute(file,times,zeta,type,theta,nu,vcon) % theta - adaptiv? % nu - isotrop? % vcon - Vorkonditionierung der Matrix? 1 oder 0 -% out - (optional) Dateizusatz um Netz, Lösung & co zu speichern +% out - (optional) Dateizusatz um Netz, Loesung & co zu speichern % % P. Schaefer @@ -28,8 +28,6 @@ for j = 1:times old_x_fine = x_fine; end - - %uniformIsotrop Verfeinern [coo_fine,ele_fine,neigh_fine,f2s,sit_fine]=refineQuad(coordinates,elements,neigh,sites,2); @@ -50,7 +48,7 @@ for j = 1:times %Matrix aufbauen -> MEX V_fine = mex_build_V(coo_fine,ele_fine,zeta,type(i)); - %Testet auf Fehlerhafte Einträge (NaN +/-Inf) + %Testet auf Fehlerhafte Eintraege (NaN +/-Inf) [r c] = find(isnan(V_fine)~=isinf(V_fine)); if(~isempty(r)) figure(9) @@ -60,11 +58,11 @@ for j = 1:times end if(~vcon) - %Lösung Berechnen + %Loesung Berechnen x_fine = V_fine\b_fine; con = cond(V_fine); else - %Vorkonditionierte Lösung! + %Vorkonditionierte Loesung! D = diag(diag(V_fine.^(-1/2))); A = D * V_fine * D; @@ -77,7 +75,7 @@ for j = 1:times % \tilde \mu ( \Pi h -h + L_2 ) tmu = hmin.* b .* sum((x_fine(f2s)'-repmat(sum(x_fine(f2s)',1)/4,4,1)).^2)' /4; - %Fehlerschätzer 2 aufbauen + %Fehlerschaetzer 2 aufbauen V = mex_build_V(coordinates,elements,zeta,type(i)); if(~vcon) @@ -197,7 +195,7 @@ for j = 1:times % marked = ones(1,size(G_E,1)); % marked(find(sum((G_N(:,1:4)==0),2))) = 2; - % Markieren mit gewählten Parametern + % Markieren mit gewaehlten Parametern marked = mark(x_fine(f2s)',tmu,theta,nu); % Netz bunt Plotten! @@ -306,4 +304,4 @@ function str = t2str(time) end str = [num2str(round(time*1000)/1000) type]; -end \ No newline at end of file +end