]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] Daten Korrigiert\
authortreecity <treecity@26120e32-c555-405d-b3e1-1f783fb42516>
Thu, 15 Mar 2012 22:39:31 +0000 (22:39 +0000)
committertreecity <treecity@26120e32-c555-405d-b3e1-1f783fb42516>
Thu, 15 Mar 2012 22:39:31 +0000 (22:39 +0000)
[src] Anpassungen

git-svn-id: https://drops.fb12.tu-berlin.de/svn/bacc/trunk@106 26120e32-c555-405d-b3e1-1f783fb42516

doc/doc1.pdf
doc/doc2.tex
src/A_plots.m
src/A_step.m
src/meshSave/testAA_21_29.mat
src/meshSave/testAA_21_30.mat
src/test_sol.m

index e3e58fc992eca5b30ec10541e95725766beaae6c..449c97bdb4c5e56c8ff5abf002a11254bd7388eb 100644 (file)
Binary files a/doc/doc1.pdf and b/doc/doc1.pdf differ
index 0545be6812378a3d0090594ccb2355eb465603a3..69131635d100acd9879473f7a47bb571f5787269 100644 (file)
@@ -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
index b4e06a165ca1b946ac2d127e9478a6fd71adcbbf..f89b2329934b6e0473f8fb23616ea76b6cd2cf56 100644 (file)
@@ -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');
index 7215497bd86bfaaa4ab4ef422eb5110fb3f700ab..0aba3621928b01062eb95f73ca6683a71c6c2c17 100644 (file)
@@ -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;
   
index c33edac67e14e1c52eee61f5811e5a6cd7568869..5c1ad6c3a621f9c61780ccddaa288985ef512bdd 100644 (file)
Binary files a/src/meshSave/testAA_21_29.mat and b/src/meshSave/testAA_21_29.mat differ
index 51928b75c9731f42a2ab3f68c5ec27517ad34ce5..288c8e29ea0051f1b36282917dc3c877354abcc6 100644 (file)
Binary files a/src/meshSave/testAA_21_30.mat and b/src/meshSave/testAA_21_30.mat differ
index 1081176c29ab5bb1a439c95a8ee0bddf455eba22..88c9c80bb0fb97d732259b5946bd2f5cf213265f 100644 (file)
@@ -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_')