diff --git a/parm/post_avblflds.xml b/parm/post_avblflds.xml
index f2358d259..67d4e654e 100755
--- a/parm/post_avblflds.xml
+++ b/parm/post_avblflds.xml
@@ -5992,10 +5992,11 @@
685
- DU_CR_AER_SFC_MASS_CON
+ DUST10_SFC_MASS_CON
AVE
tmpl4_48
- MASSDEN
+ PMTC
+ surface
dust_dry
smaller_than_first_limit
6
diff --git a/parm/postcntrl_gefs_chem.xml b/parm/postcntrl_gefs_chem.xml
index 5a88ea873..4e3ee94dc 100755
--- a/parm/postcntrl_gefs_chem.xml
+++ b/parm/postcntrl_gefs_chem.xml
@@ -224,6 +224,12 @@
9.0
+
+ DUST10_SFC_MASS_CON
+ NCEP
+ 9.0
+
+
DUST25_SFC_MASS_CON
NCEP
diff --git a/parm/postxconfig-NT-GEFS-CHEM.txt b/parm/postxconfig-NT-GEFS-CHEM.txt
index 6692ae83a..d605ff93a 100644
--- a/parm/postxconfig-NT-GEFS-CHEM.txt
+++ b/parm/postxconfig-NT-GEFS-CHEM.txt
@@ -1,5 +1,5 @@
1
-46
+47
GFSPRS
0
ncep_nco
@@ -1311,6 +1311,43 @@ between_first_second_limit
?
?
?
+685
+DUST10_SFC_MASS_CON
+?
+1
+tmpl4_48
+PMTC
+NCEP
+AVE
+surface
+0
+?
+0
+?
+?
+0
+?
+0
+?
+dust_dry
+smaller_than_first_limit
+6
+10
+0
+0.0
+?
+0
+0.0
+0
+0.0
+1
+9.0
+0
+0
+0
+?
+?
+?
686
DUST25_SFC_MASS_CON
?
diff --git a/sorc/ncep_post.fd/ALLOCATE_ALL.f b/sorc/ncep_post.fd/ALLOCATE_ALL.f
index f99a6de99..970018ec3 100644
--- a/sorc/ncep_post.fd/ALLOCATE_ALL.f
+++ b/sorc/ncep_post.fd/ALLOCATE_ALL.f
@@ -525,7 +525,9 @@ SUBROUTINE ALLOCATE_ALL()
allocate(dustallcb(im,jsta_2l:jend_2u))
allocate(ssallcb(im,jsta_2l:jend_2u))
allocate(dustpm(im,jsta_2l:jend_2u))
+ allocate(dustpm10(im,jsta_2l:jend_2u))
allocate(sspm(im,jsta_2l:jend_2u))
+ allocate(maod(im,jsta_2l:jend_2u))
endif
! HWRF RRTMG output
allocate(acswupt(im,jsta_2l:jend_2u))
diff --git a/sorc/ncep_post.fd/CALPW.f b/sorc/ncep_post.fd/CALPW.f
index 2ed406358..451da300b 100644
--- a/sorc/ncep_post.fd/CALPW.f
+++ b/sorc/ncep_post.fd/CALPW.f
@@ -289,12 +289,11 @@ SUBROUTINE CALPW(PW,IDECID)
DO J=JSTA,JEND
DO I=1,IM
DP = PINT(I,J,L+1) - PINT(I,J,L)
- PW(I,J) = PW(I,J) + Qdum(I,J)*DP*GI*HTM(I,J,L)
- IF (IDECID == 17 .or. IDECID == 20 .or. IDECID == 21) THEN
- PW(I,J) = PW(I,J) + Qdum(I,J)*MAX(DP,0.)*GI*HTM(I,J,L)
- ENDIF
+
IF (IDECID == 19) THEN
PW(I,J) = PW(I,J) + Qdum(I,J)
+ ELSE
+ PW(I,J) = PW(I,J) + Qdum(I,J)*MAX(DP,0.)*GI*HTM(I,J,L)
ENDIF
IF (IDECID == 14) PWS(I,J) = PWS(I,J) + QS(I,J)*DP*GI*HTM(I,J,L)
ENDDO
diff --git a/sorc/ncep_post.fd/CLDRAD.f b/sorc/ncep_post.fd/CLDRAD.f
index 51ab9f111..ad0b414ae 100644
--- a/sorc/ncep_post.fd/CLDRAD.f
+++ b/sorc/ncep_post.fd/CLDRAD.f
@@ -109,7 +109,7 @@ SUBROUTINE CLDRAD
SWDDIFC, SWUPBC, LWDNBC, LWUPBC, SWUPT, &
TAOD5502D, AERSSA2D, AERASY2D, MEAN_FRP, LWP, IWP, &
TAOD5502D, AERSSA2D, AERASY2D, &
- DUSTCB,SSCB,BCCB,OCCB,SULFCB,DUSTPM,SSPM
+ DUSTCB,SSCB,BCCB,OCCB,SULFCB,DUSTPM,DUSTPM10,SSPM,MAOD
use masks, only: LMH, HTM
use params_mod, only: TFRZ, D00, H99999, QCLDMIN, SMALL, D608, H1, ROG, &
GI, RD, QCONV, ABSCOEFI, ABSCOEF, STBOL, PQ0, A2, &
@@ -5137,50 +5137,49 @@ SUBROUTINE CLDRAD
ENDIF ! END OF LAEROPT IF-BLOCK
+!#if 0
!! Multiply by 1.E-6 to revert these fields back
- IF (IGET(659).GT.0) THEN
+ IF (IGET(667).GT.0) THEN
GRID1=SPVAL
!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUEM(I,J,1)*1.E-6
- DO K=2,NBIN_DU
- GRID1(I,J) = GRID1(I,J) + DUEM(I,J,K)*1.E-6
+ GRID1(I,J) = BCEM(I,J,1)
+ DO K=2,NBIN_BC
+ GRID1(I,J) = GRID1(I,J) + BCEM(I,J,K)
END DO
END DO
END DO
ID(1:25) = 0
ID(02)=141
if(grib=='grib1') then
- CALL GRIBIT(IGET(659),LVLS(1,IGET(659)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(667),LVLS(1,IGET(667)),GRID1,IM,JM)
elseif(grib=='grib2') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(659))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(667))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
- IF (IGET(660).GT.0) THEN
+ IF (IGET(699).GT.0) THEN
GRID1=SPVAL
!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- GRID1(I,J) = DUSD(I,J,1)*1.E-6
- DO K=2,NBIN_DU
- GRID1(I,J) = GRID1(I,J)+ DUSD(I,J,K)*1.E-6
- END DO
+ GRID1(I,J) = MAOD(I,J)
END DO
END DO
ID(1:25) = 0
ID(02)=141
if(grib=='grib1') then
- CALL GRIBIT(IGET(660),LVLS(1,IGET(660)),GRID1,IM,JM)
+ CALL GRIBIT(IGET(699),LVLS(1,IGET(699)),GRID1,IM,JM)
elseif(grib=='grib2') then
cfld=cfld+1
- fld_info(cfld)%ifld=IAVBLFLD(IGET(660))
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(699))
datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
endif
ENDIF
+!#endif
!! ADD DUST DRY DEPOSITION FLUXES (kg/m2/sec)
!
! IF (IGET(661).GT.0) THEN
@@ -5208,7 +5207,6 @@ SUBROUTINE CLDRAD
!$omp parallel do private(i,j)
DO J = JSTA,JEND
DO I = 1,IM
- !GRID1(I,J) = DUSMASS(I,J) * 1.E-6
GRID1(I,J) = DUSTPM(I,J) !ug/m3
END DO
END DO
@@ -5223,6 +5221,24 @@ SUBROUTINE CLDRAD
endif
ENDIF
+ IF (IGET(685).GT.0 ) THEN
+!$omp parallel do private(i,j)
+ DO J = JSTA,JEND
+ DO I = 1,IM
+ GRID1(I,J) = DUSTPM10(I,J) !ug/m3
+ END DO
+ END DO
+ ID(1:25) = 0
+ ID(02)=129
+ if(grib=='grib1') then
+ CALL GRIBIT(IGET(685),LVLS(1,IGET(685)),GRID1,IM,JM)
+ elseif(grib=='grib2') then
+ cfld=cfld+1
+ fld_info(cfld)%ifld=IAVBLFLD(IGET(685))
+ datapd(1:im,1:jend-jsta+1,cfld)=GRID1(1:im,jsta:jend)
+ endif
+ ENDIF
+
!! ADD DUST WET DEPOSITION FLUXES (kg/m2/sec)
! IF (IGET(662).GT.0) THEN
! DO J = JSTA,JEND
@@ -5469,6 +5485,9 @@ SUBROUTINE CLDRAD
IF (IGET(674).GT.0) call wrt_aero_diag(674,nbin_oc,ocwt)
IF (IGET(682).GT.0) call wrt_aero_diag(682,nbin_oc,ocsv)
print *,'aft wrt disg ocwt'
+!! wrt MIE AOD at 550nm
+ IF (IGET(699).GT.0) call wrt_aero_diag(699,1,maod)
+ print *,'aft wrt disg maod'
!! wrt SU diag field
! IF (IGET(675).GT.0) call wrt_aero_diag(675,nbin_su,suem)
diff --git a/sorc/ncep_post.fd/DEALLOCATE.f b/sorc/ncep_post.fd/DEALLOCATE.f
index 3d1d57a3d..0ccc837d1 100644
--- a/sorc/ncep_post.fd/DEALLOCATE.f
+++ b/sorc/ncep_post.fd/DEALLOCATE.f
@@ -514,7 +514,9 @@ SUBROUTINE DE_ALLOCATE
deallocate(dustallcb)
deallocate(ssallcb)
deallocate(dustpm)
+ deallocate(dustpm10)
deallocate(sspm)
+ deallocate(maod)
endif
!
! HWRF RRTMG output
diff --git a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f
index ed2ed5a60..22fc118ac 100644
--- a/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f
+++ b/sorc/ncep_post.fd/INITPOST_GFS_NEMS_MPIIO.f
@@ -73,7 +73,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
avgedir,avgecan,avgetrans,avgesnow,avgprec_cont,avgcprate_cont, &
avisbeamswin,avisdiffswin,airbeamswin,airdiffswin, &
alwoutc,alwtoac,aswoutc,aswtoac,alwinc,aswinc,avgpotevp,snoavg, &
- dustcb,bccb,occb,sulfcb,sscb,dustallcb,ssallcb,dustpm,sspm,pp25cb,pp10cb
+ dustcb,bccb,occb,sulfcb,sscb,dustallcb,ssallcb,dustpm,dustpm10,sspm,pp25cb,pp10cb,maod
use soil, only: sldpth, sh2o, smc, stc
use masks, only: lmv, lmh, htm, vtm, gdlat, gdlon, dx, dy, hbm2, sm, sice
! use kinds, only: i_llong
@@ -1430,7 +1430,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
dustallcb(1:im,jsta_2l:jend_2u)=dustallcb(1:im,jsta_2l:jend_2u)+ &
(dust(1:im,jsta_2l:jend_2u,ll,1)+dust(1:im,jsta_2l:jend_2u,ll,2)+ &
- dust(1:im,jsta_2l:jend_2u,ll,3)+0.67*dust(1:im,jsta_2l:jend_2u,ll,4))* &
+ dust(1:im,jsta_2l:jend_2u,ll,3)+0.74*dust(1:im,jsta_2l:jend_2u,ll,4))* &
dpres(1:im,jsta_2l:jend_2u,ll)/grav
! if(debugprint)print*,'sample l ',VarName,' = ',ll,dust(isa,jsa,ll,5)
@@ -1487,7 +1487,8 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
,salt(1:im,jsta_2l:jend_2u,ll,3))
sscb(1:im,jsta_2l:jend_2u)=sscb(1:im,jsta_2l:jend_2u)+ &
- (salt(1:im,jsta_2l:jend_2u,ll,2)+0.75*salt(1:im,jsta_2l:jend_2u,ll,3))* &
+ (salt(1:im,jsta_2l:jend_2u,ll,1)+ &
+ salt(1:im,jsta_2l:jend_2u,ll,2)+0.83*salt(1:im,jsta_2l:jend_2u,ll,3))* &
dpres(1:im,jsta_2l:jend_2u,ll)/grav
! if(debugprint)print*,'sample l ',VarName,' = ',ll,salt(isa,jsa,ll,3)
@@ -1518,7 +1519,7 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
ssallcb(1:im,jsta_2l:jend_2u)=ssallcb(1:im,jsta_2l:jend_2u)+ &
(salt(1:im,jsta_2l:jend_2u,ll,1)+salt(1:im,jsta_2l:jend_2u,ll,2)+ &
salt(1:im,jsta_2l:jend_2u,ll,3)+ &
- salt(1:im,jsta_2l:jend_2u,ll,4)*0.83)* &
+ salt(1:im,jsta_2l:jend_2u,ll,4))* &
dpres(1:im,jsta_2l:jend_2u,ll)/grav
! if(debugprint)print*,'sample l ',VarName,' = ',ll,salt(isa,jsa,ll,5)
@@ -1745,17 +1746,18 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
bccb(i,j) = MAX(bccb(i,j), 0.0)
occb(i,j) = MAX(occb(i,j), 0.0)
sulfcb(i,j) = MAX(sulfcb(i,j), 0.0)
- pp25cb(i,j) = MAX(sulfcb(i,j), 0.0)
- pp10cb(i,j) = MAX(sulfcb(i,j), 0.0)
+ pp25cb(i,j) = MAX(pp25cb(i,j), 0.0)
+ pp10cb(i,j) = MAX(pp10cb(i,j), 0.0)
! PM10 concentration
dusmass(i,j)=(dust(i,j,l,1)+dust(i,j,l,2)+dust(i,j,l,3)+ &
0.74*dust(i,j,l,4)+salt(i,j,l,1)+salt(i,j,l,2)+salt(i,j,l,3)+ &
- salt(i,j,l,4) + &
- salt(i,j,l,5)+soot(i,j,l,1)+soot(i,j,l,2)+waso(i,j,l,1)+ &
+ salt(i,j,l,4) + soot(i,j,l,1)+soot(i,j,l,2)+waso(i,j,l,1)+ &
waso(i,j,l,2) +suso(i,j,l,1)+pp25(i,j,l,1)+pp10(i,j,l,1)) &
*RHOMID(i,j,l) !ug/m3
! PM25 dust and seasalt
dustpm(i,j)=(dust(i,j,l,1)+0.38*dust(i,j,l,2))*RHOMID(i,j,l) !ug/m3
+ dustpm10(i,j)=(dust(i,j,l,1)+dust(i,j,l,2)+dust(i,j,l,3)+ &
+ 0.74*dust(i,j,l,4))*RHOMID(i,j,l) !ug/m3
sspm(i,j)=(salt(i,j,l,1)+salt(i,j,l,2)+ &
0.83*salt(i,j,l,3))*RHOMID(i,j,l) !ug/m3
! PM25 concentration
@@ -3672,42 +3674,6 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
enddo
enddo
-! done with flux file, close it for now
- call nemsio_close(ffile,iret=status)
- deallocate(tmp,recname,reclevtyp,reclev)
-
-
-! Retrieve aer fields if it's listed (GOCART)
- print *, 'iostatus for aer file=', iostatusAER
- if(iostatusAER == 0) then ! start reading aer file
- call nemsio_open(rfile,trim(fileNameAER),'read',mpi_comm_comp &
- ,iret=status)
- if ( Status /= 0 ) then
- print*,'error opening ',fileNameAER, ' Status = ', Status
- endif
- call nemsio_getfilehead(rfile,iret=status,nrec=nrec)
- print*,'nrec for aer file=',nrec
- allocate(recname(nrec),reclevtyp(nrec),reclev(nrec))
- call nemsio_getfilehead(rfile,iret=iret,recname=recname &
- ,reclevtyp=reclevtyp,reclev=reclev)
- if(debugprint)then
- if (me == 0)then
- do i=1,nrec
- print *,'recname,reclevtyp,reclev=',trim(recname(i)),' ', &
- trim(reclevtyp(i)),reclev(i)
- end do
- end if
- end if
-! start reading nemsio aer files using parallel read
- fldsize=(jend-jsta+1)*im
- allocate(tmp(fldsize*nrec))
- print*,'allocate tmp successfully'
- tmp=0.
- call nemsio_denseread(rfile,1,im,jsta,jend,tmp,iret=iret)
- if(iret/=0)then
- print*,"fail to read aer file using mpi io read, stopping"
- stop
- end if
! retrieve dust emission fluxes
do K = 1, nbin_du
@@ -3716,28 +3682,28 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
if ( K == 3) VarName='duem003'
if ( K == 4) VarName='duem004'
if ( K == 5) VarName='duem005'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,duem(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,duem(1,jsta_2l,K))
! if(debugprint)print*,'sample ',VarName,' = ',duem(isa,jsa,k)
enddo
! retrieve dust sedimentation fluxes
do K = 1, nbin_du
- if ( K == 1) VarName='dust1SD'
- if ( K == 2) VarName='dust2SD'
- if ( K == 3) VarName='dust3SD'
- if ( K == 4) VarName='dust4SD'
- if ( K == 5) VarName='dsut5SD'
- VcoordName='atmos col'
+ if ( K == 1) VarName='dust1sd'
+ if ( K == 2) VarName='dust2sd'
+ if ( K == 3) VarName='dust3sd'
+ if ( K == 4) VarName='dust4sd'
+ if ( K == 5) VarName='dust5sd'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,dusd(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,dusd(1,jsta_2l,K))
! if(debugprint)print*,'sample ',VarName,' = ',dusd(isa,jsa,k)
enddo
@@ -3748,12 +3714,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
if ( K == 3) VarName='dust3dp'
if ( K == 4) VarName='dust4dp'
if ( K == 5) VarName='dust5dp'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,dudp(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,dudp(1,jsta_2l,K))
print *,'dudp,ck=',maxval(dudp(1:im,jsta:jend,k)), &
minval(dudp(1:im,jsta:jend,k))
! if(debugprint)print*,'sample ',VarName,' = ',dudp(isa,jsa,k)
@@ -3766,12 +3732,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
if ( K == 3) VarName='dust3wtl'
if ( K == 4) VarName='dust4wtl'
if ( K == 5) VarName='dust5wtl'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,duwt(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,duwt(1,jsta_2l,K))
enddo
! retrieve dust scavenging fluxes
do K = 1, nbin_du
@@ -3780,12 +3746,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
if ( K == 3) VarName='dust3wtc'
if ( K == 4) VarName='dust4wtc'
if ( K == 5) VarName='dust5wtc'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,dusv(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,dusv(1,jsta_2l,K))
enddo
! retrieve seasalt emission fluxes
@@ -3795,12 +3761,27 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
if ( K == 3) VarName='ssem003'
if ( K == 4) VarName='ssem004'
if ( K == 5) VarName='ssem005'
- VcoordName='atmos col'
+ VcoordName='sfc'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ssem(1,jsta_2l,K))
+ enddo
+
+! retrieve seasalt emission fluxes
+ do K = 1, nbin_ss
+ if ( K == 1) VarName='seas1sd'
+ if ( K == 2) VarName='seas2sd'
+ if ( K == 3) VarName='seas3sd'
+ if ( K == 4) VarName='seas4sd'
+ if ( K == 5) VarName='seas5sd'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,ssem(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,sssd(1,jsta_2l,K))
enddo
! retrieve seasalt dry deposition fluxes
@@ -3810,12 +3791,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
if ( K == 3) VarName='seas3dp'
if ( K == 4) VarName='seas4dp'
if ( K == 5) VarName='seas5dp'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,ssdp(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ssdp(1,jsta_2l,K))
enddo
! retrieve seasalt wet deposition fluxes
@@ -3825,12 +3806,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
if ( K == 3) VarName='seas3wtl'
if ( K == 4) VarName='seas4wtl'
if ( K == 5) VarName='seas5wtl'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,sswt(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,sswt(1,jsta_2l,K))
enddo
! retrieve seasalt scavenging fluxes
@@ -3840,135 +3821,146 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
if ( K == 3) VarName='seas1wtc'
if ( K == 4) VarName='seas1wtc'
if ( K == 5) VarName='seas1wtc'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,sssv(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,sssv(1,jsta_2l,K))
enddo
! retrieve bc emission fluxes
do K = 1, nbin_bc
if ( K == 1) VarName='bceman'
if ( K == 2) VarName='bcembb'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,bcem(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcem(1,jsta_2l,K))
enddo
! retrieve bc sedimentation fluxes
do K = 1, nbin_bc
if ( K == 1) VarName='bc1sd'
if ( K == 2) VarName='bc2sd'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,bcsd(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcsd(1,jsta_2l,K))
enddo
! retrieve bc dry deposition fluxes
do K = 1, nbin_bc
if ( K == 1) VarName='bc1dp'
if ( K == 2) VarName='bc2dp'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,bcdp(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcdp(1,jsta_2l,K))
enddo
! retrieve bc large wet deposition fluxes
do K = 1, nbin_bc
if ( K == 1) VarName='bc1wtl'
if ( K == 2) VarName='bc2wtl'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,bcwt(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcwt(1,jsta_2l,K))
enddo
! retrieve bc convective wet deposition fluxes
do K = 1, nbin_bc
if ( K == 1) VarName='bc1wtc'
if ( K == 2) VarName='bc2wtc'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,bcsv(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,bcsv(1,jsta_2l,K))
enddo
! retrieve oc emission fluxes
do K = 1, nbin_oc
if ( K == 1) VarName='oceman'
if ( K == 2) VarName='ocembb'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,ocem(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocem(1,jsta_2l,K))
enddo
! retrieve oc sedimentation fluxes
do K = 1, nbin_oc
if ( K == 1) VarName='oc1sd'
if ( K == 2) VarName='oc2sd'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,ocsd(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocsd(1,jsta_2l,K))
enddo
! retrieve oc dry deposition fluxes
do K = 1, nbin_oc
- if ( K == 1) VarName='c1dp'
- if ( K == 2) VarName='c2dp'
- VcoordName='atmos col'
+ if ( K == 1) VarName='oc1dp'
+ if ( K == 2) VarName='oc2dp'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,ocdp(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocdp(1,jsta_2l,K))
enddo
! retrieve oc large wet deposition fluxes
do K = 1, nbin_oc
if ( K == 1) VarName='oc1wtl'
if ( K == 2) VarName='oc2wtl'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,ocwt(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocwt(1,jsta_2l,K))
enddo
! retrieve oc convective wet deposition fluxes
do K = 1, nbin_oc
if ( K == 1) VarName='oc1wtc'
if ( K == 2) VarName='oc2wtc'
- VcoordName='atmos col'
+ VcoordName='sfc'
l=1
call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
- ,l,nrec,fldsize,spval,tmp &
- ,recname,reclevtyp,reclev,VarName,VcoordName&
- ,ocsv(1,jsta_2l,K))
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,ocsv(1,jsta_2l,K))
enddo
+! retrieve MIE AOD
+ VarName='maod'
+ VcoordName='sfc'
+ l=1
+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
+ ,l,nrec,fldsize,spval,tmp &
+ ,recname,reclevtyp,reclev,VarName,VcoordName&
+ ,maod(1,jsta_2l))
+! done with flux file, close it for now
+ call nemsio_close(ffile,iret=status)
+ deallocate(tmp,recname,reclevtyp,reclev)
!lzhang
!! retrieve sfc mass concentration
@@ -4013,12 +4005,6 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
! ,recname,reclevtyp,reclev,VarName,VcoordName &
! ,ducmass25)
! if(debugprint)print*,'sample ',VarName,' = ',ducmass25(isa,jsa)
-
- if (me == 0) print *,'after aer files reading,mype=',me
- call nemsio_close(rfile,iret=status)
- deallocate(tmp,recname,reclevtyp,reclev)
- end if ! end of aer file read
-
! pos east
call collect_loc(gdlat,dummy)
if(me == 0)then
diff --git a/sorc/ncep_post.fd/MPI_FIRST.f b/sorc/ncep_post.fd/MPI_FIRST.f
index ad5677f75..8a2d034c8 100644
--- a/sorc/ncep_post.fd/MPI_FIRST.f
+++ b/sorc/ncep_post.fd/MPI_FIRST.f
@@ -79,7 +79,7 @@ SUBROUTINE MPI_FIRST()
ocsmass25, occmass25, bcsmass, bccmass, bcsmass25, bccmass25, &
sssmass, sscmass, sssmass25, sscmass25, ducmass25, &
dustcb, sscb, bccb, occb, sulfcb, dustallcb, ssallcb,dustpm,sspm, pp25cb,&
- pp10cb !lzhang
+ dustpm10,pp10cb,maod !lzhang
use soil, only: smc, stc, sh2o, sldpth, rtdpth, sllevel
use masks, only: htm, vtm, hbm2, sm, sice, lmh, gdlat, gdlon, dx, dy, lmv
use ctlblk_mod, only: me, num_procs, jm, jsta, jend, jsta_m, jsta_m2, &
diff --git a/sorc/ncep_post.fd/RQSTFLD.F b/sorc/ncep_post.fd/RQSTFLD.F
index 6dda3af35..1146d0172 100644
--- a/sorc/ncep_post.fd/RQSTFLD.F
+++ b/sorc/ncep_post.fd/RQSTFLD.F
@@ -2085,12 +2085,13 @@ module RQSTFLD_mod
DATA IFILV(684),AVBL(684),IQ(684),IS(684),AVBLGRB2(684) &
& /1,'SEAS25 SFC MASS CON ',159,200, &
'seas pm25 sfc mass concentration '/
-! DATA IFILV(685),AVBL(685),IQ(685),IS(685),AVBLGRB2(685) &
-! & /1,'DU CR SFC MASS CON ',160,001, &
-! 'dust cr sfc mass con '/
+ DATA IFILV(685),AVBL(685),IQ(685),IS(685),AVBLGRB2(685) &
+ & /1,'DUST10 SFC MASS CON ',160,001, &
+ 'dust pm10 sfc mass con '/
DATA IFILV(686),AVBL(686),IQ(686),IS(686),AVBLGRB2(686) &
& /1,'DUST25 SFC MASS CON ',161,001, &
'dust pm25 sfc mass con '/
+#if 0
DATA IFILV(687),AVBL(687),IQ(687),IS(687),AVBLGRB2(687) &
& /1,'BC SFC MASS CON ',162,001, &
'black carbon sfc mass con '/
@@ -2127,6 +2128,10 @@ module RQSTFLD_mod
DATA IFILV(698),AVBL(698),IQ(698),IS(698),AVBLGRB2(698) &
& /1,'INST AER FN SMASS ',164,001, &
'instn aer fine mode sfc mass con '/
+#endif
+ DATA IFILV(699),AVBL(699),IQ(699),IS(699),AVBLGRB2(699) &
+ & /1,'MIE OPT DEP AT 550 ',129,200, &
+ 'mie aerosol optical depth at 550 '/
! Reserving Index 601-700 for GOCART
!
diff --git a/sorc/ncep_post.fd/VRBLS2D_mod.f b/sorc/ncep_post.fd/VRBLS2D_mod.f
index 5f4d6ae72..ba6d1d730 100644
--- a/sorc/ncep_post.fd/VRBLS2D_mod.f
+++ b/sorc/ncep_post.fd/VRBLS2D_mod.f
@@ -87,7 +87,7 @@ module vrbls2d
,SSSMASS(:,:),SSCMASS(:,:),SSSMASS25(:,:),SSCMASS25(:,:) &
,DUSTCB(:,:),SSCB(:,:),OCCB(:,:),BCCB(:,:),SULFCB(:,:) &
,DUSTALLCB(:,:),SSALLCB(:,:),DUSTPM(:,:),SSPM(:,:),PP25CB(:,:) &
- ,PP10CB(:,:)!lzhang, add for FV3-Chem
+ ,DUSTPM10(:,:),PP10CB(:,:),maod(:,:)!lzhang, add for FV3-Chem
!
end module vrbls2d