84 use vrbls4d,
only: dust, salt, suso, waso, soot, smoke
85 use vrbls3d,
only: zmid, t, pmid, q, cwm, f_ice, f_rain, f_rimef, qqw, qqi,&
86 qqr, qqs, cfr, cfr_raw, dbz, dbzr, dbzi, dbzc, qqw, nlice, nrain, qqg, zint, qqni,&
87 qqnr, qqnw, qqnwfa, qqnifa, uh, vh, mcvg, omga, wh, q2, ttnd, rswtt, &
88 rlwtt, train, tcucn, o3, rhomid, dpres, el_pbl, pint, icing_gfip, icing_gfis, &
89 catedr,mwt,gtg, ref_10cm, pmtf, ozcon
91 use vrbls2d,
only: slp, hbot, htop, cnvcfr, cprate, cnvcfr, sfcshx,sfclhx,ustar,z0,&
92 sr, prec, vis, czen, pblh, pblhgust, u10, v10, avgprec, avgcprate, &
93 ref1km_10cm,ref4km_10cm,refc_10cm,refd_max
94 use masks,
only: lmh, gdlat, gdlon,sm,sice,dx,dy
95 use params_mod,
only: rd, gi, g, rog, h1, tfrz, d00, dbzmin, d608, small,&
96 h100, h1m12, h99999,pi,erad
97 use pmicrph_mod,
only: r1, const1r, qr0, delqr0, const2r, ron, topr, son,&
98 tops, dsnow, drain,const_ng1, const_ng2, gon, topg, dgraupel
99 use ctlblk_mod,
only: jsta_2l, jend_2u, lm, jsta, jend, grib, cfld, datapd,&
100 fld_info, modelname, imp_physics, dtq2, spval, icount_calmict,&
101 me, dt, avrain, theat, ifhr, ifmin, avcnvc, lp1, im, jm, &
102 ista, iend, ista_2l, iend_2u, aqfcmaq_on
103 use rqstfld_mod,
only: iget, id, lvls, iavblfld, lvlsxml
104 use gridspec_mod,
only: gridtype,maptype,dxval
106 use upp_math,
only: h2u, h2v, u2h, v2h
112 REAL,
PARAMETER :: CURATE=24.*1000., ctim1=0., ctim2=24.*3600.
113 &, raincon=0.8333*1.1787e4, snocon=0.94*1.4594e5
118 &, dbzmax=80., zr_a=300., zr_b=1.4
123 DATA cc / 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0 /
124 DATA ppt/ 0., .14, .31, .70, 1.6, 3.4, 7.7, 17., 38., 85. /
125 INTEGER,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: ICBOT, ICTOP
133 real,
dimension(im,jm) :: GRID1, GRID2
134 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: EGRID1, EGRID2
136 fi1d, fr1d, fs1d, qw1
138 curefl, curefl_i, zfrz, dbz1
139 dbzi1, dbzc1, egrid6, egrid7
141 qcd, qice1, qrain1, qsno1
142 qg1, refl1km, refl4km, rh
145 REAL,
ALLOCATABLE :: EL(:,:,:),RICHNO(:,:,:) ,PBLRI(:,:), PBLREGIME(
147 integer I,J,L,Lctop,LLMH,IICE,LL,II,JJ,IFINCR,ITHEAT,NC,NMOD,LLL &
148 ,iz1km,iz4km, lcount, hcount, itype, item
150 real RDTPHS,CFRdum,PMOD,CC1,CC2,P1,P2,CUPRATE,FACR,RRNUM &
151 ,rainrate,term1,term2,term3,qrold,snorate,dens,delz,fctr,hgt
152 ,rain,ronv,slor,snow,rhoqs,temp_c,sonv,slos
153 ,graupel,rhoqg,gonv,slog, alpha, rhod, bb
154 ,ze_s, ze_r, ze_g, ze_max, ze_nc, ze_conv, ze_sum
155 ,ze_smax, ze_rmax,ze_gmax, ze_nc_1km, ze_nc_4km, dz
156 ,lapses, expo,expinv,tsfcnew, gam,gamd,gams, pblhold
157 ,psfc,tsfc,zsfc,dp,dpbnd,zmin
159 real,
allocatable :: RH3D(:,:,:)
163 REAL SDUMMY(IM,2),dxm
165 real,
dimension(ista:iend,jsta:jend) :: dummy, cape, cin
166 integer idummy(ista:iend,jsta:jend)
168 real,
PARAMETER :: ZSL=0.0, taucr=rd*gi*290.66, const=0.005*g/rd, gord
169 logical,
parameter :: debugprint = .false.
178 zmin=10.**(0.1*dbzmin)
187 model_radar = .false.
192 IF(abs(ref_10cm(i,j,l)-spval)>small)
THEN
199 if(debugprint .and. me==0)print*,
'Did post read in model derived radar ref '
200 'MODELNAME=',trim(modelname),
' imp_physics=',imp_physics
201 ALLOCATE(el(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
202 ALLOCATE(richno(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
203 ALLOCATE(pblri(ista_2l:iend_2u,jsta_2l:jend_2u))
206 IF (iget(105) > 0 .OR. iget(445) > 0)
THEN
209 IF (iget(105) > 0)
THEN
213 grid1(i,j) = slp(i,j)
216 if(grib==
"grib2")
then
218 fld_info(cfld)%ifld=iavblfld(iget(105))
224 datapd(i,j,cfld) = grid1(ii,jj)
234 IF (modelname==
'NMM' .OR. imp_physics==5 .or. &
235 imp_physics==85 .or. imp_physics==95)
THEN
237 rdtphs=24.*3.6e6/dtq2
240 IF ((hbot(i,j)-htop(i,j)) <= 1.0)
THEN
245 icbot(i,j)=nint(hbot(i,j))
246 ictop(i,j)=nint(htop(i,j))
248 pmod=rdtphs*cprate(i,j)
249 IF (pmod > ppt(1))
THEN
251 IF(pmod>ppt(nc)) nmod=nc
260 cfrdum=cc1+(cc2-cc1)*(pmod-p1)/(p2-p1)
262 cfrdum=min(h1, cfrdum)
272 IF (modelname==
'NMM' .AND. imp_physics==9)
THEN
281 IF(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95 &
282 .or. nmm_gfsmicro)
THEN
286 cuprate=rdtphs*cprate(i,j)
288 zfrz(i,j)=zmid(i,j,nint(lmh(i,j)))
289 DO l=1,nint(lmh(i,j))
290 IF (t(i,j,l) >= tfrz)
THEN
291 zfrz(i,j)=zmid(i,j,l)
296 IF (cuprate <= 0. .or. htop(i,j)>=spval)
THEN
300 curefl_s(i,j)=zr_a*cuprate**zr_b
301 lctop=nint(htop(i,j))
308 curefl_i(i,j)=-2./max( 1000., zmid(i,j,lctop)-zfrz(i,j) )
318 if(icount_calmict==0)
then
326 fi1d(i,j)=f_ice(i,j,l)
327 fr1d(i,j)=f_rain(i,j,l)
328 fs1d(i,j)=max(h1, f_rimef(i,j,l))
333 IF (curefl_s(i,j) > 0.)
THEN
335 llmh = nint(lmh(i,j))
336 lctop=nint(htop(i,j))
337 IF (l>=lctop .AND. l<=llmh)
THEN
338 delz=zmid(i,j,l)-zfrz(i,j)
345 fctr=10.**(curefl_i(i,j)*delz)
348 curefl(i,j)=fctr*curefl_s(i,j)
353 IF(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95)
THEN
354 fer_mic:
IF (imp_physics==5)
THEN
363 CALL calmict_new(p1d,t1d,q1d,c1d,fi1d,fr1d,fs1d,curefl &
364 & ,qw1,qi1,qr1,qs1,dbz1,dbzr1,dbzi1,dbzc1,nlice1, nrain1
365 IF(modelname ==
'NMM' .and. gridtype==
'B')
THEN
371refl_miss:
IF (model_radar)
THEN
375 IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q1d(i,j)<spval)
THEN
376 ze_nc=10.**(0.1*ref_10cm(i,j,l))
377 dbz1(i,j)=10.*log10(max(zmin,(ze_nc+curefl(i,j))))
378 dbzr1(i,j)=min(dbzr1(i,j), ref_10cm(i,j,l))
379 dbzi1(i,j)=min(dbzi1(i,j), ref_10cm(i,j,l))
380 ze_max=max(dbzr1(i,j),dbzi1(i,j))
381refl_comp:
IF(ref_10cm(i,j,l)>dbzmin .OR. ze_max>dbzmin)
THEN
382refl_adj:
IF(ref_10cm(i,j,l)<=dbzmin)
THEN
385 ELSE IF(ze_max<=dbzmin)
THEN
386 IF(qr1(i,j)>qs1(i,j))
THEN
387 dbzr1(i,j)=ref_10cm(i,j,l)
388 ELSE IF(qs1(i,j)>qr1(i,j))
THEN
389 dbzi1(i,j)=ref_10cm(i,j,l)
391 IF(t1d(i,j)>=tfrz)
THEN
392 dbzr1(i,j)=ref_10cm(i,j,l)
394 dbzi1(i,j)=ref_10cm(i,j,l)
398 ze_nc=10.**(0.1*ref_10cm(i,j,l))
399 ze_r=10.**(0.1*dbzr1(i,j))
400 ze_s=10.**(0.1*dbzi1(i,j))
405 dbzr1(i,j)=10.*log10(ze_r)
406 dbzi1(i,j)=10.*log10(ze_s)
417 IF (me==0 .AND. l==1)
THEN
418 WRITE(6,
'(4A,1x,F7.2)')
'WARNING - MDLFLD: REF_10CM NOT '
419 'IN NMMB OUTPUT. CHECK ',
420 'SOLVER_STATE.TXT FILE. USING ',
421 'REFL OUTPUT FROM CALMICT.'
432 CALL calmict_old(p1d,t1d,q1d,c1d,fi1d,fr1d,fs1d,curefl &
433 & ,qw1,qi1,qr1,qs1,dbz1,dbzr1,dbzi1,dbzc1,nlice1, nrain1
442 IF(c1d(i,j)<spval.and.fi1d(i,j)<spval)
THEN
443 qi1(i,j)=c1d(i,j)*fi1d(i,j)
444 qw1(i,j)=c1d(i,j)-qi1(i,j)
460 llmh = nint(lmh(i,j))
472 qqw(i,j,l) = max(d00, qw1(i,j))
473 qqi(i,j,l) = max(d00, qi1(i,j))
474 qqr(i,j,l) = max(d00, qr1(i,j))
475 qqs(i,j,l) = max(d00, qs1(i,j))
476 dbz(i,j,l) = max(dbzmin, dbz1(i,j))
477 dbzr(i,j,l) = max(dbzmin, dbzr1(i,j))
478 dbzi(i,j,l) = max(dbzmin, dbzi1(i,j))
479 dbzc(i,j,l) = max(dbzmin, dbzc1(i,j))
480 nlice(i,j,l) = max(d00, nlice1(i,j))
481 nrain(i,j,l) = max(d00, nrain1(i,j))
488 icount_calmict=icount_calmict+1
489 if(debugprint .and. me==0)print*,
'debug calmict:icount_calmict= '
498 ELSE IF(modelname ==
'NMM' .and. gridtype==
'B' .and. imp_physics==
THEN
502 llmh = nint(lmh(i,j))
514 qqi(i,j,l) = max(d00, cwm(i,j,l)*f_ice(i,j,l))
515 qqw(i,j,l) = max(d00, cwm(i,j,l)-qqi(i,j,l))
526 ELSE IF(modelname ==
'NMM' .and. gridtype==
'B' .and. imp_physics==
THEN
530 llmh = nint(lmh(i,j))
543 qqw(i,j,l)=max(d00, (1.-f_ice(i,j,l))*cwm(i,j,l)*(1.-f_rain(i,j,l))
544 qqr(i,j,l)=max(d00,(1.-f_ice(i,j,l))*cwm(i,j,l)*f_rain(i,j,l
545 qqs(i,j,l)=max(d00, cwm(i,j,l)*f_ice(i,j,l))
546 dens=pmid(i,j,l)/(rd*t(i,j,l)*(q(i,j,l)*d608+1.0))
547 dbzr(i,j,l)=((qqr(i,j,l)*dens)**1.75)* &
548 & 3.630803e-9 * 1.e18
549 dbzi(i,j,l)= dbzi(i,j,l)+((qqs(i,j,l)*dens)**1.75)* &
550 & 2.18500e-10 * 1.e18
551 dbz(i,j,l)=dbzr(i,j,l)+dbzi(i,j,l)
552 IF (dbz(i,j,l)>0.) dbz(i,j,l)=10.0*log10(dbz(i,j,l))
553 IF (dbzr(i,j,l)>0.)dbzr(i,j,l)=10.0*log10(dbzr(i,j,l))
554 IF (dbzi(i,j,l)>0.) &
555 & dbzi(i,j,l)=10.0*log10(dbzi(i,j,l))
556 dbz(i,j,l)=max(dbzmin, dbz(i,j,l))
557 dbzr(i,j,l)=max(dbzmin, dbzr(i,j,l))
558 dbzi(i,j,l)=max(dbzmin, dbzi(i,j,l))
564 ELSE IF(((modelname ==
'NMM' .and. gridtype==
'B') .OR. modelname =
'FV3R'
565 .and. imp_physics==8)
THEN
569 dbz(i,j,l)=ref_10cm(i,j,l)
573 ELSE IF(imp_physics==99 .or. imp_physics==98)
THEN
582 if(debugprint .and. me==0)print*,
'calculating radar ref for non-Ferrier/non-Zhao schemes'
584 IF(imp_physics == 1 .OR. imp_physics == 3)
THEN
595 cuprate=rdtphs*cprate(i,j)
596 zfrz(i,j)=zmid(i,j,nint(lmh(i,j)))
597 DO l=1,nint(lmh(i,j))
598 IF (t(i,j,l) >= tfrz)
THEN
599 zfrz(i,j)=zmid(i,j,l)
604 IF (cuprate <= 0. .or. htop(i,j)>=spval)
THEN
608 curefl_s(i,j)=zr_a*cuprate**zr_b
609 lctop=nint(htop(i,j))
616 curefl_i(i,j)=-2./max( 1000., zmid(i,j,lctop)-zfrz(i,j) )
621 IF(imp_physics /= 8 .AND. imp_physics /= 9 .and. imp_physics /=
THEN
630 IF (curefl_s(i,j) > 0.)
THEN
632 llmh = nint(lmh(i,j))
633 lctop=nint(htop(i,j))
634 IF (l>=lctop .AND. l<=llmh)
THEN
635 delz=zmid(i,j,l)-zfrz(i,j)
642 fctr=10.**(curefl_i(i,j)*delz)
645 curefl(i,j)=fctr*curefl_s(i,j)
646 dbzc(i,j,l)=curefl(i,j)
649 IF(t(i,j,l)<spval)
THEN
651 IF(t(i,j,l) > 1.0e-3) &
652 & dens = pmid(i,j,l)/(rd*t(i,j,l)*(q(i,j,l)*d608+1.0))
657 qqr(i,j,l) = max(qqr(i,j,l),0.0)
658 qqs(i,j,l) = max(qqs(i,j,l),0.0)
660 IF (t(i,j,l) >= tfrz)
THEN
661 dbz(i,j,l) = ((qqr(i,j,l)*dens)**1.75)* &
662 & 3.630803e-9 * 1.e18
663 dbzr(i,j,l) = dbz(i,j,l)
666 dbz(i,j,l) = ((qqs(i,j,l)*dens)**1.75)* &
667 & 2.18500e-10 * 1.e18
668 dbzi(i,j,l) = dbz(i,j,l)
670 ELSEIF (iice == 1)
THEN
672 qqg(i,j,l) = max(qqg(i,j,l),0.0)
673 if(qqr(i,j,l) < spval .and. qqr(i,j,l)> 0.0)
then
674 dbzr(i,j,l) = ((qqr(i,j,l)*dens)**1.75) * 3.630803e-9
678 if(qqs(i,j,l) < spval .and. qqs(i,j,l) > 0.0)
then
679 dbzi(i,j,l) = ((qqs(i,j,l)*dens)**1.75) * &
680 & 2.18500e-10 * 1.e18
684 IF (qqg(i,j,l) < spval .and. qqg(i,j,l)> 0.0)
then
685 dbzi(i,j,l) = dbzi(i,j,l) + ((qqg(i,j,l)*dens)**1.75
686 & 1.033267e-9 * 1.e18
688 dbzi(i,j,l) = dbzi(i,j,l)
690 IF (model_radar)
THEN
691 ze_nc=10.**(0.1*ref_10cm(i,j,l))
692 dbz(i,j,l) = ze_nc+curefl(i,j)
694 dbz(i,j,l) = dbzr(i,j,l) + dbzi(i,j,l) + curefl(i,j)
699 IF (dbz(i,j,l) > 0.) dbz(i,j,l) = 10.0*log10(dbz(i,j,l)
700 IF (dbzr(i,j,l) > 0.) dbzr(i,j,l) = 10.0*log10(dbzr(i,j,l
701 IF (dbzi(i,j,l) > 0.) dbzi(i,j,l) = 10.0*log10(dbzi(i,j,l
702 IF (dbzc(i,j,l) > 0.) dbzc(i,j,l) = 10.0*log10(dbzc(i,j,l
703 llmh = nint(lmh(i,j))
710 dbz(i,j,l) = max(dbzmin, dbz(i,j,l))
711 dbzr(i,j,l) = max(dbzmin, dbzr(i,j,l))
712 dbzi(i,j,l) = max(dbzmin, dbzi(i,j,l))
713 dbzc(i,j,l) = max(dbzmin, dbzc(i,j,l))
752 IF(t(i,j,ll)<spval)
THEN
753 IF(t(i,j,ll) < 1.0e-3)print*,
'ZERO T'
754 IF(t(i,j,ll) > 1.0e-3) &
756 (rd*t(i,j,ll)*(q(i,j,ll)*d608+1.0))
757 dz=zint(i,j,ll)-zint(i,j,lm+1)
772 if (qqr(i,j,ll) >= 1.e-6)
then
773 rain = max(r1,qqr(i,j,ll))
774 ronv = (const1r*tanh((qr0 - rain)/delqr0) + &
776 slor=(rhod*rain/(topr*ronv))**0.25
777 ze_r = 720.*ronv*ron*slor**7
782 if (qqs(i,j,ll) >= 1.e-6)
then
783 snow = max(r1,qqs(i,j,ll))
786 temp_c = min(-0.001, t(i,j,ll)-273.15)
787 sonv = (min(2.0e8, 2.0e6*exp(-0.12*temp_c)))/son
788 slos=(rhoqs/(tops*sonv))**0.25
789 ze_s = 720.*alpha*sonv*son*slos**7*(dsnow/drain)**2
794 IF (t(i,j,ll) > 273.15) &
795 ze_s = ze_s*(1. + 4.28*bb)
800 if (qqg(i,j,ll) >= 1.e-6)
then
801 graupel = max(r1,qqg(i,j,ll))
804 gonv=const_ng1*(rhoqg**const_ng2)
805 gonv = max(1.e4, min(gonv,gon))
807 slog=(rhoqg/(topg*gonv))**0.25
808 ze_g = 720.*alpha*gonv*gon*slog**7*(dgraupel/drain)**2
812 IF (t(i,j,ll) > 273.15) &
813 ze_g = ze_g*(1. + 4.28*bb)
817 ze_nc = ze_r + ze_s + ze_g
819 if (iz1km==0 .and. dz>1000.)
then
824 if (iz4km==0 .and. dz>4000.)
then
829 ze_rmax = max(ze_r,ze_rmax)
830 ze_smax = max(ze_s,ze_smax)
831 ze_gmax = max(ze_g,ze_gmax)
843 ze_max = max(ze_max, ze_sum )
846 dbzr(i,j,ll) = ze_r*1.e18
847 dbzi(i,j,ll) = (ze_s+ze_g)*1.e18
850 dbzr(i,j,ll) = dbzmin
851 dbzi(i,j,ll) = dbzmin
860 cuprate=rdtphs*cprate(i,j)
864 ze_conv= max(0.1,300*(cuprate)**1.4)
869 ze_sum = ze_max + ze_conv
870 refl(i,j) = 10.*log10(ze_sum)
871 refl1km(i,j) = 10.*log10(ze_nc_1km*1.e18 + ze_conv)
872 refl4km(i,j) = 10.*log10(ze_nc_4km*1.e18 + ze_conv)
877 ze_rmax = 10.*log10(ze_rmax*1.e18)
878 ze_smax = 10.*log10(ze_smax*1.e18)
879 ze_gmax = 10.*log10(ze_gmax*1.e18)
881 write (6,*)
'dbze_max-r/s/g',ze_rmax,ze_smax,ze_gmax
891 allocate (rh3d(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
892 IF ( (iget(001)>0).OR.(iget(077)>0).OR. &
893 (iget(002)>0).OR.(iget(003)>0).OR. &
894 (iget(004)>0).OR.(iget(005)>0).OR. &
895 (iget(006)>0).OR.(iget(083)>0).OR. &
896 (iget(007)>0).OR.(iget(008)>0).OR. &
897 (iget(009)>0).OR.(iget(010)>0).OR. &
898 (iget(084)>0).OR.(iget(011)>0).OR. &
899 (iget(041)>0).OR.(iget(124)>0).OR. &
900 (iget(078)>0).OR.(iget(079)>0).OR. &
901 (iget(125)>0).OR.(iget(145)>0).OR. &
902 (iget(140)>0).OR.(iget(040)>0).OR. &
903 (iget(181)>0).OR.(iget(182)>0).OR. &
904 (iget(199)>0).OR.(iget(185)>0).OR. &
905 (iget(186)>0).OR.(iget(187)>0).OR. &
906 (iget(250)>0).OR.(iget(252)>0).OR. &
907 (iget(276)>0).OR.(iget(277)>0).OR. &
908 (iget(750)>0).OR.(iget(751)>0).OR. &
909 (iget(752)>0).OR.(iget(754)>0).OR. &
910 (iget(278)>0).OR.(iget(264)>0).OR. &
911 (iget(450)>0).OR.(iget(480)>0).OR. &
912 (iget(774)>0).OR.(iget(747)>0).OR. &
913 (iget(464)>0).OR.(iget(467)>0).OR. &
914 (iget(629)>0).OR.(iget(630)>0).OR. &
916 (iget(909)>0).OR.(iget(737)>0).OR. &
917 (iget(994)>0).OR.(iget(995)>0) )
THEN
922 IF (iget(001)>0)
THEN
923 IF (lvls(l,iget(001))>0)
THEN
928 grid1(i,j) = pmid(i,j,ll)
931 if(grib==
"grib2" )
then
933 fld_info(cfld)%ifld=iavblfld(iget(001))
934 fld_info(cfld)%lvl=lvlsxml(l,iget(001))
940 datapd(i,j,cfld) = grid1(ii,jj)
950 IF (iget(124) > 0)
THEN
951 IF (lvls(l,iget(124)) > 0)
THEN
956 grid1(i,j) = qqw(i,j,ll)
957 if(grid1(i,j)<1e-20) grid1(i,j) = 0.0
960 if(grib==
"grib2" )
then
962 fld_info(cfld)%ifld=iavblfld(iget(124))
963 fld_info(cfld)%lvl=lvlsxml(l,iget(124))
969 datapd(i,j,cfld) = grid1(ii,jj)
978 IF (iget(125) > 0)
THEN
979 IF (lvls(l,iget(125)) > 0)
THEN
984 grid1(i,j) = qqi(i,j,ll)
985 if(grid1(i,j)<1e-20) grid1(i,j) = 0.0
988 if(grib==
"grib2" )
then
990 fld_info(cfld)%ifld=iavblfld(iget(125))
991 fld_info(cfld)%lvl=lvlsxml(l,iget(125))
997 datapd(i,j,cfld) = grid1(ii,jj)
1006 IF (iget(181) > 0)
THEN
1007 IF (lvls(l,iget(181)) > 0)
THEN
1012 grid1(i,j) = qqr(i,j,ll)
1013 if(grid1(i,j)<1e-20) grid1(i,j) = 0.0
1016 if(grib==
"grib2" )
then
1018 fld_info(cfld)%ifld=iavblfld(iget(181))
1019 fld_info(cfld)%lvl=lvlsxml(l,iget(181))
1025 datapd(i,j,cfld) = grid1(ii,jj)
1034 IF (iget(182) > 0)
THEN
1035 IF (lvls(l,iget(182)) > 0)
THEN
1040 grid1(i,j) = qqs(i,j,ll)
1041 if(grid1(i,j)<1e-20) grid1(i,j) = 0.0
1044 if(grib==
"grib2" )
then
1046 fld_info(cfld)%ifld=iavblfld(iget(182))
1047 fld_info(cfld)%lvl=lvlsxml(l,iget(182))
1053 datapd(i,j,cfld) = grid1(ii,jj)
1062 IF (iget(415) > 0)
THEN
1063 IF (lvls(l,iget(415)) > 0)
THEN
1068 if(qqg(i,j,ll) < 1.e-12) qqg(i,j,ll) = 0.
1069 grid1(i,j) = qqg(i,j,ll)
1072 if(grib==
"grib2" )
then
1074 fld_info(cfld)%ifld=iavblfld(iget(415))
1075 fld_info(cfld)%lvl=lvlsxml(l,iget(415))
1081 datapd(i,j,cfld) = grid1(ii,jj)
1090 IF (iget(747) > 0)
THEN
1091 IF (lvls(l,iget(747)) > 0)
THEN
1096 if(qqnw(i,j,ll) < 1.e-8) qqnw(i,j,ll) = 0.
1097 grid1(i,j) = qqnw(i,j,ll)
1100 if(grib==
"grib2" )
then
1102 fld_info(cfld)%ifld=iavblfld(iget(747))
1103 fld_info(cfld)%lvl=lvlsxml(l,iget(747))
1109 datapd(i,j,cfld) = grid1(ii,jj)
1118 IF (iget(752) > 0)
THEN
1119 IF (lvls(l,iget(752)) > 0)
THEN
1124 if(qqni(i,j,ll) < 1.e-8) qqni(i,j,ll) = 0.
1125 grid1(i,j) = qqni(i,j,ll)
1128 if(grib==
"grib2" )
then
1130 fld_info(cfld)%ifld=iavblfld(iget(752))
1131 fld_info(cfld)%lvl=lvlsxml(l,iget(752))
1137 datapd(i,j,cfld) = grid1(ii,jj)
1146 IF (iget(754) > 0)
THEN
1147 IF (lvls(l,iget(754)) > 0)
THEN
1152 if(qqnr(i,j,ll) < 1.e-8) qqnr(i,j,ll) = 0.
1153 grid1(i,j) = qqnr(i,j,ll)
1156 if(grib==
"grib2" )
then
1158 fld_info(cfld)%ifld=iavblfld(iget(754))
1159 fld_info(cfld)%lvl=lvlsxml(l,iget(754))
1165 datapd(i,j,cfld) = grid1(ii,jj)
1173 IF (iget(766) > 0)
THEN
1174 IF (lvls(l,iget(766)) > 0)
THEN
1178 if(qqnwfa(i,j,ll)<1.e-8)qqnwfa(i,j,ll)=0.
1179 grid1(i,j)=qqnwfa(i,j,ll)
1182 if(grib==
"grib2" )
then
1184 fld_info(cfld)%ifld=iavblfld(iget(766))
1185 fld_info(cfld)%lvl=lvlsxml(l,iget(766))
1186 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend
1193 IF (iget(767) > 0)
THEN
1194 IF (lvls(l,iget(767)) > 0)
THEN
1198 if(qqnifa(i,j,ll)<1.e-8)qqnifa(i,j,ll)=0.
1199 grid1(i,j)=qqnifa(i,j,ll)
1202 if(grib==
"grib2" )
then
1204 fld_info(cfld)%ifld=iavblfld(iget(767))
1205 fld_info(cfld)%lvl=lvlsxml(l,iget(767))
1206 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend
1213 IF (iget(145) > 0)
THEN
1214 IF (lvls(l,iget(145)) > 0)
THEN
1219 IF(abs(cfr(i,j,ll)-spval) > small)
1220 & grid1(i,j) = cfr(i,j,ll)*h100
1223 CALL bound(grid1,d00,h100)
1224 if(grib==
"grib2" )
then
1226 fld_info(cfld)%ifld=iavblfld(iget(145))
1227 fld_info(cfld)%lvl=lvlsxml(l,iget(145))
1233 datapd(i,j,cfld) = grid1(ii,jj)
1242 IF (iget(774) > 0)
THEN
1243 IF (lvls(l,iget(774)) > 0)
THEN
1248 IF(modelname ==
'RAPR')
THEN
1249 grid1(i,j) = cfr(i,j,ll)
1251 grid1(i,j) = cfr_raw(i,j,ll)
1255 if(grib==
"grib2" )
then
1257 fld_info(cfld)%ifld=iavblfld(iget(774))
1258 fld_info(cfld)%lvl=lvlsxml(l,iget(774))
1264 datapd(i,j,cfld) = grid1(ii,jj)
1273 IF (iget(250) > 0)
THEN
1274 IF (lvls(l,iget(250)) > 0)
THEN
1284 IF(imp_physics == 8 .or. imp_physics == 28)
THEN
1288 grid1(i,j) = ref_10cm(i,j,ll)
1295 grid1(i,j) = dbz(i,j,ll)
1300 CALL bound(grid1,dbzmin,dbzmax)
1301 if(grib==
"grib2" )
then
1303 fld_info(cfld)%ifld=iavblfld(iget(250))
1304 fld_info(cfld)%lvl=lvlsxml(l,iget(250))
1310 datapd(i,j,cfld) = grid1(ii,jj)
1320 IF (iget(199)>0)
THEN
1321 IF (lvls(l,iget(199))>0)
THEN
1326 grid1(i,j) = cwm(i,j,ll)
1329 if(grib==
"grib2" )
then
1331 fld_info(cfld)%ifld=iavblfld(iget(199))
1332 fld_info(cfld)%lvl=lvlsxml(l,iget(199))
1338 datapd(i,j,cfld) = grid1(ii,jj)
1347 IF (iget(185)>0)
THEN
1348 IF (lvls(l,iget(185))>0)
THEN
1353 grid1(i,j) = f_rain(i,j,ll)
1356 if(grib==
"grib2" )
then
1358 fld_info(cfld)%ifld=iavblfld(iget(185))
1359 fld_info(cfld)%lvl=lvlsxml(l,iget(185))
1365 datapd(i,j,cfld) = grid1(ii,jj)
1374 IF (iget(186)>0)
THEN
1375 IF (lvls(l,iget(186))>0)
THEN
1380 grid1(i,j) = f_ice(i,j,ll)
1383 if(grib==
"grib2" )
then
1385 fld_info(cfld)%ifld=iavblfld(iget(186))
1386 fld_info(cfld)%lvl=lvlsxml(l,iget(186))
1392 datapd(i,j,cfld) = grid1(ii,jj)
1401 IF (iget(187)>0)
THEN
1402 IF (lvls(l,iget(187))>0)
THEN
1408 grid1(i,j) = f_rimef(i,j,ll)
1411 if(grib==
"grib2" )
then
1413 fld_info(cfld)%ifld=iavblfld(iget(187))
1414 fld_info(cfld)%lvl=lvlsxml(l,iget(187))
1420 datapd(i,j,cfld) = grid1(ii,jj)
1429 IF (iget(077)>0)
THEN
1430 IF (lvls(l,iget(077))>0)
THEN
1435 grid1(i,j) = zmid(i,j,ll)
1438 if(grib==
"grib2" )
then
1440 fld_info(cfld)%ifld=iavblfld(iget(077))
1441 fld_info(cfld)%lvl=lvlsxml(l,iget(077))
1447 datapd(i,j,cfld) = grid1(ii,jj)
1456 IF (iget(002)>0)
THEN
1457 IF (lvls(l,iget(002))>0)
THEN
1462 grid1(i,j) = t(i,j,ll)
1465 if(grib==
"grib2" )
then
1467 fld_info(cfld)%ifld=iavblfld(iget(002))
1468 fld_info(cfld)%lvl=lvlsxml(l,iget(002))
1474 datapd(i,j,cfld) = grid1(ii,jj)
1483 IF (iget(909)>0)
THEN
1484 IF (lvls(l,iget(909))>0)
THEN
1489 IF(t(i,j,ll)<spval.and.q(i,j,ll)<spval)
THEN
1490 grid1(i,j)=t(i,j,ll)*(1.+d608*q(i,j,ll))
1496 if(grib==
"grib2" )
then
1498 fld_info(cfld)%ifld=iavblfld(iget(909))
1499 fld_info(cfld)%lvl=lvlsxml(l,iget(909))
1500 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend
1507 IF (iget(003)>0)
THEN
1508 IF (lvls(l,iget(003))>0)
THEN
1513 p1d(i,j) = pmid(i,j,ll)
1514 t1d(i,j) = t(i,j,ll)
1517 CALL calpot(p1d(ista:iend,jsta:jend),t1d(ista:iend,jsta:jend
1522 grid1(i,j) = egrid3(i,j)
1525 if(grib==
"grib2")
then
1527 fld_info(cfld)%ifld=iavblfld(iget(003))
1528 fld_info(cfld)%lvl=lvlsxml(l,iget(003))
1534 datapd(i,j,cfld) = grid1(ii,jj)
1543 IF (iget(751)>0)
THEN
1544 IF (lvls(l,iget(751))>0)
THEN
1549 p1d(i,j) = pmid(i,j,ll)
1550 t1d(i,j) = t(i,j,ll)
1553 CALL calpot(p1d(ista:iend,jsta:jend),t1d(ista:iend,jsta:jend
1558 IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q(i,j,ll)<spval
THEN
1559 grid1(i,j) = egrid3(i,j) * (1.+d608*q(i,j,ll))
1565 if(grib==
"grib2")
then
1567 fld_info(cfld)%ifld=iavblfld(iget(751))
1568 fld_info(cfld)%lvl=lvlsxml(l,iget(751))
1574 datapd(i,j,cfld) = grid1(ii,jj)
1584 IF (iget(006) > 0) item = lvls(l,iget(006))
1585 IF (item > 0 .OR. iget(450) > 0 .OR. iget(480) > 0)
THEN
1590 p1d(i,j) = pmid(i,j,ll)
1591 t1d(i,j) = t(i,j,ll)
1592 q1d(i,j) = q(i,j,ll)
1596 CALL calrh(p1d(ista:iend,jsta:jend),t1d(ista:iend,jsta:jend)
1601 IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q1d(i,j)<spval)
THEN
1602 grid1(i,j) = egrid4(i,j)*100.
1603 rh3d(i,j,ll) = grid1(i,j)
1604 egrid2(i,j) = q(i,j,ll)/max(1.e-8,egrid4(i,j))
1607 rh3d(i,j,ll) = spval
1613 if(grib==
"grib2")
then
1615 fld_info(cfld)%ifld=iavblfld(iget(006))
1616 fld_info(cfld)%lvl=lvlsxml(l,iget(006))
1622 datapd(i,j,cfld) = grid1(ii,jj)
1631 IF (iget(004)>0)
THEN
1632 IF (lvls(l,iget(004))>0)
THEN
1637 p1d(i,j) = pmid(i,j,ll)
1638 t1d(i,j) = t(i,j,ll)
1639 q1d(i,j) = q(i,j,ll)
1642 CALL caldwp(p1d(ista:iend,jsta:jend),q1d(ista:iend,jsta:jend
1646 IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q1d(i,j)<spval
THEN
1647 grid1(i,j) = egrid3(i,j)
1653 if(grib==
"grib2")
then
1655 fld_info(cfld)%ifld=iavblfld(iget(004))
1656 fld_info(cfld)%lvl=lvlsxml(l,iget(004))
1662 datapd(i,j,cfld) = grid1(ii,jj)
1670 IF (iget(005)>0)
THEN
1671 IF (lvls(l,iget(005))>0)
THEN
1676 grid1(i,j) = q(i,j,ll)
1679 CALL bound(grid1,h1m12,h99999)
1680 if(grib==
"grib2")
then
1682 fld_info(cfld)%ifld=iavblfld(iget(005))
1683 fld_info(cfld)%lvl=lvlsxml(l,iget(005))
1689 datapd(i,j,cfld) = grid1(ii,jj)
1697 IF (iget(750)>0)
THEN
1698 IF (lvls(l,iget(750))>0)
THEN
1703 IF(q(i,j,ll)<spval)
THEN
1704 grid1(i,j) = q(i,j,ll) / (1.-q(i,j,ll))
1710 CALL bound(grid1,h1m12,h99999)
1711 if(grib==
"grib2")
then
1713 fld_info(cfld)%ifld=iavblfld(iget(750))
1714 fld_info(cfld)%lvl=lvlsxml(l,iget(750))
1720 datapd(i,j,cfld) = grid1(ii,jj)
1730 if (iget(083) > 0) lll = lvls(l,iget(083))
1731 IF (iget(083)>0 .OR. iget(295)>0)
THEN
1732 IF (lll >0 .OR. iget(295)>0)
THEN
1735 DO j=jsta_2l,jend_2u
1736 DO i=ista_2l,iend_2u
1737 q1d(i,j) = q(i,j,ll)
1738 egrid1(i,j) = uh(i,j,ll)
1739 egrid2(i,j) = vh(i,j,ll)
1742 CALL calmcvg(q1d,egrid1,egrid2,egrid3)
1746 IF(q1d(i,j)<spval.and.egrid1(i,j)<spval.and.egrid2(i,j)
THEN
1747 grid1(i,j) = egrid3(i,j)
1748 mcvg(i,j,ll) = egrid3(i,j)
1751 mcvg(i,j,ll) = spval
1755 IF(iget(083)>0 .AND. lll>0)
THEN
1756 if(grib==
"grib2")
then
1758 fld_info(cfld)%ifld=iavblfld(iget(083))
1759 fld_info(cfld)%lvl=lvlsxml(l,iget(083))
1765 datapd(i,j,cfld) = grid1(ii,jj)
1775 IF (iget(007)>0.OR.iget(008)>0)
THEN
1776 IF (lvls(l,iget(007))>0.OR.lvls(l,iget(008))>0 )
THEN
1781 grid1(i,j) = uh(i,j,ll)
1782 grid2(i,j) = vh(i,j,ll)
1785 if(grib==
"grib2")
then
1787 fld_info(cfld)%ifld=iavblfld(iget(007))
1788 fld_info(cfld)%lvl=lvlsxml(l,iget(007))
1794 datapd(i,j,cfld) = grid1(ii,jj)
1798 fld_info(cfld)%ifld=iavblfld(iget(008))
1799 fld_info(cfld)%lvl=lvlsxml(l,iget(008))
1805 datapd(i,j,cfld) = grid2(ii,jj)
1813 IF (iget(009)>0)
THEN
1814 IF (lvls(l,iget(009))>0)
THEN
1819 grid1(i,j) = omga(i,j,ll)
1822 if(grib==
"grib2")
then
1824 fld_info(cfld)%ifld=iavblfld(iget(009))
1825 fld_info(cfld)%lvl=lvlsxml(l,iget(009))
1831 datapd(i,j,cfld) = grid1(ii,jj)
1839 IF (iget(264)>0)
THEN
1840 IF (lvls(l,iget(264))>0)
THEN
1845 grid1(i,j)=wh(i,j,ll)
1848 if(grib==
"grib2")
then
1850 fld_info(cfld)%ifld=iavblfld(iget(264))
1851 fld_info(cfld)%lvl=lvlsxml(l,iget(264))
1857 datapd(i,j,cfld) = grid1(ii,jj)
1865 IF (iget(010)>0)
THEN
1866 IF (lvls(l,iget(010))>0)
THEN
1869 DO j=jsta_2l,jend_2u
1870 DO i=ista_2l,iend_2u
1871 egrid1(i,j) = uh(i,j,ll)
1872 egrid2(i,j) = vh(i,j,ll)
1875 CALL calvor(egrid1,egrid2,egrid3)
1879 IF(egrid3(i,j)<spval)
THEN
1880 grid1(i,j) = egrid3(i,j)
1886 if(grib==
"grib2")
then
1888 fld_info(cfld)%ifld=iavblfld(iget(010))
1889 fld_info(cfld)%lvl=lvlsxml(l,iget(010))
1895 datapd(i,j,cfld) = grid1(ii,jj)
1903 IF (iget(084)>0)
THEN
1904 IF (lvls(l,iget(084))>0)
THEN
1909 egrid1(i,j) = zmid(i,j,ll)
1912 CALL calstrm(egrid1(ista:iend,jsta:jend),egrid2(ista:iend
1916 grid1(i,j) = egrid2(i,j)
1919 if(grib==
"grib2")
then
1921 fld_info(cfld)%ifld=iavblfld(iget(084))
1922 fld_info(cfld)%lvl=lvlsxml(l,iget(084))
1928 datapd(i,j,cfld) = grid1(ii,jj)
1936 IF (iget(011)>0)
THEN
1937 IF (lvls(l,iget(011))>0)
THEN
1942 grid1(i,j) = q2(i,j,ll)
1945 if(grib==
"grib2")
then
1947 fld_info(cfld)%ifld=iavblfld(iget(011))
1948 fld_info(cfld)%lvl=lvlsxml(l,iget(011))
1954 datapd(i,j,cfld) = grid1(ii,jj)
2007 IF (iget(140)>0)
THEN
2008 IF (lvls(l,iget(140))>0)
THEN
2013 grid1(i,j) = ttnd(i,j,ll)
2016 if(grib==
"grib2")
then
2018 fld_info(cfld)%ifld=iavblfld(iget(140))
2019 fld_info(cfld)%lvl=lvlsxml(l,iget(140))
2025 datapd(i,j,cfld) = grid1(ii,jj)
2034 IF (iget(040)>0)
THEN
2035 IF (lvls(l,iget(040))>0)
THEN
2040 grid1(i,j) = rswtt(i,j,ll)
2043 if(grib==
"grib2")
then
2045 fld_info(cfld)%ifld=iavblfld(iget(040))
2046 fld_info(cfld)%lvl=lvlsxml(l,iget(040))
2052 datapd(i,j,cfld) = grid1(ii,jj)
2061 IF (iget(041)>0)
THEN
2062 IF (lvls(l,iget(041))>0)
THEN
2067 grid1(i,j) = rlwtt(i,j,ll)
2070 if(grib==
"grib2")
then
2072 fld_info(cfld)%ifld=iavblfld(iget(041))
2073 fld_info(cfld)%lvl=lvlsxml(l,iget(041))
2079 datapd(i,j,cfld) = grid1(ii,jj)
2090 IF (iget(078)>0)
THEN
2091 IF (lvls(l,iget(078))>0)
THEN
2101 IF(train(i,j,ll)<spval)
THEN
2102 grid1(i,j) = train(i,j,ll)*rrnum
2110 IF (itheat /= 0)
THEN
2111 ifincr = mod(ifhr,itheat)
2116 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2119 id(18) = ifhr-itheat
2121 id(18) = ifhr-ifincr
2123 IF(ifmin >= 1)id(18)=id(18)*60
2124 if(grib==
"grib2")
then
2126 fld_info(cfld)%ifld=iavblfld(iget(078))
2127 fld_info(cfld)%lvl=lvlsxml(l,iget(078))
2129 fld_info(cfld)%ntrange=0
2131 fld_info(cfld)%ntrange=1
2133 fld_info(cfld)%tinvstat=ifhr-id(18)
2139 datapd(i,j,cfld) = grid1(ii,jj)
2147 IF (iget(079)>0)
THEN
2148 IF (lvls(l,iget(079))>0)
THEN
2158 IF(tcucn(i,j,ll)<spval)
THEN
2159 grid1(i,j) = tcucn(i,j,ll)*rrnum
2167 IF (itheat /= 0)
THEN
2168 ifincr = mod(ifhr,itheat)
2173 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2176 id(18) = ifhr-itheat
2178 id(18) = ifhr-ifincr
2180 IF(ifmin >= 1)id(18)=id(18)*60
2181 if(grib==
"grib2")
then
2183 fld_info(cfld)%ifld=iavblfld(iget(079))
2184 fld_info(cfld)%lvl=lvlsxml(l,iget(079))
2186 fld_info(cfld)%ntrange=0
2188 fld_info(cfld)%ntrange=1
2190 fld_info(cfld)%tinvstat=ifhr-id(18)
2196 datapd(i,j,cfld) = grid1(ii,jj)
2204 IF (iget(267)>0)
THEN
2205 IF (lvls(l,iget(267))>0)
THEN
2210 grid1(i,j) = o3(i,j,ll)
2213 if(grib==
"grib2")
then
2215 fld_info(cfld)%ifld=iavblfld(iget(267))
2216 fld_info(cfld)%lvl=lvlsxml(l,iget(267))
2222 datapd(i,j,cfld) = grid1(ii,jj)
2233 if (aqfcmaq_on)
then
2235 IF (iget(994)>0)
THEN
2236 IF (lvls(l,iget(994))>0)
THEN
2241 grid1(i,j) = ozcon(i,j,ll)*1000.
2245 if(grib==
"grib2")
then
2247 fld_info(cfld)%ifld=iavblfld(iget(994))
2248 fld_info(cfld)%lvl=lvlsxml(l,iget(994))
2254 datapd(i,j,cfld) = grid1(ii,jj)
2264 IF (iget(995)>0)
THEN
2265 IF (lvls(l,iget(995))>0)
THEN
2270 dens=pmid(i,j,ll)/(rd*t(i,j,ll)*(q(i,j,ll)*d608+1.0))
2271 grid1(i,j) = pmtf(i,j,ll)*dens
2275 if(grib==
"grib2")
then
2277 fld_info(cfld)%ifld=iavblfld(iget(995))
2278 fld_info(cfld)%lvl=lvlsxml(l,iget(995))
2284 datapd(i,j,cfld) = grid1(ii,jj)
2298 IF (iget(737)>0)
THEN
2299 IF (lvls(l,iget(737))>0)
THEN
2304 IF(pmid(i,j,ll)<spval.and.t(i,j,ll)<spval.and.smoke(i,j,ll
THEN
2305 grid1(i,j) = (1./rd)*(pmid(i,j,ll)/t(i,j,ll))*smoke(i,j
2311 if(grib==
"grib2")
then
2313 fld_info(cfld)%ifld=iavblfld(iget(737))
2314 fld_info(cfld)%lvl=lvlsxml(l,iget(737))
2320 datapd(i,j,cfld) = grid1(ii,jj)
2328 IF (iget(629)>0)
THEN
2329 IF (lvls(l,iget(629))>0)
THEN
2334 IF(dust(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2336 grid1(i,j) = dust(i,j,ll,1)*rhomid(i,j,ll)
2342 if(grib==
"grib2")
then
2344 fld_info(cfld)%ifld=iavblfld(iget(629))
2345 fld_info(cfld)%lvl=lvlsxml(l,iget(629))
2351 datapd(i,j,cfld) = grid1(ii,jj)
2359 IF (iget(630)>0)
THEN
2360 IF (lvls(l,iget(630))>0)
THEN
2365 IF(dust(i,j,ll,2)<spval.and.rhomid(i,j,ll)<spval)
THEN
2367 grid1(i,j) = dust(i,j,ll,2)*rhomid(i,j,ll)
2373 if(grib==
"grib2")
then
2375 fld_info(cfld)%ifld=iavblfld(iget(630))
2376 fld_info(cfld)%lvl=lvlsxml(l,iget(630))
2382 datapd(i,j,cfld) = grid1(ii,jj)
2390 IF (iget(631)>0)
THEN
2391 IF (lvls(l,iget(631))>0)
THEN
2396 IF(dust(i,j,ll,3)<spval.and.rhomid(i,j,ll)<spval)
THEN
2398 grid1(i,j) = dust(i,j,ll,3)*rhomid(i,j,ll)
2404 if(grib==
"grib2")
then
2406 fld_info(cfld)%ifld=iavblfld(iget(631))
2407 fld_info(cfld)%lvl=lvlsxml(l,iget(631))
2413 datapd(i,j,cfld) = grid1(ii,jj)
2421 IF (iget(632)>0)
THEN
2422 IF (lvls(l,iget(632))>0)
THEN
2427 IF(dust(i,j,ll,4)<spval.and.rhomid(i,j,ll)<spval)
THEN
2429 grid1(i,j) = dust(i,j,ll,4)*rhomid(i,j,ll)
2435 if(grib==
"grib2")
then
2437 fld_info(cfld)%ifld=iavblfld(iget(632))
2438 fld_info(cfld)%lvl=lvlsxml(l,iget(632))
2444 datapd(i,j,cfld) = grid1(ii,jj)
2452 IF (iget(633)>0)
THEN
2453 IF (lvls(l,iget(633))>0)
THEN
2458 IF(dust(i,j,ll,5)<spval.and.rhomid(i,j,ll)<spval)
THEN
2460 grid1(i,j) = dust(i,j,ll,5)*rhomid(i,j,ll)
2466 if(grib==
"grib2")
then
2468 fld_info(cfld)%ifld=iavblfld(iget(633))
2469 fld_info(cfld)%lvl=lvlsxml(l,iget(633))
2475 datapd(i,j,cfld) = grid1(ii,jj)
2483 IF (iget(634)>0)
THEN
2484 IF (lvls(l,iget(634))>0)
THEN
2489 IF(salt(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2490 grid1(i,j) = salt(i,j,ll,1)*rhomid(i,j,ll)
2496 if(grib==
"grib2")
then
2498 fld_info(cfld)%ifld=iavblfld(iget(634))
2499 fld_info(cfld)%lvl=lvlsxml(l,iget(634))
2505 datapd(i,j,cfld) = grid1(ii,jj)
2513 IF (iget(635)>0)
THEN
2514 IF (lvls(l,iget(635))>0)
THEN
2519 IF(salt(i,j,ll,2)<spval.and.rhomid(i,j,ll)<spval)
THEN
2520 grid1(i,j) = salt(i,j,ll,2)*rhomid(i,j,ll)
2526 if(grib==
"grib2")
then
2528 fld_info(cfld)%ifld=iavblfld(iget(635))
2529 fld_info(cfld)%lvl=lvlsxml(l,iget(635))
2535 datapd(i,j,cfld) = grid1(ii,jj)
2543 IF (iget(636)>0)
THEN
2544 IF (lvls(l,iget(636))>0)
THEN
2549 IF(salt(i,j,ll,3)<spval.and.rhomid(i,j,ll)<spval)
THEN
2550 grid1(i,j) = salt(i,j,ll,3)*rhomid(i,j,ll)
2556 if(grib==
"grib2")
then
2558 fld_info(cfld)%ifld=iavblfld(iget(636))
2559 fld_info(cfld)%lvl=lvlsxml(l,iget(636))
2565 datapd(i,j,cfld) = grid1(ii,jj)
2573 IF (iget(637)>0)
THEN
2574 IF (lvls(l,iget(637))>0)
THEN
2579 IF(salt(i,j,ll,4)<spval.and.rhomid(i,j,ll)<spval)
THEN
2580 grid1(i,j) = salt(i,j,ll,4)*rhomid(i,j,ll)
2586 if(grib==
"grib2")
then
2588 fld_info(cfld)%ifld=iavblfld(iget(637))
2589 fld_info(cfld)%lvl=lvlsxml(l,iget(637))
2595 datapd(i,j,cfld) = grid1(ii,jj)
2603 IF (iget(638)>0)
THEN
2604 IF (lvls(l,iget(638))>0)
THEN
2609 IF(salt(i,j,ll,5)<spval.and.rhomid(i,j,ll)<spval)
THEN
2610 grid1(i,j) = salt(i,j,ll,5)*rhomid(i,j,ll)
2616 if(grib==
"grib2")
then
2618 fld_info(cfld)%ifld=iavblfld(iget(638))
2619 fld_info(cfld)%lvl=lvlsxml(l,iget(638))
2625 datapd(i,j,cfld) = grid1(ii,jj)
2633 IF (iget(639)>0)
THEN
2634 IF (lvls(l,iget(639))>0)
THEN
2639 IF(suso(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2641 grid1(i,j) = suso(i,j,ll,1)*rhomid(i,j,ll)
2647 if(grib==
"grib2")
then
2649 fld_info(cfld)%ifld=iavblfld(iget(639))
2650 fld_info(cfld)%lvl=lvlsxml(l,iget(639))
2656 datapd(i,j,cfld) = grid1(ii,jj)
2664 IF (iget(640)>0)
THEN
2665 IF (lvls(l,iget(640))>0)
THEN
2670 IF(waso(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2672 grid1(i,j) = waso(i,j,ll,1)*rhomid(i,j,ll)
2678 if(grib==
"grib2")
then
2680 fld_info(cfld)%ifld=iavblfld(iget(640))
2681 fld_info(cfld)%lvl=lvlsxml(l,iget(640))
2687 datapd(i,j,cfld) = grid1(ii,jj)
2695 IF (iget(641)>0)
THEN
2696 IF (lvls(l,iget(641))>0)
THEN
2701 IF(waso(i,j,ll,2)<spval.and.rhomid(i,j,ll)<spval)
THEN
2703 grid1(i,j) = waso(i,j,ll,2)*rhomid(i,j,ll)
2709 if(grib==
"grib2")
then
2711 fld_info(cfld)%ifld=iavblfld(iget(641))
2712 fld_info(cfld)%lvl=lvlsxml(l,iget(641))
2718 datapd(i,j,cfld) = grid1(ii,jj)
2726 IF (iget(642)>0)
THEN
2727 IF (lvls(l,iget(642))>0)
THEN
2732 IF(soot(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2734 grid1(i,j) = soot(i,j,ll,1)*rhomid(i,j,ll)
2740 if(grib==
"grib2")
then
2742 fld_info(cfld)%ifld=iavblfld(iget(642))
2743 fld_info(cfld)%lvl=lvlsxml(l,iget(642))
2749 datapd(i,j,cfld) = grid1(ii,jj)
2757 IF (iget(643)>0)
THEN
2758 IF (lvls(l,iget(643))>0)
THEN
2763 IF(soot(i,j,ll,2)<spval.and.rhomid(i,j,ll)<spval)
THEN
2765 grid1(i,j) = soot(i,j,ll,2)*rhomid(i,j,ll)
2771 if(grib==
"grib2")
then
2773 fld_info(cfld)%ifld=iavblfld(iget(643))
2774 fld_info(cfld)%lvl=lvlsxml(l,iget(643))
2780 datapd(i,j,cfld) = grid1(ii,jj)
2788 IF (iget(644)>0)
THEN
2789 IF (lvls(l,iget(644))>0)
THEN
2794 grid1(i,j) = rhomid(i,j,ll)
2797 if(grib==
"grib2")
then
2799 fld_info(cfld)%ifld=iavblfld(iget(644))
2800 fld_info(cfld)%lvl=lvlsxml(l,iget(644))
2806 datapd(i,j,cfld) = grid1(ii,jj)
2814 IF (iget(645)>0)
THEN
2815 IF (lvls(l,iget(645))>0)
THEN
2820 grid1(i,j) = dpres(i,j,ll)
2823 if(grib==
"grib2")
then
2825 fld_info(cfld)%ifld=iavblfld(iget(645))
2826 fld_info(cfld)%lvl=lvlsxml(l,iget(645))
2832 datapd(i,j,cfld) = grid1(ii,jj)
2913 IF (iget(252) > 0)
THEN
2914 IF(imp_physics /= 8 .and. imp_physics /= 28)
THEN
2919 DO l=1,nint(lmh(i,j))
2920 grid1(i,j) = max( grid1(i,j), dbz(i,j,l) )
2930 IF(imp_physics == 8 .or. imp_physics == 28)
THEN
2932 IF(modelname==
'NMM' .and. gridtype==
'B' .or. &
2933 modelname==
'NCAR'.or. modelname==
'FV3R' .or. &
2934 modelname==
'NMM' .and. gridtype==
'E')
THEN
2939 DO l=1,nint(lmh(i,j))
2940 grid1(i,j) = max( grid1(i,j), ref_10cm(i,j,l) )
2948 grid1(i,j) = refc_10cm(i,j)
2952 CALL bound(grid1,dbzmin,dbzmax)
2957 grid1(i,j) = refl(i,j)
2963 if(grib==
"grib2")
then
2965 fld_info(cfld)%ifld=iavblfld(iget(252))
2971 datapd(i,j,cfld) = grid1(ii,jj)
2980 IF (iget(581)>0)
THEN
2984 DO l=1,nint(lmh(i,j))
2985 if(zint(i,j,l) < spval .and.zint(i,j,l+1)<spval.and.dbz(i,j
then
2986 grid1(i,j)=grid1(i,j)+0.00344* &
2987 (10.**(dbz(i,j,l)/10.))**0.57143*(zint(i,j,l)-zint(i,j,l
2992 if(grib==
"grib2")
then
2994 fld_info(cfld)%ifld=iavblfld(iget(581))
3000 datapd(i,j,cfld) = grid1(ii,jj)
3008 IF (iget(276)>0)
THEN
3012 DO l=1,nint(lmh(i,j))
3013 grid1(i,j)=max( grid1(i,j), dbzr(i,j,l) )
3017 if(grib==
"grib2")
then
3019 fld_info(cfld)%ifld=iavblfld(iget(276))
3025 datapd(i,j,cfld) = grid1(ii,jj)
3034 IF (iget(277)>0)
THEN
3038 DO l=1,nint(lmh(i,j))
3039 grid1(i,j)=max( grid1(i,j), dbzi(i,j,l) )
3043 if(grib==
"grib2")
then
3045 fld_info(cfld)%ifld=iavblfld(iget(277))
3051 datapd(i,j,cfld) = grid1(ii,jj)
3062 IF (iget(278)>0)
THEN
3066 DO l=1,nint(lmh(i,j))
3067 grid1(i,j)=max( grid1(i,j), dbzc(i,j,l) )
3071 if(grib==
"grib2")
then
3073 fld_info(cfld)%ifld=iavblfld(iget(278))
3079 datapd(i,j,cfld) = grid1(ii,jj)
3089 IF (iget(426)>0)
THEN
3093 DO l=1,nint(lmh(i,j))
3094 IF (dbz(i,j,l)>=18.0)
THEN
3095 grid1(i,j)=zmid(i,j,l)*3.2808/1000.
3101 if(grib==
"grib2")
then
3103 fld_info(cfld)%ifld=iavblfld(iget(426))
3109 datapd(i,j,cfld) = grid1(ii,jj)
3124 IF (iget(768) > 0)
THEN
3125 IF(modelname ==
'RAPR' .AND. (imp_physics == 8 .or. imp_physics
THEN
3129 DO l=1,nint(lmh(i,j))
3130 IF (ref_10cm(i,j,l)>=18.0)
THEN
3131 grid1(i,j)=zmid(i,j,l)
3135 IF(grid1(i,j) >= -900)
THEN
3136 DO l=1,nint(lmh(i,j))
3137 IF (ref_10cm(i,j,l) >= 11.0)
THEN
3139 grid1(i,j) = zmid(i,j,l)
3140 ELSE IF(ref_10cm(i,j,l-1) == ref_10cm(i,j,l))
THEN
3141 grid1(i,j) = zmid(i,j,l)
3143 grid1(i,j) = zmid(i,j,l) +
3144 (11.0 - ref_10cm(i,j,l)) *
3145 (zmid(i,j,l-1) - zmid(i,j,l)) /
3146 (ref_10cm(i,j,l-1) - ref_10cm(i,j,l))
3158 DO l=1,nint(lmh(i,j))
3159 IF (dbz(i,j,l) >= 18.0)
THEN
3160 grid1(i,j) = zmid(i,j,l)
3167 if(grib==
"grib2")
then
3169 fld_info(cfld)%ifld=iavblfld(iget(768))
3175 datapd(i,j,cfld) = grid1(ii,jj)
3183 IF (iget(769)>0)
THEN
3187 DO l=1,nint(lmh(i,j))
3188 IF(qqr(i,j,l)<spval.and.qqs(i,j,l)<spval.and.qqg(i,j,l)<spval.and.
3189 zint(i,j,l)<spval.and.zint(i,j,l+1)<spval.and.&
3190 pmid(i,j,l)<spval.and.t(i,j,l)<spval.and.q(i,j,l)<spval
THEN
3191 grid1(i,j)=grid1(i,j) + (qqr(i,j,l) + &
3192 qqs(i,j,l) + qqg(i,j,l))* &
3193 (zint(i,j,l)-zint(i,j,l+1))*pmid(i,j,l)/ &
3194 (rd*t(i,j,l)*(q(i,j,l)*d608+1.0))
3201 if(grib==
"grib2")
then
3203 fld_info(cfld)%ifld=iavblfld(iget(769))
3209 datapd(i,j,cfld) = grid1(ii,jj)
3219 IF (iget(770) > 0)
THEN
3220 IF(modelname ==
'RAPR' .AND. (imp_physics == 8 .or. imp_physics
THEN
3224 DO l=1,nint(lmh(i,j))
3225 IF (ref_10cm(i,j,l) > -10.0 )
THEN
3226 grid1(i,j) = grid1(i,j) + 0.00344 * &
3227 (10.**(ref_10cm(i,j,l)/10.))**0.57143 * &
3228 (zint(i,j,l)-zint(i,j,l+1))/1000.
3237 DO l=1,nint(lmh(i,j))
3238 grid1(i,j) = grid1(i,j) + 0.00344 * &
3239 (10.**(dbz(i,j,l)/10.))**0.57143 * &
3240 (zint(i,j,l)-zint(i,j,l+1))/1000.
3245 if(grib==
"grib2")
then
3247 fld_info(cfld)%ifld=iavblfld(iget(770))
3253 datapd(i,j,cfld) = grid1(ii,jj)
3263 IF (iget(180)>0)
THEN
3271 q1d(i,j)=q(i,j,llmh)
3272 if(q1d(i,j)<=0.) q1d(i,j)=0.
3273 qw1(i,j)=qqw(i,j,llmh)
3274 qr1(i,j)=qqr(i,j,llmh)
3275 qi1(i,j)=qqi(i,j,llmh)
3276 qs1(i,j)=qqs(i,j,llmh)
3277 qg1(i,j)=qqg(i,j,llmh)
3278 t1d(i,j)=t(i,j,llmh)
3279 p1d(i,j)=pmid(i,j,llmh)
3285 IF(imp_physics/=99)
THEN
3286 IF (cprate(i,j) > 0. .and. cprate(i,j) < spval &
3287 .and. pmid(i,j,lm) < spval .and. qr1(i,j) < spval)
THEN
3289 rainrate=(1-sr(i,j))*cprate(i,j)*rdtphs
3291 term1=(t(i,j,lm)/pmid(i,j,lm))**0.4167
3292 term2=(t1d(i,j)/p1d(i,j))**0.5833
3293 term3=rainrate**0.8333
3295 qr1(i,j)=qr1(i,j)+raincon*term1*term2*term3
3296 IF (sr(i,j) > 0. .and. qs1(i,j) < spval)
THEN
3297 snorate=sr(i,j)*cprate(i,j)*rdtphs
3299 term1=(t(i,j,lm)/pmid(i,j,lm))**0.47
3300 term2=(t1d(i,j)/p1d(i,j))**0.53
3302 qs1(i,j)=qs1(i,j)+snocon*term1*term2*term3
3311 IF (prec(i,j) < spval .and. prec(i,j) > 0. .and. &
3314 rainrate=(1-sr(i,j))*prec(i,j)*rdtphs
3316 term1=(t(i,j,lm)/pmid(i,j,lm))**0.4167
3317 term2=(t1d(i,j)/p1d(i,j))**0.5833
3318 term3=rainrate**0.8333
3320 qr1(i,j)=qr1(i,j)+raincon*term1*term2*term3
3321 IF (sr(i,j) > 0.)
THEN
3322 snorate=sr(i,j)*prec(i,j)*rdtphs
3324 term1=(t(i,j,lm)/pmid(i,j,lm))**0.47
3325 term2=(t1d(i,j)/p1d(i,j))**0.53
3327 qs1(i,j)=qs1(i,j)+snocon*term1*term2*term3
3342 CALL calvis(q1d,qw1,qr1,qi1,qs1,t1d,p1d,vis)
3350 IF(vis(i,j)/=spval.and.abs(vis(i,j))>24135.1)print*,
'bad visbility'
3351 , i,j,q1d(i,j),qw1(i,j),qr1(i,j),qi1(i,j) &
3352 , qs1(i,j),t1d(i,j),p1d(i,j),vis(i,j)
3357 if(grib==
"grib2")
then
3359 fld_info(cfld)%ifld=iavblfld(iget(180))
3360 fld_info(cfld)%lvl=lvlsxml(1,iget(180))
3361 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend
3368 IF (iget(410)>0)
THEN
3369 CALL calvis_gsd(czen,vis)
3375 if(grib==
"grib2")
then
3377 fld_info(cfld)%ifld=iavblfld(iget(410))
3378 fld_info(cfld)%lvl=lvlsxml(1,iget(410))
3379 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend
3385 IF (iget(748) > 0)
THEN
3390 IF(modelname ==
'RAPR' .AND. (imp_physics == 8 .or. imp_physics
THEN
3395 grid1(i,j) = ref1km_10cm(i,j)
3398 CALL bound(grid1,dbzmin,dbzmax)
3403 grid1(i,j) = refl1km(i,j)
3409 if(grib==
"grib2")
then
3411 fld_info(cfld)%ifld=iavblfld(iget(748))
3412 fld_info(cfld)%lvl=lvlsxml(1,iget(748))
3413 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend
3420 IF (iget(757) > 0)
THEN
3425 IF(modelname ==
'RAPR' .AND. (imp_physics == 8 .or. imp_physics
THEN
3429 grid1(i,j) = ref4km_10cm(i,j)
3432 CALL bound(grid1,dbzmin,dbzmax)
3437 grid1(i,j) = refl4km(i,j)
3443 if(grib==
"grib2")
then
3445 fld_info(cfld)%ifld=iavblfld(iget(757))
3446 fld_info(cfld)%lvl=lvlsxml(1,iget(757))
3447 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend
3452 IF (iget(912)>0)
THEN
3457 if (slp(i,j) < spval)
then
3458 zm10c(i,j)=zmid(i,j,nint(lmh(i,j)))
3459 DO l=nint(lmh(i,j)),1,-1
3460 IF (t(i,j,l) <= 263.15)
THEN
3476 IF(imp_physics==8 .or. imp_physics==28)
THEN
3482 if (slp(i,j) < spval)
then
3483 grid1(i,j)=ref_10cm(i,j,zm10c(i,j))
3493 if (slp(i,j) < spval)
then
3494 grid1(i,j)=dbz(i,j,zm10c(i,j))
3500 CALL bound(grid1,dbzmin,dbzmax)
3502 if(grib==
"grib2" )
then
3504 fld_info(cfld)%ifld=iavblfld(iget(912))
3505 fld_info(cfld)%lvl=lvlsxml(l,iget(912))
3506 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend
3513 IF ( (iget(111)>0) .OR. (iget(146)>0) .OR. &
3514 (iget(147)>0) )
THEN
3517 CALL clmax(el0(1,jsta),egrid2(1,jsta),egrid3(1,jsta),egrid4(1,jsta
3520 IF (iget(147)>0)
THEN
3524 grid1(i,j) = el0(i,j)
3527 if(grib==
"grib2")
then
3529 fld_info(cfld)%ifld=iavblfld(iget(147))
3530 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta
3537 IF ( (iget(111)>0) .OR. (iget(146)>0) )
THEN
3549 IF(modelname ==
'NCAR'.OR.modelname==
'RSM'.OR. modelname ==
'RAPR'THEN
3551 ELSE IF(modelname ==
'NMM')
THEN
3555 el(i,j,l)=el_pbl(i,j,l)
3563 IF ( (iget(111)>0) )
CALL calrch(el,richno)
3570 IF (iget(146)>0)
THEN
3573 IF (lvls(l,iget(146))>0)
THEN
3578 grid1(i,j) = el(i,j,ll)
3581 if(grib==
"grib2")
then
3583 fld_info(cfld)%ifld=iavblfld(iget(146))
3584 fld_info(cfld)%lvl=lvlsxml(l,iget(146))
3590 datapd(i,j,cfld) = grid1(ii,jj)
3600 IF (iget(111)>0)
THEN
3601 IF (lvls(l,iget(111))>0)
THEN
3606 grid1(i,j) = richno(i,j,ll)
3609 if(grib==
"grib2")
then
3611 fld_info(cfld)%ifld=iavblfld(iget(111))
3612 fld_info(cfld)%lvl=lvlsxml(l,iget(111))
3618 datapd(i,j,cfld) = grid1(ii,jj)
3634 IF ( (iget(289)>0) .OR. (iget(389)>0) .OR. (iget(454)>0) &
3635 .OR. (iget(245)>0) .or. iget(464)>0 .or. iget(467)>0 &
3636 .or. iget(470)>0 )
THEN
3640 IF(modelname ==
'GFS')
THEN
3647 IF (iget(289) > 0)
THEN
3651 grid1(i,j) = pblri(i,j)
3655 if(grib==
"grib2")
then
3657 fld_info(cfld)%ifld=iavblfld(iget(289))
3663 datapd(i,j,cfld) = grid1(ii,jj)
3673 IF ( (iget(389) > 0) .OR. (iget(454) > 0) )
THEN
3677 IF(pblri(i,j)<spval.and.zint(i,j,lm+1)<spval)
THEN
3678 egrid3(i,j) = pblri(i,j) + zint(i,j,lm+1)
3685 CALL h2u(egrid3(ista_2l:iend_2u,jsta_2l:jend_2u),egrid4)
3693 vert_loopu:
DO l=lm,1,-1
3694 CALL h2u(zmid(ista_2l:iend_2u,jsta_2l:jend_2u,l), egrid5
3695 CALL h2u(pint(ista_2l:iend_2u,jsta_2l:jend_2u,l+1),egrid6
3696 CALL h2u(pint(ista_2l:iend_2u,jsta_2l:jend_2u,l), egrid7
3700 if (egrid4(i,j)<spval.and.egrid5(i,j)<spval.and.&
3701 egrid6(i,j)<spval.and.egrid7(i,j)<spval.and.&
3702 uh(i,j,1)<spval)
THEN
3703 if (egrid5(i,j) <= egrid4(i,j))
then
3708 dp = egrid6(i,j) - egrid7(i,j)
3709 egrid1(i,j) = egrid1(i,j) + uh(i,j,l)*dp
3710 egrid2(i,j) = egrid2(i,j) + dp
3717 if(hcount < 1 )
exit vert_loopu
3722 IF(egrid2(i,j) > 0.)
THEN
3723 grid1(i,j) = egrid1(i,j)/egrid2(i,j)
3725 grid1(i,j) = u10(i,j)
3730 CALL h2v(egrid3(ista_2l:iend_2u,jsta_2l:jend_2u),egrid4)
3741 vert_loopv:
DO l=lm,1,-1
3742 CALL h2v(zmid(ista_2l:iend_2u,jsta_2l:jend_2u,l), egrid5)
3743 CALL h2v(pint(ista_2l:iend_2u,jsta_2l:jend_2u,l+1),egrid6)
3744 CALL h2v(pint(ista_2l:iend_2u,jsta_2l:jend_2u,l), egrid7)
3748 if (egrid4(i,j)<spval.and.egrid5(i,j)<spval.and.&
3749 egrid6(i,j)<spval.and.egrid7(i,j)<spval.and.&
3750 vh(i,j,1)<spval)
THEN
3751 if (egrid5(i,j) <= egrid4(i,j))
then
3753 dp = egrid6(i,j) - egrid7(i,j)
3754 egrid1(i,j) = egrid1(i,j) + vh(i,j,l)*dp
3755 egrid2(i,j) = egrid2(i,j) + dp
3762 if(hcount<1)
exit vert_loopv
3767 IF(egrid2(i,j) > 0.)
THEN
3768 grid2(i,j) = egrid1(i,j)/egrid2(i,j)
3770 grid2(i,j) = v10(i,j)
3776 CALL u2h(grid1(ista_2l:iend_2u,jsta_2l:jend_2u),egrid1)
3777 CALL v2h(grid2(ista_2l:iend_2u,jsta_2l:jend_2u),egrid2)
3784 IF (egrid1(i,j)<spval .and. egrid2(i,j)<spval)
THEN
3785 egrid3(i,j) = sqrt((egrid1(i,j)*egrid1(i,j)+egrid2
3798 IF(iget(389) > 0)
THEN
3799 if(grib==
'grib2')
then
3801 fld_info(cfld)%ifld=iavblfld(iget(389))
3807 datapd(i,j,cfld) = grid1(ii,jj)
3811 fld_info(cfld)%ifld=iavblfld(iget(390))
3817 datapd(i,j,cfld) = grid2(ii,jj)
3829 IF ( (iget(454) > 0) )
THEN
3836 IF (pblri(i,j) /= spval .and. egrid3(i,j)/=spval)
then
3837 grid1(i,j) = egrid3(i,j)*pblri(i,j)
3851 if(grib==
'grib2')
then
3853 fld_info(cfld)%ifld=iavblfld(iget(454))
3859 datapd(i,j,cfld) = grid1(ii,jj)
3868 IF (iget(245)>0 .or. iget(464)>0 .or. iget(467)>0.or. iget(470)>0)
THEN
3869 IF(modelname==
'RAPR')
THEN
3871 if(maptype == 6)
then
3872 if(grib==
'grib2')
then
3873 dxm = (dxval / 360.)*(erad*2.*pi)/1.d6
3878 if(grib ==
'grib2')
then
3882 nsmooth = nint(5.*(13500./dxm))
3883 do j = jsta_2l, jend_2u
3884 do i = ista_2l, iend_2u
3885 grid1(i,j)=pblhgust(i,j)
3888 call allgetherv(grid1)
3890 CALL smooth(grid1,sdummy,im,jm,0.5)
3892 do j = jsta_2l, jend_2u
3893 do i = ista_2l, iend_2u
3894 pblhgust(i,j)=grid1(i,j)
3903 if(zint(i,j,nint(lmh(i,j))+1) <spval)
then
3905 zsfc=zint(i,j,nint(lmh(i,j))+1)
3906 loopl:
DO l=nint(lmh(i,j)),1,-1
3907 IF(modelname==
'RAPR')
THEN
3909 pblhold=pblhgust(i,j)
3914 IF(hgt > pblhold+zsfc)
THEN
3916 IF(lpbl(i,j)>=lp1) lpbl(i,j) = lm
3924 if(lpbl(i,j)<1)print*,
'zero lpbl',i,j,pblri(i,j),lpbl(i,j)
3927 IF(modelname==
'RAPR')
THEN
3928 CALL calgust(lpbl,pblhgust,gust)
3932 IF (iget(245)>0)
THEN
3938 grid1(i,j) = gust(i,j)
3941 if(grib==
'grib2')
then
3943 fld_info(cfld)%ifld=iavblfld(iget(245))
3949 datapd(i,j,cfld) = grid1(ii,jj)
3959 IF (iget(344)>0)
THEN
3960 allocate(pblregime(ista_2l:iend_2u,jsta_2l:jend_2u))
3961 CALL calpblregime(pblregime)
3965 grid1(i,j) = pblregime(i,j)
3968 if(grib==
"grib2")
then
3970 fld_info(cfld)%ifld=iavblfld(iget(344))
3976 datapd(i,j,cfld) = grid1(ii,jj)
3980 deallocate(pblregime)
3992 IF(imp_physics == 8.)
then
3993 DO l=1,nint(lmh(i,j))
3994 IF(ref_10cm(i,j,l) > 18.3)
then
3995 grid1(i,j) = zmid(i,j,l)
4000 DO l=1,nint(lmh(i,j))
4001 IF(dbz(i,j,l) > 18.3)
then
4002 grid1(i,j) = zmid(i,j,l)
4012 if(grib==
"grib2")
then
4014 fld_info(cfld)%ifld=iavblfld(iget(400))
4020 datapd(i,j,cfld) = grid1(ii,jj)
4028 IF(iget(464)>0 .or. iget(467)>0 .or. iget(470)>0)
THEN
4037 call gtg_algo(im,jm,lm,jsta,jend,jsta_2l,jend_2u,&
4038 uh,vh,wh,zmid,pmid,t,q,qqw,qqr,qqs,qqg,qqi,&
4039 zint(ista_2l:iend_2u,jsta_2l:jend_2u,lp1),pblh,sfcshx,sfclhx,ustar
4040 z0,gdlat,gdlon,dx,dy,u10,v10,gust,avgprec,sm,sice,catedr,mwt,el,gtg
4050 IF (iget(470)>0)
THEN
4052 IF (lvls(l,iget(470))>0)
THEN
4056 grid1(i,j)=gtg(i,j,ll)
4059 if(grib==
"grib2")
then
4061 fld_info(cfld)%ifld=iavblfld(iget(470))
4062 fld_info(cfld)%lvl=lvlsxml(l,iget(470))
4068 datapd(i,j,cfld) = grid1(ii,jj)
4076 grid1(i,j)=catedr(i,j,ll)
4079 if(grib==
"grib2")
then
4081 fld_info(cfld)%ifld=iavblfld(iget(471))
4082 fld_info(cfld)%lvl=lvlsxml(l,iget(471))
4088 datapd(i,j,cfld) = grid1(ii,jj)
4095 grid1(i,j)=mwt(i,j,ll)
4098 if(grib==
"grib2")
then
4100 fld_info(cfld)%ifld=iavblfld(iget(472))
4101 fld_info(cfld)%lvl=lvlsxml(l,iget(472))
4107 datapd(i,j,cfld) = grid1(ii,jj)
4117 IF(iget(450)>0 .or. iget(480)>0)
THEN
4124 CALL calcape(itype,dpbnd,dummy,dummy,dummy,idummy,cape,cin, &
4131 if(debugprint .and. i==50 .and. j==jsta .and. me == 0)
then
4132 print*,
'sending input to FIP ',i,j,lm,gdlat(i,j),gdlon(i,j
4133 zint(i,j,lp1),cprate(i,j),prec(i,j),avgcprate(i,j),cape
4135 if(debugprint)print*,
'l,P,T,RH,CWM,QQW,QQI,QQR,QQS,QQG,OMEG'
4136 l,pmid(i,j,l),t(i,j,l),rh3d(i,j,l),cwm(i,j,l),
4137 q(i,j,l),qqw(i,j,l),qqi(i,j,l), &
4138 qqr(i,j,l),qqs(i,j,l),qqg(i,j,l),&
4139 rh3d(i,j,l),zmid(i,j,l),cwm(i,j,l),omga(i,j,l)
4142 CALL icing_algo(i,j,pmid(i,j,1:lm),t(i,j,1:lm),rh3d(i,j,1:lm
4143 ,zmid(i,j,1:lm),omga(i,j,1:lm),wh(i,j,1:lm) &
4144 ,q(i,j,1:lm),cwm(i,j,1:lm),qqw(i,j,1:lm),qqi(i,j,1:lm)
4145 ,qqr(i,j,1:lm),qqs(i,j,1:lm),qqg(i,j,1:lm) &
4146 ,lm,gdlat(i,j),gdlon(i,j),zint(i,j,lp1)
4147 ,prec(i,j),cprate(i,j),cape(i,j),cin(i,j)
4148 ,icing_gfip(i,j,1:lm),icing_gfis(i,j,1:lm))
4174 DEALLOCATE(el, richno, pblri)
4175 if (
allocated(rh3d))
deallocate(rh3d)
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 calgust(lpbl, zpbl, gust)
This routine computes surface wind gust by mixing down momentum from the level at the height of the P...
subroutine calmict_old(p1d, t1d, q1d, c1d, fi1d, fr1d, fs1d, curefl,
subroutine ngmslp
SUBPROGRAM: NGMSLP NMC SEA LEVEL PRESSURE REDUCTION PRGRMMR: TREADON ORG: W/NP2 DATE: 93-02-02
subroutine smooth(field, hold, ix, iy, smth)
dvdxdudy() computes dudy, dvdx, uwnd
calcape() computes CAPE/CINS and other storm related variables.
subroutine, public calcape(itype, dpbnd, p1d, t1d, q1d, l1d, cape, cins, pparc, zeql, thund)
calcape() computes CAPE and CINS.