global G_ref_E;
global G_ref_C;
global G_ref_N;
-global G_ref_f2s;
+global G_ref_f2s; %Finale Beziehung (VaterSohn)
global G_ref_t; %wie soll verfeinert werden
-global G_ref_tD; %wie wurde verfeinert
-global G_ref_f2sT;
+global G_ref_tD; %wie wurde bereits verfeinert (in diesem Durchlauf)
+global G_ref_f2sT; %Temporäre Beziehung
%Globale Variablen zuweisen
G_ref_E = elements;
G_ref_t = type;
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
%Jedes Element verfeinern
while(1==1)
+ %TODO jeden 4ten 2er durch schrittweise Verfeinerung ersetzen
+ t_ref=find(G_ref_t==2);
+ G_ref_t(t_ref(1:4:end)) = 5;
ref = find(G_ref_t>1);
ref = reshape(ref,1,length(ref));
if(isequal(ref,ref_old))
N2tt = Nt(N2t); %Kante mit Nachbar ^
% Nur Nachbarn verfeinern an Kanten die geteilt werden
- if(G_ref_t(ele)==3)
+ if(G_ref_t(ele)==3 || G_ref_t(ele)==5)
N2 = N2(mod(N2tt,2)==0);
elseif(G_ref_t(ele)==4)
N2 = N2(mod(N2tt,2)==1);
for i = N4t %Elemente die noch verfeinert werden muessen
assert(G_ref_tD(N2(i))~=2,'Element wurde schon voll verfeinert')
- %Wie muss das Element verfeinert werden.
+ %Element ist schon markiert
+ if(G_ref_t(N2(i)) == 2 || G_ref_t(N2(i)) ==5)
+ continue;
+ end
+
+ %Wie muss das Element verfeinert werden.
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_E(c_ele+3,:) = [el(1),c_coo+1,c_coo+5,c_coo+4];
G_ref_f2sT(1:3)=c_ele+3:-1:c_ele+1;
- elseif(G_ref_t(ele)==3)
+ 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;
G_ref_C(c_coo+2,:) = (G_ref_C(el(2),:)+G_ref_C(el(3),:))/2;
G_ref_N(G_ref_f2sT,1:8) = 0;
-if(G_ref_t(ele)==3)
+if(G_ref_t(ele)==3||G_ref_t(ele)==5)
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
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;
+ if(G_ref_t(ele)<5)
+ G_ref_tD(G_ref_f2sT) = G_ref_t(ele);
+ G_ref_t(G_ref_f2sT) = 0;
+ else
+ G_ref_tD(G_ref_f2sT) = 3;
+ G_ref_t(G_ref_f2sT) = 4;
+ end
else %Wenn Element zum zweiten Mal verfeinert wird
G_ref_tD(G_ref_f2sT) = 2;
%TODO f2s AKTUALISIEREN
% G_ref_f2s(org,:)
% plotShape(G_ref_C,G_ref_E(G_ref_f2s(org,:),:),'t')
end
-
+ G_ref_t(G_ref_f2sT) = 0;
end
-
- G_ref_t(G_ref_f2sT) = 0;
end