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