35 SUBROUTINE mdl2p(iostatusD3D)
39 use vrbls4d,
only: dust, smoke
40 use vrbls3d,
only: pint, o3, pmid, t, q, uh, vh, wh, omga, q2, cwm, &
41 qqw, qqi, qqr, qqs, qqg, dbz, f_rimef, ttnd, cfr, &
42 rlwtt, rswtt, vdifftt, tcucn, tcucns, &
43 train, vdiffmois, dconvmois, sconvmois,nradtt, &
44 o3vdiff, o3prod, o3tndy, mwpv, unknown, vdiffzacce, &
45 zgdrag, cnvctvmmixing, vdiffmacce, mgdrag, &
46 cnvctummixing, ncnvctcfrac, cnvctumflx, cnvctdetmflx, &
47 cnvctzgdrag, cnvctmgdrag, zmid, zint, pmidv, &
49 use vrbls2d,
only: t500,t700,w_up_max,w_dn_max,w_mean,pslp,fis,z1000,z700,&
51 use masks,
only: lmh, sm
52 use physcons_post,
only: con_fvirt, con_rog, con_eps, con_epsm1
53 use params_mod,
only: h1m12, dbzmin, h1, pq0, a2, a3, a4, rhmin, g, &
54 rgamog, rd, d608, gi, erad, pi, small, h100, &
56 use ctlblk_mod,
only: modelname, lp1, me, jsta, jend, lm, spval, spl, &
57 alsl, jend_m, smflag, grib, cfld, fld_info, datapd,&
58 td3d, ifhr, ifmin, im, jm, nbin_du, jsta_2l, &
59 jend_2u, lsm, d3d_on, gocart_on, ioform, nbin_sm, &
60 imp_physics, ista, iend, ista_m, iend_m, ista_2l, iend_2u
61 use rqstfld_mod,
only: iget, lvls, id, iavblfld, lvlsxml
62 use gridspec_mod,
only: gridtype, maptype, dxval
73 real,
parameter:: gammam=-1*gamma,zshul=75.,tvshul=290.66
77 real,
PARAMETER :: CAPA=0.28589641,p1000=1000.e2
79 real,
dimension(im,jm) :: GRID1, GRID2
80 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: FSL, TSL, QSL,
86 REAL,
allocatable :: D3DSL(:,:,:), DUSTSL(:,:,:), SMOKESL(:,:,:)
88 integer,
intent(in) :: iostatusD3D
89 INTEGER,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: NL1X, NL1XF
90 real,
dimension(ISTA_2L:IEND_2U,JSTA_2L:JEND_2U,LSM) :: TPRS, QPRS
104 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: C1D, QW1, QI1,
110 REAL SAVRH(ista:iend,jsta:jend)
112 integer I,J,L,LP,LL,LLMH,JJB,JJE,II,JJ,LI,IFINCR,ITD3D,istaa,imois
113 real fact,ALPSL,PSFC,QBLO,PNL1,TBLO,TVRL,TVRBLO,FAC,PSLPIJ,
122 if(me==0) print*,
'MDL2P SMFLAG=',smflag
124 if (modelname ==
'GFS')
then
130 if (.not.
allocated(d3dsl))
allocate(d3dsl(im,jm,27))
141 if (.not.
allocated(dustsl))
allocate(dustsl(im,jm,nbin_du))
146 dustsl(i,j,l) = spval
151 if (.not.
allocated(smokesl))
allocate(smokesl(im,jm,nbin_sm))
156 smokesl(i,j,l) = spval
170 IF((iget(012) > 0) .OR. (iget(013) > 0) .OR. &
171 (iget(014) > 0) .OR. (iget(015) > 0) .OR. &
172 (iget(016) > 0) .OR. (iget(017) > 0) .OR. &
173 (iget(018) > 0) .OR. (iget(019) > 0) .OR. &
174 (iget(020) > 0) .OR. (iget(030) > 0) .OR. &
175 (iget(021) > 0) .OR. (iget(022) > 0) .OR. &
176 (iget(023) > 0) .OR. (iget(085) > 0) .OR. &
177 (iget(086) > 0) .OR. (iget(284) > 0) .OR. &
178 (iget(153) > 0) .OR. (iget(166) > 0) .OR. &
179 (iget(183) > 0) .OR. (iget(184) > 0) .OR. &
180 (iget(198) > 0) .OR. (iget(251) > 0) .OR. &
181 (iget(257) > 0) .OR. (iget(258) > 0) .OR. &
182 (iget(294) > 0) .OR. (iget(268) > 0) .OR. &
183 (iget(331) > 0) .OR. (iget(326) > 0) .OR. &
185 (iget(354) > 0) .OR. (iget(355) > 0) .OR. &
186 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
187 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
188 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
189 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
190 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
191 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
192 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
193 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
194 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
195 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
196 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
197 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
198 (iget(395) > 0) .OR. (iget(379) > 0) .OR. &
200 (iget(438) > 0) .OR. (iget(439) > 0) .OR. &
201 (iget(440) > 0) .OR. (iget(441) > 0) .OR. &
202 (iget(442) > 0) .OR. (iget(455) > 0) .OR. &
204 (iget(738) > 0) .OR. (modelname ==
'RAPR') .OR.&
206 (iget(030)>0) .OR. (iget(031)>0) .OR. (iget(075)>0))
THEN
216 if(gridtype ==
'B' .or. gridtype ==
'E')
217 call exch(pint(ista_2l:iend_2u,jsta_2l:jend_2u,lp1))
256 IF(nl1x(i,j) == lp1 .AND. pmid(i,j,l) > spl(lp))
THEN
266 IF(nl1x(i,j) == lp1 .AND. pint(i,j,lp1) > spl(lp))
THEN
272 IF(nl1xf(i,j) == (lp1+1) .AND. pint(i,j,l) > spl(lp))
THEN
302 llmh = nint(lmh(i,j))
306 IF(spl(lp) < pint(i,j,2))
THEN
307 IF(t(i,j,1) < spval) tsl(i,j) = t(i,j,1)
308 IF(q(i,j,1) < spval) qsl(i,j) = q(i,j,1)
310 IF(gridtype ==
'A')
THEN
311 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
312 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
318 IF(wh(i,j,1) < spval) wsl(i,j) = wh(i,j,1)
319 IF(omga(i,j,1) < spval) osl(i,j) = omga(i,j,1)
320 IF(q2(i,j,1) < spval) q2sl(i,j) = q2(i,j,1)
321 IF(cwm(i,j,1) < spval) c1d(i,j) = cwm(i,j,1)
322 c1d(i,j) = max(c1d(i,j),zero)
323 IF(qqw(i,j,1) < spval) qw1(i,j) = qqw(i,j,1)
324 qw1(i,j) = max(qw1(i,j),zero)
325 IF(qqi(i,j,1) < spval) qi1(i,j) = qqi(i,j,1)
326 qi1(i,j) = max(qi1(i,j),zero)
327 IF(qqr(i,j,1) < spval) qr1(i,j) = qqr(i,j,1)
328 qr1(i,j) = max(qr1(i,j),zero)
329 IF(qqs(i,j,1) < spval) qs1(i,j) = qqs(i,j,1)
330 qs1(i,j) = max(qs1(i,j),zero)
331 IF(qqg(i,j,1) < spval) qg1(i,j) = qqg(i,j,1)
332 qg1(i,j) = max(qg1(i,j),zero)
333 IF(dbz(i,j,1) < spval) dbz1(i,j) = dbz(i,j,1)
334 dbz1(i,j) = max(dbz1(i,j),dbzmin)
335 IF(f_rimef(i,j,1) < spval) frime(i,j) = f_rimef(i,j,1)
336 frime(i,j) = max(frime(i,j),h1)
337 IF(ttnd(i,j,1) < spval) rad(i,j) = ttnd(i,j,1)
338 IF(o3(i,j,1) < spval) o3sl(i,j) = o3(i,j,1)
339 IF(cfr(i,j,1) < spval) cfrsl(i,j) = cfr(i,j,1)
343 IF(dust(i,j,1,k) < spval) dustsl(i,j,k) = dust(i,j,
347 IF(smoke(i,j,1,k) < spval) smokesl(i,j,k)=smoke(i,j,1
353 IF((iget(354) > 0) .OR. (iget(355) > 0) .OR. &
354 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
355 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
356 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
357 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
358 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
359 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
360 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
361 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
362 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
363 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
364 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
365 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
366 (iget(395) > 0) .OR. (iget(379) > 0))
THEN
367 d3dsl(i,j,1) = rlwtt(i,j,1)
368 d3dsl(i,j,2) = rswtt(i,j,1)
369 d3dsl(i,j,3) = vdifftt(i,j,1)
370 d3dsl(i,j,4) = tcucn(i,j,1)
371 d3dsl(i,j,5) = tcucns(i,j,1)
372 d3dsl(i,j,6) = train(i,j,1)
373 d3dsl(i,j,7) = vdiffmois(i,j,1)
374 d3dsl(i,j,8) = dconvmois(i,j,1)
375 d3dsl(i,j,9) = sconvmois(i,j,1)
376 d3dsl(i,j,10) = nradtt(i,j,1)
377 d3dsl(i,j,11) = o3vdiff(i,j,1)
378 d3dsl(i,j,12) = o3prod(i,j,1)
379 d3dsl(i,j,13) = o3tndy(i,j,1)
380 d3dsl(i,j,14) = mwpv(i,j,1)
381 d3dsl(i,j,15) = unknown(i,j,1)
382 d3dsl(i,j,16) = vdiffzacce(i,j,1)
383 d3dsl(i,j,17) = zgdrag(i,j,1)
384 d3dsl(i,j,18) = cnvctummixing(i,j,1)
385 d3dsl(i,j,19) = vdiffmacce(i,j,1)
386 d3dsl(i,j,20) = mgdrag(i,j,1)
387 d3dsl(i,j,21) = cnvctvmmixing(i,j,1)
388 d3dsl(i,j,22) = ncnvctcfrac(i,j,1)
389 d3dsl(i,j,23) = cnvctumflx(i,j,1)
390 d3dsl(i,j,24) = cnvctdmflx(i,j,1)
391 d3dsl(i,j,25) = cnvctdetmflx(i,j,1)
392 d3dsl(i,j,26) = cnvctzgdrag(i,j,1)
393 d3dsl(i,j,27) = cnvctmgdrag(i,j,1)
397 ELSE IF(ll <= llmh)
THEN
407 IF (modelname ==
'RAPR' .OR. modelname ==
'NCAR' .OR. modelname
'NMM'THEN
408 fact = (alsl(lp)-log(pmid(i,j,ll)))/
409 max(1.e-6,(log(pmid(i,j,ll))-log(pmid(i,j,ll-1
410 fact = max(-10.0,min(fact, 10.0))
411 ELSEIF (modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
412 fact = (alsl(lp)-log(pmid(i,j,ll)))/ &
413 max(1.e-6,(log(pmid(i,j,ll))-log(pmid(i,j,ll-1
414 fact = max(-10.0,min(fact, 10.0))
415 IF ( abs(pmid(i,j,ll)-pmid(i,j,ll-1)) < 0.5 )
THEN
419 fact = (alsl(lp)-log(pmid(i,j,ll)))/
420 (log(pmid(i,j,ll))-log(pmid(i,j,ll-1)))
422 IF(t(i,j,ll) < spval .AND. t(i,j,ll-1) < spval)
423 tsl(i,j) = t(i,j,ll)+(t(i,j,ll)-t(i,j,ll-1))*fact
424 IF(q(i,j,ll) < spval .AND. q(i,j,ll-1) < spval)
425 qsl(i,j) = q(i,j,ll)+(q(i,j,ll)-q(i,j,ll-1))*fact
427 IF(gridtype==
'A')
THEN
428 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval)
429 usl(i,j) = uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
430 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval)
431 vsl(i,j) = vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
434 IF(wh(i,j,ll) < spval .AND. wh(i,j,ll-1) < spval)
435 wsl(i,j) = wh(i,j,ll)+(wh(i,j,ll)-wh(i,j,ll-1))*fact
436 IF(omga(i,j,ll) < spval .AND. omga(i,j,ll-1) < spval)
437 osl(i,j) = omga(i,j,ll)+(omga(i,j,ll)-omga(i,j,ll-1))
438 IF(q2(i,j,ll) < spval .AND. q2(i,j,ll-1) < spval)
439 q2sl(i,j) = q2(i,j,ll)+(q2(i,j,ll)-q2(i,j,ll-1))*fact
445 if (modelname ==
'GFS')
then
446 es = min(
fpvsnew(tsl(i,j)), spl(lp))
447 qsat = con_eps*es/(spl(lp)+con_epsm1*es)
449 qsat = pq0/spl(lp)*exp(a2*(tsl(i,j)-a3)/(tsl(i,j)-a4)
452 rhl = max(rhmin, min(1.0, qsl(i,j)/qsat))
459 IF(q2sl(i,j) < 0.0) q2sl(i,j) = 0.0
462 IF(cwm(i,j,ll) < spval .AND. cwm(i,j,ll-1) < spval)
463 c1d(i,j) = cwm(i,j,ll) + (cwm(i,j,ll)-cwm(i,j,ll-1))*fact
464 c1d(i,j) = max(c1d(i,j),zero)
466 IF(qqw(i,j,ll) < spval .AND. qqw(i,j,ll-1) < spval)
467 qw1(i,j) = qqw(i,j,ll) + (qqw(i,j,ll)-qqw(i,j,ll-1))*fact
468 qw1(i,j) = max(qw1(i,j),zero)
470 IF(qqi(i,j,ll) < spval .AND. qqi(i,j,ll-1) < spval)
471 qi1(i,j) = qqi(i,j,ll) + (qqi(i,j,ll)-qqi(i,j,ll-1))*fact
472 qi1(i,j) = max(qi1(i,j),zero)
474 IF(qqr(i,j,ll) < spval .AND. qqr(i,j,ll-1) < spval)
475 qr1(i,j) = qqr(i,j,ll) + (qqr(i,j,ll)-qqr(i,j,ll-1))*fact
476 qr1(i,j) = max(qr1(i,j),zero)
478 IF(qqs(i,j,ll) < spval .AND. qqs(i,j,ll-1) < spval)
479 qs1(i,j) = qqs(i,j,ll) + (qqs(i,j,ll)-qqs(i,j,ll-1))*fact
480 qs1(i,j) = max(qs1(i,j),zero)
482 IF(qqg(i,j,ll) < spval .AND. qqg(i,j,ll-1) < spval)
483 qg1(i,j) = qqg(i,j,ll) + (qqg(i,j,ll)-qqg(i,j,ll-1))*fact
484 qg1(i,j) = max(qg1(i,j),zero)
486 IF(dbz(i,j,ll) < spval .AND. dbz(i,j,ll-1) < spval)
487 dbz1(i,j) = dbz(i,j,ll) + (dbz(i,j,ll)-dbz(i,j,ll-1))
488 dbz1(i,j) = max(dbz1(i,j),dbzmin)
490 IF(f_rimef(i,j,ll) < spval .AND. f_rimef(i,j,ll-1) < spval
491 frime(i,j) = f_rimef(i,j,ll) + (f_rimef(i,j,ll) - f_rimef
492 frime(i,j)=max(frime(i,j),h1)
494 IF(ttnd(i,j,ll) < spval .AND. ttnd(i,j,ll-1) < spval)
495 rad(i,j) = ttnd(i,j,ll) + (ttnd(i,j,ll)-ttnd(i,j,ll-1
497 IF(o3(i,j,ll) < spval .AND. o3(i,j,ll-1) < spval)
498 o3sl(i,j) = o3(i,j,ll) + (o3(i,j,ll)-o3(i,j,ll-1))*fact
500 IF(cfr(i,j,ll) < spval .AND. cfr(i,j,ll-1) < spval)
501 cfrsl(i,j) = cfr(i,j,ll) + (cfr(i,j,ll)-cfr(i,j,ll-1)
505 IF(dust(i,j,ll,k) < spval .AND. dust(i,j,ll-1,k) < spval
506 dustsl(i,j,k) = dust(i,j,ll,k) + (dust(i,j,ll,k)-dust
510 IF(smoke(i,j,ll,k) < spval .AND. smoke(i,j,ll-1,k) < spval
511 smokesl(i,j,k)=smoke(i,j,ll,k)+(smoke(i,j,ll,k)-smoke
517 IF((iget(354) > 0) .OR. (iget(355) > 0) .OR. &
518 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
519 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
520 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
521 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
522 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
523 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
524 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
525 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
526 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
527 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
528 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
529 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
530 (iget(395) > 0) .OR. (iget(379) > 0))
THEN
531 d3dsl(i,j,1) = rlwtt(i,j,ll)+(rlwtt(i,j,ll) &
532 - rlwtt(i,j,ll-1))*fact
533 d3dsl(i,j,2) = rswtt(i,j,ll)+(rswtt(i,j,ll) &
534 - rswtt(i,j,ll-1))*fact
535 d3dsl(i,j,3) = vdifftt(i,j,ll)+(vdifftt(i,j,ll) &
536 - vdifftt(i,j,ll-1))*fact
537 d3dsl(i,j,4) = tcucn(i,j,ll)+(tcucn(i,j,ll) &
538 - tcucn(i,j,ll-1))*fact
539 d3dsl(i,j,5) = tcucns(i,j,ll)+(tcucns(i,j,ll) &
540 - tcucns(i,j,ll-1))*fact
541 d3dsl(i,j,6) = train(i,j,ll)+(train(i,j,ll) &
542 - train(i,j,ll-1))*fact
543 d3dsl(i,j,7) = vdiffmois(i,j,ll)+ &
544 (vdiffmois(i,j,ll)-vdiffmois(i,j,ll-1
545 d3dsl(i,j,8) = dconvmois(i,j,ll)+ &
546 (dconvmois(i,j,ll)-dconvmois(i,j,ll-1
547 d3dsl(i,j,9) = sconvmois(i,j,ll)+ &
548 (sconvmois(i,j,ll)-sconvmois(i,j,ll-1
549 d3dsl(i,j,10) = nradtt(i,j,ll)+ &
550 (nradtt(i,j,ll)-nradtt(i,j,ll-1))*fact
551 d3dsl(i,j,11) = o3vdiff(i,j,ll)+ &
552 (o3vdiff(i,j,ll)-o3vdiff(i,j,ll-1))*fact
553 d3dsl(i,j,12) = o3prod(i,j,ll)+ &
554 (o3prod(i,j,ll)-o3prod(i,j,ll-1))*fact
555 d3dsl(i,j,13) = o3tndy(i,j,ll)+ &
556 (o3tndy(i,j,ll)-o3tndy(i,j,ll-1))*fact
557 d3dsl(i,j,14) = mwpv(i,j,ll)+ &
558 (mwpv(i,j,ll)-mwpv(i,j,ll-1))*fact
559 d3dsl(i,j,15) = unknown(i,j,ll)+ &
560 (unknown(i,j,ll)-unknown(i,j,ll-1))*fact
561 d3dsl(i,j,16) = vdiffzacce(i,j,ll)+ &
562 (vdiffzacce(i,j,ll)-vdiffzacce(i,j,ll
563 d3dsl(i,j,17) = zgdrag(i,j,ll)+ &
564 (zgdrag(i,j,ll)-zgdrag(i,j,ll-1))*fact
565 d3dsl(i,j,18) = cnvctummixing(i,j,ll)+ &
566 (cnvctummixing(i,j,ll)-cnvctummixing(i
567 d3dsl(i,j,19) = vdiffmacce(i,j,ll)+ &
568 (vdiffmacce(i,j,ll)-vdiffmacce(i,j,ll
569 d3dsl(i,j,20) = mgdrag(i,j,ll)+ &
570 (mgdrag(i,j,ll)-mgdrag(i,j,ll-1))*fact
571 d3dsl(i,j,21) = cnvctvmmixing(i,j,ll)+ &
572 (cnvctvmmixing(i,j,ll)-cnvctvmmixing(i
573 d3dsl(i,j,22) = ncnvctcfrac(i,j,ll)+ &
574 (ncnvctcfrac(i,j,ll)-ncnvctcfrac(i,j,ll
575 d3dsl(i,j,23) = cnvctumflx(i,j,ll)+ &
576 (cnvctumflx(i,j,ll)-cnvctumflx(i,j,ll
577 d3dsl(i,j,24) = cnvctdmflx(i,j,ll)+ &
578 (cnvctdmflx(i,j,ll)-cnvctdmflx(i,j,ll
579 d3dsl(i,j,25) = cnvctdetmflx(i,j,ll)+ &
580 (cnvctdetmflx(i,j,ll)-cnvctdetmflx(i,j
581 d3dsl(i,j,26) = cnvctzgdrag(i,j,ll)+ &
582 (cnvctzgdrag(i,j,ll)-cnvctzgdrag(i,j,ll
583 d3dsl(i,j,27) = cnvctmgdrag(i,j,ll)+ &
584 (cnvctmgdrag(i,j,ll)-cnvctmgdrag(i,j,ll
593 IF(modelname ==
'GFS')
THEN
594 tvu = t(i,j,lm) * (1.+con_fvirt*q(i,j,lm))
595 if(zmid(i,j,lm) > zshul)
then
596 tvd = tvu + gamma*zmid(i,j,lm)
597 if(tvd > tvshul)
then
598 if(tvu > tvshul)
then
599 tvd = tvshul - 5.e-3*(tvu-tvshul)*(tvu-tvshul)
604 gammas = (tvu-tvd)/zmid(i,j,lm)
608 part = con_rog*(alsl(lp)-log(pmid(i,j,lm)))
609 fsl(i,j) = zmid(i,j,lm) - tvu*part/(1.+0.5*gammas*part
611 tsl(i,j) = t(i,j,lm) - gamma*(fsl(i,j)-zmid(i,j,lm))
612 fsl(i,j) = fsl(i,j)*g
616 es = min(
fpvsnew(t(i,j,lm)), pmid(i,j,lm))
617 qsat = con_eps*es/(pmid(i,j,lm)+con_epsm1*es)
620 es = min(
fpvsnew(tsl(i,j)), spl(lp))
621 qsat = con_eps*es/(spl(lp)+con_epsm1*es)
628 tl = 0.5*(t(i,j,lm-2)+t(i,j,lm-1))
629 ql = 0.5*(q(i,j,lm-2)+q(i,j,lm-1))
639 qsat = pq0/pl*exp(a2*(tl-a3)/(tl-a4))
652 tvrl = tl*(1.+0.608*ql)
653 tvrblo = tvrl*(spl(lp)/pl)**rgamog
654 tblo = tvrblo/(1.+0.608*ql)
665 qsat = pq0/spl(lp)*exp(a2*(tblo-a3)/(tblo-a4))
668 qsl(i,j) = max(1.e-12,qblo)
674 IF(gridtype ==
'A')
THEN
675 usl(i,j) = uh(i,j,llmh)
676 vsl(i,j) = vh(i,j,llmh)
680 wsl(i,j) = wh(i,j,llmh)
681 osl(i,j) = omga(i,j,llmh)
682 q2sl(i,j) = max(0.0,0.5*(q2(i,j,llmh-1)+q2(i,j,llmh)))
720 o3sl(i,j) = o3(i,j,llmh)
726 IF(modelname ==
'GFS')
then
728 IF(spl(lp) < pmid(i,j,1))
THEN
729 tvd = t(i,j,1)*(1+con_fvirt*q(i,j,1))
730 fsl(i,j) = zmid(i,j,1)-con_rog*tvd *(alsl(lp)-log(pmid
731 fsl(i,j) = fsl(i,j)*g
732 ELSE IF(l <= llmh)
THEN
733 tvd = t(i,j,l)*(1+con_fvirt*q(i,j,l))
734 tvu = tsl(i,j)*(1+con_fvirt*qsl(i,j))
735 fsl(i,j) = zmid(i,j,l)-con_rog*0.5*(tvd+tvu)
736 * (alsl(lp)-log(pmid(i,j,l)))
737 fsl(i,j) = fsl(i,j)*g
741 IF(nl1xf(i,j)<=(llmh+1))
THEN
742 fact = (alsl(lp)-log(pint(i,j,la)))/
743 (log(pint(i,j,la))-log(pint(i,j,la-1)))
744 IF(zint(i,j,la) < spval .AND. zint(i,j,la-1) < spval)
745 fsl(i,j) = zint(i,j,la)+(zint(i,j,la)-zint(i,j,la-1
746 fsl(i,j) = fsl(i,j)*g
748 fsl(i,j) = fprs(i,j,lp-1)-rd*(tprs(i,j,lp-1)
749 * (h1+d608*qprs(i,j,lp-1))
750 + tsl(i,j)*(h1+d608*qsl(i,j)))
751 * log(spl(lp)/spl(lp-1))/2.0
764 tprs(i,j,lp) = tsl(i,j)
765 qprs(i,j,lp) = qsl(i,j)
766 fprs(i,j,lp) = fsl(i,j)
772 IF(gridtype ==
'E')
THEN
775 DO i=ista_m,iend-mod(j,2)
811 IF(nl1x(i,j) == lp1.AND.pmidv(i,j,l) > spl(lp))
THEN
824 IF(nl1x(i,j) == lp1)
THEN
825 IF(j == jsta .AND. i < iend)
THEN
826 pdv = 0.5*(pint(i,j,lp1)+pint(i+1,j,lp1))
827 ELSE IF(j == jend .AND. i < iend)
THEN
828 pdv = 0.5*(pint(i,j,lp1)+pint(i+1,j,lp1))
829 ELSE IF(i == ista .AND. mod(j,2) == 0)
THEN
830 pdv = 0.5*(pint(i,j-1,lp1)+pint(i,j+1,lp1))
831 ELSE IF(i == iend .AND. mod(j,2) == 0)
THEN
832 pdv = 0.5*(pint(i,j-1,lp1)+pint(i,j+1,lp1))
833 ELSE IF (mod(j,2) < 1)
THEN
834 pdv = 0.25*(pint(i,j,lp1)+pint(i-1,j,lp1)
835 + pint(i,j+1,lp1)+pint(i,j-1,lp1))
837 pdv = 0.25*(pint(i,j,lp1)+pint(i+1,j,lp1)
838 + pint(i,j+1,lp1)+pint(i,j-1,lp1))
840 IF(pdv > spl(lp))
THEN
850 DO i=ista,iend-mod(j,2)
857 llmh = nint(lmh(i,j))
859 IF(spl(lp) < pint(i,j,2))
THEN
860 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
861 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
863 ELSE IF(nl1x(i,j)<=llmh)
THEN
873 fact = (alsl(lp)-log(pmidv(i,j,ll)))/
874 (log(pmidv(i,j,ll))-log(pmidv(i,j,ll-1)))
875 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval)
876 usl(i,j) = uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
877 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval)
878 vsl(i,j) = vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
887 IF(uh(i,j,llmh) < spval) usl(i,j) = uh(i,j,llmh)
888 IF(vh(i,j,llmh) < spval) vsl(i,j) = vh(i,j,llmh)
895 IF(mod(jsta,2) == 0) jjb = jsta+1
897 IF(mod(jend,2) == 0) jje = jend-1
899 usl(iend,j) = usl(iend-1,j)
900 vsl(iend,j) = vsl(iend-1,j)
902 ELSE IF(gridtype==
'B')
THEN
911 IF(nl1x(i,j) == lp1.AND.pmidv(i,j,l) > spl(lp))
THEN
923 IF(nl1x(i,j)==lp1)
THEN
924 pdv = 0.25*(pint(i,j,lp1)+pint(i+1,j,lp1)
925 + pint(i,j+1,lp1)+pint(i+1,j+1,lp1))
926 IF(pdv > spl(lp))
THEN
943 llmh = nint(lmh(i,j))
945 IF(spl(lp) < pint(i,j,2))
THEN
946 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
947 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
949 ELSE IF(nl1x(i,j)<=llmh)
THEN
959 fact = (alsl(lp)-log(pmidv(i,j,ll)))/
960 (log(pmidv(i,j,ll))-log(pmidv(i,j,ll-1)))
961 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval)
962 usl(i,j)=uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
963 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval)
964 vsl(i,j)=vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
973 IF(uh(i,j,llmh) < spval)usl(i,j)=uh(i,j,llmh)
974 IF(vh(i,j,llmh) < spval)vsl(i,j)=vh(i,j,llmh)
990 IF(nint(spl(lp)) == 50000)
THEN
995 z500(i,j) = fsl(i,j)*gi
1003 IF(nint(spl(lp)) == 70000)
THEN
1007 t700(i,j) = tsl(i,j)
1008 z700(i,j) = fsl(i,j)*gi
1071 IF(iget(012) > 0)
THEN
1072 IF(lvls(lp,iget(012)) > 0)
THEN
1073 IF((iget(023) > 0 .OR. iget(445) > 0) .AND. nint(spl(lp)
THEN
1079 IF(fsl(i,j) < spval)
THEN
1080 grid1(i,j) = fsl(i,j)*gi
1089 if(maptype == 6)
then
1090 if(grib==
'grib2')
then
1091 dxm = (dxval / 360.)*(erad*2.*pi)/1.d6
1096 if(grib ==
'grib2')
then
1100 nsmooth = nint(5.*(13500./dxm))
1101 call allgetherv(grid1)
1103 CALL smooth(grid1,sdummy,im,jm,0.5)
1106 if(grib ==
'grib2')
then
1108 fld_info(cfld)%ifld=iavblfld(iget(012))
1109 fld_info(cfld)%lvl=lvlsxml(lp,iget(012))
1115 datapd(i,j,cfld) = grid1(ii,jj)
1126 IF(iget(013) > 0)
THEN
1127 IF(lvls(lp,iget(013)) > 0)
THEN
1131 grid1(i,j) = tsl(i,j)
1136 nsmooth = nint(3.*(13500./dxm))
1137 call allgetherv(grid1)
1139 CALL smooth(grid1,sdummy,im,jm,0.5)
1143 if(grib ==
'grib2')
then
1145 fld_info(cfld)%ifld = iavblfld(iget(013))
1146 fld_info(cfld)%lvl = lvlsxml(lp,iget(013))
1152 datapd(i,j,cfld) = grid1(ii,jj)
1161 IF(iget(910)>0)
THEN
1162 IF(lvls(lp,iget(910))>0)
THEN
1166 IF(tsl(i,j) < spval .AND. qsl(i,j) < spval)
THEN
1167 grid1(i,j) = tsl(i,j)*(1.+0.608*qsl(i,j))
1175 nsmooth = nint(3.*(13500./dxm))
1176 call allgetherv(grid1)
1178 CALL smooth(grid1,sdummy,im,jm,0.5)
1182 if(grib==
'grib2')
then
1184 fld_info(cfld)%ifld = iavblfld(iget(910))
1185 fld_info(cfld)%lvl = lvlsxml(lp,iget(910))
1191 datapd(i,j,cfld) = grid1(ii,jj)
1201 IF(iget(014) > 0)
THEN
1202 IF(lvls(lp,iget(014)) > 0)
THEN
1204 tem = (p1000/spl(lp)) ** capa
1208 IF(tsl(i,j) < spval)
THEN
1209 grid1(i,j) = tsl(i,j) * tem
1230 if(grib ==
'grib2')
then
1232 fld_info(cfld)%ifld=iavblfld(iget(014))
1233 fld_info(cfld)%lvl=lvlsxml(lp,iget(014))
1239 datapd(i,j,cfld) = grid1(ii,jj)
1249 IF(iget(017) > 0 .OR. iget(257) > 0)
THEN
1253 IF(iget(017) > 0.)
then
1254 if(lvls(lp,iget(017)) > 0 ) log1=.true.
1256 IF(iget(257) > 0)
then
1257 if(lvls(lp,iget(257)) > 0 ) log1=.true.
1263 egrid2(i,j) = spl(lp)
1267 CALL calrh(egrid2(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend
1272 IF(egrid1(i,j) < spval)
THEN
1273 grid1(i,j) = egrid1(i,j)*100.
1275 grid1(i,j) = egrid1(i,j)
1281 nsmooth=nint(2.*(13500./dxm))
1282 call allgetherv(grid1)
1284 CALL smooth(grid1,sdummy,im,jm,0.5)
1287 if(grib ==
'grib2')
then
1289 fld_info(cfld)%ifld=iavblfld(iget(017))
1290 fld_info(cfld)%lvl=lvlsxml(lp,iget(017))
1296 datapd(i,j,cfld) = grid1(ii,jj)
1304 savrh(i,j) = grid1(i,j)
1313 IF(iget(331) > 0)
THEN
1314 IF(lvls(lp,iget(331)) > 0)
THEN
1319 cfrsl(i,j) = min(max(0.0,cfrsl(i,j)),1.0)
1320 IF(abs(cfrsl(i,j)-spval) > small) &
1321 grid1(i,j) = cfrsl(i,j)*h100
1324 if(grib ==
'grib2')
then
1326 fld_info(cfld)%ifld = iavblfld(iget(331))
1327 fld_info(cfld)%lvl = lvlsxml(lp,iget(331))
1333 datapd(i,j,cfld) = grid1(ii,jj)
1342 IF(iget(015) > 0)
THEN
1343 IF(lvls(lp,iget(015)) > 0)
THEN
1347 egrid2(i,j) = spl(lp)
1351 CALL caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend
1355 IF(tsl(i,j) < spval)
THEN
1356 grid1(i,j) = egrid1(i,j)
1362 if(grib ==
'grib2')
then
1364 fld_info(cfld)%ifld=iavblfld(iget(015))
1365 fld_info(cfld)%lvl=lvlsxml(lp,iget(015))
1371 datapd(i,j,cfld) = grid1(ii,jj)
1380 IF(iget(016) > 0)
THEN
1381 IF(lvls(lp,iget(016)) > 0)
THEN
1385 grid1(i,j) = qsl(i,j)
1388 CALL bound(grid1,zero,h99999)
1389 if(grib ==
'grib2')
then
1391 fld_info(cfld)%ifld=iavblfld(iget(016))
1392 fld_info(cfld)%lvl=lvlsxml(lp,iget(016))
1398 datapd(i,j,cfld) = grid1(ii,jj)
1407 IF(iget(020) > 0)
THEN
1408 IF(lvls(lp,iget(020)) > 0)
THEN
1412 grid1(i,j) = osl(i,j)
1416 IF (smflag .or. ioform ==
'binarympiio' )
THEN
1417 call allgetherv(grid1)
1418 if (ioform ==
'binarympiio')
then
1421 CALL smoothc(grid1,sdummy,im,jm,0.5)
1422 CALL smoothc(grid1,sdummy,im,jm,-0.5)
1425 nsmooth = nint(3.*(13500./dxm))
1428 CALL smooth(grid1,sdummy,im,jm,0.5)
1433 if(grib ==
'grib2')
then
1435 fld_info(cfld)%ifld=iavblfld(iget(020))
1436 fld_info(cfld)%lvl=lvlsxml(lp,iget(020))
1442 datapd(i,j,cfld) = grid1(ii,jj)
1451 IF(iget(284) > 0)
THEN
1452 IF(lvls(lp,iget(284)) > 0)
THEN
1456 grid1(i,j) = wsl(i,j)
1459 if(grib ==
'grib2')
then
1461 fld_info(cfld)%ifld=iavblfld(iget(284))
1462 fld_info(cfld)%lvl=lvlsxml(lp,iget(284))
1468 datapd(i,j,cfld) = grid1(ii,jj)
1477 IF(iget(085) > 0)
THEN
1478 IF(lvls(lp,iget(085)) > 0)
THEN
1479 CALL calmcvg(qsl(ista_2l,jsta_2l),usl(ista_2l,jsta_2l),vsl(ista_2l
1484 grid1(i,j) = egrid1(i,j)
1492 if(grib ==
'grib2')
then
1494 fld_info(cfld)%ifld=iavblfld(iget(085))
1495 fld_info(cfld)%lvl=lvlsxml(lp,iget(085))
1501 datapd(i,j,cfld) = grid1(ii,jj)
1511 IF(iget(018) > 0.OR.iget(019) > 0)
THEN
1513 IF(iget(018) > 0.)
then
1514 if(lvls(lp,iget(018)) > 0 ) log1=.true.
1516 IF(iget(019) > 0)
then
1517 if(lvls(lp,iget(019)) > 0 ) log1=.true.
1523 grid1(i,j) = usl(i,j)
1524 grid2(i,j) = vsl(i,j)
1529 nsmooth=nint(5.*(13500./dxm))
1530 call allgetherv(grid1)
1532 CALL smooth(grid1,sdummy,im,jm,0.5)
1534 nsmooth=nint(5.*(13500./dxm))
1535 call allgetherv(grid2)
1537 CALL smooth(grid2,sdummy,im,jm,0.5)
1541 if(grib ==
'grib2')
then
1543 fld_info(cfld)%ifld=iavblfld(iget(018))
1544 fld_info(cfld)%lvl=lvlsxml(lp,iget(018))
1550 datapd(i,j,cfld) = grid1(ii,jj)
1555 fld_info(cfld)%ifld=iavblfld(iget(019))
1556 fld_info(cfld)%lvl=lvlsxml(lp,iget(019))
1562 datapd(i,j,cfld) = grid2(ii,jj)
1571 IF (iget(021) > 0)
THEN
1572 IF (lvls(lp,iget(021)) > 0)
THEN
1573 CALL calvor(usl,vsl,egrid1)
1578 grid1(i,j) = egrid1(i,j)
1582 IF (smflag .or. ioform ==
'binarympiio' )
THEN
1583 call allgetherv(grid1)
1584 if (ioform ==
'binarympiio')
then
1587 CALL smoothc(grid1,sdummy,im,jm,0.5)
1588 CALL smoothc(grid1,sdummy,im,jm,-0.5)
1591 nsmooth = nint(4.*(13500./dxm))
1594 CALL smooth(grid1,sdummy,im,jm,0.5)
1599 if(grib ==
'grib2')
then
1601 fld_info(cfld)%ifld=iavblfld(iget(021))
1602 fld_info(cfld)%lvl=lvlsxml(lp,iget(021))
1608 datapd(i,j,cfld) = grid1(ii,jj)
1616 IF (iget(086) > 0)
THEN
1617 IF (lvls(lp,iget(086)) > 0)
THEN
1621 IF(fsl(i,j)<spval)
THEN
1622 egrid2(i,j) = fsl(i,j)*gi
1626 CALL calstrm(egrid2(ista:iend,jsta:jend),egrid1(ista:iend,jsta
1630 IF(fsl(i,j) < spval)
THEN
1631 grid1(i,j) = egrid1(i,j)
1637 if(grib ==
'grib2')
then
1639 fld_info(cfld)%ifld=iavblfld(iget(086))
1640 fld_info(cfld)%lvl=lvlsxml(lp,iget(086))
1646 datapd(i,j,cfld) = grid1(ii,jj)
1655 IF (iget(022) > 0)
THEN
1656 IF (lvls(lp,iget(022)) > 0)
THEN
1660 grid1(i,j) = q2sl(i,j)
1663 if(grib ==
'grib2')
then
1665 fld_info(cfld)%ifld=iavblfld(iget(022))
1666 fld_info(cfld)%lvl=lvlsxml(lp,iget(022))
1672 datapd(i,j,cfld) = grid1(ii,jj)
1681 IF (iget(153) > 0)
THEN
1682 IF (lvls(lp,iget(153)) > 0)
THEN
1683 IF(imp_physics==99 .or. imp_physics==98)
then
1688 IF(qw1(i,j) < spval .AND. qi1(i,j) < spval)
THEN
1689 grid1(i,j) = qw1(i,j) + qi1(i,j)
1700 grid1(i,j) = qw1(i,j)
1704 if(grib ==
'grib2')
then
1706 fld_info(cfld)%ifld=iavblfld(iget(153))
1707 fld_info(cfld)%lvl=lvlsxml(lp,iget(153))
1713 datapd(i,j,cfld) = grid1(ii,jj)
1722 IF (iget(166) > 0)
THEN
1723 IF (lvls(lp,iget(166)) > 0)
THEN
1727 grid1(i,j) = qi1(i,j)
1730 if(grib ==
'grib2')
then
1732 fld_info(cfld)%ifld=iavblfld(iget(166))
1733 fld_info(cfld)%lvl=lvlsxml(lp,iget(166))
1739 datapd(i,j,cfld) = grid1(ii,jj)
1747 IF (iget(183) > 0)
THEN
1748 IF (lvls(lp,iget(183)) > 0)
THEN
1752 grid1(i,j) = qr1(i,j)
1755 if(grib ==
'grib2')
then
1757 fld_info(cfld)%ifld=iavblfld(iget(183))
1758 fld_info(cfld)%lvl=lvlsxml(lp,iget(183))
1764 datapd(i,j,cfld) = grid1(ii,jj)
1772 IF (iget(184) > 0)
THEN
1773 IF (lvls(lp,iget(184)) > 0)
THEN
1777 grid1(i,j) = qs1(i,j)
1780 if(grib ==
'grib2')
then
1782 fld_info(cfld)%ifld=iavblfld(iget(184))
1783 fld_info(cfld)%lvl=lvlsxml(lp,iget(184))
1789 datapd(i,j,cfld) = grid1(ii,jj)
1797 IF (iget(416) > 0)
THEN
1798 IF (lvls(lp,iget(416)) > 0)
THEN
1802 grid1(i,j) = qg1(i,j)
1805 if(grib ==
'grib2')
then
1807 fld_info(cfld)%ifld=iavblfld(iget(416))
1808 fld_info(cfld)%lvl=lvlsxml(lp,iget(416))
1814 datapd(i,j,cfld) = grid1(ii,jj)
1823 IF (iget(198) > 0)
THEN
1824 IF (lvls(lp,iget(198)) > 0)
THEN
1828 grid1(i,j) = c1d(i,j)
1831 if(grib ==
'grib2')
then
1833 fld_info(cfld)%ifld=iavblfld(iget(198))
1834 fld_info(cfld)%lvl=lvlsxml(lp,iget(198))
1840 datapd(i,j,cfld) = grid1(ii,jj)
1848 IF (iget(263) > 0)
THEN
1849 IF (lvls(lp,iget(263)) > 0)
THEN
1853 grid1(i,j) = frime(i,j)
1856 if(grib ==
'grib2')
then
1858 fld_info(cfld)%ifld=iavblfld(iget(263))
1859 fld_info(cfld)%lvl=lvlsxml(lp,iget(263))
1865 datapd(i,j,cfld) = grid1(ii,jj)
1873 IF (iget(294) > 0)
THEN
1874 IF (lvls(lp,iget(294)) > 0)
THEN
1878 grid1(i,j) = rad(i,j)
1881 if(grib ==
'grib2')
then
1883 fld_info(cfld)%ifld=iavblfld(iget(294))
1884 fld_info(cfld)%lvl=lvlsxml(lp,iget(294))
1890 datapd(i,j,cfld) = grid1(ii,jj)
1898 IF (iget(251) > 0)
THEN
1899 IF (lvls(lp,iget(251)) > 0)
THEN
1903 grid1(i,j) = dbz1(i,j)
1906 if(grib ==
'grib2')
then
1908 fld_info(cfld)%ifld=iavblfld(iget(251))
1909 fld_info(cfld)%lvl=lvlsxml(lp,iget(251))
1915 datapd(i,j,cfld) = grid1(ii,jj)
1923 IF(iget(257) > 0)
THEN
1924 IF(lvls(lp,iget(257)) > 0)
THEN
1925 CALL calicing(tsl(ista:iend,jsta:jend), savrh, osl(ista:iend
1930 grid1(i,j) = egrid1(i,j)
1933 if(grib ==
'grib2')
then
1935 fld_info(cfld)%ifld=iavblfld(iget(257))
1936 fld_info(cfld)%lvl=lvlsxml(lp,iget(257))
1942 datapd(i,j,cfld) = grid1(ii,jj)
1953 IF(iget(258) > 0)
THEN
1954 IF(lvls(lp,iget(258)) > 0)
THEN
1958 IF(fsl(i,j)<spval)
THEN
1959 grid1(i,j) = fsl(i,j)*gi
1966 CALL calcat(usl(ista_2l,jsta_2l),vsl(ista_2l,jsta_2l),grid1
1967 ,usl_old(ista_2l,jsta_2l),vsl_old(ista_2l,jsta_2l
1968 ,fsl_old(ista_2l,jsta_2l),egrid1(ista_2l,jsta_2l
1972 grid1(i,j) = egrid1(i,j)
1977 if(grib ==
'grib2')
then
1979 fld_info(cfld)%ifld=iavblfld(iget(258))
1980 fld_info(cfld)%lvl=lvlsxml(lp,iget(258))
1986 datapd(i,j,cfld) = grid1(ii,jj)
1996 DO j=jsta_2l,jend_2u
1997 DO i=ista_2l,iend_2u
1998 usl_old(i,j) = usl(i,j)
1999 vsl_old(i,j) = vsl(i,j)
2000 IF(fsl(i,j)<spval)
THEN
2001 fsl_old(i,j) = fsl(i,j)*gi
2003 fsl_old(i,j) = spval
2009 IF (iget(268) > 0)
THEN
2010 IF (lvls(lp,iget(268)) > 0)
THEN
2014 grid1(i,j) = o3sl(i,j)
2019 if(grib ==
'grib2')
then
2021 fld_info(cfld)%ifld=iavblfld(iget(268))
2022 fld_info(cfld)%lvl=lvlsxml(lp,iget(268))
2028 datapd(i,j,cfld) = grid1(ii,jj)
2036 IF (iget(738) > 0)
THEN
2037 IF (lvls(lp,iget(738)) > 0)
THEN
2041 IF(smokesl(i,j,1)<spval.and.spl(lp)<spval.and.tsl(i,j)<spval
THEN
2042 grid1(i,j) = (1./rd)*smokesl(i,j,1)*(spl(lp)/tsl(i,j))
2048 if(grib ==
'grib2')
then
2050 fld_info(cfld)%ifld=iavblfld(iget(738))
2051 fld_info(cfld)%lvl=lvlsxml(lp,iget(738))
2057 datapd(i,j,cfld) = grid1(ii,jj)
2065 IF (iget(438) > 0)
THEN
2066 IF (lvls(lp,iget(438)) > 0)
THEN
2070 grid1(i,j) = dustsl(i,j,1)
2073 if(grib ==
'grib2')
then
2075 fld_info(cfld)%ifld=iavblfld(iget(438))
2076 fld_info(cfld)%lvl=lvlsxml(lp,iget(438))
2082 datapd(i,j,cfld) = grid1(ii,jj)
2089 IF (iget(439) > 0)
THEN
2090 IF (lvls(lp,iget(439)) > 0)
THEN
2094 grid1(i,j) = dustsl(i,j,2)
2097 if(grib ==
'grib2')
then
2099 fld_info(cfld)%ifld=iavblfld(iget(439))
2100 fld_info(cfld)%lvl=lvlsxml(lp,iget(439))
2106 datapd(i,j,cfld) = grid1(ii,jj)
2113 IF (iget(440) > 0)
THEN
2114 IF (lvls(lp,iget(440)) > 0)
THEN
2118 grid1(i,j) = dustsl(i,j,3)
2121 if(grib ==
'grib2')
then
2123 fld_info(cfld)%ifld=iavblfld(iget(440))
2124 fld_info(cfld)%lvl=lvlsxml(lp,iget(440))
2130 datapd(i,j,cfld) = grid1(ii,jj)
2137 IF (iget(441) > 0)
THEN
2138 IF (lvls(lp,iget(441)) > 0)
THEN
2142 grid1(i,j) = dustsl(i,j,4)
2145 if(grib ==
'grib2')
then
2147 fld_info(cfld)%ifld=iavblfld(iget(441))
2148 fld_info(cfld)%lvl=lvlsxml(lp,iget(441))
2154 datapd(i,j,cfld) = grid1(ii,jj)
2161 IF (iget(442) > 0)
THEN
2162 IF (lvls(lp,iget(442)) > 0)
THEN
2166 grid1(i,j) = dustsl(i,j,5)
2169 if(grib ==
'grib2')
then
2171 fld_info(cfld)%ifld=iavblfld(iget(442))
2172 fld_info(cfld)%lvl=lvlsxml(lp,iget(442))
2178 datapd(i,j,cfld) = grid1(ii,jj)
2187 if(iostatusd3d==0 .and. d3d_on)
then
2189 IF (iget(355) > 0)
THEN
2190 IF (lvls(lp,iget(355)) > 0)
THEN
2194 grid1(i,j) = d3dsl(i,j,1)
2199 if (itd3d /= 0)
then
2200 ifincr = mod(ifhr,itd3d)
2201 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2207 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2209 IF (ifincr == 0)
THEN
2212 id(18) = ifhr-ifincr
2213 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2215 if(grib ==
'grib2')
then
2217 fld_info(cfld)%ifld=iavblfld(iget(355))
2218 fld_info(cfld)%lvl=lvlsxml(lp,iget(355))
2220 fld_info(cfld)%ntrange=0
2222 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2224 fld_info(cfld)%tinvstat=itd3d
2230 datapd(i,j,cfld) = grid1(ii,jj)
2237 IF (iget(354) > 0)
THEN
2238 IF (lvls(lp,iget(354)) > 0)
THEN
2242 grid1(i,j) = d3dsl(i,j,2)
2247 if (itd3d /= 0)
then
2248 ifincr = mod(ifhr,itd3d)
2249 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2255 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2257 IF (ifincr == 0)
THEN
2260 id(18) = ifhr-ifincr
2261 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2263 if(grib ==
'grib2')
then
2265 fld_info(cfld)%ifld=iavblfld(iget(354))
2266 fld_info(cfld)%lvl=lvlsxml(lp,iget(354))
2268 fld_info(cfld)%ntrange=0
2270 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2272 fld_info(cfld)%tinvstat=itd3d
2278 datapd(i,j,cfld) = grid1(ii,jj)
2285 IF (iget(356) > 0)
THEN
2286 IF (lvls(lp,iget(356)) > 0)
THEN
2290 grid1(i,j) = d3dsl(i,j,3)
2295 if (itd3d /= 0)
then
2296 ifincr = mod(ifhr,itd3d)
2297 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2303 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2305 IF (ifincr == 0)
THEN
2308 id(18) = ifhr-ifincr
2309 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2311 if(grib ==
'grib2')
then
2313 fld_info(cfld)%ifld=iavblfld(iget(356))
2314 fld_info(cfld)%lvl=lvlsxml(lp,iget(356))
2316 fld_info(cfld)%ntrange=0
2318 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2320 fld_info(cfld)%tinvstat=itd3d
2326 datapd(i,j,cfld) = grid1(ii,jj)
2333 IF (iget(357) > 0)
THEN
2334 IF (lvls(lp,iget(357)) > 0)
THEN
2338 grid1(i,j) = d3dsl(i,j,4)
2343 if (itd3d /= 0)
then
2344 ifincr = mod(ifhr,itd3d)
2345 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2351 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2353 IF (ifincr == 0)
THEN
2356 id(18) = ifhr-ifincr
2357 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2359 if(grib ==
'grib2')
then
2361 fld_info(cfld)%ifld=iavblfld(iget(357))
2362 fld_info(cfld)%lvl=lvlsxml(lp,iget(357))
2364 fld_info(cfld)%ntrange=0
2366 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2368 fld_info(cfld)%tinvstat=itd3d
2374 datapd(i,j,cfld) = grid1(ii,jj)
2381 IF (iget(358) > 0)
THEN
2382 IF (lvls(lp,iget(358)) > 0)
THEN
2386 grid1(i,j) = d3dsl(i,j,5)
2391 if (itd3d /= 0)
then
2392 ifincr = mod(ifhr,itd3d)
2393 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2399 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2401 IF (ifincr == 0)
THEN
2404 id(18) = ifhr-ifincr
2405 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2407 if(grib ==
'grib2')
then
2409 fld_info(cfld)%ifld=iavblfld(iget(358))
2410 fld_info(cfld)%lvl=lvlsxml(lp,iget(358))
2412 fld_info(cfld)%ntrange=0
2414 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2416 fld_info(cfld)%tinvstat=itd3d
2422 datapd(i,j,cfld) = grid1(ii,jj)
2429 IF (iget(359) > 0)
THEN
2430 IF (lvls(lp,iget(359)) > 0)
THEN
2434 grid1(i,j) = d3dsl(i,j,6)
2439 if (itd3d /= 0)
then
2440 ifincr = mod(ifhr,itd3d)
2441 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2447 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2449 IF (ifincr == 0)
THEN
2452 id(18) = ifhr-ifincr
2453 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2455 if(grib ==
'grib2')
then
2457 fld_info(cfld)%ifld=iavblfld(iget(359))
2458 fld_info(cfld)%lvl=lvlsxml(lp,iget(359))
2460 fld_info(cfld)%ntrange=0
2462 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2464 fld_info(cfld)%tinvstat=itd3d
2470 datapd(i,j,cfld) = grid1(ii,jj)
2477 IF (iget(360) > 0)
THEN
2478 IF (lvls(lp,iget(360)) > 0)
THEN
2482 grid1(i,j) = d3dsl(i,j,7)
2487 if (itd3d /= 0)
then
2488 ifincr = mod(ifhr,itd3d)
2489 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2495 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2497 IF (ifincr == 0)
THEN
2500 id(18) = ifhr-ifincr
2501 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2503 if(grib ==
'grib2')
then
2505 fld_info(cfld)%ifld=iavblfld(iget(360))
2506 fld_info(cfld)%lvl=lvlsxml(lp,iget(360))
2508 fld_info(cfld)%ntrange=0
2510 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2512 fld_info(cfld)%tinvstat=itd3d
2518 datapd(i,j,cfld) = grid1(ii,jj)
2525 IF (iget(361) > 0)
THEN
2526 IF (lvls(lp,iget(361)) > 0)
THEN
2530 grid1(i,j) = d3dsl(i,j,8)
2535 if (itd3d /= 0)
then
2536 ifincr = mod(ifhr,itd3d)
2537 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2543 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2545 IF (ifincr == 0)
THEN
2548 id(18) = ifhr-ifincr
2549 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2551 if(grib ==
'grib2')
then
2553 fld_info(cfld)%ifld=iavblfld(iget(361))
2554 fld_info(cfld)%lvl=lvlsxml(lp,iget(361))
2556 fld_info(cfld)%ntrange=0
2558 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2560 fld_info(cfld)%tinvstat=itd3d
2566 datapd(i,j,cfld) = grid1(ii,jj)
2573 IF (iget(362) > 0)
THEN
2574 IF (lvls(lp,iget(362)) > 0)
THEN
2578 grid1(i,j) = d3dsl(i,j,9)
2583 if (itd3d /= 0)
then
2584 ifincr = mod(ifhr,itd3d)
2585 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2591 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2593 IF (ifincr == 0)
THEN
2596 id(18) = ifhr-ifincr
2597 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2599 if(grib ==
'grib2')
then
2601 fld_info(cfld)%ifld=iavblfld(iget(362))
2602 fld_info(cfld)%lvl=lvlsxml(lp,iget(362))
2604 fld_info(cfld)%ntrange=0
2606 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2608 fld_info(cfld)%tinvstat=itd3d
2614 datapd(i,j,cfld) = grid1(ii,jj)
2621 IF (iget(363) > 0)
THEN
2622 IF (lvls(lp,iget(363)) > 0)
THEN
2626 grid1(i,j) = d3dsl(i,j,10)
2631 if (itd3d /= 0)
then
2632 ifincr = mod(ifhr,itd3d)
2633 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2640 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2642 IF (ifincr == 0)
THEN
2645 id(18) = ifhr-ifincr
2646 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2648 if(grib ==
'grib2')
then
2650 fld_info(cfld)%ifld=iavblfld(iget(363))
2651 fld_info(cfld)%lvl=lvlsxml(lp,iget(363))
2653 fld_info(cfld)%ntrange=0
2655 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2657 fld_info(cfld)%tinvstat=itd3d
2663 datapd(i,j,cfld) = grid1(ii,jj)
2670 IF (iget(364) > 0)
THEN
2671 IF (lvls(lp,iget(364)) > 0)
THEN
2675 grid1(i,j) = d3dsl(i,j,11)
2680 if (itd3d /= 0)
then
2681 ifincr = mod(ifhr,itd3d)
2682 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2689 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2691 IF (ifincr == 0)
THEN
2694 id(18) = ifhr-ifincr
2695 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2697 if(grib ==
'grib2')
then
2699 fld_info(cfld)%ifld=iavblfld(iget(364))
2700 fld_info(cfld)%lvl=lvlsxml(lp,iget(364))
2702 fld_info(cfld)%ntrange=0
2704 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2706 fld_info(cfld)%tinvstat=itd3d
2712 datapd(i,j,cfld) = grid1(ii,jj)
2719 IF (iget(365) > 0)
THEN
2720 IF (lvls(lp,iget(365)) > 0)
THEN
2724 grid1(i,j) = d3dsl(i,j,12)
2729 if (itd3d /= 0)
then
2730 ifincr = mod(ifhr,itd3d)
2731 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2738 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2740 IF (ifincr == 0)
THEN
2743 id(18) = ifhr-ifincr
2744 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2746 if(grib ==
'grib2')
then
2748 fld_info(cfld)%ifld=iavblfld(iget(365))
2749 fld_info(cfld)%lvl=lvlsxml(lp,iget(365))
2751 fld_info(cfld)%ntrange=0
2753 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2755 fld_info(cfld)%tinvstat=itd3d
2761 datapd(i,j,cfld) = grid1(ii,jj)
2768 IF (iget(366) > 0)
THEN
2769 IF (lvls(lp,iget(366)) > 0)
THEN
2773 grid1(i,j) = d3dsl(i,j,13)
2778 if (itd3d /= 0)
then
2779 ifincr = mod(ifhr,itd3d)
2780 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2787 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2789 IF (ifincr == 0)
THEN
2792 id(18) = ifhr-ifincr
2793 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2795 if(grib ==
'grib2')
then
2797 fld_info(cfld)%ifld=iavblfld(iget(366))
2798 fld_info(cfld)%lvl=lvlsxml(lp,iget(366))
2800 fld_info(cfld)%ntrange=0
2802 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2804 fld_info(cfld)%tinvstat=itd3d
2810 datapd(i,j,cfld) = grid1(ii,jj)
2817 IF (iget(367) > 0)
THEN
2818 IF (lvls(lp,iget(367)) > 0)
THEN
2822 grid1(i,j) = d3dsl(i,j,14)
2827 if (itd3d /= 0)
then
2828 ifincr = mod(ifhr,itd3d)
2829 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2836 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2838 IF (ifincr == 0)
THEN
2841 id(18) = ifhr-ifincr
2842 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2844 if(grib ==
'grib2')
then
2846 fld_info(cfld)%ifld=iavblfld(iget(367))
2847 fld_info(cfld)%lvl=lvlsxml(lp,iget(367))
2849 fld_info(cfld)%ntrange=0
2851 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2853 fld_info(cfld)%tinvstat=itd3d
2859 datapd(i,j,cfld) = grid1(ii,jj)
2866 IF (iget(368) > 0)
THEN
2867 IF (lvls(lp,iget(368)) > 0)
THEN
2871 grid1(i,j) = d3dsl(i,j,15)
2876 if (itd3d /= 0)
then
2877 ifincr = mod(ifhr,itd3d)
2878 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2885 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2887 IF (ifincr == 0)
THEN
2890 id(18) = ifhr-ifincr
2891 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2893 if(grib ==
'grib2')
then
2895 fld_info(cfld)%ifld=iavblfld(iget(368))
2896 fld_info(cfld)%lvl=lvlsxml(lp,iget(368))
2898 fld_info(cfld)%ntrange=0
2900 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2902 fld_info(cfld)%tinvstat=itd3d
2908 datapd(i,j,cfld) = grid1(ii,jj)
2915 IF (iget(369) > 0)
THEN
2916 IF (lvls(lp,iget(369)) > 0)
THEN
2920 grid1(i,j) = d3dsl(i,j,16)
2925 if (itd3d /= 0)
then
2926 ifincr = mod(ifhr,itd3d)
2927 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2933 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2935 IF (ifincr == 0)
THEN
2938 id(18) = ifhr-ifincr
2939 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2941 if(grib ==
'grib2')
then
2943 fld_info(cfld)%ifld=iavblfld(iget(369))
2944 fld_info(cfld)%lvl=lvlsxml(lp,iget(369))
2946 fld_info(cfld)%ntrange=0
2948 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2950 fld_info(cfld)%tinvstat=itd3d
2956 datapd(i,j,cfld) = grid1(ii,jj)
2963 IF (iget(370) > 0)
THEN
2964 IF (lvls(lp,iget(370)) > 0)
THEN
2968 grid1(i,j) = d3dsl(i,j,17)
2973 if (itd3d /= 0)
then
2974 ifincr = mod(ifhr,itd3d)
2975 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2982 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2984 IF (ifincr == 0)
THEN
2987 id(18) = ifhr-ifincr
2988 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2990 if(grib ==
'grib2')
then
2992 fld_info(cfld)%ifld=iavblfld(iget(370))
2993 fld_info(cfld)%lvl=lvlsxml(lp,iget(370))
2995 fld_info(cfld)%ntrange=0
2997 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2999 fld_info(cfld)%tinvstat=itd3d
3005 datapd(i,j,cfld) = grid1(ii,jj)
3012 IF (iget(371) > 0)
THEN
3013 IF (lvls(lp,iget(371)) > 0)
THEN
3017 grid1(i,j) = d3dsl(i,j,18)
3022 if (itd3d /= 0)
then
3023 ifincr = mod(ifhr,itd3d)
3024 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3031 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3033 IF (ifincr == 0)
THEN
3036 id(18) = ifhr-ifincr
3037 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3039 if(grib ==
'grib2')
then
3041 fld_info(cfld)%ifld=iavblfld(iget(371))
3042 fld_info(cfld)%lvl=lvlsxml(lp,iget(371))
3044 fld_info(cfld)%ntrange=0
3046 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3048 fld_info(cfld)%tinvstat=itd3d
3054 datapd(i,j,cfld) = grid1(ii,jj)
3061 IF (iget(372) > 0)
THEN
3062 IF (lvls(lp,iget(372)) > 0)
THEN
3066 grid1(i,j) = d3dsl(i,j,19)
3071 if (itd3d /= 0)
then
3072 ifincr = mod(ifhr,itd3d)
3073 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3079 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3081 IF (ifincr == 0)
THEN
3084 id(18) = ifhr-ifincr
3085 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3087 if(grib ==
'grib2')
then
3089 fld_info(cfld)%ifld=iavblfld(iget(372))
3090 fld_info(cfld)%lvl=lvlsxml(lp,iget(372))
3092 fld_info(cfld)%ntrange=0
3094 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3096 fld_info(cfld)%tinvstat=itd3d
3102 datapd(i,j,cfld) = grid1(ii,jj)
3109 IF (iget(373) > 0)
THEN
3110 IF (lvls(lp,iget(373)) > 0)
THEN
3114 grid1(i,j) = d3dsl(i,j,20)
3119 if (itd3d /= 0)
then
3120 ifincr = mod(ifhr,itd3d)
3121 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3128 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3130 IF (ifincr == 0)
THEN
3133 id(18) = ifhr-ifincr
3134 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3136 if(grib ==
'grib2')
then
3138 fld_info(cfld)%ifld=iavblfld(iget(373))
3139 fld_info(cfld)%lvl=lvlsxml(lp,iget(373))
3141 fld_info(cfld)%ntrange=0
3143 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3145 fld_info(cfld)%tinvstat=itd3d
3151 datapd(i,j,cfld) = grid1(ii,jj)
3158 IF (iget(374) > 0)
THEN
3159 IF (lvls(lp,iget(374)) > 0)
THEN
3163 grid1(i,j) = d3dsl(i,j,21)
3168 if (itd3d /= 0)
then
3169 ifincr = mod(ifhr,itd3d)
3170 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3177 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3179 IF (ifincr == 0)
THEN
3182 id(18) = ifhr-ifincr
3183 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3185 if(grib ==
'grib2')
then
3187 fld_info(cfld)%ifld=iavblfld(iget(374))
3188 fld_info(cfld)%lvl=lvlsxml(lp,iget(374))
3190 fld_info(cfld)%ntrange=0
3192 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3194 fld_info(cfld)%tinvstat=itd3d
3200 datapd(i,j,cfld) = grid1(ii,jj)
3207 IF (iget(375) > 0)
THEN
3208 IF (lvls(lp,iget(375)) > 0)
THEN
3212 grid1(i,j) = d3dsl(i,j,22)
3217 if (itd3d /= 0)
then
3218 ifincr = mod(ifhr,itd3d)
3219 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3225 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3227 IF (ifincr == 0)
THEN
3230 id(18) = ifhr-ifincr
3231 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3233 if(grib ==
'grib2')
then
3235 fld_info(cfld)%ifld=iavblfld(iget(375))
3236 fld_info(cfld)%lvl=lvlsxml(lp,iget(375))
3238 fld_info(cfld)%ntrange=0
3240 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3242 fld_info(cfld)%tinvstat=itd3d
3248 datapd(i,j,cfld) = grid1(ii,jj)
3255 IF (iget(379) > 0)
THEN
3256 IF (lvls(lp,iget(379)) > 0)
THEN
3260 IF(d3dsl(i,j,1)/=spval)
THEN
3261 grid1(i,j) = d3dsl(i,j,1) + d3dsl(i,j,2) &
3262 + d3dsl(i,j,3) + d3dsl(i,j,4) &
3263 + d3dsl(i,j,5) + d3dsl(i,j,6)
3271 if (itd3d /= 0)
then
3272 ifincr = mod(ifhr,itd3d)
3273 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3279 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3281 IF (ifincr == 0)
THEN
3284 id(18) = ifhr-ifincr
3285 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3287 if(grib ==
'grib2')
then
3289 fld_info(cfld)%ifld=iavblfld(iget(379))
3290 fld_info(cfld)%lvl=lvlsxml(lp,iget(379))
3292 fld_info(cfld)%ntrange=0
3294 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3296 fld_info(cfld)%tinvstat=itd3d
3302 datapd(i,j,cfld) = grid1(ii,jj)
3309 IF (iget(391) > 0)
THEN
3310 IF (lvls(lp,iget(391)) > 0)
THEN
3314 grid1(i,j) = d3dsl(i,j,23)
3319 if (itd3d /= 0)
then
3320 ifincr = mod(ifhr,itd3d)
3321 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3328 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3330 IF (ifincr == 0)
THEN
3333 id(18) = ifhr-ifincr
3334 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3336 if(grib ==
'grib2')
then
3338 fld_info(cfld)%ifld=iavblfld(iget(391))
3339 fld_info(cfld)%lvl=lvlsxml(lp,iget(391))
3341 fld_info(cfld)%ntrange=0
3343 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3345 fld_info(cfld)%tinvstat=itd3d
3351 datapd(i,j,cfld) = grid1(ii,jj)
3358 IF (iget(392) > 0)
THEN
3359 IF (lvls(lp,iget(392)) > 0)
THEN
3363 grid1(i,j) = d3dsl(i,j,24)
3368 if (itd3d /= 0)
then
3369 ifincr = mod(ifhr,itd3d)
3370 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3377 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3379 IF (ifincr == 0)
THEN
3382 id(18) = ifhr-ifincr
3383 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3385 if(grib ==
'grib2')
then
3387 fld_info(cfld)%ifld=iavblfld(iget(392))
3388 fld_info(cfld)%lvl=lvlsxml(lp,iget(392))
3390 fld_info(cfld)%ntrange=0
3392 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3394 fld_info(cfld)%tinvstat=itd3d
3400 datapd(i,j,cfld) = grid1(ii,jj)
3407 IF (iget(393) > 0)
THEN
3408 IF (lvls(lp,iget(393)) > 0)
THEN
3412 grid1(i,j) = d3dsl(i,j,25)
3417 if (itd3d /= 0)
then
3418 ifincr = mod(ifhr,itd3d)
3419 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3426 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3428 IF (ifincr == 0)
THEN
3431 id(18) = ifhr-ifincr
3432 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3434 if(grib ==
'grib2')
then
3436 fld_info(cfld)%ifld=iavblfld(iget(393))
3437 fld_info(cfld)%lvl=lvlsxml(lp,iget(393))
3439 fld_info(cfld)%ntrange=0
3441 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3443 fld_info(cfld)%tinvstat=itd3d
3449 datapd(i,j,cfld) = grid1(ii,jj)
3456 IF (iget(394) > 0)
THEN
3457 IF (lvls(lp,iget(394)) > 0)
THEN
3461 grid1(i,j) = d3dsl(i,j,26)
3466 if (itd3d /= 0)
then
3467 ifincr = mod(ifhr,itd3d)
3468 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3475 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3477 IF (ifincr == 0)
THEN
3480 id(18) = ifhr-ifincr
3481 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3483 if(grib ==
'grib2')
then
3485 fld_info(cfld)%ifld=iavblfld(iget(394))
3486 fld_info(cfld)%lvl=lvlsxml(lp,iget(394))
3488 fld_info(cfld)%ntrange=0
3490 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3492 fld_info(cfld)%tinvstat=itd3d
3498 datapd(i,j,cfld) = grid1(ii,jj)
3505 IF (iget(395) > 0)
THEN
3506 IF (lvls(lp,iget(395)) > 0)
THEN
3510 grid1(i,j) = d3dsl(i,j,27)
3515 if (itd3d /= 0)
then
3516 ifincr = mod(ifhr,itd3d)
3517 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3524 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3526 IF (ifincr == 0)
THEN
3529 id(18) = ifhr-ifincr
3530 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3532 if(grib ==
'grib2')
then
3534 fld_info(cfld)%ifld=iavblfld(iget(395))
3535 fld_info(cfld)%lvl=lvlsxml(lp,iget(395))
3537 fld_info(cfld)%ntrange=0
3539 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3541 fld_info(cfld)%tinvstat=itd3d
3547 datapd(i,j,cfld) = grid1(ii,jj)
3556 IF (iget(455) > 0)
THEN
3557 ii=(ista+iend)/2+100
3558 jj=(jsta+jend)/2-100
3559 IF(abs(spl(lp)-50000.)<small) luhi=lp
3560 IF(abs(spl(lp)-70000.)<small)
THEN
3567 egrid2(i,j) = spl(lp)
3570 CALL caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend
3575 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3576 dum1 = tsl(i,j)-tprs(i,j,luhi)
3579 ELSE IF(dum1 > 17. .AND. dum1 <= 21.)
THEN
3584 dum1 = tsl(i,j)-tdsl(i,j)
3585 IF(dum1 <= 14.)
THEN
3587 ELSE IF(dum1>14. .AND. dum1<=20.)
THEN
3592 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j
THEN
3593 haines(i,j) = istaa + imois
3606 IF(abs(spl(lp)-85000.)<small)
THEN
3611 egrid2(i,j) = spl(lp)
3614 CALL caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend
3619 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3620 dum1 = tsl(i,j)-tprs(i,j,luhi)
3623 ELSE IF(dum1 > 5. .AND. dum1 <= 10.)
THEN
3628 dum1 = tsl(i,j)-tdsl(i,j)
3631 ELSE IF(dum1 > 5. .AND. dum1 <= 12.)
THEN
3638 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j)<spval
THEN
3639 haines(i,j) = istaa + imois
3650 IF(abs(spl(lp)-95000.)<small)
THEN
3658 CALL caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend
3663 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3664 dum1 = tsl(i,j)-tprs(i,j,luhi)
3667 ELSE IF(dum1 > 3. .AND. dum1 <=7. )
THEN
3672 dum1 = tsl(i,j)-tdsl(i,j)
3675 ELSE IF(dum1 > 5. .AND. dum1 <= 9.)
THEN
3682 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j)<spval
THEN
3683 haines(i,j) = istaa + imois
3691 if(grib ==
'grib2')
then
3693 fld_info(cfld)%ifld=iavblfld(iget(455))
3699 datapd(i,j,cfld) = haines(ii,jj)
3715 IF (iget(423) > 0)
THEN
3721 grid1(i,j) = w_up_max(i,j)
3725 if(grib ==
'grib2')
then
3727 fld_info(cfld)%ifld = iavblfld(iget(423))
3728 fld_info(cfld)%lvl = lvlsxml(lp,iget(423))
3730 fld_info(cfld)%tinvstat=1
3732 fld_info(cfld)%tinvstat=0
3734 fld_info(cfld)%ntrange=1
3740 datapd(i,j,cfld) = grid1(ii,jj)
3748 IF (iget(424) > 0)
THEN
3753 grid1(i,j) = w_dn_max(i,j)
3756 if(grib ==
'grib2')
then
3758 fld_info(cfld)%ifld=iavblfld(iget(424))
3759 fld_info(cfld)%lvl=lvlsxml(lp,iget(424))
3761 fld_info(cfld)%tinvstat=1
3763 fld_info(cfld)%tinvstat=0
3765 fld_info(cfld)%ntrange=1
3771 datapd(i,j,cfld) = grid1(ii,jj)
3784 IF (iget(425) > 0)
THEN
3789 grid1(i,j) = w_mean(i,j)
3792 if(grib ==
'grib2')
then
3794 fld_info(cfld)%ifld = iavblfld(iget(425))
3795 fld_info(cfld)%lvl = lvlsxml(lp,iget(425))
3797 fld_info(cfld)%tinvstat = 0
3799 fld_info(cfld)%tinvstat = 1
3801 fld_info(cfld)%ntrange = 1
3807 datapd(i,j,cfld) = grid1(ii,jj)
3818 IF(iget(023) > 0)
THEN
3819 IF(gridtype ==
'A'.OR. gridtype ==
'B')
then
3820 if(me==0)print*,
'CALLING MEMSLP for A or B grid'
3821 CALL memslp(tprs,qprs,fprs)
3822 if(me==0)print*,
'aft CALLING MEMSLP for A or B grid,pslp=', &
3823 maxval(pslp(ista:iend,jsta:jend)),minval(pslp(ista:iend,jsta
3824 ELSE IF (gridtype ==
'E')
THEN
3825 if(me==0)print*,
'CALLING MEMSLP_NMM for E grid'
3828 print*,
'unknow grid type-> WONT DERIVE MESINGER SLP'
3833 grid1(i,j) = pslp(i,j)
3838 if(grib ==
'grib2')
then
3840 fld_info(cfld)%ifld = iavblfld(iget(023))
3846 datapd(i,j,cfld) = grid1(ii,jj)
3853 IF(iget(445) > 0)
THEN
3854 if(me==0)print*,
'CALLING MAPS SLP'
3859 grid1(i,j) = pslp(i,j)
3862 if(grib ==
'grib2')
then
3864 fld_info(cfld)%ifld = iavblfld(iget(445))
3870 datapd(i,j,cfld) = grid1(ii,jj)
3878 IF(iget(023) > 0.OR.iget(445) > 0)
THEN
3879 IF(iget(012) > 0)
THEN
3883 IF(abs(spl(lp)-1.0e5) <= 1.0e-5)
THEN
3884 IF(lvls(lp,iget(012)) > 0)
THEN
3886 IF(modelname ==
'GFS')
THEN
3892 IF(fsl(i,j)<spval)
THEN
3893 grid1(i,j) = fsl(i,j)*gi
3903 IF(pslp(i,j) < spval)
THEN
3906 psfc = pint(i,j,nint(lmh(i,j))+1)
3907 IF(abs(pslpij-psfc) < 5.e2)
THEN
3908 grid1(i,j) = rd*tprs(i,j,lp)*(alpsl-alpth)
3910 grid1(i,j) = fis(i,j)/(alpsl-log(psfc))*(alpsl-alpth
3912 z1000(i,j) = grid1(i,j)*gi
3913 grid1(i,j) = z1000(i,j)
3923 nsmooth = nint(5.*(13500./dxm))
3924 call allgetherv(grid1)
3926 CALL smooth(grid1,sdummy,im,jm,0.5)
3930 if(grib ==
'grib2')
then
3932 fld_info(cfld)%ifld = iavblfld(iget(012))
3933 fld_info(cfld)%lvl = lvlsxml(lp,iget(012))
3939 datapd(i,j,cfld) = grid1(ii,jj)
3950if(
allocated(d3dsl))
deallocate(d3dsl)
3951if(
allocated(dustsl))
deallocate(dustsl)
3952if(
allocated(smokesl))
deallocate(smokesl)
subroutine calicing(t1, rh, omga, icing)
Computes In-Flight Icing.
subroutine calcat(u, v, h, u_old, v_old, h_old, cat)
Computes Clear Air Turbulence Index.
subroutine bound(fld, fmin, fmax)
This routine bounds data in the passed array FLD (im x jm elements long) and clips data values such t...
subroutine caldwp(p1d, q1d, tdwp, t1d)
Computes dewpoint from P, T, and Q.
subroutine smooth(field, hold, ix, iy, smth)
subroutine smoothc(field, hold, ix, iy, smth)
smoothc() smooths a meteorological field using Shapiro smoother.
calcape() computes CAPE/CINS and other storm related variables.
elemental real function, public fpvsnew(t)