1 |
clear path |
2 |
|
3 |
global Nx Ny Nz |
4 |
global dx dy |
5 |
global lat long dz dm mdep |
6 |
global delt_su su_its t_su delt |
7 |
global descriptor this_path |
8 |
global f0 deltaf Q beta r_expt r_heat H |
9 |
global time rots it |
10 |
global g Cp rho_bar alpha |
11 |
global u v t w |
12 |
global iteration |
13 |
|
14 |
|
15 |
param_file_name = ... |
16 |
input(' Please enter the name of the m-file with the parameters for this run : ','s') ; |
17 |
feval(param_file_name) ; |
18 |
|
19 |
dz=0.005; |
20 |
beta=0; |
21 |
f=f0; |
22 |
iteration |
23 |
|
24 |
itstart = input(' Please enter start iteration : ','s') |
25 |
itend = input(' Please enter end iteration : ','s') |
26 |
|
27 |
|
28 |
sizeit=size(iteration); |
29 |
for i=1:sizeit(1) |
30 |
iter(i)=eval(iteration(i,1:10)); |
31 |
end |
32 |
nitstart=find(iter==eval(itstart)) |
33 |
nitend=find(iter==eval(itend)) |
34 |
|
35 |
path = this_path |
36 |
cmdstr=['cd ' path ]; |
37 |
eval(cmdstr); |
38 |
path=pwd |
39 |
|
40 |
sumtheta=zeros(Nx,Ny,Nz); |
41 |
sumu=zeros(Nx,Ny,Nz); |
42 |
sumv=zeros(Nx,Ny,Nz); |
43 |
sumw=zeros(Nx,Ny,Nz); |
44 |
counter=0; |
45 |
|
46 |
for i=nitstart:nitend |
47 |
|
48 |
path = this_path; |
49 |
eval(['cd ' path '/it',int2str(iter(i))]); |
50 |
path=pwd; |
51 |
|
52 |
i,0 |
53 |
tfn='theta.sun.b'; |
54 |
ufn='u.sun.b'; |
55 |
vfn='v.sun.b'; |
56 |
|
57 |
% T (m/s) |
58 |
t=Readmodel(tfn,[Nx Ny Nz],'float32'); |
59 |
t=Extract([3 Nx Ny Nz t(5:4+Nx*Ny*Nz)],[1 Nx 1 Ny 1 Nz]); |
60 |
t=reshape(t,Nx,Ny,Nz); |
61 |
|
62 |
% U (m/s) |
63 |
u=Readmodel(ufn,[Nx Ny Nz],'float32'); |
64 |
u=Extract([3 Nx Ny Nz u(5:4+Nx*Ny*Nz)],[1 Nx 1 Ny 1 Nz]); |
65 |
u=reshape(u,Nx,Ny,Nz); |
66 |
|
67 |
% V (m/s) |
68 |
v=Readmodel(vfn,[Nx Ny Nz],'float32'); |
69 |
v=Extract([3 Nx Ny Nz v(5:4+Nx*Ny*Nz)],[1 Nx 1 Ny 1 Nz]); |
70 |
v=reshape(v,Nx,Ny,Nz); |
71 |
|
72 |
% W (m/s) |
73 |
|
74 |
w=zeros(Nx,Ny,Nz+1); |
75 |
|
76 |
for k=Nz:-1:1, |
77 |
w(1:Nx-1,1:Ny-1,k)= w(1:Nx-1,1:Ny-1,k+1)... |
78 |
-u(2:Nx,1:Ny-1,k)*dz/dx +u(1:Nx-1,1:Ny-1,k)*dz/dx ... |
79 |
-v(1:Nx-1,2:Ny,k)*dz/dy +v(1:Nx-1,1:Ny-1,k)*dz/dy ; |
80 |
end |
81 |
|
82 |
|
83 |
%tfilename=(['T.' iterations((i),1:10) ]) ; |
84 |
%t=rdmds(tfilename,'b'); |
85 |
|
86 |
%ufilename=(['U.' iterations((i),1:10) ]) ; |
87 |
%u=rdmds(ufilename,'b'); |
88 |
u(1:Nx-1,:,:)=0.5*(u(1:Nx-1,:,:)+u(2:Nx,:,:)); |
89 |
|
90 |
%vfilename=(['V.' iterations((i),1:10) ]) ; |
91 |
%v=rdmds(vfilename,'b'); |
92 |
v(:,1:Ny-1,:)=0.5*(v(:,1:Ny-1,:)+v(:,2:Ny,:)); |
93 |
|
94 |
%wfilename=(['W.' iterations((i),1:10) ]) ; |
95 |
%w=rdmds(wfilename,'b'); |
96 |
|
97 |
sumtheta=sumtheta+t; |
98 |
sumu=sumu+u; |
99 |
sumv=sumv+v; |
100 |
sumw=sumw+w(:,:,1:Nz); |
101 |
counter=counter+1; |
102 |
end |
103 |
|
104 |
meantheta=sumtheta/counter; |
105 |
meanu=sumu/counter; |
106 |
meanv=sumv/counter; |
107 |
meanw=sumw/counter; |
108 |
|
109 |
sumut=zeros(Nx,Ny,Nz); |
110 |
sumvt=zeros(Nx,Ny,Nz); |
111 |
sumwt=zeros(Nx,Ny,Nz); |
112 |
|
113 |
sumuu=zeros(Nx,Ny,Nz); |
114 |
sumvu=zeros(Nx,Ny,Nz); |
115 |
sumwu=zeros(Nx,Ny,Nz); |
116 |
sumvv=zeros(Nx,Ny,Nz); |
117 |
sumwv=zeros(Nx,Ny,Nz); |
118 |
|
119 |
%meanu=smooth3(meanu); |
120 |
%meanv=smooth3(meanv); |
121 |
%meanw=smooth3(meanw); |
122 |
%meantheta=smooth3(meantheta); |
123 |
|
124 |
for i=nitstart:nitend |
125 |
i |
126 |
path = this_path; |
127 |
eval(['cd ' path '/it',int2str(iter(i))]); |
128 |
path=pwd; |
129 |
|
130 |
% T (m/s) |
131 |
t=Readmodel(tfn,[Nx Ny Nz],'float32'); |
132 |
t=Extract([3 Nx Ny Nz t(5:4+Nx*Ny*Nz)],[1 Nx 1 Ny 1 Nz]); |
133 |
t=reshape(t,Nx,Ny,Nz); |
134 |
|
135 |
% U (m/s) |
136 |
u=Readmodel(ufn,[Nx Ny Nz],'float32'); |
137 |
u=Extract([3 Nx Ny Nz u(5:4+Nx*Ny*Nz)],[1 Nx 1 Ny 1 Nz]); |
138 |
u=reshape(u,Nx,Ny,Nz); |
139 |
|
140 |
% V (m/s) |
141 |
v=Readmodel(vfn,[Nx Ny Nz],'float32'); |
142 |
v=Extract([3 Nx Ny Nz v(5:4+Nx*Ny*Nz)],[1 Nx 1 Ny 1 Nz]); |
143 |
v=reshape(v,Nx,Ny,Nz); |
144 |
|
145 |
% W (m/s) |
146 |
|
147 |
w=zeros(Nx,Ny,Nz+1); |
148 |
|
149 |
for k=Nz:-1:1, |
150 |
w(1:Nx-1,1:Ny-1,k)= w(1:Nx-1,1:Ny-1,k+1)... |
151 |
-u(2:Nx,1:Ny-1,k)*dz/dx +u(1:Nx-1,1:Ny-1,k)*dz/dx ... |
152 |
-v(1:Nx-1,2:Ny,k)*dz/dy +v(1:Nx-1,1:Ny-1,k)*dz/dy ; |
153 |
end |
154 |
|
155 |
|
156 |
|
157 |
%tfilename=(['T.' iterations((i),1:10) ]) ; |
158 |
%t=rdmds(tfilename,'b'); |
159 |
|
160 |
%ufilename=(['U.' iterations((i),1:10) ]) ; |
161 |
%u=rdmds(ufilename,'b'); |
162 |
u(1:Nx-1,:,:)=0.5*(u(1:Nx-1,:,:)+u(2:Nx,:,:)); |
163 |
|
164 |
%vfilename=(['V.' iterations((i),1:10) ]) ; |
165 |
%v=rdmds(vfilename,'b'); |
166 |
v(:,1:Ny-1,:)=0.5*(v(:,1:Ny-1,:)+v(:,2:Ny,:)); |
167 |
|
168 |
%wfilename=(['W.' iterations((i),1:10) ]) ; |
169 |
%w=rdmds(wfilename,'b'); |
170 |
|
171 |
t=t-meantheta; |
172 |
u=u-meanu; |
173 |
v=v-meanv; |
174 |
w(:,:,1:Nz)=w(:,:,1:Nz)-meanw; |
175 |
|
176 |
sumut=sumut+u.*t; |
177 |
sumvt=sumvt+v.*t; |
178 |
sumwt=sumwt+w(:,:,1:Nz).*t; |
179 |
|
180 |
sumuu=sumuu+u.*u; |
181 |
sumvu=sumvu+v.*u; |
182 |
sumwu=sumwu+w(:,:,1:Nz).*u; |
183 |
sumvv=sumvv+v.*v; |
184 |
sumwv=sumwv+w(:,:,1:Nz).*v; |
185 |
end |
186 |
|
187 |
sumut=sumut/counter; |
188 |
sumvt=sumvt/counter; |
189 |
sumwt=sumwt/counter; |
190 |
|
191 |
sumuu=sumuu/counter; |
192 |
sumvu=sumvu/counter; |
193 |
sumwu=sumwu/counter; |
194 |
sumvv=sumvv/counter; |
195 |
sumwv=sumwv/counter; |
196 |
|
197 |
Mu=zeros(Nx,Ny,Nz); |
198 |
Mv=zeros(Nx,Ny,Nz); |
199 |
D=zeros(Nx,Ny,Nz); |
200 |
|
201 |
%dx=dm; |
202 |
%dy=dm; |
203 |
dz=-dz; |
204 |
|
205 |
Mu(2:Nx-1,2:Ny-1,2:Nz-1)=-(sumuu(3:Nx,2:Ny-1,2:Nz-1)-sumuu(1:Nx-2,2:Ny-1,2:Nz-1))/(2*dx) ... |
206 |
-(sumvu(2:Nx-1,3:Ny,2:Nz-1)-sumvu(2:Nx-1,1:Ny-2,2:Nz-1))/(2*dy) ... |
207 |
-(sumwu(2:Nx-1,2:Ny-1,3:Nz)-sumwu(2:Nx-1,2:Ny-1,1:Nz-2))/(2*dz); |
208 |
|
209 |
Mv(2:Nx-1,2:Ny-1,2:Nz-1)=-(sumvu(3:Nx,2:Ny-1,2:Nz-1)-sumvu(1:Nx-2,2:Ny-1,2:Nz-1))/(2*dx) ... |
210 |
-(sumvv(2:Nx-1,3:Ny,2:Nz-1)-sumvv(2:Nx-1,1:Ny-2,2:Nz-1))/(2*dy) ... |
211 |
-(sumwv(2:Nx-1,2:Ny-1,3:Nz)-sumwv(2:Nx-1,2:Ny-1,1:Nz-2))/(2*dz); |
212 |
|
213 |
D(2:Nx-1,2:Ny-1,2:Nz-1)=-(sumut(3:Nx,2:Ny-1,2:Nz-1)-sumut(1:Nx-2,2:Ny-1,2:Nz-1))/(2*dx) ... |
214 |
-(sumvt(2:Nx-1,3:Ny,2:Nz-1)-sumvt(2:Nx-1,1:Ny-2,2:Nz-1))/(2*dy) ... |
215 |
-(sumwt(2:Nx-1,2:Ny-1,3:Nz)-sumwt(2:Nx-1,2:Ny-1,1:Nz-2))/(2*dz); |
216 |
|
217 |
pv=zeros(Nx,Ny,Nz); |
218 |
ff=zeros(Nx,Ny,Nz); |
219 |
|
220 |
|
221 |
for j=1:Ny |
222 |
ff(:,j,:)=f+(j-1)*dy*beta; |
223 |
end |
224 |
|
225 |
pv(2:Nx-1,2:Ny-1,2:Nz-1)=(meanv(3:Nx,2:Ny-1,2:Nz-1)/(2*dx)-meanv(1:Nx-2,2:Ny-1,2:Nz-1)/(2*dx) ... |
226 |
-meanu(2:Nx-1,3:Ny,2:Nz-1)/(2*dy)+meanu(2:Nx-1,1:Ny-2,2:Nz-1)/(2*dy) ... |
227 |
+ff(2:Nx-1,2:Ny-1,2:Nz-1)) ... |
228 |
.*(meantheta(2:Nx-1,2:Ny-1,3:Nz)-meantheta(2:Nx-1,2:Ny-1,1:Nz-2))/(2*dz) ... |
229 |
-(meanv(2:Nx-1,2:Ny-1,3:Nz)-meanv(2:Nx-1,2:Ny-1,1:Nz-2))/(2*dz) ... |
230 |
.*(meantheta(3:Nx,2:Ny-1,2:Nz-1)-meantheta(1:Nx-2,2:Ny-1,2:Nz-1))/(2*dx)+ ... |
231 |
(meanu(2:Nx-1,2:Ny-1,3:Nz)-meanu(2:Nx-1,2:Ny-1,1:Nz-2))/(2*dz) ... |
232 |
.*(meantheta(2:Nx-1,3:Ny,2:Nz-1)-meantheta(2:Nx-1,1:Ny-2,2:Nz-1))/(2*dy); |
233 |
|
234 |
Mp=zeros(Nx,Ny,Nz); |
235 |
Dp=zeros(Nx,Ny,Nz); |
236 |
|
237 |
Mp(3:Nx-2,3:Ny-2,3:Nz-2)=((Mv(4:Nx-1,3:Ny-2,3:Nz-2)-Mv(2:Nx-3,3:Ny-2,3:Nz-2))/(2*dx)- ... |
238 |
(Mu(3:Nx-2,4:Ny-1,3:Nz-2)-Mu(3:Nx-2,2:Ny-3,3:Nz-2))/(2*dy)).* ... |
239 |
(meantheta(3:Nx-2,3:Ny-2,4:Nz-1)-meantheta(3:Nx-2,3:Ny-2,2:Nz-3))/(2*dz) ... |
240 |
-(Mv(3:Nx-2,3:Ny-2,4:Nz-1)-Mv(3:Nx-2,3:Ny-2,2:Nz-3))/(2*dz).* ... |
241 |
(meantheta(4:Nx-1,3:Ny-2,3:Nz-2)-meantheta(2:Nx-3,3:Ny-2,3:Nz-2))/(2*dx) ... |
242 |
+(Mu(3:Nx-2,3:Ny-2,4:Nz-1)-Mu(3:Nx-2,3:Ny-2,2:Nz-3))/(2*dz).* ... |
243 |
(meantheta(3:Nx-2,4:Ny-1,3:Nz-2)-meantheta(3:Nx-2,2:Ny-3,3:Nz-2))/(2*dy); |
244 |
|
245 |
Dp(3:Nx-2,3:Ny-2,3:Nz-2)=(D(3:Nx-2,3:Ny-2,4:Nz-1)-D(3:Nx-2,3:Ny-2,2:Nz-3))/(2*dz).* ... |
246 |
(meanv(4:Nx-1,3:Ny-2,3:Nz-2)/(2*dx)-meanv(2:Nx-3,3:Ny-2,3:Nz-2)/(2*dx) ... |
247 |
-meanu(3:Nx-2,4:Ny-1,3:Nz-2)/(2*dy)+meanu(3:Nx-2,2:Ny-3,3:Nz-2)/(2*dy)+ff(3:Nx-2,3:Ny-2,3:Nz-2)) ... |
248 |
-(D(4:Nx-1,3:Ny-2,3:Nz-2)-D(2:Nx-3,3:Ny-2,3:Nz-2))/(2*dx).* ... |
249 |
(meanv(3:Nx-2,3:Ny-2,4:Nz-1)-meanv(3:Nx-2,3:Ny-2,2:Nz-3))/(2*dz)+ ... |
250 |
(D(3:Nx-2,4:Ny-1,3:Nz-2)-D(3:Nx-2,2:Ny-3,3:Nz-2))/(2*dy).* ... |
251 |
(meanu(3:Nx-2,3:Ny-2,4:Nz-1)-meanu(3:Nx-2,3:Ny-2,2:Nz-3))/(2*dz); |
252 |
|
253 |
|
254 |
sumM=zeros(Nx,Ny); |
255 |
sumD=zeros(Nx,Ny); |
256 |
sumW=zeros(Nx,Ny); |
257 |
|
258 |
dz=-dz; |
259 |
|
260 |
% DEFINE BOX OF INTEGRATION |
261 |
Nx1=3; |
262 |
Nx2=Nx-2; |
263 |
Ny1=3; |
264 |
%Ny2=Ny-2; |
265 |
Ny2=Ny/2-2; |
266 |
Nz1=5; |
267 |
Nz2=Nz-4; |
268 |
|
269 |
|
270 |
for k=Nz1:Nz2 |
271 |
sumM(3:Nx-2,3:Ny-2)=sumM(3:Nx-2,3:Ny-2)+Mp(3:Nx-2,3:Ny-2,k).*pv(3:Nx-2,3:Ny-2,k)*dz; |
272 |
sumD(3:Nx-2,3:Ny-2)=sumD(3:Nx-2,3:Ny-2)+Dp(3:Nx-2,3:Ny-2,k).*pv(3:Nx-2,3:Ny-2,k)*dz; |
273 |
end |
274 |
sumW(3:Nx-2,3:Ny-2)=0.5*meanw(3:Nx-2,3:Ny-2,Nz1).*pv(3:Nx-2,3:Ny-2,Nz1).*pv(3:Nx-2,3:Ny-2,Nz1); |
275 |
|
276 |
%contourf(sumM',20);colorbar; |
277 |
%figure |
278 |
%contourf(sumD',20);colorbar; |
279 |
|
280 |
V=[0.25*min(min(sumW(Nx1:Nx2,Ny1:Ny2-4))) 0]; |
281 |
|
282 |
title='Vorticity input'; |
283 |
imagesc(lat,long,sumW(Nx1:Nx2,Ny1:Ny2-4)');shading flat;caxis(V);axis image;colorbar('vertical'); |
284 |
set(gca,'ydir','norm') |
285 |
text(0,110,title); |
286 |
figure |
287 |
V=[-0.5*max(max(abs(sumD(Nx1:Nx2,Ny1:Ny2-4)))) 0.5*max(max(abs(sumD(Nx1:Nx2,Ny1:Ny2-4))))] |
288 |
title='Buoyancy eddy-transfer integral'; |
289 |
imagesc(lat,long,sumD(Nx1:Nx2,Ny1:Ny2-4)');shading flat;caxis(V);axis image;colorbar('vertical'); |
290 |
set(gca,'ydir','norm') |
291 |
text(0,110,title); |
292 |
figure |
293 |
V=[-0.5*max(max(abs(sumM(Nx1:Nx2,Ny1:Ny2-4)))) 0.5*max(max(abs(sumM(Nx1:Nx2,Ny1:Ny2-4))))] |
294 |
title='Momentum eddy-transfer integral'; |
295 |
imagesc(lat,long,sumM(Nx1:Nx2,Ny1:Ny2-4)');shading flat;caxis(V);axis image;colorbar('vertical'); |
296 |
set(gca,'ydir','norm') |
297 |
text(0,110,title); |
298 |
|
299 |
|
300 |
%-----TEST------------------------------------------------- |
301 |
|
302 |
sum=0; |
303 |
sumT=0; |
304 |
for i=Nx1:Nx2 |
305 |
for j=Ny1:Ny2 |
306 |
sum=sum+0.5*meanw(i,j,Nz1)*pv(i,j,Nz1)*pv(i,j,Nz1)*dx*dy; |
307 |
sumT=sum-0.5*meanw(i,j,Nz2)*pv(i,j,Nz2)*pv(i,j,Nz2)*dx*dy; |
308 |
end |
309 |
end |
310 |
|
311 |
for j=Ny1:Ny2 |
312 |
for k=Nz1:Nz2 |
313 |
sumT=sumT+0.5*meanu(Nx2,j,k)*pv(Nx2,j,k)*pv(Nx2,j,k)*dz*dy; |
314 |
sumT=sumT-0.5*meanu(Nx1,j,k)*pv(Nx1,j,k)*pv(Nx1,j,k)*dz*dy; |
315 |
end |
316 |
end |
317 |
|
318 |
for i=Nx1:Nx2 |
319 |
for k=Nz1:Nz2 |
320 |
sumT=sumT+0.5*meanv(i,Ny2,k)*pv(i,Ny2,k)*pv(i,Ny2,k)*dz*dx; |
321 |
sumT=sumT-0.5*meanv(i,Ny1,k)*pv(i,Ny1,k)*pv(i,Ny1,k)*dz*dx; |
322 |
end |
323 |
end |
324 |
'VORTICITY GENERATION' |
325 |
sum |
326 |
sumT |
327 |
|
328 |
|
329 |
sum=0; |
330 |
for i=Nx1:Nx2 |
331 |
for j=Ny1:Ny2 |
332 |
sum=sum+sumD(i,j)*dx*dy; |
333 |
end |
334 |
end |
335 |
'DISSIPATION BY EDDY-DIFFUSIVITY' |
336 |
sum |
337 |
|
338 |
sum=0; |
339 |
for i=Nx1:Nx2 |
340 |
for j=Ny1:Ny2 |
341 |
sum=sum+sumM(i,j)*dx*dy; |
342 |
end |
343 |
end |
344 |
'DISSIPATION BY EDDY-VISCOSITY' |
345 |
sum |