Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

[Two questions] Discrepency in PM2.5 output + Hygroscopic growth of particles

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.

cycy1320

New member
Dear All,

I am using WRF-Chem to simulate air pollution episodes, and recently meet two questions that confusing me.
I use the CBMZ-MOSAIC scheme (chem_opt = 10 or 7) to simulate aerosols.
In the wrfout files, 'PM2_5_DRY' gives values of dry PM2.5 mass concentration, and 'no3_a', 'oc_a', 'bc_a', 'so4_a', 'cl_a', 'na_a', 'nh4_a', 'oin_a' give values of concentrations of different species, and 'water_a' gives concentrations of aerosols water.


However, my confuses are:
1) Why I find a big discrepency between PM2_5_DRY and sum('no3_a', 'oc_a', 'bc_a', 'so4_a', 'cl_a', 'na_a', 'nh4_a', 'oin_a', according to size of 2.5 um), with factors of 2-10 ?
Does anyone know what is the other species included in PM2_5_DRY, which make it so much larger? Or, the reason of this discrepency.
And should we use the sum of species of directly use PM2_5_DRY to compare with observations, pls also provide the reasons?
2) Aerosol water is also calculate in the model and output as 'water_a'. I am wondering how is the aerosol water calculate in WRF-Chem? I can not find references in the manual. Does anyone have a clue?

Thank you very much!
Cheers,
Ying Chen
Lancaster Uni.
 
Hi Ying,

For the calculation of PM25 in MOSAIC, see lines 165–244 of module_mosaic_sumpm.F, which shows the 80 components that are included in PM2.5_DRY.

mass = chem(i,k,j,lptr_so4_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_no3_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_cl_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_nh4_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_na_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_oin_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_oc_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_bc_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg1_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg2_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg3_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg4_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg5_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg6_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg7_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg1_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg2_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg3_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg4_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg5_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg6_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg7_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg1_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg2_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg3_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg4_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg5_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg6_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg7_b_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg1_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg2_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg3_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg4_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg5_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg6_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg7_b_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg1_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg2_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg3_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg4_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg5_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg6_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg7_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg1_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg2_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg3_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg4_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg5_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg6_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_pcg7_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg1_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg2_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg3_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg4_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg5_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg6_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg7_f_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg1_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg2_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg3_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg4_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg5_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg6_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_opcg7_f_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_ant1_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_ant2_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_ant3_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_ant4_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_ant1_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_ant2_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_ant3_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_ant4_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_biog1_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_biog2_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_biog3_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_biog4_c_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_biog1_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_biog2_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_biog3_o_aer(n,itype,iphase)) &
+ chem(i,k,j,lptr_biog4_o_aer(n,itype,iphase))


From the MOSAIC documentation paper (Zaveri et al., 2008): Aerosol water content is calculated using the Zdanovskii-Stokes-Robinson (ZSR) method [Zdanovskii, 1948;Stokes and Robinson, 1966].

The code can be found on lines 16210–16277 of module_mosaic_therm.F

!----------------------------------------------------------
! zsr method
!
! RAZ 5/21/2014: Included organics, oin, and bc in water absorption (but does not include organic-inorganic interactions)
!
real(kind=8) function aerosol_water(jp,ibin) ! kg (water)/m^3 (air)
! implicit none
! include 'mosaic.h'
! subr. arguments
integer jp, ibin
! local variables
integer ja, je
real(kind=8) dum, tmpa
! function
! real(kind=8) bin_molality


dum = 0.0
do je = 1, (nsalt+4) ! include hno3 and hcl in water calculation
dum = dum + electrolyte(je,jp,ibin)/bin_molality(je,ibin)
enddo

if (mwater_kappa_nonelectro > 0) then
tmpa = 0.0
do ja = 1, naer
if (kappa_nonelectro(ja) > 0.0) then
tmpa = tmpa + (aer(ja,jtotal,ibin)*mw_aer_mac(ja)/dens_aer_mac(ja))*kappa_nonelectro(ja)
end if
end do
dum = dum + 1.0e-3*tmpa*aH2O_a(ibin)/(1.0-aH2O_a(ibin))
end if

aerosol_water = dum*1.e-9 ! kg(water)/m^3(air)

if(aerosol_water .le. 0.0)then
if (iprint_mosaic_diag1 .gt. 0) then
write(6,*)'mosaic aerosol_water - water .le. 0'
write(6,*)'iclm jclm ibin jp = ', &
iclm_aer, jclm_aer, ibin, jp
write(6,*)'ah2o, water = ', ah2o, aerosol_water
write(6,*)'dry mass = ', mass_dry_a(ibin)
write(6,*)'soluble mass = ', mass_soluble_a(ibin)
write(6,*)'number = ', num_a(ibin)
do je = 1, nsoluble
write(6,44)ename(je), electrolyte(je,jp,ibin)
enddo
write(6,*)'error in water calculation'
write(6,*)'ibin = ', ibin
write(6,*)'water content cannot be negative or zero'
write(6,*)'setting jaerosolstate to all_solid'
endif

call print_input

jaerosolstate(ibin) = all_solid
jphase(ibin) = jsolid
jhyst_leg(ibin) = jhyst_lo

!c write(6,*)'stopping execution in function aerosol_water'
!c stop
endif

44 format(a7, 2x, e11.3)


return
end function aerosol_water
!----------------------------------------------------------

My advice would be to stick with the PM25 diagnostic and not try to sum them yourself. Hope this helps.

Cheers,

Jordan
 
Top