41 SUBROUTINE mdl2p(iostatusD3D)
45 use vrbls4d,
only: dust, smoke, fv3dust, coarsepm
46 use vrbls3d,
only: pint, o3, pmid, t, q, uh, vh, wh, omga, q2, cwm, &
47 qqw, qqi, qqr, qqs, qqg, dbz, f_rimef, ttnd, cfr, &
48 rlwtt, rswtt, vdifftt, tcucn, tcucns, &
49 train, vdiffmois, dconvmois, sconvmois,nradtt, &
50 o3vdiff, o3prod, o3tndy, mwpv, unknown, vdiffzacce, &
51 zgdrag, cnvctvmmixing, vdiffmacce, mgdrag, &
52 cnvctummixing, ncnvctcfrac, cnvctumflx, cnvctdetmflx, &
53 cnvctzgdrag, cnvctmgdrag, zmid, zint, pmidv, &
54 cnvctdmflx, icing_gfip, icing_gfis,gtg,cat=>catedr,mwt
55 use vrbls2d,
only: t500,t700,w_up_max,w_dn_max,w_mean,pslp,fis,z1000,z700,&
57 use masks,
only: lmh, sm
58 use physcons_post,
only: con_fvirt, con_rog, con_eps, con_epsm1
59 use params_mod,
only: h1m12, dbzmin, h1, pq0, a2, a3, a4, rhmin, g, &
60 rgamog, rd, d608, gi, erad, pi, small, h100, &
62 use ctlblk_mod,
only: modelname, lp1, me, jsta, jend, lm, spval, spl, &
63 alsl, jend_m, smflag, grib, cfld, fld_info, datapd,&
64 td3d, ifhr, ifmin, im, jm, nbin_du, jsta_2l, &
65 jend_2u, lsm, d3d_on, ioform, nbin_sm, &
66 imp_physics, ista, iend, ista_m, iend_m, ista_2l, &
68 use rqstfld_mod,
only: iget, lvls, id, iavblfld, lvlsxml
69 use gridspec_mod,
only: gridtype, maptype, dxval
70 use upp_physics,
only: fpvsnew, calrh, calvor, calslr_roebber, calslr_uutah
81 real,
parameter:: gammam=-1*gamma,zshul=75.,tvshul=290.66
85 real,
PARAMETER :: CAPA=0.28589641,p1000=1000.e2
87 real,
dimension(im,jm) :: GRID1, GRID2
88 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: FSL, TSL, QSL, OSL, USL, VSL &
89 &, Q2SL, WSL, CFRSL, O3SL, TDSL &
91 &, FSL_OLD, USL_OLD, VSL_OLD &
93 &, ICINGFSL, ICINGVSL &
95 REAL,
allocatable :: D3DSL(:,:,:), SMOKESL(:,:,:), FV3DUSTSL(:,:,:) &
98 integer,
intent(in) :: iostatusD3D
99 INTEGER,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: NL1X, NL1XF
100 real,
dimension(ISTA_2L:IEND_2U,JSTA_2L:JEND_2U,LSM) :: TPRS, QPRS, FPRS
101 real,
dimension(ISTA_2L:IEND_2U,JSTA_2L:JEND_2U,LSM) :: RHPRS
115 REAL,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: C1D, QW1, QI1, QR1, QS1, QG1, DBZ1 &
121 REAL SAVRH(ista:iend,jsta:jend)
123 integer I,J,L,LP,LL,LLMH,JJB,JJE,II,JJ,LI,IFINCR,ITD3D,istaa,imois,luhi,la
124 real fact,ALPSL,PSFC,QBLO,PNL1,TBLO,TVRL,TVRBLO,FAC,PSLPIJ, &
125 alpth,ahf,pdv,ql,tvu,tvd,gammas,qsat,rhl,zl,tl,pl,es,part,dum1
133 if (modelname ==
'GFS')
then
139 if (.not.
allocated(d3dsl))
allocate(d3dsl(im,jm,27))
149 if (.not.
allocated(smokesl))
allocate(smokesl(im,jm,nbin_sm))
154 smokesl(i,j,l) = spval
158 if (.not.
allocated(fv3dustsl))
allocate(fv3dustsl(im,jm,nbin_sm))
163 fv3dustsl(i,j,l) = spval
167 if (.not.
allocated(coarsepmsl))
allocate(coarsepmsl(im,jm,nbin_sm))
172 coarsepmsl(i,j,l) = spval
186 IF((iget(012) > 0) .OR. (iget(013) > 0) .OR. &
187 (iget(014) > 0) .OR. (iget(015) > 0) .OR. &
188 (iget(016) > 0) .OR. (iget(017) > 0) .OR. &
189 (iget(018) > 0) .OR. (iget(019) > 0) .OR. &
190 (iget(020) > 0) .OR. (iget(030) > 0) .OR. &
191 (iget(021) > 0) .OR. (iget(022) > 0) .OR. &
192 (iget(023) > 0) .OR. (iget(085) > 0) .OR. &
193 (iget(086) > 0) .OR. (iget(284) > 0) .OR. &
194 (iget(153) > 0) .OR. (iget(166) > 0) .OR. &
195 (iget(183) > 0) .OR. (iget(184) > 0) .OR. &
196 (iget(198) > 0) .OR. (iget(251) > 0) .OR. &
197 (iget(257) > 0) .OR. (iget(258) > 0) .OR. &
198 (iget(294) > 0) .OR. (iget(268) > 0) .OR. &
199 (iget(331) > 0) .OR. (iget(326) > 0) .OR. &
201 (iget(354) > 0) .OR. (iget(355) > 0) .OR. &
202 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
203 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
204 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
205 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
206 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
207 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
208 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
209 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
210 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
211 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
212 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
213 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
214 (iget(395) > 0) .OR. (iget(379) > 0) .OR. &
216 (iget(455) > 0) .OR. &
218 (iget(464) > 0) .OR. (iget(465) > 0) .OR. &
219 (iget(466) > 0) .OR. (iget(450) > 0) .OR. &
220 (iget(480) > 0) .OR. &
222 (iget(738) > 0) .OR. (iget(743) > 0) .OR. &
223 (modelname ==
'RAPR') .OR.&
225 (iget(030)>0) .OR. (iget(031)>0) .OR. (iget(075)>0))
THEN
235 if(gridtype ==
'B' .or. gridtype ==
'E') &
236 call exch(pint(ista_2l:iend_2u,jsta_2l:jend_2u,lp1))
269 icingfsl(i,j) = spval
270 icingvsl(i,j) = spval
280 IF(nl1x(i,j) == lp1 .AND. pmid(i,j,l) > spl(lp))
THEN
290 IF(nl1x(i,j) == lp1 .AND. pint(i,j,lp1) > spl(lp))
THEN
296 IF(nl1xf(i,j) == (lp1+1) .AND. pint(i,j,l) > spl(lp))
THEN
326 llmh = nint(lmh(i,j))
330 IF(spl(lp) < pint(i,j,2))
THEN
331 IF(t(i,j,1) < spval) tsl(i,j) = t(i,j,1)
332 IF(q(i,j,1) < spval) qsl(i,j) = q(i,j,1)
334 IF(gridtype ==
'A')
THEN
335 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
336 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
342 IF(wh(i,j,1) < spval) wsl(i,j) = wh(i,j,1)
343 IF(omga(i,j,1) < spval) osl(i,j) = omga(i,j,1)
344 IF(q2(i,j,1) < spval) q2sl(i,j) = q2(i,j,1)
345 IF(cwm(i,j,1) < spval) c1d(i,j) = cwm(i,j,1)
346 c1d(i,j) = max(c1d(i,j),zero)
347 IF(qqw(i,j,1) < spval) qw1(i,j) = qqw(i,j,1)
348 qw1(i,j) = max(qw1(i,j),zero)
349 IF(qqi(i,j,1) < spval) qi1(i,j) = qqi(i,j,1)
350 qi1(i,j) = max(qi1(i,j),zero)
351 IF(qqr(i,j,1) < spval) qr1(i,j) = qqr(i,j,1)
352 qr1(i,j) = max(qr1(i,j),zero)
353 IF(qqs(i,j,1) < spval) qs1(i,j) = qqs(i,j,1)
354 qs1(i,j) = max(qs1(i,j),zero)
355 IF(qqg(i,j,1) < spval) qg1(i,j) = qqg(i,j,1)
356 qg1(i,j) = max(qg1(i,j),zero)
357 IF(dbz(i,j,1) < spval) dbz1(i,j) = dbz(i,j,1)
358 dbz1(i,j) = max(dbz1(i,j),dbzmin)
359 IF(f_rimef(i,j,1) < spval) frime(i,j) = f_rimef(i,j,1)
360 frime(i,j) = max(frime(i,j),h1)
361 IF(ttnd(i,j,1) < spval) rad(i,j) = ttnd(i,j,1)
362 IF(o3(i,j,1) < spval) o3sl(i,j) = o3(i,j,1)
363 IF(cfr(i,j,1) < spval) cfrsl(i,j) = cfr(i,j,1)
365 IF(icing_gfip(i,j,1) < spval) icingfsl(i,j) = icing_gfip(i,j,1)
366 IF(icing_gfis(i,j,1) < spval) icingvsl(i,j) = icing_gfis(i,j,1)
368 IF(gtg(i,j,1) < spval) gtgsl(i,j) = gtg(i,j,1)
369 IF(cat(i,j,1) < spval) catsl(i,j) = cat(i,j,1)
370 IF(mwt(i,j,1) < spval) mwtsl(i,j) = mwt(i,j,1)
372 IF(smoke(i,j,1,k) < spval) smokesl(i,j,k)=smoke(i,j,1,k)
373 IF(fv3dust(i,j,1,k) < spval) fv3dustsl(i,j,k)=fv3dust(i,j,1,k)
374 IF(coarsepm(i,j,1,k) < spval) coarsepmsl(i,j,k)=coarsepm(i,j,1,k)
380 IF((iget(354) > 0) .OR. (iget(355) > 0) .OR. &
381 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
382 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
383 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
384 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
385 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
386 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
387 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
388 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
389 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
390 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
391 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
392 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
393 (iget(395) > 0) .OR. (iget(379) > 0))
THEN
394 d3dsl(i,j,1) = rlwtt(i,j,1)
395 d3dsl(i,j,2) = rswtt(i,j,1)
396 d3dsl(i,j,3) = vdifftt(i,j,1)
397 d3dsl(i,j,4) = tcucn(i,j,1)
398 d3dsl(i,j,5) = tcucns(i,j,1)
399 d3dsl(i,j,6) = train(i,j,1)
400 d3dsl(i,j,7) = vdiffmois(i,j,1)
401 d3dsl(i,j,8) = dconvmois(i,j,1)
402 d3dsl(i,j,9) = sconvmois(i,j,1)
403 d3dsl(i,j,10) = nradtt(i,j,1)
404 d3dsl(i,j,11) = o3vdiff(i,j,1)
405 d3dsl(i,j,12) = o3prod(i,j,1)
406 d3dsl(i,j,13) = o3tndy(i,j,1)
407 d3dsl(i,j,14) = mwpv(i,j,1)
408 d3dsl(i,j,15) = unknown(i,j,1)
409 d3dsl(i,j,16) = vdiffzacce(i,j,1)
410 d3dsl(i,j,17) = zgdrag(i,j,1)
411 d3dsl(i,j,18) = cnvctummixing(i,j,1)
412 d3dsl(i,j,19) = vdiffmacce(i,j,1)
413 d3dsl(i,j,20) = mgdrag(i,j,1)
414 d3dsl(i,j,21) = cnvctvmmixing(i,j,1)
415 d3dsl(i,j,22) = ncnvctcfrac(i,j,1)
416 d3dsl(i,j,23) = cnvctumflx(i,j,1)
417 d3dsl(i,j,24) = cnvctdmflx(i,j,1)
418 d3dsl(i,j,25) = cnvctdetmflx(i,j,1)
419 d3dsl(i,j,26) = cnvctzgdrag(i,j,1)
420 d3dsl(i,j,27) = cnvctmgdrag(i,j,1)
424 ELSE IF(ll <= llmh)
THEN
434 IF (modelname ==
'RAPR' .OR. modelname ==
'NCAR' .OR. modelname ==
'NMM')
THEN
435 fact = (alsl(lp)-log(pmid(i,j,ll)))/ &
436 max(1.e-6,(log(pmid(i,j,ll))-log(pmid(i,j,ll-1))))
437 fact = max(-10.0,min(fact, 10.0))
438 ELSEIF (modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
439 fact = (alsl(lp)-log(pmid(i,j,ll)))/ &
440 max(1.e-6,(log(pmid(i,j,ll))-log(pmid(i,j,ll-1))))
441 fact = max(-10.0,min(fact, 10.0))
442 IF ( abs(pmid(i,j,ll)-pmid(i,j,ll-1)) < 0.5 )
THEN
446 fact = (alsl(lp)-log(pmid(i,j,ll)))/ &
447 (log(pmid(i,j,ll))-log(pmid(i,j,ll-1)))
449 IF(t(i,j,ll) < spval .AND. t(i,j,ll-1) < spval) &
450 tsl(i,j) = t(i,j,ll)+(t(i,j,ll)-t(i,j,ll-1))*fact
451 IF(q(i,j,ll) < spval .AND. q(i,j,ll-1) < spval) &
452 qsl(i,j) = q(i,j,ll)+(q(i,j,ll)-q(i,j,ll-1))*fact
454 IF(gridtype==
'A')
THEN
455 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval) &
456 usl(i,j) = uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
457 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval) &
458 vsl(i,j) = vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
461 IF(wh(i,j,ll) < spval .AND. wh(i,j,ll-1) < spval) &
462 wsl(i,j) = wh(i,j,ll)+(wh(i,j,ll)-wh(i,j,ll-1))*fact
463 IF(omga(i,j,ll) < spval .AND. omga(i,j,ll-1) < spval) &
464 osl(i,j) = omga(i,j,ll)+(omga(i,j,ll)-omga(i,j,ll-1))*fact
465 IF(q2(i,j,ll) < spval .AND. q2(i,j,ll-1) < spval) &
466 q2sl(i,j) = q2(i,j,ll)+(q2(i,j,ll)-q2(i,j,ll-1))*fact
472 if (modelname ==
'GFS')
then
473 es = min(fpvsnew(tsl(i,j)), spl(lp))
474 qsat = con_eps*es/(spl(lp)+con_epsm1*es)
476 qsat = pq0/spl(lp)*exp(a2*(tsl(i,j)-a3)/(tsl(i,j)-a4))
479 rhl = max(rhmin, min(1.0, qsl(i,j)/qsat))
486 IF(q2sl(i,j) < 0.0) q2sl(i,j) = 0.0
489 IF(cwm(i,j,ll) < spval .AND. cwm(i,j,ll-1) < spval) &
490 c1d(i,j) = cwm(i,j,ll) + (cwm(i,j,ll)-cwm(i,j,ll-1))*fact
491 c1d(i,j) = max(c1d(i,j),zero)
493 IF(qqw(i,j,ll) < spval .AND. qqw(i,j,ll-1) < spval) &
494 qw1(i,j) = qqw(i,j,ll) + (qqw(i,j,ll)-qqw(i,j,ll-1))*fact
495 qw1(i,j) = max(qw1(i,j),zero)
497 IF(qqi(i,j,ll) < spval .AND. qqi(i,j,ll-1) < spval) &
498 qi1(i,j) = qqi(i,j,ll) + (qqi(i,j,ll)-qqi(i,j,ll-1))*fact
499 qi1(i,j) = max(qi1(i,j),zero)
501 IF(qqr(i,j,ll) < spval .AND. qqr(i,j,ll-1) < spval) &
502 qr1(i,j) = qqr(i,j,ll) + (qqr(i,j,ll)-qqr(i,j,ll-1))*fact
503 qr1(i,j) = max(qr1(i,j),zero)
505 IF(qqs(i,j,ll) < spval .AND. qqs(i,j,ll-1) < spval) &
506 qs1(i,j) = qqs(i,j,ll) + (qqs(i,j,ll)-qqs(i,j,ll-1))*fact
507 qs1(i,j) = max(qs1(i,j),zero)
509 IF(qqg(i,j,ll) < spval .AND. qqg(i,j,ll-1) < spval) &
510 qg1(i,j) = qqg(i,j,ll) + (qqg(i,j,ll)-qqg(i,j,ll-1))*fact
511 qg1(i,j) = max(qg1(i,j),zero)
513 IF(dbz(i,j,ll) < spval .AND. dbz(i,j,ll-1) < spval) &
514 dbz1(i,j) = dbz(i,j,ll) + (dbz(i,j,ll)-dbz(i,j,ll-1))*fact
515 dbz1(i,j) = max(dbz1(i,j),dbzmin)
517 IF(f_rimef(i,j,ll) < spval .AND. f_rimef(i,j,ll-1) < spval) &
518 frime(i,j) = f_rimef(i,j,ll) + (f_rimef(i,j,ll) - f_rimef(i,j,ll-1))*fact
519 frime(i,j)=max(frime(i,j),h1)
521 IF(ttnd(i,j,ll) < spval .AND. ttnd(i,j,ll-1) < spval) &
522 rad(i,j) = ttnd(i,j,ll) + (ttnd(i,j,ll)-ttnd(i,j,ll-1))*fact
524 IF(o3(i,j,ll) < spval .AND. o3(i,j,ll-1) < spval) &
525 o3sl(i,j) = o3(i,j,ll) + (o3(i,j,ll)-o3(i,j,ll-1))*fact
527 IF(cfr(i,j,ll) < spval .AND. cfr(i,j,ll-1) < spval) &
528 cfrsl(i,j) = cfr(i,j,ll) + (cfr(i,j,ll)-cfr(i,j,ll-1))*fact
530 IF(icing_gfip(i,j,ll) < spval .AND. icing_gfip(i,j,ll-1) < spval) &
531 icingfsl(i,j) = icing_gfip(i,j,ll) + (icing_gfip(i,j,ll)-icing_gfip(i,j,ll-1))*fact
532 icingfsl(i,j) = max(0.0, icingfsl(i,j))
533 icingfsl(i,j) = min(1.0, icingfsl(i,j))
534 IF(icing_gfis(i,j,ll) < spval .AND. icing_gfis(i,j,ll-1) < spval) &
535 icingvsl(i,j) = icing_gfis(i,j,ll) + (icing_gfis(i,j,ll)-icing_gfis(i,j,ll-1))*fact
543 if (icingvsl(i,j) < 0.08)
then
545 elseif (icingvsl(i,j) <= 0.21)
then
547 else if(icingvsl(i,j) <= 0.37)
then
549 else if(icingvsl(i,j) <= 0.67)
then
554 if(icingfsl(i,j)< 0.001) icingvsl(i,j) = 0.
556 IF(gtg(i,j,ll) < spval .AND. gtg(i,j,ll-1) < spval)
THEN
557 gtgsl(i,j) = gtg(i,j,ll) + (gtg(i,j,ll)-gtg(i,j,ll-1))*fact
558 gtgsl(i,j) = max(0.0, gtgsl(i,j))
559 gtgsl(i,j) = min(1.0, gtgsl(i,j))
561 IF(cat(i,j,ll) < spval .AND. cat(i,j,ll-1) < spval)
THEN
562 catsl(i,j) = cat(i,j,ll) + (cat(i,j,ll)-cat(i,j,ll-1))*fact
563 catsl(i,j) = max(0.0, catsl(i,j))
564 catsl(i,j) = min(1.0, catsl(i,j))
566 IF(mwt(i,j,ll) < spval .AND. mwt(i,j,ll-1) < spval)
THEN
567 mwtsl(i,j) = mwt(i,j,ll) + (mwt(i,j,ll)-mwt(i,j,ll-1))*fact
568 mwtsl(i,j) = max(0.0, mwtsl(i,j))
569 mwtsl(i,j) = min(1.0, mwtsl(i,j))
572 IF(smoke(i,j,ll,k) < spval .AND. smoke(i,j,ll-1,k) < spval) &
573 smokesl(i,j,k)=smoke(i,j,ll,k)+(smoke(i,j,ll,k)-smoke(i,j,ll-1,k))*fact
574 IF(fv3dust(i,j,ll,k) < spval .AND. fv3dust(i,j,ll-1,k) < spval) &
575 fv3dustsl(i,j,k)=fv3dust(i,j,ll,k)+(fv3dust(i,j,ll,k)-fv3dust(i,j,ll-1,k))*fact
576 IF(coarsepm(i,j,ll,k) < spval .AND. coarsepm(i,j,ll-1,k) < spval) &
577 coarsepmsl(i,j,k)=coarsepm(i,j,ll,k)+(coarsepm(i,j,ll,k)-coarsepm(i,j,ll-1,k))*fact
583 IF((iget(354) > 0) .OR. (iget(355) > 0) .OR. &
584 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
585 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
586 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
587 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
588 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
589 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
590 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
591 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
592 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
593 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
594 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
595 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
596 (iget(395) > 0) .OR. (iget(379) > 0))
THEN
597 d3dsl(i,j,1) = rlwtt(i,j,ll)+(rlwtt(i,j,ll) &
598 - rlwtt(i,j,ll-1))*fact
599 d3dsl(i,j,2) = rswtt(i,j,ll)+(rswtt(i,j,ll) &
600 - rswtt(i,j,ll-1))*fact
601 d3dsl(i,j,3) = vdifftt(i,j,ll)+(vdifftt(i,j,ll) &
602 - vdifftt(i,j,ll-1))*fact
603 d3dsl(i,j,4) = tcucn(i,j,ll)+(tcucn(i,j,ll) &
604 - tcucn(i,j,ll-1))*fact
605 d3dsl(i,j,5) = tcucns(i,j,ll)+(tcucns(i,j,ll) &
606 - tcucns(i,j,ll-1))*fact
607 d3dsl(i,j,6) = train(i,j,ll)+(train(i,j,ll) &
608 - train(i,j,ll-1))*fact
609 d3dsl(i,j,7) = vdiffmois(i,j,ll)+ &
610 (vdiffmois(i,j,ll)-vdiffmois(i,j,ll-1))*fact
611 d3dsl(i,j,8) = dconvmois(i,j,ll)+ &
612 (dconvmois(i,j,ll)-dconvmois(i,j,ll-1))*fact
613 d3dsl(i,j,9) = sconvmois(i,j,ll)+ &
614 (sconvmois(i,j,ll)-sconvmois(i,j,ll-1))*fact
615 d3dsl(i,j,10) = nradtt(i,j,ll)+ &
616 (nradtt(i,j,ll)-nradtt(i,j,ll-1))*fact
617 d3dsl(i,j,11) = o3vdiff(i,j,ll)+ &
618 (o3vdiff(i,j,ll)-o3vdiff(i,j,ll-1))*fact
619 d3dsl(i,j,12) = o3prod(i,j,ll)+ &
620 (o3prod(i,j,ll)-o3prod(i,j,ll-1))*fact
621 d3dsl(i,j,13) = o3tndy(i,j,ll)+ &
622 (o3tndy(i,j,ll)-o3tndy(i,j,ll-1))*fact
623 d3dsl(i,j,14) = mwpv(i,j,ll)+ &
624 (mwpv(i,j,ll)-mwpv(i,j,ll-1))*fact
625 d3dsl(i,j,15) = unknown(i,j,ll)+ &
626 (unknown(i,j,ll)-unknown(i,j,ll-1))*fact
627 d3dsl(i,j,16) = vdiffzacce(i,j,ll)+ &
628 (vdiffzacce(i,j,ll)-vdiffzacce(i,j,ll-1))*fact
629 d3dsl(i,j,17) = zgdrag(i,j,ll)+ &
630 (zgdrag(i,j,ll)-zgdrag(i,j,ll-1))*fact
631 d3dsl(i,j,18) = cnvctummixing(i,j,ll)+ &
632 (cnvctummixing(i,j,ll)-cnvctummixing(i,j,ll-1))*fact
633 d3dsl(i,j,19) = vdiffmacce(i,j,ll)+ &
634 (vdiffmacce(i,j,ll)-vdiffmacce(i,j,ll-1))*fact
635 d3dsl(i,j,20) = mgdrag(i,j,ll)+ &
636 (mgdrag(i,j,ll)-mgdrag(i,j,ll-1))*fact
637 d3dsl(i,j,21) = cnvctvmmixing(i,j,ll)+ &
638 (cnvctvmmixing(i,j,ll)-cnvctvmmixing(i,j,ll-1))*fact
639 d3dsl(i,j,22) = ncnvctcfrac(i,j,ll)+ &
640 (ncnvctcfrac(i,j,ll)-ncnvctcfrac(i,j,ll-1))*fact
641 d3dsl(i,j,23) = cnvctumflx(i,j,ll)+ &
642 (cnvctumflx(i,j,ll)-cnvctumflx(i,j,ll-1))*fact
643 d3dsl(i,j,24) = cnvctdmflx(i,j,ll)+ &
644 (cnvctdmflx(i,j,ll)-cnvctdmflx(i,j,ll-1))*fact
645 d3dsl(i,j,25) = cnvctdetmflx(i,j,ll)+ &
646 (cnvctdetmflx(i,j,ll)-cnvctdetmflx(i,j,ll-1))*fact
647 d3dsl(i,j,26) = cnvctzgdrag(i,j,ll)+ &
648 (cnvctzgdrag(i,j,ll)-cnvctzgdrag(i,j,ll-1))*fact
649 d3dsl(i,j,27) = cnvctmgdrag(i,j,ll)+ &
650 (cnvctmgdrag(i,j,ll)-cnvctmgdrag(i,j,ll-1))*fact
659 IF(modelname ==
'GFS')
THEN
660 tvu = t(i,j,lm) * (1.+con_fvirt*q(i,j,lm))
661 if(zmid(i,j,lm) > zshul)
then
662 tvd = tvu + gamma*zmid(i,j,lm)
663 if(tvd > tvshul)
then
664 if(tvu > tvshul)
then
665 tvd = tvshul - 5.e-3*(tvu-tvshul)*(tvu-tvshul)
670 gammas = (tvu-tvd)/zmid(i,j,lm)
674 part = con_rog*(alsl(lp)-log(pmid(i,j,lm)))
675 fsl(i,j) = zmid(i,j,lm) - tvu*part/(1.+0.5*gammas*part)
677 tsl(i,j) = t(i,j,lm) - gamma*(fsl(i,j)-zmid(i,j,lm))
678 fsl(i,j) = fsl(i,j)*g
682 es = min(fpvsnew(t(i,j,lm)), pmid(i,j,lm))
683 qsat = con_eps*es/(pmid(i,j,lm)+con_epsm1*es)
686 es = min(fpvsnew(tsl(i,j)), spl(lp))
687 qsat = con_eps*es/(spl(lp)+con_epsm1*es)
694 tl = 0.5*(t(i,j,lm-2)+t(i,j,lm-1))
695 ql = 0.5*(q(i,j,lm-2)+q(i,j,lm-1))
705 qsat = pq0/pl*exp(a2*(tl-a3)/(tl-a4))
718 tvrl = tl*(1.+0.608*ql)
719 tvrblo = tvrl*(spl(lp)/pl)**rgamog
720 tblo = tvrblo/(1.+0.608*ql)
731 qsat = pq0/spl(lp)*exp(a2*(tblo-a3)/(tblo-a4))
734 qsl(i,j) = max(1.e-12,qblo)
740 IF(gridtype ==
'A')
THEN
741 usl(i,j) = uh(i,j,llmh)
742 vsl(i,j) = vh(i,j,llmh)
746 wsl(i,j) = wh(i,j,llmh)
747 osl(i,j) = omga(i,j,llmh)
748 q2sl(i,j) = max(0.0,0.5*(q2(i,j,llmh-1)+q2(i,j,llmh)))
786 o3sl(i,j) = o3(i,j,llmh)
787 IF(cfr(i,j,1)<spval)cfrsl(i,j) = 0.
792 IF(modelname ==
'GFS')
then
794 IF(spl(lp) < pmid(i,j,1))
THEN
795 tvd = t(i,j,1)*(1+con_fvirt*q(i,j,1))
796 fsl(i,j) = zmid(i,j,1)-con_rog*tvd *(alsl(lp)-log(pmid(i,j,1)))
797 fsl(i,j) = fsl(i,j)*g
798 ELSE IF(l <= llmh)
THEN
799 tvd = t(i,j,l)*(1+con_fvirt*q(i,j,l))
800 tvu = tsl(i,j)*(1+con_fvirt*qsl(i,j))
801 fsl(i,j) = zmid(i,j,l)-con_rog*0.5*(tvd+tvu) &
802 * (alsl(lp)-log(pmid(i,j,l)))
803 fsl(i,j) = fsl(i,j)*g
807 IF(nl1xf(i,j)<=(llmh+1))
THEN
808 fact = (alsl(lp)-log(pint(i,j,la)))/ &
809 (log(pint(i,j,la))-log(pint(i,j,la-1)))
810 IF(zint(i,j,la) < spval .AND. zint(i,j,la-1) < spval) &
811 fsl(i,j) = zint(i,j,la)+(zint(i,j,la)-zint(i,j,la-1))*fact
812 fsl(i,j) = fsl(i,j)*g
814 fsl(i,j) = fprs(i,j,lp-1)-rd*(tprs(i,j,lp-1) &
815 * (h1+d608*qprs(i,j,lp-1)) &
816 + tsl(i,j)*(h1+d608*qsl(i,j))) &
817 * log(spl(lp)/spl(lp-1))/2.0
830 tprs(i,j,lp) = tsl(i,j)
831 qprs(i,j,lp) = qsl(i,j)
832 fprs(i,j,lp) = fsl(i,j)
838 IF(gridtype ==
'E')
THEN
841 DO i=ista_m,iend-mod(j,2)
877 IF(nl1x(i,j) == lp1.AND.pmidv(i,j,l) > spl(lp))
THEN
890 IF(nl1x(i,j) == lp1)
THEN
891 IF(j == jsta .AND. i < iend)
THEN
892 pdv = 0.5*(pint(i,j,lp1)+pint(i+1,j,lp1))
893 ELSE IF(j == jend .AND. i < iend)
THEN
894 pdv = 0.5*(pint(i,j,lp1)+pint(i+1,j,lp1))
895 ELSE IF(i == ista .AND. mod(j,2) == 0)
THEN
896 pdv = 0.5*(pint(i,j-1,lp1)+pint(i,j+1,lp1))
897 ELSE IF(i == iend .AND. mod(j,2) == 0)
THEN
898 pdv = 0.5*(pint(i,j-1,lp1)+pint(i,j+1,lp1))
899 ELSE IF (mod(j,2) < 1)
THEN
900 pdv = 0.25*(pint(i,j,lp1)+pint(i-1,j,lp1) &
901 + pint(i,j+1,lp1)+pint(i,j-1,lp1))
903 pdv = 0.25*(pint(i,j,lp1)+pint(i+1,j,lp1) &
904 + pint(i,j+1,lp1)+pint(i,j-1,lp1))
906 IF(pdv > spl(lp))
THEN
916 DO i=ista,iend-mod(j,2)
923 llmh = nint(lmh(i,j))
925 IF(spl(lp) < pint(i,j,2))
THEN
926 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
927 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
929 ELSE IF(nl1x(i,j)<=llmh)
THEN
939 fact = (alsl(lp)-log(pmidv(i,j,ll)))/ &
940 (log(pmidv(i,j,ll))-log(pmidv(i,j,ll-1)))
941 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval) &
942 usl(i,j) = uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
943 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval) &
944 vsl(i,j) = vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
953 IF(uh(i,j,llmh) < spval) usl(i,j) = uh(i,j,llmh)
954 IF(vh(i,j,llmh) < spval) vsl(i,j) = vh(i,j,llmh)
961 IF(mod(jsta,2) == 0) jjb = jsta+1
963 IF(mod(jend,2) == 0) jje = jend-1
965 usl(iend,j) = usl(iend-1,j)
966 vsl(iend,j) = vsl(iend-1,j)
968 ELSE IF(gridtype==
'B')
THEN
977 IF(nl1x(i,j) == lp1.AND.pmidv(i,j,l) > spl(lp))
THEN
989 IF(nl1x(i,j)==lp1)
THEN
990 pdv = 0.25*(pint(i,j,lp1)+pint(i+1,j,lp1) &
991 + pint(i,j+1,lp1)+pint(i+1,j+1,lp1))
992 IF(pdv > spl(lp))
THEN
1009 llmh = nint(lmh(i,j))
1011 IF(spl(lp) < pint(i,j,2))
THEN
1012 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
1013 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
1015 ELSE IF(nl1x(i,j)<=llmh)
THEN
1025 fact = (alsl(lp)-log(pmidv(i,j,ll)))/ &
1026 (log(pmidv(i,j,ll))-log(pmidv(i,j,ll-1)))
1027 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval) &
1028 usl(i,j)=uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
1029 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval) &
1030 vsl(i,j)=vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
1039 IF(uh(i,j,llmh) < spval)usl(i,j)=uh(i,j,llmh)
1040 IF(vh(i,j,llmh) < spval)vsl(i,j)=vh(i,j,llmh)
1056 IF(nint(spl(lp)) == 50000)
THEN
1060 t500(i,j) = tsl(i,j)
1061 z500(i,j) = fsl(i,j)*gi
1069 IF(nint(spl(lp)) == 70000)
THEN
1073 t700(i,j) = tsl(i,j)
1074 z700(i,j) = fsl(i,j)*gi
1137 IF(iget(012) > 0)
THEN
1138 IF(lvls(lp,iget(012)) > 0)
THEN
1139 IF((iget(023) > 0 .OR. iget(445) > 0) .AND. nint(spl(lp)) == 100000)
THEN
1145 IF(fsl(i,j) < spval)
THEN
1146 grid1(i,j) = fsl(i,j)*gi
1155 if(maptype == 6)
then
1156 if(grib==
'grib2')
then
1157 dxm = (dxval / 360.)*(erad*2.*pi)/1.d6
1162 if(grib ==
'grib2')
then
1166 nsmooth = nint(5.*(13500./dxm))
1167 call allgetherv(grid1)
1169 CALL smooth(grid1,sdummy,im,jm,0.5)
1172 if(grib ==
'grib2')
then
1174 fld_info(cfld)%ifld=iavblfld(iget(012))
1175 fld_info(cfld)%lvl=lvlsxml(lp,iget(012))
1181 datapd(i,j,cfld) = grid1(ii,jj)
1192 IF(iget(013) > 0)
THEN
1193 IF(lvls(lp,iget(013)) > 0)
THEN
1197 grid1(i,j) = tsl(i,j)
1202 nsmooth = nint(3.*(13500./dxm))
1203 call allgetherv(grid1)
1205 CALL smooth(grid1,sdummy,im,jm,0.5)
1209 if(grib ==
'grib2')
then
1211 fld_info(cfld)%ifld = iavblfld(iget(013))
1212 fld_info(cfld)%lvl = lvlsxml(lp,iget(013))
1218 datapd(i,j,cfld) = grid1(ii,jj)
1227 IF(iget(910)>0)
THEN
1228 IF(lvls(lp,iget(910))>0)
THEN
1232 IF(tsl(i,j) < spval .AND. qsl(i,j) < spval)
THEN
1233 grid1(i,j) = tsl(i,j)*(1.+0.608*qsl(i,j))
1241 nsmooth = nint(3.*(13500./dxm))
1242 call allgetherv(grid1)
1244 CALL smooth(grid1,sdummy,im,jm,0.5)
1248 if(grib==
'grib2')
then
1250 fld_info(cfld)%ifld = iavblfld(iget(910))
1251 fld_info(cfld)%lvl = lvlsxml(lp,iget(910))
1257 datapd(i,j,cfld) = grid1(ii,jj)
1267 IF(iget(014) > 0)
THEN
1268 IF(lvls(lp,iget(014)) > 0)
THEN
1270 tem = (p1000/spl(lp)) ** capa
1274 IF(tsl(i,j) < spval)
THEN
1275 grid1(i,j) = tsl(i,j) * tem
1296 if(grib ==
'grib2')
then
1298 fld_info(cfld)%ifld=iavblfld(iget(014))
1299 fld_info(cfld)%lvl=lvlsxml(lp,iget(014))
1305 datapd(i,j,cfld) = grid1(ii,jj)
1315 IF(iget(017) > 0 .OR. iget(257) > 0 .OR. iget(1006) > 0)
THEN
1319 IF(iget(017) > 0.)
then
1320 if(lvls(lp,iget(017)) > 0 ) log1=.true.
1322 IF(iget(257) > 0)
then
1323 if(lvls(lp,iget(257)) > 0 ) log1=.true.
1329 egrid2(i,j) = spl(lp)
1333 CALL calrh(egrid2(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),egrid1(ista:iend,jsta:jend))
1338 IF(egrid1(i,j) < spval)
THEN
1339 grid1(i,j) = egrid1(i,j)*100.
1341 grid1(i,j) = egrid1(i,j)
1347 nsmooth=nint(2.*(13500./dxm))
1348 call allgetherv(grid1)
1350 CALL smooth(grid1,sdummy,im,jm,0.5)
1355 if(grib ==
'grib2')
then
1357 fld_info(cfld)%ifld=iavblfld(iget(017))
1358 fld_info(cfld)%lvl=lvlsxml(lp,iget(017))
1364 datapd(i,j,cfld) = grid1(ii,jj)
1372 savrh(i,j) = grid1(i,j)
1380 rhprs(i,j,lp) = grid1(i,j)
1387 IF(iget(331) > 0)
THEN
1388 IF(lvls(lp,iget(331)) > 0)
THEN
1393 IF(abs(cfrsl(i,j)-spval) > small)
THEN
1394 cfrsl(i,j) = min(max(0.0,cfrsl(i,j)),1.0)
1395 grid1(i,j) = cfrsl(i,j)*h100
1399 if(grib ==
'grib2')
then
1401 fld_info(cfld)%ifld = iavblfld(iget(331))
1402 fld_info(cfld)%lvl = lvlsxml(lp,iget(331))
1408 datapd(i,j,cfld) = grid1(ii,jj)
1417 IF(iget(015) > 0)
THEN
1418 IF(lvls(lp,iget(015)) > 0)
THEN
1422 egrid2(i,j) = spl(lp)
1426 CALL caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),egrid1(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend))
1430 IF(tsl(i,j) < spval)
THEN
1431 grid1(i,j) = egrid1(i,j)
1437 if(grib ==
'grib2')
then
1439 fld_info(cfld)%ifld=iavblfld(iget(015))
1440 fld_info(cfld)%lvl=lvlsxml(lp,iget(015))
1446 datapd(i,j,cfld) = grid1(ii,jj)
1455 IF(iget(016) > 0)
THEN
1456 IF(lvls(lp,iget(016)) > 0)
THEN
1460 grid1(i,j) = qsl(i,j)
1463 CALL bound(grid1,zero,h99999)
1464 if(grib ==
'grib2')
then
1466 fld_info(cfld)%ifld=iavblfld(iget(016))
1467 fld_info(cfld)%lvl=lvlsxml(lp,iget(016))
1473 datapd(i,j,cfld) = grid1(ii,jj)
1482 IF(iget(020) > 0)
THEN
1483 IF(lvls(lp,iget(020)) > 0)
THEN
1487 grid1(i,j) = osl(i,j)
1491 IF (smflag .or. ioform ==
'binarympiio' )
THEN
1492 call allgetherv(grid1)
1493 if (ioform ==
'binarympiio')
then
1496 CALL smoothc(grid1,sdummy,im,jm,0.5)
1497 CALL smoothc(grid1,sdummy,im,jm,-0.5)
1500 nsmooth = nint(3.*(13500./dxm))
1503 CALL smooth(grid1,sdummy,im,jm,0.5)
1508 if(grib ==
'grib2')
then
1510 fld_info(cfld)%ifld=iavblfld(iget(020))
1511 fld_info(cfld)%lvl=lvlsxml(lp,iget(020))
1517 datapd(i,j,cfld) = grid1(ii,jj)
1526 IF(iget(284) > 0)
THEN
1527 IF(lvls(lp,iget(284)) > 0)
THEN
1531 grid1(i,j) = wsl(i,j)
1534 if(grib ==
'grib2')
then
1536 fld_info(cfld)%ifld=iavblfld(iget(284))
1537 fld_info(cfld)%lvl=lvlsxml(lp,iget(284))
1543 datapd(i,j,cfld) = grid1(ii,jj)
1552 IF(iget(085) > 0)
THEN
1553 IF(lvls(lp,iget(085)) > 0)
THEN
1554 CALL calmcvg(qsl(ista_2l,jsta_2l),usl(ista_2l,jsta_2l),vsl(ista_2l,jsta_2l),egrid1(ista_2l,jsta_2l))
1559 grid1(i,j) = egrid1(i,j)
1567 if(grib ==
'grib2')
then
1569 fld_info(cfld)%ifld=iavblfld(iget(085))
1570 fld_info(cfld)%lvl=lvlsxml(lp,iget(085))
1576 datapd(i,j,cfld) = grid1(ii,jj)
1586 IF(iget(018) > 0.OR.iget(019) > 0)
THEN
1588 IF(iget(018) > 0.)
then
1589 if(lvls(lp,iget(018)) > 0 ) log1=.true.
1591 IF(iget(019) > 0)
then
1592 if(lvls(lp,iget(019)) > 0 ) log1=.true.
1598 grid1(i,j) = usl(i,j)
1599 grid2(i,j) = vsl(i,j)
1604 nsmooth=nint(5.*(13500./dxm))
1605 call allgetherv(grid1)
1607 CALL smooth(grid1,sdummy,im,jm,0.5)
1609 nsmooth=nint(5.*(13500./dxm))
1610 call allgetherv(grid2)
1612 CALL smooth(grid2,sdummy,im,jm,0.5)
1616 if(grib ==
'grib2')
then
1618 fld_info(cfld)%ifld=iavblfld(iget(018))
1619 fld_info(cfld)%lvl=lvlsxml(lp,iget(018))
1625 datapd(i,j,cfld) = grid1(ii,jj)
1630 fld_info(cfld)%ifld=iavblfld(iget(019))
1631 fld_info(cfld)%lvl=lvlsxml(lp,iget(019))
1637 datapd(i,j,cfld) = grid2(ii,jj)
1646 IF (iget(021) > 0)
THEN
1647 IF (lvls(lp,iget(021)) > 0)
THEN
1648 CALL calvor(usl,vsl,egrid1)
1653 grid1(i,j) = egrid1(i,j)
1657 IF (smflag .or. ioform ==
'binarympiio' )
THEN
1658 call allgetherv(grid1)
1659 if (ioform ==
'binarympiio')
then
1662 CALL smoothc(grid1,sdummy,im,jm,0.5)
1663 CALL smoothc(grid1,sdummy,im,jm,-0.5)
1666 nsmooth = nint(4.*(13500./dxm))
1669 CALL smooth(grid1,sdummy,im,jm,0.5)
1674 if(grib ==
'grib2')
then
1676 fld_info(cfld)%ifld=iavblfld(iget(021))
1677 fld_info(cfld)%lvl=lvlsxml(lp,iget(021))
1683 datapd(i,j,cfld) = grid1(ii,jj)
1691 IF (iget(086) > 0)
THEN
1692 IF (lvls(lp,iget(086)) > 0)
THEN
1696 IF(fsl(i,j)<spval)
THEN
1697 egrid2(i,j) = fsl(i,j)*gi
1701 CALL calstrm(egrid2(ista:iend,jsta:jend),egrid1(ista:iend,jsta:jend))
1705 IF(fsl(i,j) < spval)
THEN
1706 grid1(i,j) = egrid1(i,j)
1712 if(grib ==
'grib2')
then
1714 fld_info(cfld)%ifld=iavblfld(iget(086))
1715 fld_info(cfld)%lvl=lvlsxml(lp,iget(086))
1721 datapd(i,j,cfld) = grid1(ii,jj)
1730 IF (iget(022) > 0)
THEN
1731 IF (lvls(lp,iget(022)) > 0)
THEN
1735 grid1(i,j) = q2sl(i,j)
1738 if(grib ==
'grib2')
then
1740 fld_info(cfld)%ifld=iavblfld(iget(022))
1741 fld_info(cfld)%lvl=lvlsxml(lp,iget(022))
1747 datapd(i,j,cfld) = grid1(ii,jj)
1756 IF (iget(153) > 0)
THEN
1757 IF (lvls(lp,iget(153)) > 0)
THEN
1758 IF(imp_physics==99 .or. imp_physics==98)
then
1763 IF(qw1(i,j) < spval .AND. qi1(i,j) < spval)
THEN
1764 grid1(i,j) = qw1(i,j) + qi1(i,j)
1775 grid1(i,j) = qw1(i,j)
1779 if(grib ==
'grib2')
then
1781 fld_info(cfld)%ifld=iavblfld(iget(153))
1782 fld_info(cfld)%lvl=lvlsxml(lp,iget(153))
1788 datapd(i,j,cfld) = grid1(ii,jj)
1797 IF (iget(166) > 0)
THEN
1798 IF (lvls(lp,iget(166)) > 0)
THEN
1802 grid1(i,j) = qi1(i,j)
1805 if(grib ==
'grib2')
then
1807 fld_info(cfld)%ifld=iavblfld(iget(166))
1808 fld_info(cfld)%lvl=lvlsxml(lp,iget(166))
1814 datapd(i,j,cfld) = grid1(ii,jj)
1822 IF (iget(183) > 0)
THEN
1823 IF (lvls(lp,iget(183)) > 0)
THEN
1827 grid1(i,j) = qr1(i,j)
1830 if(grib ==
'grib2')
then
1832 fld_info(cfld)%ifld=iavblfld(iget(183))
1833 fld_info(cfld)%lvl=lvlsxml(lp,iget(183))
1839 datapd(i,j,cfld) = grid1(ii,jj)
1847 IF (iget(184) > 0)
THEN
1848 IF (lvls(lp,iget(184)) > 0)
THEN
1852 grid1(i,j) = qs1(i,j)
1855 if(grib ==
'grib2')
then
1857 fld_info(cfld)%ifld=iavblfld(iget(184))
1858 fld_info(cfld)%lvl=lvlsxml(lp,iget(184))
1864 datapd(i,j,cfld) = grid1(ii,jj)
1872 IF (iget(416) > 0)
THEN
1873 IF (lvls(lp,iget(416)) > 0)
THEN
1877 grid1(i,j) = qg1(i,j)
1880 if(grib ==
'grib2')
then
1882 fld_info(cfld)%ifld=iavblfld(iget(416))
1883 fld_info(cfld)%lvl=lvlsxml(lp,iget(416))
1889 datapd(i,j,cfld) = grid1(ii,jj)
1898 IF (iget(198) > 0)
THEN
1899 IF (lvls(lp,iget(198)) > 0)
THEN
1903 grid1(i,j) = c1d(i,j)
1906 if(grib ==
'grib2')
then
1908 fld_info(cfld)%ifld=iavblfld(iget(198))
1909 fld_info(cfld)%lvl=lvlsxml(lp,iget(198))
1915 datapd(i,j,cfld) = grid1(ii,jj)
1923 IF (iget(263) > 0)
THEN
1924 IF (lvls(lp,iget(263)) > 0)
THEN
1928 grid1(i,j) = frime(i,j)
1931 if(grib ==
'grib2')
then
1933 fld_info(cfld)%ifld=iavblfld(iget(263))
1934 fld_info(cfld)%lvl=lvlsxml(lp,iget(263))
1940 datapd(i,j,cfld) = grid1(ii,jj)
1948 IF (iget(294) > 0)
THEN
1949 IF (lvls(lp,iget(294)) > 0)
THEN
1953 grid1(i,j) = rad(i,j)
1956 if(grib ==
'grib2')
then
1958 fld_info(cfld)%ifld=iavblfld(iget(294))
1959 fld_info(cfld)%lvl=lvlsxml(lp,iget(294))
1965 datapd(i,j,cfld) = grid1(ii,jj)
1973 IF (iget(251) > 0)
THEN
1974 IF (lvls(lp,iget(251)) > 0)
THEN
1978 grid1(i,j) = dbz1(i,j)
1981 if(grib ==
'grib2')
then
1983 fld_info(cfld)%ifld=iavblfld(iget(251))
1984 fld_info(cfld)%lvl=lvlsxml(lp,iget(251))
1990 datapd(i,j,cfld) = grid1(ii,jj)
1998 IF(iget(257) > 0)
THEN
1999 IF(lvls(lp,iget(257)) > 0)
THEN
2000 CALL calicing(tsl(ista:iend,jsta:jend), savrh, osl(ista:iend,jsta:jend), egrid1(ista:iend,jsta:jend))
2005 grid1(i,j) = egrid1(i,j)
2008 if(grib ==
'grib2')
then
2010 fld_info(cfld)%ifld=iavblfld(iget(257))
2011 fld_info(cfld)%lvl=lvlsxml(lp,iget(257))
2017 datapd(i,j,cfld) = grid1(ii,jj)
2028 IF(iget(258) > 0)
THEN
2029 IF(lvls(lp,iget(258)) > 0)
THEN
2033 IF(fsl(i,j)<spval)
THEN
2034 grid1(i,j) = fsl(i,j)*gi
2041 CALL calcat(usl(ista_2l,jsta_2l),vsl(ista_2l,jsta_2l),grid1(ista_2l,jsta_2l) &
2042 ,usl_old(ista_2l,jsta_2l),vsl_old(ista_2l,jsta_2l) &
2043 ,fsl_old(ista_2l,jsta_2l),egrid1(ista_2l,jsta_2l))
2047 grid1(i,j) = egrid1(i,j)
2052 if(grib ==
'grib2')
then
2054 fld_info(cfld)%ifld=iavblfld(iget(258))
2055 fld_info(cfld)%lvl=lvlsxml(lp,iget(258))
2061 datapd(i,j,cfld) = grid1(ii,jj)
2071 IF(iget(450) > 0)
THEN
2072 IF(lvls(lp,iget(450)) > 0)
THEN
2076 grid1(i,j) = icingfsl(i,j)
2079 if(grib ==
'grib2')
then
2081 fld_info(cfld)%ifld=iavblfld(iget(450))
2082 fld_info(cfld)%lvl=lvlsxml(lp,iget(450))
2088 datapd(i,j,cfld) = grid1(ii,jj)
2095 IF(iget(480) > 0)
THEN
2096 IF(lvls(lp,iget(480)) > 0)
THEN
2100 grid1(i,j) = icingvsl(i,j)
2103 if(grib ==
'grib2')
then
2105 fld_info(cfld)%ifld=iavblfld(iget(480))
2106 fld_info(cfld)%lvl=lvlsxml(lp,iget(480))
2112 datapd(i,j,cfld) = grid1(ii,jj)
2119 IF(iget(464) > 0)
THEN
2120 IF(lvls(lp,iget(464)) > 0)
THEN
2124 grid1(i,j) = gtgsl(i,j)
2127 if(grib ==
'grib2')
then
2129 fld_info(cfld)%ifld=iavblfld(iget(464))
2130 fld_info(cfld)%lvl=lvlsxml(lp,iget(464))
2136 datapd(i,j,cfld) = grid1(ii,jj)
2143 IF(iget(465) > 0)
THEN
2144 IF(lvls(lp,iget(465)) > 0)
THEN
2148 grid1(i,j) = catsl(i,j)
2151 if(grib ==
'grib2')
then
2153 fld_info(cfld)%ifld=iavblfld(iget(465))
2154 fld_info(cfld)%lvl=lvlsxml(lp,iget(465))
2160 datapd(i,j,cfld) = grid1(ii,jj)
2167 IF(iget(466) > 0)
THEN
2168 IF(lvls(lp,iget(466)) > 0)
THEN
2172 grid1(i,j) = mwtsl(i,j)
2175 if(grib ==
'grib2')
then
2177 fld_info(cfld)%ifld=iavblfld(iget(466))
2178 fld_info(cfld)%lvl=lvlsxml(lp,iget(466))
2184 datapd(i,j,cfld) = grid1(ii,jj)
2192 DO j=jsta_2l,jend_2u
2193 DO i=ista_2l,iend_2u
2194 usl_old(i,j) = usl(i,j)
2195 vsl_old(i,j) = vsl(i,j)
2196 IF(fsl(i,j)<spval)
THEN
2197 fsl_old(i,j) = fsl(i,j)*gi
2199 fsl_old(i,j) = spval
2205 IF (iget(268) > 0)
THEN
2206 IF (lvls(lp,iget(268)) > 0)
THEN
2210 grid1(i,j) = o3sl(i,j)
2215 if(grib ==
'grib2')
then
2217 fld_info(cfld)%ifld=iavblfld(iget(268))
2218 fld_info(cfld)%lvl=lvlsxml(lp,iget(268))
2224 datapd(i,j,cfld) = grid1(ii,jj)
2232 IF (iget(738) > 0)
THEN
2233 IF (lvls(lp,iget(738)) > 0)
THEN
2237 IF(smokesl(i,j,1)<spval.and.spl(lp)<spval.and.tsl(i,j)<spval)
THEN
2238 grid1(i,j) = (1./rd)*smokesl(i,j,1)*(spl(lp)/(tsl(i,j)*(1e9)))
2244 if(grib ==
'grib2')
then
2246 fld_info(cfld)%ifld=iavblfld(iget(738))
2247 fld_info(cfld)%lvl=lvlsxml(lp,iget(738))
2253 datapd(i,j,cfld) = grid1(ii,jj)
2260 IF (iget(743) > 0)
THEN
2261 IF (lvls(lp,iget(743)) > 0)
THEN
2265 IF(fv3dustsl(i,j,1)<spval.and.spl(lp)<spval.and.tsl(i,j)<spval)
THEN
2266 grid1(i,j) = (1./rd)*fv3dustsl(i,j,1)*(spl(lp)/(tsl(i,j)*(1e9)))
2272 if(grib ==
'grib2')
then
2274 fld_info(cfld)%ifld=iavblfld(iget(743))
2275 fld_info(cfld)%lvl=lvlsxml(lp,iget(743))
2281 datapd(i,j,cfld) = grid1(ii,jj)
2288 IF (iget(1013) > 0)
THEN
2289 IF (lvls(lp,iget(1013)) > 0)
THEN
2293 IF(coarsepmsl(i,j,1)<spval.and.spl(lp)<spval.and.tsl(i,j)<spval)
THEN
2294 grid1(i,j) = (1./rd)*coarsepmsl(i,j,1)*(spl(lp)/(tsl(i,j)*(1e9)))
2300 if(grib ==
'grib2')
then
2302 fld_info(cfld)%ifld=iavblfld(iget(1013))
2303 fld_info(cfld)%lvl=lvlsxml(lp,iget(1013))
2309 datapd(i,j,cfld) = grid1(ii,jj)
2316 if(iostatusd3d==0 .and. d3d_on)
then
2318 IF (iget(355) > 0)
THEN
2319 IF (lvls(lp,iget(355)) > 0)
THEN
2323 grid1(i,j) = d3dsl(i,j,1)
2328 if (itd3d /= 0)
then
2329 ifincr = mod(ifhr,itd3d)
2330 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2336 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2338 IF (ifincr == 0)
THEN
2341 id(18) = ifhr-ifincr
2342 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2344 if(grib ==
'grib2')
then
2346 fld_info(cfld)%ifld=iavblfld(iget(355))
2347 fld_info(cfld)%lvl=lvlsxml(lp,iget(355))
2349 fld_info(cfld)%ntrange=0
2351 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2353 fld_info(cfld)%tinvstat=itd3d
2359 datapd(i,j,cfld) = grid1(ii,jj)
2366 IF (iget(354) > 0)
THEN
2367 IF (lvls(lp,iget(354)) > 0)
THEN
2371 grid1(i,j) = d3dsl(i,j,2)
2376 if (itd3d /= 0)
then
2377 ifincr = mod(ifhr,itd3d)
2378 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2384 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2386 IF (ifincr == 0)
THEN
2389 id(18) = ifhr-ifincr
2390 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2392 if(grib ==
'grib2')
then
2394 fld_info(cfld)%ifld=iavblfld(iget(354))
2395 fld_info(cfld)%lvl=lvlsxml(lp,iget(354))
2397 fld_info(cfld)%ntrange=0
2399 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2401 fld_info(cfld)%tinvstat=itd3d
2407 datapd(i,j,cfld) = grid1(ii,jj)
2414 IF (iget(356) > 0)
THEN
2415 IF (lvls(lp,iget(356)) > 0)
THEN
2419 grid1(i,j) = d3dsl(i,j,3)
2424 if (itd3d /= 0)
then
2425 ifincr = mod(ifhr,itd3d)
2426 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2432 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2434 IF (ifincr == 0)
THEN
2437 id(18) = ifhr-ifincr
2438 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2440 if(grib ==
'grib2')
then
2442 fld_info(cfld)%ifld=iavblfld(iget(356))
2443 fld_info(cfld)%lvl=lvlsxml(lp,iget(356))
2445 fld_info(cfld)%ntrange=0
2447 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2449 fld_info(cfld)%tinvstat=itd3d
2455 datapd(i,j,cfld) = grid1(ii,jj)
2462 IF (iget(357) > 0)
THEN
2463 IF (lvls(lp,iget(357)) > 0)
THEN
2467 grid1(i,j) = d3dsl(i,j,4)
2472 if (itd3d /= 0)
then
2473 ifincr = mod(ifhr,itd3d)
2474 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2480 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2482 IF (ifincr == 0)
THEN
2485 id(18) = ifhr-ifincr
2486 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2488 if(grib ==
'grib2')
then
2490 fld_info(cfld)%ifld=iavblfld(iget(357))
2491 fld_info(cfld)%lvl=lvlsxml(lp,iget(357))
2493 fld_info(cfld)%ntrange=0
2495 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2497 fld_info(cfld)%tinvstat=itd3d
2503 datapd(i,j,cfld) = grid1(ii,jj)
2510 IF (iget(358) > 0)
THEN
2511 IF (lvls(lp,iget(358)) > 0)
THEN
2515 grid1(i,j) = d3dsl(i,j,5)
2520 if (itd3d /= 0)
then
2521 ifincr = mod(ifhr,itd3d)
2522 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2528 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2530 IF (ifincr == 0)
THEN
2533 id(18) = ifhr-ifincr
2534 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2536 if(grib ==
'grib2')
then
2538 fld_info(cfld)%ifld=iavblfld(iget(358))
2539 fld_info(cfld)%lvl=lvlsxml(lp,iget(358))
2541 fld_info(cfld)%ntrange=0
2543 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2545 fld_info(cfld)%tinvstat=itd3d
2551 datapd(i,j,cfld) = grid1(ii,jj)
2558 IF (iget(359) > 0)
THEN
2559 IF (lvls(lp,iget(359)) > 0)
THEN
2563 grid1(i,j) = d3dsl(i,j,6)
2568 if (itd3d /= 0)
then
2569 ifincr = mod(ifhr,itd3d)
2570 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2576 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2578 IF (ifincr == 0)
THEN
2581 id(18) = ifhr-ifincr
2582 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2584 if(grib ==
'grib2')
then
2586 fld_info(cfld)%ifld=iavblfld(iget(359))
2587 fld_info(cfld)%lvl=lvlsxml(lp,iget(359))
2589 fld_info(cfld)%ntrange=0
2591 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2593 fld_info(cfld)%tinvstat=itd3d
2599 datapd(i,j,cfld) = grid1(ii,jj)
2606 IF (iget(360) > 0)
THEN
2607 IF (lvls(lp,iget(360)) > 0)
THEN
2611 grid1(i,j) = d3dsl(i,j,7)
2616 if (itd3d /= 0)
then
2617 ifincr = mod(ifhr,itd3d)
2618 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2624 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2626 IF (ifincr == 0)
THEN
2629 id(18) = ifhr-ifincr
2630 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2632 if(grib ==
'grib2')
then
2634 fld_info(cfld)%ifld=iavblfld(iget(360))
2635 fld_info(cfld)%lvl=lvlsxml(lp,iget(360))
2637 fld_info(cfld)%ntrange=0
2639 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2641 fld_info(cfld)%tinvstat=itd3d
2647 datapd(i,j,cfld) = grid1(ii,jj)
2654 IF (iget(361) > 0)
THEN
2655 IF (lvls(lp,iget(361)) > 0)
THEN
2659 grid1(i,j) = d3dsl(i,j,8)
2664 if (itd3d /= 0)
then
2665 ifincr = mod(ifhr,itd3d)
2666 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2672 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2674 IF (ifincr == 0)
THEN
2677 id(18) = ifhr-ifincr
2678 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2680 if(grib ==
'grib2')
then
2682 fld_info(cfld)%ifld=iavblfld(iget(361))
2683 fld_info(cfld)%lvl=lvlsxml(lp,iget(361))
2685 fld_info(cfld)%ntrange=0
2687 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2689 fld_info(cfld)%tinvstat=itd3d
2695 datapd(i,j,cfld) = grid1(ii,jj)
2702 IF (iget(362) > 0)
THEN
2703 IF (lvls(lp,iget(362)) > 0)
THEN
2707 grid1(i,j) = d3dsl(i,j,9)
2712 if (itd3d /= 0)
then
2713 ifincr = mod(ifhr,itd3d)
2714 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2720 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2722 IF (ifincr == 0)
THEN
2725 id(18) = ifhr-ifincr
2726 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2728 if(grib ==
'grib2')
then
2730 fld_info(cfld)%ifld=iavblfld(iget(362))
2731 fld_info(cfld)%lvl=lvlsxml(lp,iget(362))
2733 fld_info(cfld)%ntrange=0
2735 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2737 fld_info(cfld)%tinvstat=itd3d
2743 datapd(i,j,cfld) = grid1(ii,jj)
2750 IF (iget(363) > 0)
THEN
2751 IF (lvls(lp,iget(363)) > 0)
THEN
2755 grid1(i,j) = d3dsl(i,j,10)
2760 if (itd3d /= 0)
then
2761 ifincr = mod(ifhr,itd3d)
2762 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2769 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2771 IF (ifincr == 0)
THEN
2774 id(18) = ifhr-ifincr
2775 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2777 if(grib ==
'grib2')
then
2779 fld_info(cfld)%ifld=iavblfld(iget(363))
2780 fld_info(cfld)%lvl=lvlsxml(lp,iget(363))
2782 fld_info(cfld)%ntrange=0
2784 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2786 fld_info(cfld)%tinvstat=itd3d
2792 datapd(i,j,cfld) = grid1(ii,jj)
2799 IF (iget(364) > 0)
THEN
2800 IF (lvls(lp,iget(364)) > 0)
THEN
2804 grid1(i,j) = d3dsl(i,j,11)
2809 if (itd3d /= 0)
then
2810 ifincr = mod(ifhr,itd3d)
2811 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2818 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2820 IF (ifincr == 0)
THEN
2823 id(18) = ifhr-ifincr
2824 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2826 if(grib ==
'grib2')
then
2828 fld_info(cfld)%ifld=iavblfld(iget(364))
2829 fld_info(cfld)%lvl=lvlsxml(lp,iget(364))
2831 fld_info(cfld)%ntrange=0
2833 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2835 fld_info(cfld)%tinvstat=itd3d
2841 datapd(i,j,cfld) = grid1(ii,jj)
2848 IF (iget(365) > 0)
THEN
2849 IF (lvls(lp,iget(365)) > 0)
THEN
2853 grid1(i,j) = d3dsl(i,j,12)
2858 if (itd3d /= 0)
then
2859 ifincr = mod(ifhr,itd3d)
2860 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2867 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2869 IF (ifincr == 0)
THEN
2872 id(18) = ifhr-ifincr
2873 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2875 if(grib ==
'grib2')
then
2877 fld_info(cfld)%ifld=iavblfld(iget(365))
2878 fld_info(cfld)%lvl=lvlsxml(lp,iget(365))
2880 fld_info(cfld)%ntrange=0
2882 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2884 fld_info(cfld)%tinvstat=itd3d
2890 datapd(i,j,cfld) = grid1(ii,jj)
2897 IF (iget(366) > 0)
THEN
2898 IF (lvls(lp,iget(366)) > 0)
THEN
2902 grid1(i,j) = d3dsl(i,j,13)
2907 if (itd3d /= 0)
then
2908 ifincr = mod(ifhr,itd3d)
2909 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2916 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2918 IF (ifincr == 0)
THEN
2921 id(18) = ifhr-ifincr
2922 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2924 if(grib ==
'grib2')
then
2926 fld_info(cfld)%ifld=iavblfld(iget(366))
2927 fld_info(cfld)%lvl=lvlsxml(lp,iget(366))
2929 fld_info(cfld)%ntrange=0
2931 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2933 fld_info(cfld)%tinvstat=itd3d
2939 datapd(i,j,cfld) = grid1(ii,jj)
2946 IF (iget(367) > 0)
THEN
2947 IF (lvls(lp,iget(367)) > 0)
THEN
2951 grid1(i,j) = d3dsl(i,j,14)
2956 if (itd3d /= 0)
then
2957 ifincr = mod(ifhr,itd3d)
2958 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2965 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2967 IF (ifincr == 0)
THEN
2970 id(18) = ifhr-ifincr
2971 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2973 if(grib ==
'grib2')
then
2975 fld_info(cfld)%ifld=iavblfld(iget(367))
2976 fld_info(cfld)%lvl=lvlsxml(lp,iget(367))
2978 fld_info(cfld)%ntrange=0
2980 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2982 fld_info(cfld)%tinvstat=itd3d
2988 datapd(i,j,cfld) = grid1(ii,jj)
2995 IF (iget(368) > 0)
THEN
2996 IF (lvls(lp,iget(368)) > 0)
THEN
3000 grid1(i,j) = d3dsl(i,j,15)
3005 if (itd3d /= 0)
then
3006 ifincr = mod(ifhr,itd3d)
3007 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3014 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3016 IF (ifincr == 0)
THEN
3019 id(18) = ifhr-ifincr
3020 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3022 if(grib ==
'grib2')
then
3024 fld_info(cfld)%ifld=iavblfld(iget(368))
3025 fld_info(cfld)%lvl=lvlsxml(lp,iget(368))
3027 fld_info(cfld)%ntrange=0
3029 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3031 fld_info(cfld)%tinvstat=itd3d
3037 datapd(i,j,cfld) = grid1(ii,jj)
3044 IF (iget(369) > 0)
THEN
3045 IF (lvls(lp,iget(369)) > 0)
THEN
3049 grid1(i,j) = d3dsl(i,j,16)
3054 if (itd3d /= 0)
then
3055 ifincr = mod(ifhr,itd3d)
3056 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3062 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3064 IF (ifincr == 0)
THEN
3067 id(18) = ifhr-ifincr
3068 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3070 if(grib ==
'grib2')
then
3072 fld_info(cfld)%ifld=iavblfld(iget(369))
3073 fld_info(cfld)%lvl=lvlsxml(lp,iget(369))
3075 fld_info(cfld)%ntrange=0
3077 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3079 fld_info(cfld)%tinvstat=itd3d
3085 datapd(i,j,cfld) = grid1(ii,jj)
3092 IF (iget(370) > 0)
THEN
3093 IF (lvls(lp,iget(370)) > 0)
THEN
3097 grid1(i,j) = d3dsl(i,j,17)
3102 if (itd3d /= 0)
then
3103 ifincr = mod(ifhr,itd3d)
3104 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3111 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3113 IF (ifincr == 0)
THEN
3116 id(18) = ifhr-ifincr
3117 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3119 if(grib ==
'grib2')
then
3121 fld_info(cfld)%ifld=iavblfld(iget(370))
3122 fld_info(cfld)%lvl=lvlsxml(lp,iget(370))
3124 fld_info(cfld)%ntrange=0
3126 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3128 fld_info(cfld)%tinvstat=itd3d
3134 datapd(i,j,cfld) = grid1(ii,jj)
3141 IF (iget(371) > 0)
THEN
3142 IF (lvls(lp,iget(371)) > 0)
THEN
3146 grid1(i,j) = d3dsl(i,j,18)
3151 if (itd3d /= 0)
then
3152 ifincr = mod(ifhr,itd3d)
3153 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3160 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3162 IF (ifincr == 0)
THEN
3165 id(18) = ifhr-ifincr
3166 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3168 if(grib ==
'grib2')
then
3170 fld_info(cfld)%ifld=iavblfld(iget(371))
3171 fld_info(cfld)%lvl=lvlsxml(lp,iget(371))
3173 fld_info(cfld)%ntrange=0
3175 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3177 fld_info(cfld)%tinvstat=itd3d
3183 datapd(i,j,cfld) = grid1(ii,jj)
3190 IF (iget(372) > 0)
THEN
3191 IF (lvls(lp,iget(372)) > 0)
THEN
3195 grid1(i,j) = d3dsl(i,j,19)
3200 if (itd3d /= 0)
then
3201 ifincr = mod(ifhr,itd3d)
3202 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3208 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3210 IF (ifincr == 0)
THEN
3213 id(18) = ifhr-ifincr
3214 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3216 if(grib ==
'grib2')
then
3218 fld_info(cfld)%ifld=iavblfld(iget(372))
3219 fld_info(cfld)%lvl=lvlsxml(lp,iget(372))
3221 fld_info(cfld)%ntrange=0
3223 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3225 fld_info(cfld)%tinvstat=itd3d
3231 datapd(i,j,cfld) = grid1(ii,jj)
3238 IF (iget(373) > 0)
THEN
3239 IF (lvls(lp,iget(373)) > 0)
THEN
3243 grid1(i,j) = d3dsl(i,j,20)
3248 if (itd3d /= 0)
then
3249 ifincr = mod(ifhr,itd3d)
3250 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3257 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3259 IF (ifincr == 0)
THEN
3262 id(18) = ifhr-ifincr
3263 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3265 if(grib ==
'grib2')
then
3267 fld_info(cfld)%ifld=iavblfld(iget(373))
3268 fld_info(cfld)%lvl=lvlsxml(lp,iget(373))
3270 fld_info(cfld)%ntrange=0
3272 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3274 fld_info(cfld)%tinvstat=itd3d
3280 datapd(i,j,cfld) = grid1(ii,jj)
3287 IF (iget(374) > 0)
THEN
3288 IF (lvls(lp,iget(374)) > 0)
THEN
3292 grid1(i,j) = d3dsl(i,j,21)
3297 if (itd3d /= 0)
then
3298 ifincr = mod(ifhr,itd3d)
3299 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3306 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3308 IF (ifincr == 0)
THEN
3311 id(18) = ifhr-ifincr
3312 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3314 if(grib ==
'grib2')
then
3316 fld_info(cfld)%ifld=iavblfld(iget(374))
3317 fld_info(cfld)%lvl=lvlsxml(lp,iget(374))
3319 fld_info(cfld)%ntrange=0
3321 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3323 fld_info(cfld)%tinvstat=itd3d
3329 datapd(i,j,cfld) = grid1(ii,jj)
3336 IF (iget(375) > 0)
THEN
3337 IF (lvls(lp,iget(375)) > 0)
THEN
3341 grid1(i,j) = d3dsl(i,j,22)
3346 if (itd3d /= 0)
then
3347 ifincr = mod(ifhr,itd3d)
3348 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3354 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3356 IF (ifincr == 0)
THEN
3359 id(18) = ifhr-ifincr
3360 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3362 if(grib ==
'grib2')
then
3364 fld_info(cfld)%ifld=iavblfld(iget(375))
3365 fld_info(cfld)%lvl=lvlsxml(lp,iget(375))
3367 fld_info(cfld)%ntrange=0
3369 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3371 fld_info(cfld)%tinvstat=itd3d
3377 datapd(i,j,cfld) = grid1(ii,jj)
3384 IF (iget(379) > 0)
THEN
3385 IF (lvls(lp,iget(379)) > 0)
THEN
3389 IF(d3dsl(i,j,1)/=spval)
THEN
3390 grid1(i,j) = d3dsl(i,j,1) + d3dsl(i,j,2) &
3391 + d3dsl(i,j,3) + d3dsl(i,j,4) &
3392 + d3dsl(i,j,5) + d3dsl(i,j,6)
3400 if (itd3d /= 0)
then
3401 ifincr = mod(ifhr,itd3d)
3402 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3408 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3410 IF (ifincr == 0)
THEN
3413 id(18) = ifhr-ifincr
3414 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3416 if(grib ==
'grib2')
then
3418 fld_info(cfld)%ifld=iavblfld(iget(379))
3419 fld_info(cfld)%lvl=lvlsxml(lp,iget(379))
3421 fld_info(cfld)%ntrange=0
3423 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3425 fld_info(cfld)%tinvstat=itd3d
3431 datapd(i,j,cfld) = grid1(ii,jj)
3438 IF (iget(391) > 0)
THEN
3439 IF (lvls(lp,iget(391)) > 0)
THEN
3443 grid1(i,j) = d3dsl(i,j,23)
3448 if (itd3d /= 0)
then
3449 ifincr = mod(ifhr,itd3d)
3450 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3457 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3459 IF (ifincr == 0)
THEN
3462 id(18) = ifhr-ifincr
3463 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3465 if(grib ==
'grib2')
then
3467 fld_info(cfld)%ifld=iavblfld(iget(391))
3468 fld_info(cfld)%lvl=lvlsxml(lp,iget(391))
3470 fld_info(cfld)%ntrange=0
3472 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3474 fld_info(cfld)%tinvstat=itd3d
3480 datapd(i,j,cfld) = grid1(ii,jj)
3487 IF (iget(392) > 0)
THEN
3488 IF (lvls(lp,iget(392)) > 0)
THEN
3492 grid1(i,j) = d3dsl(i,j,24)
3497 if (itd3d /= 0)
then
3498 ifincr = mod(ifhr,itd3d)
3499 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3506 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3508 IF (ifincr == 0)
THEN
3511 id(18) = ifhr-ifincr
3512 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3514 if(grib ==
'grib2')
then
3516 fld_info(cfld)%ifld=iavblfld(iget(392))
3517 fld_info(cfld)%lvl=lvlsxml(lp,iget(392))
3519 fld_info(cfld)%ntrange=0
3521 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3523 fld_info(cfld)%tinvstat=itd3d
3529 datapd(i,j,cfld) = grid1(ii,jj)
3536 IF (iget(393) > 0)
THEN
3537 IF (lvls(lp,iget(393)) > 0)
THEN
3541 grid1(i,j) = d3dsl(i,j,25)
3546 if (itd3d /= 0)
then
3547 ifincr = mod(ifhr,itd3d)
3548 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3555 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3557 IF (ifincr == 0)
THEN
3560 id(18) = ifhr-ifincr
3561 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3563 if(grib ==
'grib2')
then
3565 fld_info(cfld)%ifld=iavblfld(iget(393))
3566 fld_info(cfld)%lvl=lvlsxml(lp,iget(393))
3568 fld_info(cfld)%ntrange=0
3570 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3572 fld_info(cfld)%tinvstat=itd3d
3578 datapd(i,j,cfld) = grid1(ii,jj)
3585 IF (iget(394) > 0)
THEN
3586 IF (lvls(lp,iget(394)) > 0)
THEN
3590 grid1(i,j) = d3dsl(i,j,26)
3595 if (itd3d /= 0)
then
3596 ifincr = mod(ifhr,itd3d)
3597 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3604 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3606 IF (ifincr == 0)
THEN
3609 id(18) = ifhr-ifincr
3610 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3612 if(grib ==
'grib2')
then
3614 fld_info(cfld)%ifld=iavblfld(iget(394))
3615 fld_info(cfld)%lvl=lvlsxml(lp,iget(394))
3617 fld_info(cfld)%ntrange=0
3619 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3621 fld_info(cfld)%tinvstat=itd3d
3627 datapd(i,j,cfld) = grid1(ii,jj)
3634 IF (iget(395) > 0)
THEN
3635 IF (lvls(lp,iget(395)) > 0)
THEN
3639 grid1(i,j) = d3dsl(i,j,27)
3644 if (itd3d /= 0)
then
3645 ifincr = mod(ifhr,itd3d)
3646 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3653 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3655 IF (ifincr == 0)
THEN
3658 id(18) = ifhr-ifincr
3659 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3661 if(grib ==
'grib2')
then
3663 fld_info(cfld)%ifld=iavblfld(iget(395))
3664 fld_info(cfld)%lvl=lvlsxml(lp,iget(395))
3666 fld_info(cfld)%ntrange=0
3668 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3670 fld_info(cfld)%tinvstat=itd3d
3676 datapd(i,j,cfld) = grid1(ii,jj)
3685 IF (iget(455) > 0)
THEN
3686 ii=(ista+iend)/2+100
3687 jj=(jsta+jend)/2-100
3688 IF(abs(spl(lp)-50000.)<small) luhi=lp
3689 IF(abs(spl(lp)-70000.)<small)
THEN
3696 egrid2(i,j) = spl(lp)
3699 CALL caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),tdsl(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend))
3704 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3705 dum1 = tsl(i,j)-tprs(i,j,luhi)
3708 ELSE IF(dum1 > 17. .AND. dum1 <= 21.)
THEN
3713 dum1 = tsl(i,j)-tdsl(i,j)
3714 IF(dum1 <= 14.)
THEN
3716 ELSE IF(dum1>14. .AND. dum1<=20.)
THEN
3721 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j)<spval)
THEN
3722 haines(i,j) = istaa + imois
3735 IF(abs(spl(lp)-85000.)<small)
THEN
3740 egrid2(i,j) = spl(lp)
3743 CALL caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),tdsl(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend))
3748 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3749 dum1 = tsl(i,j)-tprs(i,j,luhi)
3752 ELSE IF(dum1 > 5. .AND. dum1 <= 10.)
THEN
3757 dum1 = tsl(i,j)-tdsl(i,j)
3760 ELSE IF(dum1 > 5. .AND. dum1 <= 12.)
THEN
3767 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j)<spval)
THEN
3768 haines(i,j) = istaa + imois
3779 IF(abs(spl(lp)-95000.)<small)
THEN
3787 CALL caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),tdsl(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend))
3792 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3793 dum1 = tsl(i,j)-tprs(i,j,luhi)
3796 ELSE IF(dum1 > 3. .AND. dum1 <=7. )
THEN
3801 dum1 = tsl(i,j)-tdsl(i,j)
3804 ELSE IF(dum1 > 5. .AND. dum1 <= 9.)
THEN
3811 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j)<spval)
THEN
3812 haines(i,j) = istaa + imois
3820 if(grib ==
'grib2')
then
3822 fld_info(cfld)%ifld=iavblfld(iget(455))
3828 datapd(i,j,cfld) = haines(ii,jj)
3844 IF (iget(423) > 0)
THEN
3850 grid1(i,j) = w_up_max(i,j)
3854 if(grib ==
'grib2')
then
3856 fld_info(cfld)%ifld = iavblfld(iget(423))
3857 fld_info(cfld)%lvl = lvlsxml(lp,iget(423))
3859 fld_info(cfld)%tinvstat=1
3861 fld_info(cfld)%tinvstat=0
3863 fld_info(cfld)%ntrange=1
3869 datapd(i,j,cfld) = grid1(ii,jj)
3877 IF (iget(424) > 0)
THEN
3882 grid1(i,j) = w_dn_max(i,j)
3885 if(grib ==
'grib2')
then
3887 fld_info(cfld)%ifld=iavblfld(iget(424))
3888 fld_info(cfld)%lvl=lvlsxml(lp,iget(424))
3890 fld_info(cfld)%tinvstat=1
3892 fld_info(cfld)%tinvstat=0
3894 fld_info(cfld)%ntrange=1
3900 datapd(i,j,cfld) = grid1(ii,jj)
3913 IF (iget(425) > 0)
THEN
3918 grid1(i,j) = w_mean(i,j)
3921 if(grib ==
'grib2')
then
3923 fld_info(cfld)%ifld = iavblfld(iget(425))
3924 fld_info(cfld)%lvl = lvlsxml(lp,iget(425))
3926 fld_info(cfld)%tinvstat = 0
3928 fld_info(cfld)%tinvstat = 1
3930 fld_info(cfld)%ntrange = 1
3936 datapd(i,j,cfld) = grid1(ii,jj)
3947 IF(iget(023) > 0)
THEN
3948 IF(gridtype ==
'A'.OR. gridtype ==
'B')
then
3949 CALL memslp(tprs,qprs,fprs)
3950 ELSE IF (gridtype ==
'E')
THEN
3953 print*,
'unknow grid type-> WONT DERIVE MESINGER SLP'
3958 grid1(i,j) = pslp(i,j)
3963 if(grib ==
'grib2')
then
3965 fld_info(cfld)%ifld = iavblfld(iget(023))
3971 datapd(i,j,cfld) = grid1(ii,jj)
3978 IF(iget(445) > 0)
THEN
3983 grid1(i,j) = pslp(i,j)
3986 if(grib ==
'grib2')
then
3988 fld_info(cfld)%ifld = iavblfld(iget(445))
3994 datapd(i,j,cfld) = grid1(ii,jj)
4002 IF(iget(023) > 0.OR.iget(445) > 0)
THEN
4003 IF(iget(012) > 0)
THEN
4007 IF(abs(spl(lp)-1.0e5) <= 1.0e-5)
THEN
4008 IF(lvls(lp,iget(012)) > 0)
THEN
4010 IF(modelname ==
'GFS')
THEN
4016 IF(fsl(i,j)<spval)
THEN
4017 grid1(i,j) = fsl(i,j)*gi
4027 IF(pslp(i,j) < spval)
THEN
4030 psfc = pint(i,j,nint(lmh(i,j))+1)
4031 IF(abs(pslpij-psfc) < 5.e2)
THEN
4032 grid1(i,j) = rd*tprs(i,j,lp)*(alpsl-alpth)
4034 grid1(i,j) = fis(i,j)/(alpsl-log(psfc))*(alpsl-alpth)
4036 z1000(i,j) = grid1(i,j)*gi
4037 grid1(i,j) = z1000(i,j)
4047 nsmooth = nint(5.*(13500./dxm))
4048 call allgetherv(grid1)
4050 CALL smooth(grid1,sdummy,im,jm,0.5)
4054 if(grib ==
'grib2')
then
4056 fld_info(cfld)%ifld = iavblfld(iget(012))
4057 fld_info(cfld)%lvl = lvlsxml(lp,iget(012))
4063 datapd(i,j,cfld) = grid1(ii,jj)
4075 IF ( iget(1006)>0 )
THEN
4078 call calslr_uutah(egrid1)
4080 call calslr_roebber(tprs,rhprs,egrid1)
4086 if(egrid1(i,j) < spval)
then
4087 if(egrid1(i,j)>=1.)
then
4088 grid1(i,j)=1000./egrid1(i,j)
4095 if(grib==
'grib2')
then
4097 fld_info(cfld)%ifld=iavblfld(iget(1006))
4103 datapd(i,j,cfld) = grid1(ii,jj)
4109if(
allocated(d3dsl))
deallocate(d3dsl)
4110if(
allocated(smokesl))
deallocate(smokesl)
4111if(
allocated(fv3dustsl))
deallocate(fv3dustsl)
4112if(
allocated(coarsepmsl))
deallocate(coarsepmsl)
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 calmcvg(q1d, u1d, v1d, qcnvg)
Subroutine that computes moisture convergence.
subroutine calstrm(z1d, strm)
Subroutine that computes geo streamfunction.
subroutine smooth(field, hold, ix, iy, smth)
smooth() smooths a meteorological field using Shapiro smoother.
subroutine smoothc(field, hold, ix, iy, smth)
smoothc() smooths a meteorological field using Shapiro smoother.