82 use vrbls4d, only: dust,suso, salt, soot, waso,no3,nh4
83 use vrbls3d, only: qqw, qqr, t, zint, cfr, qqi, qqs, q, ext, zmid,pmid,&
84 pint, duem, dusd, dudp, duwt, dusv, ssem, sssd,ssdp,&
85 sswt, sssv, bcem, bcsd, bcdp, bcwt, bcsv, ocem,ocsd,&
86 ocdp, ocwt, ocsv, sca, asy,cfr_raw
87 use vrbls2d, only: cldefi, cfracl, avgcfracl, cfracm, avgcfracm, cfrach,&
88 avgcfrach, avgtcdc, ncfrst, acfrst, ncfrcv, acfrcv, &
89 hbot, hbotd, hbots, htop, htopd, htops, fis, pblh, &
90 pbot, pbotl, pbotm, pboth, cnvcfr, ptop, ptopl, &
91 ptopm, ptoph, ttopl, ttopm, ttoph, pblcfr, cldwork, &
92 aswin, auvbin, auvbinc, aswout,alwout, aswtoa, &
93 rlwtoa, czmean, czen, rswin, alwin, alwtoa, rlwin, &
94 sigt4, rswout, radot, rswinc, aswinc, aswoutc, &
95 aswtoac, alwoutc, aswtoac, avisbeamswin, &
96 avisdiffswin, aswintoa, aswtoac, airbeamswin, &
97 airdiffswin, dusmass, dusmass25, ducmass, ducmass25, &
98 alwinc, alwtoac, swddni, swddif, swdnbc, swddnic, &
99 swddifc, swupbc, lwdnbc, lwupbc, swupt, &
100 taod5502d, aerssa2d, aerasy2d, mean_frp, ebb, hwp, &
101 lwp, iwp, avgcprate, &
102 dustcb,sscb,bccb,occb,sulfcb,dustpm,sspm,aod550, &
103 du_aod550,ss_aod550,su_aod550,oc_aod550,bc_aod550, &
104 pwat,dustpm10,maod,no3cb,nh4cb,aqm_aod550
105 use masks, only: lmh, htm
106 use params_mod, only: tfrz, d00, h99999, qcldmin, small, d608, h1, rog, &
107 gi, rd, qconv, abscoefi, abscoef, stbol, pq0, a2, &
109 use ctlblk_mod, only: jsta, jend, spval, modelname, grib, cfld,datapd, &
110 fld_info, avrain, theat, ifhr, ifmin, avcnvc, &
111 tclod, ardsw, trdsw, ardlw, nbin_du, trdlw, im, &
112 nbin_ss, nbin_oc,nbin_bc,nbin_su,nbin_no3,dtq2, &
113 jm, lm, gocart_on, gccpp_on, nasa_on, me, rdaod, &
116 use gridspec_mod
, only: dyval, gridtype
124 REAL,
PARAMETER :: c2k=273.15, ptop_low=64200., ptop_mid=35000., &
130 INTEGER :: lcbot,lctop,jc,ic
131 INTEGER,
dimension(ista:iend,jsta:jend) :: ibott, ibotcu, ibotdcu, ibotscu, ibotgr, &
132 itopt, itopcu, itopdcu, itopscu, itopgr
133 REAL,
dimension(im,jm) :: grid1
134 REAL,
dimension(ista:iend,jsta:jend) :: grid2, egrid1, egrid2, egrid3, &
135 cldp, cldz, cldt, cldzcu
136 REAL,
dimension(lm) :: rhb, watericetotal, pabovesfc
137 REAL :: watericemax, wimin, zcldbase, zcldtop, zpbltop, &
138 rhoice, coeffp, exponfp, const1, cloud_def_p, &
139 pcldbase, rhoair, vovermd, concfp, betav, &
140 vertvis, tx, tv, pol, esx, es, e, zsf, zcld, frac
141 integer nfog, nfogn(7),npblcld,nlifr, k1, k2, ll, ii, ib, n, jj, &
143 real,
dimension(lm) :: cldfra, cfr_layer_sum
144 real :: ceiling_thresh_cldfra, cldfra_max, &
145 zceil, zceil1, zceil2, previous_sum, &
146 ceil_min, ceil_neighbor
148 real,
dimension(im,jm) :: ceil
151 REAL,
dimension(ista:iend,jsta:jend) :: tcld, ceiling
152 real cu_ir(lm), q_conv
154 integer i,j,l,k,ibot,itclod,lbot,ltop,itrdsw,itrdlw, &
155 llmh,itheat,ifincr,itype,itop,num_thick
156 real dpbnd,rrnum,qcld,rsum,tlmh,factrs,factrl,dp, &
157 opdepth, tmp,qsat,rhum,tcext,delz,dely,dy_m
160 real,
allocatable :: full_ceil(:,:), full_fis(:,:)
162 real dummy(ista:iend,jsta:jend)
163 integer idummy(ista:iend,jsta:jend)
164 real full_dummy(im,jm)
173 integer,
parameter :: krhlev = 36
174 integer,
parameter :: kcm1 = 5
175 integer,
parameter :: kcm2 = 6
176 integer,
parameter :: nbdsw = 7
177 integer,
parameter :: noaer = 20
178 CHARACTER :: aerosolname(kcm2)*4, aerosolname_rd*4, aerosol_file*30
179 CHARACTER :: aername_rd*4, aeropt*3
182 REAL,
ALLOCATABLE :: extrhd_du(:,:,:), extrhd_ss(:,:,:), &
183 & extrhd_SU(:,:,:), extrhd_BC(:,:,:), &
184 & extrhd_OC(:,:,:), extrhd_NI(:,:,:)
187 REAL,
ALLOCATABLE :: scarhd_du(:,:,:), scarhd_ss(:,:,:), &
188 & scarhd_SU(:,:,:), scarhd_BC(:,:,:), &
189 & scarhd_OC(:,:,:), scarhd_NI(:,:,:)
192 REAL,
ALLOCATABLE :: asyrhd_du(:,:,:), asyrhd_ss(:,:,:), &
193 & asyrhd_SU(:,:,:), asyrhd_BC(:,:,:), &
194 & asyrhd_OC(:,:,:), asyrhd_NI(:,:,:)
197 REAL,
ALLOCATABLE :: ssarhd_du(:,:,:), ssarhd_ss(:,:,:), &
198 & ssarhd_SU(:,:,:), ssarhd_BC(:,:,:), &
199 & ssarhd_OC(:,:,:), ssarhd_NI(:,:,:)
203 real (kind=kind_phys) :: extrhi(kcm2,nbdsw)
206 real (kind=kind_phys) :: extrhd(krhlev,kcm2,nbdsw)
208 REAL,
dimension(ista:iend,jsta:jend) :: p1d,t1d,q1d,egrid4
210 real,
allocatable:: rdrh(:,:,:)
211 integer,
allocatable :: ihh(:,:,:)
212 REAL :: rh3d, drh0, drh1, ext01, ext02,sca01,asy01
213 INTEGER :: ih1, ih2,naero
214 INTEGER :: ios, indx, issam, isscm, isuso, iwaso, isoot, nbin
215 REAL :: ccdry, ccwet, ssam, sscm
216 REAL,
dimension(ista:iend,jsta:jend) :: aod_du, aod_ss, aod_su, aod_oc, aod_bc, aod_ni, aod
217 REAL,
dimension(ista:iend,jsta:jend) :: sca_du, sca_ss, sca_su, sca_oc,sca_bc, sca_ni,sca2d
218 REAL,
dimension(ista:iend,jsta:jend) :: asy_du, asy_ss, asy_su, asy_oc, asy_bc,asy_ni,asy2d
219 REAL,
dimension(ista:iend,jsta:jend) :: angst, aod_440, aod_860
221 INTEGER :: indx_ext(kcm2), indx_sca(kcm2)
222 LOGICAL :: laeropt, lext, lsca, lasy
224 REAL,
allocatable :: fpm25_du(:),fpm25_ss(:)
225 REAL,
allocatable,
dimension(:,:) :: rhosfc, smass_du_cr,smass_du_fn, &
226 & smass_ss_cr, smass_ss_fn, smass_oc,smass_bc, &
227 & smass_su, smass_cr, smass_fn
228 real (kind=kind_phys),
dimension(KRHLEV) :: rhlev
229 data rhlev(:)/ .0, .05, .10, .15, .20, .25, .30, .35, &
230 & .40, .45, .50, .55, .60, .65, .70, .75, &
231 & .80, .81, .82, .83, .84, .85, .86, .87, &
232 & .88, .89, .90, .91, .92, .93, .94, .95, &
233 & .96, .97, .98, .99/
235 data aerosolname /
'DUST',
'SALT',
'SUSO',
'SOOT',
'WASO',
'NITR'/
237 data indx_ext / 610, 611, 612, 613, 614, 615 /
238 data indx_sca / 651, 652, 653, 654, 655, 687 /
239 logical,
parameter :: debugprint = .false.
240 logical :: model_pwat
256 IF (iget(030)>0.OR.iget(572)>0)
THEN
266 IF(modelname ==
'RAPR')
THEN
270 IF(egrid1(i,j) < spval) grid1(i,j) = egrid1(i,j)
277 IF(egrid1(i,j) < spval) grid1(i,j) = egrid1(i,j) + tfrz
282 if(iget(030) > 0)
then
283 if(grib ==
"grib2" )
then
285 fld_info(cfld)%ifld = iavblfld(iget(030))
291 datapd(i,j,cfld) = grid1(ii,jj)
297 if(iget(572) > 0)
then
298 if(grib ==
"grib2" )
then
300 fld_info(cfld)%ifld = iavblfld(iget(572))
307 if (grid1(ii,jj) /= spval) grid1(ii,jj) = grid1(ii,jj) - tfrz
308 datapd(i,j,cfld) = grid1(ii,jj)
320 IF ((iget(032) > 0))
THEN
323 IF ( (lvls(1,iget(032))>0) )
THEN
328 CALL
calcape(itype,dpbnd,dummy,dummy,dummy,idummy,egrid1,egrid2, &
333 IF(fis(i,j) < spval) grid1(i,j) = egrid1(i,j)
336 CALL
bound(grid1,d00,h99999)
337 if(grib ==
"grib2" )
then
339 fld_info(cfld)%ifld = iavblfld(iget(032))
345 datapd(i,j,cfld) = grid1(ii,jj)
353 IF ((iget(107) > 0))
THEN
356 IF ( (lvls(1,iget(107)) > 0) )
THEN
357 IF ((iget(032) > 0))
THEN
358 IF ( (lvls(1,iget(032)) > 0) )
THEN
362 IF(fis(i,j) < spval) grid1(i,j) = - egrid2(i,j)
371 CALL
calcape(itype,dpbnd,dummy,dummy,dummy,idummy,egrid1,egrid2, &
376 IF(fis(i,j) < spval) grid1(i,j) = - egrid2(i,j)
380 CALL
bound(grid1,d00,h99999)
384 IF(fis(i,j) < spval) grid1(i,j) = - grid1(i,j)
387 if(grib ==
"grib2" )
then
389 fld_info(cfld)%ifld = iavblfld(iget(107))
395 datapd(i,j,cfld) = grid1(ii,jj)
405 IF (iget(080) > 0)
THEN
411 IF(abs(pwat(i,j)-spval)>small)
THEN
420 grid1(i,j) = pwat(i,j)
424 CALL calpw(grid1(ista:iend,jsta:jend),1)
427 IF(fis(i,j) >= spval) grid1(i,j)=spval
431 CALL
bound(grid1,d00,h99999)
432 if(grib ==
"grib2" )
then
434 fld_info(cfld)%ifld = iavblfld(iget(080))
440 datapd(i,j,cfld) = grid1(ii,jj)
449 IF (iget(735) > 0)
THEN
450 IF (modelname ==
'RAPR' .OR. modelname ==
'FV3R')
THEN
451 CALL calpw(grid1(ista:iend,jsta:jend),19)
452 CALL
bound(grid1,d00,h99999)
454 if(grib ==
"grib2" )
then
456 fld_info(cfld)%ifld = iavblfld(iget(735))
462 datapd(i,j,cfld) = grid1(ii,jj)
471 IF (iget(736) > 0)
THEN
472 CALL calpw(grid1(ista:iend,jsta:iend),18)
473 CALL
bound(grid1,d00,h99999)
474 if(grib ==
"grib2" )
then
476 fld_info(cfld)%ifld = iavblfld(iget(736))
482 datapd(i,j,cfld) = grid1(ii,jj)
490 IF (iget(741) > 0)
THEN
491 CALL calpw(grid1(ista:iend,jsta:iend),22)
492 CALL
bound(grid1,d00,h99999)
493 if(grib ==
"grib2" )
then
495 fld_info(cfld)%ifld = iavblfld(iget(741))
501 datapd(i,j,cfld) = grid1(ii,jj)
509 IF (iget(1011) > 0)
THEN
510 CALL calpw(grid1(ista:iend,jsta:iend),23)
511 CALL
bound(grid1,d00,h99999)
512 if(grib ==
"grib2" )
then
514 fld_info(cfld)%ifld = iavblfld(iget(1011))
520 datapd(i,j,cfld) = grid1(ii,jj)
527 IF (iget(200) > 0 .or. iget(575) > 0)
THEN
530 IF (modelname ==
'RAPR')
THEN
533 IF(lwp(i,j) < spval) grid1(i,j) = lwp(i,j)/1000.0
537 CALL calpw(grid1(ista:iend,jsta:jend),2)
538 IF(modelname ==
'GFS')
then
540 CALL calpw(grid2(ista:iend,jsta:jend),3)
544 IF(grid1(i,j)<spval.and.grid2(i,j)<spval)
THEN
545 grid1(i,j) = grid1(i,j) + grid2(i,j)
554 CALL
bound(grid1,d00,h99999)
555 if(iget(200) > 0)
then
556 if(grib ==
"grib2" )
then
558 fld_info(cfld)%ifld = iavblfld(iget(200))
564 datapd(i,j,cfld) = grid1(ii,jj)
569 if(iget(575) > 0)
then
570 if(grib ==
"grib2" )
then
572 fld_info(cfld)%ifld = iavblfld(iget(575))
578 datapd(i,j,cfld) = grid1(ii,jj)
587 IF (iget(201) > 0)
THEN
589 IF (modelname ==
'RAPR')
THEN
592 IF(iwp(i,j) < spval) grid1(i,j) = iwp(i,j)/1000.0
596 CALL calpw(grid1(ista:iend,jsta:jend),3)
598 CALL
bound(grid1,d00,h99999)
599 if(grib ==
"grib2" )
then
601 fld_info(cfld)%ifld = iavblfld(iget(201))
607 datapd(i,j,cfld) = grid1(ii,jj)
614 IF (iget(202) > 0)
THEN
615 CALL calpw(grid1(ista:iend,jsta:jend),4)
616 CALL
bound(grid1,d00,h99999)
617 if(grib==
"grib2" )
then
619 fld_info(cfld)%ifld=iavblfld(iget(202))
625 datapd(i,j,cfld) = grid1(ii,jj)
632 IF (iget(203) > 0)
THEN
633 CALL calpw(grid1(ista:iend,jsta:jend),5)
634 CALL
bound(grid1,d00,h99999)
635 if(grib==
"grib2" )
then
637 fld_info(cfld)%ifld=iavblfld(iget(203))
643 datapd(i,j,cfld) = grid1(ii,jj)
651 IF (iget(428) > 0)
THEN
652 CALL calpw(grid1(ista:iend,jsta:jend),16)
653 CALL
bound(grid1,d00,h99999)
654 if(grib==
"grib2" )
then
656 fld_info(cfld)%ifld=iavblfld(iget(428))
662 datapd(i,j,cfld) = grid1(ii,jj)
670 IF (iget(204) > 0)
THEN
671 CALL calpw(grid1(ista:iend,jsta:jend),6)
672 CALL
bound(grid1,d00,h99999)
673 if(grib==
"grib2" )
then
675 fld_info(cfld)%ifld=iavblfld(iget(204))
681 datapd(i,j,cfld) = grid1(ii,jj)
688 IF (iget(285) > 0)
THEN
689 CALL calpw(grid1(ista:iend,jsta:jend),7)
690 CALL
bound(grid1,d00,h99999)
691 if(grib==
"grib2" )
then
693 fld_info(cfld)%ifld=iavblfld(iget(285))
699 datapd(i,j,cfld) = grid1(ii,jj)
706 IF (iget(286) > 0)
THEN
707 CALL calpw(grid1(ista:iend,jsta:jend),8)
708 CALL
bound(grid1,d00,h99999)
709 if(grib==
"grib2" )
then
711 fld_info(cfld)%ifld=iavblfld(iget(286))
717 datapd(i,j,cfld) = grid1(ii,jj)
724 IF (iget(290) > 0)
THEN
725 CALL calpw(grid1(ista:iend,jsta:jend),9)
726 if(grib==
"grib2" )
then
728 fld_info(cfld)%ifld=iavblfld(iget(290))
734 datapd(i,j,cfld) = grid1(ii,jj)
741 IF (iget(291) > 0)
THEN
742 CALL calpw(grid1(ista:iend,jsta:jend),10)
743 if(grib==
"grib2" )
then
745 fld_info(cfld)%ifld=iavblfld(iget(291))
751 datapd(i,j,cfld) = grid1(ii,jj)
758 IF (iget(292) > 0)
THEN
759 CALL calpw(grid1(ista:iend,jsta:jend),11)
768 IF(grid1(i,j) < spval) grid1(i,j) = grid1(i,j)*rrnum
773 IF (itheat /= 0)
THEN
774 ifincr = mod(ifhr,itheat)
779 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
786 IF(ifmin >= 1)id(18)=id(18)*60
787 IF (id(18)<0) id(18) = 0
788 if(grib==
"grib2" )
then
790 fld_info(cfld)%ifld=iavblfld(iget(292))
792 fld_info(cfld)%ntrange=1
794 fld_info(cfld)%ntrange=0
796 fld_info(cfld)%tinvstat=ifhr-id(18)
802 datapd(i,j,cfld) = grid1(ii,jj)
809 IF (iget(293) > 0)
THEN
810 CALL calpw(grid1(ista:iend,jsta:jend),12)
819 IF(grid1(i,j) < spval) grid1(i,j) = grid1(i,j)*rrnum
824 IF (itheat /= 0)
THEN
825 ifincr = mod(ifhr,itheat)
830 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
837 IF(ifmin >= 1)id(18)=id(18)*60
838 IF (id(18)<0) id(18) = 0
839 if(grib==
"grib2" )
then
841 fld_info(cfld)%ifld=iavblfld(iget(293))
843 fld_info(cfld)%ntrange=1
845 fld_info(cfld)%ntrange=0
847 fld_info(cfld)%tinvstat=ifhr-id(18)
853 datapd(i,j,cfld) = grid1(ii,jj)
860 IF (iget(295)>0)
THEN
861 CALL calpw(grid1(ista:iend,jsta:jend),13)
862 if(grib==
"grib2" )
then
864 fld_info(cfld)%ifld=iavblfld(iget(295))
865 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
870 IF (iget(312)>0)
THEN
871 CALL calpw(grid1(ista:iend,jsta:jend),14)
872 if(grib==
"grib2" )
then
874 fld_info(cfld)%ifld=iavblfld(iget(312))
875 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
880 IF (iget(299) > 0)
THEN
881 CALL calpw(grid1(ista:iend,jsta:jend),15)
882 if(grib==
"grib2" )
then
884 fld_info(cfld)%ifld=iavblfld(iget(299))
890 datapd(i,j,cfld) = grid1(ii,jj)
897 IF (iget(287)>0 .OR. iget(288)>0)
THEN
906 qcld=qqw(i,j,l)+qqr(i,j,l)
907 IF (qcld>=qcldmin .AND. t(i,j,l)<tfrz)
THEN
916 grid1(i,j)=zint(i,j,lbot+1)
918 qcld=qqw(i,j,l)+qqr(i,j,l)
919 IF (qcld>=qcldmin .AND. t(i,j,l)<tfrz)
THEN
925 grid2(i,j)=zint(i,j,ltop)
929 IF (iget(287)>0)
THEN
930 if(grib==
"grib2" )
then
932 fld_info(cfld)%ifld=iavblfld(iget(287))
933 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
936 IF (iget(288)>0)
THEN
940 grid1(i,j)=grid2(i,j)
943 if(grib==
"grib2" )
then
945 fld_info(cfld)%ifld=iavblfld(iget(288))
951 datapd(i,j,cfld) = grid1(ii,jj)
961 IF (iget(197)>0)
THEN
964 grid1(i,j) = cldefi(i,j)
967 if(grib==
"grib2" )
then
969 fld_info(cfld)%ifld=iavblfld(iget(197))
970 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
974 IF ((modelname==
'NMM' .AND. gridtype==
'B') .OR. &
975 modelname==
'FV3R')
THEN
994 if(grib ==
"grib2" )
then
999 write (*,*)
'numr,dyval,DY_m=',numr,dyval,dy_m
1003 if(cfr(i,j,l)<spval)
then
1004 full_cld(i,j)=cfr(i,j,l)
1012 CALL collect_all(full_cld(ista:iend,jsta:jend),full_dummy)
1018 DO jc=max(1,j-numr),min(jm,j+numr)
1019 DO ic=max(1,i-numr),min(im,i+numr)
1021 IF(full_cld(ic,jc) /= spval)
THEN
1023 frac=frac+full_cld(ic,jc)
1030 IF (numpts>0) frac=frac/
REAL(numpts)
1031 if(pmid(i,j,l)<spval)
then
1032 pcldbase=pmid(i,j,l)
1033 IF (pcldbase>=ptop_low)
THEN
1034 cfracl(i,j)=max(cfracl(i,j),frac)
1035 ELSE IF (pcldbase>=ptop_mid)
THEN
1036 cfracm(i,j)=max(cfracm(i,j),frac)
1038 cfrach(i,j)=max(cfrach(i,j),frac)
1040 tcld(i,j)=max(tcld(i,j),frac)
1051 ELSEIF (modelname==
'GFS')
THEN
1070 pcldbase=pmid(i,j,l)
1071 IF (pcldbase>=ptop_low)
THEN
1072 cfracl(i,j)=max(cfracl(i,j),frac)
1073 ELSE IF (pcldbase>=ptop_mid)
THEN
1074 cfracm(i,j)=max(cfracm(i,j),frac)
1076 cfrach(i,j)=max(cfrach(i,j),frac)
1078 tcld(i,j)=max(tcld(i,j),frac)
1087 IF (iget(799)>0)
THEN
1093 IF (zmid(i,j,lm-k+1) <= pblh(i,j)+1000.0)
THEN
1094 grid1(i,j)=max(grid1(i,j),cfr(i,j,lm-k+1)*100.0)
1099 if(grib==
"grib2" )
then
1101 fld_info(cfld)%ifld=iavblfld(iget(799))
1102 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1107 IF (iget(037) > 0)
THEN
1111 IF(cfracl(i,j) < spval)
then
1112 grid1(i,j) = cfracl(i,j)*100.
1118 if(grib==
"grib2" )
then
1120 fld_info(cfld)%ifld=iavblfld(iget(037))
1126 datapd(i,j,cfld) = grid1(ii,jj)
1133 IF (iget(300) > 0)
THEN
1137 IF(avgcfracl(i,j) < spval)
then
1138 grid1(i,j) = avgcfracl(i,j)*100.
1145 itclod = nint(tclod)
1146 IF(itclod /= 0)
then
1147 ifincr = mod(ifhr,itclod)
1148 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1154 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1157 id(18) = ifhr-itclod
1159 id(18) = ifhr-ifincr
1160 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1162 IF (id(18)<0) id(18) = 0
1163 if(grib==
"grib2" )
then
1165 fld_info(cfld)%ifld=iavblfld(iget(300))
1167 fld_info(cfld)%ntrange=1
1169 fld_info(cfld)%ntrange=0
1171 fld_info(cfld)%tinvstat=ifhr-id(18)
1177 datapd(i,j,cfld) = grid1(ii,jj)
1184 IF (iget(038) > 0)
THEN
1189 IF(cfracm(i,j) < spval)
then
1190 grid1(i,j) = cfracm(i,j)*100.
1196 if(grib==
"grib2" )
then
1198 fld_info(cfld)%ifld=iavblfld(iget(038))
1204 datapd(i,j,cfld) = grid1(ii,jj)
1211 IF (iget(301) > 0)
THEN
1215 IF(abs(avgcfracm(i,j)-spval)>small)
THEN
1216 grid1(i,j) = avgcfracm(i,j)*100.
1223 itclod = nint(tclod)
1224 IF(itclod /= 0)
then
1225 ifincr = mod(ifhr,itclod)
1226 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1232 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1235 id(18) = ifhr-itclod
1237 id(18) = ifhr-ifincr
1238 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1240 IF (id(18)<0) id(18) = 0
1241 if(grib==
"grib2" )
then
1243 fld_info(cfld)%ifld=iavblfld(iget(301))
1245 fld_info(cfld)%ntrange=1
1247 fld_info(cfld)%ntrange=0
1249 fld_info(cfld)%tinvstat=ifhr-id(18)
1255 datapd(i,j,cfld) = grid1(ii,jj)
1262 IF (iget(039)>0)
THEN
1267 IF(cfrach(i,j) < spval)
then
1268 grid1(i,j) = cfrach(i,j)*100.
1274 if(grib==
"grib2" )
then
1276 fld_info(cfld)%ifld=iavblfld(iget(039))
1282 datapd(i,j,cfld) = grid1(ii,jj)
1289 IF (iget(302) > 0)
THEN
1294 IF(avgcfrach(i,j) < spval)
then
1295 grid1(i,j) = avgcfrach(i,j)*100.
1302 itclod = nint(tclod)
1303 IF(itclod /= 0)
then
1304 ifincr = mod(ifhr,itclod)
1305 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1311 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1314 id(18) = ifhr-itclod
1316 id(18) = ifhr-ifincr
1317 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1319 IF (id(18)<0) id(18) = 0
1320 if(grib==
"grib2" )
then
1322 fld_info(cfld)%ifld=iavblfld(iget(302))
1324 fld_info(cfld)%ntrange=1
1326 fld_info(cfld)%ntrange=0
1328 fld_info(cfld)%tinvstat=ifhr-id(18)
1334 datapd(i,j,cfld) = grid1(ii,jj)
1341 IF ((iget(161) > 0) .OR. (iget(260) > 0))
THEN
1343 IF(modelname==
'NCAR' .OR. modelname==
'RAPR')
THEN
1350 egrid1(i,j)=max(egrid1(i,j),cfr(i,j,l))
1355 ELSE IF (modelname==
'NMM'.OR.modelname==
'FV3R' &
1356 .OR. modelname==
'GFS')
THEN
1364 egrid1(i,j)=tcld(i,j)
1371 IF(abs(egrid1(i,j)-spval) > small)
THEN
1372 grid1(i,j) = egrid1(i,j)*100.
1373 tcld(i,j) = egrid1(i,j)*100.
1377 IF (iget(161)>0)
THEN
1378 if(grib==
"grib2" )
then
1380 fld_info(cfld)%ifld=iavblfld(iget(161))
1386 datapd(i,j,cfld) = grid1(ii,jj)
1394 IF (iget(144) > 0)
THEN
1396 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
1400 IF(abs(avgtcdc(i,j)-spval) > small)
then
1401 grid1(i,j) = avgtcdc(i,j)*100.
1408 ELSE IF(modelname ==
'NMM')
THEN
1419 IF (ncfrst(i,j)<spval.and.acfrst(i,j)<spval)
THEN
1420 IF (ncfrst(i,j) > 0) rsum=acfrst(i,j)/ncfrst(i,j)
1421 IF (ncfrcv(i,j) > 0) &
1422 rsum=max(rsum, acfrcv(i,j)/ncfrcv(i,j))
1423 grid1(i,j) = rsum*100.
1430 IF(modelname ==
'NMM' .OR. modelname ==
'GFS' .OR. &
1431 modelname ==
'FV3R')
THEN
1433 itclod = nint(tclod)
1434 IF(itclod /= 0)
then
1435 ifincr = mod(ifhr,itclod)
1436 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1442 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1445 id(18) = ifhr-itclod
1447 id(18) = ifhr-ifincr
1448 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1450 IF (id(18)<0) id(18) = 0
1452 if(grib==
"grib2" )
then
1454 fld_info(cfld)%ifld=iavblfld(iget(144))
1456 fld_info(cfld)%ntrange=1
1458 fld_info(cfld)%ntrange=0
1460 fld_info(cfld)%tinvstat=ifhr-id(18)
1466 datapd(i,j,cfld) = grid1(ii,jj)
1473 IF (iget(139)>0)
THEN
1474 IF(modelname /=
'NMM')
THEN
1479 IF (ncfrst(i,j)<spval.and.acfrst(i,j)<spval)
THEN
1480 IF (ncfrst(i,j)>0.0)
THEN
1481 grid1(i,j) = acfrst(i,j)/ncfrst(i,j)*100.
1491 IF(modelname==
'NMM' .or. modelname==
'FV3R')
THEN
1493 itclod = nint(tclod)
1494 IF(itclod /= 0)
then
1495 ifincr = mod(ifhr,itclod)
1496 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1501 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1504 id(18) = ifhr-itclod
1506 id(18) = ifhr-ifincr
1507 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1509 IF (id(18)<0) id(18) = 0
1511 if(grib==
"grib2" )
then
1513 fld_info(cfld)%ifld=iavblfld(iget(139))
1515 fld_info(cfld)%ntrange=1
1517 fld_info(cfld)%ntrange=0
1519 fld_info(cfld)%tinvstat=ifhr-id(18)
1520 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1525 IF (iget(143)>0)
THEN
1526 IF(modelname /=
'NMM')
THEN
1531 IF (ncfrcv(i,j)<spval.and.acfrcv(i,j)<spval)
THEN
1532 IF (ncfrcv(i,j)>0.0)
THEN
1533 grid1(i,j) = acfrcv(i,j)/ncfrcv(i,j)*100.
1543 IF(modelname==
'NMM')
THEN
1545 itclod = nint(tclod)
1546 IF(itclod /= 0)
then
1547 ifincr = mod(ifhr,itclod)
1548 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1553 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1556 id(18) = ifhr-itclod
1558 id(18) = ifhr-ifincr
1559 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1561 IF (id(18)<0) id(18) = 0
1563 if(grib==
"grib2" )
then
1565 fld_info(cfld)%ifld=iavblfld(iget(143))
1567 fld_info(cfld)%ntrange=1
1569 fld_info(cfld)%ntrange=0
1571 fld_info(cfld)%tinvstat=ifhr-id(18)
1572 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1577 IF((iget(148)>0) .OR. (iget(149)>0) .OR. &
1578 (iget(168)>0) .OR. (iget(178)>0) .OR. &
1579 (iget(179)>0) .OR. (iget(194)>0) .OR. &
1580 (iget(408)>0) .OR. &
1581 (iget(409)>0) .OR. (iget(406)>0) .OR. &
1582 (iget(195)>0) .OR. (iget(260)>0) .OR. &
1604 if (hbot(i,j) /= spval)
then
1605 ibotcu(i,j) = nint(hbot(i,j))
1607 if (hbotd(i,j) /= spval)
then
1608 ibotdcu(i,j) = nint(hbotd(i,j))
1610 if (hbots(i,j) /= spval)
then
1611 ibotscu(i,j) = nint(hbots(i,j))
1613 if (htop(i,j) /= spval)
then
1614 itopcu(i,j) = nint(htop(i,j))
1616 if (htopd(i,j) /= spval)
then
1617 itopdcu(i,j) = nint(htopd(i,j))
1619 if (htops(i,j) /= spval)
then
1620 itopscu(i,j) = nint(htops(i,j))
1622 IF (ibotcu(i,j)-itopcu(i,j) <= 1)
THEN
1626 IF (ibotdcu(i,j)-itopdcu(i,j) <= 1)
THEN
1630 IF (ibotscu(i,j)-itopscu(i,j) <= 1)
THEN
1636 IF (itop > 0 .AND. itop < 100)
THEN
1639 IF (itop > 0 .AND. itop <= nint(lmh(i,j)))
THEN
1640 cldzcu(i,j) = zmid(i,j,itop)
1642 cldzcu(i,j) = -5000.
1651 if(modelname ==
'RAPR')
then
1653 DO l=nint(lmh(i,j)),1,-1
1654 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1655 IF (qcld >= qcldmin)
THEN
1661 DO l=1,nint(lmh(i,j))
1662 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1663 IF (qcld >= qcldmin)
THEN
1670 zpbltop = pblh(i,j)+zint(i,j,nint(lmh(i,j))+1)
1671 DO l=nint(lmh(i,j)),1,-1
1672 qcld = qqw(i,j,l)+qqi(i,j,l)
1673 IF (qcld >= qcldmin)
THEN
1677 snow_check:
IF (qqs(i,j,l)>=qcldmin)
THEN
1680 qsat=pq0/pmid(i,j,l)*exp(a2*(tmp-a3)/(tmp-a4))
1684 qsat=pq0/pmid(i,j,l)*exp(21.8745584*(tmp-a3)/(tmp-7.66))
1687 IF (rhum>=0.98 .AND. zmid(i,j,l)>=zpbltop)
THEN
1694 DO l=1,nint(lmh(i,j))
1695 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1696 IF (qcld >= qcldmin)
THEN
1704 IF(modelname ==
'NCAR' .OR. modelname ==
'RAPR')
THEN
1705 ibott(i,j) = ibotgr(i,j)
1706 itopt(i,j) = itopgr(i,j)
1708 ibott(i,j) = max(ibotgr(i,j), ibotcu(i,j))
1711 itopt(i,j) = min(itopgr(i,j), itopcu(i,j))
1718 IF (iget(758)>0)
THEN
1722 grid1(i,j) = cldzcu(i,j)
1725 if(grib==
"grib2" )
then
1727 fld_info(cfld)%ifld=iavblfld(iget(758))
1728 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1738 IF ((iget(148)>0) .OR. (iget(178)>0) .OR.(iget(260)>0) )
THEN
1742 IF(modelname ==
'RAPR')
then
1746 ELSE IF (ibot <= nint(lmh(i,j)))
THEN
1747 cldp(i,j) = pmid(i,j,ibot)
1748 IF (ibot == lm)
THEN
1749 cldz(i,j) = zint(i,j,lm)
1751 cldz(i,j) = htm(i,j,ibot+1)*t(i,j,ibot+1) &
1752 *(q(i,j,ibot+1)*d608+h1)*rog* &
1753 (log(pint(i,j,ibot+1))-log(cldp(i,j)))&
1758 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
1759 cldp(i,j) = pmid(i,j,ibot)
1760 cldz(i,j) = zmid(i,j,ibot)
1769 IF (iget(148)>0)
THEN
1772 grid1(i,j) = cldp(i,j)
1775 if(grib==
"grib2" )
then
1777 fld_info(cfld)%ifld=iavblfld(iget(148))
1778 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1782 IF (iget(178)>0)
THEN
1786 grid1(i,j) = cldz(i,j)
1789 if(grib==
"grib2" )
then
1791 fld_info(cfld)%ifld=iavblfld(iget(178))
1792 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1800 IF (iget(408)>0)
THEN
1818 cloud_def_p = 0.0000001
1827 watericemax = -99999.
1830 watericetotal(k) = qqw(i,j,ll) + qqi(i,j,ll)
1831 watericemax = max(watericemax,watericetotal(k))
1834 if (watericemax>=cloud_def_p)
then
1841 pabovesfc(k) = pint(i,j,lm) - pint(i,j,lm-k+1)
1842 if (watericetotal(k)<cloud_def_p)
then
1846 wimin = min(wimin,watericetotal(k1))
1848 if (wimin>cloud_def_p)
then
1849 nfogn(k)= nfogn(k)+1
1858 if (watericetotal(k)<cloud_def_p)
then
1859 if (watericetotal(1)>cloud_def_p)
then
1862 if (watericetotal(k1)>=cloud_def_p)
then
1863 watericetotal(k1)=0.
1881 if (watericetotal(k)>cloud_def_p)
then
1885 zcldbase = zmid(i,j,lm-k1+1)
1886 pcldbase = pmid(i,j,lm-k1+1)
1889 zcldbase = zmid(i,j,lm-k1+1) + (cloud_def_p-watericetotal(k1)) &
1890 * (zmid(i,j,lm-k1+2)-zmid(i,j,lm-k1+1)) &
1891 / (watericetotal(k1-1) - watericetotal(k1))
1892 pcldbase = pmid(i,j,lm-k1+1) + (cloud_def_p-watericetotal(k1)) &
1893 * (pmid(i,j,lm-k1+2)-pmid(i,j,lm-k1+1)) &
1894 / (watericetotal(k1-1) - watericetotal(k1))
1896 zcldbase = max(zcldbase,fis(i,j)*gi+5.)
1902 if (qqs(i,j,lm)>0.)
then
1903 tv=t(i,j,lm)*(h1+d608*q(i,j,lm))
1904 rhoair=pmid(i,j,lm)/(rd*tv)
1905 vovermd = (1.+q(i,j,lm))/rhoair + qqs(i,j,lm)/rhoice
1906 concfp = qqs(i,j,lm)/vovermd*1000.
1907 betav = coeffp*concfp**exponfp + 1.e-10
1908 vertvis = 1000.*min(90., const1/betav)
1909 if (vertvis < zcldbase-fis(i,j)*gi )
then
1910 zcldbase = fis(i,j)*gi + vertvis
1911 loop3741:
do k2=2,lm
1913 if (zmid(i,j,lm-k2+1) > zcldbase)
then
1914 pcldbase = pmid(i,j,lm-k1+2) + (zcldbase-zmid(i,j,lm-k1+2)) &
1915 *(pmid(i,j,lm-k1+1)-pmid(i,j,lm-k1+2) ) &
1916 /(zmid(i,j,lm-k1+1)-zmid(i,j,lm-k1+2) )
1928 cldz(i,j) = zcldbase
1929 cldp(i,j) = pcldbase
1942 pol = 0.99999683 + tx*(-0.90826951e-02 + &
1943 tx*(0.78736169e-04 + tx*(-0.61117958e-06 + &
1944 tx*(0.43884187e-08 + tx*(-0.29883885e-10 + &
1945 tx*(0.21874425e-12 + tx*(-0.17892321e-14 + &
1946 tx*(0.11112018e-16 + tx*(-0.30994571e-19)))))))))
1950 e = pmid(i,j,ll)/100.*q(i,j,ll)/(0.62197+q(i,j,ll)*0.37803)
1951 rhb(k) = 100.*min(1.,e/es)
1959 zsf=zint(i,j,nint(lmh(i,j))+1)
1960 zpbltop = pblh(i,j)+zsf
1967 if (zpbltop<zmid(i,j,lm-k2+1))
then
1968 if (rhb(k2-1)>95. )
then
1969 zcldbase = zmid(i,j,lm-k2+2)
1970 if (cldz(i,j)<-100.)
then
1972 cldz(i,j) = zcldbase
1973 cldp(i,j) = pmid(i,j,lm-k2+2)
1976 if ( zcldbase<cldz(i,j))
then
1977 cldz(i,j) = zcldbase
1987 if(cldz(i,j)<-100.)
then
1988 cldz(i,j)=zmid(i,j,ibot)
1990 if(zmid(i,j,ibot)<cldz(i,j))
then
1991 cldz(i,j)=zmid(i,j,ibot)
1999 write(6,*)
'No. pts with PBL-cloud =',npblcld
2000 write(6,*)
'No. pts to eliminate fog =',nfog
2002 write(6,*)
'No. pts with fog below lev',k,
' =',nfogn(k)
2008 zcld = cldz(i,j) - fis(i,j)*gi
2009 if (cldz(i,j)>=0..and.zcld<160.) nlifr = nlifr+1
2012 write(6,*)
'No. pts w/ LIFR ceiling =',nlifr
2015 IF (iget(408)>0)
THEN
2019 grid1(i,j) = cldz(i,j)
2022 if(grib==
"grib2" )
then
2024 fld_info(cfld)%ifld=iavblfld(iget(408))
2025 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2033 IF (iget(487)>0)
THEN
2040 ceiling_thresh_cldfra = 0.5
2049 cldfra(k) = cfr(i,j,ll)
2050 cldfra_max = max(cldfra_max,cldfra(k))
2053 if (cldfra_max >= ceiling_thresh_cldfra)
then
2058 if (cldfra(k) < ceiling_thresh_cldfra)
then
2059 if (cldfra(1) > ceiling_thresh_cldfra)
then
2061 if (cldfra(k1) >= ceiling_thresh_cldfra)
then
2074 if (cldfra(k) >= ceiling_thresh_cldfra)
then
2076 zceil = zmid(i,j,lm-k1+1)
2078 zceil = zmid(i,j,lm-k1+1) + (ceiling_thresh_cldfra-cldfra(k1)) &
2079 * (zmid(i,j,lm-k1+2)-zmid(i,j,lm-k1+1)) &
2080 / (cldfra(k1-1) - cldfra(k1))
2082 zceil = max(zceil,fis(i,j)*gi+5.)
2086 if (qqs(i,j,lm)>0.)
then
2087 tv=t(i,j,lm)*(h1+d608*q(i,j,lm))
2088 rhoair=pmid(i,j,lm)/(rd*tv)
2089 vovermd = (1.+q(i,j,lm))/rhoair + qqs(i,j,lm)/rhoice
2090 concfp = qqs(i,j,lm)/vovermd*1000.
2091 betav = coeffp*concfp**exponfp + 1.e-10
2092 vertvis = 1000.*min(90., const1/betav)
2093 if (vertvis < zceil-fis(i,j)*gi )
then
2094 zceil = fis(i,j)*gi + vertvis
2110 grid1(i,j) = ceil(i,j)
2113 if(grib==
"grib2" )
then
2115 fld_info(cfld)%ifld=iavblfld(iget(487))
2116 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2136 IF ((iget(711)>0) .OR. (iget(798)>0))
THEN
2139 ceiling_thresh_cldfra = 0.5
2157 cldfra(k) = cfr(i,j,lm-k+1)
2164 if (cldfra(1) >= ceiling_thresh_cldfra)
then
2166 if (cldfra(k) < 0.6)
then
2174 if (cldfra(k) >= ceiling_thresh_cldfra)
then
2176 zceil1 = zmid(i,j,lm-k+1)
2178 zceil1 = zmid(i,j,lm-k+1) + (ceiling_thresh_cldfra-cldfra(k)) &
2179 * (zmid(i,j,lm-k+2)-zmid(i,j,lm-k+1)) &
2180 / (cldfra(k-1) - cldfra(k))
2200 cfr_layer_sum(1:lm)=0.0
2203 if ( (cldfra(k) >= 0.05 ) .and. &
2204 (cldfra(k) > cldfra(k-1)) .and. &
2205 (cldfra(k) >= cldfra(k+1)) ) &
2215 cfr_layer_sum(k) = min(1.0, previous_sum + cldfra(k))
2216 previous_sum = min(1.0, cfr_layer_sum(k))
2218 if (cfr_layer_sum(k) >= ceiling_thresh_cldfra)
then
2219 zceil2 = zmid(i,j,lm-k+1) + (ceiling_thresh_cldfra-cfr_layer_sum(k)) &
2220 * (zmid(i,j,lm-k+2)-zmid(i,j,lm-k+1)) &
2221 / (cfr_layer_sum(k-1) - cfr_layer_sum(k))
2264 allocate(full_ceil(im,jm),full_fis(im,jm))
2267 full_ceil(i,j)=ceil(i,j)
2268 full_fis(i,j)=fis(i,j)
2273 CALL collect_all(full_ceil(ista:iend,jsta:jend),full_dummy)
2274 full_ceil=full_dummy
2277 CALL collect_all(full_fis(ista:iend,jsta:jend),full_dummy)
2283 ceil_min = max( ceil(i,j)-fis(i,j)*gi , 5.0)
2284 do jc = max(1,j-numr),min(jm,j+numr)
2285 do ic = max(1,i-numr),min(im,i+numr)
2286 ceil_neighbor = max( full_ceil(ic,jc)-full_fis(ic,jc)*gi , 5.0)
2290 cldz(i,j) = ceil_min + fis(i,j)*gi
2291 cldz(i,j) = max(min(cldz(i,j), 20000.0),0.0)
2294 if ( zmid(i,j,lm-k+1) >= cldz(i,j) )
then
2295 cldp(i,j) = pmid(i,j,lm-k+2) + (cldz(i,j)-zmid(i,j,lm-k+2)) &
2296 *(pmid(i,j,lm-k+1)-pmid(i,j,lm-k+2) ) &
2297 /(zmid(i,j,lm-k+1)-zmid(i,j,lm-k+2) )
2303 if (
allocated(full_ceil))
deallocate(full_ceil)
2304 if (
allocated(full_fis))
deallocate(full_fis)
2307 IF (iget(711)>0)
THEN
2311 grid1(i,j) = cldz(i,j)
2314 if(grib==
"grib2" )
then
2316 fld_info(cfld)%ifld=iavblfld(iget(711))
2317 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2322 IF (iget(798)>0)
THEN
2326 grid1(i,j) = cldp(i,j)
2329 if(grib==
"grib2" )
then
2331 fld_info(cfld)%ifld=iavblfld(iget(798))
2332 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2340 IF (iget(260)>0)
THEN
2344 grid1(i,j) = ceiling(i,j)
2347 if(grib==
"grib2" )
then
2349 fld_info(cfld)%ifld=iavblfld(iget(260))
2350 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2354 IF (iget(261) > 0)
THEN
2361 if(grib==
"grib2" )
then
2363 fld_info(cfld)%ifld=iavblfld(iget(261))
2369 datapd(i,j,cfld) = grid1(ii,jj)
2377 IF (iget(188) > 0)
THEN
2378 IF(modelname ==
'GFS')
THEN
2382 grid1(i,j) = pbot(i,j)
2389 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2390 grid1(i,j) = pmid(i,j,ibot)
2392 grid1(i,j) = -50000.
2397 if(grib==
"grib2" )
then
2399 fld_info(cfld)%ifld=iavblfld(iget(188))
2405 datapd(i,j,cfld) = grid1(ii,jj)
2413 IF (iget(192) > 0)
THEN
2417 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2418 grid1(i,j) = pmid(i,j,ibot)
2420 grid1(i,j) = -50000.
2424 if(grib==
"grib2" )
then
2426 fld_info(cfld)%ifld=iavblfld(iget(192))
2427 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2432 IF (iget(190) > 0)
THEN
2436 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2437 grid1(i,j) = pmid(i,j,ibot)
2439 grid1(i,j) = -50000.
2443 if(grib==
"grib2" )
then
2445 fld_info(cfld)%ifld=iavblfld(iget(190))
2446 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2451 IF (iget(194) > 0)
THEN
2455 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2456 grid1(i,j) = pmid(i,j,ibot)
2458 grid1(i,j) = -50000.
2462 if(grib==
"grib2" )
then
2464 fld_info(cfld)%ifld=iavblfld(iget(194))
2465 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2471 IF (iget(303) > 0)
THEN
2475 grid1(i,j) = pbotl(i,j)
2482 itclod = nint(tclod)
2483 IF(itclod /= 0)
then
2484 ifincr = mod(ifhr,itclod)
2485 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2490 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2493 id(18) = ifhr-itclod
2495 id(18) = ifhr-ifincr
2496 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2498 IF (id(18)<0) id(18) = 0
2499 if(grib==
"grib2" )
then
2501 fld_info(cfld)%ifld=iavblfld(iget(303))
2503 fld_info(cfld)%ntrange=0
2505 fld_info(cfld)%ntrange=1
2507 fld_info(cfld)%tinvstat=ifhr-id(18)
2509 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2514 IF (iget(306) > 0)
THEN
2517 IF(pbotm(i,j) > small)
THEN
2518 grid1(i,j) = pbotm(i,j)
2525 itclod = nint(tclod)
2526 IF(itclod /= 0)
then
2527 ifincr = mod(ifhr,itclod)
2528 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2533 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2536 id(18) = ifhr-itclod
2538 id(18) = ifhr-ifincr
2539 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2541 IF (id(18)<0) id(18) = 0
2542 if(grib==
"grib2" )
then
2544 fld_info(cfld)%ifld=iavblfld(iget(306))
2546 fld_info(cfld)%ntrange=0
2548 fld_info(cfld)%ntrange=1
2550 fld_info(cfld)%tinvstat=ifhr-id(18)
2552 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2557 IF (iget(309) > 0)
THEN
2560 IF(pboth(i,j) > small)
THEN
2561 grid1(i,j) = pboth(i,j)
2568 itclod = nint(tclod)
2569 IF(itclod /= 0)
then
2570 ifincr = mod(ifhr,itclod)
2571 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2576 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2579 id(18) = ifhr-itclod
2581 id(18) = ifhr-ifincr
2582 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2584 IF (id(18)<0) id(18) = 0
2585 if(grib==
"grib2" )
then
2587 fld_info(cfld)%ifld=iavblfld(iget(309))
2589 fld_info(cfld)%ntrange=0
2591 fld_info(cfld)%ntrange=1
2593 fld_info(cfld)%tinvstat=ifhr-id(18)
2595 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2605 IF ((iget(149)>0) .OR. (iget(179)>0) .OR. &
2606 (iget(168)>0) .OR. (iget(275)>0))
THEN
2610 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2611 IF(t(i,j,itop)<spval .AND. &
2612 pmid(i,j,itop)<spval .AND. &
2613 zmid(i,j,itop)<spval)
THEN
2614 cldp(i,j) = pmid(i,j,itop)
2615 cldz(i,j) = zmid(i,j,itop)
2616 cldt(i,j) = t(i,j,itop)
2618 IF(modelname ==
'RAPR')
then
2628 IF(modelname ==
'RAPR')
then
2642 IF (iget(149)>0)
THEN
2645 grid1(i,j) = cldp(i,j)
2648 if(grib==
"grib2" )
then
2650 fld_info(cfld)%ifld=iavblfld(iget(149))
2651 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2656 IF (iget(179)>0)
THEN
2659 grid1(i,j) = cldz(i,j)
2662 if(grib==
"grib2" )
then
2664 fld_info(cfld)%ifld=iavblfld(iget(179))
2665 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2671 IF ((iget(409)>0) .OR. (iget(406)>0))
THEN
2673 cloud_def_p = 0.0000001
2680 IF(modelname ==
'RAPR') zcldtop = spval
2683 watericetotal(k) = qqw(i,j,ll) + qqi(i,j,ll)
2686 if (watericetotal(lm)<=cloud_def_p)
then
2687 loop373 :
do k=lm-1,2,-1
2688 if (watericetotal(k)>cloud_def_p)
then
2689 zcldtop = zmid(i,j,lm-k+1) + (cloud_def_p-watericetotal(k)) &
2690 * (zmid(i,j,lm-k)-zmid(i,j,lm-k+1)) &
2691 / (watericetotal(k+1) - watericetotal(k))
2696 zcldtop = zmid(i,j,1)
2700 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2701 cldp(i,j) = pmid(i,j,itop)
2702 cldt(i,j) = t(i,j,itop)
2705 IF(modelname ==
'RAPR') cldp(i,j) = spval
2714 if(zcldtop <-100.)
then
2717 zcldtop=zmid(i,j,itop)
2718 else if(zmid(i,j,itop)>zcldtop)
then
2722 zcldtop=zmid(i,j,itop)
2727 if(cldz(i,j)>-100. .and. zcldtop<-100.)
then
2728 zcldtop = cldz(i,j) + 200.
2738 IF (iget(406)>0)
THEN
2741 grid1(i,j) = cldp(i,j)
2744 if(grib==
"grib2" )
then
2746 fld_info(cfld)%ifld=iavblfld(iget(406))
2747 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2752 IF (iget(409)>0)
THEN
2755 grid1(i,j) = cldz(i,j)
2758 if(grib==
"grib2" )
then
2760 fld_info(cfld)%ifld=iavblfld(iget(409))
2761 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2768 IF (iget(168)>0)
THEN
2771 grid1(i,j) = cldt(i,j)
2774 if(grib==
"grib2" )
then
2776 fld_info(cfld)%ifld=iavblfld(iget(168))
2777 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2782 IF (iget(275)>0)
THEN
2795 if((hbot(i,j)-spval)>small .and. (htop(i,j)-spval)>small)
then
2796 lcbot=nint(hbot(i,j))
2797 lctop=nint(htop(i,j))
2798 if (lcbot-lctop > 1)
then
2799 q_conv=cnvcfr(i,j)*qconv
2801 if (t(i,j,k) < trad_ice)
then
2802 cu_ir(k)=abscoefi*q_conv
2804 cu_ir(k)=abscoef*q_conv
2814 if(pint(i,j,k)<spval.and.qqw(i,j,k)<spval.and. &
2815 qqi(i,j,k)<spval.and.qqs(i,j,k)<spval)
then
2816 dp=pint(i,j,k+1)-pint(i,j,k)
2817 opdepth=opdepth+( cu_ir(k) + abscoef*qqw(i,j,k)+ &
2819 & abscoefi*( qqi(i,j,k)+qqs(i,j,k) ) )*dp
2821 if (opdepth > 1.)
exit
2823 if (opdepth > 1.) num_thick=num_thick+1
2875 if(grib==
"grib2" )
then
2877 fld_info(cfld)%ifld=iavblfld(iget(275))
2878 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2885 IF (iget(189) > 0)
THEN
2886 IF(modelname ==
'GFS')
THEN
2890 grid1(i,j) = ptop(i,j)
2897 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2898 grid1(i,j) = pmid(i,j,itop)
2900 grid1(i,j) = -50000.
2905 if(grib==
"grib2" )
then
2907 fld_info(cfld)%ifld=iavblfld(iget(189))
2913 datapd(i,j,cfld) = grid1(ii,jj)
2921 IF (iget(193) > 0)
THEN
2925 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2926 grid1(i,j) = pmid(i,j,itop)
2928 grid1(i,j) = -50000.
2932 if(grib==
"grib2" )
then
2934 fld_info(cfld)%ifld=iavblfld(iget(193))
2935 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2940 IF (iget(191) > 0)
THEN
2944 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2945 grid1(i,j) = pmid(i,j,itop)
2947 grid1(i,j) = -50000.
2951 if(grib==
"grib2" )
then
2953 fld_info(cfld)%ifld=iavblfld(iget(191))
2954 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2960 IF (iget(195) > 0)
THEN
2964 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2965 grid1(i,j) = pmid(i,j,itop)
2967 grid1(i,j) = -50000.
2971 if(grib==
"grib2" )
then
2973 fld_info(cfld)%ifld=iavblfld(iget(195))
2974 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2980 IF (iget(304) > 0)
THEN
2983 IF(ptopl(i,j) > small)
THEN
2984 grid1(i,j) = ptopl(i,j)
2991 itclod = nint(tclod)
2992 IF(itclod /= 0)
then
2993 ifincr = mod(ifhr,itclod)
2994 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2999 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3002 id(18) = ifhr-itclod
3004 id(18) = ifhr-ifincr
3005 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3007 IF (id(18)<0) id(18) = 0
3008 if(grib==
"grib2" )
then
3010 fld_info(cfld)%ifld=iavblfld(iget(304))
3012 fld_info(cfld)%ntrange=0
3014 fld_info(cfld)%ntrange=1
3016 fld_info(cfld)%tinvstat=ifhr-id(18)
3018 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3023 IF (iget(307) > 0)
THEN
3026 grid1(i,j) = ptopm(i,j)
3030 itclod = nint(tclod)
3031 IF(itclod /= 0)
then
3032 ifincr = mod(ifhr,itclod)
3033 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3038 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3041 id(18) = ifhr-itclod
3043 id(18) = ifhr-ifincr
3044 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3046 IF (id(18)<0) id(18) = 0
3047 if(grib==
"grib2" )
then
3049 fld_info(cfld)%ifld=iavblfld(iget(307))
3051 fld_info(cfld)%ntrange=0
3053 fld_info(cfld)%ntrange=1
3055 fld_info(cfld)%tinvstat=ifhr-id(18)
3057 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3062 IF (iget(310) > 0)
THEN
3065 grid1(i,j) = ptoph(i,j)
3069 itclod = nint(tclod)
3070 IF(itclod /= 0)
then
3071 ifincr = mod(ifhr,itclod)
3072 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3077 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3080 id(18) = ifhr-itclod
3082 id(18) = ifhr-ifincr
3083 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3085 IF (id(18)<0) id(18) = 0
3086 if(grib==
"grib2" )
then
3088 fld_info(cfld)%ifld=iavblfld(iget(310))
3090 fld_info(cfld)%ntrange=0
3092 fld_info(cfld)%ntrange=1
3094 fld_info(cfld)%tinvstat=ifhr-id(18)
3096 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3102 IF (iget(305) > 0)
THEN
3105 grid1(i,j) = ttopl(i,j)
3109 itclod = nint(tclod)
3110 IF(itclod /= 0)
then
3111 ifincr = mod(ifhr,itclod)
3112 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3117 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3120 id(18) = ifhr-itclod
3122 id(18) = ifhr-ifincr
3123 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3125 IF (id(18)<0) id(18) = 0
3126 if(grib==
"grib2" )
then
3128 fld_info(cfld)%ifld=iavblfld(iget(305))
3130 fld_info(cfld)%ntrange=0
3132 fld_info(cfld)%ntrange=1
3134 fld_info(cfld)%tinvstat=ifhr-id(18)
3136 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3141 IF (iget(308) > 0)
THEN
3144 grid1(i,j) = ttopm(i,j)
3148 itclod = nint(tclod)
3149 IF(itclod /= 0)
then
3150 ifincr = mod(ifhr,itclod)
3151 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3156 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3159 id(18) = ifhr-itclod
3161 id(18) = ifhr-ifincr
3162 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3164 IF (id(18)<0) id(18) = 0
3165 if(grib==
"grib2" )
then
3167 fld_info(cfld)%ifld=iavblfld(iget(308))
3169 fld_info(cfld)%ntrange=0
3171 fld_info(cfld)%ntrange=1
3173 fld_info(cfld)%tinvstat=ifhr-id(18)
3175 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3180 IF (iget(311) > 0)
THEN
3183 grid1(i,j) = ttoph(i,j)
3187 itclod = nint(tclod)
3188 IF(itclod /= 0)
then
3189 ifincr = mod(ifhr,itclod)
3190 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3195 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3198 id(18) = ifhr-itclod
3200 id(18) = ifhr-ifincr
3201 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3203 IF (id(18)<0) id(18) = 0
3204 if(grib==
"grib2" )
then
3206 fld_info(cfld)%ifld=iavblfld(iget(311))
3208 fld_info(cfld)%ntrange=0
3210 fld_info(cfld)%ntrange=1
3212 fld_info(cfld)%tinvstat=ifhr-id(18)
3213 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3219 IF (iget(196) > 0.or.iget(570)>0)
THEN
3223 if(cnvcfr(i,j)/=spval)grid1(i,j)=100.*cnvcfr(i,j)
3226 if(iget(196)>0)
then
3227 if(grib==
"grib2" )
then
3229 fld_info(cfld)%ifld=iavblfld(iget(196))
3230 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3232 elseif(iget(570)>0)
then
3233 if(grib==
"grib2" )
then
3235 fld_info(cfld)%ifld=iavblfld(iget(570))
3236 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3243 IF (iget(342) > 0)
THEN
3247 if(pblcfr(i,j)/=spval)grid1(i,j)=100.*pblcfr(i,j)
3251 itclod = nint(tclod)
3252 IF(itclod /= 0)
then
3253 ifincr = mod(ifhr,itclod)
3254 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3259 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3262 id(18) = ifhr-itclod
3264 id(18) = ifhr-ifincr
3265 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3267 IF (id(18)<0) id(18) = 0
3268 if(grib==
"grib2" )
then
3270 fld_info(cfld)%ifld=iavblfld(iget(342))
3272 fld_info(cfld)%ntrange=0
3274 fld_info(cfld)%ntrange=1
3276 fld_info(cfld)%tinvstat=ifhr-id(18)
3278 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3284 IF (iget(313) > 0)
THEN
3287 grid1(i,j)=cldwork(i,j)
3291 itclod = nint(tclod)
3292 IF(itclod /= 0)
then
3293 ifincr = mod(ifhr,itclod)
3294 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3299 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3302 id(18) = ifhr-itclod
3304 id(18) = ifhr-ifincr
3305 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3307 IF (id(18)<0) id(18) = 0
3308 if(grib==
"grib2" )
then
3310 fld_info(cfld)%ifld=iavblfld(iget(313))
3312 fld_info(cfld)%ntrange=0
3314 fld_info(cfld)%ntrange=1
3316 fld_info(cfld)%tinvstat=ifhr-id(18)
3318 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3326 IF (iget(126)>0)
THEN
3327 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3339 IF(aswin(i,j)/=spval)
THEN
3340 grid1(i,j) = aswin(i,j)*rrnum
3342 grid1(i,j)=aswin(i,j)
3347 itrdsw = nint(trdsw)
3348 IF(itrdsw /= 0)
then
3349 ifincr = mod(ifhr,itrdsw)
3350 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3355 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3358 id(18) = ifhr-itrdsw
3360 id(18) = ifhr-ifincr
3361 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3363 IF (id(18)<0) id(18) = 0
3365 if(grib==
"grib2" )
then
3367 fld_info(cfld)%ifld=iavblfld(iget(126))
3369 fld_info(cfld)%ntrange=1
3371 fld_info(cfld)%ntrange=0
3373 fld_info(cfld)%tinvstat=ifhr-id(18)
3374 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3379 IF (iget(298)>0)
THEN
3380 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3392 IF(auvbin(i,j)/=spval)
THEN
3393 grid1(i,j) = auvbin(i,j)*rrnum
3395 grid1(i,j) = auvbin(i,j)
3401 itrdsw = nint(trdsw)
3402 IF(itrdsw /= 0)
then
3403 ifincr = mod(ifhr,itrdsw)
3404 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3409 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3412 id(18) = ifhr-itrdsw
3414 id(18) = ifhr-ifincr
3415 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3417 IF (id(18)<0) id(18) = 0
3419 if(grib==
"grib2" )
then
3421 fld_info(cfld)%ifld=iavblfld(iget(298))
3423 fld_info(cfld)%ntrange=1
3425 fld_info(cfld)%ntrange=0
3427 fld_info(cfld)%tinvstat=ifhr-id(18)
3428 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3433 IF (iget(297)>0)
THEN
3434 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3446 IF(auvbinc(i,j)/=spval)
THEN
3447 grid1(i,j) = auvbinc(i,j)*rrnum
3449 grid1(i,j) = auvbinc(i,j)
3455 itrdsw = nint(trdsw)
3456 IF(itrdsw /= 0)
then
3457 ifincr = mod(ifhr,itrdsw)
3458 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3463 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3466 id(18) = ifhr-itrdsw
3468 id(18) = ifhr-ifincr
3469 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3471 IF (id(18)<0) id(18) = 0
3473 if(grib==
"grib2" )
then
3475 fld_info(cfld)%ifld=iavblfld(iget(297))
3477 fld_info(cfld)%ntrange=1
3479 fld_info(cfld)%ntrange=0
3481 fld_info(cfld)%tinvstat=ifhr-id(18)
3482 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3487 IF (iget(127)>0)
THEN
3488 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3499 IF(alwin(i,j)/=spval)
THEN
3500 grid1(i,j) = alwin(i,j)*rrnum
3502 grid1(i,j)=alwin(i,j)
3507 itrdlw = nint(trdlw)
3508 IF(itrdlw /= 0)
then
3509 ifincr = mod(ifhr,itrdlw)
3510 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3515 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3518 id(18) = ifhr-itrdlw
3520 id(18) = ifhr-ifincr
3521 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3523 IF (id(18)<0) id(18) = 0
3525 if(grib==
"grib2" )
then
3527 fld_info(cfld)%ifld=iavblfld(iget(127))
3529 fld_info(cfld)%ntrange=1
3531 fld_info(cfld)%ntrange=0
3533 fld_info(cfld)%tinvstat=ifhr-id(18)
3534 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3539 IF (iget(128)>0)
THEN
3540 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3551 IF(aswout(i,j)/=spval)
THEN
3552 grid1(i,j) = -1.0*aswout(i,j)*rrnum
3554 grid1(i,j)=aswout(i,j)
3559 itrdsw = nint(trdsw)
3560 IF(itrdsw /= 0)
then
3561 ifincr = mod(ifhr,itrdsw)
3562 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3567 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3570 id(18) = ifhr-itrdsw
3572 id(18) = ifhr-ifincr
3573 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3575 IF (id(18)<0) id(18) = 0
3577 if(grib==
"grib2" )
then
3579 fld_info(cfld)%ifld=iavblfld(iget(128))
3581 fld_info(cfld)%ntrange=1
3583 fld_info(cfld)%ntrange=0
3585 fld_info(cfld)%tinvstat=ifhr-id(18)
3586 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3591 IF (iget(129)>0)
THEN
3592 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3603 IF(alwout(i,j)/=spval)
THEN
3604 grid1(i,j) = -1.0*alwout(i,j)*rrnum
3606 grid1(i,j)=alwout(i,j)
3611 itrdlw = nint(trdlw)
3612 IF(itrdlw /= 0)
then
3613 ifincr = mod(ifhr,itrdlw)
3614 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3619 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3622 id(18) = ifhr-itrdlw
3624 id(18) = ifhr-ifincr
3625 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3627 IF (id(18)<0) id(18) = 0
3629 if(grib==
"grib2" )
then
3631 fld_info(cfld)%ifld=iavblfld(iget(129))
3633 fld_info(cfld)%ntrange=1
3635 fld_info(cfld)%ntrange=0
3637 fld_info(cfld)%tinvstat=ifhr-id(18)
3638 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3643 IF (iget(130)>0)
THEN
3644 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3655 IF(aswtoa(i,j)/=spval)
THEN
3656 grid1(i,j) = aswtoa(i,j)*rrnum
3658 grid1(i,j)=aswtoa(i,j)
3663 itrdsw = nint(trdsw)
3664 IF(itrdsw /= 0)
then
3665 ifincr = mod(ifhr,itrdsw)
3666 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3671 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3674 id(18) = ifhr-itrdsw
3676 id(18) = ifhr-ifincr
3677 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3679 IF (id(18)<0) id(18) = 0
3681 if(grib==
"grib2" )
then
3683 fld_info(cfld)%ifld=iavblfld(iget(130))
3685 fld_info(cfld)%ntrange=1
3687 fld_info(cfld)%ntrange=0
3689 fld_info(cfld)%tinvstat=ifhr-id(18)
3690 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3695 IF (iget(131)>0)
THEN
3696 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3707 IF(alwtoa(i,j)/=spval)
THEN
3708 grid1(i,j) = alwtoa(i,j)*rrnum
3710 grid1(i,j)=alwtoa(i,j)
3715 itrdlw = nint(trdlw)
3716 IF(itrdlw /= 0)
then
3717 ifincr = mod(ifhr,itrdlw)
3718 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3723 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3726 id(18) = ifhr-itrdlw
3728 id(18) = ifhr-ifincr
3729 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3731 IF (id(18)<0) id(18) = 0
3733 if(grib==
"grib2" )
then
3735 fld_info(cfld)%ifld=iavblfld(iget(131))
3737 fld_info(cfld)%ntrange=1
3739 fld_info(cfld)%ntrange=0
3741 fld_info(cfld)%tinvstat=ifhr-id(18)
3742 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3747 IF (iget(274)>0)
THEN
3748 IF(modelname ==
'NCAR'.OR.modelname==
'RSM')
THEN
3753 grid1(i,j) = rlwtoa(i,j)
3757 if(grib==
"grib2" )
then
3759 fld_info(cfld)%ifld=iavblfld(iget(274))
3760 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3765 IF (iget(265)>0)
THEN
3767 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3772 IF(rlwtoa(i,j) < spval) &
3773 & grid1(i,j) = (rlwtoa(i,j)*stbol)**0.25
3777 if(grib==
"grib2" )
then
3779 fld_info(cfld)%ifld=iavblfld(iget(265))
3780 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3785 IF (iget(156)>0)
THEN
3789 IF(rswin(i,j)<spval)
THEN
3790 IF(czmean(i,j)>1.e-6)
THEN
3791 factrs=czen(i,j)/czmean(i,j)
3795 IF(rswin(i,j)<spval) grid1(i,j)=rswin(i,j)*factrs
3800 if(grib==
"grib2" )
then
3802 fld_info(cfld)%ifld=iavblfld(iget(156))
3803 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3808 IF (iget(157)>0)
THEN
3813 IF(modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3814 grid1(i,j)=rlwin(i,j)
3816 IF(sigt4(i,j)<spval.and.t(i,j,nint(lmh(i,j)))<spval)
THEN
3817 IF(sigt4(i,j)>0.0)
THEN
3820 factrl=5.67e-8*tlmh*tlmh*tlmh*tlmh/sigt4(i,j)
3824 IF(rlwin(i,j) < spval) grid1(i,j)=rlwin(i,j)*factrl
3830 if(grib==
"grib2" )
then
3832 fld_info(cfld)%ifld=iavblfld(iget(157))
3833 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3838 IF (iget(141)>0)
THEN
3843 IF(rswout(i,j)<spval)
THEN
3844 IF(czmean(i,j)>1.e-6)
THEN
3845 factrs=czen(i,j)/czmean(i,j)
3849 IF(rswout(i,j)<spval) grid1(i,j)=rswout(i,j)*factrs
3854 if(grib==
"grib2" )
then
3856 fld_info(cfld)%ifld=iavblfld(iget(141))
3857 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3862 IF (iget(142)>0)
THEN
3866 grid1(i,j) = radot(i,j)
3869 if(grib==
"grib2" )
then
3871 fld_info(cfld)%ifld=iavblfld(iget(142))
3872 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3877 IF (iget(764)>0)
THEN
3880 grid1(i,j) = lwdnbc(i,j)
3883 if(grib==
'grib2')
then
3885 fld_info(cfld)%ifld=iavblfld(iget(764))
3886 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3891 IF (iget(765)>0)
THEN
3894 grid1(i,j) = lwupbc(i,j)
3897 if(grib==
'grib2')
then
3899 fld_info(cfld)%ifld=iavblfld(iget(765))
3900 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3905 IF (iget(740)>0)
THEN
3908 grid1(i,j) = mean_frp(i,j)
3911 if(grib==
'grib2')
then
3913 fld_info(cfld)%ifld=iavblfld(iget(740))
3914 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3919 IF (iget(745)>0)
THEN
3922 IF (ebb(i,j)<spval)
THEN
3923 grid1(i,j) = ebb(i,j)/(1e9)
3929 if(grib==
'grib2')
then
3931 fld_info(cfld)%ifld=iavblfld(iget(745))
3932 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3937 IF (iget(755)>0)
THEN
3940 IF (hwp(i,j)<spval)
THEN
3941 grid1(i,j) = hwp(i,j)
3947 if(grib==
'grib2')
then
3949 fld_info(cfld)%ifld=iavblfld(iget(755))
3950 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3955 IF (iget(262)>0)
THEN
3960 IF(rswinc(i,j)<spval)
THEN
3961 IF(czmean(i,j)>1.e-6)
THEN
3962 factrs=czen(i,j)/czmean(i,j)
3966 IF(rswinc(i,j)<spval) grid1(i,j) = rswinc(i,j)*factrs
3970 if(grib==
"grib2" )
then
3972 fld_info(cfld)%ifld=iavblfld(iget(262))
3973 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3978 IF (iget(772)>0)
THEN
3982 grid1(i,j) = swddni(i,j)
3985 if(grib==
'grib2')
then
3987 fld_info(cfld)%ifld=iavblfld(iget(772))
3988 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3993 IF (iget(796)>0)
THEN
3996 grid1(i,j) = swddnic(i,j)
3999 if(grib==
'grib2')
then
4001 fld_info(cfld)%ifld=iavblfld(iget(796))
4002 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4007 IF (iget(773)>0)
THEN
4011 grid1(i,j) = swddif(i,j)
4014 if(grib==
'grib2')
then
4016 fld_info(cfld)%ifld=iavblfld(iget(773))
4017 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4022 IF (iget(797)>0)
THEN
4025 grid1(i,j) = swddifc(i,j)
4028 if(grib==
'grib2')
then
4030 fld_info(cfld)%ifld=iavblfld(iget(797))
4031 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4036 IF (iget(383)>0)
THEN
4039 grid1(i,j) = aswinc(i,j)
4043 itrdsw = nint(trdsw)
4044 IF(itrdsw /= 0)
then
4045 ifincr = mod(ifhr,itrdsw)
4046 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4051 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4054 id(18) = ifhr-itrdsw
4056 id(18) = ifhr-ifincr
4057 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4059 IF (id(18)<0) id(18) = 0
4060 if(grib==
"grib2" )
then
4062 fld_info(cfld)%ifld=iavblfld(iget(383))
4064 fld_info(cfld)%ntrange=1
4066 fld_info(cfld)%ntrange=0
4068 fld_info(cfld)%tinvstat=ifhr-id(18)
4069 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4074 IF (iget(386)>0)
THEN
4077 grid1(i,j) = aswoutc(i,j)
4081 itrdsw = nint(trdsw)
4082 IF(itrdsw /= 0)
then
4083 ifincr = mod(ifhr,itrdsw)
4084 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4089 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4092 id(18) = ifhr-itrdsw
4094 id(18) = ifhr-ifincr
4095 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4097 IF (id(18)<0) id(18) = 0
4098 if(grib==
"grib2" )
then
4100 fld_info(cfld)%ifld=iavblfld(iget(386))
4102 fld_info(cfld)%ntrange=1
4104 fld_info(cfld)%ntrange=0
4106 fld_info(cfld)%tinvstat=ifhr-id(18)
4107 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4112 IF (iget(719)>0)
THEN
4115 grid1(i,j) = swupt(i,j)
4118 if(grib==
'grib2')
then
4120 fld_info(cfld)%ifld=iavblfld(iget(719))
4121 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4126 IF (iget(387)>0)
THEN
4129 grid1(i,j) = aswtoac(i,j)
4133 itrdsw = nint(trdsw)
4134 IF(itrdsw /= 0)
then
4135 ifincr = mod(ifhr,itrdsw)
4136 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4141 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4144 id(18) = ifhr-itrdsw
4146 id(18) = ifhr-ifincr
4147 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4149 IF (id(18)<0) id(18) = 0
4150 if(grib==
"grib2" )
then
4152 fld_info(cfld)%ifld=iavblfld(iget(387))
4154 fld_info(cfld)%ntrange=1
4156 fld_info(cfld)%ntrange=0
4158 fld_info(cfld)%tinvstat=ifhr-id(18)
4159 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4164 IF (iget(388)>0)
THEN
4167 grid1(i,j) = aswintoa(i,j)
4171 itrdsw = nint(trdsw)
4172 IF(itrdsw /= 0)
then
4173 ifincr = mod(ifhr,itrdsw)
4174 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4179 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4182 id(18) = ifhr-itrdsw
4184 id(18) = ifhr-ifincr
4185 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4187 IF (id(18)<0) id(18) = 0
4188 if(grib==
"grib2" )
then
4190 fld_info(cfld)%ifld=iavblfld(iget(388))
4192 fld_info(cfld)%ntrange=1
4194 fld_info(cfld)%ntrange=0
4196 fld_info(cfld)%tinvstat=ifhr-id(18)
4197 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4202 IF (iget(382)>0)
THEN
4205 grid1(i,j) = alwinc(i,j)
4209 itrdlw = nint(trdlw)
4210 IF(itrdlw /= 0)
then
4211 ifincr = mod(ifhr,itrdlw)
4212 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4217 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4220 id(18) = ifhr-itrdlw
4222 id(18) = ifhr-ifincr
4223 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4225 IF (id(18)<0) id(18) = 0
4226 if(grib==
"grib2" )
then
4228 fld_info(cfld)%ifld=iavblfld(iget(382))
4230 fld_info(cfld)%ntrange=1
4232 fld_info(cfld)%ntrange=0
4234 fld_info(cfld)%tinvstat=ifhr-id(18)
4235 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4240 IF (iget(384)>0)
THEN
4243 grid1(i,j) = alwoutc(i,j)
4247 itrdlw = nint(trdlw)
4248 IF(itrdlw /= 0)
then
4249 ifincr = mod(ifhr,itrdlw)
4250 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4255 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4258 id(18) = ifhr-itrdlw
4260 id(18) = ifhr-ifincr
4261 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4263 IF (id(18)<0) id(18) = 0
4264 if(grib==
"grib2" )
then
4266 fld_info(cfld)%ifld=iavblfld(iget(384))
4268 fld_info(cfld)%ntrange=1
4270 fld_info(cfld)%ntrange=0
4272 fld_info(cfld)%tinvstat=ifhr-id(18)
4273 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4278 IF (iget(385)>0)
THEN
4281 grid1(i,j) = alwtoac(i,j)
4285 itrdlw = nint(trdlw)
4286 IF(itrdlw /= 0)
then
4287 ifincr = mod(ifhr,itrdlw)
4288 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4293 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4296 id(18) = ifhr-itrdlw
4298 id(18) = ifhr-ifincr
4299 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4301 IF (id(18)<0) id(18) = 0
4302 if(grib==
"grib2" )
then
4304 fld_info(cfld)%ifld=iavblfld(iget(385))
4306 fld_info(cfld)%ntrange=1
4308 fld_info(cfld)%ntrange=0
4310 fld_info(cfld)%tinvstat=ifhr-id(18)
4311 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4316 IF (iget(401)>0)
THEN
4319 grid1(i,j) = avisbeamswin(i,j)
4323 itrdsw = nint(trdsw)
4324 IF(itrdsw /= 0)
then
4325 ifincr = mod(ifhr,itrdsw)
4326 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4331 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4334 id(18) = ifhr-itrdsw
4336 id(18) = ifhr-ifincr
4337 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4339 IF (id(18)<0) id(18) = 0
4341 IF(itrdsw < 0)id(1:25)=0
4342 if(grib==
"grib2" )
then
4344 fld_info(cfld)%ifld=iavblfld(iget(401))
4346 fld_info(cfld)%ntrange=1
4348 fld_info(cfld)%ntrange=0
4350 fld_info(cfld)%tinvstat=ifhr-id(18)
4351 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4356 IF (iget(402)>0)
THEN
4359 grid1(i,j) = avisdiffswin(i,j)
4363 itrdsw = nint(trdsw)
4364 IF(itrdsw /= 0)
then
4365 ifincr = mod(ifhr,itrdsw)
4366 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4371 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4374 id(18) = ifhr-itrdsw
4376 id(18) = ifhr-ifincr
4377 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4379 IF (id(18)<0) id(18) = 0
4380 IF(itrdsw < 0)id(1:25)=0
4381 if(grib==
"grib2" )
then
4383 fld_info(cfld)%ifld=iavblfld(iget(402))
4385 fld_info(cfld)%ntrange=1
4387 fld_info(cfld)%ntrange=0
4389 fld_info(cfld)%tinvstat=ifhr-id(18)
4390 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4395 IF (iget(403)>0)
THEN
4398 grid1(i,j) = airbeamswin(i,j)
4402 itrdsw = nint(trdsw)
4403 IF(itrdsw /= 0)
then
4404 ifincr = mod(ifhr,itrdsw)
4405 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4410 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4413 id(18) = ifhr-itrdsw
4415 id(18) = ifhr-ifincr
4416 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4418 IF (id(18)<0) id(18) = 0
4419 IF(itrdsw < 0)id(1:25)=0
4420 if(grib==
"grib2" )
then
4422 fld_info(cfld)%ifld=iavblfld(iget(403))
4424 fld_info(cfld)%ntrange=1
4426 fld_info(cfld)%ntrange=0
4428 fld_info(cfld)%tinvstat=ifhr-id(18)
4429 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4434 IF (iget(404)>0)
THEN
4437 grid1(i,j) = airdiffswin(i,j)
4441 itrdsw = nint(trdsw)
4442 IF(itrdsw /= 0)
then
4443 ifincr = mod(ifhr,itrdsw)
4444 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4449 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4452 id(18) = ifhr-itrdsw
4454 id(18) = ifhr-ifincr
4455 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4457 IF (id(18)<0) id(18) = 0
4458 IF(itrdsw < 0)id(1:25)=0
4459 if(grib==
"grib2" )
then
4461 fld_info(cfld)%ifld=iavblfld(iget(404))
4463 fld_info(cfld)%ntrange=1
4465 fld_info(cfld)%ntrange=0
4467 fld_info(cfld)%tinvstat=ifhr-id(18)
4468 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4474 IF (iget(600).GT.0)
THEN
4477 grid1(i,j)=aod550(i,j)
4480 if(grib==
"grib2" )
then
4482 fld_info(cfld)%ifld=iavblfld(iget(600))
4483 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4487 IF (iget(601).GT.0)
THEN
4490 grid1(i,j)=du_aod550(i,j)
4493 if(grib==
"grib2" )
then
4495 fld_info(cfld)%ifld=iavblfld(iget(601))
4496 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4500 IF (iget(602).GT.0)
THEN
4503 grid1(i,j)=ss_aod550(i,j)
4506 if(grib==
"grib2" )
then
4508 fld_info(cfld)%ifld=iavblfld(iget(602))
4509 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4513 IF (iget(603).GT.0)
THEN
4516 grid1(i,j)=su_aod550(i,j)
4519 if(grib==
"grib2" )
then
4521 fld_info(cfld)%ifld=iavblfld(iget(603))
4522 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4526 IF (iget(604).GT.0)
THEN
4529 grid1(i,j)=oc_aod550(i,j)
4532 if(grib==
"grib2" )
then
4534 fld_info(cfld)%ifld=iavblfld(iget(604))
4535 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4540 IF (iget(605).GT.0)
THEN
4543 grid1(i,j)=bc_aod550(i,j)
4546 if(grib==
"grib2" )
then
4548 fld_info(cfld)%ifld=iavblfld(iget(605))
4549 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4556 IF (iget(712).GT.0)
THEN
4559 grid1(i,j)=aqm_aod550(i,j)
4562 if(grib==
"grib2" )
then
4564 fld_info(cfld)%ifld=iavblfld(iget(712))
4565 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4571 IF (iget(715)>0)
THEN
4574 grid1(i,j)=taod5502d(i,j)
4577 if(grib==
"grib2" )
then
4579 fld_info(cfld)%ifld=iavblfld(iget(715))
4580 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4585 IF (iget(716)>0)
THEN
4588 grid1(i,j)=aerasy2d(i,j)
4591 if(grib==
"grib2" )
then
4593 fld_info(cfld)%ifld=iavblfld(iget(716))
4594 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4599 IF (iget(717)>0)
THEN
4602 grid1(i,j)=aerssa2d(i,j)
4605 if(grib==
"grib2" )
then
4607 fld_info(cfld)%ifld=iavblfld(iget(717))
4608 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4612 if (gocart_on .or. gccpp_on .or. nasa_on)
then
4628 IF ( iget(i)>0 ) laeropt = .true.
4631 IF ( iget(i)>0 ) laeropt = .true.
4634 IF ( iget(i)>0 ) laeropt = .true.
4640 IF ( iget(i)>0 ) laersmass = .true.
4644 print *,
'COMPUTE AEROSOL OPTICAL PROPERTIES'
4647 ALLOCATE ( extrhd_du(krhlev,nbin_du,nbdsw))
4648 ALLOCATE ( extrhd_ss(krhlev,nbin_ss,nbdsw))
4649 ALLOCATE ( extrhd_su(krhlev,nbin_su,nbdsw))
4650 ALLOCATE ( extrhd_bc(krhlev,nbin_bc,nbdsw))
4651 ALLOCATE ( extrhd_oc(krhlev,nbin_oc,nbdsw))
4653 ALLOCATE ( scarhd_du(krhlev,nbin_du,nbdsw))
4654 ALLOCATE ( scarhd_ss(krhlev,nbin_ss,nbdsw))
4655 ALLOCATE ( scarhd_su(krhlev,nbin_su,nbdsw))
4656 ALLOCATE ( scarhd_bc(krhlev,nbin_bc,nbdsw))
4657 ALLOCATE ( scarhd_oc(krhlev,nbin_oc,nbdsw))
4659 ALLOCATE ( asyrhd_du(krhlev,nbin_du,nbdsw))
4660 ALLOCATE ( asyrhd_ss(krhlev,nbin_ss,nbdsw))
4661 ALLOCATE ( asyrhd_su(krhlev,nbin_su,nbdsw))
4662 ALLOCATE ( asyrhd_bc(krhlev,nbin_bc,nbdsw))
4663 ALLOCATE ( asyrhd_oc(krhlev,nbin_oc,nbdsw))
4665 ALLOCATE ( ssarhd_du(krhlev,nbin_du,nbdsw))
4666 ALLOCATE ( ssarhd_ss(krhlev,nbin_ss,nbdsw))
4667 ALLOCATE ( ssarhd_su(krhlev,nbin_su,nbdsw))
4668 ALLOCATE ( ssarhd_bc(krhlev,nbin_bc,nbdsw))
4669 ALLOCATE ( ssarhd_oc(krhlev,nbin_oc,nbdsw))
4671 ALLOCATE ( extrhd_ni(krhlev,nbin_no3,nbdsw))
4672 ALLOCATE ( scarhd_ni(krhlev,nbin_no3,nbdsw))
4673 ALLOCATE ( asyrhd_ni(krhlev,nbin_no3,nbdsw))
4674 ALLOCATE ( ssarhd_ni(krhlev,nbin_no3,nbdsw))
4676 if (gocart_on .or. gccpp_on)
then
4678 else if (nasa_on)
then
4681 print *,
'aft AEROSOL allocate, nbin_du=',nbin_du, &
4682 'nbin_ss=',nbin_ss,
'nbin_su=',nbin_su,
'nbin_bc=', &
4683 'nbin_oc=',nbin_oc,
'nbin_ni=',nbin_no3,
'nAero=',naero
4689 aerosol_file=
'optics_luts_'//aerosolname(i)//
'.dat'
4690 else if ( gccpp_on )
then
4691 aerosol_file=
'optics_luts_'//aerosolname(i)//
'_nasa.dat'
4692 else if ( nasa_on )
then
4693 aerosol_file=
'optics_luts_'//aerosolname(i)//
'_nasa.dat'
4695 open(unit=noaer, file=aerosol_file, status=
'OLD', iostat=ios)
4697 print *,
' ERROR! Non-zero iostat for rd_LUTS ', aerosol_file
4700 if(debugprint)print *,
'i=',i,
'read aerosol_file=',trim(aerosol_file),
'ios=',ios
4702 IF (aerosolname(i) ==
'DUST') nbin = nbin_du
4703 IF (aerosolname(i) ==
'SALT') nbin = nbin_ss
4704 IF (aerosolname(i) ==
'SUSO') nbin = nbin_su
4705 IF (aerosolname(i) ==
'SOOT') nbin = nbin_bc
4706 IF (aerosolname(i) ==
'WASO') nbin = nbin_oc
4708 IF (aerosolname(i) ==
'NITR') nbin = nbin_no3
4711 read(noaer,
'(2x,a4,1x,i1,1x,a3)')aername_rd,ib, aeropt
4712 IF (aername_rd /= aerosolname(i)) stop
4714 IF (aeropt /=
'ext' ) stop
4716 IF (aerosolname(i) ==
'DUST')
THEN
4718 read(noaer,
'(8f10.5)') (extrhd_du(ii,j,ib), ii=1,krhlev)
4720 read(noaer,
'(2x,a4)') aername_rd
4722 read(noaer,
'(8f10.5)') (scarhd_du(ii,j,ib), ii=1,krhlev)
4724 read(noaer,
'(2x,a4)') aername_rd
4726 read(noaer,
'(8f10.5)') (asyrhd_du(ii,j,ib), ii=1,krhlev)
4728 read(noaer,
'(2x,a4)') aername_rd
4730 read(noaer,
'(8f10.5)') (ssarhd_du(ii,j,ib), ii=1,krhlev)
4733 ELSEIF (aerosolname(i) ==
'SALT')
THEN
4735 read(noaer,
'(8f10.5)') (extrhd_ss(ii,j,ib), ii=1,krhlev)
4737 read(noaer,
'(2x,a4)') aername_rd
4739 read(noaer,
'(8f10.5)') (scarhd_ss(ii,j,ib), ii=1,krhlev)
4741 read(noaer,
'(2x,a4)') aername_rd
4743 read(noaer,
'(8f10.5)') (asyrhd_ss(ii,j,ib), ii=1,krhlev)
4745 read(noaer,
'(2x,a4)') aername_rd
4747 read(noaer,
'(8f10.5)') (ssarhd_ss(ii,j,ib), ii=1,krhlev)
4750 ELSEIF (aerosolname(i) ==
'SUSO')
THEN
4752 read(noaer,
'(8f10.5)') (extrhd_su(ii,j,ib), ii=1,krhlev)
4754 read(noaer,
'(2x,a4)') aername_rd
4756 read(noaer,
'(8f10.5)') (scarhd_su(ii,j,ib), ii=1,krhlev)
4758 read(noaer,
'(2x,a4)') aername_rd
4760 read(noaer,
'(8f10.5)') (asyrhd_su(ii,j,ib), ii=1,krhlev)
4762 read(noaer,
'(2x,a4)') aername_rd
4764 read(noaer,
'(8f10.5)') (ssarhd_su(ii,j,ib), ii=1,krhlev)
4767 ELSEIF (aerosolname(i) ==
'SOOT')
THEN
4769 read(noaer,
'(8f10.5)') (extrhd_bc(ii,j,ib), ii=1,krhlev)
4771 read(noaer,
'(2x,a4)') aername_rd
4773 read(noaer,
'(8f10.5)') (scarhd_bc(ii,j,ib), ii=1,krhlev)
4775 read(noaer,
'(2x,a4)') aername_rd
4777 read(noaer,
'(8f10.5)') (asyrhd_bc(ii,j,ib), ii=1,krhlev)
4779 read(noaer,
'(2x,a4)') aername_rd
4781 read(noaer,
'(8f10.5)') (ssarhd_bc(ii,j,ib), ii=1,krhlev)
4784 ELSEIF (aerosolname(i) ==
'WASO')
THEN
4786 read(noaer,
'(8f10.5)') (extrhd_oc(ii,j,ib), ii=1,krhlev)
4788 read(noaer,
'(2x,a4)') aername_rd
4790 read(noaer,
'(8f10.5)') (scarhd_oc(ii,j,ib), ii=1,krhlev)
4792 read(noaer,
'(2x,a4)') aername_rd
4794 read(noaer,
'(8f10.5)') (asyrhd_oc(ii,j,ib), ii=1,krhlev)
4796 read(noaer,
'(2x,a4)') aername_rd
4798 read(noaer,
'(8f10.5)') (ssarhd_oc(ii,j,ib), ii=1,krhlev)
4802 IF (aerosolname(i) ==
'NITR')
THEN
4804 read(noaer,
'(8f10.5)') (extrhd_ni(ii,j,ib), ii=1,krhlev)
4806 read(noaer,
'(2x,a4)') aername_rd
4808 read(noaer,
'(8f10.5)') (scarhd_ni(ii,j,ib), ii=1,krhlev)
4810 read(noaer,
'(2x,a4)') aername_rd
4812 read(noaer,
'(8f10.5)') (asyrhd_ni(ii,j,ib), ii=1,krhlev)
4814 read(noaer,
'(2x,a4)') aername_rd
4816 read(noaer,
'(8f10.5)') (ssarhd_ni(ii,j,ib), ii=1,krhlev)
4829 allocate (rdrh(ista:iend,jsta:jend,lm))
4830 allocate (ihh(ista:iend,jsta:jend,lm))
4836 p1d(i,j) = pmid(i,j,ll)
4837 t1d(i,j) = t(i,j,ll)
4838 q1d(i,j) = q(i,j,ll)
4842 CALL
calrh(p1d,t1d,q1d,egrid4)
4849 IF ( rh3d > rhlev(krhlev) )
THEN
4854 ELSEIF ( rh3d < rhlev(1))
THEN
4861 DO WHILE ( rh3d > rhlev(ih2))
4863 IF ( ih2 > krhlev )
EXIT
4865 ih2 = min( krhlev, ih2 )
4866 ih1 = max( 1, ih2-1 )
4867 drh0 = rhlev(ih2) - rhlev(ih1)
4869 drh1 = rh3d - rhlev(ih1)
4870 rdrh(i,j,ll) = drh1 / drh0
4883 IF (ib == 1 ) indx = 623
4885 IF (ib == 2 ) indx = 624
4887 IF (ib == 3 ) indx = 609
4889 IF (ib == 4 ) indx = 625
4891 IF (ib == 5 ) indx = 626
4893 IF (ib == 6 ) indx = 627
4895 IF (ib == 7 ) indx = 628
4902 IF (iget(indx)>0 ) lext =.true.
4905 IF (iget(650)>0 ) lsca =.true.
4907 IF (iget(indx_ext(i))>0 ) lext = .true.
4908 IF (iget(indx_sca(i))>0 ) lsca = .true.
4913 IF (iget(648)>0 ) lsca =.true.
4914 IF (iget(649)>0 ) lasy =.true.
4917 IF (iget(656)>0 )
THEN
4918 IF ( ib == 2 ) lext = .true.
4919 IF ( ib == 5 ) lext = .true.
4923 IF ( lext .OR. lsca .OR. lasy )
THEN
4935 ext01 = extrhd_du(1,n,ib)
4936 sca01 = scarhd_du(1,n,ib)
4937 asy01 = asyrhd_du(1,n,ib)
4938 ext(i,j,l) = ext(i,j,l)+1e-9*dust(i,j,l,n) * ext01
4939 sca(i,j,l) = sca(i,j,l)+1e-9*dust(i,j,l,n) * sca01
4940 asy(i,j,l) = asy(i,j,l)+1e-9*dust(i,j,l,n) * sca01*asy01
4942 ext(i,j,l) = ext(i,j,l) * 1000.
4943 sca(i,j,l) = sca(i,j,l) * 1000.
4944 asy(i,j,l) = asy(i,j,l) * 1000.
4948 CALL calpw(aod_du,17)
4949 CALL calpw(sca_du,20)
4950 CALL calpw(asy_du,21)
4964 ext01 = extrhd_su(ih1,n,ib) &
4965 & + rdrh(i,j,l)*(extrhd_su(ih2,n,ib)-extrhd_su(ih1,n,ib))
4966 sca01 = scarhd_su(ih1,n,ib) &
4967 & + rdrh(i,j,l)*(scarhd_su(ih2,n,ib)-scarhd_su(ih1,n,ib))
4968 asy01 = asyrhd_su(ih1,n,ib) &
4969 & + rdrh(i,j,l)*(asyrhd_su(ih2,n,ib)-asyrhd_su(ih1,n,ib))
4970 ext(i,j,l) = ext(i,j,l)+1e-9*suso(i,j,l,n) * ext01
4971 sca(i,j,l) = sca(i,j,l)+1e-9*suso(i,j,l,n)*sca01
4972 asy(i,j,l) = asy(i,j,l)+1e-9*suso(i,j,l,n)*sca01*asy01
4975 ext(i,j,l) = ext(i,j,l) * 1000.
4976 sca(i,j,l) = sca(i,j,l) * 1000.
4977 asy(i,j,l) = asy(i,j,l) * 1000.
4981 CALL calpw(aod_su,17)
4982 CALL calpw(sca_su,20)
4983 CALL calpw(asy_su,21)
4998 ext01 = extrhd_ss(ih1,n,ib) &
4999 & + rdrh(i,j,l)*(extrhd_ss(ih2,n,ib)-extrhd_ss(ih1,n,ib))
5000 sca01 = scarhd_ss(ih1,n,ib) &
5001 & + rdrh(i,j,l)*(scarhd_ss(ih2,n,ib)-scarhd_ss(ih1,n,ib))
5002 asy01 = asyrhd_ss(ih1,n,ib) &
5003 & + rdrh(i,j,l)*(asyrhd_ss(ih2,n,ib)-asyrhd_ss(ih1,n,ib))
5004 ext(i,j,l) = ext(i,j,l)+1e-9*salt(i,j,l,n)*ext01
5005 sca(i,j,l) = sca(i,j,l)+1e-9*salt(i,j,l,n)*sca01
5006 asy(i,j,l) = asy(i,j,l)+1e-9*salt(i,j,l,n)*sca01*asy01
5008 ext(i,j,l) = ext(i,j,l) * 1000.
5009 sca(i,j,l) = sca(i,j,l) * 1000.
5010 asy(i,j,l) = asy(i,j,l) * 1000.
5014 CALL calpw(aod_ss,17)
5015 CALL calpw(sca_ss,20)
5016 CALL calpw(asy_ss,21)
5031 ext01 = extrhd_bc(ih1,n,ib) &
5032 & + rdrh(i,j,l)*(extrhd_bc(ih2,n,ib)-extrhd_bc(ih1,n,ib))
5033 sca01 = scarhd_bc(ih1,n,ib) &
5034 & + rdrh(i,j,l)*(scarhd_bc(ih2,n,ib)-scarhd_bc(ih1,n,ib))
5035 asy01 = asyrhd_bc(ih1,n,ib) &
5036 & + rdrh(i,j,l)*(asyrhd_bc(ih2,n,ib)-asyrhd_bc(ih1,n,ib))
5037 ext(i,j,l) = ext(i,j,l)+1e-9*soot(i,j,l,n)*ext01
5038 sca(i,j,l) = sca(i,j,l)+1e-9*soot(i,j,l,n)*sca01
5039 asy(i,j,l) = asy(i,j,l)+1e-9*soot(i,j,l,n)*sca01*asy01
5041 ext(i,j,l) = ext(i,j,l) * 1000.
5042 sca(i,j,l) = sca(i,j,l) * 1000.
5043 asy(i,j,l) = asy(i,j,l) * 1000.
5047 CALL calpw(aod_bc,17)
5048 CALL calpw(sca_bc,20)
5049 CALL calpw(asy_bc,21)
5063 ext01 = extrhd_oc(ih1,n,ib) &
5064 & + rdrh(i,j,l)*(extrhd_oc(ih2,n,ib)-extrhd_oc(ih1,n,ib))
5065 sca01 = scarhd_oc(ih1,n,ib) &
5066 & + rdrh(i,j,l)*(scarhd_oc(ih2,n,ib)-scarhd_oc(ih1,n,ib))
5067 asy01 = asyrhd_oc(ih1,n,ib) &
5068 & + rdrh(i,j,l)*(asyrhd_oc(ih2,n,ib)-asyrhd_oc(ih1,n,ib))
5069 ext(i,j,l) = ext(i,j,l)+1e-9*waso(i,j,l,n)*ext01
5070 sca(i,j,l) = sca(i,j,l)+1e-9*waso(i,j,l,n)*sca01
5071 asy(i,j,l) = asy(i,j,l)+1e-9*waso(i,j,l,n)*sca01*asy01
5073 ext(i,j,l) = ext(i,j,l) * 1000.
5074 sca(i,j,l) = sca(i,j,l) * 1000.
5075 asy(i,j,l) = asy(i,j,l) * 1000.
5079 CALL calpw(aod_oc,17)
5080 CALL calpw(sca_oc,20)
5081 CALL calpw(asy_oc,21)
5097 ext01 = extrhd_ni(ih1,n,ib) &
5098 & + rdrh(i,j,l)*(extrhd_ni(ih2,n,ib)-extrhd_ni(ih1,n,ib))
5099 sca01 = scarhd_ni(ih1,n,ib) &
5100 & + rdrh(i,j,l)*(scarhd_ni(ih2,n,ib)-scarhd_ni(ih1,n,ib))
5101 asy01 = asyrhd_ni(ih1,n,ib) &
5102 & + rdrh(i,j,l)*(asyrhd_ni(ih2,n,ib)-asyrhd_ni(ih1,n,ib))
5103 ext(i,j,l) = ext(i,j,l)+1e-9*no3(i,j,l,n)*ext01
5104 sca(i,j,l) = sca(i,j,l)+1e-9*no3(i,j,l,n)*sca01
5105 asy(i,j,l) = asy(i,j,l)+1e-9*no3(i,j,l,n)*sca01*asy01
5107 ext(i,j,l) = ext(i,j,l) * 1000.
5108 sca(i,j,l) = sca(i,j,l) * 1000.
5109 asy(i,j,l) = asy(i,j,l) * 1000.
5113 CALL calpw(aod_ni,17)
5114 CALL calpw(sca_ni,20)
5115 CALL calpw(asy_ni,21)
5125 aod_du(i,j) = max(aod_du(i,j), 0.0)
5126 aod_bc(i,j) = max(aod_bc(i,j), 0.0)
5127 aod_oc(i,j) = max(aod_oc(i,j), 0.0)
5128 aod_su(i,j) = max(aod_su(i,j), 0.0)
5129 aod_ss(i,j) = max(aod_ss(i,j), 0.0)
5131 sca_du(i,j) = max(sca_du(i,j), 0.0)
5132 sca_bc(i,j) = max(sca_bc(i,j), 0.0)
5133 sca_oc(i,j) = max(sca_oc(i,j), 0.0)
5134 sca_su(i,j) = max(sca_su(i,j), 0.0)
5135 sca_ss(i,j) = max(sca_ss(i,j), 0.0)
5137 asy_du(i,j) = max(asy_du(i,j), 0.0)
5138 asy_bc(i,j) = max(asy_bc(i,j), 0.0)
5139 asy_oc(i,j) = max(asy_oc(i,j), 0.0)
5140 asy_su(i,j) = max(asy_su(i,j), 0.0)
5141 asy_ss(i,j) = max(asy_ss(i,j), 0.0)
5144 aod_ni(i,j) = max(aod_ni(i,j), 0.0)
5145 sca_ni(i,j) = max(sca_ni(i,j), 0.0)
5146 asy_ni(i,j) = max(asy_ni(i,j), 0.0)
5148 aod(i,j) = aod_du(i,j) + aod_bc(i,j) + aod_oc(i,j) + &
5149 & aod_su(i,j) + aod_ss(i,j) + aod_ni(i,j)
5150 sca2d(i,j) = sca_du(i,j) + sca_bc(i,j) + sca_oc(i,j) + &
5151 & sca_su(i,j) + sca_ss(i,j) + sca_ni(i,j)
5152 asy2d(i,j) = asy_du(i,j) + asy_bc(i,j) + asy_oc(i,j) + &
5153 & asy_su(i,j) + asy_ss(i,j) + asy_ni(i,j)
5156 if (gocart_on .or. gccpp_on)
then
5157 aod(i,j) = aod_du(i,j) + aod_bc(i,j) + aod_oc(i,j) + &
5158 & aod_su(i,j) + aod_ss(i,j)
5159 sca2d(i,j) = sca_du(i,j) + sca_bc(i,j) + sca_oc(i,j) + &
5160 & sca_su(i,j) + sca_ss(i,j)
5161 asy2d(i,j) = asy_du(i,j) + asy_bc(i,j) + asy_oc(i,j) + &
5162 & asy_su(i,j) + asy_ss(i,j)
5168 IF ( iget(656) > 0 )
THEN
5173 aod_440(i,j) = aod(i,j)
5182 aod_860(i,j) = aod(i,j)
5189 IF ( iget(indx) > 0)
THEN
5193 grid1(i,j) = aod(i,j)
5196 CALL
bound(grid1,d00,h99999)
5197 if(grib==
"grib2" )
then
5199 fld_info(cfld)%ifld=iavblfld(iget(indx))
5200 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5208 IF ( iget(649) > 0 )
THEN
5213 IF(sca2d(i,j)<spval.and.asy2d(i,j)<spval)
THEN
5214 IF ( sca2d(i,j) > 0.0 )
THEN
5215 asy2d(i,j) = asy2d(i,j) / sca2d(i,j)
5219 IF(asy2d(i,j)<spval) grid1(i,j)=asy2d(i,j)
5223 CALL
bound(grid1,d00,h99999)
5224 if(grib==
"grib2" )
then
5226 fld_info(cfld)%ifld=iavblfld(iget(649))
5227 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5232 IF ( iget(648) > 0 )
THEN
5237 IF(aod(i,j)<spval.and.sca2d(i,j)<spval)
THEN
5238 IF ( aod(i,j) > 0.0 )
THEN
5239 sca2d(i,j) = sca2d(i,j) / aod(i,j)
5243 IF(sca2d(i,j)<spval) grid1(i,j)=sca2d(i,j)
5247 CALL
bound(grid1,d00,h99999)
5248 if(grib==
"grib2" )
then
5250 fld_info(cfld)%ifld=iavblfld(iget(648))
5251 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5264 IF ( iget(650) > 0 )
THEN
5268 grid1(i,j)=sca2d(i,j)
5271 CALL
bound(grid1,d00,h99999)
5272 if(grib==
"grib2" )
then
5274 fld_info(cfld)%ifld=iavblfld(iget(650))
5275 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5283 IF ( iget(jj) > 0)
THEN
5287 IF ( ii == 1 ) grid1(i,j) = aod_du(i,j)
5288 IF ( ii == 2 ) grid1(i,j) = aod_ss(i,j)
5289 IF ( ii == 3 ) grid1(i,j) = aod_su(i,j)
5290 IF ( ii == 4 ) grid1(i,j) = aod_oc(i,j)
5291 IF ( ii == 5 ) grid1(i,j) = aod_bc(i,j)
5292 IF ( ii == 6 ) grid1(i,j) = aod_ni(i,j)
5295 CALL
bound(grid1,d00,h99999)
5296 if(grib==
"grib2" )
then
5298 fld_info(cfld)%ifld=iavblfld(iget(jj))
5299 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5305 IF ( iget(jj) > 0)
THEN
5309 IF ( ii == 1 ) grid1(i,j) = sca_du(i,j)
5310 IF ( ii == 2 ) grid1(i,j) = sca_ss(i,j)
5311 IF ( ii == 3 ) grid1(i,j) = sca_su(i,j)
5312 IF ( ii == 4 ) grid1(i,j) = sca_oc(i,j)
5313 IF ( ii == 5 ) grid1(i,j) = sca_bc(i,j)
5314 IF ( ii == 6 ) grid1(i,j) = sca_ni(i,j)
5317 CALL
bound(grid1,d00,h99999)
5318 if(grib==
"grib2" )
then
5320 fld_info(cfld)%ifld=iavblfld(iget(jj))
5321 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5332 IF ( iget(656) > 0 )
THEN
5335 ang2 = log( 860. / 440. )
5339 IF (aod_860(i,j) > 0.)
THEN
5340 ang1 = log( aod_440(i,j)/aod_860(i,j) )
5341 angst(i,j) = ang1 / ang2
5343 grid1(i,j)=angst(i,j)
5346 if(debugprint)print *,
'output angstrom exp,angst=',maxval(angst(ista:iend,jsta:jend)), &
5347 minval(angst(ista:iend,jsta:jend))
5348 CALL
bound(grid1,d00,h99999)
5349 if(grib==
"grib2" )
then
5351 fld_info(cfld)%ifld=iavblfld(iget(656))
5352 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5360 IF (iget(686)>0 )
THEN
5365 grid1(i,j) = dustpm(i,j)
5368 if(grib==
'grib2')
then
5370 fld_info(cfld)%ifld=iavblfld(iget(686))
5371 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5375 IF (iget(685)>0 )
THEN
5379 grid1(i,j) = dustpm10(i,j)
5382 if(grib==
'grib2')
then
5384 fld_info(cfld)%ifld=iavblfld(iget(685))
5385 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5391 IF (iget(684)>0 )
THEN
5396 grid1(i,j) = sspm(i,j)
5399 if(grib==
'grib2')
then
5401 fld_info(cfld)%ifld=iavblfld(iget(684))
5402 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5406 IF (iget(619)>0 )
THEN
5411 grid1(i,j) = dusmass(i,j)
5414 if(grib==
'grib2')
then
5416 fld_info(cfld)%ifld=iavblfld(iget(619))
5417 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5422 IF (iget(620)>0 )
THEN
5427 grid1(i,j) = dusmass25(i,j)
5430 if(grib==
'grib2')
then
5432 fld_info(cfld)%ifld=iavblfld(iget(620))
5433 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5437 IF (iget(621)>0 )
THEN
5443 IF(ducmass(i,j)<spval) grid1(i,j) = ducmass(i,j) * 1.e-9
5446 if(grib==
'grib2')
then
5448 fld_info(cfld)%ifld=iavblfld(iget(621))
5449 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5454 IF (iget(622)>0 )
THEN
5460 IF(ducmass25(i,j)<spval) grid1(i,j) = ducmass25(i,j) * 1.e-9
5463 if(grib==
'grib2')
then
5465 fld_info(cfld)%ifld=iavblfld(iget(622))
5466 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5471 IF (iget(646)>0 )
THEN
5476 IF(dustcb(i,j)<spval) grid1(i,j) = dustcb(i,j) * 1.e-9
5479 if(grib==
'grib2')
then
5481 fld_info(cfld)%ifld=iavblfld(iget(646))
5482 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5487 IF (iget(647)>0 )
THEN
5492 IF(sscb(i,j)<spval) grid1(i,j) = sscb(i,j) * 1.e-9
5495 if(grib==
'grib2')
then
5497 fld_info(cfld)%ifld=iavblfld(iget(647))
5498 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5502 IF (iget(616)>0 )
THEN
5507 IF(bccb(i,j)<spval) grid1(i,j) = bccb(i,j) * 1.e-9
5510 if(grib==
'grib2')
then
5512 fld_info(cfld)%ifld=iavblfld(iget(616))
5513 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5518 IF (iget(617)>0 )
THEN
5523 IF(occb(i,j)<spval) grid1(i,j) = occb(i,j) * 1.e-9
5526 if(grib==
'grib2')
then
5528 fld_info(cfld)%ifld=iavblfld(iget(617))
5529 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5534 IF (iget(618)>0 )
THEN
5539 IF(sulfcb(i,j)<spval) grid1(i,j) = sulfcb(i,j) * 1.e-9
5542 if(grib==
'grib2')
then
5544 fld_info(cfld)%ifld=iavblfld(iget(618))
5545 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5551 IF (iget(657)>0 )
THEN
5556 IF(no3cb(i,j)<spval) grid1(i,j) = no3cb(i,j) * 1.e-9
5559 if(grib==
'grib2')
then
5561 fld_info(cfld)%ifld=iavblfld(iget(657))
5562 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5567 IF (iget(658)>0 )
THEN
5572 IF(nh4cb(i,j)<spval) grid1(i,j) = nh4cb(i,j) * 1.e-9
5575 if(grib==
'grib2')
then
5577 fld_info(cfld)%ifld=iavblfld(iget(658))
5578 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5584 if (gocart_on .or. gccpp_on )
then
5588 IF (iget(659)>0) call wrt_aero_diag(659,nbin_du,duem)
5590 IF (iget(660)>0) call wrt_aero_diag(660,nbin_du,dusd)
5591 IF (iget(661)>0) call wrt_aero_diag(661,nbin_du,dudp)
5592 IF (iget(662)>0) call wrt_aero_diag(662,nbin_du,duwt)
5593 IF (iget(679)>0) call wrt_aero_diag(679,nbin_du,dusv)
5597 IF (iget(663)>0) call wrt_aero_diag(663,nbin_ss,ssem)
5598 IF (iget(664)>0) call wrt_aero_diag(664,nbin_ss,sssd)
5599 IF (iget(665)>0) call wrt_aero_diag(665,nbin_ss,ssdp)
5600 IF (iget(666)>0) call wrt_aero_diag(666,nbin_ss,sswt)
5601 IF (iget(680)>0) call wrt_aero_diag(680,nbin_ss,sssv)
5605 IF (iget(667)>0) call wrt_aero_diag(667,nbin_bc,bcem)
5606 IF (iget(668)>0) call wrt_aero_diag(668,nbin_bc,bcsd)
5607 IF (iget(669)>0) call wrt_aero_diag(669,nbin_bc,bcdp)
5608 IF (iget(670)>0) call wrt_aero_diag(670,nbin_bc,bcwt)
5609 IF (iget(681)>0) call wrt_aero_diag(681,nbin_bc,bcsv)
5613 IF (iget(671)>0) call wrt_aero_diag(671,nbin_oc,ocem)
5614 IF (iget(672)>0) call wrt_aero_diag(672,nbin_oc,ocsd)
5615 IF (iget(673)>0) call wrt_aero_diag(673,nbin_oc,ocdp)
5616 IF (iget(674)>0) call wrt_aero_diag(674,nbin_oc,ocwt)
5617 IF (iget(682)>0) call wrt_aero_diag(682,nbin_oc,ocsv)
5620 IF (iget(699).GT.0) call wrt_aero_diag(699,1,maod)
5621 print *,
'aft wrt disg maod'
5633 if(iget(473)>0 .or. iget(474)>0 .or. iget(475)>0)
then
5638 if(avgcprate(i,j) /= spval)
then
5639 egrid1(i,j) = avgcprate(i,j)*(1000./dtq2)
5649 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
5652 egrid2(i,j) = pbot(i,j)
5653 egrid3(i,j) = ptop(i,j)
5661 if(egrid1(i,j)<= 0. .or. egrid2(i,j)<= 0. .or. egrid3(i,j) <= 0.)
then
5670 IF(egrid2(i,j) == spval .or. egrid3(i,j) == spval) cycle
5671 if(egrid3(i,j) < 400.*100. .and. &
5672 (egrid2(i,j)-egrid3(i,j)) > 300.*100)
then
5674 if(egrid2(i,j) > pmid(i,j,lm))
then
5678 if(egrid2(i,j) >= pmid(i,j,l))
then
5679 if(egrid2(i,j)-pmid(i,j,l)<0.5)
then
5680 egrid2(i,j) = zmid(i,j,l)
5682 dp = (log(egrid2(i,j)) - log(pmid(i,j,l)))/ &
5683 max(1.e-6,(log(pmid(i,j,l+1))-log(pmid(i,j,l))))
5684 egrid2(i,j) = zmid(i,j,l)+(zmid(i,j,l+1)-zmid(i,j,l))*dp
5691 if(egrid3(i,j) < pmid(i,j,1))
then
5692 egrid3(i,j) = zmid(i,j,1)
5695 if(egrid3(i,j) <= pmid(i,j,l))
then
5696 if(pmid(i,j,l)-egrid3(i,j)<0.5)
then
5697 egrid3(i,j) = zmid(i,j,l)
5699 dp = (log(egrid3(i,j)) - log(pmid(i,j,l)))/ &
5700 max(1.e-6,(log(pmid(i,j,l))-log(pmid(i,j,l-1))))
5701 egrid3(i,j) = zmid(i,j,l)+(zmid(i,j,l)-zmid(i,j,l-1))*dp
5715 IF(iget(473) > 0)
THEN
5719 grid1(i,j) = egrid1(i,j)
5723 fld_info(cfld)%ifld=iavblfld(iget(473))
5729 datapd(i,j,cfld) = grid1(ii,jj)
5734 IF(iget(474) > 0)
THEN
5738 grid1(i,j) = egrid2(i,j)
5742 fld_info(cfld)%ifld=iavblfld(iget(474))
5748 datapd(i,j,cfld) = grid1(ii,jj)
5753 IF(iget(475) > 0)
THEN
5757 grid1(i,j) = egrid3(i,j)
5761 fld_info(cfld)%ifld=iavblfld(iget(475))
5767 datapd(i,j,cfld) = grid1(ii,jj)
5783 use ctlblk_mod, only: spval,jsta,jend,im,ista,iend
5785 real,
intent(inout) :: cbcov(ista:iend,jsta:jend)
5793 integer,
parameter :: np=10
5794 real :: x(np), y(np)
5799 x = (/ 1.6,3.6,8.1,18.5,39.0,89.0,197.0,440.0,984.0,10000.0 /)
5800 y = (/ 0.0,0.1,0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.8 /)
5806 if(cbcov(i,j) == spval) cycle
5807 if(cbcov(i,j) <= 0.)
then
5810 val=log(1.0e6*cbcov(i,j))
5811 if (val <= x(1))
then
5813 else if (val >= x(np))
then
5817 if (val < x(k))
then
5818 delta = x(k) - x(k-1)
5819 if (delta <= 0.0)
then
5822 cbcov(i,j) = (y(k) * (val-x(k-1)) + &
5823 y(k-1) * (x(k)-val)) / delta
5834 subroutine wrt_aero_diag(igetfld,nbin,data)
5835 use ctlblk_mod, only: jsta, jend, spval, im, jm, grib, &
5836 cfld, datapd, fld_info, jsta_2l, jend_2u,ista_2l,iend_2u,ista,iend
5840 integer igetfld,nbin
5841 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u,nbin) :: data
5844 REAL,
dimension(im,jm) :: grid1
5850 if(
data(i,j,1)<spval) grid1(i,j) =
data(i,j,1)
5852 if(
data(i,j,k)<spval)&
5853 grid1(i,j) = grid1(i,j)+
data(i,j,k)
5857 if(grib==
'grib2')
then
5859 fld_info(cfld)%ifld=iavblfld(iget(igetfld))
5860 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5863 end subroutine wrt_aero_diag
subroutine calfltcnd(CEILING, FLTCND)
Computes Ceiling.
subroutine otlift(SLINDX)
otlift() computes SFC to 500mb lifted index.
subroutine bound(FLD, FMIN, FMAX)
This routine bounds data in the passed array FLD (im x jm elements long) and clips data values such t...
subroutine calceiling(CLDZ, TCLD, CEILING)
Computes ceiling.
subroutine, public calrh(P1, T1, Q1, RH)
CALRH() computes relative humidity.
subroutine cb_cover(cbcov)
subroutine, public calcape(ITYPE, DPBND, P1D, T1D, Q1D, L1D, CAPE, CINS, PPARC, ZEQL, THUND)
calcape() computes CAPE and CINS.