Skip to content

Commit bb791e7

Browse files
authored
fixed redistribution between GOCART dust/sea salt and MOZAIC bins (#2112)
TYPE: bug fix KEYWORDS: WRF-Chem, GOCART, optical properties, dust, sea salt, AOD SOURCE: KAUST DESCRIPTION OF CHANGES: Problem: It was found that WRF-Chem with GOCART aerosol scheme disregards the radiative effect of the largest dust and sea salt particles (5th and 4th bins). Solution: Mass redistribution between GOCART dust/sea salt and MOZAIC bins now accounts for the 5th dust and 4th sea salt bins. The number of MOZAIC bins was changed from 8 to 9 and MOZAIC max size range was increased from 10 to 20 um. This PR is an addition to #667 and #677 PR. LIST OF MODIFIED FILES: M chem/module_optical_averaging.F M chem/optical_driver.F TESTS CONDUCTED: - 7-day WRF-Chem run over the Middle East with the GOCART aerosol scheme was conducted without the changes and with changes. As expected, AOD increased by 3% on average. Over dust source regions the AOD increase is more pronounced - 5% on average. See PR itself for details. - The Jenkins tests are all passing. RELEASE NOTE: Bug fix in the calculation of optical properties. Mass redistribution between GOCART dust/sea salt and MOZAIC bins was corrected. It slightly increased (by 3-5%) the aerosol optical depth (AOD).
1 parent 754f0e5 commit bb791e7

File tree

2 files changed

+41
-28
lines changed

2 files changed

+41
-28
lines changed

chem/module_optical_averaging.F

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3534,7 +3534,10 @@ end subroutine optical_prep_mam
35343534
! MOZAIC grids.
35353535
! 10/24/18 - A. Ukhov, bug fix: mass redistribution between GOCART dust/sea salt and
35363536
! MOZAIC bins should be computed using interpolation over the logarithmic axis.
3537-
3537+
! 09/17/24 - A. Ukhov, bug fix: mass redistribution between GOCART dust/sea salt and
3538+
! MOZAIC bins now accounts for 5th dust and 4th sea salt bins. Number of MOZAIC bins was
3539+
! changed from 8 to 9 and MOZAIC max size range was increased from 10 to 20 um.
3540+
!
35383541
! This subroutine computes volume-averaged refractive index and wet radius needed
35393542
! by the mie calculations. Aerosol number is also passed into the mie calculations
35403543
! in terms of other units.
@@ -3642,9 +3645,9 @@ subroutine optical_prep_gocart(nbin_o, chem, alt,relhum, &
36423645
! 7/21/09 SAM variables needed to convert GOCART sectional dust and seasalt to MOZAIC sections
36433646
real dgnum, dhi, dlo, xlo, xhi, dxbin, relh_frc
36443647
real dlo_sectm(nbin_o), dhi_sectm(nbin_o)
3645-
integer, parameter :: nbin_omoz=8
3646-
real, save :: seasfrc_goc8bin(4,nbin_omoz) ! GOCART seasalt size distibution - mass fracs in MOSAIC 8-bins
3647-
real, save :: dustfrc_goc8bin(ndust,nbin_omoz) ! GOCART dust size distibution - mass fracs in MOSAIC 8-bins
3648+
integer, parameter :: nbin_omoz=9 ! A. Ukhov 09/17/24
3649+
real, save :: seasfrc_goc9bin(4,nbin_omoz) ! GOCART seasalt size distibution - mass fracs in MOSAIC 9-bins
3650+
real, save :: dustfrc_goc9bin(ndust,nbin_omoz) ! GOCART dust size distibution - mass fracs in MOSAIC 9-bins
36483651
real mass_bc1 , mass_bc2 , vol_bc2 , mass_bc1j , mass_bc2j, &
36493652
mass_bc1i , mass_bc2i , vol_soil
36503653
real*8 dlogoc, dhigoc
@@ -3671,7 +3674,7 @@ subroutine optical_prep_gocart(nbin_o, chem, alt,relhum, &
36713674
!
36723675
sixpi=6.0/3.14159265359
36733676
dlo_um=0.0390625
3674-
dhi_um=10.0
3677+
dhi_um=20.0 !A. Ukhov 09/17/24
36753678
drydens=1.8
36763679
iflag=2
36773680
duma=1.0
@@ -3692,47 +3695,51 @@ subroutine optical_prep_gocart(nbin_o, chem, alt,relhum, &
36923695
dlo_sectm(n) = exp( xlo + dxbin*(n-1) )
36933696
dhi_sectm(n) = exp( xlo + dxbin*n )
36943697
end do
3695-
! real, save :: seasfrc_goc8bin(4,nbin_o) ! GOCART seasalt size distibution - mass fracs in MOSAIC 8-bins
3696-
! real, save :: dustfrc_goc8bin(ndust,nbin_o) ! GOCART dust size distibution - mass fracs in MOSAIC 8-bins
3697-
! USE module_data_gocart_seas
3698-
! real*8, DIMENSION (4), PARAMETER :: ra(4)=(/1.d-1,5.d-1,1.5d0,5.0d0/)
3699-
! real*8, DIMENSION (4), PARAMETER :: rb(4)=(/5.d-1,1.5d0,5.d0,1.d1/)
3700-
! real*8, DIMENSION (4), PARAMETER :: den_seas(4)=(/2.2d3,2.2d3,2.2d3,2.2d3/)
3701-
! real*8, DIMENSION (4), PARAMETER :: reff_seas(4)=(/0.30D-6,1.00D-6,3.25D-6,7.50D-6/)
3702-
! USE module_data_gocart_dust, only: ndust, reff_dust, den_dust
3703-
! real*8, DIMENSION (5), PARAMETER :: den_dust(5)=(/2500.,2650.,2650.,2650.,2650./)
3704-
! real*8, DIMENSION (5), PARAMETER :: reff_dust(5)=(/0.73D-6,1.4D-6,2.4D-6,4.5D-6,8.0D-6/)
37053698
! Seasalt bin mass fractions
3706-
seasfrc_goc8bin=0.
3699+
seasfrc_goc9bin=0.
37073700
! WRITE(*,*)'Seasalt mass fractions'
37083701
! WRITE(*,*)' ',' ',(dlo_sectm(n),n=1,nbin_o)
37093702
! WRITE(*,*)' ',' ',(dhi_sectm(n),n=1,nbin_o)
37103703
do m =1, 4 ! loop over seasalt size bins
37113704
dlogoc = ra(m)*2.E-6 ! low diameter limit (m)
37123705
dhigoc = rb(m)*2.E-6 ! hi diameter limit (m)
37133706
do n = 1, nbin_o
3714-
seasfrc_goc8bin(m,n)=max(DBLE(0.),min(DBLE(log(dhi_sectm(n))),log(dhigoc))- &
3707+
seasfrc_goc9bin(m,n)=max(DBLE(0.),min(DBLE(log(dhi_sectm(n))),log(dhigoc))- &
37153708
max(log(dlogoc),DBLE(log(dlo_sectm(n)))) )/(log(dhigoc)-log(dlogoc))
37163709
37173710
end do
3718-
! WRITE(*,*)m,dlogoc,dhigoc,(seasfrc_goc8bin(m,n),n=1,nbin_o)
3711+
! WRITE(*,*)m,dlogoc,dhigoc,(seasfrc_goc9bin(m,n),n=1,nbin_o)
37193712
end do
37203713
! Dust bin mass fractions
37213714
! WRITE(*,*)'Dust mass fractions'
37223715
! WRITE(*,*)' ',' ',(dlo_sectm(n),n=1,nbin_o)
37233716
! WRITE(*,*)' ',' ',(dhi_sectm(n),n=1,nbin_o)
3724-
dustfrc_goc8bin=0.
3717+
dustfrc_goc9bin=0.
37253718
do m =1, ndust ! loop over dust size bins
37263719
dlogoc = ra_dust(m)*2.E-6 ! low diameter limit (m)
37273720
dhigoc = rb_dust(m)*2.E-6 ! hi diameter limit (m)
37283721
do n = 1, nbin_o
3729-
dustfrc_goc8bin(m,n)=max(DBLE(0.),min(DBLE(log(dhi_sectm(n))),log(dhigoc))- &
3722+
dustfrc_goc9bin(m,n)=max(DBLE(0.),min(DBLE(log(dhi_sectm(n))),log(dhigoc))- &
37303723
max(log(dlogoc),DBLE(log(dlo_sectm(n)))) )/(log(dhigoc)-log(dlogoc))
37313724
37323725
end do
3733-
! WRITE(*,*)m,dlogoc,dhigoc,(dustfrc_goc8bin(m,n),n=1,nbin_o)
3726+
! WRITE(*,*)m,dlogoc,dhigoc,(dustfrc_goc9bin(m,n),n=1,nbin_o)
37343727
end do
37353728
kcall=kcall+1
3729+
3730+
!Diagnostic. A. Ukhov 09/17/24
3731+
!-----
3732+
! WRITE(*,*)nbin_o
3733+
! WRITE(*,*)'Dust redistribution:'
3734+
! do m =1, ndust
3735+
! WRITE(*,*)m,dustfrc_goc9bin(m,:)
3736+
! end do
3737+
3738+
! WRITE(*,*)'Sea salt redistribution:'
3739+
! do m =1, 4
3740+
! WRITE(*,*)m,seasfrc_goc9bin(m,:)
3741+
! end do
3742+
!-----
37363743
! ISTOP=1
37373744
! IF(ISTOP.EQ.1)THEN
37383745
! STOP
@@ -3991,15 +3998,15 @@ subroutine optical_prep_gocart(nbin_o, chem, alt,relhum, &
39913998
! Add in seasalt and dust from GOCART sectional distributions
39923999
n = 0
39934000
mass_seas = 0.0
3994-
do m =p_seas_1, p_seas_3 ! loop over seasalt size bins less than 10 um diam
4001+
do m =p_seas_1, p_seas_4 ! loop over seasalt size bins less than 20 um. A. Ukhov 09/17/24
39954002
n = n+1
3996-
mass_seas=mass_seas+seasfrc_goc8bin(n,isize)*chem(i,k,j,m)
4003+
mass_seas=mass_seas+seasfrc_goc9bin(n,isize)*chem(i,k,j,m)
39974004
end do
39984005
n = 0
39994006
mass_soil = 0.0
4000-
do m =p_dust_1, p_dust_1+ndust-2 ! loop over dust size bins less than 10 um diam
4007+
do m =p_dust_1, p_dust_5 ! loop over dust size bins less than 20 um. A. Ukhov 09/17/24
40014008
n = n+1
4002-
mass_soil=mass_soil+dustfrc_goc8bin(n,isize)*chem(i,k,j,m)
4009+
mass_soil=mass_soil+dustfrc_goc9bin(n,isize)*chem(i,k,j,m)
40034010
end do
40044011
mass_cl=mass_seas*conv1a*35.4530/58.4428
40054012
mass_na=mass_seas*conv1a*22.9898/58.4428

chem/optical_driver.F

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,19 @@ SUBROUTINE optical_driver(id,curr_secs,dtstep,config_flags,haveaer,&
143143
!
144144
select case (config_flags%chem_opt)
145145
case ( RADM2SORG, RACM_ESRLSORG_KPP, RADM2SORG_KPP, RADM2SORG_AQ, RADM2SORG_AQCHEM, &
146-
GOCARTRACM_KPP, GOCARTRADM2, &
147-
GOCART_SIMPLE, RACMSORG_KPP, RACMSORG_AQ, RACMSORG_AQCHEM_KPP, &
146+
! A. Ukhov 09/17/24
147+
!GOCARTRACM_KPP, GOCARTRADM2, GOCART_SIMPLE, MOZCART_KPP, &
148+
RACMSORG_KPP, RACMSORG_AQ, RACMSORG_AQCHEM_KPP, &
148149
RACM_ESRLSORG_AQCHEM_KPP, RACM_SOA_VBS_KPP, RACM_SOA_VBS_AQCHEM_KPP, &
149-
RACM_SOA_VBS_HET_KPP, CBMZSORG, CBMZSORG_AQ, MOZCART_KPP, T1_MOZCART_KPP, &
150+
RACM_SOA_VBS_HET_KPP, CBMZSORG, CBMZSORG_AQ, & !T1_MOZCART_KPP, &
150151
CBMZ_CAM_MAM3_NOAQ, CBMZ_CAM_MAM7_NOAQ, CBMZ_CAM_MAM3_AQ, CBMZ_CAM_MAM7_AQ, &
151152
CB05_SORG_AQ_KPP, CB05_SORG_VBS_AQ_KPP )
152153
nbin_o = 8
154+
155+
! A. Ukhov 09/17/24
156+
case (GOCARTRACM_KPP,GOCARTRADM2,GOCART_SIMPLE,MOZCART_KPP,T1_MOZCART_KPP)
157+
nbin_o = 9
158+
153159
case (CBMZ_MOSAIC_4BIN, CBMZ_MOSAIC_8BIN, CBMZ_MOSAIC_KPP, &
154160
CBMZ_MOSAIC_4BIN_AQ, CBMZ_MOSAIC_8BIN_AQ, &
155161
CBMZ_MOSAIC_DMS_4BIN, CBMZ_MOSAIC_DMS_8BIN, &

0 commit comments

Comments
 (0)