Get the CESM code with MOSAIC implemented
You can get the CESM source code with MOSAIC by:
git clone https://github.com/ESCOMP/CAM -b zz_cam6_3_018_mosaic_branch
CESM tutorials should be helpful if you are not familiar with CESM/CAM-chem, and how to set up a case from the code.
Change env_build.xml
Once you set up your case from the code through create_newcase, 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" to your file path.
The mechanism file is available to download here: 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.
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.
- You should use "MAM4" to use MOSAIC at this moment, since some parts of the code were hard coded to MAM4 (MAM3 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.