71 use vrbls4d, only: dust,suso, salt, soot, waso
72 use vrbls3d, only: qqw, qqr, t, zint, cfr, qqi, qqs, q, ext, zmid,pmid,&
73 pint, duem, dusd, dudp, duwt, dusv, ssem, sssd,ssdp,&
74 sswt, sssv, bcem, bcsd, bcdp, bcwt, bcsv, ocem,ocsd,&
75 ocdp, ocwt, ocsv, sca, asy,cfr_raw
76 use vrbls2d, only: cldefi, cfracl, avgcfracl, cfracm, avgcfracm, cfrach,&
77 avgcfrach, avgtcdc, ncfrst, acfrst, ncfrcv, acfrcv, &
78 hbot, hbotd, hbots, htop, htopd, htops, fis, pblh, &
79 pbot, pbotl, pbotm, pboth, cnvcfr, ptop, ptopl, &
80 ptopm, ptoph, ttopl, ttopm, ttoph, pblcfr, cldwork, &
81 aswin, auvbin, auvbinc, aswout,alwout, aswtoa, &
82 rlwtoa, czmean, czen, rswin, alwin, alwtoa, rlwin, &
83 sigt4, rswout, radot, rswinc, aswinc, aswoutc, &
84 aswtoac, alwoutc, aswtoac, avisbeamswin, &
85 avisdiffswin, aswintoa, aswtoac, airbeamswin, &
86 airdiffswin, dusmass, dusmass25, ducmass, ducmass25, &
87 alwinc, alwtoac, swddni, swddif, swdnbc, swddnic, &
88 swddifc, swupbc, lwdnbc, lwupbc, swupt, &
89 taod5502d, aerssa2d, aerasy2d, mean_frp, lwp, iwp, &
91 dustcb,sscb,bccb,occb,sulfcb,dustpm,sspm,aod550, &
92 du_aod550,ss_aod550,su_aod550,oc_aod550,bc_aod550, &
94 use masks, only: lmh, htm
95 use params_mod, only: tfrz, d00, h99999, qcldmin, small, d608, h1, rog, &
96 gi, rd, qconv, abscoefi, abscoef, stbol, pq0, a2, &
98 use ctlblk_mod
, only: jsta, jend, spval, modelname, grib, cfld,datapd, &
99 fld_info, avrain, theat, ifhr, ifmin, avcnvc, &
100 tclod, ardsw, trdsw, ardlw, nbin_du, trdlw, im, &
101 nbin_ss, nbin_oc, nbin_bc, nbin_su, dtq2, &
102 jm, lm, gocart_on, me, rdaod,ista, iend
103 use rqstfld_mod
, only: iget, id, lvls, iavblfld
104 use gridspec_mod
, only: dyval, gridtype
105 use cmassi_mod
, only: trad_ice
106 use machine_post
, only: kind_phys
112 REAL,
PARAMETER :: c2k=273.15, ptop_low=64200., ptop_mid=35000., &
118 INTEGER :: lcbot,lctop,jc,ic
119 INTEGER,
dimension(ista:iend,jsta:jend) :: ibott, ibotcu, ibotdcu, ibotscu, ibotgr, &
120 itopt, itopcu, itopdcu, itopscu, itopgr
121 REAL,
dimension(im,jm) :: grid1
122 REAL,
dimension(ista:iend,jsta:jend) :: grid2, egrid1, egrid2, egrid3, &
123 cldp, cldz, cldt, cldzcu
124 REAL,
dimension(lm) :: rhb, watericetotal, pabovesfc
125 REAL :: watericemax, wimin, zcldbase, zcldtop, zpbltop, &
126 rhoice, coeffp, exponfp, const1, cloud_def_p, &
127 pcldbase, rhoair, vovermd, concfp, betav, &
128 vertvis, tx, tv, pol, esx, es, e, zsf, zcld, frac
129 integer nfog, nfogn(7),npblcld,nlifr, k1, k2, ll, ii, ib, n, jj, &
131 real,
dimension(lm) :: cldfra, cfr_layer_sum
132 real :: ceiling_thresh_cldfra, cldfra_max, &
133 zceil, zceil1, zceil2, previous_sum, &
134 ceil_min, ceil_neighbor
136 real,
dimension(im,jm) :: ceil
139 REAL,
dimension(ista:iend,jsta:jend) :: tcld, ceiling
140 real cu_ir(lm), q_conv
142 integer i,j,l,k,ibot,itclod,lbot,ltop,itrdsw,itrdlw, &
143 llmh,itheat,ifincr,itype,itop,num_thick
144 real dpbnd,rrnum,qcld,rsum,tlmh,factrs,factrl,dp, &
145 opdepth, tmp,qsat,rhum,tcext,delz,dely,dy_m
148 real,
allocatable :: full_ceil(:,:), full_fis(:,:)
150 real dummy(ista:iend,jsta:jend)
151 integer idummy(ista:iend,jsta:jend)
152 real full_dummy(im,jm)
161 integer,
parameter :: krhlev = 36
162 integer,
parameter :: kcm1 = 5
163 integer,
parameter :: kcm2 = 5
164 integer,
parameter :: nbdsw = 7
165 integer,
parameter :: noaer = 20
166 integer,
parameter :: naero=kcm2
167 CHARACTER :: aerosolname(kcm2)*4, aerosolname_rd*4, aerosol_file*30
168 CHARACTER :: aername_rd*4, aeropt*3
171 REAL,
ALLOCATABLE :: extrhd_du(:,:,:), extrhd_ss(:,:,:), &
172 & extrhd_SU(:,:,:), extrhd_BC(:,:,:), &
176 REAL,
ALLOCATABLE :: scarhd_du(:,:,:), scarhd_ss(:,:,:), &
177 & scarhd_SU(:,:,:), scarhd_BC(:,:,:), &
181 REAL,
ALLOCATABLE :: asyrhd_du(:,:,:), asyrhd_ss(:,:,:), &
182 & asyrhd_SU(:,:,:), asyrhd_BC(:,:,:), &
186 REAL,
ALLOCATABLE :: ssarhd_du(:,:,:), ssarhd_ss(:,:,:), &
187 & ssarhd_SU(:,:,:), ssarhd_BC(:,:,:), &
192 real (kind=kind_phys) :: extrhi(kcm1,nbdsw)
195 real (kind=kind_phys) :: extrhd(krhlev,kcm2,nbdsw)
197 REAL,
dimension(ista:iend,jsta:jend) :: p1d,t1d,q1d,egrid4
199 real,
allocatable:: rdrh(:,:,:)
200 integer,
allocatable :: ihh(:,:,:)
201 REAL :: rh3d, drh0, drh1, ext01, ext02,sca01,asy01
203 INTEGER :: ios, indx, issam, isscm, isuso, iwaso, isoot, nbin
204 REAL :: ccdry, ccwet, ssam, sscm
205 REAL,
dimension(ista:iend,jsta:jend) :: aod_du, aod_ss, aod_su, aod_oc, aod_bc, aod
206 REAL,
dimension(ista:iend,jsta:jend) :: sca_du, sca_ss, sca_su, sca_oc,sca_bc, sca2d
207 REAL,
dimension(ista:iend,jsta:jend) :: asy_du, asy_ss, asy_su, asy_oc, asy_bc,asy2d
208 REAL,
dimension(ista:iend,jsta:jend) :: angst, aod_440, aod_860
210 INTEGER :: indx_ext(naero), indx_sca(naero)
211 LOGICAL :: laeropt, lext, lsca, lasy
213 REAL,
allocatable :: fpm25_du(:),fpm25_ss(:)
214 REAL,
allocatable,
dimension(:,:) :: rhosfc, smass_du_cr,smass_du_fn, &
215 & smass_ss_cr, smass_ss_fn, smass_oc,smass_bc, &
216 & smass_su, smass_cr, smass_fn
218 real (kind=kind_phys),
dimension(KRHLEV) :: rhlev
219 data rhlev(:)/ .0, .05, .10, .15, .20, .25, .30, .35, &
220 & .40, .45, .50, .55, .60, .65, .70, .75, &
221 & .80, .81, .82, .83, .84, .85, .86, .87, &
222 & .88, .89, .90, .91, .92, .93, .94, .95, &
223 & .96, .97, .98, .99/
225 data aerosolname /
'DUST',
'SALT',
'SUSO',
'SOOT',
'WASO'/
227 data indx_ext / 610, 611, 612, 613, 614 /
228 data indx_sca / 651, 652, 653, 654, 655 /
229 logical,
parameter :: debugprint = .false.
230 logical :: model_pwat
246 IF (iget(030)>0.OR.iget(572)>0)
THEN
256 IF(modelname ==
'RAPR')
THEN
260 IF(egrid1(i,j) < spval) grid1(i,j) = egrid1(i,j)
267 IF(egrid1(i,j) < spval) grid1(i,j) = egrid1(i,j) + tfrz
272 if(iget(030) > 0)
then
273 if(grib ==
"grib2" )
then
275 fld_info(cfld)%ifld = iavblfld(iget(030))
281 datapd(i,j,cfld) = grid1(ii,jj)
287 if(iget(572) > 0)
then
288 if(grib ==
"grib2" )
then
290 fld_info(cfld)%ifld = iavblfld(iget(572))
297 if (grid1(ii,jj) /= spval) grid1(ii,jj) = grid1(ii,jj) - tfrz
298 datapd(i,j,cfld) = grid1(ii,jj)
310 IF ((iget(032) > 0))
THEN
313 IF ( (lvls(1,iget(032))>0) )
THEN
318 CALL calcape(itype,dpbnd,dummy,dummy,dummy,idummy,egrid1,egrid2, &
323 IF(fis(i,j) < spval) grid1(i,j) = egrid1(i,j)
326 CALL bound(grid1,d00,h99999)
327 if(grib ==
"grib2" )
then
329 fld_info(cfld)%ifld = iavblfld(iget(032))
335 datapd(i,j,cfld) = grid1(ii,jj)
343 IF ((iget(107) > 0))
THEN
346 IF ( (lvls(1,iget(107)) > 0) )
THEN
347 IF ((iget(032) > 0))
THEN
348 IF ( (lvls(1,iget(032)) > 0) )
THEN
352 IF(fis(i,j) < spval) grid1(i,j) = - egrid2(i,j)
361 CALL calcape(itype,dpbnd,dummy,dummy,dummy,idummy,egrid1,egrid2, &
366 IF(fis(i,j) < spval) grid1(i,j) = - egrid2(i,j)
370 CALL bound(grid1,d00,h99999)
374 IF(fis(i,j) < spval) grid1(i,j) = - grid1(i,j)
377 if(grib ==
"grib2" )
then
379 fld_info(cfld)%ifld = iavblfld(iget(107))
385 datapd(i,j,cfld) = grid1(ii,jj)
395 IF (iget(080) > 0)
THEN
401 IF(abs(pwat(i,j)-spval)>small)
THEN
410 grid1(i,j) = pwat(i,j)
414 CALL calpw(grid1(ista:iend,jsta:jend),1)
417 IF(fis(i,j) >= spval) grid1(i,j)=spval
421 CALL bound(grid1,d00,h99999)
422 if(grib ==
"grib2" )
then
424 fld_info(cfld)%ifld = iavblfld(iget(080))
430 datapd(i,j,cfld) = grid1(ii,jj)
439 IF (iget(735) > 0)
THEN
440 CALL calpw(grid1(ista:iend,jsta:jend),19)
441 CALL bound(grid1,d00,h99999)
442 if(grib ==
"grib2" )
then
444 fld_info(cfld)%ifld = iavblfld(iget(735))
450 datapd(i,j,cfld) = grid1(ii,jj)
459 IF (iget(736) > 0)
THEN
460 CALL calpw(grid1(ista:iend,jsta:iend),18)
461 CALL bound(grid1,d00,h99999)
462 if(grib ==
"grib2" )
then
464 fld_info(cfld)%ifld = iavblfld(iget(736))
470 datapd(i,j,cfld) = grid1(ii,jj)
477 IF (iget(200) > 0 .or. iget(575) > 0)
THEN
480 IF (modelname ==
'RAPR')
THEN
483 IF(lwp(i,j) < spval) grid1(i,j) = lwp(i,j)/1000.0
487 CALL calpw(grid1(ista:iend,jsta:jend),2)
488 IF(modelname ==
'GFS')
then
490 CALL calpw(grid2(ista:iend,jsta:jend),3)
494 IF(grid1(i,j)<spval.and.grid2(i,j)<spval)
THEN
495 grid1(i,j) = grid1(i,j) + grid2(i,j)
504 CALL bound(grid1,d00,h99999)
505 if(iget(200) > 0)
then
506 if(grib ==
"grib2" )
then
508 fld_info(cfld)%ifld = iavblfld(iget(200))
514 datapd(i,j,cfld) = grid1(ii,jj)
519 if(iget(575) > 0)
then
520 if(grib ==
"grib2" )
then
522 fld_info(cfld)%ifld = iavblfld(iget(575))
528 datapd(i,j,cfld) = grid1(ii,jj)
537 IF (iget(201) > 0)
THEN
539 IF (modelname ==
'RAPR')
THEN
542 IF(iwp(i,j) < spval) grid1(i,j) = iwp(i,j)/1000.0
546 CALL calpw(grid1(ista:iend,jsta:jend),3)
548 CALL bound(grid1,d00,h99999)
549 if(grib ==
"grib2" )
then
551 fld_info(cfld)%ifld = iavblfld(iget(201))
557 datapd(i,j,cfld) = grid1(ii,jj)
564 IF (iget(202) > 0)
THEN
565 CALL calpw(grid1(ista:iend,jsta:jend),4)
566 CALL bound(grid1,d00,h99999)
567 if(grib==
"grib2" )
then
569 fld_info(cfld)%ifld=iavblfld(iget(202))
575 datapd(i,j,cfld) = grid1(ii,jj)
582 IF (iget(203) > 0)
THEN
583 CALL calpw(grid1(ista:iend,jsta:jend),5)
584 CALL bound(grid1,d00,h99999)
585 if(grib==
"grib2" )
then
587 fld_info(cfld)%ifld=iavblfld(iget(203))
593 datapd(i,j,cfld) = grid1(ii,jj)
601 IF (iget(428) > 0)
THEN
602 CALL calpw(grid1(ista:iend,jsta:jend),16)
603 CALL bound(grid1,d00,h99999)
604 if(grib==
"grib2" )
then
606 fld_info(cfld)%ifld=iavblfld(iget(428))
612 datapd(i,j,cfld) = grid1(ii,jj)
620 IF (iget(204) > 0)
THEN
621 CALL calpw(grid1(ista:iend,jsta:jend),6)
622 CALL bound(grid1,d00,h99999)
623 if(grib==
"grib2" )
then
625 fld_info(cfld)%ifld=iavblfld(iget(204))
631 datapd(i,j,cfld) = grid1(ii,jj)
638 IF (iget(285) > 0)
THEN
639 CALL calpw(grid1(ista:iend,jsta:jend),7)
640 CALL bound(grid1,d00,h99999)
641 if(grib==
"grib2" )
then
643 fld_info(cfld)%ifld=iavblfld(iget(285))
649 datapd(i,j,cfld) = grid1(ii,jj)
656 IF (iget(286) > 0)
THEN
657 CALL calpw(grid1(ista:iend,jsta:jend),8)
658 CALL bound(grid1,d00,h99999)
659 if(grib==
"grib2" )
then
661 fld_info(cfld)%ifld=iavblfld(iget(286))
667 datapd(i,j,cfld) = grid1(ii,jj)
674 IF (iget(290) > 0)
THEN
675 CALL calpw(grid1(ista:iend,jsta:jend),9)
676 if(grib==
"grib2" )
then
678 fld_info(cfld)%ifld=iavblfld(iget(290))
684 datapd(i,j,cfld) = grid1(ii,jj)
691 IF (iget(291) > 0)
THEN
692 CALL calpw(grid1(ista:iend,jsta:jend),10)
693 if(grib==
"grib2" )
then
695 fld_info(cfld)%ifld=iavblfld(iget(291))
701 datapd(i,j,cfld) = grid1(ii,jj)
708 IF (iget(292) > 0)
THEN
709 CALL calpw(grid1(ista:iend,jsta:jend),11)
718 IF(grid1(i,j) < spval) grid1(i,j) = grid1(i,j)*rrnum
723 IF (itheat /= 0)
THEN
724 ifincr = mod(ifhr,itheat)
729 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
736 IF(ifmin >= 1)id(18)=id(18)*60
737 IF (id(18)<0) id(18) = 0
738 if(grib==
"grib2" )
then
740 fld_info(cfld)%ifld=iavblfld(iget(292))
742 fld_info(cfld)%ntrange=1
744 fld_info(cfld)%ntrange=0
746 fld_info(cfld)%tinvstat=ifhr-id(18)
752 datapd(i,j,cfld) = grid1(ii,jj)
759 IF (iget(293) > 0)
THEN
760 CALL calpw(grid1(ista:iend,jsta:jend),12)
769 IF(grid1(i,j) < spval) grid1(i,j) = grid1(i,j)*rrnum
774 IF (itheat /= 0)
THEN
775 ifincr = mod(ifhr,itheat)
780 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
787 IF(ifmin >= 1)id(18)=id(18)*60
788 IF (id(18)<0) id(18) = 0
789 if(grib==
"grib2" )
then
791 fld_info(cfld)%ifld=iavblfld(iget(293))
793 fld_info(cfld)%ntrange=1
795 fld_info(cfld)%ntrange=0
797 fld_info(cfld)%tinvstat=ifhr-id(18)
803 datapd(i,j,cfld) = grid1(ii,jj)
810 IF (iget(295)>0)
THEN
811 CALL calpw(grid1(ista:iend,jsta:jend),13)
812 if(grib==
"grib2" )
then
814 fld_info(cfld)%ifld=iavblfld(iget(295))
815 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
820 IF (iget(312)>0)
THEN
821 CALL calpw(grid1(ista:iend,jsta:jend),14)
822 if(grib==
"grib2" )
then
824 fld_info(cfld)%ifld=iavblfld(iget(312))
825 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
830 IF (iget(299) > 0)
THEN
831 CALL calpw(grid1(ista:iend,jsta:jend),15)
832 if(grib==
"grib2" )
then
834 fld_info(cfld)%ifld=iavblfld(iget(299))
840 datapd(i,j,cfld) = grid1(ii,jj)
847 IF (iget(287)>0 .OR. iget(288)>0)
THEN
856 qcld=qqw(i,j,l)+qqr(i,j,l)
857 IF (qcld>=qcldmin .AND. t(i,j,l)<tfrz)
THEN
866 grid1(i,j)=zint(i,j,lbot+1)
868 qcld=qqw(i,j,l)+qqr(i,j,l)
869 IF (qcld>=qcldmin .AND. t(i,j,l)<tfrz)
THEN
875 grid2(i,j)=zint(i,j,ltop)
879 IF (iget(287)>0)
THEN
880 if(grib==
"grib2" )
then
882 fld_info(cfld)%ifld=iavblfld(iget(287))
883 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
886 IF (iget(288)>0)
THEN
890 grid1(i,j)=grid2(i,j)
893 if(grib==
"grib2" )
then
895 fld_info(cfld)%ifld=iavblfld(iget(288))
901 datapd(i,j,cfld) = grid1(ii,jj)
911 IF (iget(197)>0)
THEN
914 grid1(i,j) = cldefi(i,j)
917 if(grib==
"grib2" )
then
919 fld_info(cfld)%ifld=iavblfld(iget(197))
920 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
924 IF ((modelname==
'NMM' .AND. gridtype==
'B') .OR. &
925 modelname==
'FV3R')
THEN
944 if(grib ==
"grib2" )
then
949 write (0,*)
'numr,dyval,DY_m=',numr,dyval,dy_m
953 if(cfr(i,j,l)<spval)
then
954 full_cld(i,j)=cfr(i,j,l)
962 CALL collect_all(full_cld(ista:iend,jsta:jend),full_dummy)
968 DO jc=max(1,j-numr),min(jm,j+numr)
969 DO ic=max(1,i-numr),min(im,i+numr)
971 IF(full_cld(ic,jc) /= spval)
THEN
973 frac=frac+full_cld(ic,jc)
980 IF (numpts>0) frac=frac/
REAL(numpts)
981 if(pmid(i,j,l)<spval)
then
983 IF (pcldbase>=ptop_low)
THEN
984 cfracl(i,j)=max(cfracl(i,j),frac)
985 ELSE IF (pcldbase>=ptop_mid)
THEN
986 cfracm(i,j)=max(cfracm(i,j),frac)
988 cfrach(i,j)=max(cfrach(i,j),frac)
990 tcld(i,j)=max(tcld(i,j),frac)
1001 ELSEIF (modelname==
'GFS')
THEN
1020 pcldbase=pmid(i,j,l)
1021 IF (pcldbase>=ptop_low)
THEN
1022 cfracl(i,j)=max(cfracl(i,j),frac)
1023 ELSE IF (pcldbase>=ptop_mid)
THEN
1024 cfracm(i,j)=max(cfracm(i,j),frac)
1026 cfrach(i,j)=max(cfrach(i,j),frac)
1028 tcld(i,j)=max(tcld(i,j),frac)
1037 IF (iget(799)>0)
THEN
1043 IF (zmid(i,j,lm-k+1) <= pblh(i,j)+1000.0)
THEN
1044 grid1(i,j)=max(grid1(i,j),cfr(i,j,lm-k+1)*100.0)
1049 if(grib==
"grib2" )
then
1051 fld_info(cfld)%ifld=iavblfld(iget(799))
1052 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1057 IF (iget(037) > 0)
THEN
1061 IF(cfracl(i,j) < spval)
then
1062 grid1(i,j) = cfracl(i,j)*100.
1068 if(grib==
"grib2" )
then
1070 fld_info(cfld)%ifld=iavblfld(iget(037))
1076 datapd(i,j,cfld) = grid1(ii,jj)
1083 IF (iget(300) > 0)
THEN
1087 IF(avgcfracl(i,j) < spval)
then
1088 grid1(i,j) = avgcfracl(i,j)*100.
1095 itclod = nint(tclod)
1096 IF(itclod /= 0)
then
1097 ifincr = mod(ifhr,itclod)
1098 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1104 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1107 id(18) = ifhr-itclod
1109 id(18) = ifhr-ifincr
1110 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1112 IF (id(18)<0) id(18) = 0
1113 if(grib==
"grib2" )
then
1115 fld_info(cfld)%ifld=iavblfld(iget(300))
1117 fld_info(cfld)%ntrange=1
1119 fld_info(cfld)%ntrange=0
1121 fld_info(cfld)%tinvstat=ifhr-id(18)
1127 datapd(i,j,cfld) = grid1(ii,jj)
1134 IF (iget(038) > 0)
THEN
1139 IF(cfracm(i,j) < spval)
then
1140 grid1(i,j) = cfracm(i,j)*100.
1146 if(grib==
"grib2" )
then
1148 fld_info(cfld)%ifld=iavblfld(iget(038))
1154 datapd(i,j,cfld) = grid1(ii,jj)
1161 IF (iget(301) > 0)
THEN
1165 IF(abs(avgcfracm(i,j)-spval)>small)
THEN
1166 grid1(i,j) = avgcfracm(i,j)*100.
1173 itclod = nint(tclod)
1174 IF(itclod /= 0)
then
1175 ifincr = mod(ifhr,itclod)
1176 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1182 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1185 id(18) = ifhr-itclod
1187 id(18) = ifhr-ifincr
1188 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1190 IF (id(18)<0) id(18) = 0
1191 if(grib==
"grib2" )
then
1193 fld_info(cfld)%ifld=iavblfld(iget(301))
1195 fld_info(cfld)%ntrange=1
1197 fld_info(cfld)%ntrange=0
1199 fld_info(cfld)%tinvstat=ifhr-id(18)
1205 datapd(i,j,cfld) = grid1(ii,jj)
1212 IF (iget(039)>0)
THEN
1217 IF(cfrach(i,j) < spval)
then
1218 grid1(i,j) = cfrach(i,j)*100.
1224 if(grib==
"grib2" )
then
1226 fld_info(cfld)%ifld=iavblfld(iget(039))
1232 datapd(i,j,cfld) = grid1(ii,jj)
1239 IF (iget(302) > 0)
THEN
1244 IF(avgcfrach(i,j) < spval)
then
1245 grid1(i,j) = avgcfrach(i,j)*100.
1252 itclod = nint(tclod)
1253 IF(itclod /= 0)
then
1254 ifincr = mod(ifhr,itclod)
1255 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1261 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1264 id(18) = ifhr-itclod
1266 id(18) = ifhr-ifincr
1267 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1269 IF (id(18)<0) id(18) = 0
1270 if(grib==
"grib2" )
then
1272 fld_info(cfld)%ifld=iavblfld(iget(302))
1274 fld_info(cfld)%ntrange=1
1276 fld_info(cfld)%ntrange=0
1278 fld_info(cfld)%tinvstat=ifhr-id(18)
1284 datapd(i,j,cfld) = grid1(ii,jj)
1291 IF ((iget(161) > 0) .OR. (iget(260) > 0))
THEN
1293 IF(modelname==
'NCAR' .OR. modelname==
'RAPR')
THEN
1300 egrid1(i,j)=max(egrid1(i,j),cfr(i,j,l))
1305 ELSE IF (modelname==
'NMM'.OR.modelname==
'FV3R' &
1306 .OR. modelname==
'GFS')
THEN
1314 egrid1(i,j)=tcld(i,j)
1321 IF(abs(egrid1(i,j)-spval) > small)
THEN
1322 grid1(i,j) = egrid1(i,j)*100.
1323 tcld(i,j) = egrid1(i,j)*100.
1327 IF (iget(161)>0)
THEN
1328 if(grib==
"grib2" )
then
1330 fld_info(cfld)%ifld=iavblfld(iget(161))
1336 datapd(i,j,cfld) = grid1(ii,jj)
1344 IF (iget(144) > 0)
THEN
1346 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
1350 IF(abs(avgtcdc(i,j)-spval) > small)
then
1351 grid1(i,j) = avgtcdc(i,j)*100.
1358 ELSE IF(modelname ==
'NMM')
THEN
1369 IF (ncfrst(i,j)<spval.and.acfrst(i,j)<spval)
THEN
1370 IF (ncfrst(i,j) > 0) rsum=acfrst(i,j)/ncfrst(i,j)
1371 IF (ncfrcv(i,j) > 0) &
1372 rsum=max(rsum, acfrcv(i,j)/ncfrcv(i,j))
1373 grid1(i,j) = rsum*100.
1380 IF(modelname ==
'NMM' .OR. modelname ==
'GFS' .OR. &
1381 modelname ==
'FV3R')
THEN
1383 itclod = nint(tclod)
1384 IF(itclod /= 0)
then
1385 ifincr = mod(ifhr,itclod)
1386 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1392 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1395 id(18) = ifhr-itclod
1397 id(18) = ifhr-ifincr
1398 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1400 IF (id(18)<0) id(18) = 0
1402 if(grib==
"grib2" )
then
1404 fld_info(cfld)%ifld=iavblfld(iget(144))
1406 fld_info(cfld)%ntrange=1
1408 fld_info(cfld)%ntrange=0
1410 fld_info(cfld)%tinvstat=ifhr-id(18)
1416 datapd(i,j,cfld) = grid1(ii,jj)
1423 IF (iget(139)>0)
THEN
1424 IF(modelname /=
'NMM')
THEN
1429 IF (ncfrst(i,j)<spval.and.acfrst(i,j)<spval)
THEN
1430 IF (ncfrst(i,j)>0.0)
THEN
1431 grid1(i,j) = acfrst(i,j)/ncfrst(i,j)*100.
1441 IF(modelname==
'NMM' .or. modelname==
'FV3R')
THEN
1443 itclod = nint(tclod)
1444 IF(itclod /= 0)
then
1445 ifincr = mod(ifhr,itclod)
1446 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1451 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1454 id(18) = ifhr-itclod
1456 id(18) = ifhr-ifincr
1457 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1459 IF (id(18)<0) id(18) = 0
1461 if(grib==
"grib2" )
then
1463 fld_info(cfld)%ifld=iavblfld(iget(139))
1465 fld_info(cfld)%ntrange=1
1467 fld_info(cfld)%ntrange=0
1469 fld_info(cfld)%tinvstat=ifhr-id(18)
1470 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1475 IF (iget(143)>0)
THEN
1476 IF(modelname /=
'NMM')
THEN
1481 IF (ncfrcv(i,j)<spval.and.acfrcv(i,j)<spval)
THEN
1482 IF (ncfrcv(i,j)>0.0)
THEN
1483 grid1(i,j) = acfrcv(i,j)/ncfrcv(i,j)*100.
1493 IF(modelname==
'NMM')
THEN
1495 itclod = nint(tclod)
1496 IF(itclod /= 0)
then
1497 ifincr = mod(ifhr,itclod)
1498 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1503 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1506 id(18) = ifhr-itclod
1508 id(18) = ifhr-ifincr
1509 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1511 IF (id(18)<0) id(18) = 0
1513 if(grib==
"grib2" )
then
1515 fld_info(cfld)%ifld=iavblfld(iget(143))
1517 fld_info(cfld)%ntrange=1
1519 fld_info(cfld)%ntrange=0
1521 fld_info(cfld)%tinvstat=ifhr-id(18)
1522 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1527 IF((iget(148)>0) .OR. (iget(149)>0) .OR. &
1528 (iget(168)>0) .OR. (iget(178)>0) .OR. &
1529 (iget(179)>0) .OR. (iget(194)>0) .OR. &
1530 (iget(408)>0) .OR. &
1531 (iget(409)>0) .OR. (iget(406)>0) .OR. &
1532 (iget(195)>0) .OR. (iget(260)>0) .OR. &
1554 if (hbot(i,j) /= spval)
then
1555 ibotcu(i,j) = nint(hbot(i,j))
1557 if (hbotd(i,j) /= spval)
then
1558 ibotdcu(i,j) = nint(hbotd(i,j))
1560 if (hbots(i,j) /= spval)
then
1561 ibotscu(i,j) = nint(hbots(i,j))
1563 if (htop(i,j) /= spval)
then
1564 itopcu(i,j) = nint(htop(i,j))
1566 if (htopd(i,j) /= spval)
then
1567 itopdcu(i,j) = nint(htopd(i,j))
1569 if (htops(i,j) /= spval)
then
1570 itopscu(i,j) = nint(htops(i,j))
1572 IF (ibotcu(i,j)-itopcu(i,j) <= 1)
THEN
1576 IF (ibotdcu(i,j)-itopdcu(i,j) <= 1)
THEN
1580 IF (ibotscu(i,j)-itopscu(i,j) <= 1)
THEN
1586 IF (itop > 0 .AND. itop < 100)
THEN
1589 IF (itop > 0 .AND. itop <= nint(lmh(i,j)))
THEN
1590 cldzcu(i,j) = zmid(i,j,itop)
1592 cldzcu(i,j) = -5000.
1601 if(modelname ==
'RAPR')
then
1603 DO l=nint(lmh(i,j)),1,-1
1604 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1605 IF (qcld >= qcldmin)
THEN
1611 DO l=1,nint(lmh(i,j))
1612 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1613 IF (qcld >= qcldmin)
THEN
1620 zpbltop = pblh(i,j)+zint(i,j,nint(lmh(i,j))+1)
1621 DO l=nint(lmh(i,j)),1,-1
1622 qcld = qqw(i,j,l)+qqi(i,j,l)
1623 IF (qcld >= qcldmin)
THEN
1627 snow_check:
IF (qqs(i,j,l)>=qcldmin)
THEN
1630 qsat=pq0/pmid(i,j,l)*exp(a2*(tmp-a3)/(tmp-a4))
1634 qsat=pq0/pmid(i,j,l)*exp(21.8745584*(tmp-a3)/(tmp-7.66))
1637 IF (rhum>=0.98 .AND. zmid(i,j,l)>=zpbltop)
THEN
1644 DO l=1,nint(lmh(i,j))
1645 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1646 IF (qcld >= qcldmin)
THEN
1654 IF(modelname ==
'NCAR' .OR. modelname ==
'RAPR')
THEN
1655 ibott(i,j) = ibotgr(i,j)
1656 itopt(i,j) = itopgr(i,j)
1658 ibott(i,j) = max(ibotgr(i,j), ibotcu(i,j))
1661 itopt(i,j) = min(itopgr(i,j), itopcu(i,j))
1668 IF (iget(758)>0)
THEN
1672 grid1(i,j) = cldzcu(i,j)
1675 if(grib==
"grib2" )
then
1677 fld_info(cfld)%ifld=iavblfld(iget(758))
1678 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1688 IF ((iget(148)>0) .OR. (iget(178)>0) .OR.(iget(260)>0) )
THEN
1692 IF(modelname ==
'RAPR')
then
1696 ELSE IF (ibot <= nint(lmh(i,j)))
THEN
1697 cldp(i,j) = pmid(i,j,ibot)
1698 IF (ibot == lm)
THEN
1699 cldz(i,j) = zint(i,j,lm)
1701 cldz(i,j) = htm(i,j,ibot+1)*t(i,j,ibot+1) &
1702 *(q(i,j,ibot+1)*d608+h1)*rog* &
1703 (log(pint(i,j,ibot+1))-log(cldp(i,j)))&
1708 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
1709 cldp(i,j) = pmid(i,j,ibot)
1710 cldz(i,j) = zmid(i,j,ibot)
1719 IF (iget(148)>0)
THEN
1722 grid1(i,j) = cldp(i,j)
1725 if(grib==
"grib2" )
then
1727 fld_info(cfld)%ifld=iavblfld(iget(148))
1728 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1732 IF (iget(178)>0)
THEN
1736 grid1(i,j) = cldz(i,j)
1739 if(grib==
"grib2" )
then
1741 fld_info(cfld)%ifld=iavblfld(iget(178))
1742 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1750 IF (iget(408)>0)
THEN
1768 cloud_def_p = 0.0000001
1777 watericemax = -99999.
1780 watericetotal(k) = qqw(i,j,ll) + qqi(i,j,ll)
1781 watericemax = max(watericemax,watericetotal(k))
1784 if (watericemax>=cloud_def_p)
then
1791 pabovesfc(k) = pint(i,j,lm) - pint(i,j,lm-k+1)
1792 if (watericetotal(k)<cloud_def_p)
then
1796 wimin = min(wimin,watericetotal(k1))
1798 if (wimin>cloud_def_p)
then
1799 nfogn(k)= nfogn(k)+1
1808 if (watericetotal(k)<cloud_def_p)
then
1809 if (watericetotal(1)>cloud_def_p)
then
1812 if (watericetotal(k1)>=cloud_def_p)
then
1813 watericetotal(k1)=0.
1831 if (watericetotal(k)>cloud_def_p)
then
1835 zcldbase = zmid(i,j,lm-k1+1)
1836 pcldbase = pmid(i,j,lm-k1+1)
1839 zcldbase = zmid(i,j,lm-k1+1) + (cloud_def_p-watericetotal(k1)) &
1840 * (zmid(i,j,lm-k1+2)-zmid(i,j,lm-k1+1)) &
1841 / (watericetotal(k1-1) - watericetotal(k1))
1842 pcldbase = pmid(i,j,lm-k1+1) + (cloud_def_p-watericetotal(k1)) &
1843 * (pmid(i,j,lm-k1+2)-pmid(i,j,lm-k1+1)) &
1844 / (watericetotal(k1-1) - watericetotal(k1))
1846 zcldbase = max(zcldbase,fis(i,j)*gi+5.)
1852 if (qqs(i,j,lm)>0.)
then
1853 tv=t(i,j,lm)*(h1+d608*q(i,j,lm))
1854 rhoair=pmid(i,j,lm)/(rd*tv)
1855 vovermd = (1.+q(i,j,lm))/rhoair + qqs(i,j,lm)/rhoice
1856 concfp = qqs(i,j,lm)/vovermd*1000.
1857 betav = coeffp*concfp**exponfp + 1.e-10
1858 vertvis = 1000.*min(90., const1/betav)
1859 if (vertvis < zcldbase-fis(i,j)*gi )
then
1860 zcldbase = fis(i,j)*gi + vertvis
1861 loop3741:
do k2=2,lm
1863 if (zmid(i,j,lm-k2+1) > zcldbase)
then
1864 pcldbase = pmid(i,j,lm-k1+2) + (zcldbase-zmid(i,j,lm-k1+2)) &
1865 *(pmid(i,j,lm-k1+1)-pmid(i,j,lm-k1+2) ) &
1866 /(zmid(i,j,lm-k1+1)-zmid(i,j,lm-k1+2) )
1878 cldz(i,j) = zcldbase
1879 cldp(i,j) = pcldbase
1892 pol = 0.99999683 + tx*(-0.90826951e-02 + &
1893 tx*(0.78736169e-04 + tx*(-0.61117958e-06 + &
1894 tx*(0.43884187e-08 + tx*(-0.29883885e-10 + &
1895 tx*(0.21874425e-12 + tx*(-0.17892321e-14 + &
1896 tx*(0.11112018e-16 + tx*(-0.30994571e-19)))))))))
1900 e = pmid(i,j,ll)/100.*q(i,j,ll)/(0.62197+q(i,j,ll)*0.37803)
1901 rhb(k) = 100.*min(1.,e/es)
1909 zsf=zint(i,j,nint(lmh(i,j))+1)
1910 zpbltop = pblh(i,j)+zsf
1917 if (zpbltop<zmid(i,j,lm-k2+1))
then
1918 if (rhb(k2-1)>95. )
then
1919 zcldbase = zmid(i,j,lm-k2+2)
1920 if (cldz(i,j)<-100.)
then
1922 cldz(i,j) = zcldbase
1923 cldp(i,j) = pmid(i,j,lm-k2+2)
1926 if ( zcldbase<cldz(i,j))
then
1927 cldz(i,j) = zcldbase
1937 if(cldz(i,j)<-100.)
then
1938 cldz(i,j)=zmid(i,j,ibot)
1940 if(zmid(i,j,ibot)<cldz(i,j))
then
1941 cldz(i,j)=zmid(i,j,ibot)
1949 write(6,*)
'No. pts with PBL-cloud =',npblcld
1950 write(6,*)
'No. pts to eliminate fog =',nfog
1952 write(6,*)
'No. pts with fog below lev',k,
' =',nfogn(k)
1958 zcld = cldz(i,j) - fis(i,j)*gi
1959 if (cldz(i,j)>=0..and.zcld<160.) nlifr = nlifr+1
1962 write(6,*)
'No. pts w/ LIFR ceiling =',nlifr
1965 IF (iget(408)>0)
THEN
1969 grid1(i,j) = cldz(i,j)
1972 if(grib==
"grib2" )
then
1974 fld_info(cfld)%ifld=iavblfld(iget(408))
1975 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1983 IF (iget(487)>0)
THEN
1990 ceiling_thresh_cldfra = 0.5
1999 cldfra(k) = cfr(i,j,ll)
2000 cldfra_max = max(cldfra_max,cldfra(k))
2003 if (cldfra_max >= ceiling_thresh_cldfra)
then
2008 if (cldfra(k) < ceiling_thresh_cldfra)
then
2009 if (cldfra(1) > ceiling_thresh_cldfra)
then
2011 if (cldfra(k1) >= ceiling_thresh_cldfra)
then
2024 if (cldfra(k) >= ceiling_thresh_cldfra)
then
2026 zceil = zmid(i,j,lm-k1+1)
2028 zceil = zmid(i,j,lm-k1+1) + (ceiling_thresh_cldfra-cldfra(k1)) &
2029 * (zmid(i,j,lm-k1+2)-zmid(i,j,lm-k1+1)) &
2030 / (cldfra(k1-1) - cldfra(k1))
2032 zceil = max(zceil,fis(i,j)*gi+5.)
2036 if (qqs(i,j,lm)>0.)
then
2037 tv=t(i,j,lm)*(h1+d608*q(i,j,lm))
2038 rhoair=pmid(i,j,lm)/(rd*tv)
2039 vovermd = (1.+q(i,j,lm))/rhoair + qqs(i,j,lm)/rhoice
2040 concfp = qqs(i,j,lm)/vovermd*1000.
2041 betav = coeffp*concfp**exponfp + 1.e-10
2042 vertvis = 1000.*min(90., const1/betav)
2043 if (vertvis < zceil-fis(i,j)*gi )
then
2044 zceil = fis(i,j)*gi + vertvis
2060 grid1(i,j) = ceil(i,j)
2063 if(grib==
"grib2" )
then
2065 fld_info(cfld)%ifld=iavblfld(iget(487))
2066 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2080 IF ((iget(711)>0) .OR. (iget(798)>0))
THEN
2082 ceiling_thresh_cldfra = 0.4
2100 cldfra(k) = cfr(i,j,lm-k+1)
2107 if (cldfra(1) >= ceiling_thresh_cldfra)
then
2109 if (cldfra(k) < 0.6)
then
2117 if (cldfra(k) >= ceiling_thresh_cldfra)
then
2119 zceil1 = zmid(i,j,lm-k+1)
2121 zceil1 = zmid(i,j,lm-k+1) + (ceiling_thresh_cldfra-cldfra(k)) &
2122 * (zmid(i,j,lm-k+2)-zmid(i,j,lm-k+1)) &
2123 / (cldfra(k-1) - cldfra(k))
2143 cfr_layer_sum(1:lm)=0.0
2146 if ( (cldfra(k) >= 0.05 ) .and. &
2147 (cldfra(k) > cldfra(k-1)) .and. &
2148 (cldfra(k) >= cldfra(k+1)) ) &
2158 cfr_layer_sum(k) = min(1.0, previous_sum + cldfra(k))
2159 previous_sum = min(1.0, cfr_layer_sum(k))
2161 if (cfr_layer_sum(k) >= ceiling_thresh_cldfra)
then
2162 zceil2 = zmid(i,j,lm-k+1) + (ceiling_thresh_cldfra-cfr_layer_sum(k)) &
2163 * (zmid(i,j,lm-k+2)-zmid(i,j,lm-k+1)) &
2164 / (cfr_layer_sum(k-1) - cfr_layer_sum(k))
2172 zceil = min(zceil1,zceil2)
2177 if (qqs(i,j,lm)>1.e-10)
then
2178 tv=t(i,j,lm)*(h1+d608*q(i,j,lm))
2179 rhoair=pmid(i,j,lm)/(rd*tv)
2180 vovermd = (1.+q(i,j,lm))/rhoair + qqs(i,j,lm)/rhoice
2181 concfp = qqs(i,j,lm)/vovermd*1000.
2182 betav = coeffp*concfp**exponfp + 1.e-10
2183 vertvis = 1000.*min(90., const1/betav)
2184 if (vertvis < zceil-fis(i,j)*gi )
then
2186 zceil = fis(i,j)*gi + vertvis
2206 allocate(full_ceil(im,jm),full_fis(im,jm))
2209 full_ceil(i,j)=ceil(i,j)
2210 full_fis(i,j)=fis(i,j)
2215 CALL collect_all(full_ceil(ista:iend,jsta:jend),full_dummy)
2216 full_ceil=full_dummy
2219 CALL collect_all(full_fis(ista:iend,jsta:jend),full_dummy)
2225 ceil_min = max( ceil(i,j)-fis(i,j)*gi , 5.0)
2226 do jc = max(1,j-numr),min(jm,j+numr)
2227 do ic = max(1,i-numr),min(im,i+numr)
2228 ceil_neighbor = max( full_ceil(ic,jc)-full_fis(ic,jc)*gi , 5.0)
2229 ceil_min = min( ceil_min, ceil_neighbor )
2232 cldz(i,j) = ceil_min + fis(i,j)*gi
2233 cldz(i,j) = max(min(cldz(i,j), 20000.0),0.0)
2236 if ( zmid(i,j,lm-k+1) >= cldz(i,j) )
then
2237 cldp(i,j) = pmid(i,j,lm-k+2) + (cldz(i,j)-zmid(i,j,lm-k+2)) &
2238 *(pmid(i,j,lm-k+1)-pmid(i,j,lm-k+2) ) &
2239 /(zmid(i,j,lm-k+1)-zmid(i,j,lm-k+2) )
2245 if (
allocated(full_ceil))
deallocate(full_ceil)
2246 if (
allocated(full_fis))
deallocate(full_fis)
2249 IF (iget(711)>0)
THEN
2253 grid1(i,j) = cldz(i,j)
2256 if(grib==
"grib2" )
then
2258 fld_info(cfld)%ifld=iavblfld(iget(711))
2259 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2264 IF (iget(798)>0)
THEN
2268 grid1(i,j) = cldp(i,j)
2271 if(grib==
"grib2" )
then
2273 fld_info(cfld)%ifld=iavblfld(iget(798))
2274 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2282 IF (iget(260)>0)
THEN
2283 CALL calceiling(cldz,tcld,ceiling)
2286 grid1(i,j) = ceiling(i,j)
2289 if(grib==
"grib2" )
then
2291 fld_info(cfld)%ifld=iavblfld(iget(260))
2292 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2296 IF (iget(261) > 0)
THEN
2297 CALL calfltcnd(ceiling,grid1(1,jsta))
2303 if(grib==
"grib2" )
then
2305 fld_info(cfld)%ifld=iavblfld(iget(261))
2311 datapd(i,j,cfld) = grid1(ii,jj)
2319 IF (iget(188) > 0)
THEN
2320 IF(modelname ==
'GFS')
THEN
2324 grid1(i,j) = pbot(i,j)
2331 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2332 grid1(i,j) = pmid(i,j,ibot)
2334 grid1(i,j) = -50000.
2339 if(grib==
"grib2" )
then
2341 fld_info(cfld)%ifld=iavblfld(iget(188))
2347 datapd(i,j,cfld) = grid1(ii,jj)
2355 IF (iget(192) > 0)
THEN
2359 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2360 grid1(i,j) = pmid(i,j,ibot)
2362 grid1(i,j) = -50000.
2366 if(grib==
"grib2" )
then
2368 fld_info(cfld)%ifld=iavblfld(iget(192))
2369 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2374 IF (iget(190) > 0)
THEN
2378 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2379 grid1(i,j) = pmid(i,j,ibot)
2381 grid1(i,j) = -50000.
2385 if(grib==
"grib2" )
then
2387 fld_info(cfld)%ifld=iavblfld(iget(190))
2388 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2393 IF (iget(194) > 0)
THEN
2397 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2398 grid1(i,j) = pmid(i,j,ibot)
2400 grid1(i,j) = -50000.
2404 if(grib==
"grib2" )
then
2406 fld_info(cfld)%ifld=iavblfld(iget(194))
2407 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2413 IF (iget(303) > 0)
THEN
2417 grid1(i,j) = pbotl(i,j)
2424 itclod = nint(tclod)
2425 IF(itclod /= 0)
then
2426 ifincr = mod(ifhr,itclod)
2427 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2432 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2435 id(18) = ifhr-itclod
2437 id(18) = ifhr-ifincr
2438 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2440 IF (id(18)<0) id(18) = 0
2441 if(grib==
"grib2" )
then
2443 fld_info(cfld)%ifld=iavblfld(iget(303))
2445 fld_info(cfld)%ntrange=0
2447 fld_info(cfld)%ntrange=1
2449 fld_info(cfld)%tinvstat=ifhr-id(18)
2451 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2456 IF (iget(306) > 0)
THEN
2459 IF(pbotm(i,j) > small)
THEN
2460 grid1(i,j) = pbotm(i,j)
2467 itclod = nint(tclod)
2468 IF(itclod /= 0)
then
2469 ifincr = mod(ifhr,itclod)
2470 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2475 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2478 id(18) = ifhr-itclod
2480 id(18) = ifhr-ifincr
2481 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2483 IF (id(18)<0) id(18) = 0
2484 if(grib==
"grib2" )
then
2486 fld_info(cfld)%ifld=iavblfld(iget(306))
2488 fld_info(cfld)%ntrange=0
2490 fld_info(cfld)%ntrange=1
2492 fld_info(cfld)%tinvstat=ifhr-id(18)
2494 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2499 IF (iget(309) > 0)
THEN
2502 IF(pboth(i,j) > small)
THEN
2503 grid1(i,j) = pboth(i,j)
2510 itclod = nint(tclod)
2511 IF(itclod /= 0)
then
2512 ifincr = mod(ifhr,itclod)
2513 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2518 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2521 id(18) = ifhr-itclod
2523 id(18) = ifhr-ifincr
2524 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2526 IF (id(18)<0) id(18) = 0
2527 if(grib==
"grib2" )
then
2529 fld_info(cfld)%ifld=iavblfld(iget(309))
2531 fld_info(cfld)%ntrange=0
2533 fld_info(cfld)%ntrange=1
2535 fld_info(cfld)%tinvstat=ifhr-id(18)
2537 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2547 IF ((iget(149)>0) .OR. (iget(179)>0) .OR. &
2548 (iget(168)>0) .OR. (iget(275)>0))
THEN
2552 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2553 IF(t(i,j,itop)<spval .AND. &
2554 pmid(i,j,itop)<spval .AND. &
2555 zmid(i,j,itop)<spval)
THEN
2556 cldp(i,j) = pmid(i,j,itop)
2557 cldz(i,j) = zmid(i,j,itop)
2558 cldt(i,j) = t(i,j,itop)
2560 IF(modelname ==
'RAPR')
then
2570 IF(modelname ==
'RAPR')
then
2584 IF (iget(149)>0)
THEN
2587 grid1(i,j) = cldp(i,j)
2590 if(grib==
"grib2" )
then
2592 fld_info(cfld)%ifld=iavblfld(iget(149))
2593 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2598 IF (iget(179)>0)
THEN
2601 grid1(i,j) = cldz(i,j)
2604 if(grib==
"grib2" )
then
2606 fld_info(cfld)%ifld=iavblfld(iget(179))
2607 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2613 IF ((iget(409)>0) .OR. (iget(406)>0))
THEN
2615 cloud_def_p = 0.0000001
2622 IF(modelname ==
'RAPR') zcldtop = spval
2625 watericetotal(k) = qqw(i,j,ll) + qqi(i,j,ll)
2628 if (watericetotal(lm)<=cloud_def_p)
then
2629 loop373 :
do k=lm-1,2,-1
2630 if (watericetotal(k)>cloud_def_p)
then
2631 zcldtop = zmid(i,j,lm-k+1) + (cloud_def_p-watericetotal(k)) &
2632 * (zmid(i,j,lm-k)-zmid(i,j,lm-k+1)) &
2633 / (watericetotal(k+1) - watericetotal(k))
2638 zcldtop = zmid(i,j,1)
2642 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2643 cldp(i,j) = pmid(i,j,itop)
2644 cldt(i,j) = t(i,j,itop)
2647 IF(modelname ==
'RAPR') cldp(i,j) = spval
2656 if(zcldtop <-100.)
then
2659 zcldtop=zmid(i,j,itop)
2660 else if(zmid(i,j,itop)>zcldtop)
then
2664 zcldtop=zmid(i,j,itop)
2669 if(cldz(i,j)>-100. .and. zcldtop<-100.)
then
2670 zcldtop = cldz(i,j) + 200.
2680 IF (iget(406)>0)
THEN
2683 grid1(i,j) = cldp(i,j)
2686 if(grib==
"grib2" )
then
2688 fld_info(cfld)%ifld=iavblfld(iget(406))
2689 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2694 IF (iget(409)>0)
THEN
2697 grid1(i,j) = cldz(i,j)
2700 if(grib==
"grib2" )
then
2702 fld_info(cfld)%ifld=iavblfld(iget(409))
2703 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2710 IF (iget(168)>0)
THEN
2713 grid1(i,j) = cldt(i,j)
2716 if(grib==
"grib2" )
then
2718 fld_info(cfld)%ifld=iavblfld(iget(168))
2719 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2724 IF (iget(275)>0)
THEN
2737 if((hbot(i,j)-spval)>small .and. (htop(i,j)-spval)>small)
then
2738 lcbot=nint(hbot(i,j))
2739 lctop=nint(htop(i,j))
2740 if (lcbot-lctop > 1)
then
2741 q_conv=cnvcfr(i,j)*qconv
2743 if (t(i,j,k) < trad_ice)
then
2744 cu_ir(k)=abscoefi*q_conv
2746 cu_ir(k)=abscoef*q_conv
2756 if(pint(i,j,k)<spval.and.qqw(i,j,k)<spval.and. &
2757 qqi(i,j,k)<spval.and.qqs(i,j,k)<spval)
then
2758 dp=pint(i,j,k+1)-pint(i,j,k)
2759 opdepth=opdepth+( cu_ir(k) + abscoef*qqw(i,j,k)+ &
2761 & abscoefi*( qqi(i,j,k)+qqs(i,j,k) ) )*dp
2763 if (opdepth > 1.)
exit
2765 if (opdepth > 1.) num_thick=num_thick+1
2817 if(grib==
"grib2" )
then
2819 fld_info(cfld)%ifld=iavblfld(iget(275))
2820 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2827 IF (iget(189) > 0)
THEN
2828 IF(modelname ==
'GFS')
THEN
2832 grid1(i,j) = ptop(i,j)
2839 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2840 grid1(i,j) = pmid(i,j,itop)
2842 grid1(i,j) = -50000.
2847 if(grib==
"grib2" )
then
2849 fld_info(cfld)%ifld=iavblfld(iget(189))
2855 datapd(i,j,cfld) = grid1(ii,jj)
2863 IF (iget(193) > 0)
THEN
2867 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2868 grid1(i,j) = pmid(i,j,itop)
2870 grid1(i,j) = -50000.
2874 if(grib==
"grib2" )
then
2876 fld_info(cfld)%ifld=iavblfld(iget(193))
2877 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2882 IF (iget(191) > 0)
THEN
2886 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2887 grid1(i,j) = pmid(i,j,itop)
2889 grid1(i,j) = -50000.
2893 if(grib==
"grib2" )
then
2895 fld_info(cfld)%ifld=iavblfld(iget(191))
2896 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2902 IF (iget(195) > 0)
THEN
2906 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2907 grid1(i,j) = pmid(i,j,itop)
2909 grid1(i,j) = -50000.
2913 if(grib==
"grib2" )
then
2915 fld_info(cfld)%ifld=iavblfld(iget(195))
2916 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2922 IF (iget(304) > 0)
THEN
2925 IF(ptopl(i,j) > small)
THEN
2926 grid1(i,j) = ptopl(i,j)
2933 itclod = nint(tclod)
2934 IF(itclod /= 0)
then
2935 ifincr = mod(ifhr,itclod)
2936 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2941 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2944 id(18) = ifhr-itclod
2946 id(18) = ifhr-ifincr
2947 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2949 IF (id(18)<0) id(18) = 0
2950 if(grib==
"grib2" )
then
2952 fld_info(cfld)%ifld=iavblfld(iget(304))
2954 fld_info(cfld)%ntrange=0
2956 fld_info(cfld)%ntrange=1
2958 fld_info(cfld)%tinvstat=ifhr-id(18)
2960 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2965 IF (iget(307) > 0)
THEN
2968 grid1(i,j) = ptopm(i,j)
2972 itclod = nint(tclod)
2973 IF(itclod /= 0)
then
2974 ifincr = mod(ifhr,itclod)
2975 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2980 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2983 id(18) = ifhr-itclod
2985 id(18) = ifhr-ifincr
2986 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2988 IF (id(18)<0) id(18) = 0
2989 if(grib==
"grib2" )
then
2991 fld_info(cfld)%ifld=iavblfld(iget(307))
2993 fld_info(cfld)%ntrange=0
2995 fld_info(cfld)%ntrange=1
2997 fld_info(cfld)%tinvstat=ifhr-id(18)
2999 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3004 IF (iget(310) > 0)
THEN
3007 grid1(i,j) = ptoph(i,j)
3011 itclod = nint(tclod)
3012 IF(itclod /= 0)
then
3013 ifincr = mod(ifhr,itclod)
3014 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3019 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3022 id(18) = ifhr-itclod
3024 id(18) = ifhr-ifincr
3025 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3027 IF (id(18)<0) id(18) = 0
3028 if(grib==
"grib2" )
then
3030 fld_info(cfld)%ifld=iavblfld(iget(310))
3032 fld_info(cfld)%ntrange=0
3034 fld_info(cfld)%ntrange=1
3036 fld_info(cfld)%tinvstat=ifhr-id(18)
3038 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3044 IF (iget(305) > 0)
THEN
3047 grid1(i,j) = ttopl(i,j)
3051 itclod = nint(tclod)
3052 IF(itclod /= 0)
then
3053 ifincr = mod(ifhr,itclod)
3054 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3059 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3062 id(18) = ifhr-itclod
3064 id(18) = ifhr-ifincr
3065 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3067 IF (id(18)<0) id(18) = 0
3068 if(grib==
"grib2" )
then
3070 fld_info(cfld)%ifld=iavblfld(iget(305))
3072 fld_info(cfld)%ntrange=0
3074 fld_info(cfld)%ntrange=1
3076 fld_info(cfld)%tinvstat=ifhr-id(18)
3078 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3083 IF (iget(308) > 0)
THEN
3086 grid1(i,j) = ttopm(i,j)
3090 itclod = nint(tclod)
3091 IF(itclod /= 0)
then
3092 ifincr = mod(ifhr,itclod)
3093 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3098 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3101 id(18) = ifhr-itclod
3103 id(18) = ifhr-ifincr
3104 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3106 IF (id(18)<0) id(18) = 0
3107 if(grib==
"grib2" )
then
3109 fld_info(cfld)%ifld=iavblfld(iget(308))
3111 fld_info(cfld)%ntrange=0
3113 fld_info(cfld)%ntrange=1
3115 fld_info(cfld)%tinvstat=ifhr-id(18)
3117 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3122 IF (iget(311) > 0)
THEN
3125 grid1(i,j) = ttoph(i,j)
3129 itclod = nint(tclod)
3130 IF(itclod /= 0)
then
3131 ifincr = mod(ifhr,itclod)
3132 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3137 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3140 id(18) = ifhr-itclod
3142 id(18) = ifhr-ifincr
3143 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3145 IF (id(18)<0) id(18) = 0
3146 if(grib==
"grib2" )
then
3148 fld_info(cfld)%ifld=iavblfld(iget(311))
3150 fld_info(cfld)%ntrange=0
3152 fld_info(cfld)%ntrange=1
3154 fld_info(cfld)%tinvstat=ifhr-id(18)
3155 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3161 IF (iget(196) > 0.or.iget(570)>0)
THEN
3165 if(cnvcfr(i,j)/=spval)grid1(i,j)=100.*cnvcfr(i,j)
3168 if(iget(196)>0)
then
3169 if(grib==
"grib2" )
then
3171 fld_info(cfld)%ifld=iavblfld(iget(196))
3172 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3174 elseif(iget(570)>0)
then
3175 if(grib==
"grib2" )
then
3177 fld_info(cfld)%ifld=iavblfld(iget(570))
3178 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3185 IF (iget(342) > 0)
THEN
3189 if(pblcfr(i,j)/=spval)grid1(i,j)=100.*pblcfr(i,j)
3193 itclod = nint(tclod)
3194 IF(itclod /= 0)
then
3195 ifincr = mod(ifhr,itclod)
3196 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3201 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3204 id(18) = ifhr-itclod
3206 id(18) = ifhr-ifincr
3207 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3209 IF (id(18)<0) id(18) = 0
3210 if(grib==
"grib2" )
then
3212 fld_info(cfld)%ifld=iavblfld(iget(342))
3214 fld_info(cfld)%ntrange=0
3216 fld_info(cfld)%ntrange=1
3218 fld_info(cfld)%tinvstat=ifhr-id(18)
3220 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3226 IF (iget(313) > 0)
THEN
3229 grid1(i,j)=cldwork(i,j)
3233 itclod = nint(tclod)
3234 IF(itclod /= 0)
then
3235 ifincr = mod(ifhr,itclod)
3236 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3241 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3244 id(18) = ifhr-itclod
3246 id(18) = ifhr-ifincr
3247 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3249 IF (id(18)<0) id(18) = 0
3250 if(grib==
"grib2" )
then
3252 fld_info(cfld)%ifld=iavblfld(iget(313))
3254 fld_info(cfld)%ntrange=0
3256 fld_info(cfld)%ntrange=1
3258 fld_info(cfld)%tinvstat=ifhr-id(18)
3260 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3268 IF (iget(126)>0)
THEN
3269 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3281 IF(aswin(i,j)/=spval)
THEN
3282 grid1(i,j) = aswin(i,j)*rrnum
3284 grid1(i,j)=aswin(i,j)
3289 itrdsw = nint(trdsw)
3290 IF(itrdsw /= 0)
then
3291 ifincr = mod(ifhr,itrdsw)
3292 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3297 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3300 id(18) = ifhr-itrdsw
3302 id(18) = ifhr-ifincr
3303 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3305 IF (id(18)<0) id(18) = 0
3307 if(grib==
"grib2" )
then
3309 fld_info(cfld)%ifld=iavblfld(iget(126))
3311 fld_info(cfld)%ntrange=1
3313 fld_info(cfld)%ntrange=0
3315 fld_info(cfld)%tinvstat=ifhr-id(18)
3316 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3321 IF (iget(298)>0)
THEN
3322 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3334 IF(auvbin(i,j)/=spval)
THEN
3335 grid1(i,j) = auvbin(i,j)*rrnum
3337 grid1(i,j) = auvbin(i,j)
3343 itrdsw = nint(trdsw)
3344 IF(itrdsw /= 0)
then
3345 ifincr = mod(ifhr,itrdsw)
3346 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3351 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3354 id(18) = ifhr-itrdsw
3356 id(18) = ifhr-ifincr
3357 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3359 IF (id(18)<0) id(18) = 0
3361 if(grib==
"grib2" )
then
3363 fld_info(cfld)%ifld=iavblfld(iget(298))
3365 fld_info(cfld)%ntrange=1
3367 fld_info(cfld)%ntrange=0
3369 fld_info(cfld)%tinvstat=ifhr-id(18)
3370 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3375 IF (iget(297)>0)
THEN
3376 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3388 IF(auvbinc(i,j)/=spval)
THEN
3389 grid1(i,j) = auvbinc(i,j)*rrnum
3391 grid1(i,j) = auvbinc(i,j)
3397 itrdsw = nint(trdsw)
3398 IF(itrdsw /= 0)
then
3399 ifincr = mod(ifhr,itrdsw)
3400 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3405 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3408 id(18) = ifhr-itrdsw
3410 id(18) = ifhr-ifincr
3411 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3413 IF (id(18)<0) id(18) = 0
3415 if(grib==
"grib2" )
then
3417 fld_info(cfld)%ifld=iavblfld(iget(297))
3419 fld_info(cfld)%ntrange=1
3421 fld_info(cfld)%ntrange=0
3423 fld_info(cfld)%tinvstat=ifhr-id(18)
3424 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3429 IF (iget(127)>0)
THEN
3430 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3441 IF(alwin(i,j)/=spval)
THEN
3442 grid1(i,j) = alwin(i,j)*rrnum
3444 grid1(i,j)=alwin(i,j)
3449 itrdlw = nint(trdlw)
3450 IF(itrdlw /= 0)
then
3451 ifincr = mod(ifhr,itrdlw)
3452 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3457 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3460 id(18) = ifhr-itrdlw
3462 id(18) = ifhr-ifincr
3463 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3465 IF (id(18)<0) id(18) = 0
3467 if(grib==
"grib2" )
then
3469 fld_info(cfld)%ifld=iavblfld(iget(127))
3471 fld_info(cfld)%ntrange=1
3473 fld_info(cfld)%ntrange=0
3475 fld_info(cfld)%tinvstat=ifhr-id(18)
3476 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3481 IF (iget(128)>0)
THEN
3482 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3493 IF(aswout(i,j)/=spval)
THEN
3494 grid1(i,j) = -1.0*aswout(i,j)*rrnum
3496 grid1(i,j)=aswout(i,j)
3501 itrdsw = nint(trdsw)
3502 IF(itrdsw /= 0)
then
3503 ifincr = mod(ifhr,itrdsw)
3504 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3509 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3512 id(18) = ifhr-itrdsw
3514 id(18) = ifhr-ifincr
3515 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3517 IF (id(18)<0) id(18) = 0
3519 if(grib==
"grib2" )
then
3521 fld_info(cfld)%ifld=iavblfld(iget(128))
3523 fld_info(cfld)%ntrange=1
3525 fld_info(cfld)%ntrange=0
3527 fld_info(cfld)%tinvstat=ifhr-id(18)
3528 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3533 IF (iget(129)>0)
THEN
3534 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3545 IF(alwout(i,j)/=spval)
THEN
3546 grid1(i,j) = -1.0*alwout(i,j)*rrnum
3548 grid1(i,j)=alwout(i,j)
3553 itrdlw = nint(trdlw)
3554 IF(itrdlw /= 0)
then
3555 ifincr = mod(ifhr,itrdlw)
3556 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3561 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3564 id(18) = ifhr-itrdlw
3566 id(18) = ifhr-ifincr
3567 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3569 IF (id(18)<0) id(18) = 0
3571 if(grib==
"grib2" )
then
3573 fld_info(cfld)%ifld=iavblfld(iget(129))
3575 fld_info(cfld)%ntrange=1
3577 fld_info(cfld)%ntrange=0
3579 fld_info(cfld)%tinvstat=ifhr-id(18)
3580 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3585 IF (iget(130)>0)
THEN
3586 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3597 IF(aswtoa(i,j)/=spval)
THEN
3598 grid1(i,j) = aswtoa(i,j)*rrnum
3600 grid1(i,j)=aswtoa(i,j)
3605 itrdsw = nint(trdsw)
3606 IF(itrdsw /= 0)
then
3607 ifincr = mod(ifhr,itrdsw)
3608 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3613 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3616 id(18) = ifhr-itrdsw
3618 id(18) = ifhr-ifincr
3619 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3621 IF (id(18)<0) id(18) = 0
3623 if(grib==
"grib2" )
then
3625 fld_info(cfld)%ifld=iavblfld(iget(130))
3627 fld_info(cfld)%ntrange=1
3629 fld_info(cfld)%ntrange=0
3631 fld_info(cfld)%tinvstat=ifhr-id(18)
3632 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3637 IF (iget(131)>0)
THEN
3638 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3649 IF(alwtoa(i,j)/=spval)
THEN
3650 grid1(i,j) = alwtoa(i,j)*rrnum
3652 grid1(i,j)=alwtoa(i,j)
3657 itrdlw = nint(trdlw)
3658 IF(itrdlw /= 0)
then
3659 ifincr = mod(ifhr,itrdlw)
3660 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3665 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3668 id(18) = ifhr-itrdlw
3670 id(18) = ifhr-ifincr
3671 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3673 IF (id(18)<0) id(18) = 0
3675 if(grib==
"grib2" )
then
3677 fld_info(cfld)%ifld=iavblfld(iget(131))
3679 fld_info(cfld)%ntrange=1
3681 fld_info(cfld)%ntrange=0
3683 fld_info(cfld)%tinvstat=ifhr-id(18)
3684 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3689 IF (iget(274)>0)
THEN
3690 IF(modelname ==
'NCAR'.OR.modelname==
'RSM')
THEN
3695 grid1(i,j) = rlwtoa(i,j)
3699 if(grib==
"grib2" )
then
3701 fld_info(cfld)%ifld=iavblfld(iget(274))
3702 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3707 IF (iget(265)>0)
THEN
3709 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3714 IF(rlwtoa(i,j) < spval) &
3715 & grid1(i,j) = (rlwtoa(i,j)*stbol)**0.25
3719 if(grib==
"grib2" )
then
3721 fld_info(cfld)%ifld=iavblfld(iget(265))
3722 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3727 IF (iget(156)>0)
THEN
3731 IF(rswin(i,j)<spval)
THEN
3732 IF(czmean(i,j)>1.e-6)
THEN
3733 factrs=czen(i,j)/czmean(i,j)
3737 IF(rswin(i,j)<spval) grid1(i,j)=rswin(i,j)*factrs
3742 if(grib==
"grib2" )
then
3744 fld_info(cfld)%ifld=iavblfld(iget(156))
3745 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3750 IF (iget(157)>0)
THEN
3755 IF(modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3756 grid1(i,j)=rlwin(i,j)
3758 IF(sigt4(i,j)<spval.and.t(i,j,nint(lmh(i,j)))<spval)
THEN
3759 IF(sigt4(i,j)>0.0)
THEN
3762 factrl=5.67e-8*tlmh*tlmh*tlmh*tlmh/sigt4(i,j)
3766 IF(rlwin(i,j) < spval) grid1(i,j)=rlwin(i,j)*factrl
3772 if(grib==
"grib2" )
then
3774 fld_info(cfld)%ifld=iavblfld(iget(157))
3775 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3780 IF (iget(141)>0)
THEN
3785 IF(rswout(i,j)<spval)
THEN
3786 IF(czmean(i,j)>1.e-6)
THEN
3787 factrs=czen(i,j)/czmean(i,j)
3791 IF(rswout(i,j)<spval) grid1(i,j)=rswout(i,j)*factrs
3796 if(grib==
"grib2" )
then
3798 fld_info(cfld)%ifld=iavblfld(iget(141))
3799 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3804 IF (iget(743)>0)
THEN
3807 grid1(i,j) = swupbc(i,j)
3810 if(grib==
'grib2')
then
3812 fld_info(cfld)%ifld=iavblfld(iget(743))
3813 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3818 IF (iget(142)>0)
THEN
3822 grid1(i,j) = radot(i,j)
3825 if(grib==
"grib2" )
then
3827 fld_info(cfld)%ifld=iavblfld(iget(142))
3828 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3833 IF (iget(744)>0)
THEN
3836 grid1(i,j) = lwdnbc(i,j)
3839 if(grib==
'grib2')
then
3841 fld_info(cfld)%ifld=iavblfld(iget(744))
3842 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3847 IF (iget(745)>0)
THEN
3850 grid1(i,j) = lwupbc(i,j)
3853 if(grib==
'grib2')
then
3855 fld_info(cfld)%ifld=iavblfld(iget(745))
3856 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3861 IF (iget(740)>0)
THEN
3865 grid1(i,j) = mean_frp(i,j)
3868 if(grib==
'grib2')
then
3871 fld_info(cfld)%ifld=iavblfld(iget(740))
3872 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3877 IF (iget(262)>0)
THEN
3882 IF(rswinc(i,j)<spval)
THEN
3883 IF(czmean(i,j)>1.e-6)
THEN
3884 factrs=czen(i,j)/czmean(i,j)
3888 IF(rswinc(i,j)<spval) grid1(i,j) = rswinc(i,j)*factrs
3892 if(grib==
"grib2" )
then
3894 fld_info(cfld)%ifld=iavblfld(iget(262))
3895 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3900 IF (iget(742)>0)
THEN
3903 grid1(i,j) = swdnbc(i,j)
3906 if(grib==
'grib2')
then
3908 fld_info(cfld)%ifld=iavblfld(iget(742))
3909 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3914 IF (iget(772)>0)
THEN
3918 grid1(i,j) = swddni(i,j)
3921 if(grib==
'grib2')
then
3923 fld_info(cfld)%ifld=iavblfld(iget(772))
3924 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3929 IF (iget(796)>0)
THEN
3932 grid1(i,j) = swddnic(i,j)
3935 if(grib==
'grib2')
then
3937 fld_info(cfld)%ifld=iavblfld(iget(796))
3938 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3943 IF (iget(773)>0)
THEN
3947 grid1(i,j) = swddif(i,j)
3950 if(grib==
'grib2')
then
3952 fld_info(cfld)%ifld=iavblfld(iget(773))
3953 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3958 IF (iget(797)>0)
THEN
3961 grid1(i,j) = swddifc(i,j)
3964 if(grib==
'grib2')
then
3966 fld_info(cfld)%ifld=iavblfld(iget(797))
3967 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3972 IF (iget(383)>0)
THEN
3975 grid1(i,j) = aswinc(i,j)
3979 itrdsw = nint(trdsw)
3980 IF(itrdsw /= 0)
then
3981 ifincr = mod(ifhr,itrdsw)
3982 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3987 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3990 id(18) = ifhr-itrdsw
3992 id(18) = ifhr-ifincr
3993 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3995 IF (id(18)<0) id(18) = 0
3996 if(grib==
"grib2" )
then
3998 fld_info(cfld)%ifld=iavblfld(iget(383))
4000 fld_info(cfld)%ntrange=1
4002 fld_info(cfld)%ntrange=0
4004 fld_info(cfld)%tinvstat=ifhr-id(18)
4005 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4010 IF (iget(386)>0)
THEN
4013 grid1(i,j) = aswoutc(i,j)
4017 itrdsw = nint(trdsw)
4018 IF(itrdsw /= 0)
then
4019 ifincr = mod(ifhr,itrdsw)
4020 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4025 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4028 id(18) = ifhr-itrdsw
4030 id(18) = ifhr-ifincr
4031 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4033 IF (id(18)<0) id(18) = 0
4034 if(grib==
"grib2" )
then
4036 fld_info(cfld)%ifld=iavblfld(iget(386))
4038 fld_info(cfld)%ntrange=1
4040 fld_info(cfld)%ntrange=0
4042 fld_info(cfld)%tinvstat=ifhr-id(18)
4043 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4048 IF (iget(719)>0)
THEN
4051 grid1(i,j) = swupt(i,j)
4054 if(grib==
'grib2')
then
4056 fld_info(cfld)%ifld=iavblfld(iget(719))
4057 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4062 IF (iget(387)>0)
THEN
4065 grid1(i,j) = aswtoac(i,j)
4069 itrdsw = nint(trdsw)
4070 IF(itrdsw /= 0)
then
4071 ifincr = mod(ifhr,itrdsw)
4072 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4077 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4080 id(18) = ifhr-itrdsw
4082 id(18) = ifhr-ifincr
4083 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4085 IF (id(18)<0) id(18) = 0
4086 if(grib==
"grib2" )
then
4088 fld_info(cfld)%ifld=iavblfld(iget(387))
4090 fld_info(cfld)%ntrange=1
4092 fld_info(cfld)%ntrange=0
4094 fld_info(cfld)%tinvstat=ifhr-id(18)
4095 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4100 IF (iget(388)>0)
THEN
4103 grid1(i,j) = aswintoa(i,j)
4107 itrdsw = nint(trdsw)
4108 IF(itrdsw /= 0)
then
4109 ifincr = mod(ifhr,itrdsw)
4110 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4115 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4118 id(18) = ifhr-itrdsw
4120 id(18) = ifhr-ifincr
4121 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4123 IF (id(18)<0) id(18) = 0
4124 if(grib==
"grib2" )
then
4126 fld_info(cfld)%ifld=iavblfld(iget(388))
4128 fld_info(cfld)%ntrange=1
4130 fld_info(cfld)%ntrange=0
4132 fld_info(cfld)%tinvstat=ifhr-id(18)
4133 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4138 IF (iget(382)>0)
THEN
4141 grid1(i,j) = alwinc(i,j)
4145 itrdlw = nint(trdlw)
4146 IF(itrdlw /= 0)
then
4147 ifincr = mod(ifhr,itrdlw)
4148 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4153 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4156 id(18) = ifhr-itrdlw
4158 id(18) = ifhr-ifincr
4159 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4161 IF (id(18)<0) id(18) = 0
4162 if(grib==
"grib2" )
then
4164 fld_info(cfld)%ifld=iavblfld(iget(382))
4166 fld_info(cfld)%ntrange=1
4168 fld_info(cfld)%ntrange=0
4170 fld_info(cfld)%tinvstat=ifhr-id(18)
4171 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4176 IF (iget(384)>0)
THEN
4179 grid1(i,j) = alwoutc(i,j)
4183 itrdlw = nint(trdlw)
4184 IF(itrdlw /= 0)
then
4185 ifincr = mod(ifhr,itrdlw)
4186 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4191 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4194 id(18) = ifhr-itrdlw
4196 id(18) = ifhr-ifincr
4197 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4199 IF (id(18)<0) id(18) = 0
4200 if(grib==
"grib2" )
then
4202 fld_info(cfld)%ifld=iavblfld(iget(384))
4204 fld_info(cfld)%ntrange=1
4206 fld_info(cfld)%ntrange=0
4208 fld_info(cfld)%tinvstat=ifhr-id(18)
4209 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4214 IF (iget(385)>0)
THEN
4217 grid1(i,j) = alwtoac(i,j)
4221 itrdlw = nint(trdlw)
4222 IF(itrdlw /= 0)
then
4223 ifincr = mod(ifhr,itrdlw)
4224 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4229 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4232 id(18) = ifhr-itrdlw
4234 id(18) = ifhr-ifincr
4235 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4237 IF (id(18)<0) id(18) = 0
4238 if(grib==
"grib2" )
then
4240 fld_info(cfld)%ifld=iavblfld(iget(385))
4242 fld_info(cfld)%ntrange=1
4244 fld_info(cfld)%ntrange=0
4246 fld_info(cfld)%tinvstat=ifhr-id(18)
4247 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4252 IF (iget(401)>0)
THEN
4255 grid1(i,j) = avisbeamswin(i,j)
4259 itrdsw = nint(trdsw)
4260 IF(itrdsw /= 0)
then
4261 ifincr = mod(ifhr,itrdsw)
4262 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4267 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4270 id(18) = ifhr-itrdsw
4272 id(18) = ifhr-ifincr
4273 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4275 IF (id(18)<0) id(18) = 0
4277 IF(itrdsw < 0)id(1:25)=0
4278 if(grib==
"grib2" )
then
4280 fld_info(cfld)%ifld=iavblfld(iget(401))
4282 fld_info(cfld)%ntrange=1
4284 fld_info(cfld)%ntrange=0
4286 fld_info(cfld)%tinvstat=ifhr-id(18)
4287 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4292 IF (iget(402)>0)
THEN
4295 grid1(i,j) = avisdiffswin(i,j)
4299 itrdsw = nint(trdsw)
4300 IF(itrdsw /= 0)
then
4301 ifincr = mod(ifhr,itrdsw)
4302 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4307 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4310 id(18) = ifhr-itrdsw
4312 id(18) = ifhr-ifincr
4313 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4315 IF (id(18)<0) id(18) = 0
4316 IF(itrdsw < 0)id(1:25)=0
4317 if(grib==
"grib2" )
then
4319 fld_info(cfld)%ifld=iavblfld(iget(402))
4321 fld_info(cfld)%ntrange=1
4323 fld_info(cfld)%ntrange=0
4325 fld_info(cfld)%tinvstat=ifhr-id(18)
4326 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4331 IF (iget(403)>0)
THEN
4334 grid1(i,j) = airbeamswin(i,j)
4338 itrdsw = nint(trdsw)
4339 IF(itrdsw /= 0)
then
4340 ifincr = mod(ifhr,itrdsw)
4341 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4346 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4349 id(18) = ifhr-itrdsw
4351 id(18) = ifhr-ifincr
4352 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4354 IF (id(18)<0) id(18) = 0
4355 IF(itrdsw < 0)id(1:25)=0
4356 if(grib==
"grib2" )
then
4358 fld_info(cfld)%ifld=iavblfld(iget(403))
4360 fld_info(cfld)%ntrange=1
4362 fld_info(cfld)%ntrange=0
4364 fld_info(cfld)%tinvstat=ifhr-id(18)
4365 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4370 IF (iget(404)>0)
THEN
4373 grid1(i,j) = airdiffswin(i,j)
4377 itrdsw = nint(trdsw)
4378 IF(itrdsw /= 0)
then
4379 ifincr = mod(ifhr,itrdsw)
4380 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4385 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4388 id(18) = ifhr-itrdsw
4390 id(18) = ifhr-ifincr
4391 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4393 IF (id(18)<0) id(18) = 0
4394 IF(itrdsw < 0)id(1:25)=0
4395 if(grib==
"grib2" )
then
4397 fld_info(cfld)%ifld=iavblfld(iget(404))
4399 fld_info(cfld)%ntrange=1
4401 fld_info(cfld)%ntrange=0
4403 fld_info(cfld)%tinvstat=ifhr-id(18)
4404 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4410 IF (iget(609).GT.0)
THEN
4413 grid1(i,j)=aod550(i,j)
4416 if(grib==
"grib2" )
then
4418 fld_info(cfld)%ifld=iavblfld(iget(609))
4419 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4423 IF (iget(610).GT.0)
THEN
4426 grid1(i,j)=du_aod550(i,j)
4429 if(grib==
"grib2" )
then
4431 fld_info(cfld)%ifld=iavblfld(iget(610))
4432 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4436 IF (iget(611).GT.0)
THEN
4439 grid1(i,j)=ss_aod550(i,j)
4442 if(grib==
"grib2" )
then
4444 fld_info(cfld)%ifld=iavblfld(iget(611))
4445 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4449 IF (iget(612).GT.0)
THEN
4452 grid1(i,j)=su_aod550(i,j)
4455 if(grib==
"grib2" )
then
4457 fld_info(cfld)%ifld=iavblfld(iget(612))
4458 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4462 IF (iget(613).GT.0)
THEN
4465 grid1(i,j)=oc_aod550(i,j)
4468 if(grib==
"grib2" )
then
4470 fld_info(cfld)%ifld=iavblfld(iget(613))
4471 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4476 IF (iget(614).GT.0)
THEN
4479 grid1(i,j)=bc_aod550(i,j)
4482 if(grib==
"grib2" )
then
4484 fld_info(cfld)%ifld=iavblfld(iget(614))
4485 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4491 IF (iget(715)>0)
THEN
4494 grid1(i,j)=taod5502d(i,j)
4497 if(grib==
"grib2" )
then
4499 fld_info(cfld)%ifld=iavblfld(iget(715))
4500 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4505 IF (iget(716)>0)
THEN
4508 grid1(i,j)=aerasy2d(i,j)
4511 if(grib==
"grib2" )
then
4513 fld_info(cfld)%ifld=iavblfld(iget(716))
4514 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4519 IF (iget(717)>0)
THEN
4522 grid1(i,j)=aerssa2d(i,j)
4525 if(grib==
"grib2" )
then
4527 fld_info(cfld)%ifld=iavblfld(iget(717))
4528 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4548 IF ( iget(i)>0 ) laeropt = .true.
4551 IF ( iget(i)>0 ) laeropt = .true.
4554 IF ( iget(i)>0 ) laeropt = .true.
4560 IF ( iget(i)>0 ) laersmass = .true.
4568 print *,
'COMPUTE AEROSOL OPTICAL PROPERTIES'
4571 ALLOCATE ( extrhd_du(krhlev,nbin_du,nbdsw))
4572 ALLOCATE ( extrhd_ss(krhlev,nbin_ss,nbdsw))
4573 ALLOCATE ( extrhd_su(krhlev,nbin_su,nbdsw))
4574 ALLOCATE ( extrhd_bc(krhlev,nbin_bc,nbdsw))
4575 ALLOCATE ( extrhd_oc(krhlev,nbin_oc,nbdsw))
4577 ALLOCATE ( scarhd_du(krhlev,nbin_du,nbdsw))
4578 ALLOCATE ( scarhd_ss(krhlev,nbin_ss,nbdsw))
4579 ALLOCATE ( scarhd_su(krhlev,nbin_su,nbdsw))
4580 ALLOCATE ( scarhd_bc(krhlev,nbin_bc,nbdsw))
4581 ALLOCATE ( scarhd_oc(krhlev,nbin_oc,nbdsw))
4583 ALLOCATE ( asyrhd_du(krhlev,nbin_du,nbdsw))
4584 ALLOCATE ( asyrhd_ss(krhlev,nbin_ss,nbdsw))
4585 ALLOCATE ( asyrhd_su(krhlev,nbin_su,nbdsw))
4586 ALLOCATE ( asyrhd_bc(krhlev,nbin_bc,nbdsw))
4587 ALLOCATE ( asyrhd_oc(krhlev,nbin_oc,nbdsw))
4589 ALLOCATE ( ssarhd_du(krhlev,nbin_du,nbdsw))
4590 ALLOCATE ( ssarhd_ss(krhlev,nbin_ss,nbdsw))
4591 ALLOCATE ( ssarhd_su(krhlev,nbin_su,nbdsw))
4592 ALLOCATE ( ssarhd_bc(krhlev,nbin_bc,nbdsw))
4593 ALLOCATE ( ssarhd_oc(krhlev,nbin_oc,nbdsw))
4594 print *,
'aft AEROSOL allocate, nbin_du=',nbin_du, &
4595 'nbin_ss=',nbin_ss,
'nbin_su=',nbin_su,
'nbin_bc=', &
4596 'nbin_oc=',nbin_oc,
'nAero=',naero
4601 aerosol_file=
'optics_luts_'//aerosolname(i)//
'.dat'
4602 open(unit=noaer, file=aerosol_file, status=
'OLD', iostat=ios)
4604 print *,
' ERROR! Non-zero iostat for rd_LUTS ', aerosol_file
4607 if(debugprint)print *,
'i=',i,
'read aerosol_file=',trim(aerosol_file),
'ios=',ios
4609 IF (aerosolname(i) ==
'DUST') nbin = nbin_du
4610 IF (aerosolname(i) ==
'SALT') nbin = nbin_ss
4611 IF (aerosolname(i) ==
'SUSO') nbin = nbin_su
4612 IF (aerosolname(i) ==
'SOOT') nbin = nbin_bc
4613 IF (aerosolname(i) ==
'WASO') nbin = nbin_oc
4615 read(noaer,
'(2x,a4,1x,i1,1x,a3)')aername_rd,ib, aeropt
4616 IF (aername_rd /= aerosolname(i)) stop
4618 IF (aeropt /=
'ext' ) stop
4620 IF (aerosolname(i) ==
'DUST')
THEN
4622 read(noaer,
'(8f10.5)') (extrhd_du(ii,j,ib), ii=1,krhlev)
4624 read(noaer,
'(2x,a4)') aername_rd
4626 read(noaer,
'(8f10.5)') (scarhd_du(ii,j,ib), ii=1,krhlev)
4628 read(noaer,
'(2x,a4)') aername_rd
4630 read(noaer,
'(8f10.5)') (asyrhd_du(ii,j,ib), ii=1,krhlev)
4632 read(noaer,
'(2x,a4)') aername_rd
4634 read(noaer,
'(8f10.5)') (ssarhd_du(ii,j,ib), ii=1,krhlev)
4637 ELSEIF (aerosolname(i) ==
'SALT')
THEN
4639 read(noaer,
'(8f10.5)') (extrhd_ss(ii,j,ib), ii=1,krhlev)
4641 read(noaer,
'(2x,a4)') aername_rd
4643 read(noaer,
'(8f10.5)') (scarhd_ss(ii,j,ib), ii=1,krhlev)
4645 read(noaer,
'(2x,a4)') aername_rd
4647 read(noaer,
'(8f10.5)') (asyrhd_ss(ii,j,ib), ii=1,krhlev)
4649 read(noaer,
'(2x,a4)') aername_rd
4651 read(noaer,
'(8f10.5)') (ssarhd_ss(ii,j,ib), ii=1,krhlev)
4654 ELSEIF (aerosolname(i) ==
'SUSO')
THEN
4656 read(noaer,
'(8f10.5)') (extrhd_su(ii,j,ib), ii=1,krhlev)
4658 read(noaer,
'(2x,a4)') aername_rd
4660 read(noaer,
'(8f10.5)') (scarhd_su(ii,j,ib), ii=1,krhlev)
4662 read(noaer,
'(2x,a4)') aername_rd
4664 read(noaer,
'(8f10.5)') (asyrhd_su(ii,j,ib), ii=1,krhlev)
4666 read(noaer,
'(2x,a4)') aername_rd
4668 read(noaer,
'(8f10.5)') (ssarhd_su(ii,j,ib), ii=1,krhlev)
4671 ELSEIF (aerosolname(i) ==
'SOOT')
THEN
4673 read(noaer,
'(8f10.5)') (extrhd_bc(ii,j,ib), ii=1,krhlev)
4675 read(noaer,
'(2x,a4)') aername_rd
4677 read(noaer,
'(8f10.5)') (scarhd_bc(ii,j,ib), ii=1,krhlev)
4679 read(noaer,
'(2x,a4)') aername_rd
4681 read(noaer,
'(8f10.5)') (asyrhd_bc(ii,j,ib), ii=1,krhlev)
4683 read(noaer,
'(2x,a4)') aername_rd
4685 read(noaer,
'(8f10.5)') (ssarhd_bc(ii,j,ib), ii=1,krhlev)
4688 ELSEIF (aerosolname(i) ==
'WASO')
THEN
4690 read(noaer,
'(8f10.5)') (extrhd_oc(ii,j,ib), ii=1,krhlev)
4692 read(noaer,
'(2x,a4)') aername_rd
4694 read(noaer,
'(8f10.5)') (scarhd_oc(ii,j,ib), ii=1,krhlev)
4696 read(noaer,
'(2x,a4)') aername_rd
4698 read(noaer,
'(8f10.5)') (asyrhd_oc(ii,j,ib), ii=1,krhlev)
4700 read(noaer,
'(2x,a4)') aername_rd
4702 read(noaer,
'(8f10.5)') (ssarhd_oc(ii,j,ib), ii=1,krhlev)
4715 allocate (rdrh(ista:iend,jsta:jend,lm))
4716 allocate (ihh(ista:iend,jsta:jend,lm))
4722 p1d(i,j) = pmid(i,j,ll)
4723 t1d(i,j) = t(i,j,ll)
4724 q1d(i,j) = q(i,j,ll)
4727 CALL calrh(p1d,t1d,q1d,egrid4)
4734 IF ( rh3d > rhlev(krhlev) )
THEN
4739 ELSEIF ( rh3d < rhlev(1))
THEN
4746 DO WHILE ( rh3d > rhlev(ih2))
4748 IF ( ih2 > krhlev )
EXIT
4750 ih2 = min( krhlev, ih2 )
4751 ih1 = max( 1, ih2-1 )
4752 drh0 = rhlev(ih2) - rhlev(ih1)
4754 drh1 = rh3d - rhlev(ih1)
4755 rdrh(i,j,ll) = drh1 / drh0
4768 IF (ib == 1 ) indx = 623
4770 IF (ib == 2 ) indx = 624
4772 IF (ib == 3 ) indx = 609
4774 IF (ib == 4 ) indx = 625
4776 IF (ib == 5 ) indx = 626
4778 IF (ib == 6 ) indx = 627
4780 IF (ib == 7 ) indx = 628
4787 IF (iget(indx)>0 ) lext =.true.
4790 IF (iget(650)>0 ) lsca =.true.
4792 IF (iget(indx_ext(i))>0 ) lext = .true.
4793 IF (iget(indx_sca(i))>0 ) lsca = .true.
4798 IF (iget(648)>0 ) lsca =.true.
4799 IF (iget(649)>0 ) lasy =.true.
4802 IF (iget(656)>0 )
THEN
4803 IF ( ib == 2 ) lext = .true.
4804 IF ( ib == 5 ) lext = .true.
4808 IF ( lext .OR. lsca .OR. lasy )
THEN
4820 ext01 = extrhd_du(1,n,ib)
4821 sca01 = scarhd_du(1,n,ib)
4822 asy01 = asyrhd_du(1,n,ib)
4823 ext(i,j,l) = ext(i,j,l)+1e-9*dust(i,j,l,n) * ext01
4824 sca(i,j,l) = sca(i,j,l)+1e-9*dust(i,j,l,n) * sca01
4825 asy(i,j,l) = asy(i,j,l)+1e-9*dust(i,j,l,n) * sca01*asy01
4827 ext(i,j,l) = ext(i,j,l) * 1000.
4828 sca(i,j,l) = sca(i,j,l) * 1000.
4829 asy(i,j,l) = asy(i,j,l) * 1000.
4833 CALL calpw(aod_du,17)
4834 CALL calpw(sca_du,20)
4835 CALL calpw(asy_du,21)
4849 ext01 = extrhd_su(ih1,n,ib) &
4850 & + rdrh(i,j,l)*(extrhd_su(ih2,n,ib)-extrhd_su(ih1,n,ib))
4851 sca01 = scarhd_su(ih1,n,ib) &
4852 & + rdrh(i,j,l)*(scarhd_su(ih2,n,ib)-scarhd_su(ih1,n,ib))
4853 asy01 = asyrhd_su(ih1,n,ib) &
4854 & + rdrh(i,j,l)*(asyrhd_su(ih2,n,ib)-asyrhd_su(ih1,n,ib))
4855 ext(i,j,l) = ext(i,j,l)+1e-9*suso(i,j,l,n) * ext01
4856 sca(i,j,l) = sca(i,j,l)+1e-9*suso(i,j,l,n)*sca01
4857 asy(i,j,l) = asy(i,j,l)+1e-9*suso(i,j,l,n)*sca01*asy01
4860 ext(i,j,l) = ext(i,j,l) * 1000.
4861 sca(i,j,l) = sca(i,j,l) * 1000.
4862 asy(i,j,l) = asy(i,j,l) * 1000.
4866 CALL calpw(aod_su,17)
4867 CALL calpw(sca_su,20)
4868 CALL calpw(asy_su,21)
4883 ext01 = extrhd_ss(ih1,n,ib) &
4884 & + rdrh(i,j,l)*(extrhd_ss(ih2,n,ib)-extrhd_ss(ih1,n,ib))
4885 sca01 = scarhd_ss(ih1,n,ib) &
4886 & + rdrh(i,j,l)*(scarhd_ss(ih2,n,ib)-scarhd_ss(ih1,n,ib))
4887 asy01 = asyrhd_ss(ih1,n,ib) &
4888 & + rdrh(i,j,l)*(asyrhd_ss(ih2,n,ib)-asyrhd_ss(ih1,n,ib))
4889 ext(i,j,l) = ext(i,j,l)+1e-9*salt(i,j,l,n)*ext01
4890 sca(i,j,l) = sca(i,j,l)+1e-9*salt(i,j,l,n)*sca01
4891 asy(i,j,l) = asy(i,j,l)+1e-9*salt(i,j,l,n)*sca01*asy01
4893 ext(i,j,l) = ext(i,j,l) * 1000.
4894 sca(i,j,l) = sca(i,j,l) * 1000.
4895 asy(i,j,l) = asy(i,j,l) * 1000.
4899 CALL calpw(aod_ss,17)
4900 CALL calpw(sca_ss,20)
4901 CALL calpw(asy_ss,21)
4916 ext01 = extrhd_bc(ih1,n,ib) &
4917 & + rdrh(i,j,l)*(extrhd_bc(ih2,n,ib)-extrhd_bc(ih1,n,ib))
4918 sca01 = scarhd_bc(ih1,n,ib) &
4919 & + rdrh(i,j,l)*(scarhd_bc(ih2,n,ib)-scarhd_bc(ih1,n,ib))
4920 asy01 = asyrhd_bc(ih1,n,ib) &
4921 & + rdrh(i,j,l)*(asyrhd_bc(ih2,n,ib)-asyrhd_bc(ih1,n,ib))
4922 ext(i,j,l) = ext(i,j,l)+1e-9*soot(i,j,l,n)*ext01
4923 sca(i,j,l) = sca(i,j,l)+1e-9*soot(i,j,l,n)*sca01
4924 asy(i,j,l) = asy(i,j,l)+1e-9*soot(i,j,l,n)*sca01*asy01
4926 ext(i,j,l) = ext(i,j,l) * 1000.
4927 sca(i,j,l) = sca(i,j,l) * 1000.
4928 asy(i,j,l) = asy(i,j,l) * 1000.
4932 CALL calpw(aod_bc,17)
4933 CALL calpw(sca_bc,20)
4934 CALL calpw(asy_bc,21)
4948 ext01 = extrhd_oc(ih1,n,ib) &
4949 & + rdrh(i,j,l)*(extrhd_oc(ih2,n,ib)-extrhd_oc(ih1,n,ib))
4950 sca01 = scarhd_oc(ih1,n,ib) &
4951 & + rdrh(i,j,l)*(scarhd_oc(ih2,n,ib)-scarhd_oc(ih1,n,ib))
4952 asy01 = asyrhd_oc(ih1,n,ib) &
4953 & + rdrh(i,j,l)*(asyrhd_oc(ih2,n,ib)-asyrhd_oc(ih1,n,ib))
4954 ext(i,j,l) = ext(i,j,l)+1e-9*waso(i,j,l,n)*ext01
4955 sca(i,j,l) = sca(i,j,l)+1e-9*waso(i,j,l,n)*sca01
4956 asy(i,j,l) = asy(i,j,l)+1e-9*waso(i,j,l,n)*sca01*asy01
4958 ext(i,j,l) = ext(i,j,l) * 1000.
4959 sca(i,j,l) = sca(i,j,l) * 1000.
4960 asy(i,j,l) = asy(i,j,l) * 1000.
4964 CALL calpw(aod_oc,17)
4965 CALL calpw(sca_oc,20)
4966 CALL calpw(asy_oc,21)
4974 aod_du(i,j) = max(aod_du(i,j), 0.0)
4975 aod_bc(i,j) = max(aod_bc(i,j), 0.0)
4976 aod_oc(i,j) = max(aod_oc(i,j), 0.0)
4977 aod_su(i,j) = max(aod_su(i,j), 0.0)
4978 aod_ss(i,j) = max(aod_ss(i,j), 0.0)
4980 sca_du(i,j) = max(sca_du(i,j), 0.0)
4981 sca_bc(i,j) = max(sca_bc(i,j), 0.0)
4982 sca_oc(i,j) = max(sca_oc(i,j), 0.0)
4983 sca_su(i,j) = max(sca_su(i,j), 0.0)
4984 sca_ss(i,j) = max(sca_ss(i,j), 0.0)
4986 asy_du(i,j) = max(asy_du(i,j), 0.0)
4987 asy_bc(i,j) = max(asy_bc(i,j), 0.0)
4988 asy_oc(i,j) = max(asy_oc(i,j), 0.0)
4989 asy_su(i,j) = max(asy_su(i,j), 0.0)
4990 asy_ss(i,j) = max(asy_ss(i,j), 0.0)
4992 aod(i,j) = aod_du(i,j) + aod_bc(i,j) + aod_oc(i,j) + &
4993 & aod_su(i,j) + aod_ss(i,j)
4994 sca2d(i,j) = sca_du(i,j) + sca_bc(i,j) + sca_oc(i,j) + &
4995 & sca_su(i,j) + sca_ss(i,j)
4996 asy2d(i,j) = asy_du(i,j) + asy_bc(i,j) + asy_oc(i,j) + &
4997 & asy_su(i,j) + asy_ss(i,j)
5001 IF ( iget(656) > 0 )
THEN
5006 aod_440(i,j) = aod(i,j)
5015 aod_860(i,j) = aod(i,j)
5022 IF ( iget(indx) > 0)
THEN
5026 grid1(i,j) = aod(i,j)
5029 CALL bound(grid1,d00,h99999)
5030 if(grib==
"grib2" )
then
5032 fld_info(cfld)%ifld=iavblfld(iget(indx))
5033 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5041 IF ( iget(649) > 0 )
THEN
5046 IF(sca2d(i,j)<spval.and.asy2d(i,j)<spval)
THEN
5047 IF ( sca2d(i,j) > 0.0 )
THEN
5048 asy2d(i,j) = asy2d(i,j) / sca2d(i,j)
5052 IF(asy2d(i,j)<spval) grid1(i,j)=asy2d(i,j)
5056 CALL bound(grid1,d00,h99999)
5057 if(grib==
"grib2" )
then
5059 fld_info(cfld)%ifld=iavblfld(iget(649))
5060 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5065 IF ( iget(648) > 0 )
THEN
5070 IF(aod(i,j)<spval.and.sca2d(i,j)<spval)
THEN
5071 IF ( aod(i,j) > 0.0 )
THEN
5072 sca2d(i,j) = sca2d(i,j) / aod(i,j)
5076 IF(sca2d(i,j)<spval) grid1(i,j)=sca2d(i,j)
5080 CALL bound(grid1,d00,h99999)
5081 if(grib==
"grib2" )
then
5083 fld_info(cfld)%ifld=iavblfld(iget(648))
5084 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5097 IF ( iget(650) > 0 )
THEN
5101 grid1(i,j)=sca2d(i,j)
5104 CALL bound(grid1,d00,h99999)
5105 if(grib==
"grib2" )
then
5107 fld_info(cfld)%ifld=iavblfld(iget(650))
5108 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5116 IF ( iget(jj) > 0)
THEN
5120 IF ( ii == 1 ) grid1(i,j) = aod_du(i,j)
5121 IF ( ii == 2 ) grid1(i,j) = aod_ss(i,j)
5122 IF ( ii == 3 ) grid1(i,j) = aod_su(i,j)
5123 IF ( ii == 4 ) grid1(i,j) = aod_oc(i,j)
5124 IF ( ii == 5 ) grid1(i,j) = aod_bc(i,j)
5127 CALL bound(grid1,d00,h99999)
5128 if(grib==
"grib2" )
then
5130 fld_info(cfld)%ifld=iavblfld(iget(jj))
5131 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5137 IF ( iget(jj) > 0)
THEN
5141 IF ( ii == 1 ) grid1(i,j) = sca_du(i,j)
5142 IF ( ii == 2 ) grid1(i,j) = sca_ss(i,j)
5143 IF ( ii == 3 ) grid1(i,j) = sca_su(i,j)
5144 IF ( ii == 4 ) grid1(i,j) = sca_oc(i,j)
5145 IF ( ii == 5 ) grid1(i,j) = sca_bc(i,j)
5148 CALL bound(grid1,d00,h99999)
5149 if(grib==
"grib2" )
then
5151 fld_info(cfld)%ifld=iavblfld(iget(jj))
5152 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5163 IF ( iget(656) > 0 )
THEN
5166 ang2 = log( 860. / 440. )
5170 IF (aod_860(i,j) > 0.)
THEN
5171 ang1 = log( aod_440(i,j)/aod_860(i,j) )
5172 angst(i,j) = ang1 / ang2
5174 grid1(i,j)=angst(i,j)
5177 if(debugprint)print *,
'output angstrom exp,angst=',maxval(angst(ista:iend,jsta:jend)), &
5178 minval(angst(ista:iend,jsta:jend))
5179 CALL bound(grid1,d00,h99999)
5180 if(grib==
"grib2" )
then
5182 fld_info(cfld)%ifld=iavblfld(iget(656))
5183 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5190 IF (iget(659)>0)
THEN
5195 IF(duem(i,j,1)<spval) grid1(i,j) = duem(i,j,1)*1.e-6
5197 IF(duem(i,j,k)<spval)&
5198 grid1(i,j) = grid1(i,j) + duem(i,j,k)*1.e-6
5202 if(grib==
'grib2')
then
5204 fld_info(cfld)%ifld=iavblfld(iget(659))
5205 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5210 IF (iget(667)>0)
THEN
5215 IF(bcem(i,j,1)<spval) grid1(i,j) = bcem(i,j,1)
5217 IF(bcem(i,j,k)<spval)&
5218 grid1(i,j) = grid1(i,j) + bcem(i,j,k)
5222 if(grib==
'grib2')
then
5224 fld_info(cfld)%ifld=iavblfld(iget(667))
5225 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5229 IF (iget(660)>0)
THEN
5234 IF(dusd(i,j,1)<spval) grid1(i,j) = dusd(i,j,1)*1.e-6
5236 IF(dusd(i,j,k)<spval)&
5237 grid1(i,j) = grid1(i,j)+ dusd(i,j,k)*1.e-6
5241 if(grib==
'grib2')
then
5243 fld_info(cfld)%ifld=iavblfld(iget(660))
5244 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5248 IF (iget(699)>0)
THEN
5253 grid1(i,j) = maod(i,j)
5256 if(grib==
'grib2')
then
5258 fld_info(cfld)%ifld=iavblfld(iget(699))
5259 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5285 IF (iget(686)>0 )
THEN
5290 grid1(i,j) = dustpm(i,j)
5293 if(grib==
'grib2')
then
5295 fld_info(cfld)%ifld=iavblfld(iget(686))
5296 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5300 IF (iget(685)>0 )
THEN
5304 grid1(i,j) = dustpm10(i,j)
5307 if(grib==
'grib2')
then
5309 fld_info(cfld)%ifld=iavblfld(iget(685))
5310 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5336 IF (iget(684)>0 )
THEN
5341 grid1(i,j) = sspm(i,j)
5344 if(grib==
'grib2')
then
5346 fld_info(cfld)%ifld=iavblfld(iget(684))
5347 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5351 IF (iget(619)>0 )
THEN
5356 grid1(i,j) = dusmass(i,j)
5359 if(grib==
'grib2')
then
5361 fld_info(cfld)%ifld=iavblfld(iget(619))
5362 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5367 IF (iget(620)>0 )
THEN
5372 grid1(i,j) = dusmass25(i,j)
5375 if(grib==
'grib2')
then
5377 fld_info(cfld)%ifld=iavblfld(iget(620))
5378 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5382 IF (iget(621)>0 )
THEN
5388 IF(ducmass(i,j)<spval) grid1(i,j) = ducmass(i,j) * 1.e-9
5391 if(grib==
'grib2')
then
5393 fld_info(cfld)%ifld=iavblfld(iget(621))
5394 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5399 IF (iget(622)>0 )
THEN
5405 IF(ducmass25(i,j)<spval) grid1(i,j) = ducmass25(i,j) * 1.e-9
5408 if(grib==
'grib2')
then
5410 fld_info(cfld)%ifld=iavblfld(iget(622))
5411 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5416 IF (iget(646)>0 )
THEN
5421 IF(dustcb(i,j)<spval) grid1(i,j) = dustcb(i,j) * 1.e-9
5424 if(grib==
'grib2')
then
5426 fld_info(cfld)%ifld=iavblfld(iget(646))
5427 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5432 IF (iget(647)>0 )
THEN
5437 IF(sscb(i,j)<spval) grid1(i,j) = sscb(i,j) * 1.e-9
5440 if(grib==
'grib2')
then
5442 fld_info(cfld)%ifld=iavblfld(iget(647))
5443 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5447 IF (iget(616)>0 )
THEN
5452 IF(bccb(i,j)<spval) grid1(i,j) = bccb(i,j) * 1.e-9
5455 if(grib==
'grib2')
then
5457 fld_info(cfld)%ifld=iavblfld(iget(616))
5458 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5463 IF (iget(617)>0 )
THEN
5468 IF(occb(i,j)<spval) grid1(i,j) = occb(i,j) * 1.e-9
5471 if(grib==
'grib2')
then
5473 fld_info(cfld)%ifld=iavblfld(iget(617))
5474 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5479 IF (iget(618)>0 )
THEN
5484 IF(sulfcb(i,j)<spval) grid1(i,j) = sulfcb(i,j) * 1.e-9
5487 if(grib==
'grib2')
then
5489 fld_info(cfld)%ifld=iavblfld(iget(618))
5490 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5496 IF (iget(659)>0) call wrt_aero_diag(659,nbin_du,duem)
5498 IF (iget(660)>0) call wrt_aero_diag(660,nbin_du,dusd)
5499 IF (iget(661)>0) call wrt_aero_diag(661,nbin_du,dudp)
5500 IF (iget(662)>0) call wrt_aero_diag(662,nbin_du,duwt)
5501 IF (iget(679)>0) call wrt_aero_diag(679,nbin_du,dusv)
5505 IF (iget(663)>0) call wrt_aero_diag(663,nbin_ss,ssem)
5506 IF (iget(664)>0) call wrt_aero_diag(664,nbin_ss,sssd)
5507 IF (iget(665)>0) call wrt_aero_diag(665,nbin_ss,ssdp)
5508 IF (iget(666)>0) call wrt_aero_diag(666,nbin_ss,sswt)
5509 IF (iget(680)>0) call wrt_aero_diag(680,nbin_ss,sssv)
5513 IF (iget(667)>0) call wrt_aero_diag(667,nbin_bc,bcem)
5514 IF (iget(668)>0) call wrt_aero_diag(668,nbin_bc,bcsd)
5515 IF (iget(669)>0) call wrt_aero_diag(669,nbin_bc,bcdp)
5516 IF (iget(670)>0) call wrt_aero_diag(670,nbin_bc,bcwt)
5517 IF (iget(681)>0) call wrt_aero_diag(681,nbin_bc,bcsv)
5521 IF (iget(671)>0) call wrt_aero_diag(671,nbin_oc,ocem)
5522 IF (iget(672)>0) call wrt_aero_diag(672,nbin_oc,ocsd)
5523 IF (iget(673)>0) call wrt_aero_diag(673,nbin_oc,ocdp)
5524 IF (iget(674)>0) call wrt_aero_diag(674,nbin_oc,ocwt)
5525 IF (iget(682)>0) call wrt_aero_diag(682,nbin_oc,ocsv)
5528 IF (iget(699).GT.0) call wrt_aero_diag(699,1,maod)
5529 print *,
'aft wrt disg maod'
5540 if(iget(473)>0 .or. iget(474)>0 .or. iget(475)>0)
then
5545 if(avgcprate(i,j) /= spval)
then
5546 egrid1(i,j) = avgcprate(i,j)*(1000./dtq2)
5556 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
5559 egrid2(i,j) = pbot(i,j)
5560 egrid3(i,j) = ptop(i,j)
5568 if(egrid1(i,j)<= 0. .or. egrid2(i,j)<= 0. .or. egrid3(i,j) <= 0.)
then
5577 IF(egrid2(i,j) == spval .or. egrid3(i,j) == spval) cycle
5578 if(egrid3(i,j) < 400.*100. .and. &
5579 (egrid2(i,j)-egrid3(i,j)) > 300.*100)
then
5581 if(egrid2(i,j) > pmid(i,j,lm))
then
5585 if(egrid2(i,j) >= pmid(i,j,l))
then
5586 if(egrid2(i,j)-pmid(i,j,l)<0.5)
then
5587 egrid2(i,j) = zmid(i,j,l)
5589 dp = (log(egrid2(i,j)) - log(pmid(i,j,l)))/ &
5590 max(1.e-6,(log(pmid(i,j,l+1))-log(pmid(i,j,l))))
5591 egrid2(i,j) = zmid(i,j,l)+(zmid(i,j,l+1)-zmid(i,j,l))*dp
5598 if(egrid3(i,j) < pmid(i,j,1))
then
5599 egrid3(i,j) = zmid(i,j,1)
5602 if(egrid3(i,j) <= pmid(i,j,l))
then
5603 if(pmid(i,j,l)-egrid3(i,j)<0.5)
then
5604 egrid3(i,j) = zmid(i,j,l)
5606 dp = (log(egrid3(i,j)) - log(pmid(i,j,l)))/ &
5607 max(1.e-6,(log(pmid(i,j,l))-log(pmid(i,j,l-1))))
5608 egrid3(i,j) = zmid(i,j,l)+(zmid(i,j,l)-zmid(i,j,l-1))*dp
5622 IF(iget(473) > 0)
THEN
5626 grid1(i,j) = egrid1(i,j)
5630 fld_info(cfld)%ifld=iavblfld(iget(473))
5636 datapd(i,j,cfld) = grid1(ii,jj)
5641 IF(iget(474) > 0)
THEN
5645 grid1(i,j) = egrid2(i,j)
5649 fld_info(cfld)%ifld=iavblfld(iget(474))
5655 datapd(i,j,cfld) = grid1(ii,jj)
5660 IF(iget(475) > 0)
THEN
5664 grid1(i,j) = egrid3(i,j)
5668 fld_info(cfld)%ifld=iavblfld(iget(475))
5674 datapd(i,j,cfld) = grid1(ii,jj)
5690 use ctlblk_mod
, only: spval,jsta,jend,im,ista,iend
5692 real,
intent(inout) :: cbcov(ista:iend,jsta:jend)
5700 integer,
parameter :: np=10
5701 real :: x(np), y(np)
5706 x = (/ 1.6,3.6,8.1,18.5,39.0,89.0,197.0,440.0,984.0,10000.0 /)
5707 y = (/ 0.0,0.1,0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.8 /)
5713 if(cbcov(i,j) == spval) cycle
5714 if(cbcov(i,j) <= 0.)
then
5717 val=log(1.0e6*cbcov(i,j))
5718 if (val <= x(1))
then
5720 else if (val >= x(np))
then
5724 if (val < x(k))
then
5725 delta = x(k) - x(k-1)
5726 if (delta <= 0.0)
then
5729 cbcov(i,j) = (y(k) * (val-x(k-1)) + &
5730 y(k-1) * (x(k)-val)) / delta
5741 subroutine wrt_aero_diag(igetfld,nbin,data)
5742 use ctlblk_mod
, only: jsta, jend, spval, im, jm, grib, &
5743 cfld, datapd, fld_info, jsta_2l, jend_2u,ista_2l,iend_2u,ista,iend
5744 use rqstfld_mod
, only: iget, id, lvls, iavblfld
5747 integer igetfld,nbin
5748 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u,nbin) :: data
5751 REAL,
dimension(im,jm) :: grid1
5757 if(
data(i,j,1)<spval) grid1(i,j) =
data(i,j,1)
5759 if(
data(i,j,k)<spval)&
5760 grid1(i,j) = grid1(i,j)+
data(i,j,k)
5764 if(grib==
'grib2')
then
5766 fld_info(cfld)%ifld=iavblfld(iget(igetfld))
5767 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5770 end subroutine wrt_aero_diag
subroutine cb_cover(cbcov)
calcape() computes CAPE/CINS and other storm related variables.