1 |
mlosch |
1.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 |