| 1 |
function [list_profiles2]=netcdf_ecco_GenericgridLocateCell(x0,y0,x_all,y_all); |
| 2 |
|
| 3 |
x=ones([length(x_all) size(x0)]); for icur=1:length(x_all); x(icur,:,:)=x0; end; |
| 4 |
y=ones([length(x_all) size(x0)]); for icur=1:length(x_all); y(icur,:,:)=y0; end; |
| 5 |
|
| 6 |
x_all2=zeros([length(x_all) size(x0,1) 1]); for icur=1:length(x_all); x_all2(icur,:,:)=x_all(icur); end; |
| 7 |
y_all2=zeros([length(y_all) size(x0,1) 1]); for icur=1:length(y_all); y_all2(icur,:,:)=y_all(icur); end; |
| 8 |
z_all2=zeros(size(x_all2)); |
| 9 |
|
| 10 |
for icur=1:size(x0,2); |
| 11 |
x=circshift(x,[0 0 1]); y=circshift(y,[0 0 1]); |
| 12 |
v1x=x(:,:,1)-x_all2(:,:,1); v1y=y(:,:,1)-y_all2(:,:,1); v2x=x(:,:,2)-x_all2(:,:,1); v2y=y(:,:,2)-y_all2(:,:,1); |
| 13 |
tmp1=find(v2x.*v2x+v2y.*v2y==0|v1x.*v1x+v1y.*v1y==0); v1x(tmp1)=NaN; v1y(tmp1)=NaN; v2x(tmp1)=NaN; v2y(tmp1)=NaN; |
| 14 |
g_acos=acos( ( v1x.*v2x+v1y.*v2y )./sqrt( v1x.*v1x+v1y.*v1y )./sqrt( v2x.*v2x+v2y.*v2y ) ); |
| 15 |
g_sin= ( v1x.*v2y-v1y.*v2x )./sqrt( v1x.*v1x+v1y.*v1y )./sqrt( v2x.*v2x+v2y.*v2y ) ; |
| 16 |
z_all2=z_all2+g_acos.*sign(g_sin); |
| 17 |
end |
| 18 |
|
| 19 |
list_profiles=find(abs(z_all2-2*pi)<pi/16|abs(z_all2-pi)<pi/16|isnan(z_all2)); |
| 20 |
list_profiles2=zeros(size(x_all2)); list_profiles2(list_profiles)=1; |
| 21 |
|
| 22 |
|
| 23 |
|