72 use vrbls4d,
only: smoke, fv3dust, coarsepm
73 use vrbls3d,
only: zint, pint, t, pmid, q, f_rimef
74 use vrbls2d,
only: ths, qs, qvg, qv2m, tsnow, tg, smstav, smstot, &
75 cmc, sno, snoavg, psfcavg, t10avg, snonc, ivgtyp, &
76 si, potevp, dzice, qwbs, vegfrc, isltyp, pshltr, &
77 tshltr, qshltr, mrshltr, maxtshltr, mintshltr, &
78 maxrhshltr, minrhshltr, u10, psfcavg, v10, u10max, &
79 v10max, th10, t10m, q10, wspd10max, &
80 wspd10umax, wspd10vmax, prec, sr, &
81 cprate, avgcprate, avgprec, acprec, cuprec, ancprc, &
82 lspa, acsnow, acsnom, snowfall,ssroff, bgroff, &
83 runoff, pcp_bucket, rainnc_bucket, snow_bucket, &
84 snownc, tmax, graup_bucket, graupelnc, qrmax, sfclhx,&
85 rainc_bucket, sfcshx, subshx, snopcx, sfcuvx, &
86 sfcvx, smcwlt, suntime, pd, sfcux, sfcuxi, sfcvxi, sfcevp, z0, &
87 ustar, mdltaux, mdltauy, gtaux, gtauy, twbs, &
88 sfcexc, grnflx, islope, czmean, czen, rswin,akhsavg ,&
89 akmsavg, u10h, v10h,snfden,sndepac,qvl1, &
90 spduv10mean,swradmean,swnormmean,prate_max,fprate_max &
91 ,fieldcapa,edir,ecan,etrans,esnow,u10mean,v10mean, &
92 avgedir,avgecan,avgetrans,avgesnow,acgraup,acfrain, &
93 acond,maxqshltr,minqshltr,avgpotevp,avgprec_cont, &
94 avgcprate_cont,sst,pcp_bucket1,rainnc_bucket1, &
95 snow_bucket1, rainc_bucket1, graup_bucket1, &
96 frzrn_bucket, snow_acm, snow_bkt, &
97 shdmin, shdmax, lai, ch10,cd10,landfrac,paha,pahi, &
98 tecan,tetran,tedir,twa,ifi_apcp
99 use soil,
only: stc, sllevel, sldpth, smc, sh2o
100 use masks,
only: lmh, sm, sice, htm, gdlat, gdlon
101 use physcons_post,
only: con_eps, con_epsm1
102 use params_mod,
only: p1000, capa, h1m12, pq0, a2,a3, a4, h1, d00, d01,&
103 eps, oneps, d001, h99999, h100, small, h10e5, &
104 elocp, g, xlai, tfrz, rd
105 use ctlblk_mod,
only: jsta, jend, lm, spval, grib, cfld, fld_info, &
106 datapd, nsoil, isf_surface_physics, tprec, ifmin,&
107 modelname, tmaxmin, pthresh, dtq2, dt, nphs, &
108 ifhr, prec_acc_dt, sdat, ihrst, jsta_2l, jend_2u,&
109 lp1, imp_physics, me, asrfc, tsrfc, pt, pdtop, &
110 mpi_comm_comp, im, jm, prec_acc_dt1, &
111 ista, iend, ista_2l, iend_2u
112 use rqstfld_mod,
only: iget, lvls, id, iavblfld, lvlsxml
113 use grib2_module,
only: read_grib2_head, read_grib2_sngle
114 use upp_physics,
only: fpvsnew, calrh
127 real,
PARAMETER :: PTRACE = 0.000254e0
130 integer,
parameter :: nalg=5, nosoiltype=9
131 real,
PARAMETER :: C2K = 273.15, sec2hr = 1./3600.
135 integer,
dimension(ista:iend,jsta:jend) :: nroots, iwx1
136 real,
allocatable,
dimension(:,:) :: zsfc, psfc, tsfc, qsfc, &
137 rhsfc, thsfc, dwpsfc, p1d, &
139 smcdry, smcmax,doms, domr, &
140 domip, domzr, rsmin, smcref,&
141 rcq, rct, rcsoil, gc, rcs
143 real,
dimension(ista:iend,jsta:jend) :: evp
144 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: egrid1, egrid2
145 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: grid2
146 real,
dimension(im,jm) :: grid1
147 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: iceg
149 real,
allocatable,
dimension(:,:,:) :: sleet, rain, freezr, snow
153 REAL totprcp, snowratio,t2,rainl
156 integer I,J,IWX,ITMAXMIN,IFINCR,ISVALUE,II,JJ, &
157 itprec,itsrfc,l,ls,iveg,llmh, &
158 ivg,irtn,iseed, icat, cnt_snowratio(10),icnt_snow_rain_mixed
160 real RDTPHS,TLOW,TSFCK,QSAT,DTOP,DBOT,SNEQV,RRNUM,SFCPRS,SFCQ, &
161 rc,sfctmp,sncovr,factrs,solar, s,tk,tl,w,t2c,dlt,ape, &
162 qv,e,dwpt,dum1,dum2,dum3,dum1s,dum3s,dum21,dum216,es
164 character(len=256) :: ffgfile
165 character(len=256) :: arifile
167 logical file_exists, need_ifi
169 logical,
parameter :: debugprint = .false.
182 IF ( (iget(024)>0).OR.(iget(025)>0).OR. &
183 (iget(026)>0).OR.(iget(027)>0).OR. &
184 (iget(028)>0).OR.(iget(029)>0).OR. &
186 (iget(034)>0).OR.(iget(076)>0) )
THEN
188 allocate(zsfc(ista:iend,jsta:jend), psfc(ista:iend,jsta:jend), tsfc(ista:iend,jsta:jend)&
189 ,rhsfc(ista:iend,jsta:jend), thsfc(ista:iend,jsta:jend), qsfc(ista:iend,jsta:jend))
199 IF(zint(i,j,lm+1) < spval) &
200 zsfc(i,j) = zint(i,j,lm+1)
201 psfc(i,j) = pint(i,j,nint(lmh(i,j))+1)
204 thsfc(i,j) = ths(i,j)
206 IF(thsfc(i,j) /= spval .and. psfc(i,j) /= spval) &
207 tsfc(i,j) = thsfc(i,j)*(psfc(i,j)/p1000)**capa
216 IF(tsfc(i,j) < spval)
then
217 IF(qs(i,j)<spval) qsfc(i,j) = max(h1m12,qs(i,j))
220 IF(modelname ==
'RAPR')
THEN
221 qsat = max(0.0001,pq0/psfc(i,j)*exp(a2*(tsfck-a3)/(tsfck-a4)))
222 elseif (modelname ==
'GFS')
then
224 qsat = con_eps*es/(psfc(i,j)+con_epsm1*es)
226 qsat = pq0/psfc(i,j)*exp(a2*(tsfck-a3)/(tsfck-a4))
228 rhsfc(i,j) = max(d01, min(h1,qsfc(i,j)/qsat))
230 qsfc(i,j) = rhsfc(i,j)*qsat
231 rhsfc(i,j) = rhsfc(i,j) * 100.0
232 evp(i,j) = d001*psfc(i,j)*qsfc(i,j)/(eps+oneps*qsfc(i,j))
254 IF (iget(024)>0)
THEN
255 if(grib ==
'grib2')
then
257 fld_info(cfld)%ifld = iavblfld(iget(024))
263 datapd(i,j,cfld) = psfc(ii,jj)
270 IF (iget(025)>0)
THEN
272 if(grib ==
'grib2')
then
274 fld_info(cfld)%ifld = iavblfld(iget(025))
280 datapd(i,j,cfld) = zsfc(ii,jj)
285 if (
allocated(zsfc))
deallocate(zsfc)
286 if (
allocated(psfc))
deallocate(psfc)
289 IF (iget(026)>0)
THEN
290 if(grib ==
'grib2')
then
292 fld_info(cfld)%ifld = iavblfld(iget(026))
298 datapd(i,j,cfld) = tsfc(ii,jj)
303 if (
allocated(tsfc))
deallocate(tsfc)
306 IF (iget(027)>0)
THEN
307 if(grib==
'grib2')
then
309 fld_info(cfld)%ifld=iavblfld(iget(027))
315 datapd(i,j,cfld) = thsfc(ii,jj)
320 if (
allocated(thsfc))
deallocate(thsfc)
323 IF (iget(028)>0)
THEN
325 if(grib==
'grib2')
then
327 fld_info(cfld)%ifld=iavblfld(iget(028))
333 datapd(i,j,cfld) = qsfc(ii,jj)
338 if (
allocated(qsfc))
deallocate(qsfc)
341 IF (iget(029)>0)
THEN
342 allocate(dwpsfc(ista:iend,jsta:jend))
344 if(grib==
'grib2')
then
346 fld_info(cfld)%ifld=iavblfld(iget(029))
352 datapd(i,j,cfld) = dwpsfc(ii,jj)
356 if (
allocated(dwpsfc))
deallocate(dwpsfc)
360 IF (iget(076)>0)
THEN
361 if(grib==
'grib2')
then
363 fld_info(cfld)%ifld=iavblfld(iget(076))
369 if(rhsfc(ii,jj) /= spval)
then
370 datapd(i,j,cfld) = max(h1,min(h100,rhsfc(ii,jj)))
372 datapd(i,j,cfld) = spval
378 if (
allocated(rhsfc))
deallocate(rhsfc)
385 IF (iget(762)>0)
THEN
386 if(grib==
'grib2')
then
388 fld_info(cfld)%ifld=iavblfld(iget(762))
394 datapd(i,j,cfld) = qvg(ii,jj)
402 IF (iget(760)>0)
THEN
403 if(grib==
'grib2')
then
405 fld_info(cfld)%ifld=iavblfld(iget(760))
411 datapd(i,j,cfld) = qv2m(ii,jj)
418 IF (iget(761)>0)
THEN
419 if(grib==
'grib2')
then
421 fld_info(cfld)%ifld=iavblfld(iget(761))
427 datapd(i,j,cfld) = tsnow(ii,jj)
434 IF (iget(724)>0)
THEN
435 if(grib==
'grib2')
then
437 fld_info(cfld)%ifld=iavblfld(iget(724))
443 datapd(i,j,cfld) = snfden(ii,jj)
450 IF (iget(725)>0)
THEN
455 ifincr = mod(ifhr,itprec)
456 IF(ifmin >= 1)ifincr = mod(ifhr*60+ifmin,itprec*60)
463 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
469 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
471 IF (id(18)<0) id(18) = 0
472 if(grib==
'grib2')
then
474 fld_info(cfld)%ifld=iavblfld(iget(725))
475 fld_info(cfld)%ntrange=1
476 fld_info(cfld)%tinvstat=ifhr
482 if(sndepac(ii,jj)<spval)
then
483 if(modelname==
'FV3R')
then
484 datapd(i,j,cfld) = sndepac(ii,jj)/(1e3)
486 datapd(i,j,cfld) = sndepac(ii,jj)
489 datapd(i,j,cfld) = spval
505 IF (iget(116)>0)
THEN
506 IF (lvls(l,iget(116))>0)
THEN
507 IF(isf_surface_physics==3)
THEN
508 if(grib==
'grib2')
then
510 fld_info(cfld)%ifld=iavblfld(iget(116))
511 fld_info(cfld)%lvl=lvlsxml(l,iget(116))
517 datapd(i,j,cfld) = stc(ii,jj,l)
526 dtop = dtop + sldpth(ls)
528 dbot = dtop + sldpth(l)
529 if(grib==
'grib2')
then
531 fld_info(cfld)%ifld=iavblfld(iget(116))
532 fld_info(cfld)%lvl=lvlsxml(l,iget(116))
538 datapd(i,j,cfld) = stc(ii,jj,l)
548 IF (iget(117)>0)
THEN
549 IF (lvls(l,iget(117))>0)
THEN
550 IF(isf_surface_physics==3)
THEN
551 if(grib==
'grib2')
then
553 fld_info(cfld)%ifld=iavblfld(iget(117))
554 fld_info(cfld)%lvl=lvlsxml(l,iget(117))
560 datapd(i,j,cfld) = smc(ii,jj,l)
567 dtop = dtop + sldpth(ls)
569 dbot = dtop + sldpth(l)
570 if(grib==
'grib2')
then
572 fld_info(cfld)%ifld=iavblfld(iget(117))
573 fld_info(cfld)%lvl=lvlsxml(l,iget(117))
579 datapd(i,j,cfld) = smc(ii,jj,l)
587 IF (iget(225)>0)
THEN
588 IF (lvls(l,iget(225))>0)
THEN
589 IF(isf_surface_physics==3)
THEN
590 if(grib==
'grib2')
then
592 fld_info(cfld)%ifld=iavblfld(iget(225))
593 fld_info(cfld)%lvl=lvlsxml(l,iget(225))
599 datapd(i,j,cfld) = sh2o(ii,jj,l)
606 dtop = dtop + sldpth(ls)
608 dbot = dtop + sldpth(l)
609 if(grib==
'grib2')
then
611 fld_info(cfld)%ifld=iavblfld(iget(225))
612 fld_info(cfld)%lvl=lvlsxml(l,iget(225))
618 datapd(i,j,cfld) = sh2o(ii,jj,l)
629 IF (iget(115)>0.or.iget(571)>0)
THEN
631 if(grib==
'grib2')
then
633 fld_info(cfld)%ifld=iavblfld(iget(115))
639 datapd(i,j,cfld) = tg(ii,jj)
644 if(iget(571)>0.and.grib==
'grib2')
then
646 fld_info(cfld)%ifld=iavblfld(iget(571))
652 datapd(i,j,cfld) = tg(ii,jj)
659 IF (iget(171)>0)
THEN
663 IF(smstav(i,j) /= spval)
THEN
664 IF ( modelname ==
'FV3R')
THEN
665 grid1(i,j) = smstav(i,j)
667 grid1(i,j) = smstav(i,j)*100.
674 if(grib==
'grib2')
then
676 fld_info(cfld)%ifld=iavblfld(iget(171))
682 datapd(i,j,cfld) = grid1(ii,jj)
689 IF (iget(036)>0)
THEN
693 IF(smstot(i,j)/=spval)
THEN
694 IF(sm(i,j) > small .AND. sice(i,j) < small)
THEN
697 grid1(i,j) = smstot(i,j)
704 if(grib==
'grib2')
then
706 fld_info(cfld)%ifld=iavblfld(iget(036))
712 datapd(i,j,cfld) = grid1(ii,jj)
719 IF ( iget(118)>0 )
THEN
720 IF(modelname ==
'RAPR')
THEN
724 IF(cmc(i,j) /= spval)
then
725 grid1(i,j) = cmc(i,j)
735 IF(cmc(i,j) /= spval)
then
736 grid1(i,j) = cmc(i,j)*1000.
743 if(grib==
'grib2')
then
745 fld_info(cfld)%ifld=iavblfld(iget(118))
751 datapd(i,j,cfld) = grid1(ii,jj)
758 IF ( iget(119)>0 )
THEN
760 if(grib==
'grib2')
then
762 fld_info(cfld)%ifld=iavblfld(iget(119))
768 datapd(i,j,cfld) = sno(ii,jj)
775 IF ( iget(500)>0 )
THEN
781 grid1(i,j) = snoavg(i,j)
782 if (snoavg(i,j) /= spval) grid1(i,j) = 100.*snoavg(i,j)
785 CALL bound(grid1,d00,h100)
789 ifincr = mod(ifhr,itsrfc)
790 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
795 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
801 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
803 IF (id(18)<0) id(18) = 0
804 if(grib==
'grib2')
then
806 fld_info(cfld)%ifld=iavblfld(iget(500))
808 fld_info(cfld)%ntrange=1
810 fld_info(cfld)%ntrange=0
812 fld_info(cfld)%tinvstat=ifhr-id(18)
820 datapd(i,j,cfld) = grid1(ii,jj)
827 IF ( iget(501)>0 )
THEN
838 if(grib==
'grib2')
then
840 fld_info(cfld)%ifld=iavblfld(iget(501))
842 fld_info(cfld)%ntrange=1
844 fld_info(cfld)%ntrange=0
846 fld_info(cfld)%tinvstat=ifhr-id(18)
852 datapd(i,j,cfld) = psfcavg(ii,jj)
859 IF ( iget(502)>0 )
THEN
870 id(10) = mod(isvalue/256,256)
871 id(11) = mod(isvalue,256)
873 if(grib==
'grib2')
then
875 fld_info(cfld)%ifld=iavblfld(iget(502))
877 fld_info(cfld)%ntrange=1
879 fld_info(cfld)%ntrange=0
881 fld_info(cfld)%tinvstat=ifhr-id(18)
887 datapd(i,j,cfld) = t10avg(ii,jj)
894 IF ( iget(244)>0 )
THEN
898 grid1(i,j) = snonc(i,j)
904 if (itprec /= 0)
then
905 ifincr = mod(ifhr,itprec)
906 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
913 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
919 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
921 IF (id(18)<0) id(18) = 0
923 if(grib==
'grib2')
then
925 fld_info(cfld)%ifld=iavblfld(iget(244))
926 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
931 IF ( iget(120)>0 )
THEN
936 IF ( sno(i,j) /= spval )
THEN
940 CALL snfrac (sneqv,iveg,sncovr)
941 grid1(i,j) = sncovr*100.
945 CALL bound(grid1,d00,h100)
946 if(grib==
'grib2')
then
948 fld_info(cfld)%ifld=iavblfld(iget(120))
954 datapd(i,j,cfld) = grid1(ii,jj)
960 IF ( iget(224)>0 )
THEN
968 IF(si(i,j) /= spval) grid1(i,j) = si(i,j)*0.001
972 if(grib==
'grib2')
then
974 fld_info(cfld)%ifld=iavblfld(iget(224))
980 datapd(i,j,cfld) = grid1(ii,jj)
986 IF ( iget(242)>0 )
THEN
987 if(grib==
'grib2')
then
989 fld_info(cfld)%ifld=iavblfld(iget(242))
995 datapd(i,j,cfld) = potevp(ii,jj)
1001 IF ( iget(349)>0 )
THEN
1002 if(grib==
'grib2')
then
1004 fld_info(cfld)%ifld=iavblfld(iget(349))
1010 datapd(i,j,cfld) = dzice(ii,jj)
1018 IF (modelname ==
'NCAR'.OR. modelname ==
'NMM' &
1019 .OR. modelname ==
'FV3R' .OR. modelname ==
'RAPR')
THEN
1028 IF ( iget(228)>0 .OR. iget(229)>0 &
1029 .OR.iget(230)>0 .OR. iget(231)>0 &
1030 .OR.iget(232)>0 .OR. iget(233)>0)
THEN
1032 allocate(smcdry(ista:iend,jsta:jend), &
1033 smcmax(ista:iend,jsta:jend))
1040 IF( (modelname/=
'RAPR') .AND. (abs(sm(i,j)-0.) < 1.0e-5) .AND. &
1041 & (abs(sice(i,j)-0.) < 1.0e-5) )
THEN
1042 CALL etcalc(qwbs(i,j),potevp(i,j),sno(i,j),vegfrc(i,j) &
1043 & , isltyp(i,j),sh2o(i,j,1:1),cmc(i,j) &
1044 & , ecan(i,j),edir(i,j),etrans(i,j),esnow(i,j) &
1045 & , smcdry(i,j),smcmax(i,j) )
1057 IF ( iget(228)>0 )
THEN
1058 if(grib==
'grib2')
then
1060 fld_info(cfld)%ifld=iavblfld(iget(228))
1066 datapd(i,j,cfld) = ecan(ii,jj)
1072 IF ( iget(229)>0 )
THEN
1073 if(grib==
'grib2')
then
1075 fld_info(cfld)%ifld=iavblfld(iget(229))
1081 datapd(i,j,cfld) = edir(ii,jj)
1087 IF ( iget(230)>0 )
THEN
1088 if(grib==
'grib2')
then
1090 fld_info(cfld)%ifld=iavblfld(iget(230))
1091 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = etrans(ista:iend,jsta:jend)
1095 IF ( iget(231)>0 )
THEN
1096 if(grib==
'grib2')
then
1098 fld_info(cfld)%ifld=iavblfld(iget(231))
1099 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = esnow(ista:iend,jsta:jend)
1103 IF ( iget(232)>0 )
THEN
1104 if(grib==
'grib2')
then
1106 fld_info(cfld)%ifld=iavblfld(iget(232))
1112 datapd(i,j,cfld) = smcdry(ii,jj)
1118 IF ( iget(233)>0 )
THEN
1119 if(grib==
'grib2')
then
1121 fld_info(cfld)%ifld=iavblfld(iget(233))
1127 datapd(i,j,cfld) = smcmax(ii,jj)
1138 if (
allocated(smcdry))
deallocate(smcdry)
1139 if (
allocated(smcmax))
deallocate(smcmax)
1143 IF ( iget(512)>0 )
THEN
1144 if(grib==
'grib2')
then
1146 fld_info(cfld)%ifld=iavblfld(iget(512))
1152 datapd(i,j,cfld) = acond(ii,jj)
1158 IF ( iget(513)>0 )
THEN
1160 itsrfc = nint(tsrfc)
1161 IF(itsrfc /= 0)
then
1162 ifincr = mod(ifhr,itsrfc)
1163 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1168 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1171 id(18) = ifhr-itsrfc
1173 id(18) = ifhr-ifincr
1174 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1176 IF (id(18)<0) id(18) = 0
1177 if(grib==
'grib2')
then
1179 fld_info(cfld)%ifld=iavblfld(iget(513))
1181 fld_info(cfld)%ntrange=1
1183 fld_info(cfld)%ntrange=0
1185 fld_info(cfld)%tinvstat=ifhr-id(18)
1191 datapd(i,j,cfld) = avgecan(ii,jj)
1197 IF ( iget(514)>0 )
THEN
1199 itsrfc = nint(tsrfc)
1200 IF(itsrfc /= 0)
then
1201 ifincr = mod(ifhr,itsrfc)
1202 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1207 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1210 id(18) = ifhr-itsrfc
1212 id(18) = ifhr-ifincr
1213 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1215 IF (id(18)<0) id(18) = 0
1216 if(grib==
'grib2')
then
1218 fld_info(cfld)%ifld=iavblfld(iget(514))
1220 fld_info(cfld)%ntrange=1
1222 fld_info(cfld)%ntrange=0
1224 fld_info(cfld)%tinvstat=ifhr-id(18)
1230 datapd(i,j,cfld) = avgedir(ii,jj)
1236 IF ( iget(515)>0 )
THEN
1238 itsrfc = nint(tsrfc)
1239 IF(itsrfc /= 0)
then
1240 ifincr = mod(ifhr,itsrfc)
1241 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1246 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1249 id(18) = ifhr-itsrfc
1251 id(18) = ifhr-ifincr
1252 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1254 IF (id(18)<0) id(18) = 0
1255 if(grib==
'grib2')
then
1257 fld_info(cfld)%ifld=iavblfld(iget(515))
1259 fld_info(cfld)%ntrange=1
1261 fld_info(cfld)%ntrange=0
1263 fld_info(cfld)%tinvstat=ifhr-id(18)
1264 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = avgetrans(ista:iend,jsta:jend)
1268 IF ( iget(516)>0 )
THEN
1270 itsrfc = nint(tsrfc)
1271 IF(itsrfc /= 0)
then
1272 ifincr = mod(ifhr,itsrfc)
1273 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1278 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1281 id(18) = ifhr-itsrfc
1283 id(18) = ifhr-ifincr
1284 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1286 IF (id(18)<0) id(18) = 0
1287 if(grib==
'grib2')
then
1289 fld_info(cfld)%ifld=iavblfld(iget(516))
1291 fld_info(cfld)%ntrange=1
1293 fld_info(cfld)%ntrange=0
1295 fld_info(cfld)%tinvstat=ifhr-id(18)
1296 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = avgesnow(ista:iend,jsta:jend)
1300 IF ( iget(996)>0 )
THEN
1301 if(grib==
'grib2')
then
1303 fld_info(cfld)%ifld=iavblfld(iget(996))
1309 datapd(i,j,cfld) = landfrac(ii,jj)
1315 IF ( iget(997)>0 )
THEN
1316 if(grib==
'grib2')
then
1318 fld_info(cfld)%ifld=iavblfld(iget(997))
1324 datapd(i,j,cfld) = pahi(ii,jj)
1330 IF ( iget(998)>0 )
THEN
1331 if(grib==
'grib2')
then
1333 fld_info(cfld)%ifld=iavblfld(iget(998))
1339 datapd(i,j,cfld) = twa(ii,jj)
1345 IF ( iget(999)>0 )
THEN
1349 grid1(i,j) = tecan(i,j)
1353 itprec = nint(tprec)
1354 if (itprec /= 0)
then
1355 ifincr = mod(ifhr,itprec)
1356 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
1362 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1365 id(18) = ifhr-itprec
1367 id(18) = ifhr-ifincr
1368 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1370 IF (id(18)<0) id(18) = 0
1371 if(grib==
'grib2')
then
1373 fld_info(cfld)%ifld=iavblfld(iget(999))
1374 fld_info(cfld)%ntrange=1
1375 fld_info(cfld)%tinvstat=ifhr-id(18)
1381 datapd(i,j,cfld) = grid1(ii,jj)
1387 IF ( iget(1000)>0 )
THEN
1391 grid1(i,j) = tetran(i,j)
1395 itprec = nint(tprec)
1396 if (itprec /= 0)
then
1397 ifincr = mod(ifhr,itprec)
1398 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
1404 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1407 id(18) = ifhr-itprec
1409 id(18) = ifhr-ifincr
1410 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1412 IF (id(18)<0) id(18) = 0
1413 if(grib==
'grib2')
then
1415 fld_info(cfld)%ifld=iavblfld(iget(1000))
1416 fld_info(cfld)%ntrange=1
1417 fld_info(cfld)%tinvstat=ifhr-id(18)
1423 datapd(i,j,cfld) = grid1(ii,jj)
1429 IF ( iget(1001)>0 )
THEN
1433 grid1(i,j) = tedir(i,j)
1437 itprec = nint(tprec)
1438 if (itprec /= 0)
then
1439 ifincr = mod(ifhr,itprec)
1440 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
1446 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1449 id(18) = ifhr-itprec
1451 id(18) = ifhr-ifincr
1452 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1454 IF (id(18)<0) id(18) = 0
1455 if(grib==
'grib2')
then
1457 fld_info(cfld)%ifld=iavblfld(iget(1001))
1458 fld_info(cfld)%ntrange=1
1459 fld_info(cfld)%tinvstat=ifhr-id(18)
1465 datapd(i,j,cfld) = grid1(ii,jj)
1472 IF (iget(1002)>0)
THEN
1480 IF(paha(i,j)/=spval)
THEN
1481 grid1(i,j)=-1.*paha(i,j)*rrnum
1483 grid1(i,j)=paha(i,j)
1488 itsrfc = nint(tsrfc)
1489 IF(itsrfc /= 0)
then
1490 ifincr = mod(ifhr,itsrfc)
1491 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1496 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1499 id(18) = ifhr-itsrfc
1501 id(18) = ifhr-ifincr
1502 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1504 IF (id(18)<0) id(18) = 0
1505 if(grib==
'grib2')
then
1507 fld_info(cfld)%ifld=iavblfld(iget(1002))
1509 fld_info(cfld)%ntrange=1
1511 fld_info(cfld)%ntrange=0
1513 fld_info(cfld)%tinvstat=ifhr-id(18)
1514 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1524 IF ( (iget(106)>0).OR.(iget(112)>0).OR. &
1525 (iget(113)>0).OR.(iget(114)>0).OR. &
1526 (iget(138)>0).OR.(iget(414)>0).OR. &
1527 (iget(546)>0).OR.(iget(547)>0).OR. &
1528 (iget(548)>0).OR.(iget(739)>0).OR. &
1529 (iget(744)>0).OR.(iget(771)>0))
THEN
1531 if (.not.
allocated(psfc))
allocate(psfc(ista:iend,jsta:jend))
1534 IF(modelname ==
'NCAR' .OR. modelname==
'RSM'.OR. modelname==
'RAPR')
THEN
1537 tlow = t(i,j,nint(lmh(i,j)))
1538 psfc(i,j) = pint(i,j,nint(lmh(i,j))+1)
1539 pshltr(i,j) = psfc(i,j)*exp(-0.068283/tlow)
1550 IF (iget(106)>0)
THEN
1556 if(tshltr(i,j)/=spval)grid1(i,j)=tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa
1557 IF(grid1(i,j)<200)print*,
'ABNORMAL 2MT ',i,j, &
1558 tshltr(i,j),pshltr(i,j)
1564 if(grib==
'grib2')
then
1566 fld_info(cfld)%ifld=iavblfld(iget(106))
1567 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
1572 IF (iget(546)>0)
THEN
1579 if(grib==
'grib2')
then
1581 fld_info(cfld)%ifld=iavblfld(iget(546))
1582 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = tshltr(ista:iend,jsta:jend)
1587 IF (iget(112)>0)
THEN
1590 grid1(i,j) = qshltr(i,j)
1593 CALL bound (grid1,h1m12,h99999)
1594 if(grib==
'grib2')
then
1596 fld_info(cfld)%ifld=iavblfld(iget(112))
1597 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
1602 IF (iget(414)>0)
THEN
1605 grid1(i,j) = mrshltr(i,j)
1608 if(grib==
'grib2')
then
1610 fld_info(cfld)%ifld=iavblfld(iget(414))
1611 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1616 allocate(p1d(ista:iend,jsta:jend), t1d(ista:iend,jsta:jend))
1617 IF ((iget(113)>0) .OR.(iget(547)>0).OR.(iget(548)>0))
THEN
1624 qv = max(1.e-5,(qshltr(i,j)/(1.-qshltr(i,j))))
1625 e = pshltr(i,j)/100.*qv/(0.62197+qv)
1626 dwpt = (243.5*log(e)-440.8)/(19.48-log(e))+273.15
1634 IF(qshltr(i,j)<spval.and.pshltr(i,j)<spval)
THEN
1635 evp(i,j) = pshltr(i,j)*qshltr(i,j)/(eps+oneps*qshltr(i,j))
1636 evp(i,j) = evp(i,j)*d001
1642 CALL dewpoint(evp,egrid1(ista:iend,jsta:jend))
1645 IF (iget(113)>0)
THEN
1647 if(modelname==
'RAPR')
THEN
1651 t2=tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa
1652 if(qshltr(i,j)/=spval)grid1(i,j)=min(egrid1(i,j),t2)
1658 if(qshltr(i,j)/=spval) grid1(i,j) = egrid1(i,j)
1662 if(grib==
'grib2')
then
1664 fld_info(cfld)%ifld=iavblfld(iget(113))
1665 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1672 IF (iget(771)>0)
THEN
1675 evp(i,j)=p1d(i,j)*qvl1(i,j)/(eps+oneps*qvl1(i,j))
1676 evp(i,j)=evp(i,j)*d001
1679 CALL dewpoint(evp,egrid1(ista:iend,jsta:jend))
1685 if(qvl1(i,j)/=spval)grid1(i,j) = min(egrid1(i,j),t1d(i,j))
1688 if(grib==
'grib2')
then
1690 fld_info(cfld)%ifld=iavblfld(iget(771))
1691 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1697 IF ((iget(547)>0).OR.(iget(548)>0))
THEN
1702 if(tshltr(i,j)/=spval.and.pshltr(i,j)/=spval.and.qshltr(i,j)/=spval)
then
1704 grid1(i,j)=max(0.,tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa-egrid1(i,j))
1707 ape=(h10e5/pshltr(i,j))**capa
1708 grid2(i,j)=tshltr(i,j)*exp(elocp*qshltr(i,j)*ape/tshltr(i,j))
1717 IF (iget(547)>0)
THEN
1718 if(grib==
'grib2')
then
1720 fld_info(cfld)%ifld=iavblfld(iget(547))
1721 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1725 IF (iget(548)>0)
THEN
1726 if(grib==
'grib2')
then
1728 fld_info(cfld)%ifld=iavblfld(iget(548))
1729 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid2(ista:iend,jsta:jend)
1738 IF (iget(114) > 0 .OR. iget(808) > 0)
THEN
1739 allocate(q1d(ista:iend,jsta:jend))
1743 IF(modelname==
'RAPR')
THEN
1744 llmh = nint(lmh(i,j))
1746 p1d(i,j) = pmid(i,j,llmh)
1747 t1d(i,j) = t(i,j,llmh)
1749 p1d(i,j) = pshltr(i,j)
1750 t1d(i,j) = tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa
1752 q1d(i,j) = qshltr(i,j)
1756 CALL calrh(p1d,t1d,q1d,egrid1(ista:iend,jsta:jend))
1758 if (
allocated(q1d))
deallocate(q1d)
1762 if(qshltr(i,j) /= spval)
then
1763 grid1(i,j) = egrid1(i,j)*100.
1769 CALL bound(grid1,h1,h100)
1770 IF (iget(114) > 0)
THEN
1771 if(grib ==
'grib2')
then
1773 fld_info(cfld)%ifld = iavblfld(iget(114))
1779 datapd(i,j,cfld) = grid1(ii,jj)
1790 if(t1d(i,j)/=spval.and.u10h(i,j)/=spval.and.v10h(i,j)<spval)
then
1791 dum1 = (t1d(i,j)-tfrz)*1.8+32.
1792 dum2 = sqrt(u10h(i,j)**2.0+v10h(i,j)**2.0)/0.44704
1793 dum3 = egrid1(i,j) * 100.0
1796 IF(dum1 <= 50.)
THEN
1798 grid2(i,j) = 35.74 + 0.6215*dum1 &
1799 - 35.75*dum216 + 0.4275*dum1*dum216
1800 grid2(i,j) =(grid2(i,j)-32.)/1.8+tfrz
1801 ELSE IF(dum1 > 80.)
THEN
1804 grid2(i,j) = -42.379 + 2.04901523*dum1 &
1805 + 10.14333127*dum3 &
1806 - 0.22475541*dum1*dum3 &
1807 - 0.00683783*dum1s &
1808 - 0.05481717*dum3s &
1809 + 0.00122874*dum1s*dum3 &
1810 + 0.00085282*dum1*dum3s &
1811 - 0.00000199*dum1s*dum3s
1812 grid2(i,j) = (grid2(i,j)-32.)/1.8 + tfrz
1814 grid2(i,j) = t1d(i,j)
1822 if(grib ==
'grib2')
then
1824 fld_info(cfld)%ifld = iavblfld(iget(808))
1830 datapd(i,j,cfld) = grid2(ii,jj)
1839 if (
allocated(p1d))
deallocate (p1d)
1840 if (
allocated(t1d))
deallocate (t1d)
1843 IF (iget(138)>0)
THEN
1849 if(grib==
'grib2')
then
1851 fld_info(cfld)%ifld=iavblfld(iget(138))
1857 datapd(i,j,cfld) = pshltr(ii,jj)
1866 IF (iget(345)>0)
THEN
1873 tmaxmin = max(tmaxmin,1.)
1875 itmaxmin = int(tmaxmin)
1876 IF(itmaxmin /= 0)
then
1877 ifincr = mod(ifhr,itmaxmin)
1878 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
1883 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1886 id(18) = ifhr-itmaxmin
1888 id(18) = ifhr-ifincr
1889 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1891 IF (id(18)<0) id(18) = 0
1892 if(grib==
'grib2')
then
1894 fld_info(cfld)%ifld=iavblfld(iget(345))
1895 if(itmaxmin==0)
then
1896 fld_info(cfld)%ntrange=0
1898 fld_info(cfld)%ntrange=1
1900 fld_info(cfld)%tinvstat=ifhr-id(18)
1901 if(ifhr==0) fld_info(cfld)%tinvstat=0
1907 datapd(i,j,cfld) = maxtshltr(ii,jj)
1914 IF (iget(346)>0)
THEN
1922 itmaxmin = int(tmaxmin)
1923 IF(itmaxmin /= 0)
then
1924 ifincr = mod(ifhr,itmaxmin)
1925 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
1930 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1933 id(18) = ifhr-itmaxmin
1935 id(18) = ifhr-ifincr
1936 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1938 IF (id(18)<0) id(18) = 0
1939 if(grib==
'grib2')
then
1941 fld_info(cfld)%ifld=iavblfld(iget(346))
1942 if(itmaxmin==0)
then
1943 fld_info(cfld)%ntrange=0
1945 fld_info(cfld)%ntrange=1
1947 fld_info(cfld)%tinvstat=ifhr-id(18)
1948 if(ifhr==0) fld_info(cfld)%tinvstat=0
1954 datapd(i,j,cfld) = mintshltr(ii,jj)
1961 IF (iget(347)>0)
THEN
1965 if(maxrhshltr(i,j)/=spval) grid1(i,j)=maxrhshltr(i,j)*100.
1970 itmaxmin = int(tmaxmin)
1971 IF(itmaxmin /= 0)
then
1972 ifincr = mod(ifhr,itmaxmin)
1973 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
1978 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1981 id(18) = ifhr-itmaxmin
1983 id(18) = ifhr-ifincr
1984 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1986 IF (id(18)<0) id(18) = 0
1987 if(grib==
'grib2')
then
1989 fld_info(cfld)%ifld=iavblfld(iget(347))
1990 if(itmaxmin==0)
then
1991 fld_info(cfld)%ntrange=0
1995 fld_info(cfld)%ntrange=1
1998 fld_info(cfld)%tinvstat=ifhr-id(18)
1999 if(ifhr==0) fld_info(cfld)%tinvstat=0
2007 datapd(i,j,cfld) = grid1(ii,jj)
2014 IF (iget(348)>0)
THEN
2018 if(minrhshltr(i,j)/=spval) grid1(i,j)=minrhshltr(i,j)*100.
2023 itmaxmin = int(tmaxmin)
2024 IF(itmaxmin /= 0)
then
2025 ifincr = mod(ifhr,itmaxmin)
2026 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
2031 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2034 id(18) = ifhr-itmaxmin
2036 id(18) = ifhr-ifincr
2037 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2039 IF (id(18)<0) id(18) = 0
2040 if(grib==
'grib2')
then
2042 fld_info(cfld)%ifld=iavblfld(iget(348))
2043 if(itmaxmin==0)
then
2044 fld_info(cfld)%ntrange=0
2048 fld_info(cfld)%ntrange=1
2051 fld_info(cfld)%tinvstat=ifhr-id(18)
2052 if(ifhr==0) fld_info(cfld)%tinvstat=0
2058 datapd(i,j,cfld) = grid1(ii,jj)
2066 IF (iget(510)>0)
THEN
2068 itmaxmin = int(tmaxmin)
2069 IF(itmaxmin /= 0)
then
2070 ifincr = mod(ifhr,itmaxmin)
2071 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
2076 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2079 id(18) = ifhr-itmaxmin
2081 id(18) = ifhr-ifincr
2082 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2084 IF (id(18)<0) id(18) = 0
2085 if(grib==
'grib2')
then
2087 fld_info(cfld)%ifld=iavblfld(iget(510))
2088 if(itmaxmin==0)
then
2089 fld_info(cfld)%ntrange=0
2091 fld_info(cfld)%ntrange=1
2093 fld_info(cfld)%tinvstat=ifhr-id(18)
2099 datapd(i,j,cfld) = maxqshltr(ii,jj)
2106 IF (iget(511)>0)
THEN
2108 itmaxmin = int(tmaxmin)
2109 IF(itmaxmin /= 0)
then
2110 ifincr = mod(ifhr,itmaxmin)
2111 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
2116 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2119 id(18) = ifhr-itmaxmin
2121 id(18) = ifhr-ifincr
2122 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2124 IF (id(18)<0) id(18) = 0
2125 if(grib==
'grib2')
then
2127 fld_info(cfld)%ifld=iavblfld(iget(511))
2128 if(itmaxmin==0)
then
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) = minqshltr(ii,jj)
2147 IF (iget(739)>0)
THEN
2151 if(t(i,j,lm)/=spval.and.pmid(i,j,lm)/=spval.and.smoke(i,j,lm,1)/=spval)&
2152 grid1(i,j) = (1./rd)*(pmid(i,j,lm)/t(i,j,lm))*smoke(i,j,lm,1)/(1e9)
2155 if(grib==
'grib2')
then
2157 fld_info(cfld)%ifld=iavblfld(iget(739))
2158 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
2164 IF (iget(744)>0)
THEN
2168 if(t(i,j,lm)/=spval.and.pmid(i,j,lm)/=spval.and.fv3dust(i,j,lm,1)/=spval)&
2169 grid1(i,j) = (1./rd)*(pmid(i,j,lm)/t(i,j,lm))*fv3dust(i,j,lm,1)/(1e9)
2172 if(grib==
'grib2')
then
2174 fld_info(cfld)%ifld=iavblfld(iget(744))
2175 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
2181 IF (iget(1014)>0)
THEN
2185 if(t(i,j,lm)/=spval.and.pmid(i,j,lm)/=spval.and.coarsepm(i,j,lm,1)/=spval)&
2186 grid1(i,j) = (1./rd)*(pmid(i,j,lm)/t(i,j,lm))*coarsepm(i,j,lm,1)/(1e9)
2189 if(grib==
'grib2')
then
2191 fld_info(cfld)%ifld=iavblfld(iget(1014))
2192 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
2199 IF ( (iget(064)>0).OR.(iget(065)>0).OR. &
2200 (iget(506)>0).OR.(iget(507)>0) )
THEN
2203 IF ((iget(064)>0).OR.(iget(065)>0))
THEN
2207 grid1(i,j) = u10(i,j)
2208 grid2(i,j) = v10(i,j)
2211 if(grib==
'grib2')
then
2213 fld_info(cfld)%ifld=iavblfld(iget(064))
2219 datapd(i,j,cfld) = grid1(ii,jj)
2223 fld_info(cfld)%ifld=iavblfld(iget(065))
2229 datapd(i,j,cfld) = grid2(ii,jj)
2235 IF (iget(730)>0)
THEN
2239 grid1(i,j)=spduv10mean(i,j)
2242 if(grib==
'grib2')
then
2245 fld_info(cfld)%ifld=iavblfld(iget(730))
2246 if(fld_info(cfld)%ntrange==0)
then
2247 if (ifhr==0 .and. ifmin==0)
then
2248 fld_info(cfld)%tinvstat=0
2250 fld_info(cfld)%tinvstat=ifincr
2252 fld_info(cfld)%ntrange=1
2254 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2259 IF (iget(731)>0)
THEN
2263 grid1(i,j)=u10mean(i,j)
2266 if(grib==
'grib2')
then
2268 fld_info(cfld)%ifld=iavblfld(iget(731))
2269 if(fld_info(cfld)%ntrange==0)
then
2270 if (ifhr==0 .and. ifmin==0)
then
2271 fld_info(cfld)%tinvstat=0
2273 fld_info(cfld)%tinvstat=ifincr
2275 fld_info(cfld)%ntrange=1
2277 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2281 IF (iget(732)>0)
THEN
2285 grid1(i,j)=v10mean(i,j)
2288 if(grib==
'grib2')
then
2290 fld_info(cfld)%ifld=iavblfld(iget(732))
2291 if(fld_info(cfld)%ntrange==0)
then
2292 if (ifhr==0 .and. ifmin==0)
then
2293 fld_info(cfld)%tinvstat=0
2295 fld_info(cfld)%tinvstat=ifincr
2297 fld_info(cfld)%ntrange=1
2299 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2303 IF (iget(733)>0 )
THEN
2307 grid1(i,j) = swradmean(i,j)
2310 if(grib==
'grib2')
then
2312 fld_info(cfld)%ifld=iavblfld(iget(733))
2313 if(fld_info(cfld)%ntrange==0)
then
2314 if (ifhr==0 .and. ifmin==0)
then
2315 fld_info(cfld)%tinvstat=0
2317 fld_info(cfld)%tinvstat=ifincr
2319 fld_info(cfld)%ntrange=1
2321 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2325 IF (iget(734)>0 )
THEN
2329 grid1(i,j) = swnormmean(i,j)
2332 if(grib==
'grib2')
then
2334 fld_info(cfld)%ifld=iavblfld(iget(734))
2335 if(fld_info(cfld)%ntrange==0)
then
2336 if (ifhr==0 .and. ifmin==0)
then
2337 fld_info(cfld)%tinvstat=0
2339 fld_info(cfld)%tinvstat=ifincr
2341 fld_info(cfld)%ntrange=1
2343 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2347 IF ((iget(506)>0).OR.(iget(507)>0))
THEN
2359 grid1(i,j) = u10max(i,j)
2360 grid2(i,j) = v10max(i,j)
2363 itsrfc = nint(tsrfc)
2364 if(grib==
'grib2')
then
2366 fld_info(cfld)%ifld=iavblfld(iget(506))
2368 fld_info(cfld)%ntrange=1
2370 fld_info(cfld)%ntrange=0
2372 fld_info(cfld)%tinvstat=ifhr-id(18)
2378 datapd(i,j,cfld) = grid1(ii,jj)
2382 fld_info(cfld)%ifld=iavblfld(iget(507))
2384 fld_info(cfld)%ntrange=1
2386 fld_info(cfld)%ntrange=0
2388 fld_info(cfld)%tinvstat=ifhr-id(18)
2394 datapd(i,j,cfld) = grid2(ii,jj)
2404 IF (iget(158)>0)
THEN
2408 grid1(i,j)=th10(i,j)
2411 if(grib==
'grib2')
then
2413 fld_info(cfld)%ifld=iavblfld(iget(158))
2419 datapd(i,j,cfld) = grid1(ii,jj)
2427 IF (iget(505)>0)
THEN
2431 grid1(i,j)=t10m(i,j)
2434 if(grib==
'grib2')
then
2436 fld_info(cfld)%ifld=iavblfld(iget(505))
2442 datapd(i,j,cfld) = grid1(ii,jj)
2450 IF (iget(159)>0)
THEN
2454 grid1(i,j) = q10(i,j)
2457 if(grib==
'grib2')
then
2459 fld_info(cfld)%ifld=iavblfld(iget(159))
2465 datapd(i,j,cfld) = grid1(ii,jj)
2475 IF (iget(422)>0)
THEN
2479 grid1(i,j) = wspd10max(i,j)
2482 if(grib==
'grib2')
then
2484 fld_info(cfld)%ifld=iavblfld(iget(422))
2486 fld_info(cfld)%tinvstat=0
2488 fld_info(cfld)%tinvstat=1
2490 fld_info(cfld)%ntrange=1
2496 datapd(i,j,cfld) = grid1(ii,jj)
2504 IF (iget(783)>0)
THEN
2508 grid1(i,j) = wspd10umax(i,j)
2511 if(grib==
'grib2')
then
2513 fld_info(cfld)%ifld=iavblfld(iget(783))
2515 fld_info(cfld)%tinvstat=0
2517 fld_info(cfld)%tinvstat=1
2519 fld_info(cfld)%ntrange=1
2525 datapd(i,j,cfld) = grid1(ii,jj)
2533 IF (iget(784)>0)
THEN
2537 grid1(i,j) = wspd10vmax(i,j)
2540 if(grib==
'grib2')
then
2542 fld_info(cfld)%ifld=iavblfld(iget(784))
2544 fld_info(cfld)%tinvstat=0
2546 fld_info(cfld)%tinvstat=1
2548 fld_info(cfld)%ntrange=1
2554 datapd(i,j,cfld) = grid1(i,jj)
2566 IF (iget(588)>0)
THEN
2568 CALL calvessel(iceg(ista:iend,jsta:jend))
2572 grid1(i,j) = iceg(i,j)
2576 if(grib==
'grib2')
then
2578 fld_info(cfld)%ifld=iavblfld(iget(588))
2580 fld_info(cfld)%tinvstat=0
2582 fld_info(cfld)%tinvstat=1
2584 fld_info(cfld)%ntrange=1
2591 datapd(i,j,cfld) = grid1(ii,jj)
2614 IF (iget(172)>0)
THEN
2618 IF (prec(i,j) <= pthresh .OR. sr(i,j)==spval)
THEN
2621 grid1(i,j) = sr(i,j)*100.
2625 if(grib==
'grib2')
then
2627 fld_info(cfld)%ifld=iavblfld(iget(172))
2633 datapd(i,j,cfld) = grid1(ii,jj)
2641 IF (iget(249)>0)
THEN
2648 if(cprate(i,j)/=spval) grid1(i,j) = cprate(i,j)*rdtphs
2652 if(grib==
'grib2')
then
2654 fld_info(cfld)%ifld=iavblfld(iget(249))
2660 datapd(i,j,cfld) = grid1(ii,jj)
2667 IF (iget(167)>0)
THEN
2675 if(prec(i,j)/=spval)
then
2676 IF(modelname /=
'RSM')
THEN
2677 grid1(i,j) = prec(i,j)*rdtphs*1000.
2679 grid1(i,j) = prec(i,j)
2684 if(grib==
'grib2')
then
2686 fld_info(cfld)%ifld=iavblfld(iget(167))
2692 datapd(i,j,cfld) = grid1(ii,jj)
2699 IF (iget(508)>0)
THEN
2709 if(prate_max(i,j)/=spval) grid1(i,j)=prate_max(i,j)*sec2hr
2712 itsrfc = nint(tsrfc)
2713 if(grib==
'grib2')
then
2715 fld_info(cfld)%ifld=iavblfld(iget(508))
2716 fld_info(cfld)%lvl=lvlsxml(1,iget(508))
2718 fld_info(cfld)%ntrange=1
2720 fld_info(cfld)%ntrange=0
2722 fld_info(cfld)%tinvstat=ifhr-id(18)
2728 datapd(i,j,cfld) = grid1(ii,jj)
2735 IF (iget(509)>0)
THEN
2740 if(fprate_max(i,j)/=spval) grid1(i,j)=fprate_max(i,j)*sec2hr
2743 if(grib==
'grib2')
then
2745 fld_info(cfld)%ifld=iavblfld(iget(509))
2746 fld_info(cfld)%lvl=lvlsxml(1,iget(509))
2747 fld_info(cfld)%tinvstat=1
2749 fld_info(cfld)%ntrange=1
2751 fld_info(cfld)%ntrange=0
2758 datapd(i,j,cfld) = grid1(ii,jj)
2765 IF (iget(272)>0)
THEN
2768 itprec = nint(tprec)
2770 if (itprec /= 0)
then
2771 ifincr = mod(ifhr,itprec)
2772 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2779 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2782 id(18) = ifhr-itprec
2784 id(18) = ifhr-ifincr
2785 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2787 IF (id(18)<0) id(18) = 0
2792 if(avgcprate(i,j)/=spval) grid1(i,j) = avgcprate(i,j)*rdtphs
2799 if(grib==
'grib2')
then
2801 fld_info(cfld)%ifld=iavblfld(iget(272))
2804 fld_info(cfld)%ntrange=0
2806 fld_info(cfld)%ntrange=1
2808 fld_info(cfld)%tinvstat=ifhr-id(18)
2815 datapd(i,j,cfld) = grid1(ii,jj)
2822 IF (iget(271)>0)
THEN
2826 itprec = nint(tprec)
2828 if (itprec /= 0)
then
2829 ifincr = mod(ifhr,itprec)
2830 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2837 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2840 id(18) = ifhr-itprec
2842 id(18) = ifhr-ifincr
2843 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2845 IF (id(18)<0) id(18) = 0
2850 if(avgprec(i,j)/=spval) grid1(i,j) = avgprec(i,j)*rdtphs
2854 if(grib==
'grib2')
then
2856 fld_info(cfld)%ifld=iavblfld(iget(271))
2859 fld_info(cfld)%ntrange=0
2861 fld_info(cfld)%ntrange=1
2863 fld_info(cfld)%tinvstat=ifhr-id(18)
2870 datapd(i,j,cfld) = grid1(ii,jj)
2877 IF (iget(087)>0)
THEN
2879 itprec = nint(tprec)
2881 if (itprec /= 0)
then
2882 ifincr = mod(ifhr,itprec)
2883 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2890 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2893 id(18) = ifhr-itprec
2895 id(18) = ifhr-ifincr
2896 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2898 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
2902 IF(avgprec(i,j) < spval)
THEN
2903 grid1(i,j) = avgprec(i,j)*float(id(19)-id(18))*3600.*1000./dtq2
2923 IF(acprec(i,j) < spval)
THEN
2924 grid1(i,j) = acprec(i,j)*1000.
2936 IF (id(18)<0) id(18) = 0
2938 if(grib==
'grib2')
then
2940 fld_info(cfld)%ifld=iavblfld(iget(087))
2941 fld_info(cfld)%ntrange=1
2942 fld_info(cfld)%tinvstat=ifhr-id(18)
2949 datapd(i,j,cfld) = grid1(ii,jj)
2971 IF (iget(417)>0)
THEN
2973 itprec = nint(tprec)
2975 if (itprec /= 0)
then
2976 ifincr = mod(ifhr,itprec)
2977 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2984 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2987 id(18) = ifhr-itprec
2989 id(18) = ifhr-ifincr
2990 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2992 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
2997 IF(avgprec_cont(i,j) < spval)
THEN
2998 grid2(i,j) = avgprec_cont(i,j)*float(ifhr)*3600.*1000./dtq2
3005 IF (id(18)<0) id(18) = 0
3006 if(grib==
'grib2')
then
3008 if(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
3010 fld_info(cfld)%ifld=iavblfld(iget(417))
3011 fld_info(cfld)%ntrange=1
3012 fld_info(cfld)%tinvstat=ifhr
3019 datapd(i,j,cfld) = grid2(ii,jj)
3027 IF (iget(033)>0)
THEN
3029 itprec = nint(tprec)
3031 if (itprec /= 0)
then
3032 ifincr = mod(ifhr,itprec)
3033 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3040 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3043 id(18) = ifhr-itprec
3045 id(18) = ifhr-ifincr
3046 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3048 IF (id(18)<0) id(18) = 0
3049 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
3053 IF(avgcprate(i,j) < spval)
THEN
3054 grid1(i,j) = avgcprate(i,j)* &
3055 float(id(19)-id(18))*3600.*1000./dtq2
3075 IF(cuprec(i,j) < spval)
THEN
3076 grid1(i,j) = cuprec(i,j)*1000.
3084 if(grib==
'grib2')
then
3086 fld_info(cfld)%ifld=iavblfld(iget(033))
3087 fld_info(cfld)%ntrange=1
3088 fld_info(cfld)%tinvstat=ifhr-id(18)
3094 datapd(i,j,cfld) = grid1(ii,jj)
3114 IF (iget(418)>0)
THEN
3116 itprec = nint(tprec)
3118 if (itprec /= 0)
then
3119 ifincr = mod(ifhr,itprec)
3120 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3127 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3130 id(18) = ifhr-itprec
3132 id(18) = ifhr-ifincr
3133 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3135 IF (id(18)<0) id(18) = 0
3136 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
3141 IF(avgcprate_cont(i,j) < spval)
THEN
3142 grid2(i,j) = avgcprate_cont(i,j)*float(ifhr)*3600.*1000./dtq2
3150 if(grib==
'grib2')
then
3152 if(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
3154 fld_info(cfld)%ifld=iavblfld(iget(418))
3155 fld_info(cfld)%ntrange=1
3156 fld_info(cfld)%tinvstat=ifhr
3162 datapd(i,j,cfld) = grid2(ii,jj)
3170 IF (iget(034)>0)
THEN
3173 itprec = nint(tprec)
3175 if (itprec /= 0)
then
3176 ifincr = mod(ifhr,itprec)
3177 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3184 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3187 id(18) = ifhr-itprec
3189 id(18) = ifhr-ifincr
3190 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3192 IF (id(18)<0) id(18) = 0
3193 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
3197 IF(avgcprate(i,j) < spval .AND. avgprec(i,j) < spval)
then
3198 grid1(i,j) = ( avgprec(i,j) - avgcprate(i,j) ) * &
3199 float(id(19)-id(18))*3600.*1000./dtq2
3220 grid1(i,j) = ancprc(i,j)*1000.
3225 if(grib==
'grib2')
then
3227 fld_info(cfld)%ifld=iavblfld(iget(034))
3228 fld_info(cfld)%ntrange=1
3229 fld_info(cfld)%tinvstat=ifhr-id(18)
3235 datapd(i,j,cfld) = grid1(ii,jj)
3256 IF (iget(419)>0)
THEN
3258 itprec = nint(tprec)
3260 if (itprec /= 0)
then
3261 ifincr = mod(ifhr,itprec)
3262 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3269 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3272 id(18) = ifhr-itprec
3274 id(18) = ifhr-ifincr
3275 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3277 IF (id(18)<0) id(18) = 0
3278 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
3283 IF(avgcprate_cont(i,j) < spval .AND. avgprec_cont(i,j) < spval)
THEN
3284 grid2(i,j) = (avgprec_cont(i,j) - avgcprate_cont(i,j)) &
3285 *float(ifhr)*3600.*1000./dtq2
3293 if(grib==
'grib2')
then
3295 if(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
3297 fld_info(cfld)%ifld=iavblfld(iget(419))
3298 fld_info(cfld)%ntrange=1
3299 fld_info(cfld)%tinvstat=ifhr
3305 datapd(i,j,cfld) = grid2(ii,jj)
3313 IF (iget(256)>0)
THEN
3318 IF(lspa(i,j)<=-1.0e-6)
THEN
3319 if(acprec(i,j)/=spval) grid1(i,j) = acprec(i,j)*1000
3321 if(lspa(i,j)/=spval) grid1(i,j) = lspa(i,j)*1000.
3326 itprec = nint(tprec)
3328 if (itprec /= 0)
then
3329 ifincr = mod(ifhr,itprec)
3330 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3337 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3340 id(18) = ifhr-itprec
3342 id(18) = ifhr-ifincr
3343 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3345 IF (id(18)<0) id(18) = 0
3347 if(grib==
'grib2')
then
3349 fld_info(cfld)%ifld=iavblfld(iget(256))
3350 fld_info(cfld)%ntrange=1
3351 fld_info(cfld)%tinvstat=ifhr-id(18)
3357 datapd(i,j,cfld) = grid1(ii,jj)
3364 IF (iget(035)>0)
THEN
3369 grid1(i,j) = acsnow(i,j)
3373 itprec = nint(tprec)
3375 if (itprec /= 0)
then
3376 ifincr = mod(ifhr,itprec)
3377 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3384 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3387 id(18) = ifhr-itprec
3389 id(18) = ifhr-ifincr
3390 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3392 IF (id(18)<0) id(18) = 0
3393 if(grib==
'grib2')
then
3395 fld_info(cfld)%ifld=iavblfld(iget(035))
3396 fld_info(cfld)%ntrange=1
3397 fld_info(cfld)%tinvstat=ifhr
3403 datapd(i,j,cfld) = grid1(ii,jj)
3410 IF (iget(746)>0)
THEN
3414 grid1(i,j) = acgraup(i,j)
3418 itprec = nint(tprec)
3420 if (itprec /= 0)
then
3421 ifincr = mod(ifhr,itprec)
3422 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3429 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3432 id(18) = ifhr-itprec
3434 id(18) = ifhr-ifincr
3435 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3437 IF (id(18)<0) id(18) = 0
3438 if(grib==
'grib2')
then
3440 fld_info(cfld)%ifld=iavblfld(iget(746))
3441 fld_info(cfld)%ntrange=1
3442 fld_info(cfld)%tinvstat=ifhr-id(18)
3443 if(modelname==
'FV3R' .OR. modelname==
'GFS')fld_info(cfld)%tinvstat=ifhr
3449 datapd(i,j,cfld) = grid1(ii,jj)
3456 IF (iget(782)>0)
THEN
3460 grid1(i,j) = acfrain(i,j)
3464 itprec = nint(tprec)
3466 if (itprec /= 0)
then
3467 ifincr = mod(ifhr,itprec)
3468 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3475 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3478 id(18) = ifhr-itprec
3480 id(18) = ifhr-ifincr
3481 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3483 IF (id(18)<0) id(18) = 0
3484 if(grib==
'grib2')
then
3486 fld_info(cfld)%ifld=iavblfld(iget(782))
3487 fld_info(cfld)%ntrange=1
3488 fld_info(cfld)%tinvstat=ifhr-id(18)
3489 if(modelname==
'FV3R' .OR. modelname==
'GFS')fld_info(cfld)%tinvstat=ifhr
3495 datapd(i,j,cfld) = grid1(ii,jj)
3502 IF (iget(1004)>0)
THEN
3506 grid1(i,j) = snow_acm(i,j)
3510 itprec = nint(tprec)
3512 if (itprec /= 0)
then
3513 ifincr = mod(ifhr,itprec)
3514 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3521 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3524 id(18) = ifhr-itprec
3526 id(18) = ifhr-ifincr
3527 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3529 IF (id(18)<0) id(18) = 0
3530 if(grib==
'grib2')
then
3532 fld_info(cfld)%ifld=iavblfld(iget(1004))
3533 fld_info(cfld)%ntrange=1
3534 fld_info(cfld)%tinvstat=ifhr-id(18)
3535 if(modelname==
'FV3R' .or. modelname==
'GFS')fld_info(cfld)%tinvstat=ifhr
3542 datapd(i,j,cfld) = grid1(ii,jj)
3550 IF (iget(121)>0)
THEN
3555 grid1(i,j) = acsnom(i,j)
3559 itprec = nint(tprec)
3561 if (itprec /= 0)
then
3562 ifincr = mod(ifhr,itprec)
3563 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3570 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3573 id(18) = ifhr-itprec
3575 id(18) = ifhr-ifincr
3576 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3578 IF (id(18)<0) id(18) = 0
3579 if(grib==
'grib2')
then
3581 fld_info(cfld)%ifld=iavblfld(iget(121))
3582 fld_info(cfld)%ntrange=1
3583 fld_info(cfld)%tinvstat=ifhr-id(18)
3589 datapd(i,j,cfld) = grid1(ii,jj)
3596 IF (iget(405)>0)
THEN
3600 grid1(i,j) = snowfall(i,j)
3604 itprec = nint(tprec)
3606 if (itprec /= 0)
then
3607 ifincr = mod(ifhr,itprec)
3608 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3615 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3618 id(18) = ifhr-itprec
3620 id(18) = ifhr-ifincr
3621 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3623 IF (id(18)<0) id(18) = 0
3624 IF(itprec < 0)id(1:25)=0
3625 if(grib==
'grib2')
then
3627 fld_info(cfld)%ifld=iavblfld(iget(405))
3628 fld_info(cfld)%ntrange=1
3629 fld_info(cfld)%tinvstat=ifhr-id(18)
3635 datapd(i,j,cfld) = grid1(ii,jj)
3642 IF (iget(122)>0)
THEN
3647 grid1(i,j) = ssroff(i,j)
3651 itprec = nint(tprec)
3653 if (itprec /= 0)
then
3654 ifincr = mod(ifhr,itprec)
3655 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3662 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3665 id(18) = ifhr-itprec
3667 id(18) = ifhr-ifincr
3668 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3670 IF (id(18)<0) id(18) = 0
3672 IF (modelname==
'RAPR')
THEN
3679 if(grib==
'grib2')
then
3681 fld_info(cfld)%ifld=iavblfld(iget(122))
3682 fld_info(cfld)%ntrange=1
3683 fld_info(cfld)%tinvstat=ifhr-id(18)
3689 datapd(i,j,cfld) = grid1(ii,jj)
3696 IF (iget(123)>0)
THEN
3701 grid1(i,j) = bgroff(i,j)
3705 itprec = nint(tprec)
3707 if (itprec /= 0)
then
3708 ifincr = mod(ifhr,itprec)
3709 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3716 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3719 id(18) = ifhr-itprec
3721 id(18) = ifhr-ifincr
3722 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3724 IF (id(18)<0) id(18) = 0
3726 IF (modelname==
'RAPR')
THEN
3733 if(grib==
'grib2')
then
3735 fld_info(cfld)%ifld=iavblfld(iget(123))
3736 fld_info(cfld)%ntrange=1
3737 fld_info(cfld)%tinvstat=ifhr-id(18)
3743 datapd(i,j,cfld) = grid1(ii,jj)
3750 IF (iget(343)>0)
THEN
3754 grid1(i,j) = runoff(i,j)
3758 itprec = nint(tprec)
3761 if(modelname ==
'GFS')itprec=nint(tmaxmin)
3763 if (itprec /= 0)
then
3764 ifincr = mod(ifhr,itprec)
3765 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3772 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3775 id(18) = ifhr-itprec
3777 id(18) = ifhr-ifincr
3778 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3780 IF (id(18)<0) id(18) = 0
3781 if(grib==
'grib2')
then
3783 fld_info(cfld)%ifld=iavblfld(iget(343))
3784 fld_info(cfld)%ntrange=1
3785 fld_info(cfld)%tinvstat=ifhr-id(18)
3791 datapd(i,j,cfld) = grid1(ii,jj)
3799 need_ifi = iget(1007)>0 .or. iget(1008)>0 .or. iget(1009)>0 .or. iget(1010)>0
3800 IF (iget(434)>0. .or. need_ifi)
THEN
3807 ifi_apcp(i,j) = pcp_bucket(i,j)
3814 IF (iget(434)>0.)
THEN
3816 itprec = nint(tprec)
3818 if (itprec /= 0)
then
3819 ifincr = mod(ifhr,itprec)
3820 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3825 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
3828 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3831 id(18) = ifhr-itprec
3833 id(18) = ifhr-ifincr
3834 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3836 IF (id(18)<0) id(18) = 0
3837 if(grib==
'grib2' .and. iget(434)>0)
then
3839 fld_info(cfld)%ifld=iavblfld(iget(434))
3841 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
3843 fld_info(cfld)%ntrange=0
3845 fld_info(cfld)%tinvstat=itprec
3846 if(fld_info(cfld)%ntrange==0)
then
3848 fld_info(cfld)%tinvstat=0
3850 fld_info(cfld)%tinvstat=1
3852 fld_info(cfld)%ntrange=1
3859 datapd(i,j,cfld) = ifi_apcp(ii,jj)
3867 IF (iget(435)>0.)
THEN
3874 grid1(i,j) = rainc_bucket(i,j)
3879 itprec = nint(tprec)
3881 if (itprec /= 0)
then
3882 ifincr = mod(ifhr,itprec)
3883 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3888 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
3892 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3895 id(18) = ifhr-itprec
3897 id(18) = ifhr-ifincr
3898 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3900 IF (id(18)<0) id(18) = 0
3903 if(debugprint .and. me==0)
then
3904 print *,
'PREC_ACC_DT,ID(18),ID(19)',prec_acc_dt,id(18),id(19)
3907 if(grib==
'grib2')
then
3909 fld_info(cfld)%ifld=iavblfld(iget(435))
3911 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
3913 fld_info(cfld)%ntrange=0
3915 fld_info(cfld)%tinvstat=itprec
3916 if(fld_info(cfld)%ntrange==0)
then
3918 fld_info(cfld)%tinvstat=0
3920 fld_info(cfld)%tinvstat=1
3922 fld_info(cfld)%ntrange=1
3929 datapd(i,j,cfld) = grid1(ii,jj)
3936 IF (iget(436)>0.)
THEN
3943 grid1(i,j) = rainnc_bucket(i,j)
3948 itprec = nint(tprec)
3950 if (itprec /= 0)
then
3951 ifincr = mod(ifhr,itprec)
3952 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3957 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
3960 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3963 id(18) = ifhr-itprec
3965 id(18) = ifhr-ifincr
3966 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3968 IF (id(18)<0) id(18) = 0
3969 if(grib==
'grib2')
then
3971 fld_info(cfld)%ifld=iavblfld(iget(436))
3973 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
3975 fld_info(cfld)%ntrange=0
3977 fld_info(cfld)%tinvstat=itprec
3978 if(fld_info(cfld)%ntrange==0)
then
3980 fld_info(cfld)%tinvstat=0
3982 fld_info(cfld)%tinvstat=1
3984 fld_info(cfld)%ntrange=1
3991 datapd(i,j,cfld) = grid1(ii,jj)
3998 IF (iget(437)>0.)
THEN
4002 grid1(i,j) = snow_bucket(i,j)
4006 itprec = nint(tprec)
4008 if (itprec /= 0)
then
4009 ifincr = mod(ifhr,itprec)
4010 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4015 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
4018 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4021 id(18) = ifhr-itprec
4023 id(18) = ifhr-ifincr
4024 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4026 IF (id(18)<0) id(18) = 0
4028 if(grib==
'grib2')
then
4030 fld_info(cfld)%ifld=iavblfld(iget(437))
4032 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
4034 fld_info(cfld)%ntrange=0
4036 fld_info(cfld)%tinvstat=itprec
4037 if(fld_info(cfld)%ntrange==0)
then
4039 fld_info(cfld)%tinvstat=0
4041 fld_info(cfld)%tinvstat=1
4043 fld_info(cfld)%ntrange=1
4050 datapd(i,j,cfld) = grid1(ii,jj)
4057 IF (iget(775)>0.)
THEN
4061 grid1(i,j) = graup_bucket(i,j)
4065 itprec = nint(tprec)
4067 if (itprec /= 0)
then
4068 ifincr = mod(ifhr,itprec)
4069 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4074 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
4077 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4080 id(18) = ifhr-itprec
4082 id(18) = ifhr-ifincr
4083 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4085 IF (id(18)<0) id(18) = 0
4087 if(grib==
'grib2')
then
4089 fld_info(cfld)%ifld=iavblfld(iget(775))
4091 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
4093 fld_info(cfld)%ntrange=0
4095 fld_info(cfld)%tinvstat=itprec
4096 if(fld_info(cfld)%ntrange==0)
then
4098 fld_info(cfld)%tinvstat=0
4100 fld_info(cfld)%tinvstat=1
4102 fld_info(cfld)%ntrange=1
4104 if(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
4105 fld_info(cfld)%ntrange=1
4106 fld_info(cfld)%tinvstat=ifhr-id(18)
4113 datapd(i,j,cfld) = grid1(ii,jj)
4120 IF (iget(1003)>0.)
THEN
4124 grid1(i,j) = frzrn_bucket(i,j)
4128 itprec = nint(tprec)
4130 if (itprec /= 0)
then
4131 ifincr = mod(ifhr,itprec)
4132 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4139 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4142 id(18) = ifhr-itprec
4144 id(18) = ifhr-ifincr
4145 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4147 IF (id(18)<0) id(18) = 0
4149 if(grib==
'grib2')
then
4151 fld_info(cfld)%ifld=iavblfld(iget(1003))
4152 fld_info(cfld)%ntrange=1
4153 fld_info(cfld)%tinvstat=ifhr-id(18)
4173 datapd(i,j,cfld) = grid1(ii,jj)
4180 IF (iget(1005)>0.)
THEN
4184 grid1(i,j) = snow_bkt(i,j)
4188 itprec = nint(tprec)
4190 if (itprec /= 0)
then
4191 ifincr = mod(ifhr,itprec)
4192 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4199 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4202 id(18) = ifhr-itprec
4204 id(18) = ifhr-ifincr
4205 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4207 IF (id(18)<0) id(18) = 0
4209 if(grib==
'grib2')
then
4211 fld_info(cfld)%ifld=iavblfld(iget(1005))
4212 fld_info(cfld)%ntrange=1
4213 fld_info(cfld)%tinvstat=ifhr-id(18)
4219 datapd(i,j,cfld) = grid1(ii,jj)
4228 IF (iget(913).GT.0)
THEN
4229 ffgfile=
'ffg_01h.grib2'
4232 IF (iget(914).GT.0)
THEN
4233 IF (ifhr .EQ. 1)
THEN
4234 ffgfile=
'ffg_01h.grib2'
4236 ELSEIF (ifhr .EQ. 3)
THEN
4237 ffgfile=
'ffg_03h.grib2'
4239 ELSEIF (ifhr .EQ. 6)
THEN
4240 ffgfile=
'ffg_06h.grib2'
4242 ELSEIF (ifhr .EQ. 12)
THEN
4243 ffgfile=
'ffg_12h.grib2'
4246 ffgfile=
'ffg_01h.grib2'
4254 IF (iget(915).GT.0)
THEN
4255 arifile=
'ari2y_01h.grib2'
4258 IF (iget(916).GT.0)
THEN
4259 IF (ifhr .EQ. 1)
THEN
4260 arifile=
'ari2y_01h.grib2'
4262 ELSEIF (ifhr .EQ. 3)
THEN
4263 arifile=
'ari2y_03h.grib2'
4265 ELSEIF (ifhr .EQ. 6)
THEN
4266 arifile=
'ari2y_06h.grib2'
4268 ELSEIF (ifhr .EQ. 12)
THEN
4269 arifile=
'ari2y_12h.grib2'
4271 ELSEIF (ifhr .EQ. 24)
THEN
4272 arifile=
'ari2y_24h.grib2'
4275 arifile=
'ari2y_01h.grib2'
4280 IF (iget(917).GT.0)
THEN
4281 arifile=
'ari5y_01h.grib2'
4284 IF (iget(918).GT.0)
THEN
4285 IF (ifhr .EQ. 1)
THEN
4286 arifile=
'ari5y_01h.grib2'
4288 ELSEIF (ifhr .EQ. 3)
THEN
4289 arifile=
'ari5y_03h.grib2'
4291 ELSEIF (ifhr .EQ. 6)
THEN
4292 arifile=
'ari5y_06h.grib2'
4294 ELSEIF (ifhr .EQ. 12)
THEN
4295 arifile=
'ari5y_12h.grib2'
4297 ELSEIF (ifhr .EQ. 24)
THEN
4298 arifile=
'ari5y_24h.grib2'
4301 arifile=
'ari5y_01h.grib2'
4306 IF (iget(919).GT.0)
THEN
4307 arifile=
'ari10y_01h.grib2'
4310 IF (iget(920).GT.0)
THEN
4311 IF (ifhr .EQ. 1)
THEN
4312 arifile=
'ari10y_01h.grib2'
4314 ELSEIF (ifhr .EQ. 3)
THEN
4315 arifile=
'ari10y_03h.grib2'
4317 ELSEIF (ifhr .EQ. 6)
THEN
4318 arifile=
'ari10y_06h.grib2'
4320 ELSEIF (ifhr .EQ. 12)
THEN
4321 arifile=
'ari10y_12h.grib2'
4323 ELSEIF (ifhr .EQ. 24)
THEN
4324 arifile=
'ari10y_24h.grib2'
4327 arifile=
'ari10y_01h.grib2'
4332 IF (iget(921).GT.0)
THEN
4333 arifile=
'ari100y_01h.grib2'
4336 IF (iget(922).GT.0)
THEN
4337 IF (ifhr .EQ. 1)
THEN
4338 arifile=
'ari100y_01h.grib2'
4340 ELSEIF (ifhr .EQ. 3)
THEN
4341 arifile=
'ari100y_03h.grib2'
4343 ELSEIF (ifhr .EQ. 6)
THEN
4344 arifile=
'ari100y_06h.grib2'
4346 ELSEIF (ifhr .EQ. 12)
THEN
4347 arifile=
'ari100y_12h.grib2'
4349 ELSEIF (ifhr .EQ. 24)
THEN
4350 arifile=
'ari100y_24h.grib2'
4353 arifile=
'ari100y_01h.grib2'
4361 IF (iget(526)>0.)
THEN
4365 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4368 grid1(i,j) = pcp_bucket1(i,j)
4372 ifincr = nint(prec_acc_dt1)
4373 if(grib==
'grib2')
then
4375 fld_info(cfld)%ifld=iavblfld(iget(518))
4376 if(fld_info(cfld)%ntrange==0)
then
4377 if (ifhr==0 .and. ifmin==0)
then
4378 fld_info(cfld)%tinvstat=0
4380 fld_info(cfld)%tinvstat=ifincr
4382 fld_info(cfld)%ntrange=1
4389 datapd(i,j,cfld) = grid1(ii,jj)
4395 IF (iget(527)>0.)
THEN
4399 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4402 grid1(i,j) = rainc_bucket1(i,j)
4406 ifincr = nint(prec_acc_dt1)
4407 if(grib==
'grib2')
then
4409 fld_info(cfld)%ifld=iavblfld(iget(519))
4410 if(fld_info(cfld)%ntrange==0)
then
4411 if (ifhr==0 .and. ifmin==0)
then
4412 fld_info(cfld)%tinvstat=0
4414 fld_info(cfld)%tinvstat=ifincr
4416 fld_info(cfld)%ntrange=1
4423 datapd(i,j,cfld) = grid1(ii,jj)
4429 IF (iget(528)>0.)
THEN
4433 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4436 grid1(i,j) = rainnc_bucket1(i,j)
4440 ifincr = nint(prec_acc_dt1)
4441 if(grib==
'grib2')
then
4443 fld_info(cfld)%ifld=iavblfld(iget(520))
4444 if(fld_info(cfld)%ntrange==0)
then
4445 if (ifhr==0 .and. ifmin==0)
then
4446 fld_info(cfld)%tinvstat=0
4448 fld_info(cfld)%tinvstat=ifincr
4450 fld_info(cfld)%ntrange=1
4457 datapd(i,j,cfld) = grid1(ii,jj)
4463 IF (iget(529)>0.)
THEN
4467 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4470 grid1(i,j) = snow_bucket1(i,j)
4474 ifincr = nint(prec_acc_dt1)
4476 if(grib==
'grib2')
then
4478 fld_info(cfld)%ifld=iavblfld(iget(521))
4479 if(fld_info(cfld)%ntrange==0)
then
4480 if (ifhr==0 .and. ifmin==0)
then
4481 fld_info(cfld)%tinvstat=0
4483 fld_info(cfld)%tinvstat=ifincr
4485 fld_info(cfld)%ntrange=1
4492 datapd(i,j,cfld) = grid1(ii,jj)
4498 IF (iget(530)>0.)
THEN
4502 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4505 grid1(i,j) = graup_bucket1(i,j)
4509 ifincr = nint(prec_acc_dt1)
4511 if(grib==
'grib2')
then
4513 fld_info(cfld)%ifld=iavblfld(iget(522))
4514 if(fld_info(cfld)%ntrange==0)
then
4515 if (ifhr==0 .and. ifmin==0)
then
4516 fld_info(cfld)%tinvstat=0
4518 fld_info(cfld)%tinvstat=ifincr
4520 fld_info(cfld)%ntrange=1
4527 datapd(i,j,cfld) = grid1(ii,jj)
4535 IF (iget(160)>0 .OR.(iget(247)>0))
THEN
4537 allocate(sleet(ista:iend,jsta:jend,nalg), rain(ista:iend,jsta:jend,nalg), &
4538 freezr(ista:iend,jsta:jend,nalg), snow(ista:iend,jsta:jend,nalg))
4539 allocate(zwet(ista:iend,jsta:jend))
4540 CALL calwxt_post(t,q,pmid,pint,htm,lmh,prec,zint,iwx1,zwet)
4544 IF (iget(160)>0)
THEN
4548 IF(zwet(i,j)<spval)
THEN
4550 snow(i,j,1) = mod(iwx,2)
4551 sleet(i,j,1) = mod(iwx,4)/2
4552 freezr(i,j,1) = mod(iwx,8)/4
4556 sleet(i,j,1) = spval
4557 freezr(i,j,1) = spval
4565 IF (iget(247)>0)
THEN
4568 grid1(i,j) = zwet(i,j)
4571 if(grib==
'grib2')
then
4573 fld_info(cfld)%ifld=iavblfld(iget(247))
4579 datapd(i,j,cfld) = grid1(ii,jj)
4590 IF (iget(160)>0)
THEN
4592 CALL calwxt_ramer_post(t,q,pmid,pint,lmh,prec,iwx1)
4601 snow(i,j,2) = mod(iwx,2)
4602 sleet(i,j,2) = mod(iwx,4)/2
4603 freezr(i,j,2) = mod(iwx,8)/4
4609 iseed=44641*(int(sdat(1)-1)*24*31+int(sdat(2))*24+ihrst)+ &
4610 & mod(ifhr*60+ifmin,44641)+4357
4612 CALL calwxt_bourg_post(im,ista_2l,iend_2u,ista,iend,jm,jsta_2l,jend_2u,jsta,jend,lm,lp1,&
4613 & iseed,g,pthresh, &
4614 & t,q,pmid,pint,lmh,prec,zint,iwx1,me)
4624 snow(i,j,3) = mod(iwx,2)
4625 sleet(i,j,3) = mod(iwx,4)/2
4626 freezr(i,j,3) = mod(iwx,8)/4
4632 CALL calwxt_revised_post(t,q,pmid,pint,htm,lmh,prec,zint,iwx1)
4640 snow(i,j,4) = mod(iwx,2)
4641 sleet(i,j,4) = mod(iwx,4)/2
4642 freezr(i,j,4) = mod(iwx,8)/4
4649 IF(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95)
then
4650 CALL calwxt_explicit_post(lmh,ths,pmid,prec,sr,f_rimef,iwx1)
4666 snow(i,j,5) = mod(iwx,2)
4667 sleet(i,j,5) = mod(iwx,4)/2
4668 freezr(i,j,5) = mod(iwx,8)/4
4673 allocate(domr(ista:iend,jsta:jend), doms(ista:iend,jsta:jend), &
4674 domzr(ista:iend,jsta:jend), domip(ista:iend,jsta:jend))
4675 CALL calwxt_dominant_post(prec(ista_2l,jsta_2l),rain,freezr,sleet,snow, &
4676 domr,domzr,domip,doms)
4683 if(prec(i,j) /= spval) grid1(i,j) = doms(i,j)
4686 if(grib==
'grib2')
then
4688 fld_info(cfld)%ifld=iavblfld(iget(551))
4694 datapd(i,j,cfld) = grid1(ii,jj)
4703 if(prec(i,j)/=spval) grid1(i,j) = domip(i,j)
4706 if(grib==
'grib2')
then
4708 fld_info(cfld)%ifld=iavblfld(iget(552))
4714 datapd(i,j,cfld) = grid1(ii,jj)
4729 if(prec(i,j)/=spval)grid1(i,j) = domzr(i,j)
4732 if(grib==
'grib2')
then
4734 fld_info(cfld)%ifld=iavblfld(iget(553))
4740 datapd(i,j,cfld) = grid1(ii,jj)
4749 if(prec(i,j)/=spval)grid1(i,j) = domr(i,j)
4752 if(grib==
'grib2')
then
4754 fld_info(cfld)%ifld=iavblfld(iget(160))
4760 datapd(i,j,cfld) = grid1(ii,jj)
4768 IF (iget(317)>0)
THEN
4770 if (.not.
allocated(sleet))
allocate(sleet(ista:iend,jsta:jend,nalg))
4771 if (.not.
allocated(rain))
allocate(rain(ista:iend,jsta:jend,nalg))
4772 if (.not.
allocated(freezr))
allocate(freezr(ista:iend,jsta:jend,nalg))
4773 if (.not.
allocated(snow))
allocate(snow(ista:iend,jsta:jend,nalg))
4774 if (.not.
allocated(zwet))
allocate(zwet(ista:iend,jsta:jend))
4775 CALL calwxt_post(t,q,pmid,pint,htm,lmh,avgprec,zint,iwx1,zwet)
4780 IF(zwet(i,j)<spval)
THEN
4782 snow(i,j,1) = mod(iwx,2)
4783 sleet(i,j,1) = mod(iwx,4)/2
4784 freezr(i,j,1) = mod(iwx,8)/4
4788 sleet(i,j,1) = spval
4789 freezr(i,j,1) = spval
4794 if (
allocated(zwet))
deallocate(zwet)
4804 CALL calwxt_ramer_post(t,q,pmid,pint,lmh,avgprec,iwx1)
4813 snow(i,j,2) = mod(iwx,2)
4814 sleet(i,j,2) = mod(iwx,4)/2
4815 freezr(i,j,2) = mod(iwx,8)/4
4821 iseed=44641*(int(sdat(1)-1)*24*31+int(sdat(2))*24+ihrst)+ &
4822 & mod(ifhr*60+ifmin,44641)+4357
4824 CALL calwxt_bourg_post(im,ista_2l,iend_2u,ista,iend,jm,jsta_2l,jend_2u,jsta,jend,lm,lp1,&
4825 & iseed,g,pthresh, &
4826 & t,q,pmid,pint,lmh,avgprec,zint,iwx1,me)
4836 snow(i,j,3) = mod(iwx,2)
4837 sleet(i,j,3) = mod(iwx,4)/2
4838 freezr(i,j,3) = mod(iwx,8)/4
4844 CALL calwxt_revised_post(t,q,pmid,pint,htm,lmh,avgprec,zint,iwx1)
4853 snow(i,j,4) = mod(iwx,2)
4854 sleet(i,j,4) = mod(iwx,4)/2
4855 freezr(i,j,4) = mod(iwx,8)/4
4863 IF(imp_physics == 5)
then
4864 CALL calwxt_explicit_post(lmh,ths,pmid,avgprec,sr,f_rimef,iwx1)
4880 snow(i,j,5) = mod(iwx,2)
4881 sleet(i,j,5) = mod(iwx,4)/2
4882 freezr(i,j,5) = mod(iwx,8)/4
4892 if (.not.
allocated(domr))
allocate(domr(ista:iend,jsta:jend))
4893 if (.not.
allocated(doms))
allocate(doms(ista:iend,jsta:jend))
4894 if (.not.
allocated(domzr))
allocate(domzr(ista:iend,jsta:jend))
4895 if (.not.
allocated(domip))
allocate(domip(ista:iend,jsta:jend))
4897 CALL calwxt_dominant_post(avgprec,rain,freezr,sleet,snow, &
4898 domr,domzr,domip,doms)
4901 itprec = nint(tprec)
4903 if (itprec /= 0)
then
4904 ifincr = mod(ifhr,itprec)
4905 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4912 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4915 id(18) = ifhr-itprec
4917 id(18) = ifhr-ifincr
4918 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4929 if(avgprec(i,j) /= spval) grid1(i,j) = doms(i,j)
4933 if(grib==
'grib2')
then
4935 fld_info(cfld)%ifld=iavblfld(iget(555))
4937 fld_info(cfld)%ntrange=0
4939 fld_info(cfld)%ntrange=1
4941 fld_info(cfld)%tinvstat=ifhr-id(18)
4948 datapd(i,j,cfld) = grid1(ii,jj)
4954 itprec = nint(tprec)
4956 if (itprec /= 0)
then
4957 ifincr = mod(ifhr,itprec)
4958 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4965 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4968 id(18) = ifhr-itprec
4970 id(18) = ifhr-ifincr
4971 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4977 if(avgprec(i,j)/=spval) grid1(i,j) = domip(i,j)
4980 if(grib==
'grib2')
then
4982 fld_info(cfld)%ifld=iavblfld(iget(556))
4984 fld_info(cfld)%ntrange=0
4986 fld_info(cfld)%ntrange=1
4988 fld_info(cfld)%tinvstat=ifhr-id(18)
4995 datapd(i,j,cfld) = grid1(ii,jj)
5002 itprec = nint(tprec)
5004 if (itprec /= 0)
then
5005 ifincr = mod(ifhr,itprec)
5006 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
5013 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5016 id(18) = ifhr-itprec
5018 id(18) = ifhr-ifincr
5019 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5031 if(avgprec(i,j)/=spval) grid1(i,j) = domzr(i,j)
5034 if(grib==
'grib2')
then
5036 fld_info(cfld)%ifld=iavblfld(iget(557))
5038 fld_info(cfld)%ntrange=0
5040 fld_info(cfld)%ntrange=1
5042 fld_info(cfld)%tinvstat=ifhr-id(18)
5049 datapd(i,j,cfld) = grid1(ii,jj)
5056 itprec = nint(tprec)
5058 if (itprec /= 0)
then
5059 ifincr = mod(ifhr,itprec)
5060 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
5068 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5071 id(18) = ifhr-itprec
5073 id(18) = ifhr-ifincr
5074 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5080 if(avgprec(i,j)/=spval) grid1(i,j) = domr(i,j)
5083 if(grib==
'grib2')
then
5085 fld_info(cfld)%ifld=iavblfld(iget(317))
5087 fld_info(cfld)%ntrange=0
5089 fld_info(cfld)%ntrange=1
5091 fld_info(cfld)%tinvstat=ifhr-id(18)
5098 datapd(i,j,cfld) = grid1(ii,jj)
5105 if (
allocated(rain))
deallocate(rain)
5106 if (
allocated(snow))
deallocate(snow)
5107 if (
allocated(sleet))
deallocate(sleet)
5108 if (
allocated(freezr))
deallocate(freezr)
5111 IF (iget(407)>0 .or. iget(559)>0 .or. &
5112 iget(560)>0 .or. iget(561)>0)
THEN
5114 if (.not.
allocated(domr))
allocate(domr(ista:iend,jsta:jend))
5115 if (.not.
allocated(doms))
allocate(doms(ista:iend,jsta:jend))
5116 if (.not.
allocated(domzr))
allocate(domzr(ista:iend,jsta:jend))
5117 if (.not.
allocated(domip))
allocate(domip(ista:iend,jsta:jend))
5129 IF (modelname .eq.
'FV3R')
THEN
5132 snow_bucket(i,j) = snow_bkt(i,j)
5133 rainnc_bucket(i,j) = 0.0
5143 totprcp = (avgprec(i,j)*3600.*1000./dtq2)
5145 if(graup_bucket(i,j)*1.e-3 > totprcp.and.graup_bucket(i,j)/=spval)
then
5146 print *,
'WARNING - Graupel is higher that total precip at point',i,j
5147 print *,
'totprcp,graup_bucket(i,j),snow_bucket(i,j),rainnc_bucket',&
5148 totprcp,graup_bucket(i,j),snow_bucket(i,j),rainnc_bucket(i,j)
5155 if (totprcp-graup_bucket(i,j)*1.e-3 > 0.0000001) &
5161 snowratio = snow_bucket(i,j)*1.e-3 / (totprcp-graup_bucket(i,j)*1.e-3)
5165 t2 = tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa
5172 if( (snownc(i,j)/dt > 0.2e-9 .and. snowratio>=0.25) &
5174 (totprcp>0.00001.and.snowratio>=0.25))
then
5176 if (t2>=276.15)
then
5187 rainl = (1. - sr(i,j))*prec(i,j)/dt
5190 if((rainl > 2.8e-9 .and. snowratio<0.60) .or. &
5191 (totprcp>0.00001 .and. snowratio<0.60))
then
5193 if (t2>=273.15)
then
5208 if(graupelnc(i,j)/dt > 1.e-9)
then
5209 if (t2<=276.15)
then
5215 if (qrmax(i,j)>0.000005)
then
5216 if(graupelnc(i,j) > 0.5*snownc(i,j))
then
5225 if ((graupelnc(i,j)/dt) > rainl)
then
5232 else if (rainl > (4.*graupelnc(i,j)/dt))
then
5264 if (snow_bucket(i,j)*0.1<0.1*float(icat).and. &
5265 snow_bucket(i,j)*0.1>0.1*float(icat-1))
then
5266 cnt_snowratio(icat)=cnt_snowratio(icat)+1
5277 icnt_snow_rain_mixed = 0
5280 if (domr(i,j)==1 .and. doms(i,j)==1)
then
5281 icnt_snow_rain_mixed = icnt_snow_rain_mixed + 1
5294 grid1(i,j)=doms(i,j)
5297 if(grib==
'grib2')
then
5299 fld_info(cfld)%ifld=iavblfld(iget(559))
5305 datapd(i,j,cfld) = grid1(ii,jj)
5313 grid1(i,j) = domip(i,j)
5319 if(grib==
'grib2')
then
5321 fld_info(cfld)%ifld=iavblfld(iget(560))
5327 datapd(i,j,cfld) = grid1(ii,jj)
5339 grid1(i,j) = domzr(i,j)
5342 if(grib==
'grib2')
then
5344 fld_info(cfld)%ifld=iavblfld(iget(561))
5350 datapd(i,j,cfld) = grid1(ii,jj)
5358 grid1(i,j) = domr(i,j)
5361 if(grib==
'grib2')
then
5363 fld_info(cfld)%ifld=iavblfld(iget(407))
5369 datapd(i,j,cfld) = grid1(ii,jj)
5376 if (
allocated(psfc))
deallocate(psfc)
5377 if (
allocated(domr))
deallocate(domr)
5378 if (
allocated(doms))
deallocate(doms)
5379 if (
allocated(domzr))
deallocate(domzr)
5380 if (
allocated(domip))
deallocate(domip)
5386 IF (iget(042)>0)
THEN
5387 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5388 modelname==
'RAPR')
THEN
5399 IF(sfclhx(i,j)/=spval)
THEN
5400 grid1(i,j)=-1.*sfclhx(i,j)*rrnum
5402 grid1(i,j)=sfclhx(i,j)
5407 itsrfc = nint(tsrfc)
5408 IF(itsrfc /= 0)
then
5409 ifincr = mod(ifhr,itsrfc)
5410 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5415 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5418 id(18) = ifhr-itsrfc
5420 id(18) = ifhr-ifincr
5421 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5423 IF (id(18)<0) id(18) = 0
5424 if(grib==
'grib2')
then
5426 fld_info(cfld)%ifld=iavblfld(iget(042))
5428 fld_info(cfld)%ntrange=1
5430 fld_info(cfld)%ntrange=0
5432 fld_info(cfld)%tinvstat=ifhr-id(18)
5433 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5439 IF (iget(043)>0)
THEN
5440 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5441 modelname==
'RAPR')
THEN
5452 IF(sfcshx(i,j)/=spval)
THEN
5453 grid1(i,j) = -1.* sfcshx(i,j)*rrnum
5455 grid1(i,j)=sfcshx(i,j)
5460 itsrfc = nint(tsrfc)
5461 IF(itsrfc /= 0)
then
5462 ifincr = mod(ifhr,itsrfc)
5463 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5468 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5471 id(18) = ifhr-itsrfc
5473 id(18) = ifhr-ifincr
5474 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5476 IF (id(18)<0) id(18) = 0
5478 if(grib==
'grib2')
then
5480 fld_info(cfld)%ifld=iavblfld(iget(043))
5482 fld_info(cfld)%ntrange=1
5484 fld_info(cfld)%ntrange=0
5486 fld_info(cfld)%tinvstat=ifhr-id(18)
5487 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5492 IF (iget(135)>0)
THEN
5493 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5494 modelname==
'RAPR')
THEN
5506 if(subshx(i,j)/=spval) grid1(i,j) = subshx(i,j)*rrnum
5510 itsrfc = nint(tsrfc)
5511 IF(itsrfc /= 0)
then
5512 ifincr = mod(ifhr,itsrfc)
5513 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5518 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5521 id(18) = ifhr-itsrfc
5523 id(18) = ifhr-ifincr
5524 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5526 IF (id(18)<0) id(18) = 0
5528 if(grib==
'grib2')
then
5530 fld_info(cfld)%ifld=iavblfld(iget(135))
5532 fld_info(cfld)%ntrange=1
5534 fld_info(cfld)%ntrange=0
5536 fld_info(cfld)%tinvstat=ifhr-id(18)
5537 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5542 IF (iget(136)>0)
THEN
5543 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5544 modelname==
'RAPR')
THEN
5556 if(snopcx(i,j)/=spval) grid1(i,j) = snopcx(i,j)*rrnum
5560 itsrfc = nint(tsrfc)
5561 IF(itsrfc /= 0)
then
5562 ifincr = mod(ifhr,itsrfc)
5563 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5568 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5571 id(18) = ifhr-itsrfc
5573 id(18) = ifhr-ifincr
5574 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5576 IF (id(18)<0) id(18) = 0
5578 if(grib==
'grib2')
then
5580 fld_info(cfld)%ifld=iavblfld(iget(136))
5582 fld_info(cfld)%ntrange=1
5584 fld_info(cfld)%ntrange=0
5586 fld_info(cfld)%tinvstat=ifhr-id(18)
5587 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5592 IF (iget(046)>0)
THEN
5593 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5594 modelname==
'RAPR')
THEN
5605 IF(sfcuvx(i,j)/=spval)
THEN
5606 grid1(i,j) = sfcuvx(i,j)*rrnum
5608 grid1(i,j) = sfcuvx(i,j)
5613 itsrfc = nint(tsrfc)
5614 IF(itsrfc /= 0)
then
5615 ifincr = mod(ifhr,itsrfc)
5616 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5621 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5624 id(18) = ifhr-itsrfc
5626 id(18) = ifhr-ifincr
5627 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5629 IF (id(18)<0) id(18) = 0
5631 if(grib==
'grib2')
then
5633 fld_info(cfld)%ifld=iavblfld(iget(046))
5635 fld_info(cfld)%ntrange=1
5637 fld_info(cfld)%ntrange=0
5639 fld_info(cfld)%tinvstat=ifhr-id(18)
5640 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5645 IF (iget(269)>0)
THEN
5646 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5647 modelname==
'RAPR')
THEN
5659 if(sfcux(i,j)/=spval) grid1(i,j) = sfcux(i,j)*rrnum
5663 itsrfc = nint(tsrfc)
5664 IF(itsrfc /= 0)
then
5665 ifincr = mod(ifhr,itsrfc)
5666 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5671 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5674 id(18) = ifhr-itsrfc
5676 id(18) = ifhr-ifincr
5677 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5679 IF (id(18)<0) id(18) = 0
5681 if(grib==
'grib2')
then
5683 fld_info(cfld)%ifld=iavblfld(iget(269))
5685 fld_info(cfld)%ntrange=1
5687 fld_info(cfld)%ntrange=0
5689 fld_info(cfld)%tinvstat=ifhr-id(18)
5690 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5695 IF (iget(270)>0)
THEN
5696 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5697 modelname==
'RAPR')
THEN
5709 if(sfcvx(i,j)/=spval) grid1(i,j) = sfcvx(i,j)*rrnum
5713 itsrfc = nint(tsrfc)
5714 IF(itsrfc /= 0)
then
5715 ifincr = mod(ifhr,itsrfc)
5716 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5721 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5724 id(18) = ifhr-itsrfc
5726 id(18) = ifhr-ifincr
5727 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5729 IF (id(18)<0) id(18) = 0
5731 if(grib==
'grib2')
then
5733 fld_info(cfld)%ifld=iavblfld(iget(270))
5735 fld_info(cfld)%ntrange=1
5737 fld_info(cfld)%ntrange=0
5739 fld_info(cfld)%tinvstat=ifhr-id(18)
5740 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5745 IF (iget(047)>0)
THEN
5749 if(sfcevp(i,j)/=spval) grid1(i,j) = sfcevp(i,j)*1000.
5753 itprec = nint(tprec)
5755 if (itprec /= 0)
then
5756 ifincr = mod(ifhr,itprec)
5757 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
5764 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5767 id(18) = ifhr-itprec
5769 id(18) = ifhr-ifincr
5770 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5772 IF (id(18)<0) id(18) = 0
5773 if(grib==
'grib2')
then
5775 fld_info(cfld)%ifld=iavblfld(iget(047))
5777 fld_info(cfld)%ntrange=1
5779 fld_info(cfld)%ntrange=0
5781 fld_info(cfld)%tinvstat=ifhr-id(18)
5782 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5788 IF (iget(137)>0)
THEN
5792 if(potevp(i,j)/=spval) grid1(i,j) = potevp(i,j)*1000.
5796 itprec = nint(tprec)
5798 if (itprec /= 0)
then
5799 ifincr = mod(ifhr,itprec)
5800 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
5807 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5810 id(18) = ifhr-itprec
5812 id(18) = ifhr-ifincr
5813 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5815 IF (id(18)<0) id(18) = 0
5816 if(grib==
'grib2')
then
5818 fld_info(cfld)%ifld=iavblfld(iget(137))
5820 fld_info(cfld)%ntrange=1
5822 fld_info(cfld)%ntrange=0
5824 fld_info(cfld)%tinvstat=ifhr-id(18)
5825 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5830 IF (iget(044)>0)
THEN
5833 grid1(i,j) = z0(i,j)
5836 if(grib==
'grib2')
then
5838 fld_info(cfld)%ifld=iavblfld(iget(044))
5839 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5844 IF (iget(045)>0)
THEN
5847 grid1(i,j) = ustar(i,j)
5850 if(grib==
'grib2')
then
5852 fld_info(cfld)%ifld=iavblfld(iget(045))
5853 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5859 IF (iget(132)>0)
THEN
5861 CALL caldrg(egrid1(ista_2l:iend_2u,jsta_2l:jend_2u))
5864 IF(ustar(i,j) < spval) grid1(i,j)=egrid1(i,j)
5867 if(grib==
'grib2')
then
5869 fld_info(cfld)%ifld=iavblfld(iget(132))
5870 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5874 write_cd:
IF(iget(924)>0)
THEN
5877 grid1(i,j)=cd10(i,j)
5880 if(grib==
'grib2')
then
5882 fld_info(cfld)%ifld=iavblfld(iget(924))
5883 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5886 write_ch:
IF(iget(923)>0)
THEN
5889 grid1(i,j)=ch10(i,j)
5892 if(grib==
'grib2')
then
5894 fld_info(cfld)%ifld=iavblfld(iget(923))
5895 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5900 IF ( (iget(900)>0) .OR. (iget(901)>0) )
THEN
5903 IF (iget(900)>0)
THEN
5906 grid1(i,j)=mdltaux(i,j)
5909 if(grib==
'grib2')
then
5911 fld_info(cfld)%ifld=iavblfld(iget(900))
5912 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5918 IF (iget(901)>0)
THEN
5921 grid1(i,j)=mdltauy(i,j)
5924 if(grib==
'grib2')
then
5926 fld_info(cfld)%ifld=iavblfld(iget(901))
5927 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5933 IF ( (iget(133)>0) .OR. (iget(134)>0) )
THEN
5936 IF(modelname /=
'FV3R') &
5937 CALL caltau(egrid1(ista:iend,jsta:jend),egrid2(ista:iend,jsta:jend))
5941 IF (iget(133)>0)
THEN
5944 IF(modelname ==
'FV3R')
THEN
5945 grid1(i,j)=sfcuxi(i,j)
5947 grid1(i,j)=egrid1(i,j)
5952 if(grib==
'grib2')
then
5954 fld_info(cfld)%ifld=iavblfld(iget(133))
5955 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5960 IF (iget(134)>0)
THEN
5963 IF(modelname ==
'FV3R')
THEN
5964 grid1(i,j)=sfcvxi(i,j)
5966 grid1(i,j)=egrid2(i,j)
5970 if(grib==
'grib2')
then
5972 fld_info(cfld)%ifld=iavblfld(iget(134))
5973 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5979 IF ( (iget(315)>0) .OR. (iget(316)>0) )
THEN
5982 IF (iget(315)>0)
THEN
5985 grid1(i,j) = gtaux(i,j)
5989 itsrfc = nint(tsrfc)
5990 IF(itsrfc /= 0)
then
5991 ifincr = mod(ifhr,itsrfc)
5992 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5997 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
6000 id(18) = ifhr-itsrfc
6002 id(18) = ifhr-ifincr
6003 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
6005 IF (id(18)<0) id(18) = 0
6006 if(grib==
'grib2')
then
6008 fld_info(cfld)%ifld=iavblfld(iget(315))
6010 fld_info(cfld)%ntrange=0
6012 fld_info(cfld)%ntrange=1
6014 fld_info(cfld)%tinvstat=ifhr-id(18)
6015 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6020 IF (iget(316)>0)
THEN
6023 grid1(i,j)=gtauy(i,j)
6027 itsrfc = nint(tsrfc)
6028 IF(itsrfc /= 0)
then
6029 ifincr = mod(ifhr,itsrfc)
6030 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
6035 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
6038 id(18) = ifhr-itsrfc
6040 id(18) = ifhr-ifincr
6041 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
6043 IF (id(18)<0) id(18) = 0
6044 if(grib==
'grib2')
then
6046 fld_info(cfld)%ifld=iavblfld(iget(316))
6048 fld_info(cfld)%ntrange=0
6050 fld_info(cfld)%ntrange=1
6052 fld_info(cfld)%tinvstat=ifhr-id(18)
6053 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6059 IF (iget(154)>0)
THEN
6062 IF(modelname==
'NCAR'.OR.modelname==
'RSM' .OR. &
6063 modelname==
'RAPR')
THEN
6067 grid1(i,j) = twbs(i,j)
6074 IF(twbs(i,j) < spval) grid1(i,j) = -twbs(i,j)
6078 if(grib==
'grib2')
then
6080 fld_info(cfld)%ifld=iavblfld(iget(154))
6081 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6086 IF (iget(155)>0)
THEN
6089 IF(modelname==
'NCAR'.OR.modelname==
'RSM' .OR. &
6090 modelname==
'RAPR')
THEN
6094 grid1(i,j) = qwbs(i,j)
6101 IF(qwbs(i,j) < spval) grid1(i,j) = -qwbs(i,j)
6105 if(grib==
'grib2')
then
6107 fld_info(cfld)%ifld=iavblfld(iget(155))
6108 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6113 IF (iget(169)>0)
THEN
6116 grid1(i,j)=sfcexc(i,j)
6119 if(grib==
'grib2')
then
6121 fld_info(cfld)%ifld=iavblfld(iget(169))
6122 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6127 IF (iget(170)>0)
THEN
6131 if(vegfrc(i,j)/=spval) grid1(i,j)=vegfrc(i,j)*100.
6134 if(grib==
'grib2')
then
6136 fld_info(cfld)%ifld=iavblfld(iget(170))
6137 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6143 IF (iget(726)>0)
THEN
6147 if(shdmin(i,j)/=spval) grid1(i,j)=shdmin(i,j)*100.
6150 if(grib==
'grib2')
then
6152 fld_info(cfld)%ifld=iavblfld(iget(726))
6153 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6158 IF (iget(729)>0)
THEN
6162 if(shdmax(i,j)/=spval) grid1(i,j)=shdmax(i,j)*100.
6165 if(grib==
'grib2')
then
6167 fld_info(cfld)%ifld=iavblfld(iget(729))
6168 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6173 IF (modelname ==
'NCAR'.OR.modelname==
'NMM' .OR. &
6174 modelname ==
'FV3R' .OR. modelname==
'RAPR')
THEN
6175 IF (isf_surface_physics == 2 .OR. modelname==
'RAPR')
THEN
6176 IF (iget(254)>0)
THEN
6179 IF (modelname==
'RAPR')
THEN
6186 if(grib==
'grib2')
then
6188 fld_info(cfld)%ifld=iavblfld(iget(254))
6189 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6196 IF (iget(152)>0)
THEN
6199 grid1(i,j)=grnflx(i,j)
6202 if(grib==
'grib2')
then
6204 fld_info(cfld)%ifld=iavblfld(iget(152))
6205 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6209 IF (iget(218)>0)
THEN
6212 grid1(i,j) = float(ivgtyp(i,j))
6215 if(grib==
'grib2')
then
6217 fld_info(cfld)%ifld=iavblfld(iget(218))
6218 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6223 IF (iget(219)>0)
THEN
6226 grid1(i,j) = float(isltyp(i,j))
6229 if(grib==
'grib2')
then
6231 fld_info(cfld)%ifld=iavblfld(iget(219))
6232 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6236 IF (iget(223)>0)
THEN
6239 grid1(i,j) = float(islope(i,j))
6242 if(grib==
'grib2')
then
6244 fld_info(cfld)%ifld=iavblfld(iget(223))
6245 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6252 IF (modelname ==
'NCAR'.OR.modelname==
'NMM' .OR. &
6253 modelname ==
'FV3R' .OR. modelname==
'RAPR')
THEN
6254 IF (iget(220)>0 .OR. iget(234)>0 &
6255 & .OR. iget(235)>0 .OR. iget(236)>0 &
6256 & .OR. iget(237)>0 .OR. iget(238)>0 &
6257 & .OR. iget(239)>0 .OR. iget(240)>0 &
6258 & .OR. iget(241)>0 )
THEN
6259 IF (isf_surface_physics == 2)
THEN
6261 allocate(rsmin(ista:iend,jsta:jend), smcref(ista:iend,jsta:jend), gc(ista:iend,jsta:jend), &
6262 rcq(ista:iend,jsta:jend), rct(ista:iend,jsta:jend), rcsoil(ista:iend,jsta:jend), rcs(ista:iend,jsta:jend))
6265 IF( (abs(sm(i,j)-0.) < 1.0e-5) .AND. &
6266 & (abs(sice(i,j)-0.) < 1.0e-5) )
THEN
6267 IF(czmean(i,j)>1.e-6)
THEN
6268 factrs = czen(i,j)/czmean(i,j)
6273 llmh = nint(lmh(i,j))
6274 solar = rswin(i,j)*factrs
6275 sfctmp = t(i,j,llmh)
6277 sfcprs = pint(i,j,llmh+1)
6285 CALL canres(solar,sfctmp,sfcq,sfcprs &
6286 & ,sh2o(i,j,1:nsoil),gc(i,j),rc,ivg,isltyp(i,j) &
6287 & ,rsmin(i,j),nroots(i,j),smcwlt(i,j),smcref(i,j) &
6288 & ,rcs(i,j),rcq(i,j),rct(i,j),rcsoil(i,j),sldpth)
6289 IF(abs(smcwlt(i,j)-0.5)<1.e-5)print*, &
6290 &
'LARGE SMCWLT',i,j,sm(i,j),isltyp(i,j),smcwlt(i,j)
6305 IF (iget(220)>0 )
THEN
6308 grid1(i,j) = gc(i,j)
6311 if(grib==
'grib2')
then
6313 fld_info(cfld)%ifld=iavblfld(iget(220))
6314 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6318 IF (iget(234)>0 )
THEN
6321 grid1(i,j) = rsmin(i,j)
6324 if(grib==
'grib2')
then
6326 fld_info(cfld)%ifld=iavblfld(iget(234))
6327 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6331 IF (iget(235)>0 )
THEN
6334 grid1(i,j) = float(nroots(i,j))
6337 if(grib==
'grib2')
then
6339 fld_info(cfld)%ifld=iavblfld(iget(235))
6340 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6344 IF (iget(236)>0 )
THEN
6347 grid1(i,j) = smcwlt(i,j)
6350 if(grib==
'grib2')
then
6352 fld_info(cfld)%ifld=iavblfld(iget(236))
6353 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6357 IF (iget(237)>0 )
THEN
6360 grid1(i,j) = smcref(i,j)
6363 if(grib==
'grib2')
then
6365 fld_info(cfld)%ifld=iavblfld(iget(237))
6366 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6370 IF (iget(238)>0 )
THEN
6373 grid1(i,j) = rcs(i,j)
6376 if(grib==
'grib2')
then
6378 fld_info(cfld)%ifld=iavblfld(iget(238))
6379 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6383 IF (iget(239)>0 )
THEN
6386 grid1(i,j) = rct(i,j)
6389 if(grib==
'grib2')
then
6391 fld_info(cfld)%ifld=iavblfld(iget(239))
6392 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6396 IF (iget(240)>0 )
THEN
6399 grid1(i,j) = rcq(i,j)
6402 if(grib==
'grib2')
then
6404 fld_info(cfld)%ifld=iavblfld(iget(240))
6405 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6409 IF (iget(241)>0 )
THEN
6412 grid1(i,j) = rcsoil(i,j)
6415 if(grib==
'grib2')
then
6417 fld_info(cfld)%ifld=iavblfld(iget(241))
6418 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6422 if (
allocated(rsmin))
deallocate(rsmin)
6423 if (
allocated(smcref))
deallocate(smcref)
6424 if (
allocated(rcq))
deallocate(rcq)
6425 if (
allocated(rct))
deallocate(rct)
6426 if (
allocated(rcsoil))
deallocate(rcsoil)
6427 if (
allocated(rcs))
deallocate(rcs)
6428 if (
allocated(gc))
deallocate(gc)
6435 IF(modelname ==
'GFS')
THEN
6441 grid1(i,j) = smcwlt(i,j)
6449 if(grib==
'grib2')
then
6451 fld_info(cfld)%ifld=iavblfld(iget(236))
6457 datapd(i,j,cfld) = grid1(ii,jj)
6467 grid1(i,j) = fieldcapa(i,j)
6475 if(grib==
'grib2')
then
6477 fld_info(cfld)%ifld=iavblfld(iget(397))
6483 datapd(i,j,cfld) = grid1(ii,jj)
6493 grid1(i,j) = suntime(i,j)
6497 itsrfc = nint(tsrfc)
6498 IF(itsrfc /= 0)
then
6499 ifincr = mod(ifhr,itsrfc)
6500 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
6505 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
6508 id(18) = ifhr-itsrfc
6510 id(18) = ifhr-ifincr
6511 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
6513 IF (id(18)<0) id(18) = 0
6514 if(grib==
'grib2')
then
6516 fld_info(cfld)%ifld=iavblfld(iget(396))
6518 fld_info(cfld)%ntrange=1
6520 fld_info(cfld)%ntrange=0
6522 fld_info(cfld)%tinvstat=ifhr-id(18)
6528 datapd(i,j,cfld) = grid1(ii,jj)
6538 grid1(i,j) = avgpotevp(i,j)
6542 itsrfc = nint(tsrfc)
6543 IF(itsrfc /= 0)
then
6544 ifincr = mod(ifhr,itsrfc)
6545 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
6550 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
6553 id(18) = ifhr-itsrfc
6555 id(18) = ifhr-ifincr
6556 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
6558 IF (id(18)<0) id(18) = 0
6559 if(grib==
'grib2')
then
6561 fld_info(cfld)%ifld=iavblfld(iget(517))
6563 fld_info(cfld)%ntrange=1
6565 fld_info(cfld)%ntrange=0
6567 fld_info(cfld)%tinvstat=ifhr-id(18)
6573 datapd(i,j,cfld) = grid1(ii,jj)
6582 IF (iget(282)>0)
THEN
6589 if(grib==
'grib2')
then
6591 fld_info(cfld)%ifld=iavblfld(iget(282))
6592 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6597 IF (iget(283)>0)
THEN
6606 IF(pmid(1,1,l)>=(pdtop+pt))
EXIT
6610 CALL mpi_bcast(l,1,mpi_integer,0,mpi_comm_comp,irtn)
6611 if(grib==
'grib2')
then
6613 fld_info(cfld)%ifld=iavblfld(iget(283))
6614 fld_info(cfld)%lvl1=1
6615 fld_info(cfld)%lvl2=l
6616 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6621 IF (iget(273)>0)
THEN
6630 IF((pint(1,1,lm+1)-pd(1,1))<=(pint(1,1,l)+1.00))
EXIT
6634 CALL mpi_bcast(l,1,mpi_integer,0,mpi_comm_comp,irtn)
6635 if(grib==
'grib2')
then
6637 fld_info(cfld)%ifld=iavblfld(iget(273))
6638 fld_info(cfld)%lvl1=l
6639 fld_info(cfld)%lvl2=lm+1
6640 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6646 IF (iget(503)>0)
THEN
6649 grid1(i,j)=akhsavg(i,j)
6661 itsrfc = nint(tsrfc)
6662 if(grib==
'grib2')
then
6664 fld_info(cfld)%ifld=iavblfld(iget(503))
6666 fld_info(cfld)%ntrange=1
6668 fld_info(cfld)%ntrange=0
6670 fld_info(cfld)%tinvstat=ifhr-id(18)
6671 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6676 IF (iget(504)>0)
THEN
6679 grid1(i,j)=akmsavg(i,j)
6691 itsrfc = nint(tsrfc)
6692 if(grib==
'grib2')
then
6694 fld_info(cfld)%ifld=iavblfld(iget(504))
6696 fld_info(cfld)%ntrange=1
6698 fld_info(cfld)%ntrange=0
6700 fld_info(cfld)%tinvstat=ifhr-id(18)
6701 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)