70 use vrbls3d, only: zint, pint, t, pmid, q, f_rimef
71 use vrbls2d, only: ths, qs, qvg, qv2m, tsnow, tg, smstav, smstot, &
72 cmc, sno, snoavg, psfcavg, t10avg, snonc, ivgtyp, &
73 si, potevp, dzice, qwbs, vegfrc, isltyp, pshltr, &
74 tshltr, qshltr, mrshltr, maxtshltr, mintshltr, &
75 maxrhshltr, minrhshltr, u10, psfcavg, v10, u10max, &
76 v10max, th10, t10m, q10, wspd10max, &
77 wspd10umax, wspd10vmax, prec, sr, &
78 cprate, avgcprate, avgprec, acprec, cuprec, ancprc, &
79 lspa, acsnow, acsnom, snowfall,ssroff, bgroff, &
80 runoff, pcp_bucket, rainnc_bucket, snow_bucket, &
81 snownc, tmax, graup_bucket, graupelnc, qrmax, sfclhx,&
82 rainc_bucket, sfcshx, subshx, snopcx, sfcuvx, &
83 sfcvx, smcwlt, suntime, pd, sfcux, sfcuxi, sfcvxi, sfcevp, z0, &
84 ustar, mdltaux, mdltauy, gtaux, gtauy, twbs, &
85 sfcexc, grnflx, islope, czmean, czen, rswin,akhsavg ,&
86 akmsavg, u10h, v10h,snfden,sndepac,qvl1, &
87 spduv10mean,swradmean,swnormmean,prate_max,fprate_max &
88 ,fieldcapa,edir,ecan,etrans,esnow,u10mean,v10mean, &
89 avgedir,avgecan,avgetrans,avgesnow,acgraup,acfrain, &
90 acond,maxqshltr,minqshltr,avgpotevp,avgprec_cont, &
91 avgcprate_cont,sst,pcp_bucket1,rainnc_bucket1, &
92 snow_bucket1, rainc_bucket1, graup_bucket1, &
93 shdmin, shdmax, lai, ch10,cd10,landfrac,paha,pahi, &
94 tecan,tetran,tedir,twa
95 use soil, only: stc, sllevel, sldpth, smc, sh2o
96 use masks, only: lmh, sm, sice, htm, gdlat, gdlon
98 use params_mod, only: p1000, capa, h1m12, pq0, a2,a3, a4, h1, d00, d01,&
99 eps, oneps, d001, h99999, h100, small, h10e5, &
100 elocp, g, xlai, tfrz, rd
101 use ctlblk_mod
, only: jsta, jend, lm, spval, grib, cfld, fld_info, &
102 datapd, nsoil, isf_surface_physics, tprec, ifmin,&
103 modelname, tmaxmin, pthresh, dtq2, dt, nphs, &
104 ifhr, prec_acc_dt, sdat, ihrst, jsta_2l, jend_2u,&
105 lp1, imp_physics, me, asrfc, tsrfc, pt, pdtop, &
106 mpi_comm_comp, im, jm, prec_acc_dt1, &
107 ista, iend, ista_2l, iend_2u
108 use rqstfld_mod
, only: iget, lvls, id, iavblfld, lvlsxml
109 use grib2_module, only: read_grib2_head, read_grib2_sngle
123 real,
PARAMETER :: ptrace = 0.000254e0
126 integer,
parameter :: nalg=5, nosoiltype=9
127 real,
PARAMETER :: c2k = 273.15, sec2hr = 1./3600.
131 integer,
dimension(ista:iend,jsta:jend) :: nroots, iwx1
132 real,
allocatable,
dimension(:,:) :: zsfc, psfc, tsfc, qsfc, &
133 rhsfc, thsfc, dwpsfc, p1d, &
135 smcdry, smcmax,doms, domr, &
136 domip, domzr, rsmin, smcref,&
137 rcq, rct, rcsoil, gc, rcs
139 real,
dimension(ista:iend,jsta:jend) :: evp
140 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: egrid1, egrid2
141 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: grid2
142 real,
dimension(im,jm) :: grid1
143 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u) :: iceg
145 real,
allocatable,
dimension(:,:,:) :: sleet, rain, freezr, snow
149 REAL totprcp, snowratio,t2,rainl
152 integer i,j,iwx,itmaxmin,ifincr,isvalue,ii,jj, &
153 itprec,itsrfc,l,ls,iveg,llmh, &
154 ivg,irtn,iseed, icat, cnt_snowratio(10),icnt_snow_rain_mixed
156 real rdtphs,tlow,tsfck,qsat,dtop,dbot,sneqv,rrnum,sfcprs,sfcq, &
157 rc,sfctmp,sncovr,factrs,solar, s,tk,tl,w,t2c,dlt,ape, &
158 qv,e,dwpt,dum1,dum2,dum3,dum1s,dum3s,dum21,dum216,es
160 character(len=256) :: ffgfile
161 character(len=256) :: arifile
165 logical,
parameter :: debugprint = .false.
178 IF ( (iget(024)>0).OR.(iget(025)>0).OR. &
179 (iget(026)>0).OR.(iget(027)>0).OR. &
180 (iget(028)>0).OR.(iget(029)>0).OR. &
182 (iget(034)>0).OR.(iget(076)>0) )
THEN
184 allocate(zsfc(ista:iend,jsta:jend), psfc(ista:iend,jsta:jend), tsfc(ista:iend,jsta:jend)&
185 ,rhsfc(ista:iend,jsta:jend), thsfc(ista:iend,jsta:jend), qsfc(ista:iend,jsta:jend))
195 IF(zint(i,j,lm+1) < spval) &
196 zsfc(i,j) = zint(i,j,lm+1)
197 psfc(i,j) = pint(i,j,nint(lmh(i,j))+1)
200 thsfc(i,j) = ths(i,j)
202 IF(thsfc(i,j) /= spval .and. psfc(i,j) /= spval) &
203 tsfc(i,j) = thsfc(i,j)*(psfc(i,j)/p1000)**capa
212 IF(tsfc(i,j) < spval)
then
213 IF(qs(i,j)<spval) qsfc(i,j) = max(h1m12,qs(i,j))
216 IF(modelname ==
'RAPR')
THEN
217 qsat = max(0.0001,pq0/psfc(i,j)*exp(a2*(tsfck-a3)/(tsfck-a4)))
218 elseif (modelname ==
'GFS')
then
220 qsat = con_eps*es/(psfc(i,j)+con_epsm1*es)
222 qsat = pq0/psfc(i,j)*exp(a2*(tsfck-a3)/(tsfck-a4))
224 rhsfc(i,j) = max(d01, min(h1,qsfc(i,j)/qsat))
226 qsfc(i,j) = rhsfc(i,j)*qsat
227 rhsfc(i,j) = rhsfc(i,j) * 100.0
228 evp(i,j) = d001*psfc(i,j)*qsfc(i,j)/(eps+oneps*qsfc(i,j))
250 IF (iget(024)>0)
THEN
251 if(grib ==
'grib2')
then
253 fld_info(cfld)%ifld = iavblfld(iget(024))
259 datapd(i,j,cfld) = psfc(ii,jj)
266 IF (iget(025)>0)
THEN
268 if(grib ==
'grib2')
then
270 fld_info(cfld)%ifld = iavblfld(iget(025))
276 datapd(i,j,cfld) = zsfc(ii,jj)
281 if (
allocated(zsfc))
deallocate(zsfc)
282 if (
allocated(psfc))
deallocate(psfc)
285 IF (iget(026)>0)
THEN
286 if(grib ==
'grib2')
then
288 fld_info(cfld)%ifld = iavblfld(iget(026))
294 datapd(i,j,cfld) = tsfc(ii,jj)
299 if (
allocated(tsfc))
deallocate(tsfc)
302 IF (iget(027)>0)
THEN
303 if(grib==
'grib2')
then
305 fld_info(cfld)%ifld=iavblfld(iget(027))
311 datapd(i,j,cfld) = thsfc(ii,jj)
316 if (
allocated(thsfc))
deallocate(thsfc)
319 IF (iget(028)>0)
THEN
321 if(grib==
'grib2')
then
323 fld_info(cfld)%ifld=iavblfld(iget(028))
329 datapd(i,j,cfld) = qsfc(ii,jj)
334 if (
allocated(qsfc))
deallocate(qsfc)
337 IF (iget(029)>0)
THEN
338 allocate(dwpsfc(ista:iend,jsta:jend))
339 CALL dewpoint(evp,dwpsfc)
340 if(grib==
'grib2')
then
342 fld_info(cfld)%ifld=iavblfld(iget(029))
348 datapd(i,j,cfld) = dwpsfc(ii,jj)
352 if (
allocated(dwpsfc))
deallocate(dwpsfc)
356 IF (iget(076)>0)
THEN
357 CALL bound(rhsfc,h1,h100)
358 if(grib==
'grib2')
then
360 fld_info(cfld)%ifld=iavblfld(iget(076))
366 datapd(i,j,cfld) = rhsfc(ii,jj)
371 if (
allocated(rhsfc))
deallocate(rhsfc)
378 IF (iget(762)>0)
THEN
379 if(grib==
'grib2')
then
381 fld_info(cfld)%ifld=iavblfld(iget(762))
387 datapd(i,j,cfld) = qvg(ii,jj)
395 IF (iget(760)>0)
THEN
396 if(grib==
'grib2')
then
398 fld_info(cfld)%ifld=iavblfld(iget(760))
404 datapd(i,j,cfld) = qv2m(ii,jj)
411 IF (iget(761)>0)
THEN
412 if(grib==
'grib2')
then
414 fld_info(cfld)%ifld=iavblfld(iget(761))
420 datapd(i,j,cfld) = tsnow(ii,jj)
427 IF (iget(724)>0)
THEN
428 if(grib==
'grib2')
then
430 fld_info(cfld)%ifld=iavblfld(iget(724))
436 datapd(i,j,cfld) = snfden(ii,jj)
443 IF (iget(725)>0)
THEN
448 ifincr = mod(ifhr,itprec)
449 IF(ifmin >= 1)ifincr = mod(ifhr*60+ifmin,itprec*60)
456 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
462 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
464 IF (id(18)<0) id(18) = 0
465 if(grib==
'grib2')
then
467 fld_info(cfld)%ifld=iavblfld(iget(725))
468 fld_info(cfld)%ntrange=1
469 fld_info(cfld)%tinvstat=ifhr-id(18)
475 datapd(i,j,cfld) = sndepac(ii,jj)
490 IF (iget(116)>0)
THEN
491 IF (lvls(l,iget(116))>0)
THEN
492 IF(isf_surface_physics==3)
THEN
493 if(grib==
'grib2')
then
495 fld_info(cfld)%ifld=iavblfld(iget(116))
496 fld_info(cfld)%lvl=lvlsxml(l,iget(116))
502 datapd(i,j,cfld) = stc(ii,jj,l)
511 dtop = dtop + sldpth(ls)
513 dbot = dtop + sldpth(l)
514 if(grib==
'grib2')
then
516 fld_info(cfld)%ifld=iavblfld(iget(116))
517 fld_info(cfld)%lvl=lvlsxml(l,iget(116))
523 datapd(i,j,cfld) = stc(ii,jj,l)
533 IF (iget(117)>0)
THEN
534 IF (lvls(l,iget(117))>0)
THEN
535 IF(isf_surface_physics==3)
THEN
536 if(grib==
'grib2')
then
538 fld_info(cfld)%ifld=iavblfld(iget(117))
539 fld_info(cfld)%lvl=lvlsxml(l,iget(117))
545 datapd(i,j,cfld) = smc(ii,jj,l)
552 dtop = dtop + sldpth(ls)
554 dbot = dtop + sldpth(l)
555 if(grib==
'grib2')
then
557 fld_info(cfld)%ifld=iavblfld(iget(117))
558 fld_info(cfld)%lvl=lvlsxml(l,iget(117))
564 datapd(i,j,cfld) = smc(ii,jj,l)
572 IF (iget(225)>0)
THEN
573 IF (lvls(l,iget(225))>0)
THEN
574 IF(isf_surface_physics==3)
THEN
575 if(grib==
'grib2')
then
577 fld_info(cfld)%ifld=iavblfld(iget(225))
578 fld_info(cfld)%lvl=lvlsxml(l,iget(225))
584 datapd(i,j,cfld) = sh2o(ii,jj,l)
591 dtop = dtop + sldpth(ls)
593 dbot = dtop + sldpth(l)
594 if(grib==
'grib2')
then
596 fld_info(cfld)%ifld=iavblfld(iget(225))
597 fld_info(cfld)%lvl=lvlsxml(l,iget(225))
603 datapd(i,j,cfld) = sh2o(ii,jj,l)
614 IF (iget(115)>0.or.iget(571)>0)
THEN
616 if(grib==
'grib2')
then
618 fld_info(cfld)%ifld=iavblfld(iget(115))
624 datapd(i,j,cfld) = tg(ii,jj)
629 if(iget(571)>0.and.grib==
'grib2')
then
631 fld_info(cfld)%ifld=iavblfld(iget(571))
637 datapd(i,j,cfld) = tg(ii,jj)
644 IF (iget(171)>0)
THEN
648 IF(smstav(i,j) /= spval)
THEN
649 grid1(i,j) = smstav(i,j)*100.
655 if(grib==
'grib2')
then
657 fld_info(cfld)%ifld=iavblfld(iget(171))
663 datapd(i,j,cfld) = grid1(ii,jj)
670 IF (iget(036)>0)
THEN
674 IF(smstot(i,j)/=spval)
THEN
675 IF(sm(i,j) > small .AND. sice(i,j) < small)
THEN
678 grid1(i,j) = smstot(i,j)
685 if(grib==
'grib2')
then
687 fld_info(cfld)%ifld=iavblfld(iget(036))
693 datapd(i,j,cfld) = grid1(ii,jj)
700 IF ( iget(118)>0 )
THEN
701 IF(modelname ==
'RAPR')
THEN
705 IF(cmc(i,j) /= spval)
then
706 grid1(i,j) = cmc(i,j)
716 IF(cmc(i,j) /= spval)
then
717 grid1(i,j) = cmc(i,j)*1000.
724 if(grib==
'grib2')
then
726 fld_info(cfld)%ifld=iavblfld(iget(118))
732 datapd(i,j,cfld) = grid1(ii,jj)
739 IF ( iget(119)>0 )
THEN
741 if(grib==
'grib2')
then
743 fld_info(cfld)%ifld=iavblfld(iget(119))
749 datapd(i,j,cfld) = sno(ii,jj)
756 IF ( iget(500)>0 )
THEN
762 grid1(i,j) = snoavg(i,j)
763 if (snoavg(i,j) /= spval) grid1(i,j) = 100.*snoavg(i,j)
766 CALL bound(grid1,d00,h100)
770 ifincr = mod(ifhr,itsrfc)
771 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
776 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
782 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
784 IF (id(18)<0) id(18) = 0
785 if(grib==
'grib2')
then
787 fld_info(cfld)%ifld=iavblfld(iget(500))
789 fld_info(cfld)%ntrange=1
791 fld_info(cfld)%ntrange=0
793 fld_info(cfld)%tinvstat=ifhr-id(18)
801 datapd(i,j,cfld) = grid1(ii,jj)
808 IF ( iget(501)>0 )
THEN
818 if(grib==
'grib2')
then
820 fld_info(cfld)%ifld=iavblfld(iget(501))
821 fld_info(cfld)%ntrange=ifhr-id(18)
822 fld_info(cfld)%tinvstat=1
828 datapd(i,j,cfld) = psfcavg(ii,jj)
835 IF ( iget(502)>0 )
THEN
846 id(10) = mod(isvalue/256,256)
847 id(11) = mod(isvalue,256)
848 if(grib==
'grib2')
then
850 fld_info(cfld)%ifld=iavblfld(iget(502))
851 fld_info(cfld)%ntrange=ifhr-id(18)
852 fld_info(cfld)%tinvstat=1
858 datapd(i,j,cfld) = t10avg(ii,jj)
865 IF ( iget(244)>0 )
THEN
869 grid1(i,j) = snonc(i,j)
875 if (itprec /= 0)
then
876 ifincr = mod(ifhr,itprec)
877 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
884 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
890 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
892 IF (id(18)<0) id(18) = 0
894 if(grib==
'grib2')
then
896 fld_info(cfld)%ifld=iavblfld(iget(244))
897 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
902 IF ( iget(120)>0 )
THEN
907 IF ( sno(i,j) /= spval )
THEN
911 CALL snfrac(sneqv,iveg,sncovr)
912 grid1(i,j) = sncovr*100.
916 CALL bound(grid1,d00,h100)
917 if(grib==
'grib2')
then
919 fld_info(cfld)%ifld=iavblfld(iget(120))
925 datapd(i,j,cfld) = grid1(ii,jj)
931 IF ( iget(224)>0 )
THEN
939 IF(si(i,j) /= spval) grid1(i,j) = si(i,j)*0.001
943 if(grib==
'grib2')
then
945 fld_info(cfld)%ifld=iavblfld(iget(224))
951 datapd(i,j,cfld) = grid1(ii,jj)
957 IF ( iget(242)>0 )
THEN
958 if(grib==
'grib2')
then
960 fld_info(cfld)%ifld=iavblfld(iget(242))
966 datapd(i,j,cfld) = potevp(ii,jj)
972 IF ( iget(349)>0 )
THEN
973 if(grib==
'grib2')
then
975 fld_info(cfld)%ifld=iavblfld(iget(349))
981 datapd(i,j,cfld) = dzice(ii,jj)
989 IF (modelname ==
'NCAR'.OR. modelname ==
'NMM' &
990 .OR. modelname ==
'FV3R' .OR. modelname ==
'RAPR')
THEN
999 IF ( iget(228)>0 .OR. iget(229)>0 &
1000 .OR.iget(230)>0 .OR. iget(231)>0 &
1001 .OR.iget(232)>0 .OR. iget(233)>0)
THEN
1003 allocate(smcdry(ista:iend,jsta:jend), &
1004 smcmax(ista:iend,jsta:jend))
1011 IF( (modelname/=
'RAPR') .AND. (abs(sm(i,j)-0.) < 1.0e-5) .AND. &
1012 & (abs(sice(i,j)-0.) < 1.0e-5) )
THEN
1013 CALL etcalc(qwbs(i,j),potevp(i,j),sno(i,j),vegfrc(i,j) &
1014 & , isltyp(i,j),sh2o(i,j,1:1),cmc(i,j) &
1015 & , ecan(i,j),edir(i,j),etrans(i,j),esnow(i,j) &
1016 & , smcdry(i,j),smcmax(i,j) )
1028 IF ( iget(228)>0 )
THEN
1029 if(grib==
'grib2')
then
1031 fld_info(cfld)%ifld=iavblfld(iget(228))
1037 datapd(i,j,cfld) = ecan(ii,jj)
1043 IF ( iget(229)>0 )
THEN
1044 if(grib==
'grib2')
then
1046 fld_info(cfld)%ifld=iavblfld(iget(229))
1052 datapd(i,j,cfld) = edir(ii,jj)
1058 IF ( iget(230)>0 )
THEN
1059 if(grib==
'grib2')
then
1061 fld_info(cfld)%ifld=iavblfld(iget(230))
1062 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = etrans(ista:iend,jsta:jend)
1066 IF ( iget(231)>0 )
THEN
1067 if(grib==
'grib2')
then
1069 fld_info(cfld)%ifld=iavblfld(iget(231))
1070 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = esnow(ista:iend,jsta:jend)
1074 IF ( iget(232)>0 )
THEN
1075 if(grib==
'grib2')
then
1077 fld_info(cfld)%ifld=iavblfld(iget(232))
1083 datapd(i,j,cfld) = smcdry(ii,jj)
1089 IF ( iget(233)>0 )
THEN
1090 if(grib==
'grib2')
then
1092 fld_info(cfld)%ifld=iavblfld(iget(233))
1098 datapd(i,j,cfld) = smcmax(ii,jj)
1109 if (
allocated(smcdry))
deallocate(smcdry)
1110 if (
allocated(smcmax))
deallocate(smcmax)
1114 IF ( iget(512)>0 )
THEN
1115 if(grib==
'grib2')
then
1117 fld_info(cfld)%ifld=iavblfld(iget(512))
1123 datapd(i,j,cfld) = acond(ii,jj)
1129 IF ( iget(513)>0 )
THEN
1131 itsrfc = nint(tsrfc)
1132 IF(itsrfc /= 0)
then
1133 ifincr = mod(ifhr,itsrfc)
1134 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1139 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1142 id(18) = ifhr-itsrfc
1144 id(18) = ifhr-ifincr
1145 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1147 IF (id(18)<0) id(18) = 0
1148 if(grib==
'grib2')
then
1150 fld_info(cfld)%ifld=iavblfld(iget(513))
1152 fld_info(cfld)%ntrange=1
1154 fld_info(cfld)%ntrange=0
1156 fld_info(cfld)%tinvstat=ifhr-id(18)
1162 datapd(i,j,cfld) = avgecan(ii,jj)
1168 IF ( iget(514)>0 )
THEN
1170 itsrfc = nint(tsrfc)
1171 IF(itsrfc /= 0)
then
1172 ifincr = mod(ifhr,itsrfc)
1173 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1178 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1181 id(18) = ifhr-itsrfc
1183 id(18) = ifhr-ifincr
1184 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1186 IF (id(18)<0) id(18) = 0
1187 if(grib==
'grib2')
then
1189 fld_info(cfld)%ifld=iavblfld(iget(514))
1191 fld_info(cfld)%ntrange=1
1193 fld_info(cfld)%ntrange=0
1195 fld_info(cfld)%tinvstat=ifhr-id(18)
1201 datapd(i,j,cfld) = avgedir(ii,jj)
1207 IF ( iget(515)>0 )
THEN
1209 itsrfc = nint(tsrfc)
1210 IF(itsrfc /= 0)
then
1211 ifincr = mod(ifhr,itsrfc)
1212 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1217 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1220 id(18) = ifhr-itsrfc
1222 id(18) = ifhr-ifincr
1223 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1225 IF (id(18)<0) id(18) = 0
1226 if(grib==
'grib2')
then
1228 fld_info(cfld)%ifld=iavblfld(iget(515))
1230 fld_info(cfld)%ntrange=1
1232 fld_info(cfld)%ntrange=0
1234 fld_info(cfld)%tinvstat=ifhr-id(18)
1235 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = avgetrans(ista:iend,jsta:jend)
1239 IF ( iget(516)>0 )
THEN
1241 itsrfc = nint(tsrfc)
1242 IF(itsrfc /= 0)
then
1243 ifincr = mod(ifhr,itsrfc)
1244 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1249 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1252 id(18) = ifhr-itsrfc
1254 id(18) = ifhr-ifincr
1255 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1257 IF (id(18)<0) id(18) = 0
1258 if(grib==
'grib2')
then
1260 fld_info(cfld)%ifld=iavblfld(iget(516))
1262 fld_info(cfld)%ntrange=1
1264 fld_info(cfld)%ntrange=0
1266 fld_info(cfld)%tinvstat=ifhr-id(18)
1267 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = avgesnow(ista:iend,jsta:jend)
1271 IF ( iget(996)>0 )
THEN
1272 if(grib==
'grib2')
then
1274 fld_info(cfld)%ifld=iavblfld(iget(996))
1280 datapd(i,j,cfld) = landfrac(ii,jj)
1286 IF ( iget(997)>0 )
THEN
1287 if(grib==
'grib2')
then
1289 fld_info(cfld)%ifld=iavblfld(iget(997))
1295 datapd(i,j,cfld) = pahi(ii,jj)
1301 IF ( iget(998)>0 )
THEN
1302 if(grib==
'grib2')
then
1304 fld_info(cfld)%ifld=iavblfld(iget(998))
1310 datapd(i,j,cfld) = twa(ii,jj)
1316 IF ( iget(999)>0 )
THEN
1320 grid1(i,j) = tecan(i,j)
1324 itprec = nint(tprec)
1325 if (itprec /= 0)
then
1326 ifincr = mod(ifhr,itprec)
1327 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
1333 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1336 id(18) = ifhr-itprec
1338 id(18) = ifhr-ifincr
1339 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1341 IF (id(18)<0) id(18) = 0
1342 if(grib==
'grib2')
then
1344 fld_info(cfld)%ifld=iavblfld(iget(999))
1345 fld_info(cfld)%ntrange=1
1346 fld_info(cfld)%tinvstat=ifhr-id(18)
1352 datapd(i,j,cfld) = grid1(ii,jj)
1358 IF ( iget(1000)>0 )
THEN
1362 grid1(i,j) = tetran(i,j)
1366 itprec = nint(tprec)
1367 if (itprec /= 0)
then
1368 ifincr = mod(ifhr,itprec)
1369 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
1375 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1378 id(18) = ifhr-itprec
1380 id(18) = ifhr-ifincr
1381 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1383 IF (id(18)<0) id(18) = 0
1384 if(grib==
'grib2')
then
1386 fld_info(cfld)%ifld=iavblfld(iget(1000))
1387 fld_info(cfld)%ntrange=1
1388 fld_info(cfld)%tinvstat=ifhr-id(18)
1394 datapd(i,j,cfld) = grid1(ii,jj)
1400 IF ( iget(1001)>0 )
THEN
1404 grid1(i,j) = tedir(i,j)
1408 itprec = nint(tprec)
1409 if (itprec /= 0)
then
1410 ifincr = mod(ifhr,itprec)
1411 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
1417 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1420 id(18) = ifhr-itprec
1422 id(18) = ifhr-ifincr
1423 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1425 IF (id(18)<0) id(18) = 0
1426 if(grib==
'grib2')
then
1428 fld_info(cfld)%ifld=iavblfld(iget(1001))
1429 fld_info(cfld)%ntrange=1
1430 fld_info(cfld)%tinvstat=ifhr-id(18)
1436 datapd(i,j,cfld) = grid1(ii,jj)
1443 IF (iget(1002)>0)
THEN
1451 IF(paha(i,j)/=spval)
THEN
1452 grid1(i,j)=-1.*paha(i,j)*rrnum
1454 grid1(i,j)=paha(i,j)
1459 itsrfc = nint(tsrfc)
1460 IF(itsrfc /= 0)
then
1461 ifincr = mod(ifhr,itsrfc)
1462 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
1467 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1470 id(18) = ifhr-itsrfc
1472 id(18) = ifhr-ifincr
1473 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1475 IF (id(18)<0) id(18) = 0
1476 if(grib==
'grib2')
then
1478 fld_info(cfld)%ifld=iavblfld(iget(1002))
1480 fld_info(cfld)%ntrange=1
1482 fld_info(cfld)%ntrange=0
1484 fld_info(cfld)%tinvstat=ifhr-id(18)
1485 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1495 IF ( (iget(106)>0).OR.(iget(112)>0).OR. &
1496 (iget(113)>0).OR.(iget(114)>0).OR. &
1497 (iget(138)>0).OR.(iget(414)>0).OR. &
1498 (iget(546)>0).OR.(iget(547)>0).OR. &
1499 (iget(548)>0).OR.(iget(739)>0).OR. &
1502 if (.not.
allocated(psfc))
allocate(psfc(ista:iend,jsta:jend))
1505 IF(modelname ==
'NCAR' .OR. modelname==
'RSM'.OR. modelname==
'RAPR')
THEN
1508 tlow = t(i,j,nint(lmh(i,j)))
1509 psfc(i,j) = pint(i,j,nint(lmh(i,j))+1)
1510 pshltr(i,j) = psfc(i,j)*exp(-0.068283/tlow)
1521 IF (iget(106)>0)
THEN
1527 if(tshltr(i,j)/=spval)grid1(i,j)=tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa
1528 IF(grid1(i,j)<200)print*,
'ABNORMAL 2MT ',i,j, &
1529 tshltr(i,j),pshltr(i,j)
1535 if(grib==
'grib2')
then
1537 fld_info(cfld)%ifld=iavblfld(iget(106))
1538 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
1543 IF (iget(546)>0)
THEN
1550 if(grib==
'grib2')
then
1552 fld_info(cfld)%ifld=iavblfld(iget(546))
1553 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = tshltr(ista:iend,jsta:jend)
1558 IF (iget(112)>0)
THEN
1561 grid1(i,j) = qshltr(i,j)
1564 CALL bound(grid1,h1m12,h99999)
1565 if(grib==
'grib2')
then
1567 fld_info(cfld)%ifld=iavblfld(iget(112))
1568 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
1573 IF (iget(414)>0)
THEN
1576 grid1(i,j) = mrshltr(i,j)
1579 if(grib==
'grib2')
then
1581 fld_info(cfld)%ifld=iavblfld(iget(414))
1582 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1587 allocate(p1d(ista:iend,jsta:jend), t1d(ista:iend,jsta:jend))
1588 IF ((iget(113)>0) .OR.(iget(547)>0).OR.(iget(548)>0))
THEN
1595 qv = max(1.e-5,(qshltr(i,j)/(1.-qshltr(i,j))))
1596 e = pshltr(i,j)/100.*qv/(0.62197+qv)
1597 dwpt = (243.5*log(e)-440.8)/(19.48-log(e))+273.15
1605 IF(qshltr(i,j)<spval.and.pshltr(i,j)<spval)
THEN
1606 evp(i,j) = pshltr(i,j)*qshltr(i,j)/(eps+oneps*qshltr(i,j))
1607 evp(i,j) = evp(i,j)*d001
1613 CALL dewpoint(evp,egrid1(ista:iend,jsta:jend))
1616 IF (iget(113)>0)
THEN
1618 if(modelname==
'RAPR')
THEN
1622 t2=tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa
1623 if(qshltr(i,j)/=spval)grid1(i,j)=min(egrid1(i,j),t2)
1629 if(qshltr(i,j)/=spval) grid1(i,j) = egrid1(i,j)
1633 if(grib==
'grib2')
then
1635 fld_info(cfld)%ifld=iavblfld(iget(113))
1636 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1643 IF (iget(771)>0)
THEN
1646 evp(i,j)=p1d(i,j)*qvl1(i,j)/(eps+oneps*qvl1(i,j))
1647 evp(i,j)=evp(i,j)*d001
1650 CALL dewpoint(evp,egrid1(ista:iend,jsta:jend))
1656 if(qvl1(i,j)/=spval)grid1(i,j) = min(egrid1(i,j),t1d(i,j))
1659 if(grib==
'grib2')
then
1661 fld_info(cfld)%ifld=iavblfld(iget(771))
1662 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1668 IF ((iget(547)>0).OR.(iget(548)>0))
THEN
1673 if(tshltr(i,j)/=spval.and.pshltr(i,j)/=spval.and.qshltr(i,j)/=spval)
then
1675 grid1(i,j)=max(0.,tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa-egrid1(i,j))
1678 ape=(h10e5/pshltr(i,j))**capa
1679 grid2(i,j)=tshltr(i,j)*exp(elocp*qshltr(i,j)*ape/tshltr(i,j))
1688 IF (iget(547)>0)
THEN
1689 if(grib==
'grib2')
then
1691 fld_info(cfld)%ifld=iavblfld(iget(547))
1692 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1696 IF (iget(548)>0)
THEN
1697 if(grib==
'grib2')
then
1699 fld_info(cfld)%ifld=iavblfld(iget(548))
1700 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid2(ista:iend,jsta:jend)
1709 IF (iget(114) > 0 .OR. iget(808) > 0)
THEN
1710 allocate(q1d(ista:iend,jsta:jend))
1714 IF(modelname==
'RAPR')
THEN
1715 llmh = nint(lmh(i,j))
1717 p1d(i,j) = pmid(i,j,llmh)
1718 t1d(i,j) = t(i,j,llmh)
1720 p1d(i,j) = pshltr(i,j)
1721 t1d(i,j) = tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa
1723 q1d(i,j) = qshltr(i,j)
1727 CALL calrh(p1d,t1d,q1d,egrid1(ista:iend,jsta:jend))
1729 if (
allocated(q1d))
deallocate(q1d)
1733 if(qshltr(i,j) /= spval)
then
1734 grid1(i,j) = egrid1(i,j)*100.
1740 CALL bound(grid1,h1,h100)
1741 IF (iget(114) > 0)
THEN
1742 if(grib ==
'grib2')
then
1744 fld_info(cfld)%ifld = iavblfld(iget(114))
1750 datapd(i,j,cfld) = grid1(ii,jj)
1761 if(t1d(i,j)/=spval.and.u10h(i,j)/=spval.and.v10h(i,j)<spval)
then
1762 dum1 = (t1d(i,j)-tfrz)*1.8+32.
1763 dum2 = sqrt(u10h(i,j)**2.0+v10h(i,j)**2.0)/0.44704
1764 dum3 = egrid1(i,j) * 100.0
1767 IF(dum1 <= 50.)
THEN
1769 grid2(i,j) = 35.74 + 0.6215*dum1 &
1770 - 35.75*dum216 + 0.4275*dum1*dum216
1771 grid2(i,j) =(grid2(i,j)-32.)/1.8+tfrz
1772 ELSE IF(dum1 > 80.)
THEN
1775 grid2(i,j) = -42.379 + 2.04901523*dum1 &
1776 + 10.14333127*dum3 &
1777 - 0.22475541*dum1*dum3 &
1778 - 0.00683783*dum1s &
1779 - 0.05481717*dum3s &
1780 + 0.00122874*dum1s*dum3 &
1781 + 0.00085282*dum1*dum3s &
1782 - 0.00000199*dum1s*dum3s
1783 grid2(i,j) = (grid2(i,j)-32.)/1.8 + tfrz
1785 grid2(i,j) = t1d(i,j)
1793 if(grib ==
'grib2')
then
1795 fld_info(cfld)%ifld = iavblfld(iget(808))
1801 datapd(i,j,cfld) = grid2(ii,jj)
1810 if (
allocated(p1d))
deallocate (p1d)
1811 if (
allocated(t1d))
deallocate (t1d)
1814 IF (iget(138)>0)
THEN
1820 if(grib==
'grib2')
then
1822 fld_info(cfld)%ifld=iavblfld(iget(138))
1828 datapd(i,j,cfld) = pshltr(ii,jj)
1837 IF (iget(345)>0)
THEN
1844 tmaxmin = max(tmaxmin,1.)
1846 itmaxmin = int(tmaxmin)
1847 IF(itmaxmin /= 0)
then
1848 ifincr = mod(ifhr,itmaxmin)
1849 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
1854 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1857 id(18) = ifhr-itmaxmin
1859 id(18) = ifhr-ifincr
1860 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1862 IF (id(18)<0) id(18) = 0
1863 if(grib==
'grib2')
then
1865 fld_info(cfld)%ifld=iavblfld(iget(345))
1866 if(itmaxmin==0)
then
1867 fld_info(cfld)%ntrange=0
1869 fld_info(cfld)%ntrange=1
1871 fld_info(cfld)%tinvstat=ifhr-id(18)
1872 if(ifhr==0) fld_info(cfld)%tinvstat=0
1878 datapd(i,j,cfld) = maxtshltr(ii,jj)
1885 IF (iget(346)>0)
THEN
1893 itmaxmin = int(tmaxmin)
1894 IF(itmaxmin /= 0)
then
1895 ifincr = mod(ifhr,itmaxmin)
1896 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
1901 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1904 id(18) = ifhr-itmaxmin
1906 id(18) = ifhr-ifincr
1907 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1909 IF (id(18)<0) id(18) = 0
1910 if(grib==
'grib2')
then
1912 fld_info(cfld)%ifld=iavblfld(iget(346))
1913 if(itmaxmin==0)
then
1914 fld_info(cfld)%ntrange=0
1916 fld_info(cfld)%ntrange=1
1918 fld_info(cfld)%tinvstat=ifhr-id(18)
1919 if(ifhr==0) fld_info(cfld)%tinvstat=0
1925 datapd(i,j,cfld) = mintshltr(ii,jj)
1932 IF (iget(347)>0)
THEN
1936 if(maxrhshltr(i,j)/=spval) grid1(i,j)=maxrhshltr(i,j)*100.
1941 itmaxmin = int(tmaxmin)
1942 IF(itmaxmin /= 0)
then
1943 ifincr = mod(ifhr,itmaxmin)
1944 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
1949 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1952 id(18) = ifhr-itmaxmin
1954 id(18) = ifhr-ifincr
1955 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1957 IF (id(18)<0) id(18) = 0
1958 if(grib==
'grib2')
then
1960 fld_info(cfld)%ifld=iavblfld(iget(347))
1961 if(itmaxmin==0)
then
1962 fld_info(cfld)%ntrange=0
1966 fld_info(cfld)%ntrange=1
1969 fld_info(cfld)%tinvstat=ifhr-id(18)
1970 if(ifhr==0) fld_info(cfld)%tinvstat=0
1978 datapd(i,j,cfld) = grid1(ii,jj)
1985 IF (iget(348)>0)
THEN
1989 if(minrhshltr(i,j)/=spval) grid1(i,j)=minrhshltr(i,j)*100.
1994 itmaxmin = int(tmaxmin)
1995 IF(itmaxmin /= 0)
then
1996 ifincr = mod(ifhr,itmaxmin)
1997 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
2002 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2005 id(18) = ifhr-itmaxmin
2007 id(18) = ifhr-ifincr
2008 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2010 IF (id(18)<0) id(18) = 0
2011 if(grib==
'grib2')
then
2013 fld_info(cfld)%ifld=iavblfld(iget(348))
2014 if(itmaxmin==0)
then
2015 fld_info(cfld)%ntrange=0
2019 fld_info(cfld)%ntrange=1
2022 fld_info(cfld)%tinvstat=ifhr-id(18)
2023 if(ifhr==0) fld_info(cfld)%tinvstat=0
2029 datapd(i,j,cfld) = grid1(ii,jj)
2037 IF (iget(510)>0)
THEN
2039 itmaxmin = int(tmaxmin)
2040 IF(itmaxmin /= 0)
then
2041 ifincr = mod(ifhr,itmaxmin)
2042 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
2047 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2050 id(18) = ifhr-itmaxmin
2052 id(18) = ifhr-ifincr
2053 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2055 IF (id(18)<0) id(18) = 0
2056 if(grib==
'grib2')
then
2058 fld_info(cfld)%ifld=iavblfld(iget(510))
2059 if(itmaxmin==0)
then
2060 fld_info(cfld)%ntrange=0
2062 fld_info(cfld)%ntrange=1
2064 fld_info(cfld)%tinvstat=ifhr-id(18)
2070 datapd(i,j,cfld) = maxqshltr(ii,jj)
2077 IF (iget(511)>0)
THEN
2079 itmaxmin = int(tmaxmin)
2080 IF(itmaxmin /= 0)
then
2081 ifincr = mod(ifhr,itmaxmin)
2082 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itmaxmin*60)
2087 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2090 id(18) = ifhr-itmaxmin
2092 id(18) = ifhr-ifincr
2093 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2095 IF (id(18)<0) id(18) = 0
2096 if(grib==
'grib2')
then
2098 fld_info(cfld)%ifld=iavblfld(iget(511))
2099 if(itmaxmin==0)
then
2100 fld_info(cfld)%ntrange=0
2102 fld_info(cfld)%ntrange=1
2104 fld_info(cfld)%tinvstat=ifhr-id(18)
2110 datapd(i,j,cfld) = minqshltr(ii,jj)
2118 IF (iget(739)>0)
THEN
2122 if(t(i,j,lm)/=spval.and.pmid(i,j,lm)/=spval.and.smoke(i,j,lm,1)/=spval)&
2123 grid1(i,j) = (1./rd)*(pmid(i,j,lm)/t(i,j,lm))*smoke(i,j,lm,1)
2126 if(grib==
'grib2')
then
2128 fld_info(cfld)%ifld=iavblfld(iget(739))
2129 datapd(1:iend-ista+1,1:jend-jsta+1,cfld) = grid1(ista:iend,jsta:jend)
2135 IF ( (iget(064)>0).OR.(iget(065)>0).OR. &
2136 (iget(506)>0).OR.(iget(507)>0) )
THEN
2139 IF ((iget(064)>0).OR.(iget(065)>0))
THEN
2143 grid1(i,j) = u10(i,j)
2144 grid2(i,j) = v10(i,j)
2147 if(grib==
'grib2')
then
2149 fld_info(cfld)%ifld=iavblfld(iget(064))
2155 datapd(i,j,cfld) = grid1(ii,jj)
2159 fld_info(cfld)%ifld=iavblfld(iget(065))
2165 datapd(i,j,cfld) = grid2(ii,jj)
2171 IF (iget(730)>0)
THEN
2175 grid1(i,j)=spduv10mean(i,j)
2178 if(grib==
'grib2')
then
2181 fld_info(cfld)%ifld=iavblfld(iget(730))
2182 if(fld_info(cfld)%ntrange==0)
then
2183 if (ifhr==0 .and. ifmin==0)
then
2184 fld_info(cfld)%tinvstat=0
2186 fld_info(cfld)%tinvstat=ifincr
2188 fld_info(cfld)%ntrange=1
2190 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2195 IF (iget(731)>0)
THEN
2199 grid1(i,j)=u10mean(i,j)
2202 if(grib==
'grib2')
then
2204 fld_info(cfld)%ifld=iavblfld(iget(731))
2205 if(fld_info(cfld)%ntrange==0)
then
2206 if (ifhr==0 .and. ifmin==0)
then
2207 fld_info(cfld)%tinvstat=0
2209 fld_info(cfld)%tinvstat=ifincr
2211 fld_info(cfld)%ntrange=1
2213 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2217 IF (iget(732)>0)
THEN
2221 grid1(i,j)=v10mean(i,j)
2224 if(grib==
'grib2')
then
2226 fld_info(cfld)%ifld=iavblfld(iget(732))
2227 if(fld_info(cfld)%ntrange==0)
then
2228 if (ifhr==0 .and. ifmin==0)
then
2229 fld_info(cfld)%tinvstat=0
2231 fld_info(cfld)%tinvstat=ifincr
2233 fld_info(cfld)%ntrange=1
2235 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2239 IF (iget(733)>0 )
THEN
2243 grid1(i,j) = swradmean(i,j)
2246 if(grib==
'grib2')
then
2248 fld_info(cfld)%ifld=iavblfld(iget(733))
2249 if(fld_info(cfld)%ntrange==0)
then
2250 if (ifhr==0 .and. ifmin==0)
then
2251 fld_info(cfld)%tinvstat=0
2253 fld_info(cfld)%tinvstat=ifincr
2255 fld_info(cfld)%ntrange=1
2257 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2261 IF (iget(734)>0 )
THEN
2265 grid1(i,j) = swnormmean(i,j)
2268 if(grib==
'grib2')
then
2270 fld_info(cfld)%ifld=iavblfld(iget(734))
2271 if(fld_info(cfld)%ntrange==0)
then
2272 if (ifhr==0 .and. ifmin==0)
then
2273 fld_info(cfld)%tinvstat=0
2275 fld_info(cfld)%tinvstat=ifincr
2277 fld_info(cfld)%ntrange=1
2279 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2283 IF ((iget(506)>0).OR.(iget(507)>0))
THEN
2295 grid1(i,j) = u10max(i,j)
2296 grid2(i,j) = v10max(i,j)
2299 if(grib==
'grib2')
then
2301 fld_info(cfld)%ifld=iavblfld(iget(506))
2302 fld_info(cfld)%ntrange=ifhr-id(18)
2303 fld_info(cfld)%tinvstat=1
2309 datapd(i,j,cfld) = grid1(ii,jj)
2313 fld_info(cfld)%ifld=iavblfld(iget(507))
2314 fld_info(cfld)%ntrange=ifhr-id(18)
2315 fld_info(cfld)%tinvstat=1
2321 datapd(i,j,cfld) = grid2(ii,jj)
2331 IF (iget(158)>0)
THEN
2335 grid1(i,j)=th10(i,j)
2338 if(grib==
'grib2')
then
2340 fld_info(cfld)%ifld=iavblfld(iget(158))
2346 datapd(i,j,cfld) = grid1(ii,jj)
2354 IF (iget(505)>0)
THEN
2358 grid1(i,j)=t10m(i,j)
2361 if(grib==
'grib2')
then
2363 fld_info(cfld)%ifld=iavblfld(iget(505))
2369 datapd(i,j,cfld) = grid1(ii,jj)
2377 IF (iget(159)>0)
THEN
2381 grid1(i,j) = q10(i,j)
2384 if(grib==
'grib2')
then
2386 fld_info(cfld)%ifld=iavblfld(iget(159))
2392 datapd(i,j,cfld) = grid1(ii,jj)
2402 IF (iget(422)>0)
THEN
2406 grid1(i,j) = wspd10max(i,j)
2409 if(grib==
'grib2')
then
2411 fld_info(cfld)%ifld=iavblfld(iget(422))
2413 fld_info(cfld)%tinvstat=0
2415 fld_info(cfld)%tinvstat=1
2417 fld_info(cfld)%ntrange=1
2423 datapd(i,j,cfld) = grid1(ii,jj)
2431 IF (iget(783)>0)
THEN
2435 grid1(i,j) = wspd10umax(i,j)
2438 if(grib==
'grib2')
then
2440 fld_info(cfld)%ifld=iavblfld(iget(783))
2442 fld_info(cfld)%tinvstat=0
2444 fld_info(cfld)%tinvstat=1
2446 fld_info(cfld)%ntrange=1
2452 datapd(i,j,cfld) = grid1(ii,jj)
2460 IF (iget(784)>0)
THEN
2464 grid1(i,j) = wspd10vmax(i,j)
2467 if(grib==
'grib2')
then
2469 fld_info(cfld)%ifld=iavblfld(iget(784))
2471 fld_info(cfld)%tinvstat=0
2473 fld_info(cfld)%tinvstat=1
2475 fld_info(cfld)%ntrange=1
2481 datapd(i,j,cfld) = grid1(i,jj)
2493 IF (iget(588)>0)
THEN
2495 CALL calvessel(iceg(ista:iend,jsta:jend))
2499 grid1(i,j) = iceg(i,j)
2503 if(grib==
'grib2')
then
2505 fld_info(cfld)%ifld=iavblfld(iget(588))
2507 fld_info(cfld)%tinvstat=0
2509 fld_info(cfld)%tinvstat=1
2511 fld_info(cfld)%ntrange=1
2518 datapd(i,j,cfld) = grid1(ii,jj)
2541 IF (iget(172)>0)
THEN
2545 IF (prec(i,j) <= pthresh .OR. sr(i,j)==spval)
THEN
2548 grid1(i,j) = sr(i,j)*100.
2552 if(grib==
'grib2')
then
2554 fld_info(cfld)%ifld=iavblfld(iget(172))
2560 datapd(i,j,cfld) = grid1(ii,jj)
2568 IF (iget(249)>0)
THEN
2575 if(cprate(i,j)/=spval) grid1(i,j) = cprate(i,j)*rdtphs
2579 if(grib==
'grib2')
then
2581 fld_info(cfld)%ifld=iavblfld(iget(249))
2587 datapd(i,j,cfld) = grid1(ii,jj)
2594 IF (iget(167)>0)
THEN
2602 if(prec(i,j)/=spval)
then
2603 IF(modelname /=
'RSM')
THEN
2604 grid1(i,j) = prec(i,j)*rdtphs*1000.
2606 grid1(i,j) = prec(i,j)
2611 if(grib==
'grib2')
then
2613 fld_info(cfld)%ifld=iavblfld(iget(167))
2619 datapd(i,j,cfld) = grid1(ii,jj)
2626 IF (iget(508)>0)
THEN
2631 if(prate_max(i,j)/=spval) grid1(i,j)=prate_max(i,j)*sec2hr
2634 if(grib==
'grib2')
then
2636 fld_info(cfld)%ifld=iavblfld(iget(508))
2637 fld_info(cfld)%lvl=lvlsxml(1,iget(508))
2638 fld_info(cfld)%tinvstat=1
2640 fld_info(cfld)%ntrange=1
2642 fld_info(cfld)%ntrange=0
2649 datapd(i,j,cfld) = grid1(ii,jj)
2656 IF (iget(509)>0)
THEN
2661 if(fprate_max(i,j)/=spval) grid1(i,j)=fprate_max(i,j)*sec2hr
2664 if(grib==
'grib2')
then
2666 fld_info(cfld)%ifld=iavblfld(iget(509))
2667 fld_info(cfld)%lvl=lvlsxml(1,iget(509))
2668 fld_info(cfld)%tinvstat=1
2670 fld_info(cfld)%ntrange=1
2672 fld_info(cfld)%ntrange=0
2679 datapd(i,j,cfld) = grid1(ii,jj)
2686 IF (iget(272)>0)
THEN
2689 itprec = nint(tprec)
2691 if (itprec /= 0)
then
2692 ifincr = mod(ifhr,itprec)
2693 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2700 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2703 id(18) = ifhr-itprec
2705 id(18) = ifhr-ifincr
2706 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2708 IF (id(18)<0) id(18) = 0
2713 if(avgcprate(i,j)/=spval) grid1(i,j) = avgcprate(i,j)*rdtphs
2720 if(grib==
'grib2')
then
2722 fld_info(cfld)%ifld=iavblfld(iget(272))
2725 fld_info(cfld)%ntrange=0
2727 fld_info(cfld)%ntrange=1
2729 fld_info(cfld)%tinvstat=ifhr-id(18)
2736 datapd(i,j,cfld) = grid1(ii,jj)
2743 IF (iget(271)>0)
THEN
2747 itprec = nint(tprec)
2749 if (itprec /= 0)
then
2750 ifincr = mod(ifhr,itprec)
2751 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2758 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2761 id(18) = ifhr-itprec
2763 id(18) = ifhr-ifincr
2764 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2766 IF (id(18)<0) id(18) = 0
2771 if(avgprec(i,j)/=spval) grid1(i,j) = avgprec(i,j)*rdtphs
2775 if(grib==
'grib2')
then
2777 fld_info(cfld)%ifld=iavblfld(iget(271))
2780 fld_info(cfld)%ntrange=0
2782 fld_info(cfld)%ntrange=1
2784 fld_info(cfld)%tinvstat=ifhr-id(18)
2791 datapd(i,j,cfld) = grid1(ii,jj)
2798 IF (iget(087)>0)
THEN
2800 itprec = nint(tprec)
2802 if (itprec /= 0)
then
2803 ifincr = mod(ifhr,itprec)
2804 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2811 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2814 id(18) = ifhr-itprec
2816 id(18) = ifhr-ifincr
2817 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2819 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
2823 IF(avgprec(i,j) < spval)
THEN
2824 grid1(i,j) = avgprec(i,j)*float(id(19)-id(18))*3600.*1000./dtq2
2844 IF(acprec(i,j) < spval)
THEN
2845 grid1(i,j) = acprec(i,j)*1000.
2857 IF (id(18)<0) id(18) = 0
2859 if(grib==
'grib2')
then
2861 fld_info(cfld)%ifld=iavblfld(iget(087))
2862 fld_info(cfld)%ntrange=1
2863 fld_info(cfld)%tinvstat=ifhr-id(18)
2870 datapd(i,j,cfld) = grid1(ii,jj)
2892 IF (iget(417)>0)
THEN
2894 itprec = nint(tprec)
2896 if (itprec /= 0)
then
2897 ifincr = mod(ifhr,itprec)
2898 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2905 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2908 id(18) = ifhr-itprec
2910 id(18) = ifhr-ifincr
2911 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2913 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
2918 IF(avgprec_cont(i,j) < spval)
THEN
2919 grid2(i,j) = avgprec_cont(i,j)*float(ifhr)*3600.*1000./dtq2
2926 IF (id(18)<0) id(18) = 0
2927 if(grib==
'grib2')
then
2929 if(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
2931 fld_info(cfld)%ifld=iavblfld(iget(417))
2932 fld_info(cfld)%ntrange=1
2933 fld_info(cfld)%tinvstat=ifhr
2940 datapd(i,j,cfld) = grid2(ii,jj)
2948 IF (iget(033)>0)
THEN
2950 itprec = nint(tprec)
2952 if (itprec /= 0)
then
2953 ifincr = mod(ifhr,itprec)
2954 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
2961 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2964 id(18) = ifhr-itprec
2966 id(18) = ifhr-ifincr
2967 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2969 IF (id(18)<0) id(18) = 0
2970 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
2974 IF(avgcprate(i,j) < spval)
THEN
2975 grid1(i,j) = avgcprate(i,j)* &
2976 float(id(19)-id(18))*3600.*1000./dtq2
2996 IF(cuprec(i,j) < spval)
THEN
2997 grid1(i,j) = cuprec(i,j)*1000.
3005 if(grib==
'grib2')
then
3007 fld_info(cfld)%ifld=iavblfld(iget(033))
3008 fld_info(cfld)%ntrange=1
3009 fld_info(cfld)%tinvstat=ifhr-id(18)
3015 datapd(i,j,cfld) = grid1(ii,jj)
3035 IF (iget(418)>0)
THEN
3037 itprec = nint(tprec)
3039 if (itprec /= 0)
then
3040 ifincr = mod(ifhr,itprec)
3041 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3048 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3051 id(18) = ifhr-itprec
3053 id(18) = ifhr-ifincr
3054 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3056 IF (id(18)<0) id(18) = 0
3057 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
3062 IF(avgcprate_cont(i,j) < spval)
THEN
3063 grid2(i,j) = avgcprate_cont(i,j)*float(ifhr)*3600.*1000./dtq2
3071 if(grib==
'grib2')
then
3073 if(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
3075 fld_info(cfld)%ifld=iavblfld(iget(418))
3076 fld_info(cfld)%ntrange=1
3077 fld_info(cfld)%tinvstat=ifhr
3083 datapd(i,j,cfld) = grid2(ii,jj)
3091 IF (iget(034)>0)
THEN
3094 itprec = nint(tprec)
3096 if (itprec /= 0)
then
3097 ifincr = mod(ifhr,itprec)
3098 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3105 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3108 id(18) = ifhr-itprec
3110 id(18) = ifhr-ifincr
3111 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3113 IF (id(18)<0) id(18) = 0
3114 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
3118 IF(avgcprate(i,j) < spval .AND. avgprec(i,j) < spval)
then
3119 grid1(i,j) = ( avgprec(i,j) - avgcprate(i,j) ) * &
3120 float(id(19)-id(18))*3600.*1000./dtq2
3141 grid1(i,j) = ancprc(i,j)*1000.
3146 if(grib==
'grib2')
then
3148 fld_info(cfld)%ifld=iavblfld(iget(034))
3149 fld_info(cfld)%ntrange=1
3150 fld_info(cfld)%tinvstat=ifhr-id(18)
3156 datapd(i,j,cfld) = grid1(ii,jj)
3177 IF (iget(419)>0)
THEN
3179 itprec = nint(tprec)
3181 if (itprec /= 0)
then
3182 ifincr = mod(ifhr,itprec)
3183 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3190 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3193 id(18) = ifhr-itprec
3195 id(18) = ifhr-ifincr
3196 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3198 IF (id(18)<0) id(18) = 0
3199 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
3204 IF(avgcprate_cont(i,j) < spval .AND. avgprec_cont(i,j) < spval)
THEN
3205 grid2(i,j) = (avgprec_cont(i,j) - avgcprate_cont(i,j)) &
3206 *float(ifhr)*3600.*1000./dtq2
3214 if(grib==
'grib2')
then
3216 if(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
3218 fld_info(cfld)%ifld=iavblfld(iget(419))
3219 fld_info(cfld)%ntrange=1
3220 fld_info(cfld)%tinvstat=ifhr
3226 datapd(i,j,cfld) = grid2(ii,jj)
3234 IF (iget(256)>0)
THEN
3239 IF(lspa(i,j)<=-1.0e-6)
THEN
3240 if(acprec(i,j)/=spval) grid1(i,j) = acprec(i,j)*1000
3242 if(lspa(i,j)/=spval) grid1(i,j) = lspa(i,j)*1000.
3247 itprec = nint(tprec)
3249 if (itprec /= 0)
then
3250 ifincr = mod(ifhr,itprec)
3251 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3258 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3261 id(18) = ifhr-itprec
3263 id(18) = ifhr-ifincr
3264 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3266 IF (id(18)<0) id(18) = 0
3268 if(grib==
'grib2')
then
3270 fld_info(cfld)%ifld=iavblfld(iget(256))
3271 fld_info(cfld)%ntrange=1
3272 fld_info(cfld)%tinvstat=ifhr-id(18)
3278 datapd(i,j,cfld) = grid1(ii,jj)
3285 IF (iget(035)>0)
THEN
3290 grid1(i,j) = acsnow(i,j)
3294 itprec = nint(tprec)
3296 if (itprec /= 0)
then
3297 ifincr = mod(ifhr,itprec)
3298 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3305 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3308 id(18) = ifhr-itprec
3310 id(18) = ifhr-ifincr
3311 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3313 IF (id(18)<0) id(18) = 0
3314 if(grib==
'grib2')
then
3316 fld_info(cfld)%ifld=iavblfld(iget(035))
3317 fld_info(cfld)%ntrange=1
3318 fld_info(cfld)%tinvstat=ifhr-id(18)
3324 datapd(i,j,cfld) = grid1(ii,jj)
3331 IF (iget(746)>0)
THEN
3335 grid1(i,j) = acgraup(i,j)
3339 itprec = nint(tprec)
3341 if (itprec /= 0)
then
3342 ifincr = mod(ifhr,itprec)
3343 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3350 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3353 id(18) = ifhr-itprec
3355 id(18) = ifhr-ifincr
3356 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3358 IF (id(18)<0) id(18) = 0
3359 if(grib==
'grib2')
then
3361 fld_info(cfld)%ifld=iavblfld(iget(746))
3362 fld_info(cfld)%ntrange=1
3363 fld_info(cfld)%tinvstat=ifhr-id(18)
3369 datapd(i,j,cfld) = grid1(ii,jj)
3376 IF (iget(782)>0)
THEN
3380 grid1(i,j) = acfrain(i,j)
3384 itprec = nint(tprec)
3386 if (itprec /= 0)
then
3387 ifincr = mod(ifhr,itprec)
3388 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3395 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3398 id(18) = ifhr-itprec
3400 id(18) = ifhr-ifincr
3401 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3403 IF (id(18)<0) id(18) = 0
3404 if(grib==
'grib2')
then
3406 fld_info(cfld)%ifld=iavblfld(iget(782))
3407 fld_info(cfld)%ntrange=1
3408 fld_info(cfld)%tinvstat=ifhr-id(18)
3414 datapd(i,j,cfld) = grid1(ii,jj)
3421 IF (iget(121)>0)
THEN
3426 grid1(i,j) = acsnom(i,j)
3430 itprec = nint(tprec)
3432 if (itprec /= 0)
then
3433 ifincr = mod(ifhr,itprec)
3434 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3441 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3444 id(18) = ifhr-itprec
3446 id(18) = ifhr-ifincr
3447 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3449 IF (id(18)<0) id(18) = 0
3450 if(grib==
'grib2')
then
3452 fld_info(cfld)%ifld=iavblfld(iget(121))
3453 fld_info(cfld)%ntrange=1
3454 fld_info(cfld)%tinvstat=ifhr-id(18)
3460 datapd(i,j,cfld) = grid1(ii,jj)
3467 IF (iget(405)>0)
THEN
3471 grid1(i,j) = snowfall(i,j)
3475 itprec = nint(tprec)
3477 if (itprec /= 0)
then
3478 ifincr = mod(ifhr,itprec)
3479 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3486 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3489 id(18) = ifhr-itprec
3491 id(18) = ifhr-ifincr
3492 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3494 IF (id(18)<0) id(18) = 0
3495 IF(itprec < 0)id(1:25)=0
3496 if(grib==
'grib2')
then
3498 fld_info(cfld)%ifld=iavblfld(iget(405))
3499 fld_info(cfld)%ntrange=1
3500 fld_info(cfld)%tinvstat=ifhr-id(18)
3506 datapd(i,j,cfld) = grid1(ii,jj)
3513 IF (iget(122)>0)
THEN
3518 grid1(i,j) = ssroff(i,j)
3522 itprec = nint(tprec)
3524 if (itprec /= 0)
then
3525 ifincr = mod(ifhr,itprec)
3526 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3533 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3536 id(18) = ifhr-itprec
3538 id(18) = ifhr-ifincr
3539 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3541 IF (id(18)<0) id(18) = 0
3543 IF (modelname==
'RAPR')
THEN
3550 if(grib==
'grib2')
then
3552 fld_info(cfld)%ifld=iavblfld(iget(122))
3553 fld_info(cfld)%ntrange=1
3554 fld_info(cfld)%tinvstat=ifhr-id(18)
3560 datapd(i,j,cfld) = grid1(ii,jj)
3567 IF (iget(123)>0)
THEN
3572 grid1(i,j) = bgroff(i,j)
3576 itprec = nint(tprec)
3578 if (itprec /= 0)
then
3579 ifincr = mod(ifhr,itprec)
3580 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3587 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3590 id(18) = ifhr-itprec
3592 id(18) = ifhr-ifincr
3593 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3595 IF (id(18)<0) id(18) = 0
3597 IF (modelname==
'RAPR')
THEN
3604 if(grib==
'grib2')
then
3606 fld_info(cfld)%ifld=iavblfld(iget(123))
3607 fld_info(cfld)%ntrange=1
3608 fld_info(cfld)%tinvstat=ifhr-id(18)
3614 datapd(i,j,cfld) = grid1(ii,jj)
3621 IF (iget(343)>0)
THEN
3625 grid1(i,j) = runoff(i,j)
3629 itprec = nint(tprec)
3632 if(modelname ==
'GFS')itprec=nint(tmaxmin)
3634 if (itprec /= 0)
then
3635 ifincr = mod(ifhr,itprec)
3636 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3643 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3646 id(18) = ifhr-itprec
3648 id(18) = ifhr-ifincr
3649 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3651 IF (id(18)<0) id(18) = 0
3652 if(grib==
'grib2')
then
3654 fld_info(cfld)%ifld=iavblfld(iget(343))
3655 fld_info(cfld)%ntrange=1
3656 fld_info(cfld)%tinvstat=ifhr-id(18)
3662 datapd(i,j,cfld) = grid1(ii,jj)
3670 IF (iget(434)>0.)
THEN
3677 grid1(i,j) = pcp_bucket(i,j)
3682 itprec = nint(tprec)
3684 if (itprec /= 0)
then
3685 ifincr = mod(ifhr,itprec)
3686 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3691 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
3694 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3697 id(18) = ifhr-itprec
3699 id(18) = ifhr-ifincr
3700 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3702 IF (id(18)<0) id(18) = 0
3703 if(grib==
'grib2')
then
3705 fld_info(cfld)%ifld=iavblfld(iget(434))
3707 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
3709 fld_info(cfld)%ntrange=0
3711 fld_info(cfld)%tinvstat=itprec
3712 if(fld_info(cfld)%ntrange==0)
then
3714 fld_info(cfld)%tinvstat=0
3716 fld_info(cfld)%tinvstat=1
3718 fld_info(cfld)%ntrange=1
3725 datapd(i,j,cfld) = grid1(ii,jj)
3733 IF (iget(435)>0.)
THEN
3740 grid1(i,j) = rainc_bucket(i,j)
3745 itprec = nint(tprec)
3747 if (itprec /= 0)
then
3748 ifincr = mod(ifhr,itprec)
3749 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3754 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
3758 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3761 id(18) = ifhr-itprec
3763 id(18) = ifhr-ifincr
3764 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3766 IF (id(18)<0) id(18) = 0
3769 if(debugprint .and. me==0)
then
3770 print *,
'PREC_ACC_DT,ID(18),ID(19)',prec_acc_dt,id(18),id(19)
3773 if(grib==
'grib2')
then
3775 fld_info(cfld)%ifld=iavblfld(iget(435))
3777 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
3779 fld_info(cfld)%ntrange=0
3781 fld_info(cfld)%tinvstat=itprec
3782 if(fld_info(cfld)%ntrange==0)
then
3784 fld_info(cfld)%tinvstat=0
3786 fld_info(cfld)%tinvstat=1
3788 fld_info(cfld)%ntrange=1
3795 datapd(i,j,cfld) = grid1(ii,jj)
3802 IF (iget(436)>0.)
THEN
3809 grid1(i,j) = rainnc_bucket(i,j)
3814 itprec = nint(tprec)
3816 if (itprec /= 0)
then
3817 ifincr = mod(ifhr,itprec)
3818 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3823 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
3826 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3829 id(18) = ifhr-itprec
3831 id(18) = ifhr-ifincr
3832 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3834 IF (id(18)<0) id(18) = 0
3835 if(grib==
'grib2')
then
3837 fld_info(cfld)%ifld=iavblfld(iget(436))
3839 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
3841 fld_info(cfld)%ntrange=0
3843 fld_info(cfld)%tinvstat=itprec
3844 if(fld_info(cfld)%ntrange==0)
then
3846 fld_info(cfld)%tinvstat=0
3848 fld_info(cfld)%tinvstat=1
3850 fld_info(cfld)%ntrange=1
3857 datapd(i,j,cfld) = grid1(ii,jj)
3864 IF (iget(437)>0.)
THEN
3868 grid1(i,j) = snow_bucket(i,j)
3872 itprec = nint(tprec)
3874 if (itprec /= 0)
then
3875 ifincr = mod(ifhr,itprec)
3876 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3881 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
3884 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3887 id(18) = ifhr-itprec
3889 id(18) = ifhr-ifincr
3890 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3892 IF (id(18)<0) id(18) = 0
3894 if(grib==
'grib2')
then
3896 fld_info(cfld)%ifld=iavblfld(iget(437))
3898 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
3900 fld_info(cfld)%ntrange=0
3902 fld_info(cfld)%tinvstat=itprec
3903 if(fld_info(cfld)%ntrange==0)
then
3905 fld_info(cfld)%tinvstat=0
3907 fld_info(cfld)%tinvstat=1
3909 fld_info(cfld)%ntrange=1
3916 datapd(i,j,cfld) = grid1(ii,jj)
3923 IF (iget(775)>0.)
THEN
3927 grid1(i,j) = graup_bucket(i,j)
3931 itprec = nint(tprec)
3933 if (itprec /= 0)
then
3934 ifincr = mod(ifhr,itprec)
3935 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
3940 if(modelname==
'NCAR' .OR. modelname==
'RAPR') ifincr = nint(prec_acc_dt)/60
3943 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3946 id(18) = ifhr-itprec
3948 id(18) = ifhr-ifincr
3949 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3951 IF (id(18)<0) id(18) = 0
3953 if(grib==
'grib2')
then
3955 fld_info(cfld)%ifld=iavblfld(iget(775))
3957 fld_info(cfld)%ntrange=(ifhr-id(18))/itprec
3959 fld_info(cfld)%ntrange=0
3961 fld_info(cfld)%tinvstat=itprec
3962 if(fld_info(cfld)%ntrange==0)
then
3964 fld_info(cfld)%tinvstat=0
3966 fld_info(cfld)%tinvstat=1
3968 fld_info(cfld)%ntrange=1
3975 datapd(i,j,cfld) = grid1(ii,jj)
3983 IF (iget(913).GT.0)
THEN
3984 ffgfile=
'ffg_01h.grib2'
3985 call qpf_comp(913,ffgfile,1)
3987 IF (iget(914).GT.0)
THEN
3988 IF (ifhr .EQ. 1)
THEN
3989 ffgfile=
'ffg_01h.grib2'
3990 call qpf_comp(914,ffgfile,1)
3991 ELSEIF (ifhr .EQ. 3)
THEN
3992 ffgfile=
'ffg_03h.grib2'
3993 call qpf_comp(914,ffgfile,3)
3994 ELSEIF (ifhr .EQ. 6)
THEN
3995 ffgfile=
'ffg_06h.grib2'
3996 call qpf_comp(914,ffgfile,6)
3997 ELSEIF (ifhr .EQ. 12)
THEN
3998 ffgfile=
'ffg_12h.grib2'
3999 call qpf_comp(914,ffgfile,12)
4001 ffgfile=
'ffg_01h.grib2'
4002 call qpf_comp(914,ffgfile,0)
4009 IF (iget(915).GT.0)
THEN
4010 arifile=
'ari2y_01h.grib2'
4011 call qpf_comp(915,arifile,1)
4013 IF (iget(916).GT.0)
THEN
4014 IF (ifhr .EQ. 1)
THEN
4015 arifile=
'ari2y_01h.grib2'
4016 call qpf_comp(916,arifile,1)
4017 ELSEIF (ifhr .EQ. 3)
THEN
4018 arifile=
'ari2y_03h.grib2'
4019 call qpf_comp(916,arifile,3)
4020 ELSEIF (ifhr .EQ. 6)
THEN
4021 arifile=
'ari2y_06h.grib2'
4022 call qpf_comp(916,arifile,6)
4023 ELSEIF (ifhr .EQ. 12)
THEN
4024 arifile=
'ari2y_12h.grib2'
4025 call qpf_comp(916,arifile,12)
4026 ELSEIF (ifhr .EQ. 24)
THEN
4027 arifile=
'ari2y_24h.grib2'
4028 call qpf_comp(916,arifile,24)
4030 arifile=
'ari2y_01h.grib2'
4031 call qpf_comp(916,arifile,0)
4035 IF (iget(917).GT.0)
THEN
4036 arifile=
'ari5y_01h.grib2'
4037 call qpf_comp(917,arifile,1)
4039 IF (iget(918).GT.0)
THEN
4040 IF (ifhr .EQ. 1)
THEN
4041 arifile=
'ari5y_01h.grib2'
4042 call qpf_comp(918,arifile,1)
4043 ELSEIF (ifhr .EQ. 3)
THEN
4044 arifile=
'ari5y_03h.grib2'
4045 call qpf_comp(918,arifile,3)
4046 ELSEIF (ifhr .EQ. 6)
THEN
4047 arifile=
'ari5y_06h.grib2'
4048 call qpf_comp(918,arifile,6)
4049 ELSEIF (ifhr .EQ. 12)
THEN
4050 arifile=
'ari5y_12h.grib2'
4051 call qpf_comp(918,arifile,12)
4052 ELSEIF (ifhr .EQ. 24)
THEN
4053 arifile=
'ari5y_24h.grib2'
4054 call qpf_comp(918,arifile,24)
4056 arifile=
'ari5y_01h.grib2'
4057 call qpf_comp(918,arifile,0)
4061 IF (iget(919).GT.0)
THEN
4062 arifile=
'ari10y_01h.grib2'
4063 call qpf_comp(919,arifile,1)
4065 IF (iget(920).GT.0)
THEN
4066 IF (ifhr .EQ. 1)
THEN
4067 arifile=
'ari10y_01h.grib2'
4068 call qpf_comp(920,arifile,1)
4069 ELSEIF (ifhr .EQ. 3)
THEN
4070 arifile=
'ari10y_03h.grib2'
4071 call qpf_comp(920,arifile,3)
4072 ELSEIF (ifhr .EQ. 6)
THEN
4073 arifile=
'ari10y_06h.grib2'
4074 call qpf_comp(920,arifile,6)
4075 ELSEIF (ifhr .EQ. 12)
THEN
4076 arifile=
'ari10y_12h.grib2'
4077 call qpf_comp(920,arifile,12)
4078 ELSEIF (ifhr .EQ. 24)
THEN
4079 arifile=
'ari10y_24h.grib2'
4080 call qpf_comp(920,arifile,24)
4082 arifile=
'ari10y_01h.grib2'
4083 call qpf_comp(920,arifile,0)
4087 IF (iget(921).GT.0)
THEN
4088 arifile=
'ari100y_01h.grib2'
4089 call qpf_comp(921,arifile,1)
4091 IF (iget(922).GT.0)
THEN
4092 IF (ifhr .EQ. 1)
THEN
4093 arifile=
'ari100y_01h.grib2'
4094 call qpf_comp(922,arifile,1)
4095 ELSEIF (ifhr .EQ. 3)
THEN
4096 arifile=
'ari100y_03h.grib2'
4097 call qpf_comp(922,arifile,3)
4098 ELSEIF (ifhr .EQ. 6)
THEN
4099 arifile=
'ari100y_06h.grib2'
4100 call qpf_comp(922,arifile,6)
4101 ELSEIF (ifhr .EQ. 12)
THEN
4102 arifile=
'ari100y_12h.grib2'
4103 call qpf_comp(922,arifile,12)
4104 ELSEIF (ifhr .EQ. 24)
THEN
4105 arifile=
'ari100y_24h.grib2'
4106 call qpf_comp(922,arifile,24)
4108 arifile=
'ari100y_01h.grib2'
4109 call qpf_comp(922,arifile,0)
4116 IF (iget(526)>0.)
THEN
4120 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4123 grid1(i,j) = pcp_bucket1(i,j)
4127 ifincr = nint(prec_acc_dt1)
4128 if(grib==
'grib2')
then
4130 fld_info(cfld)%ifld=iavblfld(iget(518))
4131 if(fld_info(cfld)%ntrange==0)
then
4132 if (ifhr==0 .and. ifmin==0)
then
4133 fld_info(cfld)%tinvstat=0
4135 fld_info(cfld)%tinvstat=ifincr
4137 fld_info(cfld)%ntrange=1
4144 datapd(i,j,cfld) = grid1(ii,jj)
4150 IF (iget(527)>0.)
THEN
4154 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4157 grid1(i,j) = rainc_bucket1(i,j)
4161 ifincr = nint(prec_acc_dt1)
4162 if(grib==
'grib2')
then
4164 fld_info(cfld)%ifld=iavblfld(iget(519))
4165 if(fld_info(cfld)%ntrange==0)
then
4166 if (ifhr==0 .and. ifmin==0)
then
4167 fld_info(cfld)%tinvstat=0
4169 fld_info(cfld)%tinvstat=ifincr
4171 fld_info(cfld)%ntrange=1
4178 datapd(i,j,cfld) = grid1(ii,jj)
4184 IF (iget(528)>0.)
THEN
4188 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4191 grid1(i,j) = rainnc_bucket1(i,j)
4195 ifincr = nint(prec_acc_dt1)
4196 if(grib==
'grib2')
then
4198 fld_info(cfld)%ifld=iavblfld(iget(520))
4199 if(fld_info(cfld)%ntrange==0)
then
4200 if (ifhr==0 .and. ifmin==0)
then
4201 fld_info(cfld)%tinvstat=0
4203 fld_info(cfld)%tinvstat=ifincr
4205 fld_info(cfld)%ntrange=1
4212 datapd(i,j,cfld) = grid1(ii,jj)
4218 IF (iget(529)>0.)
THEN
4222 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4225 grid1(i,j) = snow_bucket1(i,j)
4229 ifincr = nint(prec_acc_dt1)
4231 if(grib==
'grib2')
then
4233 fld_info(cfld)%ifld=iavblfld(iget(521))
4234 if(fld_info(cfld)%ntrange==0)
then
4235 if (ifhr==0 .and. ifmin==0)
then
4236 fld_info(cfld)%tinvstat=0
4238 fld_info(cfld)%tinvstat=ifincr
4240 fld_info(cfld)%ntrange=1
4247 datapd(i,j,cfld) = grid1(ii,jj)
4253 IF (iget(530)>0.)
THEN
4257 IF (ifhr == 0 .AND. ifmin == 0)
THEN
4260 grid1(i,j) = graup_bucket1(i,j)
4264 ifincr = nint(prec_acc_dt1)
4266 if(grib==
'grib2')
then
4268 fld_info(cfld)%ifld=iavblfld(iget(522))
4269 if(fld_info(cfld)%ntrange==0)
then
4270 if (ifhr==0 .and. ifmin==0)
then
4271 fld_info(cfld)%tinvstat=0
4273 fld_info(cfld)%tinvstat=ifincr
4275 fld_info(cfld)%ntrange=1
4282 datapd(i,j,cfld) = grid1(ii,jj)
4290 IF (iget(160)>0 .OR.(iget(247)>0))
THEN
4292 allocate(sleet(ista:iend,jsta:jend,nalg), rain(ista:iend,jsta:jend,nalg), &
4293 freezr(ista:iend,jsta:jend,nalg), snow(ista:iend,jsta:jend,nalg))
4294 allocate(zwet(ista:iend,jsta:jend))
4295 CALL calwxt_post(t,q,pmid,pint,htm,lmh,prec,zint,iwx1,zwet)
4299 IF (iget(160)>0)
THEN
4303 IF(zwet(i,j)<spval)
THEN
4305 snow(i,j,1) = mod(iwx,2)
4306 sleet(i,j,1) = mod(iwx,4)/2
4307 freezr(i,j,1) = mod(iwx,8)/4
4311 sleet(i,j,1) = spval
4312 freezr(i,j,1) = spval
4320 IF (iget(247)>0)
THEN
4323 grid1(i,j) = zwet(i,j)
4326 if(grib==
'grib2')
then
4328 fld_info(cfld)%ifld=iavblfld(iget(247))
4334 datapd(i,j,cfld) = grid1(ii,jj)
4345 IF (iget(160)>0)
THEN
4347 CALL calwxt_ramer_post(t,q,pmid,pint,lmh,prec,iwx1)
4356 snow(i,j,2) = mod(iwx,2)
4357 sleet(i,j,2) = mod(iwx,4)/2
4358 freezr(i,j,2) = mod(iwx,8)/4
4364 iseed=44641*(int(sdat(1)-1)*24*31+int(sdat(2))*24+ihrst)+ &
4365 & mod(ifhr*60+ifmin,44641)+4357
4367 CALL calwxt_bourg_post(im,ista_2l,iend_2u,ista,iend,jm,jsta_2l,jend_2u,jsta,jend,lm,lp1,&
4368 & iseed,g,pthresh, &
4369 & t,q,pmid,pint,lmh,prec,zint,iwx1,me)
4379 snow(i,j,3) = mod(iwx,2)
4380 sleet(i,j,3) = mod(iwx,4)/2
4381 freezr(i,j,3) = mod(iwx,8)/4
4387 CALL calwxt_revised_post(t,q,pmid,pint,htm,lmh,prec,zint,iwx1)
4395 snow(i,j,4) = mod(iwx,2)
4396 sleet(i,j,4) = mod(iwx,4)/2
4397 freezr(i,j,4) = mod(iwx,8)/4
4404 IF(imp_physics==5 .or. imp_physics==85 .or. imp_physics==95)
then
4405 CALL calwxt_explicit_post(lmh,ths,pmid,prec,sr,f_rimef,iwx1)
4421 snow(i,j,5) = mod(iwx,2)
4422 sleet(i,j,5) = mod(iwx,4)/2
4423 freezr(i,j,5) = mod(iwx,8)/4
4428 allocate(domr(ista:iend,jsta:jend), doms(ista:iend,jsta:jend), &
4429 domzr(ista:iend,jsta:jend), domip(ista:iend,jsta:jend))
4430 CALL calwxt_dominant_post(prec(ista_2l,jsta_2l),rain,freezr,sleet,snow, &
4431 domr,domzr,domip,doms)
4438 if(prec(i,j) /= spval) grid1(i,j) = doms(i,j)
4441 if(grib==
'grib2')
then
4443 fld_info(cfld)%ifld=iavblfld(iget(551))
4449 datapd(i,j,cfld) = grid1(ii,jj)
4458 if(prec(i,j)/=spval) grid1(i,j) = domip(i,j)
4461 if(grib==
'grib2')
then
4463 fld_info(cfld)%ifld=iavblfld(iget(552))
4469 datapd(i,j,cfld) = grid1(ii,jj)
4484 if(prec(i,j)/=spval)grid1(i,j) = domzr(i,j)
4487 if(grib==
'grib2')
then
4489 fld_info(cfld)%ifld=iavblfld(iget(553))
4495 datapd(i,j,cfld) = grid1(ii,jj)
4504 if(prec(i,j)/=spval)grid1(i,j) = domr(i,j)
4507 if(grib==
'grib2')
then
4509 fld_info(cfld)%ifld=iavblfld(iget(160))
4515 datapd(i,j,cfld) = grid1(ii,jj)
4523 IF (iget(317)>0)
THEN
4525 if (.not.
allocated(sleet))
allocate(sleet(ista:iend,jsta:jend,nalg))
4526 if (.not.
allocated(rain))
allocate(rain(ista:iend,jsta:jend,nalg))
4527 if (.not.
allocated(freezr))
allocate(freezr(ista:iend,jsta:jend,nalg))
4528 if (.not.
allocated(snow))
allocate(snow(ista:iend,jsta:jend,nalg))
4529 if (.not.
allocated(zwet))
allocate(zwet(ista:iend,jsta:jend))
4530 CALL calwxt_post(t,q,pmid,pint,htm,lmh,avgprec,zint,iwx1,zwet)
4535 IF(zwet(i,j)<spval)
THEN
4537 snow(i,j,1) = mod(iwx,2)
4538 sleet(i,j,1) = mod(iwx,4)/2
4539 freezr(i,j,1) = mod(iwx,8)/4
4543 sleet(i,j,1) = spval
4544 freezr(i,j,1) = spval
4549 if (
allocated(zwet))
deallocate(zwet)
4559 CALL calwxt_ramer_post(t,q,pmid,pint,lmh,avgprec,iwx1)
4568 snow(i,j,2) = mod(iwx,2)
4569 sleet(i,j,2) = mod(iwx,4)/2
4570 freezr(i,j,2) = mod(iwx,8)/4
4576 iseed=44641*(int(sdat(1)-1)*24*31+int(sdat(2))*24+ihrst)+ &
4577 & mod(ifhr*60+ifmin,44641)+4357
4579 CALL calwxt_bourg_post(im,ista_2l,iend_2u,ista,iend,jm,jsta_2l,jend_2u,jsta,jend,lm,lp1,&
4580 & iseed,g,pthresh, &
4581 & t,q,pmid,pint,lmh,avgprec,zint,iwx1,me)
4591 snow(i,j,3) = mod(iwx,2)
4592 sleet(i,j,3) = mod(iwx,4)/2
4593 freezr(i,j,3) = mod(iwx,8)/4
4599 CALL calwxt_revised_post(t,q,pmid,pint,htm,lmh,avgprec,zint,iwx1)
4608 snow(i,j,4) = mod(iwx,2)
4609 sleet(i,j,4) = mod(iwx,4)/2
4610 freezr(i,j,4) = mod(iwx,8)/4
4618 IF(imp_physics == 5)
then
4619 CALL calwxt_explicit_post(lmh,ths,pmid,avgprec,sr,f_rimef,iwx1)
4635 snow(i,j,5) = mod(iwx,2)
4636 sleet(i,j,5) = mod(iwx,4)/2
4637 freezr(i,j,5) = mod(iwx,8)/4
4647 if (.not.
allocated(domr))
allocate(domr(ista:iend,jsta:jend))
4648 if (.not.
allocated(doms))
allocate(doms(ista:iend,jsta:jend))
4649 if (.not.
allocated(domzr))
allocate(domzr(ista:iend,jsta:jend))
4650 if (.not.
allocated(domip))
allocate(domip(ista:iend,jsta:jend))
4652 CALL calwxt_dominant_post(avgprec,rain,freezr,sleet,snow, &
4653 domr,domzr,domip,doms)
4656 itprec = nint(tprec)
4658 if (itprec /= 0)
then
4659 ifincr = mod(ifhr,itprec)
4660 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4667 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4670 id(18) = ifhr-itprec
4672 id(18) = ifhr-ifincr
4673 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4684 if(avgprec(i,j) /= spval) grid1(i,j) = doms(i,j)
4688 if(grib==
'grib2')
then
4690 fld_info(cfld)%ifld=iavblfld(iget(555))
4692 fld_info(cfld)%ntrange=0
4694 fld_info(cfld)%ntrange=1
4696 fld_info(cfld)%tinvstat=ifhr-id(18)
4703 datapd(i,j,cfld) = grid1(ii,jj)
4709 itprec = nint(tprec)
4711 if (itprec /= 0)
then
4712 ifincr = mod(ifhr,itprec)
4713 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4720 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4723 id(18) = ifhr-itprec
4725 id(18) = ifhr-ifincr
4726 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4732 if(avgprec(i,j)/=spval) grid1(i,j) = domip(i,j)
4735 if(grib==
'grib2')
then
4737 fld_info(cfld)%ifld=iavblfld(iget(556))
4739 fld_info(cfld)%ntrange=0
4741 fld_info(cfld)%ntrange=1
4743 fld_info(cfld)%tinvstat=ifhr-id(18)
4750 datapd(i,j,cfld) = grid1(ii,jj)
4757 itprec = nint(tprec)
4759 if (itprec /= 0)
then
4760 ifincr = mod(ifhr,itprec)
4761 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4768 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4771 id(18) = ifhr-itprec
4773 id(18) = ifhr-ifincr
4774 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4786 if(avgprec(i,j)/=spval) grid1(i,j) = domzr(i,j)
4789 if(grib==
'grib2')
then
4791 fld_info(cfld)%ifld=iavblfld(iget(557))
4793 fld_info(cfld)%ntrange=0
4795 fld_info(cfld)%ntrange=1
4797 fld_info(cfld)%tinvstat=ifhr-id(18)
4804 datapd(i,j,cfld) = grid1(ii,jj)
4811 itprec = nint(tprec)
4813 if (itprec /= 0)
then
4814 ifincr = mod(ifhr,itprec)
4815 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
4823 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4826 id(18) = ifhr-itprec
4828 id(18) = ifhr-ifincr
4829 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4835 if(avgprec(i,j)/=spval) grid1(i,j) = domr(i,j)
4838 if(grib==
'grib2')
then
4840 fld_info(cfld)%ifld=iavblfld(iget(317))
4842 fld_info(cfld)%ntrange=0
4844 fld_info(cfld)%ntrange=1
4846 fld_info(cfld)%tinvstat=ifhr-id(18)
4853 datapd(i,j,cfld) = grid1(ii,jj)
4860 if (
allocated(rain))
deallocate(rain)
4861 if (
allocated(snow))
deallocate(snow)
4862 if (
allocated(sleet))
deallocate(sleet)
4863 if (
allocated(freezr))
deallocate(freezr)
4866 IF (iget(407)>0 .or. iget(559)>0 .or. &
4867 iget(560)>0 .or. iget(561)>0)
THEN
4869 if (.not.
allocated(domr))
allocate(domr(ista:iend,jsta:jend))
4870 if (.not.
allocated(doms))
allocate(doms(ista:iend,jsta:jend))
4871 if (.not.
allocated(domzr))
allocate(domzr(ista:iend,jsta:jend))
4872 if (.not.
allocated(domip))
allocate(domip(ista:iend,jsta:jend))
4887 totprcp = (rainc_bucket(i,j) + rainnc_bucket(i,j))*1.e-3
4889 if(graup_bucket(i,j)*1.e-3 > totprcp)
then
4890 print *,
'WARNING - Graupel is higher that total precip at point',i,j
4891 print *,
'totprcp,graup_bucket(i,j),snow_bucket(i,j),rainnc_bucket',&
4892 totprcp,graup_bucket(i,j),snow_bucket(i,j),rainnc_bucket(i,j)
4899 if (totprcp-graup_bucket(i,j)*1.e-3 > 0.0000001) &
4905 snowratio = snow_bucket(i,j)*1.e-3 / (totprcp-graup_bucket(i,j)*1.e-3)
4909 t2 = tshltr(i,j)*(pshltr(i,j)*1.e-5)**capa
4916 if( (snownc(i,j)/dt > 0.2e-9 .and. snowratio>=0.25) &
4918 (totprcp>0.00001.and.snowratio>=0.25))
then
4920 if (t2>=276.15)
then
4931 rainl = (1. - sr(i,j))*prec(i,j)/dt
4934 if((rainl > 2.8e-9 .and. snowratio<0.60) .or. &
4935 (totprcp>0.00001 .and. snowratio<0.60))
then
4937 if (t2>=273.15)
then
4952 if(graupelnc(i,j)/dt > 1.e-9)
then
4953 if (t2<=276.15)
then
4959 if (qrmax(i,j)>0.000005)
then
4960 if(graupelnc(i,j) > 0.5*snownc(i,j))
then
4969 if ((graupelnc(i,j)/dt) > rainl)
then
4976 else if (rainl > (4.*graupelnc(i,j)/dt))
then
5001 write (6,*)
' Snow/rain ratio'
5002 write (6,*)
' max/min 1h-SNOWFALL in [cm]', &
5003 maxval(snow_bucket)*0.1,minval(snow_bucket)*0.1
5008 if (snow_bucket(i,j)*0.1<0.1*float(icat).and. &
5009 snow_bucket(i,j)*0.1>0.1*float(icat-1))
then
5010 cnt_snowratio(icat)=cnt_snowratio(icat)+1
5016 write (6,*)
'Snow ratio point counts'
5018 write (6,*) icat, cnt_snowratio(icat)
5021 icnt_snow_rain_mixed = 0
5024 if (domr(i,j)==1 .and. doms(i,j)==1)
then
5025 icnt_snow_rain_mixed = icnt_snow_rain_mixed + 1
5030 write (6,*)
'No. of mixed snow/rain p-type diagnosed=', &
5031 icnt_snow_rain_mixed
5038 grid1(i,j)=doms(i,j)
5041 if(grib==
'grib2')
then
5043 fld_info(cfld)%ifld=iavblfld(iget(559))
5049 datapd(i,j,cfld) = grid1(ii,jj)
5057 grid1(i,j) = domip(i,j)
5063 if(grib==
'grib2')
then
5065 fld_info(cfld)%ifld=iavblfld(iget(560))
5071 datapd(i,j,cfld) = grid1(ii,jj)
5083 grid1(i,j) = domzr(i,j)
5086 if(grib==
'grib2')
then
5088 fld_info(cfld)%ifld=iavblfld(iget(561))
5094 datapd(i,j,cfld) = grid1(ii,jj)
5102 grid1(i,j) = domr(i,j)
5105 if(grib==
'grib2')
then
5107 fld_info(cfld)%ifld=iavblfld(iget(407))
5113 datapd(i,j,cfld) = grid1(ii,jj)
5120 if (
allocated(psfc))
deallocate(psfc)
5121 if (
allocated(domr))
deallocate(domr)
5122 if (
allocated(doms))
deallocate(doms)
5123 if (
allocated(domzr))
deallocate(domzr)
5124 if (
allocated(domip))
deallocate(domip)
5130 IF (iget(042)>0)
THEN
5131 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5132 modelname==
'RAPR')
THEN
5143 IF(sfclhx(i,j)/=spval)
THEN
5144 grid1(i,j)=-1.*sfclhx(i,j)*rrnum
5146 grid1(i,j)=sfclhx(i,j)
5151 itsrfc = nint(tsrfc)
5152 IF(itsrfc /= 0)
then
5153 ifincr = mod(ifhr,itsrfc)
5154 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5159 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5162 id(18) = ifhr-itsrfc
5164 id(18) = ifhr-ifincr
5165 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5167 IF (id(18)<0) id(18) = 0
5168 if(grib==
'grib2')
then
5170 fld_info(cfld)%ifld=iavblfld(iget(042))
5172 fld_info(cfld)%ntrange=1
5174 fld_info(cfld)%ntrange=0
5176 fld_info(cfld)%tinvstat=ifhr-id(18)
5177 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5183 IF (iget(043)>0)
THEN
5184 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5185 modelname==
'RAPR')
THEN
5196 IF(sfcshx(i,j)/=spval)
THEN
5197 grid1(i,j) = -1.* sfcshx(i,j)*rrnum
5199 grid1(i,j)=sfcshx(i,j)
5204 itsrfc = nint(tsrfc)
5205 IF(itsrfc /= 0)
then
5206 ifincr = mod(ifhr,itsrfc)
5207 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5212 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5215 id(18) = ifhr-itsrfc
5217 id(18) = ifhr-ifincr
5218 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5220 IF (id(18)<0) id(18) = 0
5222 if(grib==
'grib2')
then
5224 fld_info(cfld)%ifld=iavblfld(iget(043))
5226 fld_info(cfld)%ntrange=1
5228 fld_info(cfld)%ntrange=0
5230 fld_info(cfld)%tinvstat=ifhr-id(18)
5231 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5236 IF (iget(135)>0)
THEN
5237 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5238 modelname==
'RAPR')
THEN
5250 if(subshx(i,j)/=spval) grid1(i,j) = subshx(i,j)*rrnum
5254 itsrfc = nint(tsrfc)
5255 IF(itsrfc /= 0)
then
5256 ifincr = mod(ifhr,itsrfc)
5257 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5262 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5265 id(18) = ifhr-itsrfc
5267 id(18) = ifhr-ifincr
5268 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5270 IF (id(18)<0) id(18) = 0
5272 if(grib==
'grib2')
then
5274 fld_info(cfld)%ifld=iavblfld(iget(135))
5276 fld_info(cfld)%ntrange=1
5278 fld_info(cfld)%ntrange=0
5280 fld_info(cfld)%tinvstat=ifhr-id(18)
5281 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5286 IF (iget(136)>0)
THEN
5287 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5288 modelname==
'RAPR')
THEN
5300 if(snopcx(i,j)/=spval) grid1(i,j) = snopcx(i,j)*rrnum
5304 itsrfc = nint(tsrfc)
5305 IF(itsrfc /= 0)
then
5306 ifincr = mod(ifhr,itsrfc)
5307 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5312 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5315 id(18) = ifhr-itsrfc
5317 id(18) = ifhr-ifincr
5318 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5320 IF (id(18)<0) id(18) = 0
5322 if(grib==
'grib2')
then
5324 fld_info(cfld)%ifld=iavblfld(iget(136))
5326 fld_info(cfld)%ntrange=1
5328 fld_info(cfld)%ntrange=0
5330 fld_info(cfld)%tinvstat=ifhr-id(18)
5331 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5336 IF (iget(046)>0)
THEN
5337 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5338 modelname==
'RAPR')
THEN
5349 IF(sfcuvx(i,j)/=spval)
THEN
5350 grid1(i,j) = sfcuvx(i,j)*rrnum
5352 grid1(i,j) = sfcuvx(i,j)
5357 itsrfc = nint(tsrfc)
5358 IF(itsrfc /= 0)
then
5359 ifincr = mod(ifhr,itsrfc)
5360 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5365 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5368 id(18) = ifhr-itsrfc
5370 id(18) = ifhr-ifincr
5371 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5373 IF (id(18)<0) id(18) = 0
5375 if(grib==
'grib2')
then
5377 fld_info(cfld)%ifld=iavblfld(iget(046))
5379 fld_info(cfld)%ntrange=1
5381 fld_info(cfld)%ntrange=0
5383 fld_info(cfld)%tinvstat=ifhr-id(18)
5384 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5389 IF (iget(269)>0)
THEN
5390 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5391 modelname==
'RAPR')
THEN
5403 if(sfcux(i,j)/=spval) grid1(i,j) = sfcux(i,j)*rrnum
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
5425 if(grib==
'grib2')
then
5427 fld_info(cfld)%ifld=iavblfld(iget(269))
5429 fld_info(cfld)%ntrange=1
5431 fld_info(cfld)%ntrange=0
5433 fld_info(cfld)%tinvstat=ifhr-id(18)
5434 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5439 IF (iget(270)>0)
THEN
5440 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. &
5441 modelname==
'RAPR')
THEN
5453 if(sfcvx(i,j)/=spval) grid1(i,j) = sfcvx(i,j)*rrnum
5457 itsrfc = nint(tsrfc)
5458 IF(itsrfc /= 0)
then
5459 ifincr = mod(ifhr,itsrfc)
5460 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5465 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5468 id(18) = ifhr-itsrfc
5470 id(18) = ifhr-ifincr
5471 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5473 IF (id(18)<0) id(18) = 0
5475 if(grib==
'grib2')
then
5477 fld_info(cfld)%ifld=iavblfld(iget(270))
5479 fld_info(cfld)%ntrange=1
5481 fld_info(cfld)%ntrange=0
5483 fld_info(cfld)%tinvstat=ifhr-id(18)
5484 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5489 IF (iget(047)>0)
THEN
5493 if(sfcevp(i,j)/=spval) grid1(i,j) = sfcevp(i,j)*1000.
5497 itprec = nint(tprec)
5499 if (itprec /= 0)
then
5500 ifincr = mod(ifhr,itprec)
5501 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
5508 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5511 id(18) = ifhr-itprec
5513 id(18) = ifhr-ifincr
5514 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5516 IF (id(18)<0) id(18) = 0
5517 if(grib==
'grib2')
then
5519 fld_info(cfld)%ifld=iavblfld(iget(047))
5521 fld_info(cfld)%ntrange=1
5523 fld_info(cfld)%ntrange=0
5525 fld_info(cfld)%tinvstat=ifhr-id(18)
5526 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5532 IF (iget(137)>0)
THEN
5536 if(potevp(i,j)/=spval) grid1(i,j) = potevp(i,j)*1000.
5540 itprec = nint(tprec)
5542 if (itprec /= 0)
then
5543 ifincr = mod(ifhr,itprec)
5544 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
5551 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5554 id(18) = ifhr-itprec
5556 id(18) = ifhr-ifincr
5557 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5559 IF (id(18)<0) id(18) = 0
5560 if(grib==
'grib2')
then
5562 fld_info(cfld)%ifld=iavblfld(iget(137))
5564 fld_info(cfld)%ntrange=1
5566 fld_info(cfld)%ntrange=0
5568 fld_info(cfld)%tinvstat=ifhr-id(18)
5569 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5574 IF (iget(044)>0)
THEN
5577 grid1(i,j) = z0(i,j)
5580 if(grib==
'grib2')
then
5582 fld_info(cfld)%ifld=iavblfld(iget(044))
5583 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5588 IF (iget(045)>0)
THEN
5591 grid1(i,j) = ustar(i,j)
5594 if(grib==
'grib2')
then
5596 fld_info(cfld)%ifld=iavblfld(iget(045))
5597 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5603 IF (iget(132)>0)
THEN
5605 CALL caldrg(egrid1(ista_2l:iend_2u,jsta_2l:jend_2u))
5608 IF(ustar(i,j) < spval) grid1(i,j)=egrid1(i,j)
5611 if(grib==
'grib2')
then
5613 fld_info(cfld)%ifld=iavblfld(iget(132))
5614 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5618 write_cd:
IF(iget(922)>0)
THEN
5621 grid1(i,j)=cd10(i,j)
5624 if(grib==
'grib2')
then
5626 fld_info(cfld)%ifld=iavblfld(iget(922))
5627 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5630 write_ch:
IF(iget(923)>0)
THEN
5633 grid1(i,j)=ch10(i,j)
5636 if(grib==
'grib2')
then
5638 fld_info(cfld)%ifld=iavblfld(iget(923))
5639 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5644 IF ( (iget(900)>0) .OR. (iget(901)>0) )
THEN
5647 IF (iget(900)>0)
THEN
5650 grid1(i,j)=mdltaux(i,j)
5653 if(grib==
'grib2')
then
5655 fld_info(cfld)%ifld=iavblfld(iget(900))
5656 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5662 IF (iget(901)>0)
THEN
5665 grid1(i,j)=mdltauy(i,j)
5668 if(grib==
'grib2')
then
5670 fld_info(cfld)%ifld=iavblfld(iget(901))
5671 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5677 IF ( (iget(133)>0) .OR. (iget(134)>0) )
THEN
5680 IF(modelname /=
'FV3R') &
5681 CALL caltau(egrid1(ista:iend,jsta:jend),egrid2(ista:iend,jsta:jend))
5685 IF (iget(133)>0)
THEN
5688 IF(modelname ==
'FV3R')
THEN
5689 grid1(i,j)=sfcuxi(i,j)
5691 grid1(i,j)=egrid1(i,j)
5696 if(grib==
'grib2')
then
5698 fld_info(cfld)%ifld=iavblfld(iget(133))
5699 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5704 IF (iget(134)>0)
THEN
5707 IF(modelname ==
'FV3R')
THEN
5708 grid1(i,j)=sfcvxi(i,j)
5710 grid1(i,j)=egrid2(i,j)
5714 if(grib==
'grib2')
then
5716 fld_info(cfld)%ifld=iavblfld(iget(134))
5717 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5723 IF ( (iget(315)>0) .OR. (iget(316)>0) )
THEN
5726 IF (iget(315)>0)
THEN
5729 grid1(i,j) = gtaux(i,j)
5733 itsrfc = nint(tsrfc)
5734 IF(itsrfc /= 0)
then
5735 ifincr = mod(ifhr,itsrfc)
5736 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5741 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5744 id(18) = ifhr-itsrfc
5746 id(18) = ifhr-ifincr
5747 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5749 IF (id(18)<0) id(18) = 0
5750 if(grib==
'grib2')
then
5752 fld_info(cfld)%ifld=iavblfld(iget(315))
5754 fld_info(cfld)%ntrange=0
5756 fld_info(cfld)%ntrange=1
5758 fld_info(cfld)%tinvstat=ifhr-id(18)
5759 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5764 IF (iget(316)>0)
THEN
5767 grid1(i,j)=gtauy(i,j)
5771 itsrfc = nint(tsrfc)
5772 IF(itsrfc /= 0)
then
5773 ifincr = mod(ifhr,itsrfc)
5774 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
5779 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
5782 id(18) = ifhr-itsrfc
5784 id(18) = ifhr-ifincr
5785 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
5787 IF (id(18)<0) id(18) = 0
5788 if(grib==
'grib2')
then
5790 fld_info(cfld)%ifld=iavblfld(iget(316))
5792 fld_info(cfld)%ntrange=0
5794 fld_info(cfld)%ntrange=1
5796 fld_info(cfld)%tinvstat=ifhr-id(18)
5797 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5803 IF (iget(154)>0)
THEN
5806 IF(modelname==
'NCAR'.OR.modelname==
'RSM' .OR. &
5807 modelname==
'RAPR')
THEN
5811 grid1(i,j) = twbs(i,j)
5818 IF(twbs(i,j) < spval) grid1(i,j) = -twbs(i,j)
5822 if(grib==
'grib2')
then
5824 fld_info(cfld)%ifld=iavblfld(iget(154))
5825 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5830 IF (iget(155)>0)
THEN
5833 IF(modelname==
'NCAR'.OR.modelname==
'RSM' .OR. &
5834 modelname==
'RAPR')
THEN
5838 grid1(i,j) = qwbs(i,j)
5845 IF(qwbs(i,j) < spval) grid1(i,j) = -qwbs(i,j)
5849 if(grib==
'grib2')
then
5851 fld_info(cfld)%ifld=iavblfld(iget(155))
5852 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5857 IF (iget(169)>0)
THEN
5860 grid1(i,j)=sfcexc(i,j)
5863 if(grib==
'grib2')
then
5865 fld_info(cfld)%ifld=iavblfld(iget(169))
5866 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5871 IF (iget(170)>0)
THEN
5875 if(vegfrc(i,j)/=spval) grid1(i,j)=vegfrc(i,j)*100.
5878 if(grib==
'grib2')
then
5880 fld_info(cfld)%ifld=iavblfld(iget(170))
5881 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5887 IF (iget(726)>0)
THEN
5891 if(shdmin(i,j)/=spval) grid1(i,j)=shdmin(i,j)*100.
5894 if(grib==
'grib2')
then
5896 fld_info(cfld)%ifld=iavblfld(iget(726))
5897 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5902 IF (iget(729)>0)
THEN
5906 if(shdmax(i,j)/=spval) grid1(i,j)=shdmax(i,j)*100.
5909 if(grib==
'grib2')
then
5911 fld_info(cfld)%ifld=iavblfld(iget(729))
5912 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5917 IF (modelname ==
'NCAR'.OR.modelname==
'NMM' .OR. &
5918 modelname ==
'FV3R' .OR. modelname==
'RAPR')
THEN
5919 IF (isf_surface_physics == 2 .OR. modelname==
'RAPR')
THEN
5920 IF (iget(254)>0)
THEN
5923 IF (modelname==
'RAPR')
THEN
5930 if(grib==
'grib2')
then
5932 fld_info(cfld)%ifld=iavblfld(iget(254))
5933 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5940 IF (iget(152)>0)
THEN
5943 grid1(i,j)=grnflx(i,j)
5946 if(grib==
'grib2')
then
5948 fld_info(cfld)%ifld=iavblfld(iget(152))
5949 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5953 IF (iget(218)>0)
THEN
5956 grid1(i,j) = float(ivgtyp(i,j))
5959 if(grib==
'grib2')
then
5961 fld_info(cfld)%ifld=iavblfld(iget(218))
5962 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5967 IF (iget(219)>0)
THEN
5970 grid1(i,j) = float(isltyp(i,j))
5973 if(grib==
'grib2')
then
5975 fld_info(cfld)%ifld=iavblfld(iget(219))
5976 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5980 IF (iget(223)>0)
THEN
5983 grid1(i,j) = float(islope(i,j))
5986 if(grib==
'grib2')
then
5988 fld_info(cfld)%ifld=iavblfld(iget(223))
5989 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5996 IF (modelname ==
'NCAR'.OR.modelname==
'NMM' .OR. &
5997 modelname ==
'FV3R' .OR. modelname==
'RAPR')
THEN
5998 IF (iget(220)>0 .OR. iget(234)>0 &
5999 & .OR. iget(235)>0 .OR. iget(236)>0 &
6000 & .OR. iget(237)>0 .OR. iget(238)>0 &
6001 & .OR. iget(239)>0 .OR. iget(240)>0 &
6002 & .OR. iget(241)>0 )
THEN
6003 IF (isf_surface_physics == 2)
THEN
6005 allocate(rsmin(ista:iend,jsta:jend), smcref(ista:iend,jsta:jend), gc(ista:iend,jsta:jend), &
6006 rcq(ista:iend,jsta:jend), rct(ista:iend,jsta:jend), rcsoil(ista:iend,jsta:jend), rcs(ista:iend,jsta:jend))
6009 IF( (abs(sm(i,j)-0.) < 1.0e-5) .AND. &
6010 & (abs(sice(i,j)-0.) < 1.0e-5) )
THEN
6011 IF(czmean(i,j)>1.e-6)
THEN
6012 factrs = czen(i,j)/czmean(i,j)
6017 llmh = nint(lmh(i,j))
6018 solar = rswin(i,j)*factrs
6019 sfctmp = t(i,j,llmh)
6021 sfcprs = pint(i,j,llmh+1)
6029 CALL canres(solar,sfctmp,sfcq,sfcprs &
6030 & ,sh2o(i,j,1:nsoil),gc(i,j),rc,ivg,isltyp(i,j) &
6031 & ,rsmin(i,j),nroots(i,j),smcwlt(i,j),smcref(i,j) &
6032 & ,rcs(i,j),rcq(i,j),rct(i,j),rcsoil(i,j),sldpth)
6033 IF(abs(smcwlt(i,j)-0.5)<1.e-5)print*, &
6034 &
'LARGE SMCWLT',i,j,sm(i,j),isltyp(i,j),smcwlt(i,j)
6049 IF (iget(220)>0 )
THEN
6052 grid1(i,j) = gc(i,j)
6055 if(grib==
'grib2')
then
6057 fld_info(cfld)%ifld=iavblfld(iget(220))
6058 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6062 IF (iget(234)>0 )
THEN
6065 grid1(i,j) = rsmin(i,j)
6068 if(grib==
'grib2')
then
6070 fld_info(cfld)%ifld=iavblfld(iget(234))
6071 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6075 IF (iget(235)>0 )
THEN
6078 grid1(i,j) = float(nroots(i,j))
6081 if(grib==
'grib2')
then
6083 fld_info(cfld)%ifld=iavblfld(iget(235))
6084 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6088 IF (iget(236)>0 )
THEN
6091 grid1(i,j) = smcwlt(i,j)
6094 if(grib==
'grib2')
then
6096 fld_info(cfld)%ifld=iavblfld(iget(236))
6097 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6101 IF (iget(237)>0 )
THEN
6104 grid1(i,j) = smcref(i,j)
6107 if(grib==
'grib2')
then
6109 fld_info(cfld)%ifld=iavblfld(iget(237))
6110 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6114 IF (iget(238)>0 )
THEN
6117 grid1(i,j) = rcs(i,j)
6120 if(grib==
'grib2')
then
6122 fld_info(cfld)%ifld=iavblfld(iget(238))
6123 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6127 IF (iget(239)>0 )
THEN
6130 grid1(i,j) = rct(i,j)
6133 if(grib==
'grib2')
then
6135 fld_info(cfld)%ifld=iavblfld(iget(239))
6136 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6140 IF (iget(240)>0 )
THEN
6143 grid1(i,j) = rcq(i,j)
6146 if(grib==
'grib2')
then
6148 fld_info(cfld)%ifld=iavblfld(iget(240))
6149 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6153 IF (iget(241)>0 )
THEN
6156 grid1(i,j) = rcsoil(i,j)
6159 if(grib==
'grib2')
then
6161 fld_info(cfld)%ifld=iavblfld(iget(241))
6162 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6166 if (
allocated(rsmin))
deallocate(rsmin)
6167 if (
allocated(smcref))
deallocate(smcref)
6168 if (
allocated(rcq))
deallocate(rcq)
6169 if (
allocated(rct))
deallocate(rct)
6170 if (
allocated(rcsoil))
deallocate(rcsoil)
6171 if (
allocated(rcs))
deallocate(rcs)
6172 if (
allocated(gc))
deallocate(gc)
6179 IF(modelname ==
'GFS')
THEN
6185 grid1(i,j) = smcwlt(i,j)
6193 if(grib==
'grib2')
then
6195 fld_info(cfld)%ifld=iavblfld(iget(236))
6201 datapd(i,j,cfld) = grid1(ii,jj)
6211 grid1(i,j) = fieldcapa(i,j)
6219 if(grib==
'grib2')
then
6221 fld_info(cfld)%ifld=iavblfld(iget(397))
6227 datapd(i,j,cfld) = grid1(ii,jj)
6237 grid1(i,j) = suntime(i,j)
6241 itsrfc = nint(tsrfc)
6242 IF(itsrfc /= 0)
then
6243 ifincr = mod(ifhr,itsrfc)
6244 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
6249 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
6252 id(18) = ifhr-itsrfc
6254 id(18) = ifhr-ifincr
6255 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
6257 IF (id(18)<0) id(18) = 0
6258 if(grib==
'grib2')
then
6260 fld_info(cfld)%ifld=iavblfld(iget(396))
6262 fld_info(cfld)%ntrange=1
6264 fld_info(cfld)%ntrange=0
6266 fld_info(cfld)%tinvstat=ifhr-id(18)
6272 datapd(i,j,cfld) = grid1(ii,jj)
6282 grid1(i,j) = avgpotevp(i,j)
6286 itsrfc = nint(tsrfc)
6287 IF(itsrfc /= 0)
then
6288 ifincr = mod(ifhr,itsrfc)
6289 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itsrfc*60)
6294 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
6297 id(18) = ifhr-itsrfc
6299 id(18) = ifhr-ifincr
6300 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
6302 IF (id(18)<0) id(18) = 0
6303 if(grib==
'grib2')
then
6305 fld_info(cfld)%ifld=iavblfld(iget(517))
6307 fld_info(cfld)%ntrange=1
6309 fld_info(cfld)%ntrange=0
6311 fld_info(cfld)%tinvstat=ifhr-id(18)
6317 datapd(i,j,cfld) = grid1(ii,jj)
6326 IF (iget(282)>0)
THEN
6333 if(grib==
'grib2')
then
6335 fld_info(cfld)%ifld=iavblfld(iget(282))
6336 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6341 IF (iget(283)>0)
THEN
6350 IF(pmid(1,1,l)>=(pdtop+pt))
EXIT
6354 CALL mpi_bcast(l,1,mpi_integer,0,mpi_comm_comp,irtn)
6355 if(grib==
'grib2')
then
6357 fld_info(cfld)%ifld=iavblfld(iget(283))
6358 fld_info(cfld)%lvl1=1
6359 fld_info(cfld)%lvl2=l
6360 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6365 IF (iget(273)>0)
THEN
6374 IF((pint(1,1,lm+1)-pd(1,1))<=(pint(1,1,l)+1.00))
EXIT
6378 CALL mpi_bcast(l,1,mpi_integer,0,mpi_comm_comp,irtn)
6379 if(grib==
'grib2')
then
6381 fld_info(cfld)%ifld=iavblfld(iget(273))
6382 fld_info(cfld)%lvl1=l
6383 fld_info(cfld)%lvl2=lm+1
6384 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6390 IF (iget(503)>0)
THEN
6393 grid1(i,j)=akhsavg(i,j)
6405 if(grib==
'grib2')
then
6407 fld_info(cfld)%ifld=iavblfld(iget(503))
6408 fld_info(cfld)%ntrange=ifhr-id(18)
6409 fld_info(cfld)%tinvstat=1
6410 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6415 IF (iget(504)>0)
THEN
6418 grid1(i,j)=akmsavg(i,j)
6430 if(grib==
'grib2')
then
6432 fld_info(cfld)%ifld=iavblfld(iget(504))
6433 fld_info(cfld)%ntrange=ifhr-id(18)
6434 fld_info(cfld)%tinvstat=1
6435 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
6443 subroutine qpf_comp(igetfld,compfile,fcst)
6448 use ctlblk_mod
, only: spval,jsta,jend,im,dtq2,ifhr,ifmin,tprec,grib, &
6449 modelname,jm,cfld,datapd,fld_info,jsta_2l,jend_2u,&
6450 ista,iend,ista_2l,iend_2u
6451 use rqstfld_mod
, only: iget, id, lvls, iavblfld
6452 use grib2_module, only: read_grib2_head, read_grib2_sngle
6453 use vrbls2d, only: avgprec, avgprec_cont
6455 character(len=256),
intent(in) :: compfile
6456 integer,
intent(in) :: igetfld,fcst
6457 integer :: trange,invstat
6458 real,
dimension(IM,JM) :: outgrid
6460 real,
allocatable,
dimension(:,:) :: mscvalue
6462 integer :: nx, ny, nz, ntot, mscnlon, mscnlat, height
6463 integer :: itprec, ifincr
6464 real :: rlonmin, rlatmax
6467 logical :: file_exists
6469 integer :: i, j, k, ii, jj
6472 INQUIRE(file=compfile, exist=file_exists)
6473 if (file_exists)
then
6474 call read_grib2_head(compfile,nx,ny,nz,rlonmin,rlatmax,&
6478 if (.not.
allocated(mscvalue))
then
6479 allocate(mscvalue(mscnlon,mscnlat))
6482 call read_grib2_sngle(compfile,ntot,height,mscvalue)
6484 write(*,*)
'WARNING: FFG file not available for hour: ', fcst
6489 itprec = nint(tprec)
6490 if (itprec /= 0)
then
6491 ifincr = mod(ifhr,itprec)
6492 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itprec*60)
6498 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
6501 id(18) = ifhr-itprec
6503 id(18) = ifhr-ifincr
6504 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
6508 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
6510 IF (file_exists)
THEN
6513 IF (ifhr .EQ. 0 .OR. fcst .EQ. 0)
THEN
6515 ELSE IF (mscvalue(i,j) .LE. 0.0)
THEN
6517 ELSE IF (fcst .EQ. 1 .AND. avgprec(i,j)*float(id(19)-id(18))*3600.*1000./dtq2 .GT. mscvalue(i,j))
THEN
6519 ELSE IF (fcst .GT. 1 .AND. avgprec_cont(i,j)*float(ifhr)*3600.*1000./dtq2 .GT. mscvalue(i,j))
THEN
6527 outgrid = 0.0*avgprec
6532 IF (id(18).LT.0) id(18) = 0
6535 IF(fcst .EQ. 1)
THEN
6537 trange = (ifhr-id(18))/itprec
6542 IF(trange .EQ. 0)
THEN
6543 IF (ifhr .EQ. 0)
THEN
6552 IF (ifhr .EQ. fcst)
THEN
6559 IF(grib==
'grib2')
then
6561 fld_info(cfld)%ifld=iavblfld(iget(igetfld))
6562 fld_info(cfld)%ntrange=trange
6563 fld_info(cfld)%tinvstat=invstat
6569 datapd(i,j,cfld) = outgrid(ii,jj)
6576 end subroutine qpf_comp
elemental real function, public fpvsnew(t)
calcape() computes CAPE/CINS and other storm related variables.