From bbe079d27423c4ec638f7fba20f121edef73b236 Mon Sep 17 00:00:00 2001 From: Peter Schaefer Date: Fri, 6 Apr 2012 11:46:03 +0200 Subject: [PATCH] [src] sites in Beispielen gespeichert [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 | 2 ++ src/A_saveMesh.m | 4 +++- src/A_step.m | 14 +++++++------- src/areaQuad.m | 36 ++++++++++++++++++------------------ src/exmpl_2DLShape.mat | Bin 321 -> 421 bytes src/exmpl_2DQuad.mat | Bin 331 -> 439 bytes src/refineQuad.m | 12 +++++++++++- 7 files changed, 41 insertions(+), 27 deletions(-) diff --git a/src/A_loadMeshF.m b/src/A_loadMeshF.m index 9879040..edfc6e3 100644 --- a/src/A_loadMeshF.m +++ b/src/A_loadMeshF.m @@ -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 = []; diff --git a/src/A_saveMesh.m b/src/A_saveMesh.m index 4dce79e..5f15124 100644 --- a/src/A_saveMesh.m +++ b/src/A_saveMesh.m @@ -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 diff --git a/src/A_step.m b/src/A_step.m index 297fb1d..daee5b5 100644 --- a/src/A_step.m +++ b/src/A_step.m @@ -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)) diff --git a/src/areaQuad.m b/src/areaQuad.m index 8473339..0ccdaca 100644 --- a/src/areaQuad.m +++ b/src/areaQuad.m @@ -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 diff --git a/src/exmpl_2DLShape.mat b/src/exmpl_2DLShape.mat index 3b6e437c1684616b4d5778e43a77fda285659d1e..cd2d4dca373eaad7663605c06edc5d9b46df1cce 100644 GIT binary patch delta 141 zcmX@ew3K;*iG*8Grh;QZk%EGmf}x?6v6+>zg@TcRq0z)Z?THDj6Kjs9@G~$lXaRA> zoX5!t2?Y#EW(v<5E-4(~dTQ)!s64^v^qPbOrcIWT2bctSSQ#AtGoHhvgV|76z}V?% Um$7$H_rfHDtqKebz70&P0n17(4FCWD delta 40 wcmZ3=e2{5^i9~Q>iGqJ}iGq=lf}x?6p@o&PnSzmlq2a_p?THDj6KjqF0O;lmy8r+H diff --git a/src/exmpl_2DQuad.mat b/src/exmpl_2DQuad.mat index 4e1a628d29c3fa072730f65499808d946895eeb3..9c74ea44577e7e1440a0f413935338aac5d70e45 100644 GIT binary patch delta 149 zcmX@jw4Hf^i9|?7se)rck%EG$f{}rhfu)s^F_2+sG%-+nVgl>Ln)5mQ3=9m0KwL5B zadJY!42B~)4rdsbIyQ)&N@q+;Q%GZ(lsQwBXO2S|6SGxCLcf==kU9^8w>R5&kVb8| r#sY>UGlgdjmlO_gJ>AS;C@f&?bhOLZJE(hMl0v1M1_Oid6Q*qd0yZt} delta 40 wcmdnae41&3i9~Q>iGqJ}iGq=lf}x?6p{139g@TcRq2a_p?THDj6Kl=`0PQ>r;Q#;t diff --git a/src/refineQuad.m b/src/refineQuad.m index e784f10..c732e30 100644 --- a/src/refineQuad.m +++ b/src/refineQuad.m @@ -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 -- 2.47.3