% Deteccion de discontinuidades con eno-sr-valores puntuales. Solo se detectan esquinas, diferenciando si se encuentran o no en grid-point
%   localiza_eno_sr_vp_1_u(x,fr,r,eps)
%          Entradas:
%             x   = vector de nodos
%             fr   = f(x)
%             r   = nunero de puntos del stencil para la interpolacion 
%             eps = epsilon utilizado para admitir las igualdades a 0 como válidas
%          Salidas:
%             plots: discontinuidad en punto interior (linea vertical), en grid point (linea vercital con *)
%
% Autor: José Jaime Noguera  +INFO: www.uv.es/anims/noguera

function localiza_eno_sr_vp_1_u(x,fr,r,eps)
hold on
lx=length(x);
r1=r-1;%r es el numero de nodos del stencil y r1 el grado del polinomio

%ENO jerarquico
for i=r:lx-r
   s=i;
   for l=0:r1-2
      a=difdiv(x(s-2:s+l),fr(s-2:s+l),l+3);
      b=difdiv(x(s-1:s+l+1),fr(s-1:s+l+1),l+3);
      if(abs(a(l+3,l+3))<abs(b(l+3,l+3)))
      s=s-1;
      end
   end
   is(i)=s;
   isdreta(i)=is(i)+r-2;
   isesq(i)=is(i)-1;
end


for i=r+1:lx-r-1   
   if (isdreta(i-1)<=isesq(i+1))
      dd=difdiv(x(is(i)-1:is(i)+r1-1),fr(is(i)-1:is(i)+r1-1),r1+1);  
       if(genovp(x,fr,is,i,r1,x(i-1))*genovp(x,fr,is,i,r1,x(i))<0 && isdreta(i-1)<=isesq(i+1) && abs(genovp(x,fr,is,i,r1,x(i-1)))>eps && abs(genovp(x,fr,is,i,r1,x(i)))>eps )
            i
            disp('Esquina en (x_i-1,x_i)');
            p1=plot([x(i-1),x(i-1)],[0.4,0.6],'k');  
            p1=plot([x(i),x(i)],[0.4,0.6],'k'); 
       elseif(genovp(x,fr,is,i-1,r1,x(i-2))*genovp(x,fr,is,i-1,r1,x(i))<0 && isdreta(i-1)==isesq(i) && abs(genovp(x,fr,is,i,r1,x(i-1)))<eps && abs(genovp(x,fr,is,i-1,r1,x(i-1)))<eps && abs(genovp(x,fr,is,i-1,r1,x(i)))>eps && genovp(x,fr,is,i-1,r1,x(i-2))>eps )
            i
            p1=plot([x(i-1),x(i-1)],[0.4,0.6],'k-*');
            disp('Esquina en grid point');
       end                          
    end
 end   

 
plot(x, fr,'k.','LineWidth',5,'MarkerSize',20)               

axis([0 1 -0.1 1.1 ]);
set(gca,'Xtick',[0 .5 1], 'FontSize',15)
set(gca,'Ytick',[0 .5 1], 'FontSize',15)
box
hold off