@@ -207,7 +207,7 @@ subroutine aerosol_optics_cam_init
207207 call addfld (' ABSORB' // diag(ilist), (/ ' lev' / ), ' A' ,' /m' ,&
208208 ' Aerosol absorption, day only' , flag_xyfill= .true. )
209209 call addfld (' AODVIS' // diag(ilist), horiz_only, ' A' ,' ' , &
210- ' Aerosol optical depth 550 nm' , flag_xyfill= .true. )
210+ ' Aerosol optical depth 550 nm, day only ' , flag_xyfill= .true. )
211211 call addfld (' AODVISst' // diag(ilist), horiz_only, ' A' ,' ' , &
212212 ' Stratospheric aerosol optical depth 550 nm, day only' , flag_xyfill= .true. )
213213 call addfld (' AODNIRst' // diag(ilist), horiz_only, ' A' ,' ' , &
@@ -228,33 +228,33 @@ subroutine aerosol_optics_cam_init
228228 ' Aerosol optical depth summed over all sw wavelengths' , flag_xyfill= .true. )
229229
230230 call addfld (' EXTINCTdn' // diag(ilist), (/ ' lev' / ), ' A' ,' /m' ,&
231- ' Aerosol extinction 550 nm, day only ' , flag_xyfill= .true. )
231+ ' Aerosol extinction 550 nm, day night ' , flag_xyfill= .true. )
232232 call addfld (' EXTINCTUVdn' // diag(ilist), (/ ' lev' / ), ' A' ,' /m' ,&
233- ' Aerosol extinction 350 nm, day only ' , flag_xyfill= .true. )
233+ ' Aerosol extinction 350 nm, day night ' , flag_xyfill= .true. )
234234 call addfld (' EXTINCTNIRdn' // diag(ilist), (/ ' lev' / ), ' A' ,' /m' ,&
235- ' Aerosol extinction 1020 nm, day only ' , flag_xyfill= .true. )
235+ ' Aerosol extinction 1020 nm, day night ' , flag_xyfill= .true. )
236236 call addfld (' ABSORBdn' // diag(ilist), (/ ' lev' / ), ' A' ,' /m' ,&
237- ' Aerosol absorption, day only ' , flag_xyfill= .true. )
237+ ' Aerosol absorption, day night ' , flag_xyfill= .true. )
238238 call addfld (' AODVISdn' // diag(ilist), horiz_only, ' A' ,' ' , &
239- ' Aerosol optical depth 550 nm' , flag_xyfill= .true. )
239+ ' Aerosol optical depth 550 nm, day night ' , flag_xyfill= .true. )
240240 call addfld (' AODVISstdn' // diag(ilist), horiz_only, ' A' ,' ' , &
241- ' Stratospheric aerosol optical depth 550 nm, day only ' , flag_xyfill= .true. )
241+ ' Stratospheric aerosol optical depth 550 nm, day night ' , flag_xyfill= .true. )
242242 call addfld (' AODNIRstdn' // diag(ilist), horiz_only, ' A' ,' ' , &
243- ' Stratospheric aerosol optical depth 1020 nm, day only ' , flag_xyfill= .true. )
243+ ' Stratospheric aerosol optical depth 1020 nm, day night ' , flag_xyfill= .true. )
244244 call addfld (' AODUVstdn' // diag(ilist), horiz_only, ' A' ,' ' , &
245- ' Stratospheric aerosol optical depth 350 nm, day only ' , flag_xyfill= .true. )
245+ ' Stratospheric aerosol optical depth 350 nm, day night ' , flag_xyfill= .true. )
246246 call addfld (' AODUVdn' // diag(ilist), horiz_only, ' A' ,' ' , &
247- ' Aerosol optical depth 350 nm, day only ' , flag_xyfill= .true. )
247+ ' Aerosol optical depth 350 nm, day night ' , flag_xyfill= .true. )
248248 call addfld (' AODNIRdn' // diag(ilist), horiz_only, ' A' ,' ' , &
249- ' Aerosol optical depth 1020 nm, day only ' , flag_xyfill= .true. )
249+ ' Aerosol optical depth 1020 nm, day night ' , flag_xyfill= .true. )
250250 call addfld (' AODABSdn' // diag(ilist), horiz_only, ' A' ,' ' , &
251- ' Aerosol absorption optical depth 550 nm, day only ' , flag_xyfill= .true. )
251+ ' Aerosol absorption optical depth 550 nm, day night ' , flag_xyfill= .true. )
252252 call addfld (' AODxASYMdn' // diag(ilist), horiz_only, ' A' ,' ' , &
253- ' Aerosol optical depth 550 * asymmetry factor, day only ' , flag_xyfill= .true. )
253+ ' Aerosol optical depth 550 * asymmetry factor, day night ' , flag_xyfill= .true. )
254254 call addfld (' EXTxASYMdn' // diag(ilist), (/ ' lev' / ), ' A' ,' ' , &
255- ' extinction 550 nm * asymmetry factor, day only ' , flag_xyfill= .true. )
255+ ' extinction 550 nm * asymmetry factor, day night ' , flag_xyfill= .true. )
256256 call addfld (' AODTOTdn' // diag(ilist), horiz_only, ' A' ,' 1' ,&
257- ' Aerosol optical depth summed over all sw wavelengths, day only ' )
257+ ' Aerosol optical depth summed over all sw wavelengths, day night ' )
258258
259259 if (lw10um_indx> 0 ) then
260260 call addfld(' AODABSLW' // diag(ilist), (/ ' lev' / ), ' A' ,' /m' ,&
@@ -822,18 +822,23 @@ subroutine aerosol_optics_cam_sw(list_idx, state, pbuf, nnite, idxnite, tauxar,
822822 dopaer(icol) = pext(icol)* mass(icol,ilev) ! aerosol optical depth of layer ilev
823823
824824 ! dmleung 20 Oct 2025 ++
825- ! added dust asphericity impacts on enhancing dust AOD. Modified after Longlei Li & Natalie Mahowald (Cornell University).
825+ ! added dust asphericity impacts on enhancing dust AOD. Modified after Longlei Li (Cornell University).
826826 ! the theory is that coarse-mode dust is aspherical, with ~30 % enhanced extinction compared with spherical coarse-mode dust.
827- ! ref: Fig. 1d of Jasper F. Kok et al. (2017), Smaller desert dust cooling effect estimated from analysis of dust size and abundance
827+ ! ref: Fig. 1d of Jasper F. Kok et al. (2017),
828+ ! Smaller desert dust cooling effect estimated from analysis of dust size and abundance
828829
829830 call update_diags ! dopaer is updated in update_diags.
830831
831832 ! dmleung: update_diags updated dopaer(icol) as a diagnostic.
832833 ! Aerosol optical and radiative properties are subsequently modified given dopaer update in update_diags.
833- tauxar(icol,ilev,iwav) = tauxar(icol,ilev,iwav) + dopaer(icol) ! aerosol optical depth of layer ilev
834- wa(icol,ilev,iwav) = wa(icol,ilev,iwav) + dopaer(icol)* palb(icol) ! single scattering albedo of layer ilev
835- ga(icol,ilev,iwav) = ga(icol,ilev,iwav) + dopaer(icol)* palb(icol)* pasm(icol) ! asymmetry factor of layer ilev
836- fa(icol,ilev,iwav) = fa(icol,ilev,iwav) + dopaer(icol)* palb(icol)* pasm(icol)* pasm(icol) ! forward scattered fraction of layer ilev
834+ ! To the first-order approximation, palb and pasm (SSA and asymmetry factor) remain roughly the same in the
835+ ! 1-10 um upon introducing asphericity; changes in wa, ga, and fa are thus due to only AOD changes given dust asphericty.
836+ ! ref: Fig. 2a-d of Yue Huang et al. (2023),
837+ ! Single-scattering properties of ellipsoidal dust aerosols constrained by measured dust shape distributions
838+ tauxar(icol,ilev,iwav) = tauxar(icol,ilev,iwav) + dopaer(icol) ! aerosol optical depth at layer ilev
839+ wa(icol,ilev,iwav) = wa(icol,ilev,iwav) + dopaer(icol)* palb(icol) ! single scattering albedo at layer ilev
840+ ga(icol,ilev,iwav) = ga(icol,ilev,iwav) + dopaer(icol)* palb(icol)* pasm(icol) ! asymmetry factor at layer ilev
841+ fa(icol,ilev,iwav) = fa(icol,ilev,iwav) + dopaer(icol)* palb(icol)* pasm(icol)* pasm(icol) ! forward scattered fraction at layer ilev
837842 ! dmleung --
838843
839844 end do column
@@ -1000,7 +1005,6 @@ subroutine update_diags
10001005 ! combine with aspherical dustaod to modify dopaer in aerosol_optics_cam_sw.
10011006 dopaer0(icol) = dopaer0(icol) + dopaer(icol) ! dopaer0 stores total AOD assuming aspherical dust.
10021007 if (modal_active .and. ibin == n_coarse_dust) then ! if MAM and coarse dust mode, scale up dust AOD by 30 %.
1003- ! n_coarse_dust is 3 for MAM4/MAM5, and is 2 for MAM3/MAM7.
10041008 dustaodbin(icol) = dustaodbin(icol) * dustaspherical_opts ! update mode/bin-specific dust AOD
10051009 dustaod(icol) = dustaod0(icol) * dustaspherical_opts ! dustaod is now dust AOD based on aspherical dust
10061010 ! with asphericity effect on thickening AOD.
0 commit comments