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