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;
