93 use vrbls4d,
only: dust, salt, suso, waso, soot, no3, nh4, smoke, fv3dust,&
95 use vrbls3d,
only: zmid, t, pmid, q, cwm, f_ice, f_rain, f_rimef, qqw, qqi,&
96 qqr, qqs, cfr, cfr_raw, dbz, dbzr, dbzi, dbzc, qqw, nlice, nrain, qqg, zint, qqni,&
97 qqnr, qqnw, qqnwfa, qqnifa, uh, vh, mcvg, omga, wh, q2, ttnd, rswtt, &
98 rlwtt, train, tcucn, o3, rhomid, dpres, el_pbl, pint, icing_gfip, icing_gfis, &
99 catedr,mwt,gtg, ref_10cm, avgpmtf, avgozcon
101 use vrbls2d,
only: slp, hbot, htop, cnvcfr, cprate, cnvcfr, sfcshx,sfclhx,ustar,z0,&
102 sr, prec, vis, czen, pblh, pblhgust, u10, v10, avgprec, avgcprate, &
103 ref1km_10cm,ref4km_10cm,refc_10cm,refd_max
104 use masks,
only: lmh, gdlat, gdlon,sm,sice,dx,dy
105 use params_mod,
only: rd, gi, g, rog, h1, tfrz, d00, dbzmin, d608, small,&
106 h100, h1m12, h99999,pi,erad
107 use pmicrph_mod,
only: r1, const1r, qr0, delqr0, const2r, ron, topr, son,&
108 tops, dsnow, drain,const_ng1, const_ng2, gon, topg, dgraupel
109 use ctlblk_mod,
only: jsta_2l, jend_2u, lm, jsta, jend, grib, cfld, datapd,&
110 fld_info, modelname, imp_physics, dtq2, spval, icount_calmict,&
111 me, dt, avrain, theat, ifhr, ifmin, avcnvc, lp1, im, jm, &
112 ista, iend, ista_2l, iend_2u, aqf_on, gocart_on, gccpp_on, nasa_on
113 use rqstfld_mod,
only: iget, id, lvls, iavblfld, lvlsxml
114 use gridspec_mod,
only: gridtype,maptype,dxval
115 use upp_physics,
only: calrh, calcape, calvor
116 use upp_math,
only: h2u, h2v, u2h, v2h
122 REAL,
PARAMETER :: CURATE=24.*1000., ctim1=0., ctim2=24.*3600. &
123 &, raincon=0.8333*1.1787e4, snocon=0.94*1.4594e5 &
128 &, dbzmax=80., zr_a=300., zr_b=1.4
133 DATA cc / 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0 /
134 DATA ppt/ 0., .14, .31, .70, 1.6, 3.4, 7.7, 17., 38., 85. /
135 INTEGER,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: ICBOT, ICTOP, LPBL
143 real,
dimension(im,jm) :: GRID1, GRID2
144 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: EGRID1, EGRID2, EGRID3, EGRID4, EGRID5,&
145 el0, p1d, t1d, q1d, c1d, &
146 fi1d, fr1d, fs1d, qw1, qi1, &
147 qr1, qs1, curefl_s, &
148 curefl, curefl_i, zfrz, dbz1, dbzr1, &
149 dbzi1, dbzc1, egrid6, egrid7, nlice1, &
150 qi, qint, tt, ppp, qv, &
151 qcd, qice1, qrain1, qsno1, refl, &
152 qg1, refl1km, refl4km, rh, gust, nrain1,zm10c, &
156 REAL,
ALLOCATABLE :: EL(:,:,:),RICHNO(:,:,:) ,PBLRI(:,:), PBLREGIME(:,:)
158 integer I,J,L,Lctop,LLMH,IICE,LL,II,JJ,IFINCR,ITHEAT,NC,NMOD,LLL &
159 ,iz1km,iz4km, lcount, hcount, itype, item
161 real RDTPHS,CFRdum,PMOD,CC1,CC2,P1,P2,CUPRATE,FACR,RRNUM &
162 ,rainrate,term1,term2,term3,qrold,snorate,dens,delz,fctr,hgt &
163 ,rain,ronv,slor,snow,rhoqs,temp_c,sonv,slos &
164 ,graupel,rhoqg,gonv,slog, alpha, rhod, bb &
165 ,ze_s, ze_r, ze_g, ze_max, ze_nc, ze_conv, ze_sum &
166 ,ze_smax, ze_rmax,ze_gmax, ze_nc_1km, ze_nc_4km, dz &
167 ,lapses, expo,expinv,tsfcnew, gam,gamd,gams, pblhold &
168 ,psfc,tsfc,zsfc,dp,dpbnd,zmin
170 real,
allocatable :: RH3D(:,:,:)
174 REAL SDUMMY(IM,2),dxm
176 real,
dimension(ista:iend,jsta:jend) :: dummy, cape, cin
177 integer idummy(ista:iend,jsta:jend)
179 real,
PARAMETER :: ZSL=0.0, taucr=rd*gi*290.66, const=0.005*g/rd, gord=g/rd
180 logical,
parameter :: debugprint = .false.
189 zmin=10.**(0.1*dbzmin)
207 model_radar = .false.
212 IF(abs(ref_10cm(i,j,l)-spval)>small)
THEN
219 if(debugprint .and. me==0)print*,
'Did post read in model derived radar ref ',model_radar, &
220 'MODELNAME=',trim(modelname),
' imp_physics=',imp_physics
221 ALLOCATE(el(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
222 ALLOCATE(richno(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
223 ALLOCATE(pblri(ista_2l:iend_2u,jsta_2l:jend_2u))
226 IF (iget(023) > 0 .OR. iget(105) > 0 .OR. iget(445) > 0)
THEN
229 IF (iget(105) > 0)
THEN
233 grid1(i,j) = slp(i,j)
236 if(grib==
"grib2")
then
238 fld_info(cfld)%ifld=iavblfld(iget(105))
244 datapd(i,j,cfld) = grid1(ii,jj)
254 IF (modelname==
'NMM' .OR. imp_physics==5 .or. &
255 imp_physics==85 .or. imp_physics==95)
THEN
257 rdtphs=24.*3.6e6/dtq2
260 IF ((hbot(i,j)-htop(i,j)) <= 1.0)
THEN
265 icbot(i,j)=nint(hbot(i,j))
266 ictop(i,j)=nint(htop(i,j))
268 pmod=rdtphs*cprate(i,j)
269 IF (pmod > ppt(1))
THEN
271 IF(pmod>ppt(nc)) nmod=nc
280 cfrdum=cc1+(cc2-cc1)*(pmod-p1)/(p2-p1)
282 cfrdum=min(h1, cfrdum)
292 IF (modelname==
'NMM' .AND. imp_physics==9)
THEN
301 IF(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95 &
302 .or. nmm_gfsmicro)
THEN
306 cuprate=rdtphs*cprate(i,j)
308 zfrz(i,j)=zmid(i,j,nint(lmh(i,j)))
309 DO l=1,nint(lmh(i,j))
310 IF (t(i,j,l) >= tfrz)
THEN
311 zfrz(i,j)=zmid(i,j,l)
316 IF (cuprate <= 0. .or. htop(i,j)>=spval)
THEN
320 curefl_s(i,j)=zr_a*cuprate**zr_b
321 lctop=nint(htop(i,j))
328 curefl_i(i,j)=-2./max( 1000., zmid(i,j,lctop)-zfrz(i,j) )
338 if(icount_calmict==0)
then
346 fi1d(i,j)=f_ice(i,j,l)
347 fr1d(i,j)=f_rain(i,j,l)
348 fs1d(i,j)=max(h1, f_rimef(i,j,l))
353 IF (curefl_s(i,j) > 0.)
THEN
355 llmh = nint(lmh(i,j))
356 lctop=nint(htop(i,j))
357 IF (l>=lctop .AND. l<=llmh)
THEN
358 delz=zmid(i,j,l)-zfrz(i,j)
365 fctr=10.**(curefl_i(i,j)*delz)
368 curefl(i,j)=fctr*curefl_s(i,j)
373 IF(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95)
THEN
374 fer_mic:
IF (imp_physics==5)
THEN
383 CALL calmict_new(p1d,t1d,q1d,c1d,fi1d,fr1d,fs1d,curefl &
384 & ,qw1,qi1,qr1,qs1,dbz1,dbzr1,dbzi1,dbzc1,nlice1, nrain1)
385 IF(modelname ==
'NMM' .and. gridtype==
'B')
THEN
391refl_miss:
IF (model_radar)
THEN
395 IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q1d(i,j)<spval)
THEN
396 ze_nc=10.**(0.1*ref_10cm(i,j,l))
397 dbz1(i,j)=10.*log10(max(zmin,(ze_nc+curefl(i,j))))
398 dbzr1(i,j)=min(dbzr1(i,j), ref_10cm(i,j,l))
399 dbzi1(i,j)=min(dbzi1(i,j), ref_10cm(i,j,l))
400 ze_max=max(dbzr1(i,j),dbzi1(i,j))
401refl_comp:
IF(ref_10cm(i,j,l)>dbzmin .OR. ze_max>dbzmin)
THEN
402refl_adj:
IF(ref_10cm(i,j,l)<=dbzmin)
THEN
405 ELSE IF(ze_max<=dbzmin)
THEN
406 IF(qr1(i,j)>qs1(i,j))
THEN
407 dbzr1(i,j)=ref_10cm(i,j,l)
408 ELSE IF(qs1(i,j)>qr1(i,j))
THEN
409 dbzi1(i,j)=ref_10cm(i,j,l)
411 IF(t1d(i,j)>=tfrz)
THEN
412 dbzr1(i,j)=ref_10cm(i,j,l)
414 dbzi1(i,j)=ref_10cm(i,j,l)
418 ze_nc=10.**(0.1*ref_10cm(i,j,l))
419 ze_r=10.**(0.1*dbzr1(i,j))
420 ze_s=10.**(0.1*dbzi1(i,j))
425 dbzr1(i,j)=10.*log10(ze_r)
426 dbzi1(i,j)=10.*log10(ze_s)
437 IF (me==0 .AND. l==1)
THEN
438 WRITE(6,
'(4A,1x,F7.2)')
'WARNING - MDLFLD: REF_10CM NOT ', &
439 'IN NMMB OUTPUT. CHECK ', &
440 'SOLVER_STATE.TXT FILE. USING ', &
441 'REFL OUTPUT FROM CALMICT.'
452 CALL calmict_old(p1d,t1d,q1d,c1d,fi1d,fr1d,fs1d,curefl &
453 & ,qw1,qi1,qr1,qs1,dbz1,dbzr1,dbzi1,dbzc1,nlice1, nrain1)
462 IF(c1d(i,j)<spval.and.fi1d(i,j)<spval)
THEN
463 qi1(i,j)=c1d(i,j)*fi1d(i,j)
464 qw1(i,j)=c1d(i,j)-qi1(i,j)
480 llmh = nint(lmh(i,j))
492 qqw(i,j,l) = max(d00, qw1(i,j))
493 qqi(i,j,l) = max(d00, qi1(i,j))
494 qqr(i,j,l) = max(d00, qr1(i,j))
495 qqs(i,j,l) = max(d00, qs1(i,j))
496 dbz(i,j,l) = max(dbzmin, dbz1(i,j))
497 dbzr(i,j,l) = max(dbzmin, dbzr1(i,j))
498 dbzi(i,j,l) = max(dbzmin, dbzi1(i,j))
499 dbzc(i,j,l) = max(dbzmin, dbzc1(i,j))
500 nlice(i,j,l) = max(d00, nlice1(i,j))
501 nrain(i,j,l) = max(d00, nrain1(i,j))
508 icount_calmict=icount_calmict+1
509 if(debugprint .and. me==0)print*,
'debug calmict:icount_calmict= ',icount_calmict
518 ELSE IF(modelname ==
'NMM' .and. gridtype==
'B' .and. imp_physics==99)
THEN
522 llmh = nint(lmh(i,j))
534 qqi(i,j,l) = max(d00, cwm(i,j,l)*f_ice(i,j,l))
535 qqw(i,j,l) = max(d00, cwm(i,j,l)-qqi(i,j,l))
546 ELSE IF(modelname ==
'NMM' .and. gridtype==
'B' .and. imp_physics==6)
THEN
550 llmh = nint(lmh(i,j))
563 qqw(i,j,l)=max(d00, (1.-f_ice(i,j,l))*cwm(i,j,l)*(1.-f_rain(i,j,l)))
564 qqr(i,j,l)=max(d00,(1.-f_ice(i,j,l))*cwm(i,j,l)*f_rain(i,j,l))
565 qqs(i,j,l)=max(d00, cwm(i,j,l)*f_ice(i,j,l))
566 dens=pmid(i,j,l)/(rd*t(i,j,l)*(q(i,j,l)*d608+1.0))
567 dbzr(i,j,l)=((qqr(i,j,l)*dens)**1.75)* &
568 & 3.630803e-9 * 1.e18
569 dbzi(i,j,l)= dbzi(i,j,l)+((qqs(i,j,l)*dens)**1.75)* &
570 & 2.18500e-10 * 1.e18
571 dbz(i,j,l)=dbzr(i,j,l)+dbzi(i,j,l)
572 IF (dbz(i,j,l)>0.) dbz(i,j,l)=10.0*log10(dbz(i,j,l))
573 IF (dbzr(i,j,l)>0.)dbzr(i,j,l)=10.0*log10(dbzr(i,j,l))
574 IF (dbzi(i,j,l)>0.) &
575 & dbzi(i,j,l)=10.0*log10(dbzi(i,j,l))
576 dbz(i,j,l)=max(dbzmin, dbz(i,j,l))
577 dbzr(i,j,l)=max(dbzmin, dbzr(i,j,l))
578 dbzi(i,j,l)=max(dbzmin, dbzi(i,j,l))
584 ELSE IF(((modelname ==
'NMM' .and. gridtype==
'B') .OR. modelname ==
'FV3R') &
585 .and. imp_physics==8)
THEN
589 dbz(i,j,l)=ref_10cm(i,j,l)
593 ELSE IF(imp_physics==99 .or. imp_physics==98)
THEN
602 if(debugprint .and. me==0)print*,
'calculating radar ref for non-Ferrier/non-Zhao schemes'
604 IF(imp_physics == 1 .OR. imp_physics == 3)
THEN
614 cuprate=rdtphs*cprate(i,j)
615 zfrz(i,j)=zmid(i,j,nint(lmh(i,j)))
616 DO l=1,nint(lmh(i,j))
617 IF (t(i,j,l) >= tfrz)
THEN
618 zfrz(i,j)=zmid(i,j,l)
623 IF (cuprate <= 0. .or. htop(i,j)>=spval)
THEN
627 curefl_s(i,j)=zr_a*cuprate**zr_b
628 lctop=nint(htop(i,j))
635 curefl_i(i,j)=-2./max( 1000., zmid(i,j,lctop)-zfrz(i,j) )
640 IF(imp_physics /= 8 .AND. imp_physics /= 9 .and. imp_physics /= 28)
THEN
649 IF (curefl_s(i,j) > 0.)
THEN
651 llmh = nint(lmh(i,j))
652 lctop=nint(htop(i,j))
653 IF (l>=lctop .AND. l<=llmh)
THEN
654 delz=zmid(i,j,l)-zfrz(i,j)
661 fctr=10.**(curefl_i(i,j)*delz)
664 curefl(i,j)=fctr*curefl_s(i,j)
665 dbzc(i,j,l)=curefl(i,j)
668 IF(t(i,j,l)<spval)
THEN
670 IF(t(i,j,l) > 1.0e-3) &
671 & dens = pmid(i,j,l)/(rd*t(i,j,l)*(q(i,j,l)*d608+1.0))
676 qqr(i,j,l) = max(qqr(i,j,l),0.0)
677 qqs(i,j,l) = max(qqs(i,j,l),0.0)
679 IF (t(i,j,l) >= tfrz)
THEN
680 dbz(i,j,l) = ((qqr(i,j,l)*dens)**1.75)* &
681 & 3.630803e-9 * 1.e18
682 dbzr(i,j,l) = dbz(i,j,l)
685 dbz(i,j,l) = ((qqs(i,j,l)*dens)**1.75)* &
686 & 2.18500e-10 * 1.e18
687 dbzi(i,j,l) = dbz(i,j,l)
689 ELSEIF (iice == 1)
THEN
691 qqg(i,j,l) = max(qqg(i,j,l),0.0)
692 if(qqr(i,j,l) < spval .and. qqr(i,j,l)> 0.0)
then
693 dbzr(i,j,l) = ((qqr(i,j,l)*dens)**1.75) * 3.630803e-9 * 1.e18
697 if(qqs(i,j,l) < spval .and. qqs(i,j,l) > 0.0)
then
698 dbzi(i,j,l) = ((qqs(i,j,l)*dens)**1.75) * &
699 & 2.18500e-10 * 1.e18
703 IF (qqg(i,j,l) < spval .and. qqg(i,j,l)> 0.0)
then
704 dbzi(i,j,l) = dbzi(i,j,l) + ((qqg(i,j,l)*dens)**1.75) * &
705 & 1.033267e-9 * 1.e18
707 dbzi(i,j,l) = dbzi(i,j,l)
709 IF (model_radar)
THEN
710 ze_nc=10.**(0.1*ref_10cm(i,j,l))
711 dbz(i,j,l) = ze_nc+curefl(i,j)
713 dbz(i,j,l) = dbzr(i,j,l) + dbzi(i,j,l) + curefl(i,j)
718 IF (dbz(i,j,l) > 0.) dbz(i,j,l) = 10.0*log10(dbz(i,j,l))
719 IF (dbzr(i,j,l) > 0.) dbzr(i,j,l) = 10.0*log10(dbzr(i,j,l))
720 IF (dbzi(i,j,l) > 0.) dbzi(i,j,l) = 10.0*log10(dbzi(i,j,l))
721 IF (dbzc(i,j,l) > 0.) dbzc(i,j,l) = 10.0*log10(dbzc(i,j,l))
722 llmh = nint(lmh(i,j))
729 dbz(i,j,l) = max(dbzmin, dbz(i,j,l))
730 dbzr(i,j,l) = max(dbzmin, dbzr(i,j,l))
731 dbzi(i,j,l) = max(dbzmin, dbzi(i,j,l))
732 dbzc(i,j,l) = max(dbzmin, dbzc(i,j,l))
771 IF(t(i,j,ll)<spval)
THEN
772 IF(t(i,j,ll) < 1.0e-3)print*,
'ZERO T'
773 IF(t(i,j,ll) > 1.0e-3) &
775 (rd*t(i,j,ll)*(q(i,j,ll)*d608+1.0))
776 dz=zint(i,j,ll)-zint(i,j,lm+1)
791 if (qqr(i,j,ll) >= 1.e-6)
then
792 rain = max(r1,qqr(i,j,ll))
793 ronv = (const1r*tanh((qr0 - rain)/delqr0) + &
795 slor=(rhod*rain/(topr*ronv))**0.25
796 ze_r = 720.*ronv*ron*slor**7
801 if (qqs(i,j,ll) >= 1.e-6)
then
802 snow = max(r1,qqs(i,j,ll))
805 temp_c = min(-0.001, t(i,j,ll)-273.15)
806 sonv = (min(2.0e8, 2.0e6*exp(-0.12*temp_c)))/son
807 slos=(rhoqs/(tops*sonv))**0.25
808 ze_s = 720.*alpha*sonv*son*slos**7*(dsnow/drain)**2
813 IF (t(i,j,ll) > 273.15) &
814 ze_s = ze_s*(1. + 4.28*bb)
819 if (qqg(i,j,ll) >= 1.e-6)
then
820 graupel = max(r1,qqg(i,j,ll))
823 gonv=const_ng1*(rhoqg**const_ng2)
824 gonv = max(1.e4, min(gonv,gon))
826 slog=(rhoqg/(topg*gonv))**0.25
827 ze_g = 720.*alpha*gonv*gon*slog**7*(dgraupel/drain)**2
831 IF (t(i,j,ll) > 273.15) &
832 ze_g = ze_g*(1. + 4.28*bb)
836 ze_nc = ze_r + ze_s + ze_g
838 if (iz1km==0 .and. dz>1000.)
then
843 if (iz4km==0 .and. dz>4000.)
then
848 ze_rmax = max(ze_r,ze_rmax)
849 ze_smax = max(ze_s,ze_smax)
850 ze_gmax = max(ze_g,ze_gmax)
862 ze_max = max(ze_max, ze_sum )
865 dbzr(i,j,ll) = ze_r*1.e18
866 dbzi(i,j,ll) = (ze_s+ze_g)*1.e18
869 dbzr(i,j,ll) = dbzmin
870 dbzi(i,j,ll) = dbzmin
879 cuprate=rdtphs*cprate(i,j)
883 ze_conv= max(0.1,300*(cuprate)**1.4)
888 ze_sum = ze_max + ze_conv
889 refl(i,j) = 10.*log10(ze_sum)
890 refl1km(i,j) = 10.*log10(ze_nc_1km*1.e18 + ze_conv)
891 refl4km(i,j) = 10.*log10(ze_nc_4km*1.e18 + ze_conv)
896 ze_rmax = 10.*log10(ze_rmax*1.e18)
897 ze_smax = 10.*log10(ze_smax*1.e18)
898 ze_gmax = 10.*log10(ze_gmax*1.e18)
909 allocate (rh3d(ista_2l:iend_2u,jsta_2l:jend_2u,lm))
910 IF ( (iget(001)>0).OR.(iget(077)>0).OR. &
911 (iget(002)>0).OR.(iget(003)>0).OR. &
912 (iget(004)>0).OR.(iget(005)>0).OR. &
913 (iget(006)>0).OR.(iget(083)>0).OR. &
914 (iget(007)>0).OR.(iget(008)>0).OR. &
915 (iget(009)>0).OR.(iget(010)>0).OR. &
916 (iget(084)>0).OR.(iget(011)>0).OR. &
917 (iget(041)>0).OR.(iget(124)>0).OR. &
918 (iget(078)>0).OR.(iget(079)>0).OR. &
919 (iget(125)>0).OR.(iget(145)>0).OR. &
920 (iget(140)>0).OR.(iget(040)>0).OR. &
921 (iget(181)>0).OR.(iget(182)>0).OR. &
922 (iget(199)>0).OR.(iget(185)>0).OR. &
923 (iget(186)>0).OR.(iget(187)>0).OR. &
924 (iget(250)>0).OR.(iget(252)>0).OR. &
925 (iget(276)>0).OR.(iget(277)>0).OR. &
926 (iget(750)>0).OR.(iget(751)>0).OR. &
927 (iget(752)>0).OR.(iget(754)>0).OR. &
928 (iget(278)>0).OR.(iget(264)>0).OR. &
929 (iget(450)>0).OR.(iget(480)>0).OR. &
930 (iget(479)>0).OR.(iget(481)>0).OR. &
931 (iget(774)>0).OR.(iget(747)>0).OR. &
932 (iget(464)>0).OR.(iget(467)>0).OR. &
933 (iget(470)>0).OR.(iget(476)>0).OR. &
934 (iget(629)>0).OR.(iget(630)>0).OR. &
935 (iget(909)>0).OR.(iget(737)>0).OR. &
937 (iget(994)>0).OR.(iget(995)>0) )
THEN
942 IF (iget(001)>0)
THEN
943 IF (lvls(l,iget(001))>0)
THEN
948 grid1(i,j) = pmid(i,j,ll)
951 if(grib==
"grib2" )
then
953 fld_info(cfld)%ifld=iavblfld(iget(001))
954 fld_info(cfld)%lvl=lvlsxml(l,iget(001))
960 datapd(i,j,cfld) = grid1(ii,jj)
970 IF (iget(124) > 0)
THEN
971 IF (lvls(l,iget(124)) > 0)
THEN
976 grid1(i,j) = qqw(i,j,ll)
977 if(grid1(i,j)<1e-20) grid1(i,j) = 0.0
980 if(grib==
"grib2" )
then
982 fld_info(cfld)%ifld=iavblfld(iget(124))
983 fld_info(cfld)%lvl=lvlsxml(l,iget(124))
989 datapd(i,j,cfld) = grid1(ii,jj)
998 IF (iget(125) > 0)
THEN
999 IF (lvls(l,iget(125)) > 0)
THEN
1004 grid1(i,j) = qqi(i,j,ll)
1005 if(grid1(i,j)<1e-20) grid1(i,j) = 0.0
1008 if(grib==
"grib2" )
then
1010 fld_info(cfld)%ifld=iavblfld(iget(125))
1011 fld_info(cfld)%lvl=lvlsxml(l,iget(125))
1017 datapd(i,j,cfld) = grid1(ii,jj)
1026 IF (iget(181) > 0)
THEN
1027 IF (lvls(l,iget(181)) > 0)
THEN
1032 grid1(i,j) = qqr(i,j,ll)
1033 if(grid1(i,j)<1e-20) grid1(i,j) = 0.0
1036 if(grib==
"grib2" )
then
1038 fld_info(cfld)%ifld=iavblfld(iget(181))
1039 fld_info(cfld)%lvl=lvlsxml(l,iget(181))
1045 datapd(i,j,cfld) = grid1(ii,jj)
1054 IF (iget(182) > 0)
THEN
1055 IF (lvls(l,iget(182)) > 0)
THEN
1060 grid1(i,j) = qqs(i,j,ll)
1061 if(grid1(i,j)<1e-20) grid1(i,j) = 0.0
1064 if(grib==
"grib2" )
then
1066 fld_info(cfld)%ifld=iavblfld(iget(182))
1067 fld_info(cfld)%lvl=lvlsxml(l,iget(182))
1073 datapd(i,j,cfld) = grid1(ii,jj)
1082 IF (iget(415) > 0)
THEN
1083 IF (lvls(l,iget(415)) > 0)
THEN
1088 if(qqg(i,j,ll) < 1.e-12) qqg(i,j,ll) = 0.
1089 grid1(i,j) = qqg(i,j,ll)
1092 if(grib==
"grib2" )
then
1094 fld_info(cfld)%ifld=iavblfld(iget(415))
1095 fld_info(cfld)%lvl=lvlsxml(l,iget(415))
1101 datapd(i,j,cfld) = grid1(ii,jj)
1110 IF (iget(747) > 0)
THEN
1111 IF (lvls(l,iget(747)) > 0)
THEN
1116 if(qqnw(i,j,ll) < 1.e-8) qqnw(i,j,ll) = 0.
1117 grid1(i,j) = qqnw(i,j,ll)
1120 if(grib==
"grib2" )
then
1122 fld_info(cfld)%ifld=iavblfld(iget(747))
1123 fld_info(cfld)%lvl=lvlsxml(l,iget(747))
1129 datapd(i,j,cfld) = grid1(ii,jj)
1138 IF (iget(752) > 0)
THEN
1139 IF (lvls(l,iget(752)) > 0)
THEN
1144 if(qqni(i,j,ll) < 1.e-8) qqni(i,j,ll) = 0.
1145 grid1(i,j) = qqni(i,j,ll)
1148 if(grib==
"grib2" )
then
1150 fld_info(cfld)%ifld=iavblfld(iget(752))
1151 fld_info(cfld)%lvl=lvlsxml(l,iget(752))
1157 datapd(i,j,cfld) = grid1(ii,jj)
1166 IF (iget(754) > 0)
THEN
1167 IF (lvls(l,iget(754)) > 0)
THEN
1172 if(qqnr(i,j,ll) < 1.e-8) qqnr(i,j,ll) = 0.
1173 grid1(i,j) = qqnr(i,j,ll)
1176 if(grib==
"grib2" )
then
1178 fld_info(cfld)%ifld=iavblfld(iget(754))
1179 fld_info(cfld)%lvl=lvlsxml(l,iget(754))
1185 datapd(i,j,cfld) = grid1(ii,jj)
1193 IF (iget(766) > 0)
THEN
1194 IF (lvls(l,iget(766)) > 0)
THEN
1198 if(qqnwfa(i,j,ll)<1.e-8)qqnwfa(i,j,ll)=0.
1199 grid1(i,j)=qqnwfa(i,j,ll)
1202 if(grib==
"grib2" )
then
1204 fld_info(cfld)%ifld=iavblfld(iget(766))
1205 fld_info(cfld)%lvl=lvlsxml(l,iget(766))
1206 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1213 IF (iget(767) > 0)
THEN
1214 IF (lvls(l,iget(767)) > 0)
THEN
1218 if(qqnifa(i,j,ll)<1.e-8)qqnifa(i,j,ll)=0.
1219 grid1(i,j)=qqnifa(i,j,ll)
1222 if(grib==
"grib2" )
then
1224 fld_info(cfld)%ifld=iavblfld(iget(767))
1225 fld_info(cfld)%lvl=lvlsxml(l,iget(767))
1226 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1233 IF (iget(145) > 0)
THEN
1234 IF (lvls(l,iget(145)) > 0)
THEN
1239 IF(abs(cfr(i,j,ll)-spval) > small)
THEN
1240 grid1(i,j) = cfr(i,j,ll)*h100
1246 CALL bound(grid1,d00,h100)
1247 if(grib==
"grib2" )
then
1249 fld_info(cfld)%ifld=iavblfld(iget(145))
1250 fld_info(cfld)%lvl=lvlsxml(l,iget(145))
1256 datapd(i,j,cfld) = grid1(ii,jj)
1265 IF (iget(774) > 0)
THEN
1266 IF (lvls(l,iget(774)) > 0)
THEN
1271 IF(modelname ==
'RAPR')
THEN
1272 grid1(i,j) = cfr(i,j,ll)
1274 grid1(i,j) = cfr_raw(i,j,ll)
1278 if(grib==
"grib2" )
then
1280 fld_info(cfld)%ifld=iavblfld(iget(774))
1281 fld_info(cfld)%lvl=lvlsxml(l,iget(774))
1287 datapd(i,j,cfld) = grid1(ii,jj)
1296 IF (iget(250) > 0)
THEN
1297 IF (lvls(l,iget(250)) > 0)
THEN
1307 IF(imp_physics == 8 .or. imp_physics == 28)
THEN
1311 grid1(i,j) = ref_10cm(i,j,ll)
1318 grid1(i,j) = dbz(i,j,ll)
1323 CALL bound(grid1,dbzmin,dbzmax)
1324 if(grib==
"grib2" )
then
1326 fld_info(cfld)%ifld=iavblfld(iget(250))
1327 fld_info(cfld)%lvl=lvlsxml(l,iget(250))
1333 datapd(i,j,cfld) = grid1(ii,jj)
1343 IF (iget(199)>0)
THEN
1344 IF (lvls(l,iget(199))>0)
THEN
1349 grid1(i,j) = cwm(i,j,ll)
1352 if(grib==
"grib2" )
then
1354 fld_info(cfld)%ifld=iavblfld(iget(199))
1355 fld_info(cfld)%lvl=lvlsxml(l,iget(199))
1361 datapd(i,j,cfld) = grid1(ii,jj)
1370 IF (iget(185)>0)
THEN
1371 IF (lvls(l,iget(185))>0)
THEN
1376 grid1(i,j) = f_rain(i,j,ll)
1379 if(grib==
"grib2" )
then
1381 fld_info(cfld)%ifld=iavblfld(iget(185))
1382 fld_info(cfld)%lvl=lvlsxml(l,iget(185))
1388 datapd(i,j,cfld) = grid1(ii,jj)
1397 IF (iget(186)>0)
THEN
1398 IF (lvls(l,iget(186))>0)
THEN
1403 grid1(i,j) = f_ice(i,j,ll)
1406 if(grib==
"grib2" )
then
1408 fld_info(cfld)%ifld=iavblfld(iget(186))
1409 fld_info(cfld)%lvl=lvlsxml(l,iget(186))
1415 datapd(i,j,cfld) = grid1(ii,jj)
1424 IF (iget(187)>0)
THEN
1425 IF (lvls(l,iget(187))>0)
THEN
1431 grid1(i,j) = f_rimef(i,j,ll)
1434 if(grib==
"grib2" )
then
1436 fld_info(cfld)%ifld=iavblfld(iget(187))
1437 fld_info(cfld)%lvl=lvlsxml(l,iget(187))
1443 datapd(i,j,cfld) = grid1(ii,jj)
1452 IF (iget(077)>0)
THEN
1453 IF (lvls(l,iget(077))>0)
THEN
1458 grid1(i,j) = zmid(i,j,ll)
1461 if(grib==
"grib2" )
then
1463 fld_info(cfld)%ifld=iavblfld(iget(077))
1464 fld_info(cfld)%lvl=lvlsxml(l,iget(077))
1470 datapd(i,j,cfld) = grid1(ii,jj)
1479 IF (iget(002)>0)
THEN
1480 IF (lvls(l,iget(002))>0)
THEN
1485 grid1(i,j) = t(i,j,ll)
1488 if(grib==
"grib2" )
then
1490 fld_info(cfld)%ifld=iavblfld(iget(002))
1491 fld_info(cfld)%lvl=lvlsxml(l,iget(002))
1497 datapd(i,j,cfld) = grid1(ii,jj)
1506 IF (iget(909)>0)
THEN
1507 IF (lvls(l,iget(909))>0)
THEN
1512 IF(t(i,j,ll)<spval.and.q(i,j,ll)<spval)
THEN
1513 grid1(i,j)=t(i,j,ll)*(1.+d608*q(i,j,ll))
1519 if(grib==
"grib2" )
then
1521 fld_info(cfld)%ifld=iavblfld(iget(909))
1522 fld_info(cfld)%lvl=lvlsxml(l,iget(909))
1523 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1530 IF (iget(003)>0)
THEN
1531 IF (lvls(l,iget(003))>0)
THEN
1536 p1d(i,j) = pmid(i,j,ll)
1537 t1d(i,j) = t(i,j,ll)
1540 CALL calpot(p1d(ista:iend,jsta:jend),t1d(ista:iend,jsta:jend),egrid3(ista:iend,jsta:jend))
1545 grid1(i,j) = egrid3(i,j)
1548 if(grib==
"grib2")
then
1550 fld_info(cfld)%ifld=iavblfld(iget(003))
1551 fld_info(cfld)%lvl=lvlsxml(l,iget(003))
1557 datapd(i,j,cfld) = grid1(ii,jj)
1566 IF (iget(751)>0)
THEN
1567 IF (lvls(l,iget(751))>0)
THEN
1572 p1d(i,j) = pmid(i,j,ll)
1573 t1d(i,j) = t(i,j,ll)
1576 CALL calpot(p1d(ista:iend,jsta:jend),t1d(ista:iend,jsta:jend),egrid3(ista:iend,jsta:jend))
1581 IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q(i,j,ll)<spval)
THEN
1582 grid1(i,j) = egrid3(i,j) * (1.+d608*q(i,j,ll))
1588 if(grib==
"grib2")
then
1590 fld_info(cfld)%ifld=iavblfld(iget(751))
1591 fld_info(cfld)%lvl=lvlsxml(l,iget(751))
1597 datapd(i,j,cfld) = grid1(ii,jj)
1607 IF (iget(006) > 0) item = lvls(l,iget(006))
1608 IF (item > 0 .OR. iget(450) > 0 .OR. iget(480) > 0 .OR. &
1609 iget(479) > 0 .OR. iget(481) > 0 )
THEN
1614 p1d(i,j) = pmid(i,j,ll)
1615 t1d(i,j) = t(i,j,ll)
1616 q1d(i,j) = q(i,j,ll)
1620 CALL calrh(p1d(ista:iend,jsta:jend),t1d(ista:iend,jsta:jend),q1d(ista:iend,jsta:jend),egrid4(ista:iend,jsta:jend))
1625 IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q1d(i,j)<spval)
THEN
1626 grid1(i,j) = egrid4(i,j)*100.
1627 rh3d(i,j,ll) = grid1(i,j)
1628 egrid2(i,j) = q(i,j,ll)/max(1.e-8,egrid4(i,j))
1631 rh3d(i,j,ll) = spval
1637 if(grib==
"grib2")
then
1639 fld_info(cfld)%ifld=iavblfld(iget(006))
1640 fld_info(cfld)%lvl=lvlsxml(l,iget(006))
1646 datapd(i,j,cfld) = grid1(ii,jj)
1655 IF (iget(004)>0)
THEN
1656 IF (lvls(l,iget(004))>0)
THEN
1661 p1d(i,j) = pmid(i,j,ll)
1662 t1d(i,j) = t(i,j,ll)
1663 q1d(i,j) = q(i,j,ll)
1666 CALL caldwp(p1d(ista:iend,jsta:jend),q1d(ista:iend,jsta:jend),egrid3(ista:iend,jsta:jend),t1d(ista:iend,jsta:jend))
1670 IF(p1d(i,j)<spval.and.t1d(i,j)<spval.and.q1d(i,j)<spval)
THEN
1671 grid1(i,j) = egrid3(i,j)
1677 if(grib==
"grib2")
then
1679 fld_info(cfld)%ifld=iavblfld(iget(004))
1680 fld_info(cfld)%lvl=lvlsxml(l,iget(004))
1686 datapd(i,j,cfld) = grid1(ii,jj)
1694 IF (iget(005)>0)
THEN
1695 IF (lvls(l,iget(005))>0)
THEN
1700 grid1(i,j) = q(i,j,ll)
1703 CALL bound(grid1,h1m12,h99999)
1704 if(grib==
"grib2")
then
1706 fld_info(cfld)%ifld=iavblfld(iget(005))
1707 fld_info(cfld)%lvl=lvlsxml(l,iget(005))
1713 datapd(i,j,cfld) = grid1(ii,jj)
1721 IF (iget(750)>0)
THEN
1722 IF (lvls(l,iget(750))>0)
THEN
1727 IF(q(i,j,ll)<spval)
THEN
1728 grid1(i,j) = q(i,j,ll) / (1.-q(i,j,ll))
1734 CALL bound(grid1,h1m12,h99999)
1735 if(grib==
"grib2")
then
1737 fld_info(cfld)%ifld=iavblfld(iget(750))
1738 fld_info(cfld)%lvl=lvlsxml(l,iget(750))
1744 datapd(i,j,cfld) = grid1(ii,jj)
1753 if (iget(083) > 0) lll = lvls(l,iget(083))
1754 IF (iget(083)>0 .OR. iget(295)>0)
THEN
1755 IF (lll >0 .OR. iget(295)>0)
THEN
1758 DO j=jsta_2l,jend_2u
1759 DO i=ista_2l,iend_2u
1760 q1d(i,j) = q(i,j,ll)
1761 egrid1(i,j) = uh(i,j,ll)
1762 egrid2(i,j) = vh(i,j,ll)
1765 CALL calmcvg(q1d,egrid1,egrid2,egrid3)
1769 IF(q1d(i,j)<spval.and.egrid1(i,j)<spval.and.egrid2(i,j)<spval)
THEN
1770 grid1(i,j) = egrid3(i,j)
1771 mcvg(i,j,ll) = egrid3(i,j)
1774 mcvg(i,j,ll) = spval
1778 IF(iget(083)>0 .AND. lll>0)
THEN
1779 if(grib==
"grib2")
then
1781 fld_info(cfld)%ifld=iavblfld(iget(083))
1782 fld_info(cfld)%lvl=lvlsxml(l,iget(083))
1788 datapd(i,j,cfld) = grid1(ii,jj)
1798 IF (iget(007)>0.OR.iget(008)>0)
THEN
1799 IF (lvls(l,iget(007))>0.OR.lvls(l,iget(008))>0 )
THEN
1804 grid1(i,j) = uh(i,j,ll)
1805 grid2(i,j) = vh(i,j,ll)
1808 if(grib==
"grib2")
then
1810 fld_info(cfld)%ifld=iavblfld(iget(007))
1811 fld_info(cfld)%lvl=lvlsxml(l,iget(007))
1817 datapd(i,j,cfld) = grid1(ii,jj)
1821 fld_info(cfld)%ifld=iavblfld(iget(008))
1822 fld_info(cfld)%lvl=lvlsxml(l,iget(008))
1828 datapd(i,j,cfld) = grid2(ii,jj)
1836 IF (iget(009)>0)
THEN
1837 IF (lvls(l,iget(009))>0)
THEN
1842 grid1(i,j) = omga(i,j,ll)
1845 if(grib==
"grib2")
then
1847 fld_info(cfld)%ifld=iavblfld(iget(009))
1848 fld_info(cfld)%lvl=lvlsxml(l,iget(009))
1854 datapd(i,j,cfld) = grid1(ii,jj)
1862 IF (iget(264)>0)
THEN
1863 IF (lvls(l,iget(264))>0)
THEN
1868 grid1(i,j)=wh(i,j,ll)
1871 if(grib==
"grib2")
then
1873 fld_info(cfld)%ifld=iavblfld(iget(264))
1874 fld_info(cfld)%lvl=lvlsxml(l,iget(264))
1880 datapd(i,j,cfld) = grid1(ii,jj)
1888 IF (iget(010)>0)
THEN
1889 IF (lvls(l,iget(010))>0)
THEN
1892 DO j=jsta_2l,jend_2u
1893 DO i=ista_2l,iend_2u
1894 egrid1(i,j) = uh(i,j,ll)
1895 egrid2(i,j) = vh(i,j,ll)
1898 CALL calvor(egrid1,egrid2,egrid3)
1902 IF(egrid3(i,j)<spval)
THEN
1903 grid1(i,j) = egrid3(i,j)
1909 if(grib==
"grib2")
then
1911 fld_info(cfld)%ifld=iavblfld(iget(010))
1912 fld_info(cfld)%lvl=lvlsxml(l,iget(010))
1918 datapd(i,j,cfld) = grid1(ii,jj)
1926 IF (iget(084)>0)
THEN
1927 IF (lvls(l,iget(084))>0)
THEN
1932 egrid1(i,j) = zmid(i,j,ll)
1935 CALL calstrm(egrid1(ista:iend,jsta:jend),egrid2(ista:iend,jsta:jend))
1939 grid1(i,j) = egrid2(i,j)
1942 if(grib==
"grib2")
then
1944 fld_info(cfld)%ifld=iavblfld(iget(084))
1945 fld_info(cfld)%lvl=lvlsxml(l,iget(084))
1951 datapd(i,j,cfld) = grid1(ii,jj)
1959 IF (iget(011)>0)
THEN
1960 IF (lvls(l,iget(011))>0)
THEN
1965 grid1(i,j) = q2(i,j,ll)
1968 if(grib==
"grib2")
then
1970 fld_info(cfld)%ifld=iavblfld(iget(011))
1971 fld_info(cfld)%lvl=lvlsxml(l,iget(011))
1977 datapd(i,j,cfld) = grid1(ii,jj)
2030 IF (iget(140)>0)
THEN
2031 IF (lvls(l,iget(140))>0)
THEN
2036 grid1(i,j) = ttnd(i,j,ll)
2039 if(grib==
"grib2")
then
2041 fld_info(cfld)%ifld=iavblfld(iget(140))
2042 fld_info(cfld)%lvl=lvlsxml(l,iget(140))
2048 datapd(i,j,cfld) = grid1(ii,jj)
2057 IF (iget(040)>0)
THEN
2058 IF (lvls(l,iget(040))>0)
THEN
2063 grid1(i,j) = rswtt(i,j,ll)
2066 if(grib==
"grib2")
then
2068 fld_info(cfld)%ifld=iavblfld(iget(040))
2069 fld_info(cfld)%lvl=lvlsxml(l,iget(040))
2075 datapd(i,j,cfld) = grid1(ii,jj)
2084 IF (iget(041)>0)
THEN
2085 IF (lvls(l,iget(041))>0)
THEN
2090 grid1(i,j) = rlwtt(i,j,ll)
2093 if(grib==
"grib2")
then
2095 fld_info(cfld)%ifld=iavblfld(iget(041))
2096 fld_info(cfld)%lvl=lvlsxml(l,iget(041))
2102 datapd(i,j,cfld) = grid1(ii,jj)
2113 IF (iget(078)>0)
THEN
2114 IF (lvls(l,iget(078))>0)
THEN
2124 IF(train(i,j,ll)<spval)
THEN
2125 grid1(i,j) = train(i,j,ll)*rrnum
2133 IF (itheat /= 0)
THEN
2134 ifincr = mod(ifhr,itheat)
2139 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2142 id(18) = ifhr-itheat
2144 id(18) = ifhr-ifincr
2146 IF(ifmin >= 1)id(18)=id(18)*60
2147 if(grib==
"grib2")
then
2149 fld_info(cfld)%ifld=iavblfld(iget(078))
2150 fld_info(cfld)%lvl=lvlsxml(l,iget(078))
2152 fld_info(cfld)%ntrange=0
2154 fld_info(cfld)%ntrange=1
2156 fld_info(cfld)%tinvstat=ifhr-id(18)
2162 datapd(i,j,cfld) = grid1(ii,jj)
2170 IF (iget(079)>0)
THEN
2171 IF (lvls(l,iget(079))>0)
THEN
2181 IF(tcucn(i,j,ll)<spval)
THEN
2182 grid1(i,j) = tcucn(i,j,ll)*rrnum
2190 IF (itheat /= 0)
THEN
2191 ifincr = mod(ifhr,itheat)
2196 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2199 id(18) = ifhr-itheat
2201 id(18) = ifhr-ifincr
2203 IF(ifmin >= 1)id(18)=id(18)*60
2204 if(grib==
"grib2")
then
2206 fld_info(cfld)%ifld=iavblfld(iget(079))
2207 fld_info(cfld)%lvl=lvlsxml(l,iget(079))
2209 fld_info(cfld)%ntrange=0
2211 fld_info(cfld)%ntrange=1
2213 fld_info(cfld)%tinvstat=ifhr-id(18)
2219 datapd(i,j,cfld) = grid1(ii,jj)
2227 IF (iget(267)>0)
THEN
2228 IF (lvls(l,iget(267))>0)
THEN
2233 grid1(i,j) = o3(i,j,ll)
2236 if(grib==
"grib2")
then
2238 fld_info(cfld)%ifld=iavblfld(iget(267))
2239 fld_info(cfld)%lvl=lvlsxml(l,iget(267))
2245 datapd(i,j,cfld) = grid1(ii,jj)
2258 IF (iget(994)>0)
THEN
2259 IF (lvls(l,iget(994))>0)
THEN
2264 IF(avgozcon(i,j,ll)<spval)
THEN
2265 grid1(i,j) = avgozcon(i,j,ll)
2280 if(grib==
"grib2")
then
2282 fld_info(cfld)%ifld=iavblfld(iget(994))
2283 fld_info(cfld)%lvl=lvlsxml(l,iget(994))
2285 fld_info(cfld)%ntrange=0
2287 fld_info(cfld)%ntrange=1
2289 fld_info(cfld)%tinvstat=ifhr-id(18)
2295 datapd(i,j,cfld) = grid1(ii,jj)
2305 IF (iget(995)>0)
THEN
2306 IF (lvls(l,iget(995))>0)
THEN
2311 grid1(i,j) = avgpmtf(i,j,ll)
2323 if(grib==
"grib2")
then
2325 fld_info(cfld)%ifld=iavblfld(iget(995))
2326 fld_info(cfld)%lvl=lvlsxml(l,iget(995))
2328 fld_info(cfld)%ntrange=0
2330 fld_info(cfld)%ntrange=1
2332 fld_info(cfld)%tinvstat=ifhr-id(18)
2338 datapd(i,j,cfld) = grid1(ii,jj)
2352 IF (iget(737)>0)
THEN
2353 IF (lvls(l,iget(737))>0)
THEN
2358 IF(pmid(i,j,ll)<spval.and.t(i,j,ll)<spval.and.smoke(i,j,ll,1)<spval)
THEN
2359 grid1(i,j) = (1./rd)*(pmid(i,j,ll)/t(i,j,ll))*smoke(i,j,ll,1)/(1e9)
2365 if(grib==
"grib2")
then
2367 fld_info(cfld)%ifld=iavblfld(iget(737))
2368 fld_info(cfld)%lvl=lvlsxml(l,iget(737))
2374 datapd(i,j,cfld) = grid1(ii,jj)
2382 IF (iget(742)>0)
THEN
2383 IF (lvls(l,iget(742))>0)
THEN
2388 IF(pmid(i,j,ll)<spval.and.t(i,j,ll)<spval.and.fv3dust(i,j,ll,1)<spval)
THEN
2389 grid1(i,j) = (1./rd)*(pmid(i,j,ll)/t(i,j,ll))*fv3dust(i,j,ll,1)/(1e9)
2395 if(grib==
"grib2")
then
2397 fld_info(cfld)%ifld=iavblfld(iget(742))
2398 fld_info(cfld)%lvl=lvlsxml(l,iget(742))
2404 datapd(i,j,cfld) = grid1(ii,jj)
2412 IF (iget(1012)>0)
THEN
2413 IF (lvls(l,iget(1012))>0)
THEN
2418 IF(pmid(i,j,ll)<spval.and.t(i,j,ll)<spval.and.coarsepm(i,j,ll,1)<spval)
THEN
2419 grid1(i,j) = (1./rd)*(pmid(i,j,ll)/t(i,j,ll))*coarsepm(i,j,ll,1)/(1e9)
2425 if(grib==
"grib2")
then
2427 fld_info(cfld)%ifld=iavblfld(iget(1012))
2428 fld_info(cfld)%lvl=lvlsxml(l,iget(1012))
2434 datapd(i,j,cfld) = grid1(ii,jj)
2441 if ( gocart_on .or. gccpp_on .or. nasa_on )
then
2443 IF (iget(629)>0)
THEN
2444 IF (lvls(l,iget(629))>0)
THEN
2449 IF(dust(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2451 grid1(i,j) = dust(i,j,ll,1)*rhomid(i,j,ll)
2457 if(grib==
"grib2")
then
2459 fld_info(cfld)%ifld=iavblfld(iget(629))
2460 fld_info(cfld)%lvl=lvlsxml(l,iget(629))
2466 datapd(i,j,cfld) = grid1(ii,jj)
2474 IF (iget(630)>0)
THEN
2475 IF (lvls(l,iget(630))>0)
THEN
2480 IF(dust(i,j,ll,2)<spval.and.rhomid(i,j,ll)<spval)
THEN
2482 grid1(i,j) = dust(i,j,ll,2)*rhomid(i,j,ll)
2488 if(grib==
"grib2")
then
2490 fld_info(cfld)%ifld=iavblfld(iget(630))
2491 fld_info(cfld)%lvl=lvlsxml(l,iget(630))
2497 datapd(i,j,cfld) = grid1(ii,jj)
2505 IF (iget(631)>0)
THEN
2506 IF (lvls(l,iget(631))>0)
THEN
2511 IF(dust(i,j,ll,3)<spval.and.rhomid(i,j,ll)<spval)
THEN
2513 grid1(i,j) = dust(i,j,ll,3)*rhomid(i,j,ll)
2519 if(grib==
"grib2")
then
2521 fld_info(cfld)%ifld=iavblfld(iget(631))
2522 fld_info(cfld)%lvl=lvlsxml(l,iget(631))
2528 datapd(i,j,cfld) = grid1(ii,jj)
2536 IF (iget(632)>0)
THEN
2537 IF (lvls(l,iget(632))>0)
THEN
2542 IF(dust(i,j,ll,4)<spval.and.rhomid(i,j,ll)<spval)
THEN
2544 grid1(i,j) = dust(i,j,ll,4)*rhomid(i,j,ll)
2550 if(grib==
"grib2")
then
2552 fld_info(cfld)%ifld=iavblfld(iget(632))
2553 fld_info(cfld)%lvl=lvlsxml(l,iget(632))
2559 datapd(i,j,cfld) = grid1(ii,jj)
2567 IF (iget(633)>0)
THEN
2568 IF (lvls(l,iget(633))>0)
THEN
2573 IF(dust(i,j,ll,5)<spval.and.rhomid(i,j,ll)<spval)
THEN
2575 grid1(i,j) = dust(i,j,ll,5)*rhomid(i,j,ll)
2581 if(grib==
"grib2")
then
2583 fld_info(cfld)%ifld=iavblfld(iget(633))
2584 fld_info(cfld)%lvl=lvlsxml(l,iget(633))
2590 datapd(i,j,cfld) = grid1(ii,jj)
2598 IF (iget(634)>0)
THEN
2599 IF (lvls(l,iget(634))>0)
THEN
2604 IF(salt(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2605 grid1(i,j) = salt(i,j,ll,1)*rhomid(i,j,ll)
2611 if(grib==
"grib2")
then
2613 fld_info(cfld)%ifld=iavblfld(iget(634))
2614 fld_info(cfld)%lvl=lvlsxml(l,iget(634))
2620 datapd(i,j,cfld) = grid1(ii,jj)
2628 IF (iget(635)>0)
THEN
2629 IF (lvls(l,iget(635))>0)
THEN
2634 IF(salt(i,j,ll,2)<spval.and.rhomid(i,j,ll)<spval)
THEN
2635 grid1(i,j) = salt(i,j,ll,2)*rhomid(i,j,ll)
2641 if(grib==
"grib2")
then
2643 fld_info(cfld)%ifld=iavblfld(iget(635))
2644 fld_info(cfld)%lvl=lvlsxml(l,iget(635))
2650 datapd(i,j,cfld) = grid1(ii,jj)
2658 IF (iget(636)>0)
THEN
2659 IF (lvls(l,iget(636))>0)
THEN
2664 IF(salt(i,j,ll,3)<spval.and.rhomid(i,j,ll)<spval)
THEN
2665 grid1(i,j) = salt(i,j,ll,3)*rhomid(i,j,ll)
2671 if(grib==
"grib2")
then
2673 fld_info(cfld)%ifld=iavblfld(iget(636))
2674 fld_info(cfld)%lvl=lvlsxml(l,iget(636))
2680 datapd(i,j,cfld) = grid1(ii,jj)
2688 IF (iget(637)>0)
THEN
2689 IF (lvls(l,iget(637))>0)
THEN
2694 IF(salt(i,j,ll,4)<spval.and.rhomid(i,j,ll)<spval)
THEN
2695 grid1(i,j) = salt(i,j,ll,4)*rhomid(i,j,ll)
2701 if(grib==
"grib2")
then
2703 fld_info(cfld)%ifld=iavblfld(iget(637))
2704 fld_info(cfld)%lvl=lvlsxml(l,iget(637))
2710 datapd(i,j,cfld) = grid1(ii,jj)
2718 IF (iget(638)>0)
THEN
2719 IF (lvls(l,iget(638))>0)
THEN
2724 IF(salt(i,j,ll,5)<spval.and.rhomid(i,j,ll)<spval)
THEN
2725 grid1(i,j) = salt(i,j,ll,5)*rhomid(i,j,ll)
2731 if(grib==
"grib2")
then
2733 fld_info(cfld)%ifld=iavblfld(iget(638))
2734 fld_info(cfld)%lvl=lvlsxml(l,iget(638))
2740 datapd(i,j,cfld) = grid1(ii,jj)
2748 IF (iget(639)>0)
THEN
2749 IF (lvls(l,iget(639))>0)
THEN
2754 IF(suso(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2756 grid1(i,j) = suso(i,j,ll,1)*rhomid(i,j,ll)
2762 if(grib==
"grib2")
then
2764 fld_info(cfld)%ifld=iavblfld(iget(639))
2765 fld_info(cfld)%lvl=lvlsxml(l,iget(639))
2771 datapd(i,j,cfld) = grid1(ii,jj)
2779 IF (iget(640)>0)
THEN
2780 IF (lvls(l,iget(640))>0)
THEN
2785 IF(waso(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2787 grid1(i,j) = waso(i,j,ll,1)*rhomid(i,j,ll)
2793 if(grib==
"grib2")
then
2795 fld_info(cfld)%ifld=iavblfld(iget(640))
2796 fld_info(cfld)%lvl=lvlsxml(l,iget(640))
2802 datapd(i,j,cfld) = grid1(ii,jj)
2810 IF (iget(641)>0)
THEN
2811 IF (lvls(l,iget(641))>0)
THEN
2816 IF(waso(i,j,ll,2)<spval.and.rhomid(i,j,ll)<spval)
THEN
2818 grid1(i,j) = waso(i,j,ll,2)*rhomid(i,j,ll)
2824 if(grib==
"grib2")
then
2826 fld_info(cfld)%ifld=iavblfld(iget(641))
2827 fld_info(cfld)%lvl=lvlsxml(l,iget(641))
2833 datapd(i,j,cfld) = grid1(ii,jj)
2841 IF (iget(642)>0)
THEN
2842 IF (lvls(l,iget(642))>0)
THEN
2847 IF(soot(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2849 grid1(i,j) = soot(i,j,ll,1)*rhomid(i,j,ll)
2855 if(grib==
"grib2")
then
2857 fld_info(cfld)%ifld=iavblfld(iget(642))
2858 fld_info(cfld)%lvl=lvlsxml(l,iget(642))
2864 datapd(i,j,cfld) = grid1(ii,jj)
2872 IF (iget(643)>0)
THEN
2873 IF (lvls(l,iget(643))>0)
THEN
2878 IF(soot(i,j,ll,2)<spval.and.rhomid(i,j,ll)<spval)
THEN
2880 grid1(i,j) = soot(i,j,ll,2)*rhomid(i,j,ll)
2886 if(grib==
"grib2")
then
2888 fld_info(cfld)%ifld=iavblfld(iget(643))
2889 fld_info(cfld)%lvl=lvlsxml(l,iget(643))
2895 datapd(i,j,cfld) = grid1(ii,jj)
2905 IF (iget(688)>0)
THEN
2906 IF (lvls(l,iget(688))>0)
THEN
2911 IF(no3(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2912 grid1(i,j) = no3(i,j,ll,1)*rhomid(i,j,ll)
2918 if(grib==
"grib2")
then
2920 fld_info(cfld)%ifld=iavblfld(iget(688))
2921 fld_info(cfld)%lvl=lvlsxml(l,iget(688))
2927 datapd(i,j,cfld) = grid1(ii,jj)
2935 IF (iget(689)>0)
THEN
2936 IF (lvls(l,iget(689))>0)
THEN
2941 IF(nh4(i,j,ll,1)<spval.and.rhomid(i,j,ll)<spval)
THEN
2942 grid1(i,j) = nh4(i,j,ll,1)*rhomid(i,j,ll)
2948 if(grib==
"grib2")
then
2950 fld_info(cfld)%ifld=iavblfld(iget(689))
2951 fld_info(cfld)%lvl=lvlsxml(l,iget(689))
2957 datapd(i,j,cfld) = grid1(ii,jj)
2967 IF (iget(644)>0)
THEN
2968 IF (lvls(l,iget(644))>0)
THEN
2973 grid1(i,j) = rhomid(i,j,ll)
2976 if(grib==
"grib2")
then
2978 fld_info(cfld)%ifld=iavblfld(iget(644))
2979 fld_info(cfld)%lvl=lvlsxml(l,iget(644))
2985 datapd(i,j,cfld) = grid1(ii,jj)
2993 IF (iget(645)>0)
THEN
2994 IF (lvls(l,iget(645))>0)
THEN
2999 grid1(i,j) = dpres(i,j,ll)
3002 if(grib==
"grib2")
then
3004 fld_info(cfld)%ifld=iavblfld(iget(645))
3005 fld_info(cfld)%lvl=lvlsxml(l,iget(645))
3011 datapd(i,j,cfld) = grid1(ii,jj)
3092 IF (iget(252) > 0)
THEN
3093 IF(imp_physics /= 8 .and. imp_physics /= 28)
THEN
3098 DO l=1,nint(lmh(i,j))
3099 grid1(i,j) = max( grid1(i,j), dbz(i,j,l) )
3109 IF(imp_physics == 8 .or. imp_physics == 28)
THEN
3111 IF(modelname==
'NMM' .and. gridtype==
'B' .or. &
3112 modelname==
'NCAR'.or. modelname==
'FV3R' .or. &
3113 modelname==
'GFS' .or. &
3114 modelname==
'NMM' .and. gridtype==
'E')
THEN
3119 DO l=1,nint(lmh(i,j))
3120 grid1(i,j) = max( grid1(i,j), ref_10cm(i,j,l) )
3128 grid1(i,j) = refc_10cm(i,j)
3132 CALL bound(grid1,dbzmin,dbzmax)
3137 grid1(i,j) = refl(i,j)
3143 if(grib==
"grib2")
then
3145 fld_info(cfld)%ifld=iavblfld(iget(252))
3151 datapd(i,j,cfld) = grid1(ii,jj)
3160 IF (iget(581)>0)
THEN
3164 DO l=1,nint(lmh(i,j))
3165 if(zint(i,j,l) < spval .and.zint(i,j,l+1)<spval.and.dbz(i,j,l)<spval)
then
3166 grid1(i,j)=grid1(i,j)+0.00344* &
3167 (10.**(dbz(i,j,l)/10.))**0.57143*(zint(i,j,l)-zint(i,j,l+1))/1000.
3174 if(grib==
"grib2")
then
3176 fld_info(cfld)%ifld=iavblfld(iget(581))
3182 datapd(i,j,cfld) = grid1(ii,jj)
3190 IF (iget(276)>0)
THEN
3194 DO l=1,nint(lmh(i,j))
3195 grid1(i,j)=max( grid1(i,j), dbzr(i,j,l) )
3199 if(grib==
"grib2")
then
3201 fld_info(cfld)%ifld=iavblfld(iget(276))
3207 datapd(i,j,cfld) = grid1(ii,jj)
3216 IF (iget(277)>0)
THEN
3220 DO l=1,nint(lmh(i,j))
3221 grid1(i,j)=max( grid1(i,j), dbzi(i,j,l) )
3225 if(grib==
"grib2")
then
3227 fld_info(cfld)%ifld=iavblfld(iget(277))
3233 datapd(i,j,cfld) = grid1(ii,jj)
3244 IF (iget(278)>0)
THEN
3248 DO l=1,nint(lmh(i,j))
3249 grid1(i,j)=max( grid1(i,j), dbzc(i,j,l) )
3253 if(grib==
"grib2")
then
3255 fld_info(cfld)%ifld=iavblfld(iget(278))
3261 datapd(i,j,cfld) = grid1(ii,jj)
3271 IF (iget(426)>0)
THEN
3275 DO l=1,nint(lmh(i,j))
3276 IF (dbz(i,j,l)>=18.0)
THEN
3277 grid1(i,j)=zmid(i,j,l)*3.2808/1000.
3283 if(grib==
"grib2")
then
3285 fld_info(cfld)%ifld=iavblfld(iget(426))
3291 datapd(i,j,cfld) = grid1(ii,jj)
3306 IF (iget(768) > 0)
THEN
3307 IF(modelname ==
'RAPR' .AND. (imp_physics == 8 .or. imp_physics == 28))
THEN
3311 DO l=1,nint(lmh(i,j))
3312 IF (ref_10cm(i,j,l)>=18.0)
THEN
3313 grid1(i,j)=zmid(i,j,l)
3317 IF(grid1(i,j) >= -900)
THEN
3318 DO l=1,nint(lmh(i,j))
3319 IF (ref_10cm(i,j,l) >= 11.0)
THEN
3321 grid1(i,j) = zmid(i,j,l)
3322 ELSE IF(ref_10cm(i,j,l-1) == ref_10cm(i,j,l))
THEN
3323 grid1(i,j) = zmid(i,j,l)
3325 grid1(i,j) = zmid(i,j,l) + &
3326 (11.0 - ref_10cm(i,j,l)) * &
3327 (zmid(i,j,l-1) - zmid(i,j,l)) / &
3328 (ref_10cm(i,j,l-1) - ref_10cm(i,j,l))
3340 DO l=1,nint(lmh(i,j))
3341 IF (dbz(i,j,l) >= 18.0)
THEN
3342 grid1(i,j) = zmid(i,j,l)
3349 if(grib==
"grib2")
then
3351 fld_info(cfld)%ifld=iavblfld(iget(768))
3357 datapd(i,j,cfld) = grid1(ii,jj)
3365 IF (iget(769)>0)
THEN
3369 DO l=1,nint(lmh(i,j))
3370 IF(qqr(i,j,l)<spval.and.qqs(i,j,l)<spval.and.qqg(i,j,l)<spval.and.&
3371 zint(i,j,l)<spval.and.zint(i,j,l+1)<spval.and.&
3372 pmid(i,j,l)<spval.and.t(i,j,l)<spval.and.q(i,j,l)<spval)
THEN
3373 grid1(i,j)=grid1(i,j) + (qqr(i,j,l) + &
3374 qqs(i,j,l) + qqg(i,j,l))* &
3375 (zint(i,j,l)-zint(i,j,l+1))*pmid(i,j,l)/ &
3376 (rd*t(i,j,l)*(q(i,j,l)*d608+1.0))
3383 if(grib==
"grib2")
then
3385 fld_info(cfld)%ifld=iavblfld(iget(769))
3391 datapd(i,j,cfld) = grid1(ii,jj)
3401 IF (iget(770) > 0)
THEN
3402 IF(modelname ==
'RAPR' .AND. (imp_physics == 8 .or. imp_physics == 28))
THEN
3406 DO l=1,nint(lmh(i,j))
3407 IF (ref_10cm(i,j,l) > -10.0 )
THEN
3408 grid1(i,j) = grid1(i,j) + 0.00344 * &
3409 (10.**(ref_10cm(i,j,l)/10.))**0.57143 * &
3410 (zint(i,j,l)-zint(i,j,l+1))/1000.
3419 DO l=1,nint(lmh(i,j))
3420 grid1(i,j) = grid1(i,j) + 0.00344 * &
3421 (10.**(dbz(i,j,l)/10.))**0.57143 * &
3422 (zint(i,j,l)-zint(i,j,l+1))/1000.
3427 if(grib==
"grib2")
then
3429 fld_info(cfld)%ifld=iavblfld(iget(770))
3435 datapd(i,j,cfld) = grid1(ii,jj)
3445 IF (iget(180)>0)
THEN
3453 q1d(i,j)=q(i,j,llmh)
3454 if(q1d(i,j)<=0.) q1d(i,j)=0.
3455 qw1(i,j)=qqw(i,j,llmh)
3456 qr1(i,j)=qqr(i,j,llmh)
3457 qi1(i,j)=qqi(i,j,llmh)
3458 qs1(i,j)=qqs(i,j,llmh)
3459 qg1(i,j)=qqg(i,j,llmh)
3460 t1d(i,j)=t(i,j,llmh)
3461 p1d(i,j)=pmid(i,j,llmh)
3467 IF(imp_physics/=99)
THEN
3468 IF (cprate(i,j) > 0. .and. cprate(i,j) < spval &
3469 .and. pmid(i,j,lm) < spval .and. qr1(i,j) < spval)
THEN
3471 rainrate=(1-sr(i,j))*cprate(i,j)*rdtphs
3473 term1=(t(i,j,lm)/pmid(i,j,lm))**0.4167
3474 term2=(t1d(i,j)/p1d(i,j))**0.5833
3475 term3=rainrate**0.8333
3477 qr1(i,j)=qr1(i,j)+raincon*term1*term2*term3
3478 IF (sr(i,j) > 0. .and. qs1(i,j) < spval)
THEN
3479 snorate=sr(i,j)*cprate(i,j)*rdtphs
3481 term1=(t(i,j,lm)/pmid(i,j,lm))**0.47
3482 term2=(t1d(i,j)/p1d(i,j))**0.53
3484 qs1(i,j)=qs1(i,j)+snocon*term1*term2*term3
3493 IF (prec(i,j) < spval .and. prec(i,j) > 0. .and. &
3496 rainrate=(1-sr(i,j))*prec(i,j)*rdtphs
3498 term1=(t(i,j,lm)/pmid(i,j,lm))**0.4167
3499 term2=(t1d(i,j)/p1d(i,j))**0.5833
3500 term3=rainrate**0.8333
3502 qr1(i,j)=qr1(i,j)+raincon*term1*term2*term3
3503 IF (sr(i,j) > 0.)
THEN
3504 snorate=sr(i,j)*prec(i,j)*rdtphs
3506 term1=(t(i,j,lm)/pmid(i,j,lm))**0.47
3507 term2=(t1d(i,j)/p1d(i,j))**0.53
3509 qs1(i,j)=qs1(i,j)+snocon*term1*term2*term3
3524 CALL calvis(q1d,qw1,qr1,qi1,qs1,t1d,p1d,vis)
3532 IF(vis(i,j)/=spval.and.abs(vis(i,j))>24135.1)print*,
'bad visbility' &
3533 , i,j,q1d(i,j),qw1(i,j),qr1(i,j),qi1(i,j) &
3534 , qs1(i,j),t1d(i,j),p1d(i,j),vis(i,j)
3539 if(grib==
"grib2")
then
3541 fld_info(cfld)%ifld=iavblfld(iget(180))
3542 fld_info(cfld)%lvl=lvlsxml(1,iget(180))
3543 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3550 IF (iget(410)>0)
THEN
3551 CALL calvis_gsd(czen,vis)
3557 if(grib==
"grib2")
then
3559 fld_info(cfld)%ifld=iavblfld(iget(410))
3560 fld_info(cfld)%lvl=lvlsxml(1,iget(410))
3561 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3567 IF (iget(748) > 0)
THEN
3572 IF(modelname ==
'RAPR' .AND. (imp_physics == 8 .or. imp_physics == 28))
THEN
3577 grid1(i,j) = ref1km_10cm(i,j)
3580 CALL bound(grid1,dbzmin,dbzmax)
3585 grid1(i,j) = refl1km(i,j)
3591 if(grib==
"grib2")
then
3593 fld_info(cfld)%ifld=iavblfld(iget(748))
3594 fld_info(cfld)%lvl=lvlsxml(1,iget(748))
3595 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3602 IF (iget(757) > 0)
THEN
3607 IF(modelname ==
'RAPR' .AND. (imp_physics == 8 .or. imp_physics == 28))
THEN
3611 grid1(i,j) = ref4km_10cm(i,j)
3614 CALL bound(grid1,dbzmin,dbzmax)
3619 grid1(i,j) = refl4km(i,j)
3625 if(grib==
"grib2")
then
3627 fld_info(cfld)%ifld=iavblfld(iget(757))
3628 fld_info(cfld)%lvl=lvlsxml(1,iget(757))
3629 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3634 IF (iget(912)>0)
THEN
3639 if (slp(i,j) < spval)
then
3640 zm10c(i,j)=zmid(i,j,nint(lmh(i,j)))
3641 DO l=nint(lmh(i,j)),1,-1
3642 IF (t(i,j,l) <= 263.15)
THEN
3658 IF(imp_physics==8 .or. imp_physics==28)
THEN
3664 if (slp(i,j) < spval)
then
3665 grid1(i,j)=ref_10cm(i,j,zm10c(i,j))
3675 if (slp(i,j) < spval)
then
3676 grid1(i,j)=dbz(i,j,zm10c(i,j))
3682 CALL bound(grid1,dbzmin,dbzmax)
3684 if(grib==
"grib2" )
then
3686 fld_info(cfld)%ifld=iavblfld(iget(912))
3687 fld_info(cfld)%lvl=lvlsxml(l,iget(912))
3688 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3695 IF ( (iget(111)>0) .OR. (iget(146)>0) .OR. &
3696 (iget(147)>0) )
THEN
3699 CALL clmax(el0(1,jsta),egrid2(1,jsta),egrid3(1,jsta),egrid4(1,jsta),egrid5(1,jsta))
3702 IF (iget(147)>0)
THEN
3706 grid1(i,j) = el0(i,j)
3709 if(grib==
"grib2")
then
3711 fld_info(cfld)%ifld=iavblfld(iget(147))
3712 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3719 IF ( (iget(111)>0) .OR. (iget(146)>0) )
THEN
3731 IF(modelname ==
'NCAR'.OR.modelname==
'RSM'.OR. modelname ==
'RAPR')
THEN
3733 ELSE IF(modelname ==
'NMM')
THEN
3737 el(i,j,l)=el_pbl(i,j,l)
3745 IF ( (iget(111)>0) )
CALL calrch(el,richno)
3752 IF (iget(146)>0)
THEN
3755 IF (lvls(l,iget(146))>0)
THEN
3760 grid1(i,j) = el(i,j,ll)
3763 if(grib==
"grib2")
then
3765 fld_info(cfld)%ifld=iavblfld(iget(146))
3766 fld_info(cfld)%lvl=lvlsxml(l,iget(146))
3772 datapd(i,j,cfld) = grid1(ii,jj)
3782 IF (iget(111)>0)
THEN
3783 IF (lvls(l,iget(111))>0)
THEN
3788 grid1(i,j) = richno(i,j,ll)
3791 if(grib==
"grib2")
then
3793 fld_info(cfld)%ifld=iavblfld(iget(111))
3794 fld_info(cfld)%lvl=lvlsxml(l,iget(111))
3800 datapd(i,j,cfld) = grid1(ii,jj)
3816 IF ( (iget(289)>0) .OR. (iget(389)>0) .OR. (iget(454)>0) &
3817 .OR. (iget(245)>0) .or. iget(464)>0 .or. iget(467)>0 &
3818 .or. iget(470)>0 .or. iget(476)>0)
THEN
3822 IF(modelname ==
'GFS')
THEN
3829 IF (iget(289) > 0)
THEN
3833 grid1(i,j) = pblri(i,j)
3837 if(grib==
"grib2")
then
3839 fld_info(cfld)%ifld=iavblfld(iget(289))
3845 datapd(i,j,cfld) = grid1(ii,jj)
3855 IF ( (iget(389) > 0) .OR. (iget(454) > 0) )
THEN
3859 IF(pblri(i,j)<spval.and.zint(i,j,lm+1)<spval)
THEN
3860 egrid3(i,j) = pblri(i,j) + zint(i,j,lm+1)
3867 CALL h2u(egrid3(ista_2l:iend_2u,jsta_2l:jend_2u),egrid4)
3875 vert_loopu:
DO l=lm,1,-1
3876 CALL h2u(zmid(ista_2l:iend_2u,jsta_2l:jend_2u,l), egrid5)
3877 CALL h2u(pint(ista_2l:iend_2u,jsta_2l:jend_2u,l+1),egrid6)
3878 CALL h2u(pint(ista_2l:iend_2u,jsta_2l:jend_2u,l), egrid7)
3882 if (egrid4(i,j)<spval.and.egrid5(i,j)<spval.and.&
3883 egrid6(i,j)<spval.and.egrid7(i,j)<spval.and.&
3884 uh(i,j,1)<spval)
THEN
3885 if (egrid5(i,j) <= egrid4(i,j))
then
3887 dp = egrid6(i,j) - egrid7(i,j)
3888 egrid1(i,j) = egrid1(i,j) + uh(i,j,l)*dp
3889 egrid2(i,j) = egrid2(i,j) + dp
3896 if(hcount < 1 )
exit vert_loopu
3901 IF(egrid2(i,j) > 0.)
THEN
3902 grid1(i,j) = egrid1(i,j)/egrid2(i,j)
3904 grid1(i,j) = u10(i,j)
3906 ustore(i,j) = grid1(i,j)
3910 CALL h2v(egrid3(ista_2l:iend_2u,jsta_2l:jend_2u),egrid4)
3921 vert_loopv:
DO l=lm,1,-1
3922 CALL h2v(zmid(ista_2l:iend_2u,jsta_2l:jend_2u,l), egrid5)
3923 CALL h2v(pint(ista_2l:iend_2u,jsta_2l:jend_2u,l+1),egrid6)
3924 CALL h2v(pint(ista_2l:iend_2u,jsta_2l:jend_2u,l), egrid7)
3928 if (egrid4(i,j)<spval.and.egrid5(i,j)<spval.and.&
3929 egrid6(i,j)<spval.and.egrid7(i,j)<spval.and.&
3930 vh(i,j,1)<spval)
THEN
3931 if (egrid5(i,j) <= egrid4(i,j))
then
3933 dp = egrid6(i,j) - egrid7(i,j)
3934 egrid1(i,j) = egrid1(i,j) + vh(i,j,l)*dp
3935 egrid2(i,j) = egrid2(i,j) + dp
3942 if(hcount<1)
exit vert_loopv
3947 IF(egrid2(i,j) > 0.)
THEN
3948 grid2(i,j) = egrid1(i,j)/egrid2(i,j)
3950 grid2(i,j) = v10(i,j)
3952 vstore(i,j) = grid2(i,j)
3957 CALL u2h(ustore,egrid1)
3958 CALL v2h(vstore,egrid2)
3965 IF (egrid1(i,j)<spval .and. egrid2(i,j)<spval)
THEN
3966 egrid3(i,j) = sqrt((egrid1(i,j)*egrid1(i,j)+egrid2(i,j)*egrid2(i,j)))
3973 IF(iget(389) > 0)
THEN
3974 if(grib==
'grib2')
then
3976 fld_info(cfld)%ifld=iavblfld(iget(389))
3982 datapd(i,j,cfld) = grid1(ii,jj)
3986 fld_info(cfld)%ifld=iavblfld(iget(390))
3992 datapd(i,j,cfld) = grid2(ii,jj)
4004 IF ( (iget(454) > 0) )
THEN
4010 IF (pblri(i,j) /= spval .and. egrid3(i,j)/=spval)
then
4011 grid1(i,j) = egrid3(i,j)*pblri(i,j)
4019 if(grib==
'grib2')
then
4021 fld_info(cfld)%ifld=iavblfld(iget(454))
4027 datapd(i,j,cfld) = grid1(ii,jj)
4036 IF (iget(245)>0 .or. iget(464)>0 .or. iget(467)>0.or. iget(470)>0 .or. iget(476)>0)
THEN
4037 IF(modelname==
'RAPR')
THEN
4039 if(maptype == 6)
then
4040 if(grib==
'grib2')
then
4041 dxm = (dxval / 360.)*(erad*2.*pi)/1.d6
4046 if(grib ==
'grib2')
then
4050 nsmooth = nint(5.*(13500./dxm))
4051 do j = jsta_2l, jend_2u
4052 do i = ista_2l, iend_2u
4053 grid1(i,j)=pblhgust(i,j)
4056 call allgetherv(grid1)
4058 CALL smooth(grid1,sdummy,im,jm,0.5)
4060 do j = jsta_2l, jend_2u
4061 do i = ista_2l, iend_2u
4062 pblhgust(i,j)=grid1(i,j)
4071 if(zint(i,j,nint(lmh(i,j))+1) <spval)
then
4073 zsfc=zint(i,j,nint(lmh(i,j))+1)
4074 loopl:
DO l=nint(lmh(i,j)),1,-1
4075 IF(modelname==
'RAPR')
THEN
4077 pblhold=pblhgust(i,j)
4082 IF(hgt > pblhold+zsfc)
THEN
4084 IF(lpbl(i,j)>=lp1) lpbl(i,j) = lm
4092 if(lpbl(i,j)<1)print*,
'zero lpbl',i,j,pblri(i,j),lpbl(i,j)
4095 IF(modelname==
'RAPR')
THEN
4096 CALL calgust(lpbl,pblhgust,gust)
4100 IF (iget(245)>0)
THEN
4106 grid1(i,j) = gust(i,j)
4109 if(grib==
'grib2')
then
4111 fld_info(cfld)%ifld=iavblfld(iget(245))
4117 datapd(i,j,cfld) = grid1(ii,jj)
4127 IF (iget(344)>0)
THEN
4128 allocate(pblregime(ista_2l:iend_2u,jsta_2l:jend_2u))
4129 CALL calpblregime(pblregime)
4133 grid1(i,j) = pblregime(i,j)
4136 if(grib==
"grib2")
then
4138 fld_info(cfld)%ifld=iavblfld(iget(344))
4144 datapd(i,j,cfld) = grid1(ii,jj)
4148 deallocate(pblregime)
4160 IF(imp_physics == 8.)
then
4161 DO l=1,nint(lmh(i,j))
4162 IF(ref_10cm(i,j,l) > 18.3)
then
4163 grid1(i,j) = zmid(i,j,l)
4168 DO l=1,nint(lmh(i,j))
4169 IF(dbz(i,j,l) > 18.3)
then
4170 grid1(i,j) = zmid(i,j,l)
4180 if(grib==
"grib2")
then
4182 fld_info(cfld)%ifld=iavblfld(iget(400))
4188 datapd(i,j,cfld) = grid1(ii,jj)
4196 IF(iget(464)>0 .or. iget(467)>0 .or. iget(470)>0 .or. iget(476)>0)
THEN
4205 call gtg_algo(im,jm,lm,jsta,jend,jsta_2l,jend_2u,&
4206 uh(ista:iend,:,:),vh(ista:iend,:,:),wh(ista:iend,:,:),&
4207 zmid(ista:iend,:,:),pmid(ista:iend,:,:),t(ista:iend,:,:),&
4208 q(ista:iend,:,:),qqw(ista:iend,:,:),qqr(ista:iend,:,:),&
4209 qqs(ista:iend,:,:),qqg(ista:iend,:,:),qqi(ista:iend,:,:),&
4210 zint(ista:iend,:,lp1),pblh(ista:iend,:),sfcshx(ista:iend,:),&
4211 sfclhx(ista:iend,:),ustar(ista:iend,:),&
4212 z0(ista:iend,:),gdlat(ista:iend,:),gdlon(ista:iend,:),&
4213 dx(ista:iend,:),dy(ista:iend,:),u10(ista:iend,:),v10(ista:iend,:),&
4214 gust(ista:iend,:),avgprec(ista:iend,:),sm(ista:iend,:),sice(ista:iend,:),&
4215 catedr(ista:iend,:,:),mwt(ista:iend,:,:),el(ista:iend,:,:),&
4216 gtg(ista:iend,:,:),richno(ista:iend,:,:),item)
4226 IF (iget(470)>0)
THEN
4228 IF (lvls(l,iget(470))>0)
THEN
4232 grid1(i,j)=gtg(i,j,ll)
4235 if(grib==
"grib2")
then
4237 fld_info(cfld)%ifld=iavblfld(iget(470))
4238 fld_info(cfld)%lvl=lvlsxml(l,iget(470))
4244 datapd(i,j,cfld) = grid1(ii,jj)
4252 grid1(i,j)=catedr(i,j,ll)
4255 if(grib==
"grib2")
then
4257 fld_info(cfld)%ifld=iavblfld(iget(471))
4258 fld_info(cfld)%lvl=lvlsxml(l,iget(471))
4264 datapd(i,j,cfld) = grid1(ii,jj)
4271 grid1(i,j)=mwt(i,j,ll)
4274 if(grib==
"grib2")
then
4276 fld_info(cfld)%ifld=iavblfld(iget(472))
4277 fld_info(cfld)%lvl=lvlsxml(l,iget(472))
4283 datapd(i,j,cfld) = grid1(ii,jj)
4293 IF(iget(450)>0 .or. iget(480)>0 .or. iget(479)>0 .or. iget(481)>0)
THEN
4300 CALL calcape(itype,dpbnd,dummy,dummy,dummy,idummy,cape,cin, &
4307 if(debugprint .and. i==50 .and. j==jsta .and. me == 0)
then
4308 print*,
'sending input to FIP ',i,j,lm,gdlat(i,j),gdlon(i,j), &
4309 zint(i,j,lp1),cprate(i,j),prec(i,j),avgcprate(i,j),cape(i,j),cin(i,j)
4311 if(debugprint)print*,
'l,P,T,RH,CWM,QQW,QQI,QQR,QQS,QQG,OMEG',&
4312 l,pmid(i,j,l),t(i,j,l),rh3d(i,j,l),cwm(i,j,l), &
4313 q(i,j,l),qqw(i,j,l),qqi(i,j,l), &
4314 qqr(i,j,l),qqs(i,j,l),qqg(i,j,l),&
4315 rh3d(i,j,l),zmid(i,j,l),cwm(i,j,l),omga(i,j,l)
4318 CALL icing_algo(i,j,pmid(i,j,1:lm),t(i,j,1:lm),rh3d(i,j,1:lm) &
4319 ,zmid(i,j,1:lm),omga(i,j,1:lm),wh(i,j,1:lm) &
4320 ,q(i,j,1:lm),cwm(i,j,1:lm),qqw(i,j,1:lm),qqi(i,j,1:lm) &
4321 ,qqr(i,j,1:lm),qqs(i,j,1:lm),qqg(i,j,1:lm) &
4322 ,lm,gdlat(i,j),gdlon(i,j),zint(i,j,lp1) &
4323 ,prec(i,j),cprate(i,j),cape(i,j),cin(i,j) &
4324 ,icing_gfip(i,j,1:lm),icing_gfis(i,j,1:lm))
4350 DEALLOCATE(el, richno, pblri)
4351 if (
allocated(rh3d))
deallocate(rh3d)