1 |
expdir = '../run'; |
2 |
iter=Inf; |
3 |
g=mit_loadgrid;nx=g.nx; ny = g.ny; |
4 |
grd = rdmnc(fullfile(expdir,'grid.*'),'Ro_surf','R_low','Depth'); |
5 |
g.depth=-grd.R_low; |
6 |
g.ro_surf=-grd.Ro_surf; |
7 |
|
8 |
DZ = repmat(reshape(g.dz,[1 1 g.nz]),[g.nx g.ny 1]); |
9 |
s2d = rdmnc(fullfile(expdir,'surfDiag.*'),iter); |
10 |
s3d = rdmnc(fullfile(expdir,'dynDiag.*'),iter); |
11 |
e = s2d.ETAN(1:g.nx,1:g.ny,:,:); |
12 |
t = s3d.THETA(1:g.nx,1:g.ny,:,:); |
13 |
s = s3d.SALT(1:g.nx,1:g.ny,:,:); |
14 |
uh = s3d.UVELMASS(1:g.nx,1:g.ny,:,:); |
15 |
vh = s3d.VVELMASS(1:g.nx,1:g.ny,:,:); |
16 |
% $$$ state = rdmnc(fullfile(expdir,'state.*'),iter); |
17 |
% $$$ if isempty(state) |
18 |
% $$$ [u,iter]=rdmds('U',iter); |
19 |
% $$$ v=rdmds('V',iter); |
20 |
% $$$ w=rdmds('W',iter); |
21 |
% $$$ t=rdmds('T',iter); |
22 |
% $$$ s=rdmds('S',iter); |
23 |
% $$$ e=rdmds('Eta',iter); |
24 |
% $$$ ph=rdmds('PH',iter); |
25 |
% $$$ else |
26 |
% $$$ u=state.U(1:g.nx,1:g.ny,:,:); |
27 |
% $$$ v=state.V(1:g.nx,1:g.ny,:,:); |
28 |
% $$$ w=state.W(1:g.nx,1:g.ny,:,:); |
29 |
% $$$ t=state.Temp(1:g.nx,1:g.ny,:,:); |
30 |
% $$$ s=state.S(1:g.nx,1:g.ny,:,:); |
31 |
% $$$ e=state.Eta(1:g.nx,1:g.ny,:,:); |
32 |
% $$$ phstate = rdmnc(fullfile(expdir,'phiHyd.*'),'phiHyd',iter); |
33 |
% $$$ if size(e,3) > 1 |
34 |
% $$$ ph=phstate.phiHyd(1:g.nx,1:g.ny,:,[1 1:end]); |
35 |
% $$$ else |
36 |
% $$$ ph=phstate.phiHyd(1:g.nx,1:g.ny,:,:); |
37 |
% $$$ end |
38 |
% $$$ end |
39 |
% $$$ ph0 = g.gravity*g.zc; |
40 |
% $$$ msk = repmat(g.cmask,[1 1 1 size(u,4)]); |
41 |
% $$$ %prs = g.rhonil*(ph+repmat(reshape(g.zc/g.gravity,[1 1 g.nz]),[nx ny 1 size(u,4)])); |
42 |
% $$$ %prs = g.rhonil*(ph+repmat(reshape(e/g.gravity,[nx ny 1 size(u,4)]),[1 1 g.nz 1])); |
43 |
% $$$ %prs = prs.*msk; |
44 |
% $$$ hfw=change(g.hfacw,'==',NaN,0); |
45 |
% $$$ hfs=change(g.hfacs,'==',NaN,0); |
46 |
% $$$ uh = u; |
47 |
% $$$ vh = v; |
48 |
% $$$ for k=1:size(u,4) |
49 |
% $$$ uh(:,:,:,k) = u(:,:,:,k).*hfw; |
50 |
% $$$ vh(:,:,:,k) = v(:,:,:,k).*hfs; |
51 |
% $$$ end |
52 |
% $$$ [uc,vc,wc]=mit_velc(u,v,w); |
53 |
[uhc,vhc]=mit_velc(uh,vh); |
54 |
|
55 |
hfc=change(g.hfacc,'==',NaN,0); |
56 |
|
57 |
xg=repmat(reshape(g.xg,[size(g.xg) 1]),[1 1 g.nz])/1000; |
58 |
xc=repmat(reshape(g.xc,[size(g.xg) 1]),[1 1 g.nz])/1000; |
59 |
yc=repmat(reshape(g.yc,[size(g.yg) 1]),[1 1 g.nz])/1000; |
60 |
yg=repmat(reshape(g.yg,[size(g.yg) 1]),[1 1 g.nz])/1000; |
61 |
|
62 |
fld=t; |
63 |
%fld=uc; |
64 |
|
65 |
% define section along main axis of PIG |
66 |
[r,lo,la]=m_lldist([-102 -99.4],[-75 -75.3],20); |
67 |
dd=m_lldist(lo,la); |
68 |
xd = [0;cumsum(dd)]; |
69 |
for k=1:size(fld,3); |
70 |
fldsec(:,k) = interp2(g.lonc,g.latc,(fld(:,:,k))',lo,la,'nearest'); |
71 |
end |
72 |
depsec = -interp2(g.lonc,g.latc,g.depth',lo,la,'nearest'); |
73 |
rossec = -interp2(g.lonc,g.latc,g.ro_surf',lo,la,'nearest'); |
74 |
|
75 |
% bottom |
76 |
landcolor = [1 1 1]*.7; |
77 |
icecolor = [1 1 1]*1; |
78 |
|
79 |
nn=length(xd); |
80 |
ix = 1:nn; i=nn; k=0; while i > 1; ix=ix([1:i i i+1:nn+k]); i=i-1; k=k+1; end |
81 |
xb = xd(ix); |
82 |
zb = depsec([1 ix(1:end-1)]); |
83 |
zb(end) = zb(1); |
84 |
% top |
85 |
zt = rossec([1 ix(1:end-1)]); |
86 |
zt(end) = zt(1); |
87 |
|
88 |
cax = [min(sq(fldsec(:))) max(sq(fldsec(:)))]; |
89 |
flev = cax(1):diff(cax)/20:cax(2); |
90 |
h=pcol(xd,-g.zg,sq(fldsec)'); shading flat |
91 |
hold on |
92 |
fhb=fill([xb(1) xb' xb(end)],[-1000 zb -1000], ... |
93 |
landcolor,'edgecolor','none'); |
94 |
fht=fill(xb,zt,icecolor,'edgecolor','k'); |
95 |
% $$$ fhb = plot(xb(:),sq(zb),'k'); |
96 |
% $$$ fht = plot(xb(:),sq(zt),'k'); |
97 |
hold off |
98 |
caxis(cax);colorbar |
99 |
|
100 |
pause; |
101 |
|
102 |
m_proj('lambert','lon',[min(g.xg(:)) max(g.xg(:))+.125], ... |
103 |
'lat',[min(g.yg(:)) max(g.yg(:))+.125*cos(max(g.yg(:))*pi/180)]) |
104 |
[xx,yy]=m_ll2xy(g.xg,g.yg); |
105 |
[tfld,bfld] = topbot(g,fld); |
106 |
clf |
107 |
pcol(xx',yy',sq(tfld)'); |
108 |
m_grid; |
109 |
hold on |
110 |
sdz=sum(DZ.*hfc,3); |
111 |
m_quiver(g.xc',g.yc',(sum(uhc.*DZ,3)./sdz)',(sum(vhc.*DZ,3)./sdz)',4,'k') |
112 |
m_contour(g.lonc,g.latc,grd.Ro_surf',[-1 -1],'k') |
113 |
hold off |
114 |
%caxis([-2 -1.9]) |
115 |
colorbar |
116 |
|
117 |
return |
118 |
clf |
119 |
pcol(xx',yy',sq(sq(grd.Ro_surf)-sq(grd.R_low))') |
120 |
hold on |
121 |
m_contour(g.xc',g.yc',(sq(grd.Ro_surf)-sq(grd.R_low))',[0:100:1000],'k') |
122 |
caxis([0 700]) |
123 |
colorbar |
124 |
m_grid |
125 |
|
126 |
[x,y,z]=meshgrid(g.long,g.latg,g.zg); |
127 |
sx = [-102:.2:-100]; |
128 |
sy = [-75.3:.1:-74.6]; |
129 |
sz = [-15 -500]; |
130 |
slice(x,y,-z,permute(sq(fld),[2 1 3]),sx,sy,sz); |
131 |
shading flat |
132 |
camlight |
133 |
%caxis([-2 -1.88]) |
134 |
|
135 |
[ut,ub] = topbot(g,uhc./g.hfacc); |
136 |
[vt,vb] = topbot(g,vhc./g.hfacc); |
137 |
sdz=sum(DZ.*hfc,3); |
138 |
uu=(sum(uhc.*DZ,3)./sdz); |
139 |
vv=(sum(vhc.*DZ,3)./sdz); |
140 |
|
141 |
pcol(xx',yy',-sq(s2d.SHIfwFlx)'/1000*31104000); |
142 |
m_grid; |
143 |
hold on |
144 |
m_quiver(g.xc',g.yc',uu',vv',2,'k') |
145 |
m_contour(g.lonc,g.latc,grd.Ro_surf',[-1 -1],'k') |
146 |
hold off |
147 |
%caxis([-2 -1.9]) |
148 |
colorbar |