function [p,e,t]=L_shapeuniform(r) % % clear all % clc % clf % r=2; p=[0 0 0 0.5 0.5 0.5 1 1;0 0.5 1 0 0.5 1 0.5 1;]; t=[1 2 2 3 5 6;2 5 3 6 6 8;4 4 5 5 7 7;1 1 1 1 1 1]; e(1,:)=[1 2 3 6 8 7 5 4]; e(2,:)=[2 3 6 8 7 5 4 1]; e(3,:)=zeros(1,8); e(4,:)=ones(1,8); e(5,:)=[1 1 2 2 3 4 5 6]; e(6,:)=ones(1,8); e(7,:)=zeros(1,8); %ovan har jag placerat noderna i ordning från vänster till höger %och nerifrån och upp. Trianglarna har samma ordning % och "kant matrisen" går bara runt i moturs riktning %% går igenom alla trianglar T_list=[]; jjj=0; for jjj=1:r%% detta skall bli en while loop sedan, är en for sats bara för att programmet inte skall hänga sig ii=1; % if jjj ==1 % for i=1:length(t(1,:))%-index5) %% går igenom alla trianglarna % if (p(1,t(1,i))-0.5).^2 +(p(2,t(1,i))-0.5).^2 < 0.01 || (p(1,t(2,i))-0.5).^2 +(p(2,t(2,i))-0.5).^2 < 0.01 || (p(1,t(3,i))-0.5).^2 +(p(2,t(3,i))-0.5).^2 < 0.01 % %% ovan är villkoret, så länge villkoret är uppfyllt fortsätter % %% programmet att förfina trianglarna % T_list(:,ii)=t(1:3,i); % detta är kolumnerna ur t som skall förfinas % index(ii)=i; %% detta är numret på triangeln % ii=ii+1; % end % end % end if jjj >= 1 for i=1:length(t(1,:))%% går igenom alla trianglarna if jjj < 100 %(p(1,t(1,i))-0.5).^2 +(p(2,t(1,i))-0.5).^2 < 0.01 || (p(1,t(2,i))-0.5).^2 +(p(2,t(2,i))-0.5).^2 < 0.01 || (p(1,t(3,i))-0.5).^2 +(p(2,t(3,i))-0.5).^2 < 0.01 %% ovan är villkoret, så länge villkoret är uppfyllt fortsätter %% programmet att förfina trianglarna T_list(:,ii)=t(1:3,i); % detta är kolumnerna ur t som skall förfinas index(ii)=i; %% detta är numret på triangeln ii=ii+1; end end end k2=0; for k=1:length(T_list(1,:)) k2=k2+1; pp2(:,k2)=(p(:,T_list(1,k))+p(:,T_list(2,k)))./2; k2=k2+1; pp2(:,k2)=(p(:,T_list(1,k))+p(:,T_list(3,k)))./2; k2=k2+1; pp2(:,k2)=(p(:,T_list(3,k))+p(:,T_list(2,k)))./2; end pp2; q=0; for k=1:length(pp2(1,:)) for k3=k:length(pp2(1,:)) if pp2(1,k)==pp2(1,k3) && pp2(2,k)==pp2(2,k3) && k3~=k q=q+1; index22(q)=k3; end end end index22; q2=0; for k=1:length(pp2) q=0; for k2=1:length(index22) if k~=index22(k2) q=q+1; if q==length(index22) q2=q2+1; pp3(:,q2)=pp2(:,k); end end end end L=length(p); L2=length(pp3); for k=1:length(pp3) for k2=1:length(T_list) if (p(1,T_list(1,k2))+p(1,T_list(2,k2)))./2 == pp3(1,k) && (p(2,T_list(1,k2))+p(2,T_list(2,k2)))./2 == pp3(2,k) Lista(1,k2)=k+L; end if (p(1,T_list(3,k2))+p(1,T_list(2,k2)))./2 == pp3(1,k) && (p(2,T_list(3,k2))+p(2,T_list(2,k2)))./2 == pp3(2,k) Lista(2,k2)=k+L; end if (p(1,T_list(1,k2))+p(1,T_list(3,k2)))./2 == pp3(1,k) && (p(2,T_list(1,k2))+p(2,T_list(3,k2)))./2 == pp3(2,k) Lista(3,k2)=k+L; end end end for k=1:length(T_list) if p(1,T_list(1,k)) == p(1,T_list(2,k)) t(:,index(k))=[T_list(1,k);Lista(1,k);Lista(3,k);1]; t(:,length(t)+1)=[Lista(1,k);T_list(2,k);Lista(2,k);1]; t(:,length(t)+1)=[Lista(1,k);Lista(2,k);Lista(3,k);1]; t(:,length(t)+1)=[Lista(3,k);Lista(2,k);T_list(3,k);1]; end if p(1,T_list(2,k)) == p(1,T_list(3,k)) t(:,index(k))=[T_list(1,k);Lista(1,k);Lista(3,k);1]; t(:,length(t)+1)=[Lista(1,k);T_list(2,k);Lista(2,k);1]; t(:,length(t)+1)=[Lista(3,k);Lista(1,k);Lista(2,k);1]; t(:,length(t)+1)=[Lista(3,k);Lista(2,k);T_list(3,k);1]; end end p(:,L+1:L+L2)=pp3; end %f1=pdemesh(p,e,t) q=0; for i=1:length(p(1,:)) if p(1,i)==0 ||p(1,i)==1 || p(2,i)==1 || p(2,i)==0 ||(p(1,i)==0.5&& p(2,i) < 0.50001) || (p(2,i)==0.5 && p(1,i) > 0.50001) q=q+1; ee(q)=i; end end %pdemesh(p,e,t) p=p; e=e; t=t;