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, &
115 use rqstfld_mod,
only: iget, id, lvls, iavblfld
116 use gridspec_mod,
only: dyval, gridtype
117 use cmassi_mod,
only: trad_ice
118 use machine_post,
only: kind_phys
119 use upp_physics,
only: calrh, calcape
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
1002 if(cfr(i,j,l)<spval)
then
1003 full_cld(i,j)=cfr(i,j,l)
1011 CALL collect_all(full_cld(ista:iend,jsta:jend),full_dummy)
1017 DO jc=max(1,j-numr),min(jm,j+numr)
1018 DO ic=max(1,i-numr),min(im,i+numr)
1020 IF(full_cld(ic,jc) /= spval)
THEN
1022 frac=frac+full_cld(ic,jc)
1029 IF (numpts>0) frac=frac/real(numpts)
1030 if(pmid(i,j,l)<spval)
then
1031 pcldbase=pmid(i,j,l)
1032 IF (pcldbase>=ptop_low)
THEN
1033 cfracl(i,j)=max(cfracl(i,j),frac)
1034 ELSE IF (pcldbase>=ptop_mid)
THEN
1035 cfracm(i,j)=max(cfracm(i,j),frac)
1037 cfrach(i,j)=max(cfrach(i,j),frac)
1039 tcld(i,j)=max(tcld(i,j),frac)
1050 ELSEIF (modelname==
'GFS')
THEN
1069 pcldbase=pmid(i,j,l)
1070 IF (pcldbase>=ptop_low)
THEN
1071 cfracl(i,j)=max(cfracl(i,j),frac)
1072 ELSE IF (pcldbase>=ptop_mid)
THEN
1073 cfracm(i,j)=max(cfracm(i,j),frac)
1075 cfrach(i,j)=max(cfrach(i,j),frac)
1077 tcld(i,j)=max(tcld(i,j),frac)
1086 IF (iget(799)>0)
THEN
1092 IF (zmid(i,j,lm-k+1) <= pblh(i,j)+1000.0)
THEN
1093 grid1(i,j)=max(grid1(i,j),cfr(i,j,lm-k+1)*100.0)
1098 if(grib==
"grib2" )
then
1100 fld_info(cfld)%ifld=iavblfld(iget(799))
1101 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1106 IF (iget(037) > 0)
THEN
1110 IF(cfracl(i,j) < spval)
then
1111 grid1(i,j) = cfracl(i,j)*100.
1117 if(grib==
"grib2" )
then
1119 fld_info(cfld)%ifld=iavblfld(iget(037))
1125 datapd(i,j,cfld) = grid1(ii,jj)
1132 IF (iget(300) > 0)
THEN
1136 IF(avgcfracl(i,j) < spval)
then
1137 grid1(i,j) = avgcfracl(i,j)*100.
1144 itclod = nint(tclod)
1145 IF(itclod /= 0)
then
1146 ifincr = mod(ifhr,itclod)
1147 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1153 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1156 id(18) = ifhr-itclod
1158 id(18) = ifhr-ifincr
1159 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1161 IF (id(18)<0) id(18) = 0
1162 if(grib==
"grib2" )
then
1164 fld_info(cfld)%ifld=iavblfld(iget(300))
1166 fld_info(cfld)%ntrange=1
1168 fld_info(cfld)%ntrange=0
1170 fld_info(cfld)%tinvstat=ifhr-id(18)
1176 datapd(i,j,cfld) = grid1(ii,jj)
1183 IF (iget(038) > 0)
THEN
1188 IF(cfracm(i,j) < spval)
then
1189 grid1(i,j) = cfracm(i,j)*100.
1195 if(grib==
"grib2" )
then
1197 fld_info(cfld)%ifld=iavblfld(iget(038))
1203 datapd(i,j,cfld) = grid1(ii,jj)
1210 IF (iget(301) > 0)
THEN
1214 IF(abs(avgcfracm(i,j)-spval)>small)
THEN
1215 grid1(i,j) = avgcfracm(i,j)*100.
1222 itclod = nint(tclod)
1223 IF(itclod /= 0)
then
1224 ifincr = mod(ifhr,itclod)
1225 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1231 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1234 id(18) = ifhr-itclod
1236 id(18) = ifhr-ifincr
1237 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1239 IF (id(18)<0) id(18) = 0
1240 if(grib==
"grib2" )
then
1242 fld_info(cfld)%ifld=iavblfld(iget(301))
1244 fld_info(cfld)%ntrange=1
1246 fld_info(cfld)%ntrange=0
1248 fld_info(cfld)%tinvstat=ifhr-id(18)
1254 datapd(i,j,cfld) = grid1(ii,jj)
1261 IF (iget(039)>0)
THEN
1266 IF(cfrach(i,j) < spval)
then
1267 grid1(i,j) = cfrach(i,j)*100.
1273 if(grib==
"grib2" )
then
1275 fld_info(cfld)%ifld=iavblfld(iget(039))
1281 datapd(i,j,cfld) = grid1(ii,jj)
1288 IF (iget(302) > 0)
THEN
1293 IF(avgcfrach(i,j) < spval)
then
1294 grid1(i,j) = avgcfrach(i,j)*100.
1301 itclod = nint(tclod)
1302 IF(itclod /= 0)
then
1303 ifincr = mod(ifhr,itclod)
1304 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1310 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1313 id(18) = ifhr-itclod
1315 id(18) = ifhr-ifincr
1316 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1318 IF (id(18)<0) id(18) = 0
1319 if(grib==
"grib2" )
then
1321 fld_info(cfld)%ifld=iavblfld(iget(302))
1323 fld_info(cfld)%ntrange=1
1325 fld_info(cfld)%ntrange=0
1327 fld_info(cfld)%tinvstat=ifhr-id(18)
1333 datapd(i,j,cfld) = grid1(ii,jj)
1340 IF ((iget(161) > 0) .OR. (iget(260) > 0))
THEN
1342 IF(modelname==
'NCAR' .OR. modelname==
'RAPR')
THEN
1349 egrid1(i,j)=max(egrid1(i,j),cfr(i,j,l))
1354 ELSE IF (modelname==
'NMM'.OR.modelname==
'FV3R' &
1355 .OR. modelname==
'GFS')
THEN
1363 egrid1(i,j)=tcld(i,j)
1370 IF(abs(egrid1(i,j)-spval) > small)
THEN
1371 grid1(i,j) = egrid1(i,j)*100.
1372 tcld(i,j) = egrid1(i,j)*100.
1376 IF (iget(161)>0)
THEN
1377 if(grib==
"grib2" )
then
1379 fld_info(cfld)%ifld=iavblfld(iget(161))
1385 datapd(i,j,cfld) = grid1(ii,jj)
1393 IF (iget(144) > 0)
THEN
1395 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
THEN
1399 IF(abs(avgtcdc(i,j)-spval) > small)
then
1400 grid1(i,j) = avgtcdc(i,j)*100.
1407 ELSE IF(modelname ==
'NMM')
THEN
1418 IF (ncfrst(i,j)<spval.and.acfrst(i,j)<spval)
THEN
1419 IF (ncfrst(i,j) > 0) rsum=acfrst(i,j)/ncfrst(i,j)
1420 IF (ncfrcv(i,j) > 0) &
1421 rsum=max(rsum, acfrcv(i,j)/ncfrcv(i,j))
1422 grid1(i,j) = rsum*100.
1429 IF(modelname ==
'NMM' .OR. modelname ==
'GFS' .OR. &
1430 modelname ==
'FV3R')
THEN
1432 itclod = nint(tclod)
1433 IF(itclod /= 0)
then
1434 ifincr = mod(ifhr,itclod)
1435 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1441 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1444 id(18) = ifhr-itclod
1446 id(18) = ifhr-ifincr
1447 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1449 IF (id(18)<0) id(18) = 0
1451 if(grib==
"grib2" )
then
1453 fld_info(cfld)%ifld=iavblfld(iget(144))
1455 fld_info(cfld)%ntrange=1
1457 fld_info(cfld)%ntrange=0
1459 fld_info(cfld)%tinvstat=ifhr-id(18)
1465 datapd(i,j,cfld) = grid1(ii,jj)
1472 IF (iget(139)>0)
THEN
1473 IF(modelname /=
'NMM')
THEN
1478 IF (ncfrst(i,j)<spval.and.acfrst(i,j)<spval)
THEN
1479 IF (ncfrst(i,j)>0.0)
THEN
1480 grid1(i,j) = acfrst(i,j)/ncfrst(i,j)*100.
1490 IF(modelname==
'NMM' .or. modelname==
'FV3R')
THEN
1492 itclod = nint(tclod)
1493 IF(itclod /= 0)
then
1494 ifincr = mod(ifhr,itclod)
1495 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1500 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1503 id(18) = ifhr-itclod
1505 id(18) = ifhr-ifincr
1506 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1508 IF (id(18)<0) id(18) = 0
1510 if(grib==
"grib2" )
then
1512 fld_info(cfld)%ifld=iavblfld(iget(139))
1514 fld_info(cfld)%ntrange=1
1516 fld_info(cfld)%ntrange=0
1518 fld_info(cfld)%tinvstat=ifhr-id(18)
1519 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1524 IF (iget(143)>0)
THEN
1525 IF(modelname /=
'NMM')
THEN
1530 IF (ncfrcv(i,j)<spval.and.acfrcv(i,j)<spval)
THEN
1531 IF (ncfrcv(i,j)>0.0)
THEN
1532 grid1(i,j) = acfrcv(i,j)/ncfrcv(i,j)*100.
1542 IF(modelname==
'NMM')
THEN
1544 itclod = nint(tclod)
1545 IF(itclod /= 0)
then
1546 ifincr = mod(ifhr,itclod)
1547 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
1552 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
1555 id(18) = ifhr-itclod
1557 id(18) = ifhr-ifincr
1558 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
1560 IF (id(18)<0) id(18) = 0
1562 if(grib==
"grib2" )
then
1564 fld_info(cfld)%ifld=iavblfld(iget(143))
1566 fld_info(cfld)%ntrange=1
1568 fld_info(cfld)%ntrange=0
1570 fld_info(cfld)%tinvstat=ifhr-id(18)
1571 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1576 IF((iget(148)>0) .OR. (iget(149)>0) .OR. &
1577 (iget(168)>0) .OR. (iget(178)>0) .OR. &
1578 (iget(179)>0) .OR. (iget(194)>0) .OR. &
1579 (iget(408)>0) .OR. &
1580 (iget(409)>0) .OR. (iget(406)>0) .OR. &
1581 (iget(195)>0) .OR. (iget(260)>0) .OR. &
1603 if (hbot(i,j) /= spval)
then
1604 ibotcu(i,j) = nint(hbot(i,j))
1606 if (hbotd(i,j) /= spval)
then
1607 ibotdcu(i,j) = nint(hbotd(i,j))
1609 if (hbots(i,j) /= spval)
then
1610 ibotscu(i,j) = nint(hbots(i,j))
1612 if (htop(i,j) /= spval)
then
1613 itopcu(i,j) = nint(htop(i,j))
1615 if (htopd(i,j) /= spval)
then
1616 itopdcu(i,j) = nint(htopd(i,j))
1618 if (htops(i,j) /= spval)
then
1619 itopscu(i,j) = nint(htops(i,j))
1621 IF (ibotcu(i,j)-itopcu(i,j) <= 1)
THEN
1625 IF (ibotdcu(i,j)-itopdcu(i,j) <= 1)
THEN
1629 IF (ibotscu(i,j)-itopscu(i,j) <= 1)
THEN
1635 IF (itop > 0 .AND. itop < 100)
THEN
1638 IF (itop > 0 .AND. itop <= nint(lmh(i,j)))
THEN
1639 cldzcu(i,j) = zmid(i,j,itop)
1641 cldzcu(i,j) = -5000.
1650 if(modelname ==
'RAPR')
then
1652 DO l=nint(lmh(i,j)),1,-1
1653 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1654 IF (qcld >= qcldmin)
THEN
1660 DO l=1,nint(lmh(i,j))
1661 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1662 IF (qcld >= qcldmin)
THEN
1669 zpbltop = pblh(i,j)+zint(i,j,nint(lmh(i,j))+1)
1670 DO l=nint(lmh(i,j)),1,-1
1671 qcld = qqw(i,j,l)+qqi(i,j,l)
1672 IF (qcld >= qcldmin)
THEN
1676snow_check:
IF (qqs(i,j,l)>=qcldmin)
THEN
1679 qsat=pq0/pmid(i,j,l)*exp(a2*(tmp-a3)/(tmp-a4))
1683 qsat=pq0/pmid(i,j,l)*exp(21.8745584*(tmp-a3)/(tmp-7.66))
1686 IF (rhum>=0.98 .AND. zmid(i,j,l)>=zpbltop)
THEN
1693 DO l=1,nint(lmh(i,j))
1694 qcld=qqw(i,j,l)+qqi(i,j,l)+qqs(i,j,l)
1695 IF (qcld >= qcldmin)
THEN
1703 IF(modelname ==
'NCAR' .OR. modelname ==
'RAPR')
THEN
1704 ibott(i,j) = ibotgr(i,j)
1705 itopt(i,j) = itopgr(i,j)
1707 ibott(i,j) = max(ibotgr(i,j), ibotcu(i,j))
1710 itopt(i,j) = min(itopgr(i,j), itopcu(i,j))
1717 IF (iget(758)>0)
THEN
1721 grid1(i,j) = cldzcu(i,j)
1724 if(grib==
"grib2" )
then
1726 fld_info(cfld)%ifld=iavblfld(iget(758))
1727 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1737 IF ((iget(148)>0) .OR. (iget(178)>0) .OR.(iget(260)>0) )
THEN
1741 IF(modelname ==
'RAPR')
then
1745 ELSE IF (ibot <= nint(lmh(i,j)))
THEN
1746 cldp(i,j) = pmid(i,j,ibot)
1747 IF (ibot == lm)
THEN
1748 cldz(i,j) = zint(i,j,lm)
1750 cldz(i,j) = htm(i,j,ibot+1)*t(i,j,ibot+1) &
1751 *(q(i,j,ibot+1)*d608+h1)*rog* &
1752 (log(pint(i,j,ibot+1))-log(cldp(i,j)))&
1757 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
1758 cldp(i,j) = pmid(i,j,ibot)
1759 cldz(i,j) = zmid(i,j,ibot)
1768 IF (iget(148)>0)
THEN
1771 grid1(i,j) = cldp(i,j)
1774 if(grib==
"grib2" )
then
1776 fld_info(cfld)%ifld=iavblfld(iget(148))
1777 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1781 IF (iget(178)>0)
THEN
1785 grid1(i,j) = cldz(i,j)
1788 if(grib==
"grib2" )
then
1790 fld_info(cfld)%ifld=iavblfld(iget(178))
1791 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
1799 IF (iget(408)>0)
THEN
1817 cloud_def_p = 0.0000001
1826 watericemax = -99999.
1829 watericetotal(k) = qqw(i,j,ll) + qqi(i,j,ll)
1830 watericemax = max(watericemax,watericetotal(k))
1833 if (watericemax>=cloud_def_p)
then
1840 pabovesfc(k) = pint(i,j,lm) - pint(i,j,lm-k+1)
1841 if (watericetotal(k)<cloud_def_p)
then
1845 wimin = min(wimin,watericetotal(k1))
1847 if (wimin>cloud_def_p)
then
1848 nfogn(k)= nfogn(k)+1
1857 if (watericetotal(k)<cloud_def_p)
then
1858 if (watericetotal(1)>cloud_def_p)
then
1861 if (watericetotal(k1)>=cloud_def_p)
then
1862 watericetotal(k1)=0.
1880 if (watericetotal(k)>cloud_def_p)
then
1884 zcldbase = zmid(i,j,lm-k1+1)
1885 pcldbase = pmid(i,j,lm-k1+1)
1888 zcldbase = zmid(i,j,lm-k1+1) + (cloud_def_p-watericetotal(k1)) &
1889 * (zmid(i,j,lm-k1+2)-zmid(i,j,lm-k1+1)) &
1890 / (watericetotal(k1-1) - watericetotal(k1))
1891 pcldbase = pmid(i,j,lm-k1+1) + (cloud_def_p-watericetotal(k1)) &
1892 * (pmid(i,j,lm-k1+2)-pmid(i,j,lm-k1+1)) &
1893 / (watericetotal(k1-1) - watericetotal(k1))
1895 zcldbase = max(zcldbase,fis(i,j)*gi+5.)
1901 if (qqs(i,j,lm)>0.)
then
1902 tv=t(i,j,lm)*(h1+d608*q(i,j,lm))
1903 rhoair=pmid(i,j,lm)/(rd*tv)
1904 vovermd = (1.+q(i,j,lm))/rhoair + qqs(i,j,lm)/rhoice
1905 concfp = qqs(i,j,lm)/vovermd*1000.
1906 betav = coeffp*concfp**exponfp + 1.e-10
1907 vertvis = 1000.*min(90., const1/betav)
1908 if (vertvis < zcldbase-fis(i,j)*gi )
then
1909 zcldbase = fis(i,j)*gi + vertvis
1910 loop3741:
do k2=2,lm
1912 if (zmid(i,j,lm-k2+1) > zcldbase)
then
1913 pcldbase = pmid(i,j,lm-k1+2) + (zcldbase-zmid(i,j,lm-k1+2)) &
1914 *(pmid(i,j,lm-k1+1)-pmid(i,j,lm-k1+2) ) &
1915 /(zmid(i,j,lm-k1+1)-zmid(i,j,lm-k1+2) )
1927 cldz(i,j) = zcldbase
1928 cldp(i,j) = pcldbase
1941 pol = 0.99999683 + tx*(-0.90826951e-02 + &
1942 tx*(0.78736169e-04 + tx*(-0.61117958e-06 + &
1943 tx*(0.43884187e-08 + tx*(-0.29883885e-10 + &
1944 tx*(0.21874425e-12 + tx*(-0.17892321e-14 + &
1945 tx*(0.11112018e-16 + tx*(-0.30994571e-19)))))))))
1949 e = pmid(i,j,ll)/100.*q(i,j,ll)/(0.62197+q(i,j,ll)*0.37803)
1950 rhb(k) = 100.*min(1.,e/es)
1958 zsf=zint(i,j,nint(lmh(i,j))+1)
1959 zpbltop = pblh(i,j)+zsf
1966 if (zpbltop<zmid(i,j,lm-k2+1))
then
1967 if (rhb(k2-1)>95. )
then
1968 zcldbase = zmid(i,j,lm-k2+2)
1969 if (cldz(i,j)<-100.)
then
1971 cldz(i,j) = zcldbase
1972 cldp(i,j) = pmid(i,j,lm-k2+2)
1975 if ( zcldbase<cldz(i,j))
then
1976 cldz(i,j) = zcldbase
1986 if(cldz(i,j)<-100.)
then
1987 cldz(i,j)=zmid(i,j,ibot)
1989 if(zmid(i,j,ibot)<cldz(i,j))
then
1990 cldz(i,j)=zmid(i,j,ibot)
2007 zcld = cldz(i,j) - fis(i,j)*gi
2008 if (cldz(i,j)>=0..and.zcld<160.) nlifr = nlifr+1
2014 IF (iget(408)>0)
THEN
2018 grid1(i,j) = cldz(i,j)
2021 if(grib==
"grib2" )
then
2023 fld_info(cfld)%ifld=iavblfld(iget(408))
2024 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2032 IF (iget(487)>0)
THEN
2039 ceiling_thresh_cldfra = 0.5
2048 cldfra(k) = cfr(i,j,ll)
2049 cldfra_max = max(cldfra_max,cldfra(k))
2052 if (cldfra_max >= ceiling_thresh_cldfra)
then
2057 if (cldfra(k) < ceiling_thresh_cldfra)
then
2058 if (cldfra(1) > ceiling_thresh_cldfra)
then
2060 if (cldfra(k1) >= ceiling_thresh_cldfra)
then
2073 if (cldfra(k) >= ceiling_thresh_cldfra)
then
2075 zceil = zmid(i,j,lm-k1+1)
2077 zceil = zmid(i,j,lm-k1+1) + (ceiling_thresh_cldfra-cldfra(k1)) &
2078 * (zmid(i,j,lm-k1+2)-zmid(i,j,lm-k1+1)) &
2079 / (cldfra(k1-1) - cldfra(k1))
2081 zceil = max(zceil,fis(i,j)*gi+5.)
2085 if (qqs(i,j,lm)>0.)
then
2086 tv=t(i,j,lm)*(h1+d608*q(i,j,lm))
2087 rhoair=pmid(i,j,lm)/(rd*tv)
2088 vovermd = (1.+q(i,j,lm))/rhoair + qqs(i,j,lm)/rhoice
2089 concfp = qqs(i,j,lm)/vovermd*1000.
2090 betav = coeffp*concfp**exponfp + 1.e-10
2091 vertvis = 1000.*min(90., const1/betav)
2092 if (vertvis < zceil-fis(i,j)*gi )
then
2093 zceil = fis(i,j)*gi + vertvis
2109 grid1(i,j) = ceil(i,j)
2112 if(grib==
"grib2" )
then
2114 fld_info(cfld)%ifld=iavblfld(iget(487))
2115 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2135 IF ((iget(711)>0) .OR. (iget(798)>0))
THEN
2138 ceiling_thresh_cldfra = 0.5
2156 cldfra(k) = cfr(i,j,lm-k+1)
2163 if (cldfra(1) >= ceiling_thresh_cldfra)
then
2165 if (cldfra(k) < 0.6)
then
2173 if (cldfra(k) >= ceiling_thresh_cldfra)
then
2175 zceil1 = zmid(i,j,lm-k+1)
2177 zceil1 = zmid(i,j,lm-k+1) + (ceiling_thresh_cldfra-cldfra(k)) &
2178 * (zmid(i,j,lm-k+2)-zmid(i,j,lm-k+1)) &
2179 / (cldfra(k-1) - cldfra(k))
2199 cfr_layer_sum(1:lm)=0.0
2202 if ( (cldfra(k) >= 0.05 ) .and. &
2203 (cldfra(k) > cldfra(k-1)) .and. &
2204 (cldfra(k) >= cldfra(k+1)) ) &
2214 cfr_layer_sum(k) = min(1.0, previous_sum + cldfra(k))
2215 previous_sum = min(1.0, cfr_layer_sum(k))
2217 if (cfr_layer_sum(k) >= ceiling_thresh_cldfra)
then
2218 zceil2 = zmid(i,j,lm-k+1) + (ceiling_thresh_cldfra-cfr_layer_sum(k)) &
2219 * (zmid(i,j,lm-k+2)-zmid(i,j,lm-k+1)) &
2220 / (cfr_layer_sum(k-1) - cfr_layer_sum(k))
2263 allocate(full_ceil(im,jm),full_fis(im,jm))
2266 full_ceil(i,j)=ceil(i,j)
2267 full_fis(i,j)=fis(i,j)
2272 CALL collect_all(full_ceil(ista:iend,jsta:jend),full_dummy)
2273 full_ceil=full_dummy
2276 CALL collect_all(full_fis(ista:iend,jsta:jend),full_dummy)
2282 ceil_min = max( ceil(i,j)-fis(i,j)*gi , 5.0)
2283 do jc = max(1,j-numr),min(jm,j+numr)
2284 do ic = max(1,i-numr),min(im,i+numr)
2285 ceil_neighbor = max( full_ceil(ic,jc)-full_fis(ic,jc)*gi , 5.0)
2289 cldz(i,j) = ceil_min + fis(i,j)*gi
2290 cldz(i,j) = max(min(cldz(i,j), 20000.0),0.0)
2293 if ( zmid(i,j,lm-k+1) >= cldz(i,j) )
then
2294 cldp(i,j) = pmid(i,j,lm-k+2) + (cldz(i,j)-zmid(i,j,lm-k+2)) &
2295 *(pmid(i,j,lm-k+1)-pmid(i,j,lm-k+2) ) &
2296 /(zmid(i,j,lm-k+1)-zmid(i,j,lm-k+2) )
2302 if (
allocated(full_ceil))
deallocate(full_ceil)
2303 if (
allocated(full_fis))
deallocate(full_fis)
2306 IF (iget(711)>0)
THEN
2310 grid1(i,j) = cldz(i,j)
2313 if(grib==
"grib2" )
then
2315 fld_info(cfld)%ifld=iavblfld(iget(711))
2316 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2321 IF (iget(798)>0)
THEN
2325 grid1(i,j) = cldp(i,j)
2328 if(grib==
"grib2" )
then
2330 fld_info(cfld)%ifld=iavblfld(iget(798))
2331 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2339 IF (iget(260)>0)
THEN
2343 grid1(i,j) = ceiling(i,j)
2346 if(grib==
"grib2" )
then
2348 fld_info(cfld)%ifld=iavblfld(iget(260))
2349 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2353 IF (iget(261) > 0)
THEN
2360 if(grib==
"grib2" )
then
2362 fld_info(cfld)%ifld=iavblfld(iget(261))
2368 datapd(i,j,cfld) = grid1(ii,jj)
2376 IF (iget(188) > 0)
THEN
2377 IF(modelname ==
'GFS')
THEN
2381 grid1(i,j) = pbot(i,j)
2388 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2389 grid1(i,j) = pmid(i,j,ibot)
2391 grid1(i,j) = -50000.
2396 if(grib==
"grib2" )
then
2398 fld_info(cfld)%ifld=iavblfld(iget(188))
2404 datapd(i,j,cfld) = grid1(ii,jj)
2412 IF (iget(192) > 0)
THEN
2416 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2417 grid1(i,j) = pmid(i,j,ibot)
2419 grid1(i,j) = -50000.
2423 if(grib==
"grib2" )
then
2425 fld_info(cfld)%ifld=iavblfld(iget(192))
2426 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2431 IF (iget(190) > 0)
THEN
2435 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2436 grid1(i,j) = pmid(i,j,ibot)
2438 grid1(i,j) = -50000.
2442 if(grib==
"grib2" )
then
2444 fld_info(cfld)%ifld=iavblfld(iget(190))
2445 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2450 IF (iget(194) > 0)
THEN
2454 IF (ibot>0 .AND. ibot<=nint(lmh(i,j)))
THEN
2455 grid1(i,j) = pmid(i,j,ibot)
2457 grid1(i,j) = -50000.
2461 if(grib==
"grib2" )
then
2463 fld_info(cfld)%ifld=iavblfld(iget(194))
2464 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2470 IF (iget(303) > 0)
THEN
2474 grid1(i,j) = pbotl(i,j)
2481 itclod = nint(tclod)
2482 IF(itclod /= 0)
then
2483 ifincr = mod(ifhr,itclod)
2484 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2489 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2492 id(18) = ifhr-itclod
2494 id(18) = ifhr-ifincr
2495 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2497 IF (id(18)<0) id(18) = 0
2498 if(grib==
"grib2" )
then
2500 fld_info(cfld)%ifld=iavblfld(iget(303))
2502 fld_info(cfld)%ntrange=0
2504 fld_info(cfld)%ntrange=1
2506 fld_info(cfld)%tinvstat=ifhr-id(18)
2508 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2513 IF (iget(306) > 0)
THEN
2516 IF(pbotm(i,j) > small)
THEN
2517 grid1(i,j) = pbotm(i,j)
2524 itclod = nint(tclod)
2525 IF(itclod /= 0)
then
2526 ifincr = mod(ifhr,itclod)
2527 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2532 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2535 id(18) = ifhr-itclod
2537 id(18) = ifhr-ifincr
2538 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2540 IF (id(18)<0) id(18) = 0
2541 if(grib==
"grib2" )
then
2543 fld_info(cfld)%ifld=iavblfld(iget(306))
2545 fld_info(cfld)%ntrange=0
2547 fld_info(cfld)%ntrange=1
2549 fld_info(cfld)%tinvstat=ifhr-id(18)
2551 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2556 IF (iget(309) > 0)
THEN
2559 IF(pboth(i,j) > small)
THEN
2560 grid1(i,j) = pboth(i,j)
2567 itclod = nint(tclod)
2568 IF(itclod /= 0)
then
2569 ifincr = mod(ifhr,itclod)
2570 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2575 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
2578 id(18) = ifhr-itclod
2580 id(18) = ifhr-ifincr
2581 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
2583 IF (id(18)<0) id(18) = 0
2584 if(grib==
"grib2" )
then
2586 fld_info(cfld)%ifld=iavblfld(iget(309))
2588 fld_info(cfld)%ntrange=0
2590 fld_info(cfld)%ntrange=1
2592 fld_info(cfld)%tinvstat=ifhr-id(18)
2594 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2604 IF ((iget(149)>0) .OR. (iget(179)>0) .OR. &
2605 (iget(168)>0) .OR. (iget(275)>0))
THEN
2609 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2610 IF(t(i,j,itop)<spval .AND. &
2611 pmid(i,j,itop)<spval .AND. &
2612 zmid(i,j,itop)<spval)
THEN
2613 cldp(i,j) = pmid(i,j,itop)
2614 cldz(i,j) = zmid(i,j,itop)
2615 cldt(i,j) = t(i,j,itop)
2617 IF(modelname ==
'RAPR')
then
2627 IF(modelname ==
'RAPR')
then
2641 IF (iget(149)>0)
THEN
2644 grid1(i,j) = cldp(i,j)
2647 if(grib==
"grib2" )
then
2649 fld_info(cfld)%ifld=iavblfld(iget(149))
2650 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2655 IF (iget(179)>0)
THEN
2658 grid1(i,j) = cldz(i,j)
2661 if(grib==
"grib2" )
then
2663 fld_info(cfld)%ifld=iavblfld(iget(179))
2664 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2670 IF ((iget(409)>0) .OR. (iget(406)>0))
THEN
2672 cloud_def_p = 0.0000001
2679 IF(modelname ==
'RAPR') zcldtop = spval
2682 watericetotal(k) = qqw(i,j,ll) + qqi(i,j,ll)
2685 if (watericetotal(lm)<=cloud_def_p)
then
2686 loop373 :
do k=lm-1,2,-1
2687 if (watericetotal(k)>cloud_def_p)
then
2688 zcldtop = zmid(i,j,lm-k+1) + (cloud_def_p-watericetotal(k)) &
2689 * (zmid(i,j,lm-k)-zmid(i,j,lm-k+1)) &
2690 / (watericetotal(k+1) - watericetotal(k))
2695 zcldtop = zmid(i,j,1)
2699 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2700 cldp(i,j) = pmid(i,j,itop)
2701 cldt(i,j) = t(i,j,itop)
2704 IF(modelname ==
'RAPR') cldp(i,j) = spval
2713 if(zcldtop <-100.)
then
2716 zcldtop=zmid(i,j,itop)
2717 else if(zmid(i,j,itop)>zcldtop)
then
2721 zcldtop=zmid(i,j,itop)
2726 if(cldz(i,j)>-100. .and. zcldtop<-100.)
then
2727 zcldtop = cldz(i,j) + 200.
2737 IF (iget(406)>0)
THEN
2740 grid1(i,j) = cldp(i,j)
2743 if(grib==
"grib2" )
then
2745 fld_info(cfld)%ifld=iavblfld(iget(406))
2746 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2751 IF (iget(409)>0)
THEN
2754 grid1(i,j) = cldz(i,j)
2757 if(grib==
"grib2" )
then
2759 fld_info(cfld)%ifld=iavblfld(iget(409))
2760 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2767 IF (iget(168)>0)
THEN
2770 grid1(i,j) = cldt(i,j)
2773 if(grib==
"grib2" )
then
2775 fld_info(cfld)%ifld=iavblfld(iget(168))
2776 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2781 IF (iget(275)>0)
THEN
2794 if((hbot(i,j)-spval)>small .and. (htop(i,j)-spval)>small)
then
2795 lcbot=nint(hbot(i,j))
2796 lctop=nint(htop(i,j))
2797 if (lcbot-lctop > 1)
then
2798 q_conv=cnvcfr(i,j)*qconv
2800 if (t(i,j,k) < trad_ice)
then
2801 cu_ir(k)=abscoefi*q_conv
2803 cu_ir(k)=abscoef*q_conv
2813 if(pint(i,j,k)<spval.and.qqw(i,j,k)<spval.and. &
2814 qqi(i,j,k)<spval.and.qqs(i,j,k)<spval)
then
2815 dp=pint(i,j,k+1)-pint(i,j,k)
2816 opdepth=opdepth+( cu_ir(k) + abscoef*qqw(i,j,k)+ &
2818 & abscoefi*( qqi(i,j,k)+qqs(i,j,k) ) )*dp
2820 if (opdepth > 1.)
exit
2822 if (opdepth > 1.) num_thick=num_thick+1
2874 if(grib==
"grib2" )
then
2876 fld_info(cfld)%ifld=iavblfld(iget(275))
2877 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2884 IF (iget(189) > 0)
THEN
2885 IF(modelname ==
'GFS')
THEN
2889 grid1(i,j) = ptop(i,j)
2896 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2897 grid1(i,j) = pmid(i,j,itop)
2899 grid1(i,j) = -50000.
2904 if(grib==
"grib2" )
then
2906 fld_info(cfld)%ifld=iavblfld(iget(189))
2912 datapd(i,j,cfld) = grid1(ii,jj)
2920 IF (iget(193) > 0)
THEN
2924 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2925 grid1(i,j) = pmid(i,j,itop)
2927 grid1(i,j) = -50000.
2931 if(grib==
"grib2" )
then
2933 fld_info(cfld)%ifld=iavblfld(iget(193))
2934 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2939 IF (iget(191) > 0)
THEN
2943 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2944 grid1(i,j) = pmid(i,j,itop)
2946 grid1(i,j) = -50000.
2950 if(grib==
"grib2" )
then
2952 fld_info(cfld)%ifld=iavblfld(iget(191))
2953 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2959 IF (iget(195) > 0)
THEN
2963 IF (itop>0 .AND. itop<=nint(lmh(i,j)))
THEN
2964 grid1(i,j) = pmid(i,j,itop)
2966 grid1(i,j) = -50000.
2970 if(grib==
"grib2" )
then
2972 fld_info(cfld)%ifld=iavblfld(iget(195))
2973 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
2979 IF (iget(304) > 0)
THEN
2982 IF(ptopl(i,j) > small)
THEN
2983 grid1(i,j) = ptopl(i,j)
2990 itclod = nint(tclod)
2991 IF(itclod /= 0)
then
2992 ifincr = mod(ifhr,itclod)
2993 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
2998 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3001 id(18) = ifhr-itclod
3003 id(18) = ifhr-ifincr
3004 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3006 IF (id(18)<0) id(18) = 0
3007 if(grib==
"grib2" )
then
3009 fld_info(cfld)%ifld=iavblfld(iget(304))
3011 fld_info(cfld)%ntrange=0
3013 fld_info(cfld)%ntrange=1
3015 fld_info(cfld)%tinvstat=ifhr-id(18)
3017 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3022 IF (iget(307) > 0)
THEN
3025 grid1(i,j) = ptopm(i,j)
3029 itclod = nint(tclod)
3030 IF(itclod /= 0)
then
3031 ifincr = mod(ifhr,itclod)
3032 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3037 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3040 id(18) = ifhr-itclod
3042 id(18) = ifhr-ifincr
3043 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3045 IF (id(18)<0) id(18) = 0
3046 if(grib==
"grib2" )
then
3048 fld_info(cfld)%ifld=iavblfld(iget(307))
3050 fld_info(cfld)%ntrange=0
3052 fld_info(cfld)%ntrange=1
3054 fld_info(cfld)%tinvstat=ifhr-id(18)
3056 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3061 IF (iget(310) > 0)
THEN
3064 grid1(i,j) = ptoph(i,j)
3068 itclod = nint(tclod)
3069 IF(itclod /= 0)
then
3070 ifincr = mod(ifhr,itclod)
3071 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3076 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3079 id(18) = ifhr-itclod
3081 id(18) = ifhr-ifincr
3082 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3084 IF (id(18)<0) id(18) = 0
3085 if(grib==
"grib2" )
then
3087 fld_info(cfld)%ifld=iavblfld(iget(310))
3089 fld_info(cfld)%ntrange=0
3091 fld_info(cfld)%ntrange=1
3093 fld_info(cfld)%tinvstat=ifhr-id(18)
3095 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3101 IF (iget(305) > 0)
THEN
3104 grid1(i,j) = ttopl(i,j)
3108 itclod = nint(tclod)
3109 IF(itclod /= 0)
then
3110 ifincr = mod(ifhr,itclod)
3111 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3116 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3119 id(18) = ifhr-itclod
3121 id(18) = ifhr-ifincr
3122 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3124 IF (id(18)<0) id(18) = 0
3125 if(grib==
"grib2" )
then
3127 fld_info(cfld)%ifld=iavblfld(iget(305))
3129 fld_info(cfld)%ntrange=0
3131 fld_info(cfld)%ntrange=1
3133 fld_info(cfld)%tinvstat=ifhr-id(18)
3135 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3140 IF (iget(308) > 0)
THEN
3143 grid1(i,j) = ttopm(i,j)
3147 itclod = nint(tclod)
3148 IF(itclod /= 0)
then
3149 ifincr = mod(ifhr,itclod)
3150 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3155 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3158 id(18) = ifhr-itclod
3160 id(18) = ifhr-ifincr
3161 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3163 IF (id(18)<0) id(18) = 0
3164 if(grib==
"grib2" )
then
3166 fld_info(cfld)%ifld=iavblfld(iget(308))
3168 fld_info(cfld)%ntrange=0
3170 fld_info(cfld)%ntrange=1
3172 fld_info(cfld)%tinvstat=ifhr-id(18)
3174 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3179 IF (iget(311) > 0)
THEN
3182 grid1(i,j) = ttoph(i,j)
3186 itclod = nint(tclod)
3187 IF(itclod /= 0)
then
3188 ifincr = mod(ifhr,itclod)
3189 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3194 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3197 id(18) = ifhr-itclod
3199 id(18) = ifhr-ifincr
3200 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3202 IF (id(18)<0) id(18) = 0
3203 if(grib==
"grib2" )
then
3205 fld_info(cfld)%ifld=iavblfld(iget(311))
3207 fld_info(cfld)%ntrange=0
3209 fld_info(cfld)%ntrange=1
3211 fld_info(cfld)%tinvstat=ifhr-id(18)
3212 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3218 IF (iget(196) > 0.or.iget(570)>0)
THEN
3222 if(cnvcfr(i,j)/=spval)grid1(i,j)=100.*cnvcfr(i,j)
3225 if(iget(196)>0)
then
3226 if(grib==
"grib2" )
then
3228 fld_info(cfld)%ifld=iavblfld(iget(196))
3229 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3231 elseif(iget(570)>0)
then
3232 if(grib==
"grib2" )
then
3234 fld_info(cfld)%ifld=iavblfld(iget(570))
3235 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3242 IF (iget(342) > 0)
THEN
3246 if(pblcfr(i,j)/=spval)grid1(i,j)=100.*pblcfr(i,j)
3250 itclod = nint(tclod)
3251 IF(itclod /= 0)
then
3252 ifincr = mod(ifhr,itclod)
3253 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3258 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3261 id(18) = ifhr-itclod
3263 id(18) = ifhr-ifincr
3264 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3266 IF (id(18)<0) id(18) = 0
3267 if(grib==
"grib2" )
then
3269 fld_info(cfld)%ifld=iavblfld(iget(342))
3271 fld_info(cfld)%ntrange=0
3273 fld_info(cfld)%ntrange=1
3275 fld_info(cfld)%tinvstat=ifhr-id(18)
3277 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3283 IF (iget(313) > 0)
THEN
3286 grid1(i,j)=cldwork(i,j)
3290 itclod = nint(tclod)
3291 IF(itclod /= 0)
then
3292 ifincr = mod(ifhr,itclod)
3293 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itclod*60)
3298 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3301 id(18) = ifhr-itclod
3303 id(18) = ifhr-ifincr
3304 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3306 IF (id(18)<0) id(18) = 0
3307 if(grib==
"grib2" )
then
3309 fld_info(cfld)%ifld=iavblfld(iget(313))
3311 fld_info(cfld)%ntrange=0
3313 fld_info(cfld)%ntrange=1
3315 fld_info(cfld)%tinvstat=ifhr-id(18)
3317 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3325 IF (iget(126)>0)
THEN
3326 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3338 IF(aswin(i,j)/=spval)
THEN
3339 grid1(i,j) = aswin(i,j)*rrnum
3341 grid1(i,j)=aswin(i,j)
3346 itrdsw = nint(trdsw)
3347 IF(itrdsw /= 0)
then
3348 ifincr = mod(ifhr,itrdsw)
3349 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3354 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3357 id(18) = ifhr-itrdsw
3359 id(18) = ifhr-ifincr
3360 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3362 IF (id(18)<0) id(18) = 0
3364 if(grib==
"grib2" )
then
3366 fld_info(cfld)%ifld=iavblfld(iget(126))
3368 fld_info(cfld)%ntrange=1
3370 fld_info(cfld)%ntrange=0
3372 fld_info(cfld)%tinvstat=ifhr-id(18)
3373 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3378 IF (iget(298)>0)
THEN
3379 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3391 IF(auvbin(i,j)/=spval)
THEN
3392 grid1(i,j) = auvbin(i,j)*rrnum
3394 grid1(i,j) = auvbin(i,j)
3400 itrdsw = nint(trdsw)
3401 IF(itrdsw /= 0)
then
3402 ifincr = mod(ifhr,itrdsw)
3403 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3408 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3411 id(18) = ifhr-itrdsw
3413 id(18) = ifhr-ifincr
3414 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3416 IF (id(18)<0) id(18) = 0
3418 if(grib==
"grib2" )
then
3420 fld_info(cfld)%ifld=iavblfld(iget(298))
3422 fld_info(cfld)%ntrange=1
3424 fld_info(cfld)%ntrange=0
3426 fld_info(cfld)%tinvstat=ifhr-id(18)
3427 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3432 IF (iget(297)>0)
THEN
3433 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3445 IF(auvbinc(i,j)/=spval)
THEN
3446 grid1(i,j) = auvbinc(i,j)*rrnum
3448 grid1(i,j) = auvbinc(i,j)
3454 itrdsw = nint(trdsw)
3455 IF(itrdsw /= 0)
then
3456 ifincr = mod(ifhr,itrdsw)
3457 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3462 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3465 id(18) = ifhr-itrdsw
3467 id(18) = ifhr-ifincr
3468 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3470 IF (id(18)<0) id(18) = 0
3472 if(grib==
"grib2" )
then
3474 fld_info(cfld)%ifld=iavblfld(iget(297))
3476 fld_info(cfld)%ntrange=1
3478 fld_info(cfld)%ntrange=0
3480 fld_info(cfld)%tinvstat=ifhr-id(18)
3481 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3486 IF (iget(127)>0)
THEN
3487 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3498 IF(alwin(i,j)/=spval)
THEN
3499 grid1(i,j) = alwin(i,j)*rrnum
3501 grid1(i,j)=alwin(i,j)
3506 itrdlw = nint(trdlw)
3507 IF(itrdlw /= 0)
then
3508 ifincr = mod(ifhr,itrdlw)
3509 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3514 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3517 id(18) = ifhr-itrdlw
3519 id(18) = ifhr-ifincr
3520 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3522 IF (id(18)<0) id(18) = 0
3524 if(grib==
"grib2" )
then
3526 fld_info(cfld)%ifld=iavblfld(iget(127))
3528 fld_info(cfld)%ntrange=1
3530 fld_info(cfld)%ntrange=0
3532 fld_info(cfld)%tinvstat=ifhr-id(18)
3533 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3538 IF (iget(128)>0)
THEN
3539 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3550 IF(aswout(i,j)/=spval)
THEN
3551 grid1(i,j) = -1.0*aswout(i,j)*rrnum
3553 grid1(i,j)=aswout(i,j)
3558 itrdsw = nint(trdsw)
3559 IF(itrdsw /= 0)
then
3560 ifincr = mod(ifhr,itrdsw)
3561 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3566 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3569 id(18) = ifhr-itrdsw
3571 id(18) = ifhr-ifincr
3572 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3574 IF (id(18)<0) id(18) = 0
3576 if(grib==
"grib2" )
then
3578 fld_info(cfld)%ifld=iavblfld(iget(128))
3580 fld_info(cfld)%ntrange=1
3582 fld_info(cfld)%ntrange=0
3584 fld_info(cfld)%tinvstat=ifhr-id(18)
3585 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3590 IF (iget(129)>0)
THEN
3591 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3602 IF(alwout(i,j)/=spval)
THEN
3603 grid1(i,j) = -1.0*alwout(i,j)*rrnum
3605 grid1(i,j)=alwout(i,j)
3610 itrdlw = nint(trdlw)
3611 IF(itrdlw /= 0)
then
3612 ifincr = mod(ifhr,itrdlw)
3613 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3618 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3621 id(18) = ifhr-itrdlw
3623 id(18) = ifhr-ifincr
3624 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3626 IF (id(18)<0) id(18) = 0
3628 if(grib==
"grib2" )
then
3630 fld_info(cfld)%ifld=iavblfld(iget(129))
3632 fld_info(cfld)%ntrange=1
3634 fld_info(cfld)%ntrange=0
3636 fld_info(cfld)%tinvstat=ifhr-id(18)
3637 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3642 IF (iget(130)>0)
THEN
3643 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3654 IF(aswtoa(i,j)/=spval)
THEN
3655 grid1(i,j) = aswtoa(i,j)*rrnum
3657 grid1(i,j)=aswtoa(i,j)
3662 itrdsw = nint(trdsw)
3663 IF(itrdsw /= 0)
then
3664 ifincr = mod(ifhr,itrdsw)
3665 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
3670 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3673 id(18) = ifhr-itrdsw
3675 id(18) = ifhr-ifincr
3676 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3678 IF (id(18)<0) id(18) = 0
3680 if(grib==
"grib2" )
then
3682 fld_info(cfld)%ifld=iavblfld(iget(130))
3684 fld_info(cfld)%ntrange=1
3686 fld_info(cfld)%ntrange=0
3688 fld_info(cfld)%tinvstat=ifhr-id(18)
3689 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3694 IF (iget(131)>0)
THEN
3695 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3706 IF(alwtoa(i,j)/=spval)
THEN
3707 grid1(i,j) = alwtoa(i,j)*rrnum
3709 grid1(i,j)=alwtoa(i,j)
3714 itrdlw = nint(trdlw)
3715 IF(itrdlw /= 0)
then
3716 ifincr = mod(ifhr,itrdlw)
3717 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
3722 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
3725 id(18) = ifhr-itrdlw
3727 id(18) = ifhr-ifincr
3728 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
3730 IF (id(18)<0) id(18) = 0
3732 if(grib==
"grib2" )
then
3734 fld_info(cfld)%ifld=iavblfld(iget(131))
3736 fld_info(cfld)%ntrange=1
3738 fld_info(cfld)%ntrange=0
3740 fld_info(cfld)%tinvstat=ifhr-id(18)
3741 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3746 IF (iget(274)>0)
THEN
3747 IF(modelname ==
'NCAR'.OR.modelname==
'RSM')
THEN
3752 grid1(i,j) = rlwtoa(i,j)
3756 if(grib==
"grib2" )
then
3758 fld_info(cfld)%ifld=iavblfld(iget(274))
3759 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3764 IF (iget(265)>0)
THEN
3766 IF(modelname ==
'NCAR'.OR.modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3771 IF(rlwtoa(i,j) < spval) &
3772 & grid1(i,j) = (rlwtoa(i,j)*stbol)**0.25
3776 if(grib==
"grib2" )
then
3778 fld_info(cfld)%ifld=iavblfld(iget(265))
3779 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3784 IF (iget(156)>0)
THEN
3788 IF(rswin(i,j)<spval)
THEN
3789 IF(czmean(i,j)>1.e-6)
THEN
3790 factrs=czen(i,j)/czmean(i,j)
3794 IF(rswin(i,j)<spval) grid1(i,j)=rswin(i,j)*factrs
3799 if(grib==
"grib2" )
then
3801 fld_info(cfld)%ifld=iavblfld(iget(156))
3802 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3807 IF (iget(157)>0)
THEN
3812 IF(modelname==
'RSM' .OR. modelname ==
'RAPR')
THEN
3813 grid1(i,j)=rlwin(i,j)
3815 IF(sigt4(i,j)<spval.and.t(i,j,nint(lmh(i,j)))<spval)
THEN
3816 IF(sigt4(i,j)>0.0)
THEN
3819 factrl=5.67e-8*tlmh*tlmh*tlmh*tlmh/sigt4(i,j)
3823 IF(rlwin(i,j) < spval) grid1(i,j)=rlwin(i,j)*factrl
3829 if(grib==
"grib2" )
then
3831 fld_info(cfld)%ifld=iavblfld(iget(157))
3832 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3837 IF (iget(141)>0)
THEN
3842 IF(rswout(i,j)<spval)
THEN
3843 IF(czmean(i,j)>1.e-6)
THEN
3844 factrs=czen(i,j)/czmean(i,j)
3848 IF(rswout(i,j)<spval) grid1(i,j)=rswout(i,j)*factrs
3853 if(grib==
"grib2" )
then
3855 fld_info(cfld)%ifld=iavblfld(iget(141))
3856 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3861 IF (iget(142)>0)
THEN
3865 grid1(i,j) = radot(i,j)
3868 if(grib==
"grib2" )
then
3870 fld_info(cfld)%ifld=iavblfld(iget(142))
3871 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3876 IF (iget(764)>0)
THEN
3879 grid1(i,j) = lwdnbc(i,j)
3882 if(grib==
'grib2')
then
3884 fld_info(cfld)%ifld=iavblfld(iget(764))
3885 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3890 IF (iget(765)>0)
THEN
3893 grid1(i,j) = lwupbc(i,j)
3896 if(grib==
'grib2')
then
3898 fld_info(cfld)%ifld=iavblfld(iget(765))
3899 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3904 IF (iget(740)>0)
THEN
3907 grid1(i,j) = mean_frp(i,j)
3910 if(grib==
'grib2')
then
3912 fld_info(cfld)%ifld=iavblfld(iget(740))
3913 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3918 IF (iget(745)>0)
THEN
3921 IF (ebb(i,j)<spval)
THEN
3922 grid1(i,j) = ebb(i,j)/(1e9)
3928 if(grib==
'grib2')
then
3930 fld_info(cfld)%ifld=iavblfld(iget(745))
3931 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3936 IF (iget(755)>0)
THEN
3939 IF (hwp(i,j)<spval)
THEN
3940 grid1(i,j) = hwp(i,j)
3946 if(grib==
'grib2')
then
3948 fld_info(cfld)%ifld=iavblfld(iget(755))
3949 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3954 IF (iget(262)>0)
THEN
3959 IF(rswinc(i,j)<spval)
THEN
3960 IF(czmean(i,j)>1.e-6)
THEN
3961 factrs=czen(i,j)/czmean(i,j)
3965 IF(rswinc(i,j)<spval) grid1(i,j) = rswinc(i,j)*factrs
3969 if(grib==
"grib2" )
then
3971 fld_info(cfld)%ifld=iavblfld(iget(262))
3972 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3977 IF (iget(772)>0)
THEN
3981 grid1(i,j) = swddni(i,j)
3984 if(grib==
'grib2')
then
3986 fld_info(cfld)%ifld=iavblfld(iget(772))
3987 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
3992 IF (iget(796)>0)
THEN
3995 grid1(i,j) = swddnic(i,j)
3998 if(grib==
'grib2')
then
4000 fld_info(cfld)%ifld=iavblfld(iget(796))
4001 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4006 IF (iget(773)>0)
THEN
4010 grid1(i,j) = swddif(i,j)
4013 if(grib==
'grib2')
then
4015 fld_info(cfld)%ifld=iavblfld(iget(773))
4016 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4021 IF (iget(797)>0)
THEN
4024 grid1(i,j) = swddifc(i,j)
4027 if(grib==
'grib2')
then
4029 fld_info(cfld)%ifld=iavblfld(iget(797))
4030 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4035 IF (iget(383)>0)
THEN
4038 grid1(i,j) = aswinc(i,j)
4042 itrdsw = nint(trdsw)
4043 IF(itrdsw /= 0)
then
4044 ifincr = mod(ifhr,itrdsw)
4045 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4050 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4053 id(18) = ifhr-itrdsw
4055 id(18) = ifhr-ifincr
4056 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4058 IF (id(18)<0) id(18) = 0
4059 if(grib==
"grib2" )
then
4061 fld_info(cfld)%ifld=iavblfld(iget(383))
4063 fld_info(cfld)%ntrange=1
4065 fld_info(cfld)%ntrange=0
4067 fld_info(cfld)%tinvstat=ifhr-id(18)
4068 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4073 IF (iget(386)>0)
THEN
4076 grid1(i,j) = aswoutc(i,j)
4080 itrdsw = nint(trdsw)
4081 IF(itrdsw /= 0)
then
4082 ifincr = mod(ifhr,itrdsw)
4083 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4088 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4091 id(18) = ifhr-itrdsw
4093 id(18) = ifhr-ifincr
4094 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4096 IF (id(18)<0) id(18) = 0
4097 if(grib==
"grib2" )
then
4099 fld_info(cfld)%ifld=iavblfld(iget(386))
4101 fld_info(cfld)%ntrange=1
4103 fld_info(cfld)%ntrange=0
4105 fld_info(cfld)%tinvstat=ifhr-id(18)
4106 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4111 IF (iget(719)>0)
THEN
4114 grid1(i,j) = swupt(i,j)
4117 if(grib==
'grib2')
then
4119 fld_info(cfld)%ifld=iavblfld(iget(719))
4120 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4125 IF (iget(387)>0)
THEN
4128 grid1(i,j) = aswtoac(i,j)
4132 itrdsw = nint(trdsw)
4133 IF(itrdsw /= 0)
then
4134 ifincr = mod(ifhr,itrdsw)
4135 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4140 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4143 id(18) = ifhr-itrdsw
4145 id(18) = ifhr-ifincr
4146 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4148 IF (id(18)<0) id(18) = 0
4149 if(grib==
"grib2" )
then
4151 fld_info(cfld)%ifld=iavblfld(iget(387))
4153 fld_info(cfld)%ntrange=1
4155 fld_info(cfld)%ntrange=0
4157 fld_info(cfld)%tinvstat=ifhr-id(18)
4158 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4163 IF (iget(388)>0)
THEN
4166 grid1(i,j) = aswintoa(i,j)
4170 itrdsw = nint(trdsw)
4171 IF(itrdsw /= 0)
then
4172 ifincr = mod(ifhr,itrdsw)
4173 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4178 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4181 id(18) = ifhr-itrdsw
4183 id(18) = ifhr-ifincr
4184 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4186 IF (id(18)<0) id(18) = 0
4187 if(grib==
"grib2" )
then
4189 fld_info(cfld)%ifld=iavblfld(iget(388))
4191 fld_info(cfld)%ntrange=1
4193 fld_info(cfld)%ntrange=0
4195 fld_info(cfld)%tinvstat=ifhr-id(18)
4196 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4201 IF (iget(382)>0)
THEN
4204 grid1(i,j) = alwinc(i,j)
4208 itrdlw = nint(trdlw)
4209 IF(itrdlw /= 0)
then
4210 ifincr = mod(ifhr,itrdlw)
4211 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4216 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4219 id(18) = ifhr-itrdlw
4221 id(18) = ifhr-ifincr
4222 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4224 IF (id(18)<0) id(18) = 0
4225 if(grib==
"grib2" )
then
4227 fld_info(cfld)%ifld=iavblfld(iget(382))
4229 fld_info(cfld)%ntrange=1
4231 fld_info(cfld)%ntrange=0
4233 fld_info(cfld)%tinvstat=ifhr-id(18)
4234 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4239 IF (iget(384)>0)
THEN
4242 grid1(i,j) = alwoutc(i,j)
4246 itrdlw = nint(trdlw)
4247 IF(itrdlw /= 0)
then
4248 ifincr = mod(ifhr,itrdlw)
4249 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4254 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4257 id(18) = ifhr-itrdlw
4259 id(18) = ifhr-ifincr
4260 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4262 IF (id(18)<0) id(18) = 0
4263 if(grib==
"grib2" )
then
4265 fld_info(cfld)%ifld=iavblfld(iget(384))
4267 fld_info(cfld)%ntrange=1
4269 fld_info(cfld)%ntrange=0
4271 fld_info(cfld)%tinvstat=ifhr-id(18)
4272 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4277 IF (iget(385)>0)
THEN
4280 grid1(i,j) = alwtoac(i,j)
4284 itrdlw = nint(trdlw)
4285 IF(itrdlw /= 0)
then
4286 ifincr = mod(ifhr,itrdlw)
4287 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdlw*60)
4292 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4295 id(18) = ifhr-itrdlw
4297 id(18) = ifhr-ifincr
4298 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4300 IF (id(18)<0) id(18) = 0
4301 if(grib==
"grib2" )
then
4303 fld_info(cfld)%ifld=iavblfld(iget(385))
4305 fld_info(cfld)%ntrange=1
4307 fld_info(cfld)%ntrange=0
4309 fld_info(cfld)%tinvstat=ifhr-id(18)
4310 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4315 IF (iget(401)>0)
THEN
4318 grid1(i,j) = avisbeamswin(i,j)
4322 itrdsw = nint(trdsw)
4323 IF(itrdsw /= 0)
then
4324 ifincr = mod(ifhr,itrdsw)
4325 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4330 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4333 id(18) = ifhr-itrdsw
4335 id(18) = ifhr-ifincr
4336 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4338 IF (id(18)<0) id(18) = 0
4340 IF(itrdsw < 0)id(1:25)=0
4341 if(grib==
"grib2" )
then
4343 fld_info(cfld)%ifld=iavblfld(iget(401))
4345 fld_info(cfld)%ntrange=1
4347 fld_info(cfld)%ntrange=0
4349 fld_info(cfld)%tinvstat=ifhr-id(18)
4350 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4355 IF (iget(402)>0)
THEN
4358 grid1(i,j) = avisdiffswin(i,j)
4362 itrdsw = nint(trdsw)
4363 IF(itrdsw /= 0)
then
4364 ifincr = mod(ifhr,itrdsw)
4365 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4370 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4373 id(18) = ifhr-itrdsw
4375 id(18) = ifhr-ifincr
4376 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4378 IF (id(18)<0) id(18) = 0
4379 IF(itrdsw < 0)id(1:25)=0
4380 if(grib==
"grib2" )
then
4382 fld_info(cfld)%ifld=iavblfld(iget(402))
4384 fld_info(cfld)%ntrange=1
4386 fld_info(cfld)%ntrange=0
4388 fld_info(cfld)%tinvstat=ifhr-id(18)
4389 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4394 IF (iget(403)>0)
THEN
4397 grid1(i,j) = airbeamswin(i,j)
4401 itrdsw = nint(trdsw)
4402 IF(itrdsw /= 0)
then
4403 ifincr = mod(ifhr,itrdsw)
4404 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4409 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4412 id(18) = ifhr-itrdsw
4414 id(18) = ifhr-ifincr
4415 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4417 IF (id(18)<0) id(18) = 0
4418 IF(itrdsw < 0)id(1:25)=0
4419 if(grib==
"grib2" )
then
4421 fld_info(cfld)%ifld=iavblfld(iget(403))
4423 fld_info(cfld)%ntrange=1
4425 fld_info(cfld)%ntrange=0
4427 fld_info(cfld)%tinvstat=ifhr-id(18)
4428 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4433 IF (iget(404)>0)
THEN
4436 grid1(i,j) = airdiffswin(i,j)
4440 itrdsw = nint(trdsw)
4441 IF(itrdsw /= 0)
then
4442 ifincr = mod(ifhr,itrdsw)
4443 IF(ifmin >= 1)ifincr= mod(ifhr*60+ifmin,itrdsw*60)
4448 IF(ifmin >= 1)id(19)=ifhr*60+ifmin
4451 id(18) = ifhr-itrdsw
4453 id(18) = ifhr-ifincr
4454 IF(ifmin >= 1)id(18)=ifhr*60+ifmin-ifincr
4456 IF (id(18)<0) id(18) = 0
4457 IF(itrdsw < 0)id(1:25)=0
4458 if(grib==
"grib2" )
then
4460 fld_info(cfld)%ifld=iavblfld(iget(404))
4462 fld_info(cfld)%ntrange=1
4464 fld_info(cfld)%ntrange=0
4466 fld_info(cfld)%tinvstat=ifhr-id(18)
4467 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4473 IF (iget(600).GT.0)
THEN
4476 grid1(i,j)=aod550(i,j)
4479 if(grib==
"grib2" )
then
4481 fld_info(cfld)%ifld=iavblfld(iget(600))
4482 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4486 IF (iget(601).GT.0)
THEN
4489 grid1(i,j)=du_aod550(i,j)
4492 if(grib==
"grib2" )
then
4494 fld_info(cfld)%ifld=iavblfld(iget(601))
4495 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4499 IF (iget(602).GT.0)
THEN
4502 grid1(i,j)=ss_aod550(i,j)
4505 if(grib==
"grib2" )
then
4507 fld_info(cfld)%ifld=iavblfld(iget(602))
4508 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4512 IF (iget(603).GT.0)
THEN
4515 grid1(i,j)=su_aod550(i,j)
4518 if(grib==
"grib2" )
then
4520 fld_info(cfld)%ifld=iavblfld(iget(603))
4521 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4525 IF (iget(604).GT.0)
THEN
4528 grid1(i,j)=oc_aod550(i,j)
4531 if(grib==
"grib2" )
then
4533 fld_info(cfld)%ifld=iavblfld(iget(604))
4534 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4539 IF (iget(605).GT.0)
THEN
4542 grid1(i,j)=bc_aod550(i,j)
4545 if(grib==
"grib2" )
then
4547 fld_info(cfld)%ifld=iavblfld(iget(605))
4548 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4555 IF (iget(712).GT.0)
THEN
4558 grid1(i,j)=aqm_aod550(i,j)
4561 if(grib==
"grib2" )
then
4563 fld_info(cfld)%ifld=iavblfld(iget(712))
4564 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4570 IF (iget(715)>0)
THEN
4573 grid1(i,j)=taod5502d(i,j)
4576 if(grib==
"grib2" )
then
4578 fld_info(cfld)%ifld=iavblfld(iget(715))
4579 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4584 IF (iget(716)>0)
THEN
4587 grid1(i,j)=aerasy2d(i,j)
4590 if(grib==
"grib2" )
then
4592 fld_info(cfld)%ifld=iavblfld(iget(716))
4593 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4598 IF (iget(717)>0)
THEN
4601 grid1(i,j)=aerssa2d(i,j)
4604 if(grib==
"grib2" )
then
4606 fld_info(cfld)%ifld=iavblfld(iget(717))
4607 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
4611 if (gocart_on .or. gccpp_on .or. nasa_on)
then
4627 IF ( iget(i)>0 ) laeropt = .true.
4630 IF ( iget(i)>0 ) laeropt = .true.
4633 IF ( iget(i)>0 ) laeropt = .true.
4639 IF ( iget(i)>0 ) laersmass = .true.
4643 print *,
'COMPUTE AEROSOL OPTICAL PROPERTIES'
4646 ALLOCATE ( extrhd_du(krhlev,nbin_du,nbdsw))
4647 ALLOCATE ( extrhd_ss(krhlev,nbin_ss,nbdsw))
4648 ALLOCATE ( extrhd_su(krhlev,nbin_su,nbdsw))
4649 ALLOCATE ( extrhd_bc(krhlev,nbin_bc,nbdsw))
4650 ALLOCATE ( extrhd_oc(krhlev,nbin_oc,nbdsw))
4652 ALLOCATE ( scarhd_du(krhlev,nbin_du,nbdsw))
4653 ALLOCATE ( scarhd_ss(krhlev,nbin_ss,nbdsw))
4654 ALLOCATE ( scarhd_su(krhlev,nbin_su,nbdsw))
4655 ALLOCATE ( scarhd_bc(krhlev,nbin_bc,nbdsw))
4656 ALLOCATE ( scarhd_oc(krhlev,nbin_oc,nbdsw))
4658 ALLOCATE ( asyrhd_du(krhlev,nbin_du,nbdsw))
4659 ALLOCATE ( asyrhd_ss(krhlev,nbin_ss,nbdsw))
4660 ALLOCATE ( asyrhd_su(krhlev,nbin_su,nbdsw))
4661 ALLOCATE ( asyrhd_bc(krhlev,nbin_bc,nbdsw))
4662 ALLOCATE ( asyrhd_oc(krhlev,nbin_oc,nbdsw))
4664 ALLOCATE ( ssarhd_du(krhlev,nbin_du,nbdsw))
4665 ALLOCATE ( ssarhd_ss(krhlev,nbin_ss,nbdsw))
4666 ALLOCATE ( ssarhd_su(krhlev,nbin_su,nbdsw))
4667 ALLOCATE ( ssarhd_bc(krhlev,nbin_bc,nbdsw))
4668 ALLOCATE ( ssarhd_oc(krhlev,nbin_oc,nbdsw))
4670 ALLOCATE ( extrhd_ni(krhlev,nbin_no3,nbdsw))
4671 ALLOCATE ( scarhd_ni(krhlev,nbin_no3,nbdsw))
4672 ALLOCATE ( asyrhd_ni(krhlev,nbin_no3,nbdsw))
4673 ALLOCATE ( ssarhd_ni(krhlev,nbin_no3,nbdsw))
4675 if (gocart_on .or. gccpp_on)
then
4677 else if (nasa_on)
then
4680 print *,
'aft AEROSOL allocate, nbin_du=',nbin_du, &
4681 'nbin_ss=',nbin_ss,
'nbin_su=',nbin_su,
'nbin_bc=', &
4682 'nbin_oc=',nbin_oc,
'nbin_ni=',nbin_no3,
'nAero=',naero
4688 aerosol_file=
'optics_luts_'//aerosolname(i)//
'.dat'
4689 else if ( gccpp_on )
then
4690 aerosol_file=
'optics_luts_'//aerosolname(i)//
'_nasa.dat'
4691 else if ( nasa_on )
then
4692 aerosol_file=
'optics_luts_'//aerosolname(i)//
'_nasa.dat'
4694 open(unit=noaer, file=aerosol_file, status=
'OLD', iostat=ios)
4696 print *,
' ERROR! Non-zero iostat for rd_LUTS ', aerosol_file
4699 if(debugprint)print *,
'i=',i,
'read aerosol_file=',trim(aerosol_file),
'ios=',ios
4701 IF (aerosolname(i) ==
'DUST') nbin = nbin_du
4702 IF (aerosolname(i) ==
'SALT') nbin = nbin_ss
4703 IF (aerosolname(i) ==
'SUSO') nbin = nbin_su
4704 IF (aerosolname(i) ==
'SOOT') nbin = nbin_bc
4705 IF (aerosolname(i) ==
'WASO') nbin = nbin_oc
4707 IF (aerosolname(i) ==
'NITR') nbin = nbin_no3
4710 read(noaer,
'(2x,a4,1x,i1,1x,a3)')aername_rd,ib, aeropt
4711 IF (aername_rd /= aerosolname(i)) stop
4713 IF (aeropt /=
'ext' ) stop
4715 IF (aerosolname(i) ==
'DUST')
THEN
4717 read(noaer,
'(8f10.5)') (extrhd_du(ii,j,ib), ii=1,krhlev)
4719 read(noaer,
'(2x,a4)') aername_rd
4721 read(noaer,
'(8f10.5)') (scarhd_du(ii,j,ib), ii=1,krhlev)
4723 read(noaer,
'(2x,a4)') aername_rd
4725 read(noaer,
'(8f10.5)') (asyrhd_du(ii,j,ib), ii=1,krhlev)
4727 read(noaer,
'(2x,a4)') aername_rd
4729 read(noaer,
'(8f10.5)') (ssarhd_du(ii,j,ib), ii=1,krhlev)
4732 ELSEIF (aerosolname(i) ==
'SALT')
THEN
4734 read(noaer,
'(8f10.5)') (extrhd_ss(ii,j,ib), ii=1,krhlev)
4736 read(noaer,
'(2x,a4)') aername_rd
4738 read(noaer,
'(8f10.5)') (scarhd_ss(ii,j,ib), ii=1,krhlev)
4740 read(noaer,
'(2x,a4)') aername_rd
4742 read(noaer,
'(8f10.5)') (asyrhd_ss(ii,j,ib), ii=1,krhlev)
4744 read(noaer,
'(2x,a4)') aername_rd
4746 read(noaer,
'(8f10.5)') (ssarhd_ss(ii,j,ib), ii=1,krhlev)
4749 ELSEIF (aerosolname(i) ==
'SUSO')
THEN
4751 read(noaer,
'(8f10.5)') (extrhd_su(ii,j,ib), ii=1,krhlev)
4753 read(noaer,
'(2x,a4)') aername_rd
4755 read(noaer,
'(8f10.5)') (scarhd_su(ii,j,ib), ii=1,krhlev)
4757 read(noaer,
'(2x,a4)') aername_rd
4759 read(noaer,
'(8f10.5)') (asyrhd_su(ii,j,ib), ii=1,krhlev)
4761 read(noaer,
'(2x,a4)') aername_rd
4763 read(noaer,
'(8f10.5)') (ssarhd_su(ii,j,ib), ii=1,krhlev)
4766 ELSEIF (aerosolname(i) ==
'SOOT')
THEN
4768 read(noaer,
'(8f10.5)') (extrhd_bc(ii,j,ib), ii=1,krhlev)
4770 read(noaer,
'(2x,a4)') aername_rd
4772 read(noaer,
'(8f10.5)') (scarhd_bc(ii,j,ib), ii=1,krhlev)
4774 read(noaer,
'(2x,a4)') aername_rd
4776 read(noaer,
'(8f10.5)') (asyrhd_bc(ii,j,ib), ii=1,krhlev)
4778 read(noaer,
'(2x,a4)') aername_rd
4780 read(noaer,
'(8f10.5)') (ssarhd_bc(ii,j,ib), ii=1,krhlev)
4783 ELSEIF (aerosolname(i) ==
'WASO')
THEN
4785 read(noaer,
'(8f10.5)') (extrhd_oc(ii,j,ib), ii=1,krhlev)
4787 read(noaer,
'(2x,a4)') aername_rd
4789 read(noaer,
'(8f10.5)') (scarhd_oc(ii,j,ib), ii=1,krhlev)
4791 read(noaer,
'(2x,a4)') aername_rd
4793 read(noaer,
'(8f10.5)') (asyrhd_oc(ii,j,ib), ii=1,krhlev)
4795 read(noaer,
'(2x,a4)') aername_rd
4797 read(noaer,
'(8f10.5)') (ssarhd_oc(ii,j,ib), ii=1,krhlev)
4801 IF (aerosolname(i) ==
'NITR')
THEN
4803 read(noaer,
'(8f10.5)') (extrhd_ni(ii,j,ib), ii=1,krhlev)
4805 read(noaer,
'(2x,a4)') aername_rd
4807 read(noaer,
'(8f10.5)') (scarhd_ni(ii,j,ib), ii=1,krhlev)
4809 read(noaer,
'(2x,a4)') aername_rd
4811 read(noaer,
'(8f10.5)') (asyrhd_ni(ii,j,ib), ii=1,krhlev)
4813 read(noaer,
'(2x,a4)') aername_rd
4815 read(noaer,
'(8f10.5)') (ssarhd_ni(ii,j,ib), ii=1,krhlev)
4828 allocate (rdrh(ista:iend,jsta:jend,lm))
4829 allocate (ihh(ista:iend,jsta:jend,lm))
4835 p1d(i,j) = pmid(i,j,ll)
4836 t1d(i,j) = t(i,j,ll)
4837 q1d(i,j) = q(i,j,ll)
4841 CALL calrh(p1d,t1d,q1d,egrid4)
4848 IF ( rh3d > rhlev(krhlev) )
THEN
4853 ELSEIF ( rh3d < rhlev(1))
THEN
4860 DO WHILE ( rh3d > rhlev(ih2))
4862 IF ( ih2 > krhlev )
EXIT
4864 ih2 = min( krhlev, ih2 )
4865 ih1 = max( 1, ih2-1 )
4866 drh0 = rhlev(ih2) - rhlev(ih1)
4868 drh1 = rh3d - rhlev(ih1)
4869 rdrh(i,j,ll) = drh1 / drh0
4882 IF (ib == 1 ) indx = 623
4884 IF (ib == 2 ) indx = 624
4886 IF (ib == 3 ) indx = 609
4888 IF (ib == 4 ) indx = 625
4890 IF (ib == 5 ) indx = 626
4892 IF (ib == 6 ) indx = 627
4894 IF (ib == 7 ) indx = 628
4901 IF (iget(indx)>0 ) lext =.true.
4904 IF (iget(650)>0 ) lsca =.true.
4906 IF (iget(indx_ext(i))>0 ) lext = .true.
4907 IF (iget(indx_sca(i))>0 ) lsca = .true.
4912 IF (iget(648)>0 ) lsca =.true.
4913 IF (iget(649)>0 ) lasy =.true.
4916 IF (iget(656)>0 )
THEN
4917 IF ( ib == 2 ) lext = .true.
4918 IF ( ib == 5 ) lext = .true.
4922 IF ( lext .OR. lsca .OR. lasy )
THEN
4934 ext01 = extrhd_du(1,n,ib)
4935 sca01 = scarhd_du(1,n,ib)
4936 asy01 = asyrhd_du(1,n,ib)
4937 ext(i,j,l) = ext(i,j,l)+1e-9*dust(i,j,l,n) * ext01
4938 sca(i,j,l) = sca(i,j,l)+1e-9*dust(i,j,l,n) * sca01
4939 asy(i,j,l) = asy(i,j,l)+1e-9*dust(i,j,l,n) * sca01*asy01
4941 ext(i,j,l) = ext(i,j,l) * 1000.
4942 sca(i,j,l) = sca(i,j,l) * 1000.
4943 asy(i,j,l) = asy(i,j,l) * 1000.
4947 CALL calpw(aod_du,17)
4948 CALL calpw(sca_du,20)
4949 CALL calpw(asy_du,21)
4963 ext01 = extrhd_su(ih1,n,ib) &
4964 & + rdrh(i,j,l)*(extrhd_su(ih2,n,ib)-extrhd_su(ih1,n,ib))
4965 sca01 = scarhd_su(ih1,n,ib) &
4966 & + rdrh(i,j,l)*(scarhd_su(ih2,n,ib)-scarhd_su(ih1,n,ib))
4967 asy01 = asyrhd_su(ih1,n,ib) &
4968 & + rdrh(i,j,l)*(asyrhd_su(ih2,n,ib)-asyrhd_su(ih1,n,ib))
4969 ext(i,j,l) = ext(i,j,l)+1e-9*suso(i,j,l,n) * ext01
4970 sca(i,j,l) = sca(i,j,l)+1e-9*suso(i,j,l,n)*sca01
4971 asy(i,j,l) = asy(i,j,l)+1e-9*suso(i,j,l,n)*sca01*asy01
4974 ext(i,j,l) = ext(i,j,l) * 1000.
4975 sca(i,j,l) = sca(i,j,l) * 1000.
4976 asy(i,j,l) = asy(i,j,l) * 1000.
4980 CALL calpw(aod_su,17)
4981 CALL calpw(sca_su,20)
4982 CALL calpw(asy_su,21)
4997 ext01 = extrhd_ss(ih1,n,ib) &
4998 & + rdrh(i,j,l)*(extrhd_ss(ih2,n,ib)-extrhd_ss(ih1,n,ib))
4999 sca01 = scarhd_ss(ih1,n,ib) &
5000 & + rdrh(i,j,l)*(scarhd_ss(ih2,n,ib)-scarhd_ss(ih1,n,ib))
5001 asy01 = asyrhd_ss(ih1,n,ib) &
5002 & + rdrh(i,j,l)*(asyrhd_ss(ih2,n,ib)-asyrhd_ss(ih1,n,ib))
5003 ext(i,j,l) = ext(i,j,l)+1e-9*salt(i,j,l,n)*ext01
5004 sca(i,j,l) = sca(i,j,l)+1e-9*salt(i,j,l,n)*sca01
5005 asy(i,j,l) = asy(i,j,l)+1e-9*salt(i,j,l,n)*sca01*asy01
5007 ext(i,j,l) = ext(i,j,l) * 1000.
5008 sca(i,j,l) = sca(i,j,l) * 1000.
5009 asy(i,j,l) = asy(i,j,l) * 1000.
5013 CALL calpw(aod_ss,17)
5014 CALL calpw(sca_ss,20)
5015 CALL calpw(asy_ss,21)
5030 ext01 = extrhd_bc(ih1,n,ib) &
5031 & + rdrh(i,j,l)*(extrhd_bc(ih2,n,ib)-extrhd_bc(ih1,n,ib))
5032 sca01 = scarhd_bc(ih1,n,ib) &
5033 & + rdrh(i,j,l)*(scarhd_bc(ih2,n,ib)-scarhd_bc(ih1,n,ib))
5034 asy01 = asyrhd_bc(ih1,n,ib) &
5035 & + rdrh(i,j,l)*(asyrhd_bc(ih2,n,ib)-asyrhd_bc(ih1,n,ib))
5036 ext(i,j,l) = ext(i,j,l)+1e-9*soot(i,j,l,n)*ext01
5037 sca(i,j,l) = sca(i,j,l)+1e-9*soot(i,j,l,n)*sca01
5038 asy(i,j,l) = asy(i,j,l)+1e-9*soot(i,j,l,n)*sca01*asy01
5040 ext(i,j,l) = ext(i,j,l) * 1000.
5041 sca(i,j,l) = sca(i,j,l) * 1000.
5042 asy(i,j,l) = asy(i,j,l) * 1000.
5046 CALL calpw(aod_bc,17)
5047 CALL calpw(sca_bc,20)
5048 CALL calpw(asy_bc,21)
5062 ext01 = extrhd_oc(ih1,n,ib) &
5063 & + rdrh(i,j,l)*(extrhd_oc(ih2,n,ib)-extrhd_oc(ih1,n,ib))
5064 sca01 = scarhd_oc(ih1,n,ib) &
5065 & + rdrh(i,j,l)*(scarhd_oc(ih2,n,ib)-scarhd_oc(ih1,n,ib))
5066 asy01 = asyrhd_oc(ih1,n,ib) &
5067 & + rdrh(i,j,l)*(asyrhd_oc(ih2,n,ib)-asyrhd_oc(ih1,n,ib))
5068 ext(i,j,l) = ext(i,j,l)+1e-9*waso(i,j,l,n)*ext01
5069 sca(i,j,l) = sca(i,j,l)+1e-9*waso(i,j,l,n)*sca01
5070 asy(i,j,l) = asy(i,j,l)+1e-9*waso(i,j,l,n)*sca01*asy01
5072 ext(i,j,l) = ext(i,j,l) * 1000.
5073 sca(i,j,l) = sca(i,j,l) * 1000.
5074 asy(i,j,l) = asy(i,j,l) * 1000.
5078 CALL calpw(aod_oc,17)
5079 CALL calpw(sca_oc,20)
5080 CALL calpw(asy_oc,21)
5096 ext01 = extrhd_ni(ih1,n,ib) &
5097 & + rdrh(i,j,l)*(extrhd_ni(ih2,n,ib)-extrhd_ni(ih1,n,ib))
5098 sca01 = scarhd_ni(ih1,n,ib) &
5099 & + rdrh(i,j,l)*(scarhd_ni(ih2,n,ib)-scarhd_ni(ih1,n,ib))
5100 asy01 = asyrhd_ni(ih1,n,ib) &
5101 & + rdrh(i,j,l)*(asyrhd_ni(ih2,n,ib)-asyrhd_ni(ih1,n,ib))
5102 ext(i,j,l) = ext(i,j,l)+1e-9*no3(i,j,l,n)*ext01
5103 sca(i,j,l) = sca(i,j,l)+1e-9*no3(i,j,l,n)*sca01
5104 asy(i,j,l) = asy(i,j,l)+1e-9*no3(i,j,l,n)*sca01*asy01
5106 ext(i,j,l) = ext(i,j,l) * 1000.
5107 sca(i,j,l) = sca(i,j,l) * 1000.
5108 asy(i,j,l) = asy(i,j,l) * 1000.
5112 CALL calpw(aod_ni,17)
5113 CALL calpw(sca_ni,20)
5114 CALL calpw(asy_ni,21)
5124 aod_du(i,j) = max(aod_du(i,j), 0.0)
5125 aod_bc(i,j) = max(aod_bc(i,j), 0.0)
5126 aod_oc(i,j) = max(aod_oc(i,j), 0.0)
5127 aod_su(i,j) = max(aod_su(i,j), 0.0)
5128 aod_ss(i,j) = max(aod_ss(i,j), 0.0)
5130 sca_du(i,j) = max(sca_du(i,j), 0.0)
5131 sca_bc(i,j) = max(sca_bc(i,j), 0.0)
5132 sca_oc(i,j) = max(sca_oc(i,j), 0.0)
5133 sca_su(i,j) = max(sca_su(i,j), 0.0)
5134 sca_ss(i,j) = max(sca_ss(i,j), 0.0)
5136 asy_du(i,j) = max(asy_du(i,j), 0.0)
5137 asy_bc(i,j) = max(asy_bc(i,j), 0.0)
5138 asy_oc(i,j) = max(asy_oc(i,j), 0.0)
5139 asy_su(i,j) = max(asy_su(i,j), 0.0)
5140 asy_ss(i,j) = max(asy_ss(i,j), 0.0)
5143 aod_ni(i,j) = max(aod_ni(i,j), 0.0)
5144 sca_ni(i,j) = max(sca_ni(i,j), 0.0)
5145 asy_ni(i,j) = max(asy_ni(i,j), 0.0)
5147 aod(i,j) = aod_du(i,j) + aod_bc(i,j) + aod_oc(i,j) + &
5148 & aod_su(i,j) + aod_ss(i,j) + aod_ni(i,j)
5149 sca2d(i,j) = sca_du(i,j) + sca_bc(i,j) + sca_oc(i,j) + &
5150 & sca_su(i,j) + sca_ss(i,j) + sca_ni(i,j)
5151 asy2d(i,j) = asy_du(i,j) + asy_bc(i,j) + asy_oc(i,j) + &
5152 & asy_su(i,j) + asy_ss(i,j) + asy_ni(i,j)
5155 if (gocart_on .or. gccpp_on)
then
5156 aod(i,j) = aod_du(i,j) + aod_bc(i,j) + aod_oc(i,j) + &
5157 & aod_su(i,j) + aod_ss(i,j)
5158 sca2d(i,j) = sca_du(i,j) + sca_bc(i,j) + sca_oc(i,j) + &
5159 & sca_su(i,j) + sca_ss(i,j)
5160 asy2d(i,j) = asy_du(i,j) + asy_bc(i,j) + asy_oc(i,j) + &
5161 & asy_su(i,j) + asy_ss(i,j)
5167 IF ( iget(656) > 0 )
THEN
5172 aod_440(i,j) = aod(i,j)
5181 aod_860(i,j) = aod(i,j)
5188 IF ( iget(indx) > 0)
THEN
5192 grid1(i,j) = aod(i,j)
5195 CALL bound(grid1,d00,h99999)
5196 if(grib==
"grib2" )
then
5198 fld_info(cfld)%ifld=iavblfld(iget(indx))
5199 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5207 IF ( iget(649) > 0 )
THEN
5212 IF(sca2d(i,j)<spval.and.asy2d(i,j)<spval)
THEN
5213 IF ( sca2d(i,j) > 0.0 )
THEN
5214 asy2d(i,j) = asy2d(i,j) / sca2d(i,j)
5218 IF(asy2d(i,j)<spval) grid1(i,j)=asy2d(i,j)
5222 CALL bound(grid1,d00,h99999)
5223 if(grib==
"grib2" )
then
5225 fld_info(cfld)%ifld=iavblfld(iget(649))
5226 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5231 IF ( iget(648) > 0 )
THEN
5236 IF(aod(i,j)<spval.and.sca2d(i,j)<spval)
THEN
5237 IF ( aod(i,j) > 0.0 )
THEN
5238 sca2d(i,j) = sca2d(i,j) / aod(i,j)
5242 IF(sca2d(i,j)<spval) grid1(i,j)=sca2d(i,j)
5246 CALL bound(grid1,d00,h99999)
5247 if(grib==
"grib2" )
then
5249 fld_info(cfld)%ifld=iavblfld(iget(648))
5250 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5263 IF ( iget(650) > 0 )
THEN
5267 grid1(i,j)=sca2d(i,j)
5270 CALL bound(grid1,d00,h99999)
5271 if(grib==
"grib2" )
then
5273 fld_info(cfld)%ifld=iavblfld(iget(650))
5274 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5282 IF ( iget(jj) > 0)
THEN
5286 IF ( ii == 1 ) grid1(i,j) = aod_du(i,j)
5287 IF ( ii == 2 ) grid1(i,j) = aod_ss(i,j)
5288 IF ( ii == 3 ) grid1(i,j) = aod_su(i,j)
5289 IF ( ii == 4 ) grid1(i,j) = aod_oc(i,j)
5290 IF ( ii == 5 ) grid1(i,j) = aod_bc(i,j)
5291 IF ( ii == 6 ) grid1(i,j) = aod_ni(i,j)
5294 CALL bound(grid1,d00,h99999)
5295 if(grib==
"grib2" )
then
5297 fld_info(cfld)%ifld=iavblfld(iget(jj))
5298 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5304 IF ( iget(jj) > 0)
THEN
5308 IF ( ii == 1 ) grid1(i,j) = sca_du(i,j)
5309 IF ( ii == 2 ) grid1(i,j) = sca_ss(i,j)
5310 IF ( ii == 3 ) grid1(i,j) = sca_su(i,j)
5311 IF ( ii == 4 ) grid1(i,j) = sca_oc(i,j)
5312 IF ( ii == 5 ) grid1(i,j) = sca_bc(i,j)
5313 IF ( ii == 6 ) grid1(i,j) = sca_ni(i,j)
5316 CALL bound(grid1,d00,h99999)
5317 if(grib==
"grib2" )
then
5319 fld_info(cfld)%ifld=iavblfld(iget(jj))
5320 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5331 IF ( iget(656) > 0 )
THEN
5334 ang2 = log( 860. / 440. )
5338 IF (aod_860(i,j) > 0.)
THEN
5339 ang1 = log( aod_440(i,j)/aod_860(i,j) )
5340 angst(i,j) = ang1 / ang2
5342 grid1(i,j)=angst(i,j)
5345 if(debugprint)print *,
'output angstrom exp,angst=',maxval(angst(ista:iend,jsta:jend)), &
5346 minval(angst(ista:iend,jsta:jend))
5347 CALL bound(grid1,d00,h99999)
5348 if(grib==
"grib2" )
then
5350 fld_info(cfld)%ifld=iavblfld(iget(656))
5351 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5359 IF (iget(686)>0 )
THEN
5364 grid1(i,j) = dustpm(i,j)
5367 if(grib==
'grib2')
then
5369 fld_info(cfld)%ifld=iavblfld(iget(686))
5370 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5374 IF (iget(685)>0 )
THEN
5378 grid1(i,j) = dustpm10(i,j)
5381 if(grib==
'grib2')
then
5383 fld_info(cfld)%ifld=iavblfld(iget(685))
5384 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5390 IF (iget(684)>0 )
THEN
5395 grid1(i,j) = sspm(i,j)
5398 if(grib==
'grib2')
then
5400 fld_info(cfld)%ifld=iavblfld(iget(684))
5401 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5405 IF (iget(619)>0 )
THEN
5410 grid1(i,j) = dusmass(i,j)
5413 if(grib==
'grib2')
then
5415 fld_info(cfld)%ifld=iavblfld(iget(619))
5416 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5421 IF (iget(620)>0 )
THEN
5426 grid1(i,j) = dusmass25(i,j)
5429 if(grib==
'grib2')
then
5431 fld_info(cfld)%ifld=iavblfld(iget(620))
5432 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5436 IF (iget(621)>0 )
THEN
5442 IF(ducmass(i,j)<spval) grid1(i,j) = ducmass(i,j) * 1.e-9
5445 if(grib==
'grib2')
then
5447 fld_info(cfld)%ifld=iavblfld(iget(621))
5448 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5453 IF (iget(622)>0 )
THEN
5459 IF(ducmass25(i,j)<spval) grid1(i,j) = ducmass25(i,j) * 1.e-9
5462 if(grib==
'grib2')
then
5464 fld_info(cfld)%ifld=iavblfld(iget(622))
5465 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5470 IF (iget(646)>0 )
THEN
5475 IF(dustcb(i,j)<spval) grid1(i,j) = dustcb(i,j) * 1.e-9
5478 if(grib==
'grib2')
then
5480 fld_info(cfld)%ifld=iavblfld(iget(646))
5481 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5486 IF (iget(647)>0 )
THEN
5491 IF(sscb(i,j)<spval) grid1(i,j) = sscb(i,j) * 1.e-9
5494 if(grib==
'grib2')
then
5496 fld_info(cfld)%ifld=iavblfld(iget(647))
5497 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5501 IF (iget(616)>0 )
THEN
5506 IF(bccb(i,j)<spval) grid1(i,j) = bccb(i,j) * 1.e-9
5509 if(grib==
'grib2')
then
5511 fld_info(cfld)%ifld=iavblfld(iget(616))
5512 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5517 IF (iget(617)>0 )
THEN
5522 IF(occb(i,j)<spval) grid1(i,j) = occb(i,j) * 1.e-9
5525 if(grib==
'grib2')
then
5527 fld_info(cfld)%ifld=iavblfld(iget(617))
5528 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5533 IF (iget(618)>0 )
THEN
5538 IF(sulfcb(i,j)<spval) grid1(i,j) = sulfcb(i,j) * 1.e-9
5541 if(grib==
'grib2')
then
5543 fld_info(cfld)%ifld=iavblfld(iget(618))
5544 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5550 IF (iget(657)>0 )
THEN
5555 IF(no3cb(i,j)<spval) grid1(i,j) = no3cb(i,j) * 1.e-9
5558 if(grib==
'grib2')
then
5560 fld_info(cfld)%ifld=iavblfld(iget(657))
5561 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5566 IF (iget(658)>0 )
THEN
5571 IF(nh4cb(i,j)<spval) grid1(i,j) = nh4cb(i,j) * 1.e-9
5574 if(grib==
'grib2')
then
5576 fld_info(cfld)%ifld=iavblfld(iget(658))
5577 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5583 if (gocart_on .or. gccpp_on )
then
5587 IF (iget(659)>0)
call wrt_aero_diag(659,nbin_du,duem)
5589 IF (iget(660)>0)
call wrt_aero_diag(660,nbin_du,dusd)
5590 IF (iget(661)>0)
call wrt_aero_diag(661,nbin_du,dudp)
5591 IF (iget(662)>0)
call wrt_aero_diag(662,nbin_du,duwt)
5592 IF (iget(679)>0)
call wrt_aero_diag(679,nbin_du,dusv)
5596 IF (iget(663)>0)
call wrt_aero_diag(663,nbin_ss,ssem)
5597 IF (iget(664)>0)
call wrt_aero_diag(664,nbin_ss,sssd)
5598 IF (iget(665)>0)
call wrt_aero_diag(665,nbin_ss,ssdp)
5599 IF (iget(666)>0)
call wrt_aero_diag(666,nbin_ss,sswt)
5600 IF (iget(680)>0)
call wrt_aero_diag(680,nbin_ss,sssv)
5604 IF (iget(667)>0)
call wrt_aero_diag(667,nbin_bc,bcem)
5605 IF (iget(668)>0)
call wrt_aero_diag(668,nbin_bc,bcsd)
5606 IF (iget(669)>0)
call wrt_aero_diag(669,nbin_bc,bcdp)
5607 IF (iget(670)>0)
call wrt_aero_diag(670,nbin_bc,bcwt)
5608 IF (iget(681)>0)
call wrt_aero_diag(681,nbin_bc,bcsv)
5612 IF (iget(671)>0)
call wrt_aero_diag(671,nbin_oc,ocem)
5613 IF (iget(672)>0)
call wrt_aero_diag(672,nbin_oc,ocsd)
5614 IF (iget(673)>0)
call wrt_aero_diag(673,nbin_oc,ocdp)
5615 IF (iget(674)>0)
call wrt_aero_diag(674,nbin_oc,ocwt)
5616 IF (iget(682)>0)
call wrt_aero_diag(682,nbin_oc,ocsv)
5619 IF (iget(699).GT.0)
call wrt_aero_diag(699,1,maod)
5620 print *,
'aft wrt disg maod'
5632 if(iget(473)>0 .or. iget(474)>0 .or. iget(475)>0)
then
5637 if(avgcprate(i,j) /= spval)
then
5638 egrid1(i,j) = avgcprate(i,j)*(1000./dtq2)
5648 IF(modelname ==
'GFS' .OR. modelname ==
'FV3R')
then
5651 egrid2(i,j) = pbot(i,j)
5652 egrid3(i,j) = ptop(i,j)
5660 if(egrid1(i,j)<= 0. .or. egrid2(i,j)<= 0. .or. egrid3(i,j) <= 0.)
then
5669 IF(egrid2(i,j) == spval .or. egrid3(i,j) == spval) cycle
5670 if(egrid3(i,j) < 400.*100. .and. &
5671 (egrid2(i,j)-egrid3(i,j)) > 300.*100)
then
5673 if(egrid2(i,j) > pmid(i,j,lm))
then
5677 if(egrid2(i,j) >= pmid(i,j,l))
then
5678 if(egrid2(i,j)-pmid(i,j,l)<0.5)
then
5679 egrid2(i,j) = zmid(i,j,l)
5681 dp = (log(egrid2(i,j)) - log(pmid(i,j,l)))/ &
5682 max(1.e-6,(log(pmid(i,j,l+1))-log(pmid(i,j,l))))
5683 egrid2(i,j) = zmid(i,j,l)+(zmid(i,j,l+1)-zmid(i,j,l))*dp
5690 if(egrid3(i,j) < pmid(i,j,1))
then
5691 egrid3(i,j) = zmid(i,j,1)
5694 if(egrid3(i,j) <= pmid(i,j,l))
then
5695 if(pmid(i,j,l)-egrid3(i,j)<0.5)
then
5696 egrid3(i,j) = zmid(i,j,l)
5698 dp = (log(egrid3(i,j)) - log(pmid(i,j,l)))/ &
5699 max(1.e-6,(log(pmid(i,j,l))-log(pmid(i,j,l-1))))
5700 egrid3(i,j) = zmid(i,j,l)+(zmid(i,j,l)-zmid(i,j,l-1))*dp
5714 IF(iget(473) > 0)
THEN
5718 grid1(i,j) = egrid1(i,j)
5722 fld_info(cfld)%ifld=iavblfld(iget(473))
5728 datapd(i,j,cfld) = grid1(ii,jj)
5733 IF(iget(474) > 0)
THEN
5737 grid1(i,j) = egrid2(i,j)
5741 fld_info(cfld)%ifld=iavblfld(iget(474))
5747 datapd(i,j,cfld) = grid1(ii,jj)
5752 IF(iget(475) > 0)
THEN
5756 grid1(i,j) = egrid3(i,j)
5760 fld_info(cfld)%ifld=iavblfld(iget(475))
5766 datapd(i,j,cfld) = grid1(ii,jj)
5782 use ctlblk_mod,
only: spval,jsta,jend,im,ista,iend
5784 real,
intent(inout) :: cbcov(ISTA:IEND,JSTA:JEND)
5792 integer,
parameter :: NP=10
5793 real :: x(NP), y(NP)
5798 x = (/ 1.6,3.6,8.1,18.5,39.0,89.0,197.0,440.0,984.0,10000.0 /)
5799 y = (/ 0.0,0.1,0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.8 /)
5805 if(cbcov(i,j) == spval) cycle
5806 if(cbcov(i,j) <= 0.)
then
5809 val=log(1.0e6*cbcov(i,j))
5810 if (val <= x(1))
then
5812 else if (val >= x(np))
then
5816 if (val < x(k))
then
5817 delta = x(k) - x(k-1)
5818 if (delta <= 0.0)
then
5821 cbcov(i,j) = (y(k) * (val-x(k-1)) + &
5822 y(k-1) * (x(k)-val)) / delta
5833 subroutine wrt_aero_diag(igetfld,nbin,data)
5834 use ctlblk_mod,
only: jsta, jend, spval, im, jm, grib, &
5835 cfld, datapd, fld_info, jsta_2l, jend_2u,ista_2l,iend_2u,ista,iend
5836 use rqstfld_mod,
only: iget, id, lvls, iavblfld
5839 integer igetfld,nbin
5840 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u,nbin) :: data
5843 REAL,
dimension(im,jm) :: GRID1
5849 if(
data(i,j,1)<spval) grid1(i,j) =
data(i,j,1)
5851 if(
data(i,j,k)<spval)&
5852 grid1(i,j) = grid1(i,j)+
data(i,j,k)
5856 if(grib==
'grib2')
then
5858 fld_info(cfld)%ifld=iavblfld(iget(igetfld))
5859 datapd(1:iend-ista+1,1:jend-jsta+1,cfld)=grid1(ista:iend,jsta:jend)
5862 end subroutine wrt_aero_diag
subroutine calceiling(cldz, tcld, ceiling)
Computes ceiling.
subroutine calfltcnd(ceiling, fltcnd)
Computes Ceiling.
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 cb_cover(cbcov)
subroutine otlift(slindx)
otlift() computes SFC to 500mb lifted index.