]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] sites in Beispielen gespeichert
authorPeter Schaefer <peter.schaefer@tuwien.ac.at>
Fri, 6 Apr 2012 09:46:03 +0000 (11:46 +0200)
committerPeter Schaefer <peter.schaefer@tuwien.ac.at>
Fri, 6 Apr 2012 09:46:03 +0000 (11:46 +0200)
[src] areaQuad auf sites umgestellt (keine Normen mehr!)
[src] refineQuad auf sites umgestellt
[src] global load & save auf sites umgestellt
[src] A_step auf sites umgestellt

src/A_loadMeshF.m
src/A_saveMesh.m
src/A_step.m
src/areaQuad.m
src/exmpl_2DLShape.mat
src/exmpl_2DQuad.mat
src/refineQuad.m

index 9879040d5f44c01d9d2e4bbb835fded2e0029d2c..edfc6e303911e4f8ba24333e06638914637a54e5 100644 (file)
@@ -11,10 +11,12 @@ function A_loadMeshF(file)
   global G_N;
   global G_T;
   global G_D;
+  global G_S;
   
   G_C = coordinates;
   G_E = elements;
   G_N = neigh;
+  G_S = sites;
   G_T = [];
   G_D = [];
   
index 4dce79eac34271eb6394610cb2671e4d4ad5df71..5f151243e222ec164f14d15d5eea99406cea8ac5 100644 (file)
@@ -5,19 +5,21 @@ global G_C;
 global G_N;
 global G_T;
 global G_D;
+global G_S;
 
 time =[];
 data =[];
 coordinates = G_C;
 elements = G_E;
 neigh = G_N;
+sites = G_S;
 if(~isempty(G_T))
   time = G_T;
   data = G_D;
 end
 
 
-save (['meshSave/' name], 'coordinates', 'elements','neigh','time','data')
+save (['meshSave/' name], 'coordinates', 'elements','neigh','time','data', 'sites')
 
 end
 
index 297fb1d9fd2b9b8497f1cc83ef2011938a12245f..daee5b5da21720f0b66d7776d752662abc2efdb4 100644 (file)
@@ -16,6 +16,7 @@ global G_C;
 global G_N;
 global G_T;
 global G_D;
+global G_S;
 
 %Netz darf nicht leer sein
 assert(~isempty(G_E) && ~isempty(G_C) && ~isempty(G_N),...
@@ -34,16 +35,15 @@ assert(~isempty(G_E) && ~isempty(G_C) && ~isempty(G_N),...
 time = zeros(1,3);
   tic
   %uniformIsotrop Verfeinern
-  [coo_fine,ele_fine,neigh_fine,f2s]=refineQuad(G_C,G_E,G_N,2);
+  [coo_fine,ele_fine,neigh_fine,f2s,sit_fine]=refineQuad(G_C,G_E,G_N,G_S,2);
   time(1) = toc;
 
   %Flaecheninhalte Berechnen (rhs)
-%   b = sqrt(sum(quadNorm(coo_fine,ele_fine,'w').^2,2));
-  b_fine = areaQuad(coo_fine,ele_fine);
+  b_fine = areaQuad(sit_fine);
   
-  [b,tnormal,s] = areaQuad(G_C,G_E);
-  hmin = min(s,[],2);
-  hmax = max(s,[],2);
+  b = areaQuad(G_S);
+  hmin = 2.^-max(G_S,[],2);
+  hmax = 2.^-min(G_S,[],2);
 
   tic
   %data -> ErgebnisMatrix
@@ -168,7 +168,7 @@ time = zeros(1,3);
   er = [];
   
   %Netz Verfeinern, wie durch marked bestimmt
-  [G_C, G_E, G_N, f, er] = refineQuad(G_C,G_E,G_N,marked);
+  [G_C, G_E, G_N, f, G_S, er] = refineQuad(G_C,G_E,G_N,G_S,marked);
   
   time(3) = toc;
 %   if(~isempty(er))
index 8473339760f2bb2d91e788970d0dccf653474386..0ccdaca4ad38dd2e91a2b0df46c672e3bfb84e18 100644 (file)
@@ -1,4 +1,4 @@
-function [area, vector, sites] = areaQuad(coordinates, elements,varargin)
+function [area, sites] = areaQuad(sites)
 %
 % [area, vector, sites] = area(coordinates, elements)
 %
@@ -8,27 +8,27 @@ function [area, vector, sites] = areaQuad(coordinates, elements,varargin)
 %
 % P.Schaefer
 
-    vector = zeros(size(elements,1),3);
-    area = zeros(size(elements,1),1);
-    sites = zeros(size(elements,1),2);
+    vector = zeros(size(elements,1),3);
+    area = zeros(size(elements,1),1);
+    sites = zeros(size(elements,1),2);
     
 %%  Flaecheninhalt und Normalen berechnen
 
-    for i = 1:size(elements,1)
-        % normalized Vector on every triangle
-        tri = elements(i,:);
-        a = (coordinates(tri(2),:)-coordinates(tri(1),:));
-        b = (coordinates(tri(4),:)-coordinates(tri(1),:));
-        N = cross(a',b');
+%     for i = 1:size(elements,1)
+%         % normalized Vector on every triangle
+%         tri = elements(i,:);
+%         a = (coordinates(tri(2),:)-coordinates(tri(1),:));
+%         b = (coordinates(tri(4),:)-coordinates(tri(1),:));
+%         N = cross(a',b');
+%         
+% %         area(i) = norm(N);
+%         
+%         N = N/norm(N);
+%         vector(i,:) = N;
+        area =  2.^-sum(sites,2);
+        sites = 2.^-sites ;
         
-%         area(i) = norm(N);
-        
-        N = N/norm(N);
-        vector(i,:) = N;
-        area(i) = norm(a) * norm(b);
-        sites(i,:) = [norm(a) norm(b)];
-        
-    end
+%     end
 
 end
 
index 3b6e437c1684616b4d5778e43a77fda285659d1e..cd2d4dca373eaad7663605c06edc5d9b46df1cce 100644 (file)
Binary files a/src/exmpl_2DLShape.mat and b/src/exmpl_2DLShape.mat differ
index 4e1a628d29c3fa072730f65499808d946895eeb3..9c74ea44577e7e1440a0f413935338aac5d70e45 100644 (file)
Binary files a/src/exmpl_2DQuad.mat and b/src/exmpl_2DQuad.mat differ
index e784f109e27dcbcea63d7b276ad215cd164c7835..c732e30ec84b6e0116e37777b9c3e40f05ef5cb8 100644 (file)
@@ -1,4 +1,4 @@
-function [coo,ele,nei,f2s,err] = refineQuad(coordinates,elements,neigh,type)
+function [coo,ele,nei,f2s,sit,err] = refineQuad(coordinates,elements,neigh,sites,type)
 %
 %  [coordinates,elements,fa2so] = refineQuad(coordinates,elements,type)
 %
@@ -30,6 +30,7 @@ assert(size(elements,1)==size(neigh,1)&&size(elements,1)==length(type),...
 global G_ref_E;
 global G_ref_C;
 global G_ref_N;
+global G_ref_S;
 global G_ref_f2s; %Finale Beziehung (VaterSohn)
 global G_ref_t;  %wie soll verfeinert werden
 global G_ref_tD; %wie wurde bereits verfeinert (in diesem Durchlauf)
@@ -39,6 +40,7 @@ global G_ref_f2sT; %Temporäre Beziehung
 G_ref_E = elements;
 G_ref_C = coordinates;
 G_ref_N = neigh;
+G_ref_S = sites;
 G_ref_t = type;
 G_ref_f2s = repmat([1:size(elements,1)]',1,4);
 G_ref_tD = ones(size(elements,1),1);
@@ -155,6 +157,7 @@ coo = G_ref_C;
 ele = G_ref_E;
 nei = G_ref_N;
 f2s = G_ref_f2s;
+sit = G_ref_S;
 
 %Doppelte Koordinaten loeschen
  [coo l pos] = unique(coo,'rows');
@@ -170,6 +173,7 @@ function refineE(ele)
 
 global G_ref_E;
 global G_ref_C;
+global G_ref_S;
 global G_ref_f2sT;
 global G_ref_t;
 
@@ -190,6 +194,8 @@ global G_ref_t;
         G_ref_E(c_ele+2,:) = [c_coo+1,el(2),c_coo+2,c_coo+5];
         G_ref_E(c_ele+3,:) = [el(1),c_coo+1,c_coo+5,c_coo+4];
         
+        G_ref_S([ele (c_ele+1):(c_ele+3)]',:) = repmat(G_ref_S(ele,:)+[1 1],4,1);
+        
         G_ref_f2sT(1:3)=c_ele+3:-1:c_ele+1;
     elseif(G_ref_t(ele)==3||G_ref_t(ele)==5)
         G_ref_C(c_coo+1,:) = (G_ref_C(el(1),:)+G_ref_C(el(4),:))/2;
@@ -199,6 +205,8 @@ global G_ref_t;
         G_ref_E(ele,2) = c_coo+2;        
         G_ref_E(c_ele+1,:) = [el(1),el(2),c_coo+2,c_coo+1];
         
+        G_ref_S([ele (c_ele+1)]',:) = repmat(G_ref_S(ele,:)+[0 1],2,1);
+        
         G_ref_f2sT([1 2])=c_ele+1;
      elseif(G_ref_t(ele)==4)
         G_ref_C(c_coo+1,:) = (G_ref_C(el(1),:)+G_ref_C(el(2),:))/2;
@@ -208,6 +216,8 @@ global G_ref_t;
         G_ref_E(ele,3) = c_coo+2;       
         G_ref_E(c_ele+1,:) = [c_coo+1,el(2),el(3),c_coo+2];
         
+        G_ref_S([ele (c_ele+1)]',:) = repmat(G_ref_S(ele,:)+[1 0],2,1);
+        
         G_ref_f2sT([2 3])=c_ele+1;
     end
 end