1 | MODULE turbulence |
---|
2 | |
---|
3 | #include "use_logging.h" |
---|
4 | |
---|
5 | IMPLICIT NONE |
---|
6 | SAVE |
---|
7 | PRIVATE |
---|
8 | |
---|
9 | REAL, PARAMETER :: karman=0.4 |
---|
10 | REAL :: lmixmin=100., emin_turb=1e-8 |
---|
11 | |
---|
12 | PUBLIC :: vdif, lmixmin, emin_turb |
---|
13 | |
---|
14 | CONTAINS |
---|
15 | |
---|
16 | PURE SUBROUTINE vdif_cd( ngrid,pz0,pg,pz,pu,pv,pts,ph,pcdv,pcdh) |
---|
17 | !======================================================================= |
---|
18 | ! |
---|
19 | ! Subject: computation of the surface drag coefficient using the |
---|
20 | ! ------- approch developed by Loui for ECMWF. |
---|
21 | ! |
---|
22 | ! Author: Frederic Hourdin 15 /10 /93 |
---|
23 | ! ------- |
---|
24 | ! |
---|
25 | ! Arguments: |
---|
26 | ! ---------- |
---|
27 | ! |
---|
28 | ! inputs: |
---|
29 | ! ------ |
---|
30 | ! ngrid size of the horizontal grid |
---|
31 | ! pz0(ngrid) roughness length ? |
---|
32 | ! pg gravity (m s -2) |
---|
33 | ! pz(ngrid) height of the first atmospheric layer |
---|
34 | ! pu(ngrid) u component of the wind in that layer |
---|
35 | ! pv(ngrid) v component of the wind in that layer |
---|
36 | ! pts(ngrid) surfacte temperature |
---|
37 | ! ph(ngrid) potential temperature T*(p/ps)^kappa |
---|
38 | ! |
---|
39 | ! outputs: |
---|
40 | ! -------- |
---|
41 | ! pcdv(ngrid) Cd for the wind |
---|
42 | ! pcdh(ngrid) Cd for potential temperature |
---|
43 | ! |
---|
44 | !======================================================================= |
---|
45 | ! |
---|
46 | !----------------------------------------------------------------------- |
---|
47 | ! Declarations: |
---|
48 | ! ------------- |
---|
49 | |
---|
50 | ! Arguments: |
---|
51 | ! ---------- |
---|
52 | |
---|
53 | INTEGER, INTENT(IN) :: ngrid |
---|
54 | REAL, INTENT(IN) :: pg, pz0(ngrid), pz(ngrid), & |
---|
55 | pu(ngrid),pv(ngrid), pts(ngrid),ph(ngrid) |
---|
56 | REAL, INTENT(OUT) :: pcdv(ngrid),pcdh(ngrid) |
---|
57 | |
---|
58 | ! Local: |
---|
59 | ! ------ |
---|
60 | |
---|
61 | REAL, PARAMETER :: b=5., c=5., d=5., umin2=1e-12, & |
---|
62 | c2b=2.*b, c3bc=3.*b*c, c3b=3.*b |
---|
63 | INTEGER ig |
---|
64 | REAL zu2,z1,zri,zcd0,zz |
---|
65 | |
---|
66 | !----------------------------------------------------------------------- |
---|
67 | ! couche de surface: |
---|
68 | ! ------------------ |
---|
69 | |
---|
70 | ! DO ig=1,ngrid |
---|
71 | ! zu2=pu(ig)*pu(ig)+pv(ig)*pv(ig)+umin2 |
---|
72 | ! pcdv(ig)=pz0(ig)*(1.+sqrt(zu2)) |
---|
73 | ! pcdh(ig)=pcdv(ig) |
---|
74 | ! ENDDO |
---|
75 | ! RETURN |
---|
76 | |
---|
77 | |
---|
78 | !!!! WARNING, verifier la formule originale de Louis! |
---|
79 | DO ig=1,ngrid |
---|
80 | zu2=pu(ig)*pu(ig)+pv(ig)*pv(ig)+umin2 |
---|
81 | zri=pg*pz(ig)*(ph(ig)-pts(ig))/(ph(ig)*zu2) |
---|
82 | z1=1.+pz(ig)/pz0(ig) |
---|
83 | zcd0=karman/log(z1) |
---|
84 | zcd0=zcd0*zcd0*sqrt(zu2) |
---|
85 | IF(zri.LT.0.) THEN |
---|
86 | z1=b*zri/(1.+c3bc*zcd0*sqrt(-z1*zri)) |
---|
87 | pcdv(ig)=zcd0*(1.-2.*z1) |
---|
88 | pcdh(ig)=zcd0*(1.-3.*z1) |
---|
89 | ELSE |
---|
90 | zz=sqrt(1.+d*zri) |
---|
91 | pcdv(ig)=zcd0/(1.+c2b*zri/zz) |
---|
92 | pcdh(ig)=zcd0/(1.+c3b*zri*zz) |
---|
93 | ENDIF |
---|
94 | ENDDO |
---|
95 | |
---|
96 | !----------------------------------------------------------------------- |
---|
97 | |
---|
98 | END SUBROUTINE vdif_cd |
---|
99 | |
---|
100 | PURE SUBROUTINE vdif_k(ngrid,nlay, & |
---|
101 | ptimestep,pg,pzlev,pzlay,pz0,pu,pv,ph,pkv,pkh) |
---|
102 | ! FIXME : pkh := pkv |
---|
103 | INTEGER, INTENT(IN) :: ngrid,nlay |
---|
104 | REAL, INTENT(IN) :: ptimestep, pg, & |
---|
105 | pzlay(ngrid,nlay),pzlev(ngrid,nlay+1), pz0(ngrid), & |
---|
106 | pu(ngrid,nlay),pv(ngrid,nlay),ph(ngrid,nlay) |
---|
107 | REAL, INTENT(OUT) :: pkv(ngrid,nlay+1),pkh(ngrid,nlay+1) |
---|
108 | |
---|
109 | INTEGER ig,il |
---|
110 | REAL zdu,zdv,zri,zdvodz2,zdz,z1,lmix |
---|
111 | |
---|
112 | DO ig=1,ngrid |
---|
113 | pkv(ig,1)=0. |
---|
114 | pkh(ig,1)=0. |
---|
115 | pkv(ig,nlay+1)=0. |
---|
116 | pkh(ig,nlay+1)=0. |
---|
117 | ENDDO |
---|
118 | |
---|
119 | DO il=2,nlay |
---|
120 | DO ig=1,ngrid |
---|
121 | z1=pzlev(ig,il)+pz0(ig) |
---|
122 | lmix=karman*z1/(1.+karman*z1/lmixmin) |
---|
123 | ! lmix=lmixmin |
---|
124 | ! WARNING test lmix=lmixmin |
---|
125 | zdu=pu(ig,il)-pu(ig,il-1) |
---|
126 | zdv=pv(ig,il)-pv(ig,il-1) |
---|
127 | zdz=pzlay(ig,il)-pzlay(ig,il-1) |
---|
128 | zdvodz2=(zdu*zdu+zdv*zdv)/(zdz*zdz) |
---|
129 | IF(zdvodz2.LT.1.e-5) THEN |
---|
130 | pkv(ig,il)=lmix*sqrt(emin_turb) |
---|
131 | ELSE |
---|
132 | zri=2.*pg*(ph(ig,il)-ph(ig,il-1)) & |
---|
133 | / (zdz* (ph(ig,il)+ph(ig,il-1)) *zdvodz2 ) |
---|
134 | pkv(ig,il)= & |
---|
135 | lmix*sqrt(MAX(lmix*lmix*zdvodz2*(1-zri/.4),emin_turb)) |
---|
136 | ENDIF |
---|
137 | pkh(ig,il)=pkv(ig,il) |
---|
138 | ENDDO |
---|
139 | ENDDO |
---|
140 | |
---|
141 | END SUBROUTINE vdif_k |
---|
142 | |
---|
143 | |
---|
144 | SUBROUTINE multipl(n,x1,x2,y) |
---|
145 | !======================================================================= |
---|
146 | ! multiplication de deux vecteurs |
---|
147 | !======================================================================= |
---|
148 | INTEGER n,i |
---|
149 | REAL x1(n),x2(n),y(n) |
---|
150 | |
---|
151 | DO i=1,n |
---|
152 | y(i)=x1(i)*x2(i) |
---|
153 | END DO |
---|
154 | END SUBROUTINE multipl |
---|
155 | |
---|
156 | SUBROUTINE vdif(ngrid,nlay,ptime, & |
---|
157 | ptimestep,pcapcal,pz0, & |
---|
158 | pplay,pplev,pzlay,pzlev, & |
---|
159 | pu,pv,ph,ptsrf,pemis, & |
---|
160 | pdufi,pdvfi,pdhfi,pfluxsrf, & |
---|
161 | pdudif,pdvdif,pdhdif,pdtsrf, & |
---|
162 | lwrite) |
---|
163 | USE phys_const |
---|
164 | |
---|
165 | !======================================================================= |
---|
166 | ! |
---|
167 | ! Diffusion verticale |
---|
168 | ! Shema implicite |
---|
169 | ! On commence par rajouter au variables x la tendance physique |
---|
170 | ! et on resoult en fait: |
---|
171 | ! x(t+1) = x(t) + dt * (dx/dt)phys(t) + dt * (dx/dt)difv(t+1) |
---|
172 | ! |
---|
173 | ! arguments: |
---|
174 | ! ---------- |
---|
175 | ! |
---|
176 | ! entree: |
---|
177 | ! ------- |
---|
178 | ! |
---|
179 | ! |
---|
180 | !======================================================================= |
---|
181 | |
---|
182 | ! |
---|
183 | ! arguments: |
---|
184 | ! ---------- |
---|
185 | |
---|
186 | INTEGER ngrid,nlay |
---|
187 | REAL ptime,ptimestep |
---|
188 | REAL pplay(ngrid,nlay),pplev(ngrid,nlay+1) |
---|
189 | REAL pzlay(ngrid,nlay),pzlev(ngrid,nlay+1) |
---|
190 | REAL pu(ngrid,nlay),pv(ngrid,nlay),ph(ngrid,nlay) |
---|
191 | REAL ptsrf(ngrid),pemis(ngrid) |
---|
192 | REAL pdufi(ngrid,nlay),pdvfi(ngrid,nlay),pdhfi(ngrid,nlay) |
---|
193 | REAL pfluxsrf(ngrid) |
---|
194 | REAL pdudif(ngrid,nlay),pdvdif(ngrid,nlay),pdhdif(ngrid,nlay) |
---|
195 | REAL pdtsrf(ngrid),pcapcal(ngrid),pz0(ngrid) |
---|
196 | LOGICAL lwrite |
---|
197 | ! |
---|
198 | ! local: |
---|
199 | ! ------ |
---|
200 | |
---|
201 | INTEGER ilev,ig,ilay,nlev |
---|
202 | INTEGER unit,ierr,it1,it2 |
---|
203 | INTEGER cluvdb,putdat,putvdim,setname,setvdim |
---|
204 | REAL z4st,zdplanck(ngrid),zu2 |
---|
205 | REAL zkv(ngrid,nlay+1),zkh(ngrid,nlay+1) |
---|
206 | REAL zcdv(ngrid),zcdh(ngrid) |
---|
207 | REAL zu(ngrid,nlay),zv(ngrid,nlay) |
---|
208 | REAL zh(ngrid,nlay) |
---|
209 | REAL ztsrf2(ngrid) |
---|
210 | REAL z1(ngrid),z2(ngrid) |
---|
211 | REAL za(ngrid,nlay),zb(ngrid,nlay) |
---|
212 | REAL zb0(ngrid,nlay) |
---|
213 | REAL zc(ngrid,nlay),zd(ngrid,nlay) |
---|
214 | REAL zcst1 |
---|
215 | |
---|
216 | ! |
---|
217 | !----------------------------------------------------------------------- |
---|
218 | ! initialisations: |
---|
219 | ! ---------------- |
---|
220 | |
---|
221 | nlev=nlay+1 |
---|
222 | |
---|
223 | ! computation of rho*dz and dt*rho/dz=dt*rho**2 g/dp: |
---|
224 | ! with rho=p/RT=p/ (R Theta) (p/ps)**kappa |
---|
225 | ! --------------------------------- |
---|
226 | |
---|
227 | DO ilay=1,nlay |
---|
228 | DO ig=1,ngrid |
---|
229 | za(ig,ilay) = (pplev(ig,ilay)-pplev(ig,ilay+1))/g |
---|
230 | ENDDO |
---|
231 | ENDDO |
---|
232 | |
---|
233 | zcst1=4.*g*ptimestep/(r*r) |
---|
234 | DO ilev=2,nlev-1 |
---|
235 | DO ig=1,ngrid |
---|
236 | zb0(ig,ilev)=pplev(ig,ilev) & |
---|
237 | *(pplev(ig,1)/pplev(ig,ilev))**rcp & |
---|
238 | /(ph(ig,ilev-1)+ph(ig,ilev)) |
---|
239 | zb0(ig,ilev)=zcst1*zb0(ig,ilev)*zb0(ig,ilev) & |
---|
240 | / (pplay(ig,ilev-1)-pplay(ig,ilev)) |
---|
241 | ENDDO |
---|
242 | ENDDO |
---|
243 | DO ig=1,ngrid |
---|
244 | zb0(ig,1)=ptimestep*pplev(ig,1)/(r*ptsrf(ig)) |
---|
245 | ENDDO |
---|
246 | IF(lwrite) THEN |
---|
247 | ig=ngrid/2+1 |
---|
248 | WRITELOG(*,*) 'Pression (mbar) altitude (km),u,v,theta, rho dz' |
---|
249 | DO ilay=1,nlay |
---|
250 | WRITELOG(*,*) .01*pplay(ig,ilay),.001*pzlay(ig,ilay), & |
---|
251 | pu(ig,ilay),pv(ig,ilay),ph(ig,ilay),za(ig,ilay) |
---|
252 | ENDDO |
---|
253 | WRITELOG(*,*) 'Pression (mbar) altitude (km),zb' |
---|
254 | DO ilev=1,nlay |
---|
255 | WRITELOG(*,*) .01*pplev(ig,ilev),.001*pzlev(ig,ilev), & |
---|
256 | zb0(ig,ilev) |
---|
257 | ENDDO |
---|
258 | LOG_DBG('vdif') |
---|
259 | ENDIF |
---|
260 | |
---|
261 | !----------------------------------------------------------------------- |
---|
262 | ! 2. ajout des tendances physiques: |
---|
263 | ! ------------------------------ |
---|
264 | |
---|
265 | DO ilev=1,nlay |
---|
266 | DO ig=1,ngrid |
---|
267 | zu(ig,ilev)=pu(ig,ilev)+pdufi(ig,ilev)*ptimestep |
---|
268 | zv(ig,ilev)=pv(ig,ilev)+pdvfi(ig,ilev)*ptimestep |
---|
269 | zh(ig,ilev)=ph(ig,ilev)+pdhfi(ig,ilev)*ptimestep |
---|
270 | ENDDO |
---|
271 | ENDDO |
---|
272 | |
---|
273 | !----------------------------------------------------------------------- |
---|
274 | ! 3. calcul de cd : |
---|
275 | ! ---------------- |
---|
276 | ! |
---|
277 | CALL vdif_cd( ngrid,pz0,g,pzlay,pu,pv,ptsrf,ph,zcdv,zcdh) |
---|
278 | CALL vdif_k(ngrid,nlay,ptimestep,g,pzlev,pzlay,pz0,pu,pv,ph,zkv,zkh) |
---|
279 | |
---|
280 | DO ig=1,ngrid |
---|
281 | zu2=pu(ig,1)*pu(ig,1)+pv(ig,1)*pv(ig,1) |
---|
282 | zcdv(ig)=zcdv(ig)*sqrt(zu2) |
---|
283 | zcdh(ig)=zcdh(ig)*sqrt(zu2) |
---|
284 | ENDDO |
---|
285 | |
---|
286 | IF(lwrite) THEN |
---|
287 | WRITELOG(*,*) 'Diagnostique diffusion verticale' |
---|
288 | WRITELOG(*,*) 'LMIXMIN',lmixmin |
---|
289 | WRITELOG(*,*) 'coefficients Cd pour v et h' |
---|
290 | WRITELOG(*,*) zcdv(ngrid/2+1),zcdh(ngrid/2+1) |
---|
291 | WRITELOG(*,*) 'coefficients K pour v et h' |
---|
292 | DO ilev=1,nlay |
---|
293 | WRITELOG(*,*) zkv(ngrid/2+1,ilev),zkh(ngrid/2+1,ilev) |
---|
294 | ENDDO |
---|
295 | LOG_DBG('vdif') |
---|
296 | ENDIF |
---|
297 | |
---|
298 | !----------------------------------------------------------------------- |
---|
299 | ! integration verticale pour u: |
---|
300 | ! ----------------------------- |
---|
301 | |
---|
302 | CALL multipl((nlay-1)*ngrid,zkv(1,2),zb0(1,2),zb(1,2)) |
---|
303 | CALL multipl(ngrid,zcdv,zb0,zb) |
---|
304 | DO ig=1,ngrid |
---|
305 | z1(ig)=1./(za(ig,nlay)+zb(ig,nlay)) |
---|
306 | zc(ig,nlay)=za(ig,nlay)*zu(ig,nlay)*z1(ig) |
---|
307 | zd(ig,nlay)=zb(ig,nlay)*z1(ig) |
---|
308 | ENDDO |
---|
309 | |
---|
310 | DO ilay=nlay-1,1,-1 |
---|
311 | DO ig=1,ngrid |
---|
312 | z1(ig) = 1./(za(ig,ilay)+zb(ig,ilay) & |
---|
313 | + zb(ig,ilay+1)*(1.-zd(ig,ilay+1))) |
---|
314 | zc(ig,ilay) = (za(ig,ilay)*zu(ig,ilay) & |
---|
315 | + zb(ig,ilay+1)*zc(ig,ilay+1))*z1(ig) |
---|
316 | zd(ig,ilay) = zb(ig,ilay)*z1(ig) |
---|
317 | ENDDO |
---|
318 | ENDDO |
---|
319 | |
---|
320 | DO ig=1,ngrid |
---|
321 | zu(ig,1)=zc(ig,1) |
---|
322 | ENDDO |
---|
323 | DO ilay=2,nlay |
---|
324 | DO ig=1,ngrid |
---|
325 | zu(ig,ilay)=zc(ig,ilay)+zd(ig,ilay)*zu(ig,ilay-1) |
---|
326 | ENDDO |
---|
327 | ENDDO |
---|
328 | |
---|
329 | !----------------------------------------------------------------------- |
---|
330 | ! integration verticale pour v: |
---|
331 | ! ----------------------------- |
---|
332 | ! |
---|
333 | DO ig=1,ngrid |
---|
334 | z1(ig)=1./(za(ig,nlay)+zb(ig,nlay)) |
---|
335 | zc(ig,nlay)=za(ig,nlay)*zv(ig,nlay)*z1(ig) |
---|
336 | zd(ig,nlay)=zb(ig,nlay)*z1(ig) |
---|
337 | ENDDO |
---|
338 | |
---|
339 | DO ilay=nlay-1,1,-1 |
---|
340 | DO ig=1,ngrid |
---|
341 | z1(ig)=1./(za(ig,ilay)+zb(ig,ilay) & |
---|
342 | + zb(ig,ilay+1)*(1.-zd(ig,ilay+1))) |
---|
343 | zc(ig,ilay)=(za(ig,ilay)*zv(ig,ilay) & |
---|
344 | + zb(ig,ilay+1)*zc(ig,ilay+1))*z1(ig) |
---|
345 | zd(ig,ilay)=zb(ig,ilay)*z1(ig) |
---|
346 | ENDDO |
---|
347 | ENDDO |
---|
348 | |
---|
349 | DO ig=1,ngrid |
---|
350 | zv(ig,1)=zc(ig,1) |
---|
351 | ENDDO |
---|
352 | DO ilay=2,nlay |
---|
353 | DO ig=1,ngrid |
---|
354 | zv(ig,ilay)=zc(ig,ilay)+zd(ig,ilay)*zv(ig,ilay-1) |
---|
355 | ENDDO |
---|
356 | ENDDO |
---|
357 | |
---|
358 | !----------------------------------------------------------------------- |
---|
359 | ! integration verticale pour h: |
---|
360 | ! ----------------------------- |
---|
361 | ! |
---|
362 | CALL multipl((nlay-1)*ngrid,zkh(1,2),zb0(1,2),zb(1,2)) |
---|
363 | CALL multipl(ngrid,zcdh,zb0,zb) |
---|
364 | DO ig=1,ngrid |
---|
365 | z1(ig)=1./(za(ig,nlay)+zb(ig,nlay)) |
---|
366 | zc(ig,nlay)=za(ig,nlay)*zh(ig,nlay)*z1(ig) |
---|
367 | zd(ig,nlay)=zb(ig,nlay)*z1(ig) |
---|
368 | ENDDO |
---|
369 | |
---|
370 | DO ilay=nlay-1,1,-1 |
---|
371 | DO ig=1,ngrid |
---|
372 | z1(ig)=1./(za(ig,ilay)+zb(ig,ilay) & |
---|
373 | + zb(ig,ilay+1)*(1.-zd(ig,ilay+1))) |
---|
374 | zc(ig,ilay)=(za(ig,ilay)*zh(ig,ilay) & |
---|
375 | + zb(ig,ilay+1)*zc(ig,ilay+1))*z1(ig) |
---|
376 | zd(ig,ilay)=zb(ig,ilay)*z1(ig) |
---|
377 | ENDDO |
---|
378 | ENDDO |
---|
379 | |
---|
380 | !----------------------------------------------------------------------- |
---|
381 | ! rajout eventuel de planck dans le shema implicite: |
---|
382 | ! -------------------------------------------------- |
---|
383 | |
---|
384 | z4st=4.*5.67e-8*ptimestep |
---|
385 | DO ig=1,ngrid |
---|
386 | zdplanck(ig)=z4st*pemis(ig)*ptsrf(ig)*ptsrf(ig)*ptsrf(ig) |
---|
387 | ENDDO |
---|
388 | |
---|
389 | !----------------------------------------------------------------------- |
---|
390 | ! calcul le l evolution de la temperature du sol: |
---|
391 | ! ----------------------------------------------- |
---|
392 | |
---|
393 | DO ig=1,ngrid |
---|
394 | z1(ig) = pcapcal(ig)*ptsrf(ig)+cpp*zb(ig,1)*zc(ig,1) & |
---|
395 | + zdplanck(ig)*ptsrf(ig)+ pfluxsrf(ig)*ptimestep |
---|
396 | z2(ig) = pcapcal(ig)+cpp*zb(ig,1)*(1.-zd(ig,1))+zdplanck(ig) |
---|
397 | ztsrf2(ig) = z1(ig)/z2(ig) |
---|
398 | zh(ig,1) = zc(ig,1)+zd(ig,1)*ztsrf2(ig) |
---|
399 | pdtsrf(ig) = (ztsrf2(ig)-ptsrf(ig))/ptimestep |
---|
400 | ENDDO |
---|
401 | |
---|
402 | !----------------------------------------------------------------------- |
---|
403 | ! integration verticale finale: |
---|
404 | ! ----------------------------- |
---|
405 | |
---|
406 | DO ilay=2,nlay |
---|
407 | DO ig=1,ngrid |
---|
408 | zh(ig,ilay)=zc(ig,ilay)+zd(ig,ilay)*zh(ig,ilay-1) |
---|
409 | ENDDO |
---|
410 | ENDDO |
---|
411 | |
---|
412 | !----------------------------------------------------------------------- |
---|
413 | ! calcul final des tendances de la diffusion verticale: |
---|
414 | ! ----------------------------------------------------- |
---|
415 | |
---|
416 | DO ilev = 1, nlay |
---|
417 | DO ig=1,ngrid |
---|
418 | pdudif(ig,ilev) = ( zu(ig,ilev) & |
---|
419 | - (pu(ig,ilev)+pdufi(ig,ilev)*ptimestep) )/ptimestep |
---|
420 | pdvdif(ig,ilev) = ( zv(ig,ilev) & |
---|
421 | - (pv(ig,ilev)+pdvfi(ig,ilev)*ptimestep) )/ptimestep |
---|
422 | pdhdif(ig,ilev) = ( zh(ig,ilev) & |
---|
423 | - (ph(ig,ilev)+pdhfi(ig,ilev)*ptimestep) )/ptimestep |
---|
424 | ENDDO |
---|
425 | ENDDO |
---|
426 | |
---|
427 | IF(lwrite) THEN |
---|
428 | WRITELOG(*,*) |
---|
429 | WRITELOG(*,*) 'Diagnostique de la diffusion verticale' |
---|
430 | WRITELOG(*,*) 'h avant et apres diffusion verticale' |
---|
431 | WRITELOG(*,*) ptsrf(ngrid/2+1),ztsrf2(ngrid/2+1) |
---|
432 | DO ilev=1,nlay |
---|
433 | WRITELOG(*,*) ph(ngrid/2+1,ilev),zh(ngrid/2+1,ilev) |
---|
434 | ENDDO |
---|
435 | LOG_DBG('vdif') |
---|
436 | END IF |
---|
437 | |
---|
438 | END SUBROUTINE vdif |
---|
439 | |
---|
440 | END MODULE turbulence |
---|