1 |
function [H]=drop_thinwalls(h,hx,hy,periodic) |
2 |
% |
3 |
% Returns the depths at T points based on T, U and V points. |
4 |
% |
5 |
% e.g. |
6 |
% H=drop_thinwalls(H2,Hx2,Hy2); |
7 |
|
8 |
if size(h)~=size(hx) | size(h)~=size(hy) |
9 |
error('Arguments must all be the same size!\n'); |
10 |
end |
11 |
|
12 |
[nx,ny]=size(h); |
13 |
|
14 |
% Fill-up cell-centers where all sides are higher |
15 |
Hsides=min( hx, hx([2:end 1],:,:) ); |
16 |
Hsides=min( Hsides, hy ); |
17 |
Hsides=min( Hsides, hy(:,[2:end end],:) ); |
18 |
H=max( h, Hsides ); |
19 |
|
20 |
%H=h; |
21 |
for jj=1:ny; |
22 |
jp=min(ny,jj+1); |
23 |
jm=max(1,jj-1); |
24 |
for ii=1:nx; |
25 |
if periodic==1 |
26 |
ip=mod(ii,nx)+1; |
27 |
im=mod(ii-2+nx,nx)+1; |
28 |
else |
29 |
ip=min(nx,ii+1); |
30 |
im=max(1,ii-1); |
31 |
end |
32 |
|
33 |
hp=H(ii,jj); |
34 |
hm=H(im,jj); |
35 |
ho=hx(ii,jj); |
36 |
if ho>max(hm,hp) |
37 |
if hm<hp |
38 |
H(ii,jj)=ho; |
39 |
else |
40 |
H(im,jj)=ho; |
41 |
end |
42 |
end |
43 |
|
44 |
hp=H(ii,jj); |
45 |
hm=H(ii,jm); |
46 |
ho=hy(ii,jj); |
47 |
if ho>max(hm,hp) |
48 |
if hm<hp |
49 |
H(ii,jj)=ho; |
50 |
else |
51 |
H(ii,jm)=ho; |
52 |
end |
53 |
end |
54 |
|
55 |
end |
56 |
end |