From: treecity Date: Thu, 15 Mar 2012 22:39:31 +0000 (+0000) Subject: [src] Daten Korrigiert\ X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=8771ccbf84229c3f756b4c114d0c1230e0f281b7;p=bacc.git [src] Daten Korrigiert\ [src] Anpassungen git-svn-id: https://drops.fb12.tu-berlin.de/svn/bacc/trunk@106 26120e32-c555-405d-b3e1-1f783fb42516 --- diff --git a/doc/doc1.pdf b/doc/doc1.pdf index e3e58fc..449c97b 100644 Binary files a/doc/doc1.pdf and b/doc/doc1.pdf differ diff --git a/doc/doc2.tex b/doc/doc2.tex index 0545be6..6913163 100644 --- a/doc/doc2.tex +++ b/doc/doc2.tex @@ -83,8 +83,6 @@ Ein ausführliches Beispiel ist in Figure \ref{exmpl3} dargestellt. - - \section{Verfeinern} 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 unterstützt. Dabei sind vier nur wirklich relevant: \begin{enumerate} @@ -93,13 +91,13 @@ Da wir im weiteren Verlauf sowohl adaptive also auch anisotrope Netzverfeinerung \item halbe Teilung in zwei gleichgroße horizontal liegende Elemente \item halbe Teilung in zwei gleichgroße vertikal liegende Elemente \end{enumerate} -Zusätzlich wurde auch Typ 5. belegt, welcher als Ergebnis eine volle Teilung 2. ausführt, diese aber schrittweise durch eine 3. Teilung und zwei 4. Teilungen. +Zusätzlich wurde auch Typ 5. belegt, welcher als Ergebnis eine volle Teilung 2. ausführt, diese aber schrittweise durch eine 3. Teilung und zwei 4. Teilungen. Aus Sicherheitsgründen wird auch jede vierte volle 2. Teilung durch eine 5. Teilung ausgeführt. Damit jedem Element $E_i$ eine Teilungsart zugeordnet werden kann, haben wir einen Markierungsvektor $marked \in {1,2,3,4,5}^M$ eingeführt. Dabei entspricht $marked_i$ der Art der Teilung für das Element $E_i$. Um isotrope und auch uniforme Teilungen zu erleichtern kann statt dem Vektor $marked$ auch nur ein Skalar übergeben werden $marked \in {1,2\dots5}$, wodurch jedes Element mit der gewählten Art verfeinert wird. Relevant zum Verfeinern eines Netzes sind also die Koordinaten $COO$, Elemente $ELE$ sowie die Nachbarschaftsrelationen $NEI$ und der Markierungsvektor $marked$. -Da wir später einen Fehlerschätzer berechnen wollen, ist es wichtig sich zu jedem Element seine Teilelemente zu merken. Dazu legen wir während der Teilung eine $M \times 4$ Matrix an, in der die maximal vier Elementindizes gespeichert sind. Wenn wir also ein Element in vier gleich große Teile verfeinern, so wird das neue Element links unten das erste sein und alle weiteren folgen im Kreis links herum. Teilen wir ein Element in zwei gleich große Elemente, so werden die doppelt belegten Quadranten auch doppelt eingetragen. Ein gar nicht geteiltes Element wird also vier mal den alten Indizes speichern. Dadurch wird sicher gestellt, dass das arithmetische Mittel über die Elemente immer gültig auszuführen ist. +Da wir später einen Fehlerschätzer berechnen wollen, ist es wichtig sich zu jedem Element seine Teilelemente zu merken. Dazu legen wir während der Teilung eine $M \times 4$ Matrix an, in der die maximal vier Elementindizes gespeichert sind. Wenn wir also ein Element in vier gleich große Teile verfeinern, so wird das neue Element links unten das erste sein und alle weiteren folgen gegen den Uhrzeigersinn. Teilen wir ein Element in zwei gleich große Elemente, so werden die doppelt belegten Quadranten auch doppelt eingetragen. Ein gar nicht geteiltes Element wird also vier mal den alten Indizes speichern. Dadurch wird sicher gestellt, dass das arithmetische Mittel über die Elemente immer gültig auszuführen ist. (Siehe Figur:\ref{exmpl3:f2s}) $[COO_{fine}, ELE_{fine}, NEI_{fine}, F2S ] = refineQuad(COO, ELE, NEI, marked);$ @@ -111,10 +109,13 @@ $[COO_{fine}, ELE_{fine}, NEI_{fine}, F2S ] = refineQuad(COO, ELE, NEI, marked); \subfloat[VaterSohn aus \ref{exmpl3}]{\input{fig/exmpl3_f2s}} \end{figure} + + + \section{Fehlerschätzer} \begin{eqnarray*} -\mu_h^2 & = & \norm{\varrho_h^{1/2}(\phi_{\frac h 2}-\Pi_h\phi_{\frac h 2})}_{\L^2(\T)}^2 \\ -& = &\sum_{T\in \T_h}\mu_h(T)^2\\ +%\mu_h^2 & = & \norm{\varrho_h^{1/2}(\phi_{\frac h 2}-\Pi_h\phi_{\frac h 2})}_{\L^2(\T)}^2 \\ +%& = &\sum_{T\in \T_h}\mu_h(T)^2\\ \mu_h(T)^2 & = & \norm{\varrho_h^{1/2}(\phi_{\frac h 2}-\Pi_h\phi_{\frac h 2})}_{\L^2(\T)}^2 \\ & = & h_{min}(T)\norm{\phi_{\frac h 2}-\Pi_h\phi_{\frac h 2}}_{\L^2(\T)}^2 \\ && T_j \in \tau_h, t_j^{(1)},\dots,t_j^{(4)} \in \tau_{\frac h 2} \\ @@ -130,11 +131,14 @@ $[COO_{fine}, ELE_{fine}, NEI_{fine}, F2S ] = refineQuad(COO, ELE, NEI, marked); &=&\sum_{k=1}^4 \int_{t_j^{(k)}}(x_j^{(k)}-m_j)^2d\Gamma\\ &=&\sum_{k=1}^4 \abs{t_j^{(k)}}(x_j^{(k)}-m_j)^2\\ &=&\frac {\abs{T_j}} 4\sum_{k=1}^4 (x_j^{(k)}-m_j)^2\\ -\mu_e(T_j)^2 & = & \frac{\why{ h_{min}(T_j)} \abs{T_j}}{4} \sum_{k=1}^4{(x_j^{(k)}-m_j)^2} +\mu_e(T_j)^2 & = & \frac{ h_{min}(T_j) \abs{T_j}}{4} \sum_{k=1}^4{(x_j^{(k)}-m_j)^2} \end{eqnarray*} $mu = computeEstSlpMuTilde(x_{fine}, COO, ELE, F2S);$ + + + \section{Markieren} Bestimme $M_e \subseteq T_e$ mit minimaler Kardinalität \begin{eqnarray*} @@ -164,4 +168,19 @@ Zur anisotropen Verfeinerung wird weiterhin berechnet: $xF2S := x_{fine}[F2S]$\\ $marked = computeEstSlpMuTilde(xF2S, mu, theta, eta);$ -\end{document} + + +\section{V Aufbauen} +Es seien \Ea, \Eb ~$\subseteq$~ $\R^3$ zwei beschränkte, achsenorientierte rechteckige Seiten in $\R^3$. +Berechnet werden soll: +\begin{eqnarray*} +-\frac{1}{4\pi} \int_E \int_{\tilde E} \frac{1}{|x-y|} ds_y ds_x \in \R^3 +\end{eqnarray*} + + +$V = mex_build_AU(COO,ELE,mu,type)$ + + + + +\end{document} \ No newline at end of file diff --git a/src/A_plots.m b/src/A_plots.m index b4e06a1..f89b232 100644 --- a/src/A_plots.m +++ b/src/A_plots.m @@ -42,8 +42,8 @@ for i = 1:length(files) l4 ={}; for i = 1:step l2{i} = [ l0 l1{i}]; - l3{i} = ['C^{-1}\mu ' l0 l1{i}]; - l4{i} = ['\mu ' l0 l1{i}]; + l3{i} = ['\mu ' l0 l1{i}]; + l4{i} = ['\eta ' l0 l1{i}]; l5{i} = ['error ' l0 l1{i}]; end @@ -55,7 +55,7 @@ for i = 1:length(files) end [m n] = size(G_D); - step = round(n/3); + step = round(n/4); if step<1 disp ('Error: No Data to show.') @@ -63,15 +63,17 @@ else data((end-8):end,[1 3 4 5]) - sol = interp1(1./X((1):(end-2),3)',G_D((1):(end-2),3)',0,'spline') +% sol = interp1(1./X((3):(12),3)',G_D((1):(12),3)',0,'spline') % sol = 8.28466; + sol = 4.609196 +% G_D figure(4) -loglog(X(:,[2+(0:step-1)*3]),G_D(:,[2+(0:step-1)*3]),'--o') +loglog(X(:,[2+(0:step-1)*4]),G_D(:,[2+(0:step-1)*4]),'--o') hold on -loglog(X(:,[3+(0:step-1)*3]), G_D(:,3+(0:step-1)*3)*G_D(1,2)/G_D(1,3),':x') -loglog(X(:,[4+(0:step-1)*3]), sqrt(abs(sol -G_D(:,4+(0:step-1)*3)))*G_D(1,2)/sqrt(abs(sol-G_D(1,4))),'-*') -loglog(X(:,1),[20*X(:,1).^(-1/2),6*X(:,1).^(-1/4),5*X(:,1).^(-3/4)],'-.') +loglog(X(:,[3+(0:step-1)*4]), G_D(:,3+(0:step-1)*4)*G_D(1,2)/G_D(1,3),'-x') +loglog(X(:,[4+(0:step-1)*4]), sqrt(abs(sol -G_D(:,4+(0:step-1)*4)))*G_D(1,2)/sqrt(abs(sol-G_D(1,4))),'-*') +loglog(X(:,1),[20*X(:,1).^(-1/2),5*X(:,1).^(-1/4),5*X(:,1).^(-3/4)],'-.') hold off @@ -85,8 +87,8 @@ legend({leg2{:} leg3{:} leg4{:}... print('-r600','-depsc',[printt '_error.eps']) figure(5) -loglog(X(:,[4+(0:step-1)*3]),G_D(:,[4+(0:step-1)*3]),'-*',X(:,1),repmat(sol,size(X,1),1),'-.') -ylim([min(min(G_D(:,[4+(0:step-1)*3]))) 1.005*max(max(G_D(:,[4+(0:step-1)*3])))]) +loglog(X(:,[4+(0:step-1)*4]),G_D(:,[4+(0:step-1)*4]),'-*',X(:,1),repmat(sol,size(X,1),1),'-.') +ylim([min(min(G_D(:,[4+(0:step-1)*4]))) 1.005*max(max(G_D(:,[4+(0:step-1)*4])))]) title('Energie Norm') xlabel('Elemente'); ylabel('eNorm^2'); diff --git a/src/A_step.m b/src/A_step.m index 7215497..0aba362 100644 --- a/src/A_step.m +++ b/src/A_step.m @@ -87,7 +87,7 @@ time = zeros(1,3); - data = [data type(i) sqrt(sum(ind)) ind2 xe_fine]; + data = [data type(i) sqrt(sum(ind)) sqrt(ind2) xe_fine]; end time(2) = toc; diff --git a/src/meshSave/testAA_21_29.mat b/src/meshSave/testAA_21_29.mat index c33edac..5c1ad6c 100644 Binary files a/src/meshSave/testAA_21_29.mat and b/src/meshSave/testAA_21_29.mat differ diff --git a/src/meshSave/testAA_21_30.mat b/src/meshSave/testAA_21_30.mat index 51928b7..288c8e2 100644 Binary files a/src/meshSave/testAA_21_30.mat and b/src/meshSave/testAA_21_30.mat differ diff --git a/src/test_sol.m b/src/test_sol.m index 1081176..88c9c80 100644 --- a/src/test_sol.m +++ b/src/test_sol.m @@ -7,10 +7,10 @@ mex mex_build_AU.cpp slpRectangle.cpp % Test ausführen %Anzahl der Schritte -steps = 40; +steps = 15; %LShape adaptiv anisotrop -A_run('exmpl_2DQuad', steps, 0.7, [2 1], 0.5, 0.5, 'testAA_') +A_run('exmpl_2DQuad', steps, 0.7, [ 1], 0.5, 0.5, 'testAA_') %LShape adaptiv isotrop % A_run('exmpl_2DLShape', steps, 0, 0.5, 0, 0, 'testAI_')