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, lpbl
133 real,
dimension(im,jm) :: grid1, grid2
134 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: egrid1, egrid2, egrid3, egrid4, egrid5,&
135 el0, p1d, t1d, q1d, c1d, &
136 fi1d, fr1d, fs1d, qw1, qi1, &
137 qr1, qs1, curefl_s, &
138 curefl, curefl_i, zfrz, dbz1, dbzr1, &
139 dbzi1, dbzc1, egrid6, egrid7, nlice1, &
140 qi, qint, tt, ppp, qv, &
141 qcd, qice1, qrain1, qsno1, refl, &
142 qg1, refl1km, refl4km, rh, gust, nrain1,zm10c
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=g/rd
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 ',model_radar, &
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
371 refl_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))
381 refl_comp:
IF(ref_10cm(i,j,l)>dbzmin .OR. ze_max>dbzmin)
THEN
382 refl_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= ',icount_calmict
498 ELSE IF(modelname ==
'NMM' .and. gridtype==
'B' .and. imp_physics==99)
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==6)
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 /= 28)
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 * 1.e18
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,jsta:jend)
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,jsta:jend)
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,jsta:jend)
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),egrid3(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),egrid3(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),q1d(ista:iend,jsta:jend),egrid4(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),egrid3(ista:iend,jsta:jend),t1d(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)<spval)
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,jsta:jend))
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,1)<spval)
THEN
2305 grid1(i,j) = (1./rd)*(pmid(i,j,ll)/t(i,j,ll))*smoke(i,j,ll,1)
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,l)<spval)
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+1))/1000.
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 == 28))
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 == 28))
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 == 28))
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 == 28))
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,jsta:jend)
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),egrid5(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:jend)
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(i,j)*egrid2(i,j)))
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)
3930 CALL calgust(lpbl,pblri,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,richno,item)
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(i,j),cin(i,j)
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)
dvdxdudy() computes dudy, dvdx, uwnd
calcape() computes CAPE/CINS and other storm related variables.