The Model for Simulating Aerosol Interactions and Chemistry (MOSAIC) is a comprehensive aerosol chemistry module designed to dynamically partition H2SO4, MSA, HNO3, HCl, NH3 and secondary organic aerosol (SOA) to different aerosol size bins/modes, driven by particle-phase thermodynamics and heterogeneous chemical reactions (Zaveri et al., JGR, doi:10.1029/2007JD008782, 2008; Zaveri et al., JAMES, doi:10.1029/2020MS002346, 2021).  It has been implemented into CESM2, but is not yet available in the standard code.  A full description of this implementation is in Lu et al., JGR-Atmospheres, doi:10.1029/2021JD034809, 2021).  

Get the CESM code with MOSAIC implemented

You can get the CESM source code with MOSAIC by executing the following commands:

cd your_code_directory
git clone https://github.com/ESCOMP/CAM -b zz_cam6_3_018_mosaic0.3 your_mosaic_directory
cd your_mosaic_directory
./manage_externals/checkout_externals

'your_code_directory' should be a directory in your home or work space where you keep CESM source code.  Replace 'your_mosaic_directory' with an appropriate name that reflects this source code.  

You will get a message "You are in 'detached HEAD' state. ..." which is fine.  The mosaic code is not on the main code trunk.

April 2024: the tag "zz_cam6_3_018_mosaic0.3" includes updates replacing SVN with GIT protocols.

CESM tutorials should be helpful if you are not familiar with CESM/CAM-chem, and how to set up a case from the code.

There is not a compset for the MOSAIC scheme so you must make the changes listed below.  Start with a CAM-chem compset (such as FCnudged).

Create new case

After creating a new case in the usual way (use compset FCnudged), issue the following commands in your new case directory (for running on Derecho):

./xmlchange PIO_STRIDE=1
./xmlchange NTASKS=2048
./case.setup

Change env_build.xml

You need to change a few files to use MOSAIC. 

First one is env_build.xml, you can change the file manually, or do this command

./xmlchange --append CAM_CONFIG_OPTS="-mosaic -usr_mech_infile MOSAIC_MECH_FILE" 

Replace "MOSAIC_MECH_FILE" with the full path to the MOSAIC mechanism file, which you can download here and copy to Derecho (or your HPC): MZ272_TS1.1_simpleVBS_MOSAIC_20210528.in

Change user_nl_cam

You also need to change the user namelist file, to let the model know you simulate additional species. 

1) aer_drydep_list & aer_wetdep_list

&aerosol_nl
 aer_drydep_list                = 'bc_a1', 'bc_a4', 'ca_a1', 'ca_a2', 'ca_a3', 'cl_a1', 'cl_a2', 'cl_a3', 'co3_a1', 'co3_a2',
         'co3_a3', 'dst_a1', 'dst_a2', 'dst_a3', 'na_a1', 'na_a2', 'na_a3', 'nh4_a1', 'nh4_a2', 'nh4_a3',
         'no3_a1', 'no3_a2', 'no3_a3', 'num_a1', 'num_a2', 'num_a3', 'num_a4', 'pom_a1', 'pom_a4', 'so4_a1',
         'so4_a2', 'so4_a3', 'soa1_a1', 'soa1_a2', 'soa2_a1', 'soa2_a2', 'soa3_a1', 'soa3_a2', 'soa4_a1', 'soa4_a2',
         'soa5_a1', 'soa5_a2'
 aer_wetdep_list                = 'bc_a1', 'bc_a4', 'ca_a1', 'ca_a2', 'ca_a3', 'cl_a1', 'cl_a2', 'cl_a3', 'co3_a1', 'co3_a2',
         'co3_a3', 'dst_a1', 'dst_a2', 'dst_a3', 'na_a1', 'na_a2', 'na_a3', 'nh4_a1', 'nh4_a2', 'nh4_a3',
         'no3_a1', 'no3_a2', 'no3_a3', 'num_a1', 'num_a2', 'num_a3', 'num_a4', 'pom_a1', 'pom_a4', 'so4_a1',
         'so4_a2', 'so4_a3', 'soa1_a1', 'soa1_a2', 'soa2_a1', 'soa2_a2', 'soa3_a1', 'soa3_a2', 'soa4_a1', 'soa4_a2',
         'soa5_a1', 'soa5_a2'
/

you can see the additional species compared to the default CAM-chem version, such as 'na_*', 'ca_*', 'cl_*', 'co3_*', 'nh4_*', and 'no3_*'


2) rad_cnst_nl

This change is needed for AOD & RRTMG calculations

&rad_cnst_nl
 mode_defs		= 'mam4_mode1:accum:=',
         'A:num_a1:N:num_c1:num_mr:+',
         'A:so4_a1:N:so4_c1:sulfate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc:+',
         'A:pom_a1:N:pom_c1:p-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocpho_rrtmg_c130709.nc:+',
         'A:soa1_a1:N:soa1_c1:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:soa2_a1:N:soa2_c1:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:soa3_a1:N:soa3_c1:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:soa4_a1:N:soa4_c1:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:soa5_a1:N:soa5_c1:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:bc_a1:N:bc_c1:black-c:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/bcpho_rrtmg_c100508.nc:+',
         'A:dst_a1:N:dst_c1:dust:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:na_a1:N:na_c1:seasalt:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ssam_rrtmg_c100508.nc:+',
         'A:cl_a1:N:cl_c1:chloride:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ssam_rrtmg_c100508.nc:+',
         'A:no3_a1:N:no3_c1:nitrate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc:+',
         'A:ca_a1:N:ca_c1:calcium:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:co3_a1:N:co3_c1:carbonate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:nh4_a1:N:nh4_c1:ammonium:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc',
         'mam4_mode2:aitken:=',
         'A:num_a2:N:num_c2:num_mr:+',
         'A:so4_a2:N:so4_c2:sulfate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc:+',
         'A:soa1_a2:N:soa1_c2:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:soa2_a2:N:soa2_c2:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:soa3_a2:N:soa3_c2:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:soa4_a2:N:soa4_c2:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:soa5_a2:N:soa5_c2:s-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocphi_rrtmg_c100508.nc:+',
         'A:na_a2:N:na_c2:seasalt:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ssam_rrtmg_c100508.nc:+',
         'A:dst_a2:N:dst_c2:dust:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:cl_a2:N:cl_c2:chloride:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ssam_rrtmg_c100508.nc:+',
         'A:co3_a2:N:co3_c2:carbonate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:no3_a2:N:no3_c2:nitrate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc:+',
         'A:ca_a2:N:ca_c2:calcium:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:nh4_a2:N:nh4_c2:ammonium:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc',
         'mam4_mode3:coarse:=',
         'A:num_a3:N:num_c3:num_mr:+',
         'A:dst_a3:N:dst_c3:dust:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:na_a3:N:na_c3:seasalt:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ssam_rrtmg_c100508.nc:+',
         'A:so4_a3:N:so4_c3:sulfate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc:+',
         'A:ca_a3:N:ca_c3:calcium:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:co3_a3:N:co3_c3:carbonate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/dust_aeronet_rrtmg_c141106.nc:+',
         'A:cl_a3:N:cl_c3:chloride:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ssam_rrtmg_c100508.nc:+',
         'A:no3_a3:N:no3_c3:nitrate:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc:+',
         'A:nh4_a3:N:nh4_c3:ammonium:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/sulfate_rrtmg_c080918.nc',
         'mam4_mode4:primary_carbon:=',
         'A:num_a4:N:num_c4:num_mr:+',
         'A:pom_a4:N:pom_c4:p-organic:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/ocpho_rrtmg_c130709.nc:+',
         'A:bc_a4:N:bc_c4:black-c:/glade/p/cesmdata/cseg/inputdata/atm/cam/physprops/bcpho_rrtmg_c100508.nc'
/

Again, you can find newly added species from MOSAIC: 'na_*', 'ca_*', 'cl_*', 'co3_*', 'nh4_*', and 'no3_*'


3) If you want to save these newly added species to the history output files (e.g., *h0*, *h1*, etc.), of course, you need to add these to fincl1, fincl2, etc You will also need to remove the old aerosol species (ncl_*) from the default output. 


Additional information

  • The current CAM-chem/MOSAIC was implemented in CAM6.3.018, which is similar to the CESM2.2 public version but with some minor updates made to CAM. 
  • We have only used it using the "FCnudged" compset. No other compsets have been tested yet. FHIST compset will not work. 
  • You should use "MAM4" to use MOSAIC at this moment, since some parts of the code were hard coded to MAM4 (MAM3, MAM5 and MAM7 are not compatible with MOSAIC). We are hoping that it can be more flexible in the future when MOSAIC is available in the default version.








  • No labels