1 | pro turbulence |
---|
2 | |
---|
3 | ;;---------------------------------------------------- |
---|
4 | ;;---------------------------------------------------- |
---|
5 | ;;---------------------------------------------------- |
---|
6 | |
---|
7 | |
---|
8 | retrieve='true' |
---|
9 | ;retrieve='false' |
---|
10 | |
---|
11 | |
---|
12 | |
---|
13 | ;; CALCUL DE LA MOYENNE |
---|
14 | ;; 18 pas assez 74 trop |
---|
15 | meansmooth=37 |
---|
16 | ;meansmooth=18 |
---|
17 | ;meansmooth=74 |
---|
18 | |
---|
19 | ;; CALCUL DE LA MOYENNE DES FLUX |
---|
20 | ;smoothampl=74 |
---|
21 | ;smoothampl=2 |
---|
22 | ;smoothampl=10 |
---|
23 | ;smoothampl=18 |
---|
24 | smoothampl=meansmooth |
---|
25 | |
---|
26 | saveps='false' |
---|
27 | ;saveps='true' |
---|
28 | |
---|
29 | yu=20 |
---|
30 | |
---|
31 | ;;---------------------------------------------------- |
---|
32 | ;;---------------------------------------------------- |
---|
33 | ;;---------------------------------------------------- |
---|
34 | |
---|
35 | |
---|
36 | p0=610. & t0=220. & r_cp=1/4.4 & grav=3.72 & R=192. |
---|
37 | |
---|
38 | ; |
---|
39 | ; graphics definition |
---|
40 | ; |
---|
41 | if (saveps eq 'false') then begin |
---|
42 | !p.multi=[0,3,2] |
---|
43 | !P.CHARSIZE=2. |
---|
44 | endif else begin |
---|
45 | !p.charthick = 2.0 |
---|
46 | !p.thick = 3.0 |
---|
47 | !x.thick = 2.0 |
---|
48 | !y.thick = 2.0 |
---|
49 | endelse |
---|
50 | |
---|
51 | ; |
---|
52 | ; input files |
---|
53 | ; |
---|
54 | OPENR, 22, 'input_coord' & READF, 22, lonu & READF, 22, latu & READF, 22, lsu & READF, 22, lctu & CLOSE, 22 |
---|
55 | OPENR, 23, 'input_more' & READF, 23, hgtu, tsurfu & CLOSE, 23 |
---|
56 | print, lonu, latu, lsu, lctu, hgtu, tsurfu |
---|
57 | |
---|
58 | |
---|
59 | ; |
---|
60 | ; retrieve |
---|
61 | ; |
---|
62 | if (retrieve eq 'true') then begin |
---|
63 | |
---|
64 | |
---|
65 | ; |
---|
66 | ; get fields |
---|
67 | ; |
---|
68 | getcdf, file='u'+string(yu,'(I0)')+'.nc', charvar='U', invar=u |
---|
69 | getcdf, file='v'+string(yu,'(I0)')+'.nc', charvar='V', invar=v |
---|
70 | getcdf, file='t'+string(yu,'(I0)')+'.nc', charvar='T', invar=t |
---|
71 | getcdf, file='w'+string(yu,'(I0)')+'.nc', charvar='W', invar=w |
---|
72 | getcdf, file='p'+string(yu,'(I0)')+'.nc', charvar='PTOT', invar=p |
---|
73 | ; |
---|
74 | ; no vertical staggering for w |
---|
75 | ; |
---|
76 | wplus=shift(w,0,0,-1,0) |
---|
77 | w=(w+wplus)/2. |
---|
78 | w=w(*,*,0:n_elements(w(0,0,*,0))-2,*) |
---|
79 | |
---|
80 | |
---|
81 | ndim=n_elements(t(*,0,0,0)) |
---|
82 | lat=fltarr(ndim,ndim) |
---|
83 | lon=fltarr(ndim,ndim) |
---|
84 | for i=0,ndim-1 do begin |
---|
85 | for j=0,ndim-1 do begin |
---|
86 | lat(i,j)=latu+float(j)*100./59000. |
---|
87 | lon(i,j)=lonu+float(i)*100./59000. |
---|
88 | endfor |
---|
89 | endfor |
---|
90 | what_I_plot=0. & what_I_plot2=0. & what_I_plot3=0. & what_I_plot4=0. & what_I_plot5=0. & what_I_plot6=0. |
---|
91 | maxwhat_I_plot=0. & maxwhat_I_plot2=0. & maxwhat_I_plot3=0. |
---|
92 | minwhat_I_plot=0. |
---|
93 | |
---|
94 | |
---|
95 | ; |
---|
96 | ; loop on west-east coordinate |
---|
97 | ; |
---|
98 | nloop=n_elements(t(*,0,0,0)) |
---|
99 | for i=0,nloop-1 do begin |
---|
100 | |
---|
101 | indp=[i,0] ;;indp=[75,0] |
---|
102 | |
---|
103 | ; |
---|
104 | ; 2D field for plot |
---|
105 | ; |
---|
106 | t2=reform(t(indp[0],indp[1],*,*)) |
---|
107 | t2_save=t0+reform(t(indp[0],indp[1],*,*)) |
---|
108 | treal2_save=t2_save*(reform(p(indp[0],indp[1],*,*))/p0)^r_cp |
---|
109 | u2=reform(u(indp[0],indp[1],*,*)) |
---|
110 | v2=reform(v(indp[0],indp[1],*,*)) |
---|
111 | w2=reform(w(indp[0],indp[1],*,*)) |
---|
112 | nz=n_elements(t2(*,0)) |
---|
113 | nt=n_elements(t2(0,*)) |
---|
114 | |
---|
115 | nt=nt-2 |
---|
116 | t2=t2[*,0:nt-1] |
---|
117 | u2=u2[*,0:nt-1] |
---|
118 | v2=v2[*,0:nt-1] |
---|
119 | w2=w2[*,0:nt-1] |
---|
120 | |
---|
121 | ;; |
---|
122 | ;; local time |
---|
123 | ;; |
---|
124 | ;localtime=21.+100.*findgen(nt)/3700.+lon(indp[0],indp[1])/15.-24. |
---|
125 | localtime=lctu+100.*findgen(nt)/3700. |
---|
126 | ;;print, localtime |
---|
127 | |
---|
128 | ; |
---|
129 | ; 1. perturbations |
---|
130 | ; |
---|
131 | for k=0,nz-1 do begin |
---|
132 | t2(k,*)=t2(k,*)-SMOOTH(reform(t2(k,*)),meansmooth,/EDGE_TRUNCATE) |
---|
133 | u2(k,*)=u2(k,*)-SMOOTH(reform(u2(k,*)),meansmooth,/EDGE_TRUNCATE) |
---|
134 | v2(k,*)=v2(k,*)-SMOOTH(reform(v2(k,*)),meansmooth,/EDGE_TRUNCATE) |
---|
135 | w2(k,*)=w2(k,*);-SMOOTH(reform(w2(k,*)),meansmooth,/EDGE_TRUNCATE) |
---|
136 | ;treal2_save(k,*)=treal2_save(k,*)-SMOOTH(reform(treal2_save(k,*)),meansmooth,/EDGE_TRUNCATE) |
---|
137 | endfor |
---|
138 | ; |
---|
139 | ; 2. nonlinear products |
---|
140 | ; |
---|
141 | vertical_eddy_heat_flux=w2*t2 |
---|
142 | uprime2=u2^2 |
---|
143 | vprime2=v2^2 |
---|
144 | wprime2=w2^2 |
---|
145 | ; |
---|
146 | ; 3. Reynolds averaging |
---|
147 | ; |
---|
148 | for k=0,nz-1 do begin |
---|
149 | vertical_eddy_heat_flux(k,*)=SMOOTH(reform(vertical_eddy_heat_flux(k,*)),smoothampl,/EDGE_TRUNCATE) |
---|
150 | uprime2(k,*)=SMOOTH(reform(uprime2(k,*)),smoothampl,/EDGE_TRUNCATE) |
---|
151 | vprime2(k,*)=SMOOTH(reform(vprime2(k,*)),smoothampl,/EDGE_TRUNCATE) |
---|
152 | wprime2(k,*)=SMOOTH(reform(wprime2(k,*)),smoothampl,/EDGE_TRUNCATE) |
---|
153 | endfor |
---|
154 | tke=0.5*(uprime2+vprime2+wprime2) |
---|
155 | |
---|
156 | |
---|
157 | what_I_plot=what_I_plot+vertical_eddy_heat_flux/nloop |
---|
158 | what_I_plot2=what_I_plot2+tke/nloop |
---|
159 | what_I_plot3=what_I_plot3+wprime2/nloop |
---|
160 | what_I_plot4=what_I_plot4+t2_save/nloop |
---|
161 | what_I_plot5=what_I_plot5+treal2_save/nloop |
---|
162 | if (i eq nloop-1) then what_I_plot6=t2 |
---|
163 | |
---|
164 | ;;help, t2 |
---|
165 | ;;help, treal2_save |
---|
166 | ;treal2_save=treal2_save(0:n_elements(t2(*,0))-1,0:n_elements(t2(0,*))-1) |
---|
167 | ;if (i eq nloop-1) then what_I_plot6=treal2_save |
---|
168 | |
---|
169 | yeah=max(vertical_eddy_heat_flux) |
---|
170 | yeah2=max(tke) |
---|
171 | yeah3=max(wprime2) |
---|
172 | yeah4=min(vertical_eddy_heat_flux) |
---|
173 | |
---|
174 | if (yeah gt maxwhat_I_plot) then maxwhat_I_plot=yeah |
---|
175 | if (yeah2 gt maxwhat_I_plot2) then maxwhat_I_plot2=yeah2 |
---|
176 | if (yeah3 gt maxwhat_I_plot3) then maxwhat_I_plot3=yeah3 |
---|
177 | if (yeah4 lt minwhat_I_plot) then minwhat_I_plot=yeah4 |
---|
178 | |
---|
179 | endfor |
---|
180 | |
---|
181 | |
---|
182 | |
---|
183 | |
---|
184 | |
---|
185 | ; |
---|
186 | ; get model height |
---|
187 | ; |
---|
188 | getcdf, file='ph'+string(yu,'(I0)')+'.nc', charvar='PHTOT', invar=ph |
---|
189 | height=reform(ph(*,0,*,*)) |
---|
190 | height=total(height,1)/n_elements(height(*,0,0)) |
---|
191 | height=reform(height) |
---|
192 | height=total(height(*,1:nt-1),2)/(nt-1) |
---|
193 | height=height/1000./3.72 |
---|
194 | heightp=height(0:n_elements(height(*))-2) |
---|
195 | ; |
---|
196 | ; altitude above ground |
---|
197 | ; |
---|
198 | heightp=heightp-hgtu/1000. |
---|
199 | |
---|
200 | |
---|
201 | ; |
---|
202 | ; save |
---|
203 | ; |
---|
204 | save, what_I_plot, $ |
---|
205 | what_I_plot2, $ |
---|
206 | what_I_plot3, $ |
---|
207 | what_I_plot4, $ |
---|
208 | what_I_plot5, $ |
---|
209 | what_I_plot6, $ |
---|
210 | localtime, $ |
---|
211 | heightp, $ |
---|
212 | lat, $ |
---|
213 | lon, $ |
---|
214 | hgtu, $ |
---|
215 | filename='turbulence.dat' |
---|
216 | |
---|
217 | endif else begin |
---|
218 | restore, filename='turbulence.dat' |
---|
219 | endelse |
---|
220 | |
---|
221 | help, what_I_plot |
---|
222 | help, localtime |
---|
223 | help, heightp |
---|
224 | |
---|
225 | |
---|
226 | latwrite=string(lat(0,yu),'(F5.1)') |
---|
227 | |
---|
228 | |
---|
229 | |
---|
230 | |
---|
231 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
232 | if (saveps eq 'true') then begin |
---|
233 | set_plot, 'ps' & device, filename='plot/TKE.ps' |
---|
234 | endif |
---|
235 | |
---|
236 | lev=findgen(15)+1. |
---|
237 | contour, $ |
---|
238 | transpose(what_I_plot2), $ |
---|
239 | localtime, $ |
---|
240 | heightp, $ |
---|
241 | xtitle='Local Time (h)', $ |
---|
242 | xrange=[8.,18.], $ |
---|
243 | xtickinterval=1., $ |
---|
244 | ytitle='Altitude above surface (km)', $ |
---|
245 | yrange=[0.,10.], $ |
---|
246 | ytickinterval=1., $ |
---|
247 | title="Turbulent Kinetic Energy 0.5[<u'!U2!N>+<v'!U2!N>+<w'!U2!N>] (m!U2!N.s!U-2!N)", $ |
---|
248 | levels=lev, $ |
---|
249 | c_labels=findgen(n_elements(lev))*0.+1., $ |
---|
250 | subtitle='zonal average at lat. '+latwrite+' (max value is '+string(maxwhat_I_plot2,'(F4.1)')+' m!U2!N.s!U-2!N)' |
---|
251 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
252 | |
---|
253 | |
---|
254 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
255 | if (saveps eq 'true') then begin |
---|
256 | device, /close |
---|
257 | set_plot, 'ps' & device, filename='plot/zTKE.ps' |
---|
258 | endif |
---|
259 | |
---|
260 | lev=findgen(15)+1. |
---|
261 | contour, $ |
---|
262 | 0.5*transpose(what_I_plot3), $ |
---|
263 | localtime, $ |
---|
264 | heightp, $ |
---|
265 | xtitle='Local Time (h)', $ |
---|
266 | xrange=[8.,18.], $ |
---|
267 | xtickinterval=1., $ |
---|
268 | ytitle='Altitude above surface (km)', $ |
---|
269 | yrange=[0.,10.], $ |
---|
270 | ytickinterval=1., $ |
---|
271 | title="Vertical TKE 0.5<w'!U2!N> (m!U2!N.s!U-2!N)", $ |
---|
272 | levels=lev, $ |
---|
273 | c_labels=findgen(n_elements(lev))*0.+1., $ |
---|
274 | subtitle='zonal average at lat. '+latwrite+' (max value is '+string(0.5*maxwhat_I_plot3,'(F4.1)')+' m!U2!N.s!U-2!N)' |
---|
275 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
276 | |
---|
277 | |
---|
278 | |
---|
279 | |
---|
280 | if (saveps eq 'true') then begin |
---|
281 | device, /close |
---|
282 | set_plot, 'ps' & device, filename='plot/HF.ps' |
---|
283 | endif |
---|
284 | |
---|
285 | ;lev=[-0.15,-0.05,-0.02,0.05,0.15,0.25,0.35,0.45,0.55,0.65,0.75,0.85,0.95] |
---|
286 | lev = -1. + findgen(20)/10. |
---|
287 | contour, $ |
---|
288 | transpose(what_I_plot), $ |
---|
289 | localtime, $ |
---|
290 | heightp, $ |
---|
291 | xtitle='Local Time (h)', $ |
---|
292 | xrange=[8.,18.], $ |
---|
293 | xtickinterval=1., $ |
---|
294 | ytitle='Altitude above surface (km)', $ |
---|
295 | yrange=[0.,10.], $ |
---|
296 | ytickinterval=1., $ |
---|
297 | title="Vertical Eddy Heat Flux <w'!7h!3'> (K.m.s!U-1!N)", $ |
---|
298 | levels=lev, $ |
---|
299 | C_LINESTYLE = (lev LT 0.0), $ |
---|
300 | c_labels=findgen(n_elements(lev))*0.+1., $ |
---|
301 | subtitle='zonal average at lat. '+latwrite+' (min/max values are '+string(minwhat_I_plot,'(F5.1)')+'/'+string(maxwhat_I_plot,'(F3.1)')+' K.m.s!U-1!N)' |
---|
302 | |
---|
303 | |
---|
304 | |
---|
305 | |
---|
306 | |
---|
307 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
308 | goto, no_pert_temp |
---|
309 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
310 | if (saveps eq 'true') then begin |
---|
311 | device, /close |
---|
312 | set_plot, 'ps' & device, filename='plot/pert_temp.ps' |
---|
313 | endif |
---|
314 | |
---|
315 | lev=[-4.,-2.,-1.,-0.5,0.5,1.,2.,4.] |
---|
316 | contour, $ |
---|
317 | transpose(what_I_plot6), $ |
---|
318 | localtime, $ |
---|
319 | heightp, $ |
---|
320 | xtitle='Local Time (h)', $ |
---|
321 | xrange=[13.5,14.], $ |
---|
322 | xtickinterval=0.1, $ |
---|
323 | ytitle='Altitude above surface (km)', $ |
---|
324 | yrange=[0.,0.5], $ |
---|
325 | ytickinterval=0.1, $ |
---|
326 | title="Potential Temperature Perturbation !7h!3' (K)", $ |
---|
327 | levels=lev, $ |
---|
328 | ;nlevels=20, $ |
---|
329 | C_LINESTYLE = (lev LT 0.0), $ |
---|
330 | c_labels=findgen(n_elements(lev))*0.+1., $ |
---|
331 | ;/cell_fill, $ |
---|
332 | subtitle='latitude '+latwrite+' longitude '+string(lon(nloop-1,0),'(F6.1)') |
---|
333 | ;xyouts, 14.007, heightp(0), '1' |
---|
334 | ;xyouts, 14.016, heightp(1), '2' |
---|
335 | ;xyouts, 14.007, heightp(2), '3' |
---|
336 | ;xyouts, 14.007, heightp(3), '4' |
---|
337 | ;xyouts, 14.007, heightp(4), '5' |
---|
338 | ;xyouts, 14.007, heightp(5), '6' |
---|
339 | ;xyouts, 14.007, heightp(6), '7' |
---|
340 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
341 | no_pert_temp: |
---|
342 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
343 | |
---|
344 | |
---|
345 | |
---|
346 | |
---|
347 | |
---|
348 | if (saveps eq 'true') then begin |
---|
349 | device, /close |
---|
350 | set_plot, 'ps' & device, filename='plot/temp_pot.ps' |
---|
351 | endif |
---|
352 | |
---|
353 | user_lt=10. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
354 | plot, $ |
---|
355 | what_I_plot4(*,yeah(0)), $ |
---|
356 | heightp,$ |
---|
357 | xtitle='Potential Temperature (K)',$ |
---|
358 | ; xrange=[215,240], $ |
---|
359 | xtickinterval=5., $ |
---|
360 | ytitle='Altitude above surface (km)', $ |
---|
361 | yrange=[0.,10.], $ |
---|
362 | ytickinterval=1., $ |
---|
363 | title="Potential Temperature !7h!3 profile (K)", $ |
---|
364 | subtitle='zonal average at lat. '+latwrite |
---|
365 | user_lt=12. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
366 | oplot, what_I_plot4(*,yeah(0)), heightp, linestyle=1 |
---|
367 | user_lt=14. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
368 | oplot, what_I_plot4(*,yeah(0)), heightp |
---|
369 | user_lt=16. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
370 | oplot, what_I_plot4(*,yeah(0)), heightp, linestyle=1 |
---|
371 | user_lt=18. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
372 | oplot, what_I_plot4(*,yeah(0)), heightp |
---|
373 | |
---|
374 | ;xyouts, 217.3, 0.5, '10:00' |
---|
375 | ;xyouts, 225.8, 1.5, '12:00' |
---|
376 | ;xyouts, 231.8, 3.0, '14:00' |
---|
377 | ;xyouts, 234.8, 0.7, '16:00' |
---|
378 | ;xyouts, 232.3, 2.0, '18:00' |
---|
379 | |
---|
380 | |
---|
381 | if (saveps eq 'true') then begin |
---|
382 | device, /close |
---|
383 | set_plot, 'ps' & device, filename='plot/temp.ps' |
---|
384 | endif |
---|
385 | |
---|
386 | user_lt=14.+55./60. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
387 | plot, $ |
---|
388 | what_I_plot5(*,yeah(0)), $ |
---|
389 | heightp,$ |
---|
390 | xtitle='Temperature (K)',$ |
---|
391 | xrange=[210,250], $ |
---|
392 | xtickinterval=5., $ |
---|
393 | ytitle='Altitude above surface (km)', $ |
---|
394 | yrange=[0.,2.], $ |
---|
395 | ytickinterval=0.2, $ |
---|
396 | title="LMD LES Near-surface T profile (K)", $ |
---|
397 | subtitle='zonal average at lat. '+latwrite, $ |
---|
398 | linestyle=2 |
---|
399 | user_lt=10.+24./60. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
400 | oplot, what_I_plot5(*,yeah(0)), heightp |
---|
401 | user_lt=10.+59./60. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
402 | oplot, what_I_plot5(*,yeah(0)), heightp, linestyle=2 |
---|
403 | user_lt=11.+59./60. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
404 | oplot, what_I_plot5(*,yeah(0)), heightp |
---|
405 | user_lt=15.+22./60. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
406 | oplot, what_I_plot5(*,yeah(0)), heightp |
---|
407 | user_lt=17.+13./60. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
408 | oplot, what_I_plot5(*,yeah(0)), heightp, linestyle=2 |
---|
409 | |
---|
410 | ;xyouts, 221, 0.2, '10:24' |
---|
411 | ;xyouts, 226.5, 0.4, '10:59' |
---|
412 | ;xyouts, 231.8, 0.2, '11:59' |
---|
413 | ;xyouts, 233, 0.8, '14:55' |
---|
414 | ;xyouts, 241, 0.1, '15:22' |
---|
415 | ;xyouts, 236.5, 0.05, '17:13' |
---|
416 | |
---|
417 | |
---|
418 | ;; |
---|
419 | ;xyouts, 250.05, heightp(0), '1' |
---|
420 | ;xyouts, 250.45, heightp(1), '2' |
---|
421 | ;xyouts, 251.00, heightp(2), '3' |
---|
422 | ;xyouts, 250.45, heightp(3), '4' |
---|
423 | ;xyouts, 250.45, heightp(4), '5' |
---|
424 | ;xyouts, 250.45, heightp(5), '6' |
---|
425 | ;xyouts, 250.45, heightp(6), '7' |
---|
426 | ;xyouts, 250.45, heightp(7), '8' |
---|
427 | ;xyouts, 250.45, heightp(8), '9' |
---|
428 | ;xyouts, 250.25, heightp(9), '10' |
---|
429 | ;xyouts, 250.25, heightp(10), '11' |
---|
430 | ;xyouts, 250.25, heightp(11), '12' |
---|
431 | ;xyouts, 250.25, heightp(12), '13' |
---|
432 | ;xyouts, 250.25, heightp(13), '14' |
---|
433 | ;xyouts, 250.25, heightp(14), '15' |
---|
434 | ;xyouts, 250.25, heightp(15), '16' |
---|
435 | |
---|
436 | |
---|
437 | |
---|
438 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
439 | ;goto, no_staticstab |
---|
440 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
441 | if (saveps eq 'true') then begin |
---|
442 | device, /close |
---|
443 | set_plot, 'ps' & device, filename='plot/staticstab.ps' |
---|
444 | endif |
---|
445 | |
---|
446 | user_lt=17. & yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
447 | |
---|
448 | ;;; recompute height @ given local time |
---|
449 | caca=heightp+hgtu/1000. |
---|
450 | height=reform(ph(*,0,*,*)) |
---|
451 | height=total(height,1)/n_elements(height(*,0,0)) |
---|
452 | height=reform(height) |
---|
453 | height=reform(height(*,yeah(0))) |
---|
454 | height=height/1000./3.72 |
---|
455 | heightp=height(0:n_elements(height(*))-2) |
---|
456 | print, 'new minus old', heightp - caca |
---|
457 | ;;; recompute height @ given local time |
---|
458 | |
---|
459 | press=reform(p(*,0,*,*)) |
---|
460 | press=total(press,1)/n_elements(press(*,0,0)) |
---|
461 | press=reform(press) |
---|
462 | press=reform(press(*,yeah(0))) |
---|
463 | press=press(0:n_elements(press(*))-2) |
---|
464 | |
---|
465 | staticstab = DERIV( heightp , reform(what_I_plot5(*,yeah(0))) ) + 1000.*3.72/844.6 ;; 4.9 dans Hinson |
---|
466 | staticstab = staticstab(0:n_elements(staticstab)-5) |
---|
467 | heightp = heightp(0:n_elements(heightp)-5) |
---|
468 | |
---|
469 | plot, $ |
---|
470 | staticstab, $ |
---|
471 | heightp,$ |
---|
472 | xtitle='Static stability (K/km)',$ |
---|
473 | xrange=[-1.,5.], $ |
---|
474 | xtickinterval=0.5, $ |
---|
475 | ytitle='Altitude above surface (km)', $ |
---|
476 | yrange=[min(heightp),max(heightp)], $ |
---|
477 | ytickinterval=1., $ |
---|
478 | title="LMD LES Static stability @ LT 17h (K/km)", $ |
---|
479 | subtitle='zonal average at lat. '+latwrite |
---|
480 | oplot, $ |
---|
481 | staticstab, $ |
---|
482 | heightp,$ |
---|
483 | psym=5 |
---|
484 | oplot, $ |
---|
485 | findgen(n_elements(heightp))*0. + 1.,$ |
---|
486 | heightp,$ |
---|
487 | linestyle=2 |
---|
488 | oplot, $ |
---|
489 | findgen(n_elements(heightp))*0. + 2.,$ |
---|
490 | heightp,$ |
---|
491 | linestyle=2 |
---|
492 | |
---|
493 | ;;;;;;;;;; |
---|
494 | w = where((staticstab gt 1.5) and ((heightp- hgtu/1000.) gt 1.)) |
---|
495 | t_top_plus = what_I_plot5(w(0),yeah(0)) |
---|
496 | z_top_plus = heightp(w(0)) |
---|
497 | p_top_plus = press(w(0)) |
---|
498 | t_top_moins = what_I_plot5(w(0)-1,yeah(0)) |
---|
499 | z_top_moins = heightp(w(0)-1) |
---|
500 | p_top_moins = press(w(0)-1) |
---|
501 | pbl_depth = (z_top_plus*alog(p_top_plus) + z_top_moins*alog(p_top_moins))/(alog(p_top_plus) + alog(p_top_moins)) - hgtu/1000. |
---|
502 | xyouts, 3., 1.5 + (max(heightp) + min(heightp)) / 3., 'Ls = '+string(lsu,'(F5.1)')+'!Uo!N', CHARSIZE=1 |
---|
503 | xyouts, 3., 1. + (max(heightp) + min(heightp)) / 3., 'Lat = '+string(latu,'(F5.1)')+'!Uo!N', CHARSIZE=1 |
---|
504 | xyouts, 3., 0.5 + (max(heightp) + min(heightp)) / 3., 'LonE = '+string(lonu,'(F6.1)')+'!Uo!N', CHARSIZE=1 |
---|
505 | xyouts, 3., (max(heightp) + min(heightp)) / 3., 'T!Dt!N = '+string(t_top_plus,'(I0)')+'/'+string(t_top_moins,'(I0)')+' K ', CHARSIZE=1 |
---|
506 | xyouts, 3., -0.5 + (max(heightp) + min(heightp)) / 3., 'p!Dt!N = '+string(p_top_plus,'(I0)')+'/'+string(p_top_moins,'(I0)')+' Pa', CHARSIZE=1 |
---|
507 | xyouts, 3., -1. + (max(heightp) + min(heightp)) / 3., 'z!Dt!N = '+string(z_top_plus,'(F4.1)')+'/'+string(z_top_moins,'(F4.1)')+' km', CHARSIZE=1 |
---|
508 | xyouts, 3., -1.5 + (max(heightp) + min(heightp)) / 3., 'z!Ds!N = '+string(hgtu/1000.,'(F4.1)')+' km', CHARSIZE=1 |
---|
509 | xyouts, 3., -2. + (max(heightp) + min(heightp)) / 3., 'D = '+string(pbl_depth,'(F4.1)')+' km', CHARSIZE=1 |
---|
510 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
511 | no_staticstab: |
---|
512 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
513 | |
---|
514 | |
---|
515 | |
---|
516 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
517 | if (saveps eq 'true') then begin |
---|
518 | device, /close |
---|
519 | endif |
---|
520 | stop |
---|
521 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
---|
522 | |
---|
523 | |
---|
524 | user_lt=13. |
---|
525 | yeah=where(abs(localtime-user_lt) eq (min(abs(localtime-user_lt)))) |
---|
526 | |
---|
527 | user_h=0.1 |
---|
528 | walt=where(abs(heightp-user_h) eq (min(abs(heightp-user_h)))) |
---|
529 | |
---|
530 | ;mapfield=reform(t[*,*,walt(0),w(0)]) |
---|
531 | ;help, mapfield |
---|
532 | ;contour, mapfield |
---|
533 | |
---|
534 | section=reform(w[*,0,*,yeah(0)]) |
---|
535 | |
---|
536 | section=reform(w[*,0,*,160]) |
---|
537 | |
---|
538 | lev=[-12.,-8.,-4.,4.,8.,12.] |
---|
539 | lev=[-5.,-4.,-3.,-2.,-1.,1.,2.,3.,4.,5.] |
---|
540 | contour, $ |
---|
541 | section, $ |
---|
542 | (lon(*,0)-lon(0,0))*59., $ |
---|
543 | heightp, $ |
---|
544 | levels=lev , $ |
---|
545 | C_LINESTYLE = (lev LT 0.0) |
---|
546 | |
---|
547 | device, /close |
---|
548 | |
---|
549 | end |
---|