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
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(me==0) print*,
'MDL2P SMFLAG=',smflag
135 if (modelname ==
'GFS')
then
141 if (.not.
allocated(d3dsl))
allocate(d3dsl(im,jm,27))
151 if (.not.
allocated(smokesl))
allocate(smokesl(im,jm,nbin_sm))
156 smokesl(i,j,l) = spval
160 if (.not.
allocated(fv3dustsl))
allocate(fv3dustsl(im,jm,nbin_sm))
165 fv3dustsl(i,j,l) = spval
169 if (.not.
allocated(coarsepmsl))
allocate(coarsepmsl(im,jm,nbin_sm))
174 coarsepmsl(i,j,l) = spval
188 IF((iget(012) > 0) .OR. (iget(013) > 0) .OR. &
189 (iget(014) > 0) .OR. (iget(015) > 0) .OR. &
190 (iget(016) > 0) .OR. (iget(017) > 0) .OR. &
191 (iget(018) > 0) .OR. (iget(019) > 0) .OR. &
192 (iget(020) > 0) .OR. (iget(030) > 0) .OR. &
193 (iget(021) > 0) .OR. (iget(022) > 0) .OR. &
194 (iget(023) > 0) .OR. (iget(085) > 0) .OR. &
195 (iget(086) > 0) .OR. (iget(284) > 0) .OR. &
196 (iget(153) > 0) .OR. (iget(166) > 0) .OR. &
197 (iget(183) > 0) .OR. (iget(184) > 0) .OR. &
198 (iget(198) > 0) .OR. (iget(251) > 0) .OR. &
199 (iget(257) > 0) .OR. (iget(258) > 0) .OR. &
200 (iget(294) > 0) .OR. (iget(268) > 0) .OR. &
201 (iget(331) > 0) .OR. (iget(326) > 0) .OR. &
203 (iget(354) > 0) .OR. (iget(355) > 0) .OR. &
204 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
205 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
206 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
207 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
208 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
209 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
210 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
211 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
212 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
213 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
214 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
215 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
216 (iget(395) > 0) .OR. (iget(379) > 0) .OR. &
218 (iget(455) > 0) .OR. &
220 (iget(464) > 0) .OR. (iget(465) > 0) .OR. &
221 (iget(466) > 0) .OR. (iget(450) > 0) .OR. &
222 (iget(480) > 0) .OR. &
224 (iget(738) > 0) .OR. (iget(743) > 0) .OR. &
225 (modelname ==
'RAPR') .OR.&
227 (iget(030)>0) .OR. (iget(031)>0) .OR. (iget(075)>0))
THEN
237 if(gridtype ==
'B' .or. gridtype ==
'E') &
238 call exch(pint(ista_2l:iend_2u,jsta_2l:jend_2u,lp1))
271 icingfsl(i,j) = spval
272 icingvsl(i,j) = spval
282 IF(nl1x(i,j) == lp1 .AND. pmid(i,j,l) > spl(lp))
THEN
292 IF(nl1x(i,j) == lp1 .AND. pint(i,j,lp1) > spl(lp))
THEN
298 IF(nl1xf(i,j) == (lp1+1) .AND. pint(i,j,l) > spl(lp))
THEN
328 llmh = nint(lmh(i,j))
332 IF(spl(lp) < pint(i,j,2))
THEN
333 IF(t(i,j,1) < spval) tsl(i,j) = t(i,j,1)
334 IF(q(i,j,1) < spval) qsl(i,j) = q(i,j,1)
336 IF(gridtype ==
'A')
THEN
337 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
338 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
344 IF(wh(i,j,1) < spval) wsl(i,j) = wh(i,j,1)
345 IF(omga(i,j,1) < spval) osl(i,j) = omga(i,j,1)
346 IF(q2(i,j,1) < spval) q2sl(i,j) = q2(i,j,1)
347 IF(cwm(i,j,1) < spval) c1d(i,j) = cwm(i,j,1)
348 c1d(i,j) = max(c1d(i,j),zero)
349 IF(qqw(i,j,1) < spval) qw1(i,j) = qqw(i,j,1)
350 qw1(i,j) = max(qw1(i,j),zero)
351 IF(qqi(i,j,1) < spval) qi1(i,j) = qqi(i,j,1)
352 qi1(i,j) = max(qi1(i,j),zero)
353 IF(qqr(i,j,1) < spval) qr1(i,j) = qqr(i,j,1)
354 qr1(i,j) = max(qr1(i,j),zero)
355 IF(qqs(i,j,1) < spval) qs1(i,j) = qqs(i,j,1)
356 qs1(i,j) = max(qs1(i,j),zero)
357 IF(qqg(i,j,1) < spval) qg1(i,j) = qqg(i,j,1)
358 qg1(i,j) = max(qg1(i,j),zero)
359 IF(dbz(i,j,1) < spval) dbz1(i,j) = dbz(i,j,1)
360 dbz1(i,j) = max(dbz1(i,j),dbzmin)
361 IF(f_rimef(i,j,1) < spval) frime(i,j) = f_rimef(i,j,1)
362 frime(i,j) = max(frime(i,j),h1)
363 IF(ttnd(i,j,1) < spval) rad(i,j) = ttnd(i,j,1)
364 IF(o3(i,j,1) < spval) o3sl(i,j) = o3(i,j,1)
365 IF(cfr(i,j,1) < spval) cfrsl(i,j) = cfr(i,j,1)
367 IF(icing_gfip(i,j,1) < spval) icingfsl(i,j) = icing_gfip(i,j,1)
368 IF(icing_gfis(i,j,1) < spval) icingvsl(i,j) = icing_gfis(i,j,1)
370 IF(gtg(i,j,1) < spval) gtgsl(i,j) = gtg(i,j,1)
371 IF(cat(i,j,1) < spval) catsl(i,j) = cat(i,j,1)
372 IF(mwt(i,j,1) < spval) mwtsl(i,j) = mwt(i,j,1)
374 IF(smoke(i,j,1,k) < spval) smokesl(i,j,k)=smoke(i,j,1,k)
375 IF(fv3dust(i,j,1,k) < spval) fv3dustsl(i,j,k)=fv3dust(i,j,1,k)
376 IF(coarsepm(i,j,1,k) < spval) coarsepmsl(i,j,k)=coarsepm(i,j,1,k)
382 IF((iget(354) > 0) .OR. (iget(355) > 0) .OR. &
383 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
384 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
385 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
386 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
387 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
388 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
389 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
390 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
391 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
392 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
393 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
394 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
395 (iget(395) > 0) .OR. (iget(379) > 0))
THEN
396 d3dsl(i,j,1) = rlwtt(i,j,1)
397 d3dsl(i,j,2) = rswtt(i,j,1)
398 d3dsl(i,j,3) = vdifftt(i,j,1)
399 d3dsl(i,j,4) = tcucn(i,j,1)
400 d3dsl(i,j,5) = tcucns(i,j,1)
401 d3dsl(i,j,6) = train(i,j,1)
402 d3dsl(i,j,7) = vdiffmois(i,j,1)
403 d3dsl(i,j,8) = dconvmois(i,j,1)
404 d3dsl(i,j,9) = sconvmois(i,j,1)
405 d3dsl(i,j,10) = nradtt(i,j,1)
406 d3dsl(i,j,11) = o3vdiff(i,j,1)
407 d3dsl(i,j,12) = o3prod(i,j,1)
408 d3dsl(i,j,13) = o3tndy(i,j,1)
409 d3dsl(i,j,14) = mwpv(i,j,1)
410 d3dsl(i,j,15) = unknown(i,j,1)
411 d3dsl(i,j,16) = vdiffzacce(i,j,1)
412 d3dsl(i,j,17) = zgdrag(i,j,1)
413 d3dsl(i,j,18) = cnvctummixing(i,j,1)
414 d3dsl(i,j,19) = vdiffmacce(i,j,1)
415 d3dsl(i,j,20) = mgdrag(i,j,1)
416 d3dsl(i,j,21) = cnvctvmmixing(i,j,1)
417 d3dsl(i,j,22) = ncnvctcfrac(i,j,1)
418 d3dsl(i,j,23) = cnvctumflx(i,j,1)
419 d3dsl(i,j,24) = cnvctdmflx(i,j,1)
420 d3dsl(i,j,25) = cnvctdetmflx(i,j,1)
421 d3dsl(i,j,26) = cnvctzgdrag(i,j,1)
422 d3dsl(i,j,27) = cnvctmgdrag(i,j,1)
426 ELSE IF(ll <= llmh)
THEN
436 IF (modelname ==
'RAPR' .OR. modelname ==
'NCAR' .OR. modelname ==
'NMM')
THEN
437 fact = (alsl(lp)-log(pmid(i,j,ll)))/ &
438 max(1.e-6,(log(pmid(i,j,ll))-log(pmid(i,j,ll-1))))
439 fact = max(-10.0,min(fact, 10.0))
440 ELSEIF (modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
441 fact = (alsl(lp)-log(pmid(i,j,ll)))/ &
442 max(1.e-6,(log(pmid(i,j,ll))-log(pmid(i,j,ll-1))))
443 fact = max(-10.0,min(fact, 10.0))
444 IF ( abs(pmid(i,j,ll)-pmid(i,j,ll-1)) < 0.5 )
THEN
448 fact = (alsl(lp)-log(pmid(i,j,ll)))/ &
449 (log(pmid(i,j,ll))-log(pmid(i,j,ll-1)))
451 IF(t(i,j,ll) < spval .AND. t(i,j,ll-1) < spval) &
452 tsl(i,j) = t(i,j,ll)+(t(i,j,ll)-t(i,j,ll-1))*fact
453 IF(q(i,j,ll) < spval .AND. q(i,j,ll-1) < spval) &
454 qsl(i,j) = q(i,j,ll)+(q(i,j,ll)-q(i,j,ll-1))*fact
456 IF(gridtype==
'A')
THEN
457 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval) &
458 usl(i,j) = uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
459 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval) &
460 vsl(i,j) = vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
463 IF(wh(i,j,ll) < spval .AND. wh(i,j,ll-1) < spval) &
464 wsl(i,j) = wh(i,j,ll)+(wh(i,j,ll)-wh(i,j,ll-1))*fact
465 IF(omga(i,j,ll) < spval .AND. omga(i,j,ll-1) < spval) &
466 osl(i,j) = omga(i,j,ll)+(omga(i,j,ll)-omga(i,j,ll-1))*fact
467 IF(q2(i,j,ll) < spval .AND. q2(i,j,ll-1) < spval) &
468 q2sl(i,j) = q2(i,j,ll)+(q2(i,j,ll)-q2(i,j,ll-1))*fact
474 if (modelname ==
'GFS')
then
475 es = min(
fpvsnew(tsl(i,j)), spl(lp))
476 qsat = con_eps*es/(spl(lp)+con_epsm1*es)
478 qsat = pq0/spl(lp)*exp(a2*(tsl(i,j)-a3)/(tsl(i,j)-a4))
481 rhl = max(rhmin, min(1.0, qsl(i,j)/qsat))
488 IF(q2sl(i,j) < 0.0) q2sl(i,j) = 0.0
491 IF(cwm(i,j,ll) < spval .AND. cwm(i,j,ll-1) < spval) &
492 c1d(i,j) = cwm(i,j,ll) + (cwm(i,j,ll)-cwm(i,j,ll-1))*fact
493 c1d(i,j) = max(c1d(i,j),zero)
495 IF(qqw(i,j,ll) < spval .AND. qqw(i,j,ll-1) < spval) &
496 qw1(i,j) = qqw(i,j,ll) + (qqw(i,j,ll)-qqw(i,j,ll-1))*fact
497 qw1(i,j) = max(qw1(i,j),zero)
499 IF(qqi(i,j,ll) < spval .AND. qqi(i,j,ll-1) < spval) &
500 qi1(i,j) = qqi(i,j,ll) + (qqi(i,j,ll)-qqi(i,j,ll-1))*fact
501 qi1(i,j) = max(qi1(i,j),zero)
503 IF(qqr(i,j,ll) < spval .AND. qqr(i,j,ll-1) < spval) &
504 qr1(i,j) = qqr(i,j,ll) + (qqr(i,j,ll)-qqr(i,j,ll-1))*fact
505 qr1(i,j) = max(qr1(i,j),zero)
507 IF(qqs(i,j,ll) < spval .AND. qqs(i,j,ll-1) < spval) &
508 qs1(i,j) = qqs(i,j,ll) + (qqs(i,j,ll)-qqs(i,j,ll-1))*fact
509 qs1(i,j) = max(qs1(i,j),zero)
511 IF(qqg(i,j,ll) < spval .AND. qqg(i,j,ll-1) < spval) &
512 qg1(i,j) = qqg(i,j,ll) + (qqg(i,j,ll)-qqg(i,j,ll-1))*fact
513 qg1(i,j) = max(qg1(i,j),zero)
515 IF(dbz(i,j,ll) < spval .AND. dbz(i,j,ll-1) < spval) &
516 dbz1(i,j) = dbz(i,j,ll) + (dbz(i,j,ll)-dbz(i,j,ll-1))*fact
517 dbz1(i,j) = max(dbz1(i,j),dbzmin)
519 IF(f_rimef(i,j,ll) < spval .AND. f_rimef(i,j,ll-1) < spval) &
520 frime(i,j) = f_rimef(i,j,ll) + (f_rimef(i,j,ll) - f_rimef(i,j,ll-1))*fact
521 frime(i,j)=max(frime(i,j),h1)
523 IF(ttnd(i,j,ll) < spval .AND. ttnd(i,j,ll-1) < spval) &
524 rad(i,j) = ttnd(i,j,ll) + (ttnd(i,j,ll)-ttnd(i,j,ll-1))*fact
526 IF(o3(i,j,ll) < spval .AND. o3(i,j,ll-1) < spval) &
527 o3sl(i,j) = o3(i,j,ll) + (o3(i,j,ll)-o3(i,j,ll-1))*fact
529 IF(cfr(i,j,ll) < spval .AND. cfr(i,j,ll-1) < spval) &
530 cfrsl(i,j) = cfr(i,j,ll) + (cfr(i,j,ll)-cfr(i,j,ll-1))*fact
532 IF(icing_gfip(i,j,ll) < spval .AND. icing_gfip(i,j,ll-1) < spval) &
533 icingfsl(i,j) = icing_gfip(i,j,ll) + (icing_gfip(i,j,ll)-icing_gfip(i,j,ll-1))*fact
534 icingfsl(i,j) = max(0.0, icingfsl(i,j))
535 icingfsl(i,j) = min(1.0, icingfsl(i,j))
536 IF(icing_gfis(i,j,ll) < spval .AND. icing_gfis(i,j,ll-1) < spval) &
537 icingvsl(i,j) = icing_gfis(i,j,ll) + (icing_gfis(i,j,ll)-icing_gfis(i,j,ll-1))*fact
545 if (icingvsl(i,j) < 0.08)
then
547 elseif (icingvsl(i,j) <= 0.21)
then
549 else if(icingvsl(i,j) <= 0.37)
then
551 else if(icingvsl(i,j) <= 0.67)
then
556 if(icingfsl(i,j)< 0.001) icingvsl(i,j) = 0.
558 IF(gtg(i,j,ll) < spval .AND. gtg(i,j,ll-1) < spval)
THEN
559 gtgsl(i,j) = gtg(i,j,ll) + (gtg(i,j,ll)-gtg(i,j,ll-1))*fact
560 gtgsl(i,j) = max(0.0, gtgsl(i,j))
561 gtgsl(i,j) = min(1.0, gtgsl(i,j))
563 IF(cat(i,j,ll) < spval .AND. cat(i,j,ll-1) < spval)
THEN
564 catsl(i,j) = cat(i,j,ll) + (cat(i,j,ll)-cat(i,j,ll-1))*fact
565 catsl(i,j) = max(0.0, catsl(i,j))
566 catsl(i,j) = min(1.0, catsl(i,j))
568 IF(mwt(i,j,ll) < spval .AND. mwt(i,j,ll-1) < spval)
THEN
569 mwtsl(i,j) = mwt(i,j,ll) + (mwt(i,j,ll)-mwt(i,j,ll-1))*fact
570 mwtsl(i,j) = max(0.0, mwtsl(i,j))
571 mwtsl(i,j) = min(1.0, mwtsl(i,j))
574 IF(smoke(i,j,ll,k) < spval .AND. smoke(i,j,ll-1,k) < spval) &
575 smokesl(i,j,k)=smoke(i,j,ll,k)+(smoke(i,j,ll,k)-smoke(i,j,ll-1,k))*fact
576 IF(fv3dust(i,j,ll,k) < spval .AND. fv3dust(i,j,ll-1,k) < spval) &
577 fv3dustsl(i,j,k)=fv3dust(i,j,ll,k)+(fv3dust(i,j,ll,k)-fv3dust(i,j,ll-1,k))*fact
578 IF(coarsepm(i,j,ll,k) < spval .AND. coarsepm(i,j,ll-1,k) < spval) &
579 coarsepmsl(i,j,k)=coarsepm(i,j,ll,k)+(coarsepm(i,j,ll,k)-coarsepm(i,j,ll-1,k))*fact
585 IF((iget(354) > 0) .OR. (iget(355) > 0) .OR. &
586 (iget(356) > 0) .OR. (iget(357) > 0) .OR. &
587 (iget(358) > 0) .OR. (iget(359) > 0) .OR. &
588 (iget(360) > 0) .OR. (iget(361) > 0) .OR. &
589 (iget(362) > 0) .OR. (iget(363) > 0) .OR. &
590 (iget(364) > 0) .OR. (iget(365) > 0) .OR. &
591 (iget(366) > 0) .OR. (iget(367) > 0) .OR. &
592 (iget(368) > 0) .OR. (iget(369) > 0) .OR. &
593 (iget(370) > 0) .OR. (iget(371) > 0) .OR. &
594 (iget(372) > 0) .OR. (iget(373) > 0) .OR. &
595 (iget(374) > 0) .OR. (iget(375) > 0) .OR. &
596 (iget(391) > 0) .OR. (iget(392) > 0) .OR. &
597 (iget(393) > 0) .OR. (iget(394) > 0) .OR. &
598 (iget(395) > 0) .OR. (iget(379) > 0))
THEN
599 d3dsl(i,j,1) = rlwtt(i,j,ll)+(rlwtt(i,j,ll) &
600 - rlwtt(i,j,ll-1))*fact
601 d3dsl(i,j,2) = rswtt(i,j,ll)+(rswtt(i,j,ll) &
602 - rswtt(i,j,ll-1))*fact
603 d3dsl(i,j,3) = vdifftt(i,j,ll)+(vdifftt(i,j,ll) &
604 - vdifftt(i,j,ll-1))*fact
605 d3dsl(i,j,4) = tcucn(i,j,ll)+(tcucn(i,j,ll) &
606 - tcucn(i,j,ll-1))*fact
607 d3dsl(i,j,5) = tcucns(i,j,ll)+(tcucns(i,j,ll) &
608 - tcucns(i,j,ll-1))*fact
609 d3dsl(i,j,6) = train(i,j,ll)+(train(i,j,ll) &
610 - train(i,j,ll-1))*fact
611 d3dsl(i,j,7) = vdiffmois(i,j,ll)+ &
612 (vdiffmois(i,j,ll)-vdiffmois(i,j,ll-1))*fact
613 d3dsl(i,j,8) = dconvmois(i,j,ll)+ &
614 (dconvmois(i,j,ll)-dconvmois(i,j,ll-1))*fact
615 d3dsl(i,j,9) = sconvmois(i,j,ll)+ &
616 (sconvmois(i,j,ll)-sconvmois(i,j,ll-1))*fact
617 d3dsl(i,j,10) = nradtt(i,j,ll)+ &
618 (nradtt(i,j,ll)-nradtt(i,j,ll-1))*fact
619 d3dsl(i,j,11) = o3vdiff(i,j,ll)+ &
620 (o3vdiff(i,j,ll)-o3vdiff(i,j,ll-1))*fact
621 d3dsl(i,j,12) = o3prod(i,j,ll)+ &
622 (o3prod(i,j,ll)-o3prod(i,j,ll-1))*fact
623 d3dsl(i,j,13) = o3tndy(i,j,ll)+ &
624 (o3tndy(i,j,ll)-o3tndy(i,j,ll-1))*fact
625 d3dsl(i,j,14) = mwpv(i,j,ll)+ &
626 (mwpv(i,j,ll)-mwpv(i,j,ll-1))*fact
627 d3dsl(i,j,15) = unknown(i,j,ll)+ &
628 (unknown(i,j,ll)-unknown(i,j,ll-1))*fact
629 d3dsl(i,j,16) = vdiffzacce(i,j,ll)+ &
630 (vdiffzacce(i,j,ll)-vdiffzacce(i,j,ll-1))*fact
631 d3dsl(i,j,17) = zgdrag(i,j,ll)+ &
632 (zgdrag(i,j,ll)-zgdrag(i,j,ll-1))*fact
633 d3dsl(i,j,18) = cnvctummixing(i,j,ll)+ &
634 (cnvctummixing(i,j,ll)-cnvctummixing(i,j,ll-1))*fact
635 d3dsl(i,j,19) = vdiffmacce(i,j,ll)+ &
636 (vdiffmacce(i,j,ll)-vdiffmacce(i,j,ll-1))*fact
637 d3dsl(i,j,20) = mgdrag(i,j,ll)+ &
638 (mgdrag(i,j,ll)-mgdrag(i,j,ll-1))*fact
639 d3dsl(i,j,21) = cnvctvmmixing(i,j,ll)+ &
640 (cnvctvmmixing(i,j,ll)-cnvctvmmixing(i,j,ll-1))*fact
641 d3dsl(i,j,22) = ncnvctcfrac(i,j,ll)+ &
642 (ncnvctcfrac(i,j,ll)-ncnvctcfrac(i,j,ll-1))*fact
643 d3dsl(i,j,23) = cnvctumflx(i,j,ll)+ &
644 (cnvctumflx(i,j,ll)-cnvctumflx(i,j,ll-1))*fact
645 d3dsl(i,j,24) = cnvctdmflx(i,j,ll)+ &
646 (cnvctdmflx(i,j,ll)-cnvctdmflx(i,j,ll-1))*fact
647 d3dsl(i,j,25) = cnvctdetmflx(i,j,ll)+ &
648 (cnvctdetmflx(i,j,ll)-cnvctdetmflx(i,j,ll-1))*fact
649 d3dsl(i,j,26) = cnvctzgdrag(i,j,ll)+ &
650 (cnvctzgdrag(i,j,ll)-cnvctzgdrag(i,j,ll-1))*fact
651 d3dsl(i,j,27) = cnvctmgdrag(i,j,ll)+ &
652 (cnvctmgdrag(i,j,ll)-cnvctmgdrag(i,j,ll-1))*fact
661 IF(modelname ==
'GFS')
THEN
662 tvu = t(i,j,lm) * (1.+con_fvirt*q(i,j,lm))
663 if(zmid(i,j,lm) > zshul)
then
664 tvd = tvu + gamma*zmid(i,j,lm)
665 if(tvd > tvshul)
then
666 if(tvu > tvshul)
then
667 tvd = tvshul - 5.e-3*(tvu-tvshul)*(tvu-tvshul)
672 gammas = (tvu-tvd)/zmid(i,j,lm)
676 part = con_rog*(alsl(lp)-log(pmid(i,j,lm)))
677 fsl(i,j) = zmid(i,j,lm) - tvu*part/(1.+0.5*gammas*part)
679 tsl(i,j) = t(i,j,lm) - gamma*(fsl(i,j)-zmid(i,j,lm))
680 fsl(i,j) = fsl(i,j)*g
684 es = min(
fpvsnew(t(i,j,lm)), pmid(i,j,lm))
685 qsat = con_eps*es/(pmid(i,j,lm)+con_epsm1*es)
688 es = min(
fpvsnew(tsl(i,j)), spl(lp))
689 qsat = con_eps*es/(spl(lp)+con_epsm1*es)
696 tl = 0.5*(t(i,j,lm-2)+t(i,j,lm-1))
697 ql = 0.5*(q(i,j,lm-2)+q(i,j,lm-1))
707 qsat = pq0/pl*exp(a2*(tl-a3)/(tl-a4))
720 tvrl = tl*(1.+0.608*ql)
721 tvrblo = tvrl*(spl(lp)/pl)**rgamog
722 tblo = tvrblo/(1.+0.608*ql)
733 qsat = pq0/spl(lp)*exp(a2*(tblo-a3)/(tblo-a4))
736 qsl(i,j) = max(1.e-12,qblo)
742 IF(gridtype ==
'A')
THEN
743 usl(i,j) = uh(i,j,llmh)
744 vsl(i,j) = vh(i,j,llmh)
748 wsl(i,j) = wh(i,j,llmh)
749 osl(i,j) = omga(i,j,llmh)
750 q2sl(i,j) = max(0.0,0.5*(q2(i,j,llmh-1)+q2(i,j,llmh)))
788 o3sl(i,j) = o3(i,j,llmh)
789 IF(cfr(i,j,1)<spval)cfrsl(i,j) = 0.
794 IF(modelname ==
'GFS')
then
796 IF(spl(lp) < pmid(i,j,1))
THEN
797 tvd = t(i,j,1)*(1+con_fvirt*q(i,j,1))
798 fsl(i,j) = zmid(i,j,1)-con_rog*tvd *(alsl(lp)-log(pmid(i,j,1)))
799 fsl(i,j) = fsl(i,j)*g
800 ELSE IF(l <= llmh)
THEN
801 tvd = t(i,j,l)*(1+con_fvirt*q(i,j,l))
802 tvu = tsl(i,j)*(1+con_fvirt*qsl(i,j))
803 fsl(i,j) = zmid(i,j,l)-con_rog*0.5*(tvd+tvu) &
804 * (alsl(lp)-log(pmid(i,j,l)))
805 fsl(i,j) = fsl(i,j)*g
809 IF(nl1xf(i,j)<=(llmh+1))
THEN
810 fact = (alsl(lp)-log(pint(i,j,la)))/ &
811 (log(pint(i,j,la))-log(pint(i,j,la-1)))
812 IF(zint(i,j,la) < spval .AND. zint(i,j,la-1) < spval) &
813 fsl(i,j) = zint(i,j,la)+(zint(i,j,la)-zint(i,j,la-1))*fact
814 fsl(i,j) = fsl(i,j)*g
816 fsl(i,j) = fprs(i,j,lp-1)-rd*(tprs(i,j,lp-1) &
817 * (h1+d608*qprs(i,j,lp-1)) &
818 + tsl(i,j)*(h1+d608*qsl(i,j))) &
819 * log(spl(lp)/spl(lp-1))/2.0
832 tprs(i,j,lp) = tsl(i,j)
833 qprs(i,j,lp) = qsl(i,j)
834 fprs(i,j,lp) = fsl(i,j)
840 IF(gridtype ==
'E')
THEN
843 DO i=ista_m,iend-mod(j,2)
879 IF(nl1x(i,j) == lp1.AND.pmidv(i,j,l) > spl(lp))
THEN
892 IF(nl1x(i,j) == lp1)
THEN
893 IF(j == jsta .AND. i < iend)
THEN
894 pdv = 0.5*(pint(i,j,lp1)+pint(i+1,j,lp1))
895 ELSE IF(j == jend .AND. i < iend)
THEN
896 pdv = 0.5*(pint(i,j,lp1)+pint(i+1,j,lp1))
897 ELSE IF(i == ista .AND. mod(j,2) == 0)
THEN
898 pdv = 0.5*(pint(i,j-1,lp1)+pint(i,j+1,lp1))
899 ELSE IF(i == iend .AND. mod(j,2) == 0)
THEN
900 pdv = 0.5*(pint(i,j-1,lp1)+pint(i,j+1,lp1))
901 ELSE IF (mod(j,2) < 1)
THEN
902 pdv = 0.25*(pint(i,j,lp1)+pint(i-1,j,lp1) &
903 + pint(i,j+1,lp1)+pint(i,j-1,lp1))
905 pdv = 0.25*(pint(i,j,lp1)+pint(i+1,j,lp1) &
906 + pint(i,j+1,lp1)+pint(i,j-1,lp1))
908 IF(pdv > spl(lp))
THEN
918 DO i=ista,iend-mod(j,2)
925 llmh = nint(lmh(i,j))
927 IF(spl(lp) < pint(i,j,2))
THEN
928 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
929 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
931 ELSE IF(nl1x(i,j)<=llmh)
THEN
941 fact = (alsl(lp)-log(pmidv(i,j,ll)))/ &
942 (log(pmidv(i,j,ll))-log(pmidv(i,j,ll-1)))
943 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval) &
944 usl(i,j) = uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
945 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval) &
946 vsl(i,j) = vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
955 IF(uh(i,j,llmh) < spval) usl(i,j) = uh(i,j,llmh)
956 IF(vh(i,j,llmh) < spval) vsl(i,j) = vh(i,j,llmh)
963 IF(mod(jsta,2) == 0) jjb = jsta+1
965 IF(mod(jend,2) == 0) jje = jend-1
967 usl(iend,j) = usl(iend-1,j)
968 vsl(iend,j) = vsl(iend-1,j)
970 ELSE IF(gridtype==
'B')
THEN
979 IF(nl1x(i,j) == lp1.AND.pmidv(i,j,l) > spl(lp))
THEN
991 IF(nl1x(i,j)==lp1)
THEN
992 pdv = 0.25*(pint(i,j,lp1)+pint(i+1,j,lp1) &
993 + pint(i,j+1,lp1)+pint(i+1,j+1,lp1))
994 IF(pdv > spl(lp))
THEN
1011 llmh = nint(lmh(i,j))
1013 IF(spl(lp) < pint(i,j,2))
THEN
1014 IF(uh(i,j,1) < spval) usl(i,j) = uh(i,j,1)
1015 IF(vh(i,j,1) < spval) vsl(i,j) = vh(i,j,1)
1017 ELSE IF(nl1x(i,j)<=llmh)
THEN
1027 fact = (alsl(lp)-log(pmidv(i,j,ll)))/ &
1028 (log(pmidv(i,j,ll))-log(pmidv(i,j,ll-1)))
1029 IF(uh(i,j,ll) < spval .AND. uh(i,j,ll-1) < spval) &
1030 usl(i,j)=uh(i,j,ll)+(uh(i,j,ll)-uh(i,j,ll-1))*fact
1031 IF(vh(i,j,ll) < spval .AND. vh(i,j,ll-1) < spval) &
1032 vsl(i,j)=vh(i,j,ll)+(vh(i,j,ll)-vh(i,j,ll-1))*fact
1041 IF(uh(i,j,llmh) < spval)usl(i,j)=uh(i,j,llmh)
1042 IF(vh(i,j,llmh) < spval)vsl(i,j)=vh(i,j,llmh)
1058 IF(nint(spl(lp)) == 50000)
THEN
1062 t500(i,j) = tsl(i,j)
1063 z500(i,j) = fsl(i,j)*gi
1071 IF(nint(spl(lp)) == 70000)
THEN
1075 t700(i,j) = tsl(i,j)
1076 z700(i,j) = fsl(i,j)*gi
1139 IF(iget(012) > 0)
THEN
1140 IF(lvls(lp,iget(012)) > 0)
THEN
1141 IF((iget(023) > 0 .OR. iget(445) > 0) .AND. nint(spl(lp)) == 100000)
THEN
1147 IF(fsl(i,j) < spval)
THEN
1148 grid1(i,j) = fsl(i,j)*gi
1157 if(maptype == 6)
then
1158 if(grib==
'grib2')
then
1159 dxm = (dxval / 360.)*(erad*2.*pi)/1.d6
1164 if(grib ==
'grib2')
then
1168 nsmooth = nint(5.*(13500./dxm))
1169 call allgetherv(grid1)
1171 CALL
smooth(grid1,sdummy,im,jm,0.5)
1174 if(grib ==
'grib2')
then
1176 fld_info(cfld)%ifld=iavblfld(iget(012))
1177 fld_info(cfld)%lvl=lvlsxml(lp,iget(012))
1183 datapd(i,j,cfld) = grid1(ii,jj)
1194 IF(iget(013) > 0)
THEN
1195 IF(lvls(lp,iget(013)) > 0)
THEN
1199 grid1(i,j) = tsl(i,j)
1204 nsmooth = nint(3.*(13500./dxm))
1205 call allgetherv(grid1)
1207 CALL
smooth(grid1,sdummy,im,jm,0.5)
1211 if(grib ==
'grib2')
then
1213 fld_info(cfld)%ifld = iavblfld(iget(013))
1214 fld_info(cfld)%lvl = lvlsxml(lp,iget(013))
1220 datapd(i,j,cfld) = grid1(ii,jj)
1229 IF(iget(910)>0)
THEN
1230 IF(lvls(lp,iget(910))>0)
THEN
1234 IF(tsl(i,j) < spval .AND. qsl(i,j) < spval)
THEN
1235 grid1(i,j) = tsl(i,j)*(1.+0.608*qsl(i,j))
1243 nsmooth = nint(3.*(13500./dxm))
1244 call allgetherv(grid1)
1246 CALL
smooth(grid1,sdummy,im,jm,0.5)
1250 if(grib==
'grib2')
then
1252 fld_info(cfld)%ifld = iavblfld(iget(910))
1253 fld_info(cfld)%lvl = lvlsxml(lp,iget(910))
1259 datapd(i,j,cfld) = grid1(ii,jj)
1269 IF(iget(014) > 0)
THEN
1270 IF(lvls(lp,iget(014)) > 0)
THEN
1272 tem = (p1000/spl(lp)) ** capa
1276 IF(tsl(i,j) < spval)
THEN
1277 grid1(i,j) = tsl(i,j) * tem
1298 if(grib ==
'grib2')
then
1300 fld_info(cfld)%ifld=iavblfld(iget(014))
1301 fld_info(cfld)%lvl=lvlsxml(lp,iget(014))
1307 datapd(i,j,cfld) = grid1(ii,jj)
1317 IF(iget(017) > 0 .OR. iget(257) > 0 .OR. iget(1006) > 0)
THEN
1321 IF(iget(017) > 0.)
then
1322 if(lvls(lp,iget(017)) > 0 ) log1=.true.
1324 IF(iget(257) > 0)
then
1325 if(lvls(lp,iget(257)) > 0 ) log1=.true.
1331 egrid2(i,j) = spl(lp)
1335 CALL
calrh(egrid2(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),egrid1(ista:iend,jsta:jend))
1340 IF(egrid1(i,j) < spval)
THEN
1341 grid1(i,j) = egrid1(i,j)*100.
1343 grid1(i,j) = egrid1(i,j)
1349 nsmooth=nint(2.*(13500./dxm))
1350 call allgetherv(grid1)
1352 CALL
smooth(grid1,sdummy,im,jm,0.5)
1357 if(grib ==
'grib2')
then
1359 fld_info(cfld)%ifld=iavblfld(iget(017))
1360 fld_info(cfld)%lvl=lvlsxml(lp,iget(017))
1366 datapd(i,j,cfld) = grid1(ii,jj)
1374 savrh(i,j) = grid1(i,j)
1382 rhprs(i,j,lp) = grid1(i,j)
1389 IF(iget(331) > 0)
THEN
1390 IF(lvls(lp,iget(331)) > 0)
THEN
1395 IF(abs(cfrsl(i,j)-spval) > small)
THEN
1396 cfrsl(i,j) = min(max(0.0,cfrsl(i,j)),1.0)
1397 grid1(i,j) = cfrsl(i,j)*h100
1401 if(grib ==
'grib2')
then
1403 fld_info(cfld)%ifld = iavblfld(iget(331))
1404 fld_info(cfld)%lvl = lvlsxml(lp,iget(331))
1410 datapd(i,j,cfld) = grid1(ii,jj)
1419 IF(iget(015) > 0)
THEN
1420 IF(lvls(lp,iget(015)) > 0)
THEN
1424 egrid2(i,j) = spl(lp)
1428 CALL
caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),egrid1(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend))
1432 IF(tsl(i,j) < spval)
THEN
1433 grid1(i,j) = egrid1(i,j)
1439 if(grib ==
'grib2')
then
1441 fld_info(cfld)%ifld=iavblfld(iget(015))
1442 fld_info(cfld)%lvl=lvlsxml(lp,iget(015))
1448 datapd(i,j,cfld) = grid1(ii,jj)
1457 IF(iget(016) > 0)
THEN
1458 IF(lvls(lp,iget(016)) > 0)
THEN
1462 grid1(i,j) = qsl(i,j)
1465 CALL
bound(grid1,zero,h99999)
1466 if(grib ==
'grib2')
then
1468 fld_info(cfld)%ifld=iavblfld(iget(016))
1469 fld_info(cfld)%lvl=lvlsxml(lp,iget(016))
1475 datapd(i,j,cfld) = grid1(ii,jj)
1484 IF(iget(020) > 0)
THEN
1485 IF(lvls(lp,iget(020)) > 0)
THEN
1489 grid1(i,j) = osl(i,j)
1493 IF (smflag .or. ioform ==
'binarympiio' )
THEN
1494 call allgetherv(grid1)
1495 if (ioform ==
'binarympiio')
then
1498 CALL
smoothc(grid1,sdummy,im,jm,0.5)
1499 CALL
smoothc(grid1,sdummy,im,jm,-0.5)
1502 nsmooth = nint(3.*(13500./dxm))
1505 CALL
smooth(grid1,sdummy,im,jm,0.5)
1510 if(grib ==
'grib2')
then
1512 fld_info(cfld)%ifld=iavblfld(iget(020))
1513 fld_info(cfld)%lvl=lvlsxml(lp,iget(020))
1519 datapd(i,j,cfld) = grid1(ii,jj)
1528 IF(iget(284) > 0)
THEN
1529 IF(lvls(lp,iget(284)) > 0)
THEN
1533 grid1(i,j) = wsl(i,j)
1536 if(grib ==
'grib2')
then
1538 fld_info(cfld)%ifld=iavblfld(iget(284))
1539 fld_info(cfld)%lvl=lvlsxml(lp,iget(284))
1545 datapd(i,j,cfld) = grid1(ii,jj)
1554 IF(iget(085) > 0)
THEN
1555 IF(lvls(lp,iget(085)) > 0)
THEN
1556 CALL
calmcvg(qsl(ista_2l,jsta_2l),usl(ista_2l,jsta_2l),vsl(ista_2l,jsta_2l),egrid1(ista_2l,jsta_2l))
1561 grid1(i,j) = egrid1(i,j)
1569 if(grib ==
'grib2')
then
1571 fld_info(cfld)%ifld=iavblfld(iget(085))
1572 fld_info(cfld)%lvl=lvlsxml(lp,iget(085))
1578 datapd(i,j,cfld) = grid1(ii,jj)
1588 IF(iget(018) > 0.OR.iget(019) > 0)
THEN
1590 IF(iget(018) > 0.)
then
1591 if(lvls(lp,iget(018)) > 0 ) log1=.true.
1593 IF(iget(019) > 0)
then
1594 if(lvls(lp,iget(019)) > 0 ) log1=.true.
1600 grid1(i,j) = usl(i,j)
1601 grid2(i,j) = vsl(i,j)
1606 nsmooth=nint(5.*(13500./dxm))
1607 call allgetherv(grid1)
1609 CALL
smooth(grid1,sdummy,im,jm,0.5)
1611 nsmooth=nint(5.*(13500./dxm))
1612 call allgetherv(grid2)
1614 CALL
smooth(grid2,sdummy,im,jm,0.5)
1618 if(grib ==
'grib2')
then
1620 fld_info(cfld)%ifld=iavblfld(iget(018))
1621 fld_info(cfld)%lvl=lvlsxml(lp,iget(018))
1627 datapd(i,j,cfld) = grid1(ii,jj)
1632 fld_info(cfld)%ifld=iavblfld(iget(019))
1633 fld_info(cfld)%lvl=lvlsxml(lp,iget(019))
1639 datapd(i,j,cfld) = grid2(ii,jj)
1648 IF (iget(021) > 0)
THEN
1649 IF (lvls(lp,iget(021)) > 0)
THEN
1650 CALL
calvor(usl,vsl,egrid1)
1655 grid1(i,j) = egrid1(i,j)
1659 IF (smflag .or. ioform ==
'binarympiio' )
THEN
1660 call allgetherv(grid1)
1661 if (ioform ==
'binarympiio')
then
1664 CALL
smoothc(grid1,sdummy,im,jm,0.5)
1665 CALL
smoothc(grid1,sdummy,im,jm,-0.5)
1668 nsmooth = nint(4.*(13500./dxm))
1671 CALL
smooth(grid1,sdummy,im,jm,0.5)
1676 if(grib ==
'grib2')
then
1678 fld_info(cfld)%ifld=iavblfld(iget(021))
1679 fld_info(cfld)%lvl=lvlsxml(lp,iget(021))
1685 datapd(i,j,cfld) = grid1(ii,jj)
1693 IF (iget(086) > 0)
THEN
1694 IF (lvls(lp,iget(086)) > 0)
THEN
1698 IF(fsl(i,j)<spval)
THEN
1699 egrid2(i,j) = fsl(i,j)*gi
1703 CALL
calstrm(egrid2(ista:iend,jsta:jend),egrid1(ista:iend,jsta:jend))
1707 IF(fsl(i,j) < spval)
THEN
1708 grid1(i,j) = egrid1(i,j)
1714 if(grib ==
'grib2')
then
1716 fld_info(cfld)%ifld=iavblfld(iget(086))
1717 fld_info(cfld)%lvl=lvlsxml(lp,iget(086))
1723 datapd(i,j,cfld) = grid1(ii,jj)
1732 IF (iget(022) > 0)
THEN
1733 IF (lvls(lp,iget(022)) > 0)
THEN
1737 grid1(i,j) = q2sl(i,j)
1740 if(grib ==
'grib2')
then
1742 fld_info(cfld)%ifld=iavblfld(iget(022))
1743 fld_info(cfld)%lvl=lvlsxml(lp,iget(022))
1749 datapd(i,j,cfld) = grid1(ii,jj)
1758 IF (iget(153) > 0)
THEN
1759 IF (lvls(lp,iget(153)) > 0)
THEN
1760 IF(imp_physics==99 .or. imp_physics==98)
then
1765 IF(qw1(i,j) < spval .AND. qi1(i,j) < spval)
THEN
1766 grid1(i,j) = qw1(i,j) + qi1(i,j)
1777 grid1(i,j) = qw1(i,j)
1781 if(grib ==
'grib2')
then
1783 fld_info(cfld)%ifld=iavblfld(iget(153))
1784 fld_info(cfld)%lvl=lvlsxml(lp,iget(153))
1790 datapd(i,j,cfld) = grid1(ii,jj)
1799 IF (iget(166) > 0)
THEN
1800 IF (lvls(lp,iget(166)) > 0)
THEN
1804 grid1(i,j) = qi1(i,j)
1807 if(grib ==
'grib2')
then
1809 fld_info(cfld)%ifld=iavblfld(iget(166))
1810 fld_info(cfld)%lvl=lvlsxml(lp,iget(166))
1816 datapd(i,j,cfld) = grid1(ii,jj)
1824 IF (iget(183) > 0)
THEN
1825 IF (lvls(lp,iget(183)) > 0)
THEN
1829 grid1(i,j) = qr1(i,j)
1832 if(grib ==
'grib2')
then
1834 fld_info(cfld)%ifld=iavblfld(iget(183))
1835 fld_info(cfld)%lvl=lvlsxml(lp,iget(183))
1841 datapd(i,j,cfld) = grid1(ii,jj)
1849 IF (iget(184) > 0)
THEN
1850 IF (lvls(lp,iget(184)) > 0)
THEN
1854 grid1(i,j) = qs1(i,j)
1857 if(grib ==
'grib2')
then
1859 fld_info(cfld)%ifld=iavblfld(iget(184))
1860 fld_info(cfld)%lvl=lvlsxml(lp,iget(184))
1866 datapd(i,j,cfld) = grid1(ii,jj)
1874 IF (iget(416) > 0)
THEN
1875 IF (lvls(lp,iget(416)) > 0)
THEN
1879 grid1(i,j) = qg1(i,j)
1882 if(grib ==
'grib2')
then
1884 fld_info(cfld)%ifld=iavblfld(iget(416))
1885 fld_info(cfld)%lvl=lvlsxml(lp,iget(416))
1891 datapd(i,j,cfld) = grid1(ii,jj)
1900 IF (iget(198) > 0)
THEN
1901 IF (lvls(lp,iget(198)) > 0)
THEN
1905 grid1(i,j) = c1d(i,j)
1908 if(grib ==
'grib2')
then
1910 fld_info(cfld)%ifld=iavblfld(iget(198))
1911 fld_info(cfld)%lvl=lvlsxml(lp,iget(198))
1917 datapd(i,j,cfld) = grid1(ii,jj)
1925 IF (iget(263) > 0)
THEN
1926 IF (lvls(lp,iget(263)) > 0)
THEN
1930 grid1(i,j) = frime(i,j)
1933 if(grib ==
'grib2')
then
1935 fld_info(cfld)%ifld=iavblfld(iget(263))
1936 fld_info(cfld)%lvl=lvlsxml(lp,iget(263))
1942 datapd(i,j,cfld) = grid1(ii,jj)
1950 IF (iget(294) > 0)
THEN
1951 IF (lvls(lp,iget(294)) > 0)
THEN
1955 grid1(i,j) = rad(i,j)
1958 if(grib ==
'grib2')
then
1960 fld_info(cfld)%ifld=iavblfld(iget(294))
1961 fld_info(cfld)%lvl=lvlsxml(lp,iget(294))
1967 datapd(i,j,cfld) = grid1(ii,jj)
1975 IF (iget(251) > 0)
THEN
1976 IF (lvls(lp,iget(251)) > 0)
THEN
1980 grid1(i,j) = dbz1(i,j)
1983 if(grib ==
'grib2')
then
1985 fld_info(cfld)%ifld=iavblfld(iget(251))
1986 fld_info(cfld)%lvl=lvlsxml(lp,iget(251))
1992 datapd(i,j,cfld) = grid1(ii,jj)
2000 IF(iget(257) > 0)
THEN
2001 IF(lvls(lp,iget(257)) > 0)
THEN
2002 CALL
calicing(tsl(ista:iend,jsta:jend), savrh, osl(ista:iend,jsta:jend), egrid1(ista:iend,jsta:jend))
2007 grid1(i,j) = egrid1(i,j)
2010 if(grib ==
'grib2')
then
2012 fld_info(cfld)%ifld=iavblfld(iget(257))
2013 fld_info(cfld)%lvl=lvlsxml(lp,iget(257))
2019 datapd(i,j,cfld) = grid1(ii,jj)
2030 IF(iget(258) > 0)
THEN
2031 IF(lvls(lp,iget(258)) > 0)
THEN
2035 IF(fsl(i,j)<spval)
THEN
2036 grid1(i,j) = fsl(i,j)*gi
2043 CALL
calcat(usl(ista_2l,jsta_2l),vsl(ista_2l,jsta_2l),grid1(ista_2l,jsta_2l) &
2044 ,usl_old(ista_2l,jsta_2l),vsl_old(ista_2l,jsta_2l) &
2045 ,fsl_old(ista_2l,jsta_2l),egrid1(ista_2l,jsta_2l))
2049 grid1(i,j) = egrid1(i,j)
2054 if(grib ==
'grib2')
then
2056 fld_info(cfld)%ifld=iavblfld(iget(258))
2057 fld_info(cfld)%lvl=lvlsxml(lp,iget(258))
2063 datapd(i,j,cfld) = grid1(ii,jj)
2073 IF(iget(450) > 0)
THEN
2074 IF(lvls(lp,iget(450)) > 0)
THEN
2078 grid1(i,j) = icingfsl(i,j)
2081 if(grib ==
'grib2')
then
2083 fld_info(cfld)%ifld=iavblfld(iget(450))
2084 fld_info(cfld)%lvl=lvlsxml(lp,iget(450))
2090 datapd(i,j,cfld) = grid1(ii,jj)
2097 IF(iget(480) > 0)
THEN
2098 IF(lvls(lp,iget(480)) > 0)
THEN
2102 grid1(i,j) = icingvsl(i,j)
2105 if(grib ==
'grib2')
then
2107 fld_info(cfld)%ifld=iavblfld(iget(480))
2108 fld_info(cfld)%lvl=lvlsxml(lp,iget(480))
2114 datapd(i,j,cfld) = grid1(ii,jj)
2121 IF(iget(464) > 0)
THEN
2122 IF(lvls(lp,iget(464)) > 0)
THEN
2126 grid1(i,j) = gtgsl(i,j)
2129 if(grib ==
'grib2')
then
2131 fld_info(cfld)%ifld=iavblfld(iget(464))
2132 fld_info(cfld)%lvl=lvlsxml(lp,iget(464))
2138 datapd(i,j,cfld) = grid1(ii,jj)
2145 IF(iget(465) > 0)
THEN
2146 IF(lvls(lp,iget(465)) > 0)
THEN
2150 grid1(i,j) = catsl(i,j)
2153 if(grib ==
'grib2')
then
2155 fld_info(cfld)%ifld=iavblfld(iget(465))
2156 fld_info(cfld)%lvl=lvlsxml(lp,iget(465))
2162 datapd(i,j,cfld) = grid1(ii,jj)
2169 IF(iget(466) > 0)
THEN
2170 IF(lvls(lp,iget(466)) > 0)
THEN
2174 grid1(i,j) = mwtsl(i,j)
2177 if(grib ==
'grib2')
then
2179 fld_info(cfld)%ifld=iavblfld(iget(466))
2180 fld_info(cfld)%lvl=lvlsxml(lp,iget(466))
2186 datapd(i,j,cfld) = grid1(ii,jj)
2194 DO j=jsta_2l,jend_2u
2195 DO i=ista_2l,iend_2u
2196 usl_old(i,j) = usl(i,j)
2197 vsl_old(i,j) = vsl(i,j)
2198 IF(fsl(i,j)<spval)
THEN
2199 fsl_old(i,j) = fsl(i,j)*gi
2201 fsl_old(i,j) = spval
2207 IF (iget(268) > 0)
THEN
2208 IF (lvls(lp,iget(268)) > 0)
THEN
2212 grid1(i,j) = o3sl(i,j)
2217 if(grib ==
'grib2')
then
2219 fld_info(cfld)%ifld=iavblfld(iget(268))
2220 fld_info(cfld)%lvl=lvlsxml(lp,iget(268))
2226 datapd(i,j,cfld) = grid1(ii,jj)
2234 IF (iget(738) > 0)
THEN
2235 IF (lvls(lp,iget(738)) > 0)
THEN
2239 IF(smokesl(i,j,1)<spval.and.spl(lp)<spval.and.tsl(i,j)<spval)
THEN
2240 grid1(i,j) = (1./rd)*smokesl(i,j,1)*(spl(lp)/(tsl(i,j)*(1e9)))
2246 if(grib ==
'grib2')
then
2248 fld_info(cfld)%ifld=iavblfld(iget(738))
2249 fld_info(cfld)%lvl=lvlsxml(lp,iget(738))
2255 datapd(i,j,cfld) = grid1(ii,jj)
2262 IF (iget(743) > 0)
THEN
2263 IF (lvls(lp,iget(743)) > 0)
THEN
2267 IF(fv3dustsl(i,j,1)<spval.and.spl(lp)<spval.and.tsl(i,j)<spval)
THEN
2268 grid1(i,j) = (1./rd)*fv3dustsl(i,j,1)*(spl(lp)/(tsl(i,j)*(1e9)))
2274 if(grib ==
'grib2')
then
2276 fld_info(cfld)%ifld=iavblfld(iget(743))
2277 fld_info(cfld)%lvl=lvlsxml(lp,iget(743))
2283 datapd(i,j,cfld) = grid1(ii,jj)
2290 IF (iget(1013) > 0)
THEN
2291 IF (lvls(lp,iget(1013)) > 0)
THEN
2295 IF(coarsepmsl(i,j,1)<spval.and.spl(lp)<spval.and.tsl(i,j)<spval)
THEN
2296 grid1(i,j) = (1./rd)*coarsepmsl(i,j,1)*(spl(lp)/(tsl(i,j)*(1e9)))
2302 if(grib ==
'grib2')
then
2304 fld_info(cfld)%ifld=iavblfld(iget(1013))
2305 fld_info(cfld)%lvl=lvlsxml(lp,iget(1013))
2311 datapd(i,j,cfld) = grid1(ii,jj)
2318 if(iostatusd3d==0 .and. d3d_on)
then
2320 IF (iget(355) > 0)
THEN
2321 IF (lvls(lp,iget(355)) > 0)
THEN
2325 grid1(i,j) = d3dsl(i,j,1)
2330 if (itd3d /= 0)
then
2331 ifincr = mod(ifhr,itd3d)
2332 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2338 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2340 IF (ifincr == 0)
THEN
2343 id(18) = ifhr-ifincr
2344 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2346 if(grib ==
'grib2')
then
2348 fld_info(cfld)%ifld=iavblfld(iget(355))
2349 fld_info(cfld)%lvl=lvlsxml(lp,iget(355))
2351 fld_info(cfld)%ntrange=0
2353 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2355 fld_info(cfld)%tinvstat=itd3d
2361 datapd(i,j,cfld) = grid1(ii,jj)
2368 IF (iget(354) > 0)
THEN
2369 IF (lvls(lp,iget(354)) > 0)
THEN
2373 grid1(i,j) = d3dsl(i,j,2)
2378 if (itd3d /= 0)
then
2379 ifincr = mod(ifhr,itd3d)
2380 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2386 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2388 IF (ifincr == 0)
THEN
2391 id(18) = ifhr-ifincr
2392 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2394 if(grib ==
'grib2')
then
2396 fld_info(cfld)%ifld=iavblfld(iget(354))
2397 fld_info(cfld)%lvl=lvlsxml(lp,iget(354))
2399 fld_info(cfld)%ntrange=0
2401 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2403 fld_info(cfld)%tinvstat=itd3d
2409 datapd(i,j,cfld) = grid1(ii,jj)
2416 IF (iget(356) > 0)
THEN
2417 IF (lvls(lp,iget(356)) > 0)
THEN
2421 grid1(i,j) = d3dsl(i,j,3)
2426 if (itd3d /= 0)
then
2427 ifincr = mod(ifhr,itd3d)
2428 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2434 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2436 IF (ifincr == 0)
THEN
2439 id(18) = ifhr-ifincr
2440 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2442 if(grib ==
'grib2')
then
2444 fld_info(cfld)%ifld=iavblfld(iget(356))
2445 fld_info(cfld)%lvl=lvlsxml(lp,iget(356))
2447 fld_info(cfld)%ntrange=0
2449 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2451 fld_info(cfld)%tinvstat=itd3d
2457 datapd(i,j,cfld) = grid1(ii,jj)
2464 IF (iget(357) > 0)
THEN
2465 IF (lvls(lp,iget(357)) > 0)
THEN
2469 grid1(i,j) = d3dsl(i,j,4)
2474 if (itd3d /= 0)
then
2475 ifincr = mod(ifhr,itd3d)
2476 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2482 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2484 IF (ifincr == 0)
THEN
2487 id(18) = ifhr-ifincr
2488 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2490 if(grib ==
'grib2')
then
2492 fld_info(cfld)%ifld=iavblfld(iget(357))
2493 fld_info(cfld)%lvl=lvlsxml(lp,iget(357))
2495 fld_info(cfld)%ntrange=0
2497 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2499 fld_info(cfld)%tinvstat=itd3d
2505 datapd(i,j,cfld) = grid1(ii,jj)
2512 IF (iget(358) > 0)
THEN
2513 IF (lvls(lp,iget(358)) > 0)
THEN
2517 grid1(i,j) = d3dsl(i,j,5)
2522 if (itd3d /= 0)
then
2523 ifincr = mod(ifhr,itd3d)
2524 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2530 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2532 IF (ifincr == 0)
THEN
2535 id(18) = ifhr-ifincr
2536 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2538 if(grib ==
'grib2')
then
2540 fld_info(cfld)%ifld=iavblfld(iget(358))
2541 fld_info(cfld)%lvl=lvlsxml(lp,iget(358))
2543 fld_info(cfld)%ntrange=0
2545 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2547 fld_info(cfld)%tinvstat=itd3d
2553 datapd(i,j,cfld) = grid1(ii,jj)
2560 IF (iget(359) > 0)
THEN
2561 IF (lvls(lp,iget(359)) > 0)
THEN
2565 grid1(i,j) = d3dsl(i,j,6)
2570 if (itd3d /= 0)
then
2571 ifincr = mod(ifhr,itd3d)
2572 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2578 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2580 IF (ifincr == 0)
THEN
2583 id(18) = ifhr-ifincr
2584 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2586 if(grib ==
'grib2')
then
2588 fld_info(cfld)%ifld=iavblfld(iget(359))
2589 fld_info(cfld)%lvl=lvlsxml(lp,iget(359))
2591 fld_info(cfld)%ntrange=0
2593 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2595 fld_info(cfld)%tinvstat=itd3d
2601 datapd(i,j,cfld) = grid1(ii,jj)
2608 IF (iget(360) > 0)
THEN
2609 IF (lvls(lp,iget(360)) > 0)
THEN
2613 grid1(i,j) = d3dsl(i,j,7)
2618 if (itd3d /= 0)
then
2619 ifincr = mod(ifhr,itd3d)
2620 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2626 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2628 IF (ifincr == 0)
THEN
2631 id(18) = ifhr-ifincr
2632 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2634 if(grib ==
'grib2')
then
2636 fld_info(cfld)%ifld=iavblfld(iget(360))
2637 fld_info(cfld)%lvl=lvlsxml(lp,iget(360))
2639 fld_info(cfld)%ntrange=0
2641 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2643 fld_info(cfld)%tinvstat=itd3d
2649 datapd(i,j,cfld) = grid1(ii,jj)
2656 IF (iget(361) > 0)
THEN
2657 IF (lvls(lp,iget(361)) > 0)
THEN
2661 grid1(i,j) = d3dsl(i,j,8)
2666 if (itd3d /= 0)
then
2667 ifincr = mod(ifhr,itd3d)
2668 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2674 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2676 IF (ifincr == 0)
THEN
2679 id(18) = ifhr-ifincr
2680 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2682 if(grib ==
'grib2')
then
2684 fld_info(cfld)%ifld=iavblfld(iget(361))
2685 fld_info(cfld)%lvl=lvlsxml(lp,iget(361))
2687 fld_info(cfld)%ntrange=0
2689 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2691 fld_info(cfld)%tinvstat=itd3d
2697 datapd(i,j,cfld) = grid1(ii,jj)
2704 IF (iget(362) > 0)
THEN
2705 IF (lvls(lp,iget(362)) > 0)
THEN
2709 grid1(i,j) = d3dsl(i,j,9)
2714 if (itd3d /= 0)
then
2715 ifincr = mod(ifhr,itd3d)
2716 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2722 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2724 IF (ifincr == 0)
THEN
2727 id(18) = ifhr-ifincr
2728 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2730 if(grib ==
'grib2')
then
2732 fld_info(cfld)%ifld=iavblfld(iget(362))
2733 fld_info(cfld)%lvl=lvlsxml(lp,iget(362))
2735 fld_info(cfld)%ntrange=0
2737 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2739 fld_info(cfld)%tinvstat=itd3d
2745 datapd(i,j,cfld) = grid1(ii,jj)
2752 IF (iget(363) > 0)
THEN
2753 IF (lvls(lp,iget(363)) > 0)
THEN
2757 grid1(i,j) = d3dsl(i,j,10)
2762 if (itd3d /= 0)
then
2763 ifincr = mod(ifhr,itd3d)
2764 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2771 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2773 IF (ifincr == 0)
THEN
2776 id(18) = ifhr-ifincr
2777 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2779 if(grib ==
'grib2')
then
2781 fld_info(cfld)%ifld=iavblfld(iget(363))
2782 fld_info(cfld)%lvl=lvlsxml(lp,iget(363))
2784 fld_info(cfld)%ntrange=0
2786 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2788 fld_info(cfld)%tinvstat=itd3d
2794 datapd(i,j,cfld) = grid1(ii,jj)
2801 IF (iget(364) > 0)
THEN
2802 IF (lvls(lp,iget(364)) > 0)
THEN
2806 grid1(i,j) = d3dsl(i,j,11)
2811 if (itd3d /= 0)
then
2812 ifincr = mod(ifhr,itd3d)
2813 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2820 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2822 IF (ifincr == 0)
THEN
2825 id(18) = ifhr-ifincr
2826 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2828 if(grib ==
'grib2')
then
2830 fld_info(cfld)%ifld=iavblfld(iget(364))
2831 fld_info(cfld)%lvl=lvlsxml(lp,iget(364))
2833 fld_info(cfld)%ntrange=0
2835 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2837 fld_info(cfld)%tinvstat=itd3d
2843 datapd(i,j,cfld) = grid1(ii,jj)
2850 IF (iget(365) > 0)
THEN
2851 IF (lvls(lp,iget(365)) > 0)
THEN
2855 grid1(i,j) = d3dsl(i,j,12)
2860 if (itd3d /= 0)
then
2861 ifincr = mod(ifhr,itd3d)
2862 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2869 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2871 IF (ifincr == 0)
THEN
2874 id(18) = ifhr-ifincr
2875 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2877 if(grib ==
'grib2')
then
2879 fld_info(cfld)%ifld=iavblfld(iget(365))
2880 fld_info(cfld)%lvl=lvlsxml(lp,iget(365))
2882 fld_info(cfld)%ntrange=0
2884 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2886 fld_info(cfld)%tinvstat=itd3d
2892 datapd(i,j,cfld) = grid1(ii,jj)
2899 IF (iget(366) > 0)
THEN
2900 IF (lvls(lp,iget(366)) > 0)
THEN
2904 grid1(i,j) = d3dsl(i,j,13)
2909 if (itd3d /= 0)
then
2910 ifincr = mod(ifhr,itd3d)
2911 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2918 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2920 IF (ifincr == 0)
THEN
2923 id(18) = ifhr-ifincr
2924 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2926 if(grib ==
'grib2')
then
2928 fld_info(cfld)%ifld=iavblfld(iget(366))
2929 fld_info(cfld)%lvl=lvlsxml(lp,iget(366))
2931 fld_info(cfld)%ntrange=0
2933 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2935 fld_info(cfld)%tinvstat=itd3d
2941 datapd(i,j,cfld) = grid1(ii,jj)
2948 IF (iget(367) > 0)
THEN
2949 IF (lvls(lp,iget(367)) > 0)
THEN
2953 grid1(i,j) = d3dsl(i,j,14)
2958 if (itd3d /= 0)
then
2959 ifincr = mod(ifhr,itd3d)
2960 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
2967 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2969 IF (ifincr == 0)
THEN
2972 id(18) = ifhr-ifincr
2973 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2975 if(grib ==
'grib2')
then
2977 fld_info(cfld)%ifld=iavblfld(iget(367))
2978 fld_info(cfld)%lvl=lvlsxml(lp,iget(367))
2980 fld_info(cfld)%ntrange=0
2982 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
2984 fld_info(cfld)%tinvstat=itd3d
2990 datapd(i,j,cfld) = grid1(ii,jj)
2997 IF (iget(368) > 0)
THEN
2998 IF (lvls(lp,iget(368)) > 0)
THEN
3002 grid1(i,j) = d3dsl(i,j,15)
3007 if (itd3d /= 0)
then
3008 ifincr = mod(ifhr,itd3d)
3009 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3016 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3018 IF (ifincr == 0)
THEN
3021 id(18) = ifhr-ifincr
3022 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3024 if(grib ==
'grib2')
then
3026 fld_info(cfld)%ifld=iavblfld(iget(368))
3027 fld_info(cfld)%lvl=lvlsxml(lp,iget(368))
3029 fld_info(cfld)%ntrange=0
3031 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3033 fld_info(cfld)%tinvstat=itd3d
3039 datapd(i,j,cfld) = grid1(ii,jj)
3046 IF (iget(369) > 0)
THEN
3047 IF (lvls(lp,iget(369)) > 0)
THEN
3051 grid1(i,j) = d3dsl(i,j,16)
3056 if (itd3d /= 0)
then
3057 ifincr = mod(ifhr,itd3d)
3058 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3064 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3066 IF (ifincr == 0)
THEN
3069 id(18) = ifhr-ifincr
3070 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3072 if(grib ==
'grib2')
then
3074 fld_info(cfld)%ifld=iavblfld(iget(369))
3075 fld_info(cfld)%lvl=lvlsxml(lp,iget(369))
3077 fld_info(cfld)%ntrange=0
3079 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3081 fld_info(cfld)%tinvstat=itd3d
3087 datapd(i,j,cfld) = grid1(ii,jj)
3094 IF (iget(370) > 0)
THEN
3095 IF (lvls(lp,iget(370)) > 0)
THEN
3099 grid1(i,j) = d3dsl(i,j,17)
3104 if (itd3d /= 0)
then
3105 ifincr = mod(ifhr,itd3d)
3106 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3113 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3115 IF (ifincr == 0)
THEN
3118 id(18) = ifhr-ifincr
3119 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3121 if(grib ==
'grib2')
then
3123 fld_info(cfld)%ifld=iavblfld(iget(370))
3124 fld_info(cfld)%lvl=lvlsxml(lp,iget(370))
3126 fld_info(cfld)%ntrange=0
3128 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3130 fld_info(cfld)%tinvstat=itd3d
3136 datapd(i,j,cfld) = grid1(ii,jj)
3143 IF (iget(371) > 0)
THEN
3144 IF (lvls(lp,iget(371)) > 0)
THEN
3148 grid1(i,j) = d3dsl(i,j,18)
3153 if (itd3d /= 0)
then
3154 ifincr = mod(ifhr,itd3d)
3155 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3162 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3164 IF (ifincr == 0)
THEN
3167 id(18) = ifhr-ifincr
3168 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3170 if(grib ==
'grib2')
then
3172 fld_info(cfld)%ifld=iavblfld(iget(371))
3173 fld_info(cfld)%lvl=lvlsxml(lp,iget(371))
3175 fld_info(cfld)%ntrange=0
3177 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3179 fld_info(cfld)%tinvstat=itd3d
3185 datapd(i,j,cfld) = grid1(ii,jj)
3192 IF (iget(372) > 0)
THEN
3193 IF (lvls(lp,iget(372)) > 0)
THEN
3197 grid1(i,j) = d3dsl(i,j,19)
3202 if (itd3d /= 0)
then
3203 ifincr = mod(ifhr,itd3d)
3204 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3210 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3212 IF (ifincr == 0)
THEN
3215 id(18) = ifhr-ifincr
3216 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3218 if(grib ==
'grib2')
then
3220 fld_info(cfld)%ifld=iavblfld(iget(372))
3221 fld_info(cfld)%lvl=lvlsxml(lp,iget(372))
3223 fld_info(cfld)%ntrange=0
3225 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3227 fld_info(cfld)%tinvstat=itd3d
3233 datapd(i,j,cfld) = grid1(ii,jj)
3240 IF (iget(373) > 0)
THEN
3241 IF (lvls(lp,iget(373)) > 0)
THEN
3245 grid1(i,j) = d3dsl(i,j,20)
3250 if (itd3d /= 0)
then
3251 ifincr = mod(ifhr,itd3d)
3252 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3259 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3261 IF (ifincr == 0)
THEN
3264 id(18) = ifhr-ifincr
3265 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3267 if(grib ==
'grib2')
then
3269 fld_info(cfld)%ifld=iavblfld(iget(373))
3270 fld_info(cfld)%lvl=lvlsxml(lp,iget(373))
3272 fld_info(cfld)%ntrange=0
3274 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3276 fld_info(cfld)%tinvstat=itd3d
3282 datapd(i,j,cfld) = grid1(ii,jj)
3289 IF (iget(374) > 0)
THEN
3290 IF (lvls(lp,iget(374)) > 0)
THEN
3294 grid1(i,j) = d3dsl(i,j,21)
3299 if (itd3d /= 0)
then
3300 ifincr = mod(ifhr,itd3d)
3301 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3308 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3310 IF (ifincr == 0)
THEN
3313 id(18) = ifhr-ifincr
3314 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3316 if(grib ==
'grib2')
then
3318 fld_info(cfld)%ifld=iavblfld(iget(374))
3319 fld_info(cfld)%lvl=lvlsxml(lp,iget(374))
3321 fld_info(cfld)%ntrange=0
3323 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3325 fld_info(cfld)%tinvstat=itd3d
3331 datapd(i,j,cfld) = grid1(ii,jj)
3338 IF (iget(375) > 0)
THEN
3339 IF (lvls(lp,iget(375)) > 0)
THEN
3343 grid1(i,j) = d3dsl(i,j,22)
3348 if (itd3d /= 0)
then
3349 ifincr = mod(ifhr,itd3d)
3350 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3356 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3358 IF (ifincr == 0)
THEN
3361 id(18) = ifhr-ifincr
3362 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3364 if(grib ==
'grib2')
then
3366 fld_info(cfld)%ifld=iavblfld(iget(375))
3367 fld_info(cfld)%lvl=lvlsxml(lp,iget(375))
3369 fld_info(cfld)%ntrange=0
3371 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3373 fld_info(cfld)%tinvstat=itd3d
3379 datapd(i,j,cfld) = grid1(ii,jj)
3386 IF (iget(379) > 0)
THEN
3387 IF (lvls(lp,iget(379)) > 0)
THEN
3391 IF(d3dsl(i,j,1)/=spval)
THEN
3392 grid1(i,j) = d3dsl(i,j,1) + d3dsl(i,j,2) &
3393 + d3dsl(i,j,3) + d3dsl(i,j,4) &
3394 + d3dsl(i,j,5) + d3dsl(i,j,6)
3402 if (itd3d /= 0)
then
3403 ifincr = mod(ifhr,itd3d)
3404 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3410 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3412 IF (ifincr == 0)
THEN
3415 id(18) = ifhr-ifincr
3416 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3418 if(grib ==
'grib2')
then
3420 fld_info(cfld)%ifld=iavblfld(iget(379))
3421 fld_info(cfld)%lvl=lvlsxml(lp,iget(379))
3423 fld_info(cfld)%ntrange=0
3425 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3427 fld_info(cfld)%tinvstat=itd3d
3433 datapd(i,j,cfld) = grid1(ii,jj)
3440 IF (iget(391) > 0)
THEN
3441 IF (lvls(lp,iget(391)) > 0)
THEN
3445 grid1(i,j) = d3dsl(i,j,23)
3450 if (itd3d /= 0)
then
3451 ifincr = mod(ifhr,itd3d)
3452 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3459 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3461 IF (ifincr == 0)
THEN
3464 id(18) = ifhr-ifincr
3465 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3467 if(grib ==
'grib2')
then
3469 fld_info(cfld)%ifld=iavblfld(iget(391))
3470 fld_info(cfld)%lvl=lvlsxml(lp,iget(391))
3472 fld_info(cfld)%ntrange=0
3474 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3476 fld_info(cfld)%tinvstat=itd3d
3482 datapd(i,j,cfld) = grid1(ii,jj)
3489 IF (iget(392) > 0)
THEN
3490 IF (lvls(lp,iget(392)) > 0)
THEN
3494 grid1(i,j) = d3dsl(i,j,24)
3499 if (itd3d /= 0)
then
3500 ifincr = mod(ifhr,itd3d)
3501 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3508 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3510 IF (ifincr == 0)
THEN
3513 id(18) = ifhr-ifincr
3514 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3516 if(grib ==
'grib2')
then
3518 fld_info(cfld)%ifld=iavblfld(iget(392))
3519 fld_info(cfld)%lvl=lvlsxml(lp,iget(392))
3521 fld_info(cfld)%ntrange=0
3523 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3525 fld_info(cfld)%tinvstat=itd3d
3531 datapd(i,j,cfld) = grid1(ii,jj)
3538 IF (iget(393) > 0)
THEN
3539 IF (lvls(lp,iget(393)) > 0)
THEN
3543 grid1(i,j) = d3dsl(i,j,25)
3548 if (itd3d /= 0)
then
3549 ifincr = mod(ifhr,itd3d)
3550 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3557 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3559 IF (ifincr == 0)
THEN
3562 id(18) = ifhr-ifincr
3563 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3565 if(grib ==
'grib2')
then
3567 fld_info(cfld)%ifld=iavblfld(iget(393))
3568 fld_info(cfld)%lvl=lvlsxml(lp,iget(393))
3570 fld_info(cfld)%ntrange=0
3572 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3574 fld_info(cfld)%tinvstat=itd3d
3580 datapd(i,j,cfld) = grid1(ii,jj)
3587 IF (iget(394) > 0)
THEN
3588 IF (lvls(lp,iget(394)) > 0)
THEN
3592 grid1(i,j) = d3dsl(i,j,26)
3597 if (itd3d /= 0)
then
3598 ifincr = mod(ifhr,itd3d)
3599 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3606 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3608 IF (ifincr == 0)
THEN
3611 id(18) = ifhr-ifincr
3612 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3614 if(grib ==
'grib2')
then
3616 fld_info(cfld)%ifld=iavblfld(iget(394))
3617 fld_info(cfld)%lvl=lvlsxml(lp,iget(394))
3619 fld_info(cfld)%ntrange=0
3621 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3623 fld_info(cfld)%tinvstat=itd3d
3629 datapd(i,j,cfld) = grid1(ii,jj)
3636 IF (iget(395) > 0)
THEN
3637 IF (lvls(lp,iget(395)) > 0)
THEN
3641 grid1(i,j) = d3dsl(i,j,27)
3646 if (itd3d /= 0)
then
3647 ifincr = mod(ifhr,itd3d)
3648 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itd3d*60)
3655 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3657 IF (ifincr == 0)
THEN
3660 id(18) = ifhr-ifincr
3661 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3663 if(grib ==
'grib2')
then
3665 fld_info(cfld)%ifld=iavblfld(iget(395))
3666 fld_info(cfld)%lvl=lvlsxml(lp,iget(395))
3668 fld_info(cfld)%ntrange=0
3670 fld_info(cfld)%ntrange=(ifhr-id(18))/itd3d
3672 fld_info(cfld)%tinvstat=itd3d
3678 datapd(i,j,cfld) = grid1(ii,jj)
3687 IF (iget(455) > 0)
THEN
3688 ii=(ista+iend)/2+100
3689 jj=(jsta+jend)/2-100
3690 IF(abs(spl(lp)-50000.)<small) luhi=lp
3691 IF(abs(spl(lp)-70000.)<small)
THEN
3698 egrid2(i,j) = spl(lp)
3701 CALL
caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),tdsl(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend))
3706 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3707 dum1 = tsl(i,j)-tprs(i,j,luhi)
3710 ELSE IF(dum1 > 17. .AND. dum1 <= 21.)
THEN
3715 dum1 = tsl(i,j)-tdsl(i,j)
3716 IF(dum1 <= 14.)
THEN
3718 ELSE IF(dum1>14. .AND. dum1<=20.)
THEN
3723 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j)<spval)
THEN
3724 haines(i,j) = istaa + imois
3737 IF(abs(spl(lp)-85000.)<small)
THEN
3742 egrid2(i,j) = spl(lp)
3745 CALL
caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),tdsl(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend))
3750 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3751 dum1 = tsl(i,j)-tprs(i,j,luhi)
3754 ELSE IF(dum1 > 5. .AND. dum1 <= 10.)
THEN
3759 dum1 = tsl(i,j)-tdsl(i,j)
3762 ELSE IF(dum1 > 5. .AND. dum1 <= 12.)
THEN
3769 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j)<spval)
THEN
3770 haines(i,j) = istaa + imois
3781 IF(abs(spl(lp)-95000.)<small)
THEN
3789 CALL
caldwp(egrid2(ista:iend,jsta:jend),qsl(ista:iend,jsta:jend),tdsl(ista:iend,jsta:jend),tsl(ista:iend,jsta:jend))
3794 IF(sm(i,j) < 1.0 .AND. zint(i,j,lm+1) < fsl(i,j)*gi)
THEN
3795 dum1 = tsl(i,j)-tprs(i,j,luhi)
3798 ELSE IF(dum1 > 3. .AND. dum1 <=7. )
THEN
3803 dum1 = tsl(i,j)-tdsl(i,j)
3806 ELSE IF(dum1 > 5. .AND. dum1 <= 9.)
THEN
3813 IF(tsl(i,j)<spval.and.tprs(i,j,luhi)<spval.and.tdsl(i,j)<spval)
THEN
3814 haines(i,j) = istaa + imois
3822 if(grib ==
'grib2')
then
3824 fld_info(cfld)%ifld=iavblfld(iget(455))
3830 datapd(i,j,cfld) = haines(ii,jj)
3846 IF (iget(423) > 0)
THEN
3852 grid1(i,j) = w_up_max(i,j)
3856 if(grib ==
'grib2')
then
3858 fld_info(cfld)%ifld = iavblfld(iget(423))
3859 fld_info(cfld)%lvl = lvlsxml(lp,iget(423))
3861 fld_info(cfld)%tinvstat=1
3863 fld_info(cfld)%tinvstat=0
3865 fld_info(cfld)%ntrange=1
3871 datapd(i,j,cfld) = grid1(ii,jj)
3879 IF (iget(424) > 0)
THEN
3884 grid1(i,j) = w_dn_max(i,j)
3887 if(grib ==
'grib2')
then
3889 fld_info(cfld)%ifld=iavblfld(iget(424))
3890 fld_info(cfld)%lvl=lvlsxml(lp,iget(424))
3892 fld_info(cfld)%tinvstat=1
3894 fld_info(cfld)%tinvstat=0
3896 fld_info(cfld)%ntrange=1
3902 datapd(i,j,cfld) = grid1(ii,jj)
3915 IF (iget(425) > 0)
THEN
3920 grid1(i,j) = w_mean(i,j)
3923 if(grib ==
'grib2')
then
3925 fld_info(cfld)%ifld = iavblfld(iget(425))
3926 fld_info(cfld)%lvl = lvlsxml(lp,iget(425))
3928 fld_info(cfld)%tinvstat = 0
3930 fld_info(cfld)%tinvstat = 1
3932 fld_info(cfld)%ntrange = 1
3938 datapd(i,j,cfld) = grid1(ii,jj)
3949 IF(iget(023) > 0)
THEN
3950 IF(gridtype ==
'A'.OR. gridtype ==
'B')
then
3951 if(me==0)print*,
'CALLING MEMSLP for A or B grid'
3952 CALL memslp(tprs,qprs,fprs)
3953 if(me==0)print*,
'aft CALLING MEMSLP for A or B grid,pslp=', &
3954 maxval(pslp(ista:iend,jsta:jend)),minval(pslp(ista:iend,jsta:jend)),pslp((ista+iend)/2,(jsta+jend)/2)
3955 ELSE IF (gridtype ==
'E')
THEN
3956 if(me==0)print*,
'CALLING MEMSLP_NMM for E grid'
3959 print*,
'unknow grid type-> WONT DERIVE MESINGER SLP'
3964 grid1(i,j) = pslp(i,j)
3969 if(grib ==
'grib2')
then
3971 fld_info(cfld)%ifld = iavblfld(iget(023))
3977 datapd(i,j,cfld) = grid1(ii,jj)
3984 IF(iget(445) > 0)
THEN
3985 if(me==0)print*,
'CALLING MAPS SLP'
3990 grid1(i,j) = pslp(i,j)
3993 if(grib ==
'grib2')
then
3995 fld_info(cfld)%ifld = iavblfld(iget(445))
4001 datapd(i,j,cfld) = grid1(ii,jj)
4009 IF(iget(023) > 0.OR.iget(445) > 0)
THEN
4010 IF(iget(012) > 0)
THEN
4014 IF(abs(spl(lp)-1.0e5) <= 1.0e-5)
THEN
4015 IF(lvls(lp,iget(012)) > 0)
THEN
4017 IF(modelname ==
'GFS')
THEN
4023 IF(fsl(i,j)<spval)
THEN
4024 grid1(i,j) = fsl(i,j)*gi
4034 IF(pslp(i,j) < spval)
THEN
4037 psfc = pint(i,j,nint(lmh(i,j))+1)
4038 IF(abs(pslpij-psfc) < 5.e2)
THEN
4039 grid1(i,j) = rd*tprs(i,j,lp)*(alpsl-alpth)
4041 grid1(i,j) = fis(i,j)/(alpsl-log(psfc))*(alpsl-alpth)
4043 z1000(i,j) = grid1(i,j)*gi
4044 grid1(i,j) = z1000(i,j)
4054 nsmooth = nint(5.*(13500./dxm))
4055 call allgetherv(grid1)
4057 CALL
smooth(grid1,sdummy,im,jm,0.5)
4061 if(grib ==
'grib2')
then
4063 fld_info(cfld)%ifld = iavblfld(iget(012))
4064 fld_info(cfld)%lvl = lvlsxml(lp,iget(012))
4070 datapd(i,j,cfld) = grid1(ii,jj)
4082 IF ( iget(1006)>0 )
THEN
4083 if(me==0)print*,
'CALLING SLR'
4094 if(egrid1(i,j) < spval)
then
4095 if(egrid1(i,j)>=1.)
then
4096 grid1(i,j)=1000./egrid1(i,j)
4103 if(grib==
'grib2')
then
4105 fld_info(cfld)%ifld=iavblfld(iget(1006))
4111 datapd(i,j,cfld) = grid1(ii,jj)
4117 if(
allocated(d3dsl))
deallocate(d3dsl)
4118 if(
allocated(smokesl))
deallocate(smokesl)
4119 if(
allocated(fv3dustsl))
deallocate(fv3dustsl)
4120 if(
allocated(coarsepmsl))
deallocate(coarsepmsl)
4121 if(me==0)print*,
'MDL2P completed'
subroutine calstrm(Z1D, STRM)
Subroutine that computes geo streamfunction.
subroutine caldwp(P1D, Q1D, TDWP, T1D)
Computes dewpoint from P, T, and Q.
subroutine, public calslr_roebber(tprs, rhprs, slr)
calslr_roebber() computes snow solid-liquid-ratio slr using the Roebber algorithm.
subroutine, public calslr_uutah(SLR)
calslr_uutah() computes snow solid-liquid-ratio slr using the Steenburgh algorithm.
subroutine smooth(FIELD, HOLD, IX, IY, SMTH)
smooth() smooths a meteorological field using Shapiro smoother.
subroutine, public calvor(UWND, VWND, ABSV)
CALVOR() computes absolute vorticity.
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 calcat(U, V, H, U_OLD, V_OLD, H_OLD, CAT)
Computes Clear Air Turbulence Index.
subroutine calmcvg(Q1D, U1D, V1D, QCNVG)
Subroutine that computes moisture convergence.
subroutine, public calrh(P1, T1, Q1, RH)
CALRH() computes relative humidity.
subroutine smoothc(FIELD, HOLD, IX, IY, SMTH)
smoothc() smooths a meteorological field using Shapiro smoother.
elemental real function, public fpvsnew(t)
subroutine calicing(T1, RH, OMGA, ICING)
Computes In-Flight Icing.