]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] A_plots überarbeitet\
authortreecity <treecity@26120e32-c555-405d-b3e1-1f783fb42516>
Fri, 16 Mar 2012 15:09:27 +0000 (15:09 +0000)
committertreecity <treecity@26120e32-c555-405d-b3e1-1f783fb42516>
Fri, 16 Mar 2012 15:09:27 +0000 (15:09 +0000)
git-svn-id: https://drops.fb12.tu-berlin.de/svn/bacc/trunk@107 26120e32-c555-405d-b3e1-1f783fb42516

doc/doc1.pdf
doc/doc2.tex
src/A_plots.m
src/A_step.m
src/computeEstSlpMuTilde.m
src/test_sol.m

index 449c97bdb4c5e56c8ff5abf002a11254bd7388eb..41c4901795ea910631597d97c21cd45936e93b83 100644 (file)
Binary files a/doc/doc1.pdf and b/doc/doc1.pdf differ
index 69131635d100acd9879473f7a47bb571f5787269..dc37bbee624a638dc19011aa64262af853d3fb29 100644 (file)
@@ -13,7 +13,7 @@
 \hypersetup{linkbordercolor={1 1 1},citebordercolor={1 1 1},urlbordercolor={1 1 1}}
 
 
-\usepackage[ngerman]{babel}    %Sprachpacket für Überschriften
+\usepackage[ngerman]{babel}    %Sprachpacket für ├Ьberschriften
 \usepackage[utf8]{inputenc}    %Eingabekodierung
 \usepackage{fixltx2e}  %Deutschsprach Bugs
 
@@ -69,7 +69,7 @@ Jedes Element wird dann durch jeweils vier Koordinatenindizes als $M \times 4, M
 \begin{displaymath}
  ELE[i,1:4] = E_i := (v_1,v_2,v_3,v_4) \text{ wobei } v_1,v_2,v_3,v_4 \in C \und i \in \{1,2 \dots M\}
 \end{displaymath}
-Aufgrund der Netzstabilität wollen wir maximal zwei Nachbarn an einer Kante zulassen, weshalb wir nur $2*4$ Einträge für die Nachbarschaftsrelationen pro Element benötigen. In der $M \times 8$ Matrix sind die Indizes der Nachbarn $n_1,n_2 \in E$ der Kante $(v_k, v_{k^{+1}}) | k\in \{1,2,3,4\}$ des Elements $E_i$ an den Stellen $NEI[i,[k,k+4]]$ gespeichert. Sollte eine Seite keinen Nachbarn haben markieren wir diese mit einer $0$. Außerdem wird an Kanten mit nur einem Nachbarn der erste Index auf den Nachbarn gesetzt und der zweite auf $0$.(Siehe Figur:\ref{exmpl3:nei:part})
+Aufgrund der Netzstabilität wollen wir maximal zwei Nachbarn an einer Kante zulassen, weshalb wir nur $2*4$ Einträe für die Nachbarschaftsrelationen pro Element benötigen. In der $M \times 8$ Matrix sind die Indizes der Nachbarn $n_1,n_2 \in E$ der Kante $(v_k, v_{k^{+1}}) | k\in \{1,2,3,4\}$ des Elements $E_i$ an den Stellen $NEI[i,[k,k+4]]$ gespeichert. Sollte eine Seite keinen Nachbarn haben markieren wir diese mit einer $0$. Außerdem wird an Kanten mit nur einem Nachbarn der erste Index auf den Nachbarn gesetzt und der zweite auf $0$.(Siehe Figur:\ref{exmpl3:nei:part})
 \\\noindent
 Ein ausführliches Beispiel ist in Figure \ref{exmpl3} dargestellt.
 \showMesh[Beispiel 3]{exmpl3}
index f89b2329934b6e0473f8fb23616ea76b6cd2cf56..5793bcaea94b3560a8702017098437cfa6dd3964 100644 (file)
@@ -1,13 +1,15 @@
 function A_plots(files,printt)
 
 type2str = {'Analytisch  '   'Quad Element'   'Quad Achse  '  'Quad Seite  '};
+type2sym = {'-o' '-x' '-' '-'};
 
 G_D=[];
 X = [];
+leg0 = {};
 leg1 = {};
-leg2 = {};
-leg3 = {};
-leg4 = {};
+sym = {};
+
+rows = 5;
 
 
 for i = 1:length(files)
@@ -15,7 +17,7 @@ for i = 1:length(files)
    load(files{i});
       
    [m n] = size(data);
-   step = round(n/4);
+   step = round(n/rows);
    if step<1
     disp (['Error: No Data to show. : ' i])
     continue;
@@ -30,32 +32,35 @@ for i = 1:length(files)
    end
    
    G_D = [G_D data(:,2:end)];
-   X = [X repmat(data(:,1),1,step*4)];
+   X = [X repmat(data(:,1),1,step*rows)];
    
    p1 = find(files{i}=='/',1,'last')+1;
    p2 = find(files{i}(p1:end)=='_',1);
    
    l0 = [files{i}(p1:p1+p2-2) ' '];
-   l1 = {type2str{data(1,[2+(0:step-1)*4])}};
-   l2 ={};
-   l3 ={};
-   l4 ={};
+   l1 = {type2str{data(1,[2+(0:step-1)*rows])}};
+   l2 ={};
+   l3 ={};
+   l4 ={};
    for i = 1:step
-      l2{i} = [ l0 l1{i}];
-      l3{i} = ['\mu ' l0 l1{i}];
-      l4{i} = ['\eta ' l0 l1{i}];
-      l5{i} = ['error ' l0 l1{i}];
+      leg0 = {leg0{:} ['\mu ' l0 l1{i}] ['\eta ' l0 l1{i}] ['error ' l0 l1{i}] ['\mu2 ' l0 l1{i}]}';
+      leg1 = {leg1{:} [ l0 l1{i}]}';
+      sym = {sym{:} type2sym{data(1,[2+(i-1)*rows])}}'
+%       l2{i} = [ l0 l1{i}];
+%       l3{i} = ['\mu ' l0 l1{i}];
+%       l4{i} = ['\eta ' l0 l1{i}];
+%       l5{i} = ['error ' l0 l1{i}];
    end
-
-   leg1 = {leg1{:} l2{:}}';
-   leg2 = {leg2{:} l3{:}}';
-   leg3 = {leg3{:} l4{:}}';
-   leg4 = {leg4{:} l5{:}}';
+%     leg0
+%    leg1 = {leg1{:} l2{:}}'
+%    leg2 = {leg2{:} l3{:}}'
+%    leg3 = {leg3{:} l4{:}}'
+%    leg4 = {leg4{:} l5{:}}'
     
 end
 
    [m n] = size(G_D);
-   step = round(n/4);
+   step = round(n/rows);
 
 if step<1
     disp ('Error: No Data to show.')
@@ -69,25 +74,41 @@ else
 
 % G_D
 figure(4)
-loglog(X(:,[2+(0:step-1)*4]),G_D(:,[2+(0:step-1)*4]),'--o')
+i=0;
+loglog(X(:,[2+(0:rows-2)]+rows*i),[G_D(:,2+rows*i) ...
+    G_D(:,2+1+rows*i)*G_D(1,2)/G_D(1,2+1+rows*i) ...
+    sqrt(abs(sol - G_D(:,2+2+rows*i)))*G_D(1,2)/sqrt(abs(sol - G_D(1,2+2+rows*i)))...
+    G_D(:,2+3+rows*i)*G_D(1,2)/G_D(1,2+3+rows*i)] ...
+    ,sym{i+1});
 hold on
-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)],'-.')
-
+for i = 1:step-1
+loglog(X(:,[2+(0:rows-2)]+rows*i),[G_D(:,2+rows*i) ...
+    G_D(:,2+1+rows*i)*G_D(1,2)/G_D(1,2+1+rows*i) ...
+    sqrt(abs(sol - G_D(:,2+2+rows*i)))*G_D(1,2)/sqrt(abs(sol - G_D(1,2+2+rows*i)))...
+    G_D(:,2+3+rows*i)*G_D(1,2)/G_D(1,2+3+rows*i)] ...
+    ,sym{i+1});
+    
+end
+loglog(X(:,1),[7*X(:,1).^(-1/2),3*X(:,1).^(-1/4),2*X(:,1).^(-3/4)],'-.')
 hold off
 
 title('Fehler')
 xlabel('Elemente');
 ylabel('Schaetzer');
-legend({leg2{:} leg3{:} leg4{:}...
+legend({leg0{:} ...
       'N^{-1/2}'  'N^{-1/4}'  'N^{-3/4}'...
      } ,'location','southwest','box', 'off');
 
 print('-r600','-depsc',[printt '_error.eps'])
  
 figure(5)
-loglog(X(:,[4+(0:step-1)*4]),G_D(:,[4+(0:step-1)*4]),'-*',X(:,1),repmat(sol,size(X,1),1),'-.')
+loglog(X(:,2),G_D(:,2+2),sym{1});
+hold on
+for i = 1:step-1
+    loglog(X(:,2+i*rows),G_D(:,2+2+i*rows),sym{i+1});
+end
+loglog(X(:,1),repmat(sol,size(X,1),1),'r-.')
+hold off
 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');
index 0aba3621928b01062eb95f73ca6683a71c6c2c17..7bb3ea563e736e214143b994246635806ccd0a88 100644 (file)
@@ -73,6 +73,15 @@ time = zeros(1,3);
     xo_fine(f2s) = repmat(x,1,4);
     xd_fine = xo_fine'-x_fine;
     ind2 = xd_fine'*A_fine*xd_fine;
+    
+    %Fehlerschätzer 3 Aufbauen
+    tmp = abs([sum(G_C(G_E(:,2),:)-G_C(G_E(:,1),:),2)...
+        sum(G_C(G_E(:,4),:)-G_C(G_E(:,1),:),2)]);
+    hmin = min(tmp,[],2);
+%     sum((x_fine(f2s)-repmat(x,1,4)).^2)
+    
+    sizes = sqrt(sum(quadNorm(G_C,G_E,'w').^2,2));
+     ind3 = hmin.*sizes.*sum((x_fine(f2s)'-repmat(x',4,1)).^2)'/4;
 
 
     %Energienorm^2 Berechnen
@@ -87,7 +96,7 @@ time = zeros(1,3);
     
     
     
-    data = [data type(i) sqrt(sum(ind)) sqrt(ind2) xe_fine];
+    data = [data type(i) sqrt(sum(ind)) sqrt(ind2) xe_fine sqrt(sum(ind3))];
   end
   time(2) = toc;
   
index 86e481f21215bb85899df779650be19273f33486..dce7564ea2c1e5db992b8c836a827715ecd67ace 100644 (file)
@@ -29,6 +29,6 @@ sizes = sqrt(sum(quadNorm(coo,ele,'w').^2,2));
 
 x_var = sum((xF2S-repmat(sum(xF2S,1)/4,4,1)).^2)';
 
-ind = hmin.* sizes .* x_var;
+ind = hmin.* sizes .* x_var/4;
 
 end
\ No newline at end of file
index 88c9c80bb0fb97d732259b5946bd2f5cf213265f..f49cdd77b54a7000a1c2631eb6b5021765833f1c 100644 (file)
@@ -7,7 +7,7 @@ mex mex_build_AU.cpp slpRectangle.cpp
 % Test ausführen
 
 %Anzahl der Schritte
-steps = 15;
+steps = 30;
 
 %LShape adaptiv anisotrop
 A_run('exmpl_2DQuad', steps, 0.7, [ 1], 0.5, 0.5, 'testAA_')