function [list_profiles2]=netcdf_ecco_GenericgridLocateCell(x0,y0,x_all,y_all); x=ones([length(x_all) size(x0)]); for icur=1:length(x_all); x(icur,:,:)=x0; end; y=ones([length(x_all) size(x0)]); for icur=1:length(x_all); y(icur,:,:)=y0; end; x_all2=zeros([length(x_all) size(x0,1) 1]); for icur=1:length(x_all); x_all2(icur,:,:)=x_all(icur); end; y_all2=zeros([length(y_all) size(x0,1) 1]); for icur=1:length(y_all); y_all2(icur,:,:)=y_all(icur); end; z_all2=zeros(size(x_all2)); for icur=1:size(x0,2); x=circshift(x,[0 0 1]); y=circshift(y,[0 0 1]); v1x=x(:,:,1)-x_all2(:,:,1); v1y=y(:,:,1)-y_all2(:,:,1); v2x=x(:,:,2)-x_all2(:,:,1); v2y=y(:,:,2)-y_all2(:,:,1); tmp1=find(v2x.*v2x+v2y.*v2y==0|v1x.*v1x+v1y.*v1y==0); v1x(tmp1)=NaN; v1y(tmp1)=NaN; v2x(tmp1)=NaN; v2y(tmp1)=NaN; g_acos=acos( ( v1x.*v2x+v1y.*v2y )./sqrt( v1x.*v1x+v1y.*v1y )./sqrt( v2x.*v2x+v2y.*v2y ) ); g_sin= ( v1x.*v2y-v1y.*v2x )./sqrt( v1x.*v1x+v1y.*v1y )./sqrt( v2x.*v2x+v2y.*v2y ) ; z_all2=z_all2+g_acos.*sign(g_sin); end list_profiles=find(abs(z_all2-2*pi)