% Deteccion de discontinuidades con eno-sr-valores puntuales. Se detectan esquinas, diferenciando si se encuentran o no en grid-point
% y tambien se detectan saltos
%          localiza_eno_sr_mc_u(x,fr,r)
%          Entradas:
%             x = vector de nodos
%             fr = f(x)
%             r = nunero de puntos del stencil para la interpolacion 
%          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_mc_u(x,fr,r)
eps=1e-10;
lx=length(x);
r1=r-1;%r es el numero de nodos del stencil y r1 el grado del polinomio

epsi=1e-4;

%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

esquina=0;
salto=0;

hold on

for i=r+2:lx-r-2
   if (isdreta(i-1)<=isesq(i+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 )    
            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'); 
            esquina=1;
       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 )
            p1=plot([x(i-1),x(i-1)],[0.4,0.60],'k-*');
            disp('Esquina en grid point')
            esquina=1; 
       elseif(preliipmcfunciongsalidapd(r1,-1,fr,i)*preliipmcfunciongsalidapd(r,1,fr,i)<0 && abs(preliipmcfunciongsalidapd(r,-1,fr,i))>epsi && abs(preliipmcfunciongsalidapd(r1,1,fr,i))>epsi && abs(preliipmcfunciongsalidapd(r1,0,fr,i))<epsi)          
            disp('De salto finito')
            p2=plot([x(i-1),x(i-1)],[0.4,0.6],'k--^')
            salto=1;
       else
            disp('Sospechosa pero no discontinua')
       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