-
-
\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}
\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);$
\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} \\
&=&\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*}
$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
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
end
[m n] = size(G_D);
- step = round(n/3);
+ step = round(n/4);
if step<1
disp ('Error: No Data to show.')
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
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');
- 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;
% 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_')