global G_ref_E;
global G_ref_C;
global G_ref_N;
-global G_ref_f2s;
-global G_ref_t;
-
-%Elementanzahl speichern
-c_loop = size(elements,1);
+global G_ref_f2s;
+global G_ref_t; %wie soll verfeinert werden
+global G_ref_tD; %wie wurde verfeinert
+global G_ref_f2sT;
%Globale Variablen zuweisen
G_ref_E = elements;
G_ref_C = coordinates;
G_ref_N = neigh;
-% G_ref_s = quadNorm(G_ref_C,G_ref_E,'w');
-% G_ref_s = sqrt(sum(G_ref_s.*G_ref_s,2))
-
-
G_ref_t = type;
-G_ref_f2s = repmat([1:c_loop]',1,4);
+G_ref_f2s = repmat([1:size(elements,1)]',1,4);
+G_ref_tD = ones(size(elements,1),1);
+G_ref_f2sT = zeros(1,4);
%Parameter Freigeben (Speicher...)
clear elements coordinates neigh type
-% Flächeninhalt aufbauen
-% updateS(1:c_loop);
-
% figure(11)
% plotShape(G_ref_C,G_ref_E,'s',G_ref_t);
% view(2)
ref_old = [];
ref_old2 = [];
-%% Erster Durchlauf
+
%Jedes Element verfeinern
while(1==1)
ref = find(G_ref_t>1);
N4t = find(diag(G_ref_N(N2',(N3t + 4)'))~=0)'; %Nachbarn mit 2Nachbarn
if(~isempty(N4t))
for i = N4t %Elemente die noch verfeinert werden muessen
- if( N2(i)>length(G_ref_t) || G_ref_t(N2(i))<1 ); %eins der neuen Elemente
- error('refineQuad:check','Fehlerhafter Typ 0')
- end
-
+ assert(G_ref_tD(N2(i))~=2,'Element wurde schon voll verfeinert')
+
%Wie muss das Element verfeinert werden.
- N5t = G_ref_t(N2(i));
- if(N5t == 1)
+
+ if(G_ref_tD(N2(i)) ~= 1)
+ assert(G_ref_tD(N2(i))~=mod(N3t(i),2)+3,...
+ 'Element wurde in der Richtung schon verfeinert')
+ G_ref_t(N2(i)) = mod(N3t(i),2)+3;
+ elseif(G_ref_t(N2(i)) == 1)
G_ref_t(N2(i))=mod(N3t(i),2)+3;
-% figure(12)
-% plotShape(G_ref_C,G_ref_E,'s',G_ref_t);
-% colorbar
-% view(2)
-% title('Nachverfeinert')
- elseif(N5t == mod(N3t(i)+1,2)+3)
- G_ref_t(N2(i)) = 2;
-% figure(12)
-% plotShape(G_ref_C,G_ref_E,'s',G_ref_t);
-% colorbar
-% view(2)
-% title('Nachverfeinert')
+ elseif(G_ref_t(N2(i)) == mod(N3t(i)+1,2)+3)
+ G_ref_t(N2(i)) = 2;
end
end
-
continue;
end
end
% Wenn Alle Überprüfungen durchgelaufen sind
-% refineE(ele);
-% updateN(ele);
+ assert(G_ref_tD(ele)~=2,'Element ist schon verfeinert')
+ assert(G_ref_t(ele)>1,'Element ist nicht Markiert')
+ G_ref_f2sT = ones(1,4)*ele;
+ refineE(ele);
+ updateN(ele);
+ updateF2S(ele);
% plotShape(G_ref_C,G_ref_E)
end
end
-
-
-
-%% Zweiter Durchlauf
-ref_old=[];
-err = [];
-%Jedes Element verfeinern
-while(~length(err))
- ref = find(G_ref_t>1);
- ref = reshape(ref,1,length(ref));
- if(isequal(ref,ref_old))
-
-
-
-
- figure(13)
- err_col = G_ref_t;
- if(length(err_col)<size(G_ref_E,1))
- err_col(size(G_ref_E,1)) = 0;
- end
- plotShape(G_ref_C,G_ref_E,'s',err_col);
- view(2)
- colorbar
- title('noch zu Verfeinern')
- save('error_ref.mat','ref')
- error('refineQuad:refine',[int2str(length(ref)) ' Elements couldn t be refined'])
- break;
- end
- ref_old = ref;
- if(isempty(ref))
- break;
- end
- for ele = ref % ref(randperm(length(ref))) %LOL Zufall bringts
-
- % # HangingNode Check
- Nt = find(G_ref_N(ele,5:8)==0);
- N = G_ref_N(ele,Nt);
- N2t = find(N~=0);
- N2 = N(N2t); %Nachbarn der Kanten mit nur einem Nachbar
- N2tt = Nt(N2t); %Kante mit Nachbar ^
-
- % Nur Nachbarn verfeinern an Kanten die geteilt werden
- if(G_ref_t(ele)==3)
- N2 = N2(mod(N2tt,2)==0);
- elseif(G_ref_t(ele)==4)
- N2 = N2(mod(N2tt,2)==1);
- end
-
- if(~isempty(N2))
- N3t = mod(find((G_ref_N(N2',:)==ele)')-1,4)+1; %Nachbarseiten
- N4t = find(diag(G_ref_N(N2',(N3t + 4)'))~=0)'; %Nachbarn mit 2Nachbarn
- if(~isempty(N4t))
- for i = N4t %Elemente die noch verfeinert werden muessen
- if(N2(i)>length(G_ref_t)||G_ref_t(N2(i))<1); %eins der neuen Elemente
- figure(7)
- err_col = G_ref_t;
- if(length(err_col)<size(G_ref_E,1))
- err_col(size(G_ref_E,1)) = 0;
- end
- plotShape(G_ref_C,G_ref_E,'s',err_col)
- plotMark([ele],G_ref_C,G_ref_E)
- plotMark([N2(i) ],G_ref_C,G_ref_E,'or')
- title('Fehlerhaftes Element mit Nachbar')
- view(2)
- error('refineQuad:refine','SKRIPTFEHLER: Dieses Element darf noch nicht verfeinert sein')
- err = ref;
- break;
- end
-
- %Wie muss das Element verfeinert werden.
- N5t = G_ref_t(N2(i));
- if(N5t == 1)
-% error('refineQuad:refine','SKRIPTFEHLER: Element war nicht markiert')
-% G_ref_t(N2(i))=mod(i+1,2)+3;
- elseif(N5t == mod(i,2)+3)
-% error('refineQuad:refine','SKRIPTFEHLER: Element war falsch markiert')
-% G_ref_t(N2(i)) = 2;
- end
-
- end
-% disp 'called'
- continue;
- end
- end
-
- % Wenn Alle Überprüfungen durchgelaufen sind
-% ref
-% G_ref_t(ref)
-% G_ref_t(ele)
-% figure(3)
-% plotShape(G_ref_C,G_ref_E)
-% plotMark(ele,G_ref_C,G_ref_E)
-% title('Netz vorm Verfeinern')
-
- refineE(ele);
- updateN(ele);
-
-% figure(4)
-% plotShape(G_ref_C,G_ref_E)
-% plotMark(G_ref_f2s(ele,:),G_ref_C,G_ref_E)
-% title('Netz nach dem Verfeinern')
-
- end
-end
-
%Rueckgabe zuweisen
coo = G_ref_C;
ele = G_ref_E;
ele = pos(ele);
%Globale Variablen freigeben
-clear G_ref_E G_ref_C G_ref_N G_ref_f2s G_ref_t G_ref_s
-end
-
-%% Rekursive Funktion
-function err = refine(ele)
-err = 0;
-% global G_ref_E;
-% global G_ref_C;
-global G_ref_N;
-% global G_ref_f2s;
-global G_ref_t;
-
-if(G_ref_t(ele)<2)
- if(G_ref_t(ele)<1)
- err = 1;
- end
- return;
-end
-
-% Ueberpruefe Nachbarn auf Nodes
-N = G_ref_N(ele,G_ref_N(ele,5:8)==0);
-N2 = N(N~=0);
-if(~isempty(N2))
- N3=mod(find((G_ref_N(N2',:)==ele)')-1,4)+5; % ACHTUNG noch mal überprüfen
- N4=N2(diag(G_ref_N(N2',N3'))~=0);
-
- % wenn ungueltig verfeinere sie (link auf Soll verfeinert werden?)
- if(~isempty(N4))
- for i = 1:length(N4)
- if(G_ref_t(N4(i))==0)
- err = 1;
- return;
- end
-% if(G_ref_t(N4(i))<=2)
-% G_ref_t(N4(i))=2; %WIRD GNADENLOS AUF 2 GESETZT
-% test = refine(N4(i));
- if(test==1)
- G_ref_t(N4(i))=0;
- err = 1;
- return;
- end
-% else
-% mod(find(G_ref_N(N4(i),:)==ele)-1,2)
-% end
- end
- end
-end
-
-if((G_ref_t(ele)<1) || err==1)
- err = 1;
- return;
-end
-
-% verfeinere dieses element
-refineE(ele);
-% setze Nachbarschafts relationen
-updateN(ele);
-
+clear G_ref_E G_ref_C G_ref_N G_ref_f2s G_ref_t G_ref_tD G_ref_s
end
%% Element Verfeinern ! sollte nur ausgeführt werden wenn wirklich möglich
% Element wird gnadenlos Verfeinert
global G_ref_E;
global G_ref_C;
-%global G_ref_N;
-global G_ref_f2s;
+global G_ref_f2sT;
global G_ref_t;
c_ele = size(G_ref_E,1);
el = G_ref_E(ele,:);
- if(G_ref_t(ele)==1)
- disp 'Warning: Type = 1';
- return;
- elseif(G_ref_t(ele)==2)
+ if(G_ref_t(ele)==2)
G_ref_C(c_coo+1,:) = (G_ref_C(el(1),:)+G_ref_C(el(2),:))/2;
G_ref_C(c_coo+2,:) = (G_ref_C(el(2),:)+G_ref_C(el(3),:))/2;
G_ref_C(c_coo+3,:) = (G_ref_C(el(3),:)+G_ref_C(el(4),:))/2;
G_ref_E(c_ele+1,:) = [c_coo+5,c_coo+2,el(3),c_coo+3];
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_f2s(ele,1:3)=c_ele+3:-1:c_ele+1;
-% G_ref_f2s(ele,:)=[c_ele+3:-1:c_ele+1 ele];
-% updateS([ele,c_ele+1:c_ele+3]);
+
+ G_ref_f2sT(1:3)=c_ele+3:-1:c_ele+1;
elseif(G_ref_t(ele)==3)
G_ref_C(c_coo+1,:) = (G_ref_C(el(1),:)+G_ref_C(el(4),:))/2;
G_ref_C(c_coo+2,:) = (G_ref_C(el(2),:)+G_ref_C(el(3),:))/2;
G_ref_E(ele,1) = c_coo+1;
- G_ref_E(ele,2) = c_coo+2;
-
+ 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_f2s(ele,[1 2])=c_ele+1;
-% G_ref_f2s(ele,[3 4])=ele;
-% updateS([ele,c_ele+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;
G_ref_C(c_coo+2,:) = (G_ref_C(el(4),:)+G_ref_C(el(3),:))/2;
G_ref_E(ele,2) = c_coo+1;
- G_ref_E(ele,3) = c_coo+2;
-
+ 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_f2s(ele,[2 3])=c_ele+1;
-% G_ref_f2s(ele,[1 4])=ele;
-% updateS([ele,c_ele+1]);
+
+ G_ref_f2sT([2 3])=c_ele+1;
end
-
- G_ref_t(ele) = 0;
-
end
function updateN(ele)
% Nachbarschaften werden neu gesetzt (nach N und f2s)
global G_ref_E;
-%global G_ref_C;
global G_ref_N;
-global G_ref_f2s;
-
-% plotShape(G_ref_C,G_ref_E);
+global G_ref_f2sT;
+global G_ref_t;
this = G_ref_N(ele,:);
-% ele
-split = G_ref_f2s(ele,:);
%An welchen Kanten habe ich Nachbarn
S = find(mod((this(1:4)~=0).*(this(5:8)==0),2))'; %Einen Nachbar (Single)
D = find(this(5:8)~=0)'; %Zwei Nachbarn (Double)
MD = mod(find((G_ref_N(this([D D+4]),:)==ele)')-1,4)+1;
MD = reshape(MD,length(MD)/2,2); % (Double)
-G_ref_N(split,1:8) = 0;
+G_ref_N(G_ref_f2sT,1:8) = 0;
-if(split(1)==split(2))
- G_ref_N(split([1 3])',1:4) = [ 0 0 split(3) 0;split(1) 0 0 0]; %Innere Beziehung
+if(G_ref_t(ele)==3)
+ G_ref_N(G_ref_f2sT([1 3])',1:4) = [ 0 0 G_ref_f2sT(3) 0;G_ref_f2sT(1) 0 0 0]; %Innere Beziehung
% Beziehungen fuer Kanten mit einem Nachbar
for i = 1:length(S)
if(mod(S(i),2)==0) %TODO was ist wenn ich selbst doppelNachbar an der Seite bin???
- G_ref_N(this(S(i)),[MS(i) MS(i)+4]) = [split(S(i)) split(mod(S(i),4)+1)];
- G_ref_N([split(S(i)) split(mod(S(i),4)+1)]',S(i))=this(S(i));
+ G_ref_N(this(S(i)),[MS(i) MS(i)+4]) = [G_ref_f2sT(S(i)) G_ref_f2sT(mod(S(i),4)+1)];
+ G_ref_N([G_ref_f2sT(S(i)) G_ref_f2sT(mod(S(i),4)+1)]',S(i))=this(S(i));
else
- G_ref_N(this(S(i)),MSt(i)) = split(S(i));
- G_ref_N(split(S(i)),S(i)) = this(S(i));
+ G_ref_N(this(S(i)),MSt(i)) = G_ref_f2sT(S(i));
+ G_ref_N(G_ref_f2sT(S(i)),S(i)) = this(S(i));
end
end
% Beziehungen fuer Kanten mit zwei Nachbarn
for i = 1:length(D)
if(mod(D(i),2)==0)
- if(length(unique([G_ref_E(this(D(i)),:) G_ref_E(split(D(i)),:)]))==7)
- G_ref_N(this(D(i)),MD(i,1)) = split(D(i));
- G_ref_N(this(D(i)+4),MD(i,2)) = split(mod(D(i),4)+1);
- G_ref_N(split(D(i)),D(i)) = this(D(i));
- G_ref_N(split(mod(D(i),4)+1),D(i)) = this(D(i)+4);
+ if(length(unique([G_ref_E(this(D(i)),:) G_ref_E(G_ref_f2sT(D(i)),:)]))==7)
+ G_ref_N(this(D(i)),MD(i,1)) = G_ref_f2sT(D(i));
+ G_ref_N(this(D(i)+4),MD(i,2)) = G_ref_f2sT(mod(D(i),4)+1);
+ G_ref_N(G_ref_f2sT(D(i)),D(i)) = this(D(i));
+ G_ref_N(G_ref_f2sT(mod(D(i),4)+1),D(i)) = this(D(i)+4);
else
- G_ref_N(this(D(i)),MD(i,1)) = split(mod(D(i),4)+1);
- G_ref_N(this(D(i)+4),MD(i,2)) = split(D(i));
- G_ref_N(split(D(i)),D(i)) = this(D(i)+4);
- G_ref_N(split(mod(D(i),4)+1),D(i)) = this(D(i));
+ G_ref_N(this(D(i)),MD(i,1)) = G_ref_f2sT(mod(D(i),4)+1);
+ G_ref_N(this(D(i)+4),MD(i,2)) = G_ref_f2sT(D(i));
+ G_ref_N(G_ref_f2sT(D(i)),D(i)) = this(D(i)+4);
+ G_ref_N(G_ref_f2sT(mod(D(i),4)+1),D(i)) = this(D(i));
end
else
- G_ref_N(this(D(i)),MD(i,1)) = split(D(i));
- G_ref_N(this(D(i)+4),MD(i,2)) = split(D(i));
- G_ref_N(split(D(i)),[D(i) D(i)+4]) = [this(D(i)) this(D(i)+4)];
+ G_ref_N(this(D(i)),MD(i,1)) = G_ref_f2sT(D(i));
+ G_ref_N(this(D(i)+4),MD(i,2)) = G_ref_f2sT(D(i));
+ G_ref_N(G_ref_f2sT(D(i)),[D(i) D(i)+4]) = [this(D(i)) this(D(i)+4)];
end
end
-elseif(split(1)==split(4))
- G_ref_N(split([1 2])',1:4) = [ 0 split(2) 0 0;0 0 0 split(1)];
+elseif(G_ref_t(ele)==4)
+ G_ref_N(G_ref_f2sT([1 2])',1:4) = [ 0 G_ref_f2sT(2) 0 0;0 0 0 G_ref_f2sT(1)];
% Beziehungen fuer Kanten mit einem Nachbar
for i = 1:length(S)
if(mod(S(i),2)==1)
- G_ref_N(this(S(i)),[MS(i) MS(i)+4]) = [split(S(i)) split(mod(S(i),4)+1)];
- G_ref_N([split(S(i)) split(mod(S(i),4)+1)]',S(i))=this(S(i));
+ G_ref_N(this(S(i)),[MS(i) MS(i)+4]) = [G_ref_f2sT(S(i)) G_ref_f2sT(mod(S(i),4)+1)];
+ G_ref_N([G_ref_f2sT(S(i)) G_ref_f2sT(mod(S(i),4)+1)]',S(i))=this(S(i));
else
- G_ref_N(this(S(i)),MSt(i)) = split(S(i));
- G_ref_N(split(S(i)),S(i)) = this(S(i));
+ G_ref_N(this(S(i)),MSt(i)) = G_ref_f2sT(S(i));
+ G_ref_N(G_ref_f2sT(S(i)),S(i)) = this(S(i));
end
end
% Beziehungen fuer Kanten mit zwei Nachbarn
for i = 1:length(D)
if(mod(D(i),2)==1)
- if(length(unique([G_ref_E(this(D(i)),:) G_ref_E(split(D(i)),:)]))==7)
- G_ref_N(this(D(i)),MD(i,1)) = split(D(i));
- G_ref_N(this(D(i)+4),MD(i,2)) = split(mod(D(i),4)+1);
- G_ref_N(split(D(i)),D(i)) = this(D(i));
- G_ref_N(split(mod(D(i),4)+1),D(i)) = this(D(i)+4);
+ if(length(unique([G_ref_E(this(D(i)),:) G_ref_E(G_ref_f2sT(D(i)),:)]))==7)
+ G_ref_N(this(D(i)),MD(i,1)) = G_ref_f2sT(D(i));
+ G_ref_N(this(D(i)+4),MD(i,2)) = G_ref_f2sT(mod(D(i),4)+1);
+ G_ref_N(G_ref_f2sT(D(i)),D(i)) = this(D(i));
+ G_ref_N(G_ref_f2sT(mod(D(i),4)+1),D(i)) = this(D(i)+4);
else
- G_ref_N(this(D(i)),MD(i,1)) = split(mod(D(i),4)+1);
- G_ref_N(this(D(i)+4),MD(i,2)) = split(D(i));
- G_ref_N(split(D(i)),D(i)) = this(D(i)+4);
- G_ref_N(split(mod(D(i),4)+1),D(i)) = this(D(i));
+ G_ref_N(this(D(i)),MD(i,1)) = G_ref_f2sT(mod(D(i),4)+1);
+ G_ref_N(this(D(i)+4),MD(i,2)) = G_ref_f2sT(D(i));
+ G_ref_N(G_ref_f2sT(D(i)),D(i)) = this(D(i)+4);
+ G_ref_N(G_ref_f2sT(mod(D(i),4)+1),D(i)) = this(D(i));
end
else
- G_ref_N(this(D(i)),MD(i,1)) = split(D(i));
- G_ref_N(this(D(i)+4),MD(i,2)) = split(D(i));
- G_ref_N(split(D(i)),[D(i) D(i)+4]) = [this(D(i)) this(D(i)+4)];
+ G_ref_N(this(D(i)),MD(i,1)) = G_ref_f2sT(D(i));
+ G_ref_N(this(D(i)+4),MD(i,2)) = G_ref_f2sT(D(i));
+ G_ref_N(G_ref_f2sT(D(i)),[D(i) D(i)+4]) = [this(D(i)) this(D(i)+4)];
end
end
-else
- G_ref_N(split',1:4) = [0 split(2) split(4) 0; 0 0 split(3) split(1);...
- split(2) 0 0 split(4); split(1) split(3) 0 0];
+elseif(G_ref_t(ele)==2)
+ G_ref_N(G_ref_f2sT',1:4) = [0 G_ref_f2sT(2) G_ref_f2sT(4) 0; 0 0 G_ref_f2sT(3) G_ref_f2sT(1);...
+ G_ref_f2sT(2) 0 0 G_ref_f2sT(4); G_ref_f2sT(1) G_ref_f2sT(3) 0 0];
% Beziehungen fuer Kanten mit einem Nachbar
for i = 1:length(S)
- G_ref_N(this(S(i)),[MS(i) MS(i)+4]) = [split(S(i)) split(mod(S(i),4)+1)];
- G_ref_N([split(S(i)) split(mod(S(i),4)+1)]',S(i))=this(S(i));
+ G_ref_N(this(S(i)),[MS(i) MS(i)+4]) = [G_ref_f2sT(S(i)) G_ref_f2sT(mod(S(i),4)+1)];
+ G_ref_N([G_ref_f2sT(S(i)) G_ref_f2sT(mod(S(i),4)+1)]',S(i))=this(S(i));
end
% Beziehungen fuer Kanten mit zwei Nachbarn
for i = 1:length(D)
- if(length(unique([G_ref_E(this(D(i)),:) G_ref_E(split(D(i)),:)]))==7)
- G_ref_N(this(D(i)),MD(i,1)) = split(D(i));
- G_ref_N(this(D(i)+4),MD(i,2)) = split(mod(D(i),4)+1);
- G_ref_N(split(D(i)),D(i)) = this(D(i));
- G_ref_N(split(mod(D(i),4)+1),D(i)) = this(D(i)+4);
+ if(length(unique([G_ref_E(this(D(i)),:) G_ref_E(G_ref_f2sT(D(i)),:)]))==7)
+ G_ref_N(this(D(i)),MD(i,1)) = G_ref_f2sT(D(i));
+ G_ref_N(this(D(i)+4),MD(i,2)) = G_ref_f2sT(mod(D(i),4)+1);
+ G_ref_N(G_ref_f2sT(D(i)),D(i)) = this(D(i));
+ G_ref_N(G_ref_f2sT(mod(D(i),4)+1),D(i)) = this(D(i)+4);
else
- G_ref_N(this(D(i)),MD(i,1)) = split(mod(D(i),4)+1);
- G_ref_N(this(D(i)+4),MD(i,2)) = split(D(i));
- G_ref_N(split(D(i)),D(i)) = this(D(i)+4);
- G_ref_N(split(mod(D(i),4)+1),D(i)) = this(D(i));
+ G_ref_N(this(D(i)),MD(i,1)) = G_ref_f2sT(mod(D(i),4)+1);
+ G_ref_N(this(D(i)+4),MD(i,2)) = G_ref_f2sT(D(i));
+ G_ref_N(G_ref_f2sT(D(i)),D(i)) = this(D(i)+4);
+ G_ref_N(G_ref_f2sT(mod(D(i),4)+1),D(i)) = this(D(i));
end
end
-
end
end
+%% Aktualisieren der VaterSohn Beziehung ! sollte nur ausgeführt werden wenn wirklich möglich
+function updateF2S(ele)
+ global G_ref_f2s;
+ global G_ref_f2sT;
+ global G_ref_t;
+ global G_ref_tD;
+% global G_ref_C;
+% global G_ref_E;
+
+
+ if(G_ref_tD(ele)==1) %Wenn Element zum ersten Mal verfeinert wird
+ G_ref_tD(G_ref_f2sT) = G_ref_t(ele);
+ G_ref_f2s(ele,:) = G_ref_f2sT;
+ else %Wenn Element zum zweiten Mal verfeinert wird
+ G_ref_tD(G_ref_f2sT) = 2;
+ %TODO f2s AKTUALISIEREN
+ org=floor((find(G_ref_f2s'==ele,1)-1)/4)+1;
+ pos=find(G_ref_f2s(org,:)==ele,1);
+
+ if(G_ref_t(ele)==3)
+% G_ref_f2s(org,:)
+% pos=find(G_ref_f2s(org,:)==ele,1)
+% G_ref_f2sT
+
+ if(pos==1)
+ G_ref_f2s(org,[1 4]) = G_ref_f2sT([1 3]);
+ else
+ G_ref_f2s(org,[2 3]) = G_ref_f2sT([3 1]);
+ end
+% G_ref_f2s(org,:)
+% plotShape(G_ref_C,G_ref_E(G_ref_f2s(org,:),:),'t')
+ else
+ if(pos==1)
+ G_ref_f2s(org,[1 2]) = G_ref_f2sT([1 2]);
+ else
+ G_ref_f2s(org,[3 4]) = G_ref_f2sT([2 1]);
+ end
+% G_ref_f2s(org,:)
+% plotShape(G_ref_C,G_ref_E(G_ref_f2s(org,:),:),'t')
+ end
+
+ end
+
+ G_ref_t(G_ref_f2sT) = 0;
+end
+
%% Berechnet die Flächeninhalte der Elemente
% function updateS(ele)