Tagged CO is useful for tracing specific emissions in CAM-chem. Below describes how to set-up a tagged run, the process is similar to updating gas phase chemistry.


(1) Add to the chemical mechanism

Set-up and build model as usual to get the default chemical mechanism for the compset you plan to use. After step (C) of building the executable, copy a version of the default chemical mechanism from CaseDocs/chem_mech.in to my_mech.in within the case directory and edit to add the CO tags. 

CAM-chem includes the code to treat CO tags with species names CO01, CO02, CO03, ... CO42 just like CO (reaction rate with OH and dry deposition).  Note that Wet Deposition of CO was introduced in CESM2.2, but the wet dep of the CO tags has not yet been implemented. 

> cp /glade/p/work/${USER}/cases/${case}/CaseDocs/chem_mech.in /glade/p/work/${USER}/cases/${case}/my_mech.in

  • Add CO, and tags (e.g. CO01 -> CO, CO02 -> CO etc.) under “Solution”. Note: CO tags must be numbered as in the example, a set of specific tag names are “expected” by CAM-chem.
  • Add CO and tags to “Solution Classes”, under “Implicit”

*** Be sure to add new reactions after the normal CO mechanism, otherwise a segmentation fault occurs ***

 CO01 -> CO
End Solution


[usr_CO_OH_b]    CO + OH -> CO2 + H    
[CO_OH_M]        CO + OH + M -> CO2 + HO2 + M  ; 5.90e-33, 1.4, 1.10e-12, -1.3, 0.6
Add in tagged reactions, e.g:
[usr_CO01_OH]  CO01 + OH -> OH
[CO01_OH_M]    CO01 + OH + M -> OH + M     ; 5.90e-33, 1.4, 1.10e-12, -1.3, 0.6


Dry Deposition: The dry deposition velocity of CO tags (CO01 - CO42) is assigned to CO deposition velocity in ./components/cam/src/chemistry/mozart/mo_drydep,.F90.  You will need to add the CO tags to the drydep namelist at run time. 

(1.b) Tracers with fixed lifetime

Alternatively you can add tracers with any name with a fixed lifetime if you do not care about them being treated exactly as CO.

For example, to have a tracer with a 15-day lifetime you can add to the mechanism something like:

 [CO_EAS_tau]       CO_EAS  ->                ; 7.72e-07

Then you do not need to worry about OH reaction rates, or deposition.

(2) Tell the model to read in the new mechanism file

Change in env_build.xml

> ./xmlchange CAM_CONFIG_OPTS='-phys cam4 -chem trop_bam -offline_dyn -nlev 56 -usr_mech_infile ${caseroot}/my_mech.in'

(3) Create tagged emission input files if required

(4) Describe tag sources

Define namelist variable in usr_nl_cam to define where tags will find sources of the emission:

Either from emission files

srf_emis_specifier = 'CO01 -> /glade/p/work/buchholz/emis/qfed_finn_2000_2014/qfed.emis_CO_1.9x2.5_mol_2000_2014_AUS.nc'
srf_emis_specifier = 'CO02 -> /glade/p/work/buchholz/emis/qfed_finn_2000_2014/qfed.emis_CO_1.9x2.5_mol_2000_2014_NAM.nc'

Or from biogenic emissions

megan_factors_file = '/glade/p/cesm/cseg/inputdata/atm/cam/chem/trop_mozart/emis/megan21_emis_factors_c20130304.nc'
megan_mapped_emisfctrs = .false.
megan_specifier = 'CO = carbon_monoxide', 'CO02 = carbon_monoxide'

Or alter the chemistry mechanism file, my_mech.in, to include a source from chemistry. For example methane oxidation results in CO approximately 86% of the time:

CH4 + OH -> 0.86*COme

(5) Add emissions and deposition diagnostics to the history files

In user_nl_cam, add to fincl* lists, for example:

SFCO01, DV_CO01, DF_CO01, ...

(6) Re-compile the setup and build

>./case.build --clean-all
>qcmd -- ./case.build

Then you are ready to run (step D in running the model).


Using the simple chemistry in CAM and prescribing oxidants from a previous full chemistry run enables sensitivity tests of different processes, such as using constant emissions with changing dynamics.

(1) Create input

Save constant-year fields from a full-chemistry run: O3, OH, NO3, HO2. Also, save the chemically produced CO and MEGAN emissions from the full chemistry run. Use netCDF operator to create a single year oxidants file from the history files of a full chemistry run.

> ncrcat -v date,datesec,P0,PS,hyam,hybm,hyai,hybi,OH,O3,HO2,NO3,CO_CHMP,MEG_CO *h0*2005* oxidants_2005.nc
> mv oxidants_2005.nc /glade/p/work/${USER}/emis/prescribed_fields

(2) Set up the model to run CAM with simple chemistry.

Required compset with specified dynamics: FHIST

Set-up and build model as usual to get the default chemical mechanism.

(3) Specify emissions and oxidant files

Emissions: Add emission files for CB1, CB2, CO, OC1, OC2, SO2 as per fullchem, (note can add two files for the same species and emissions will add) e.g.:


srf_emis_specifier     = 'CO -> /glade/p/work/buchholz/emis/qfed_finn_2000_2014/qfed.emis_CO_1.9x2.5_mol_2000_2014.nc'


Set emissions to be cyclic, so interannual concentration changes are only due to dynamics.

srf_emis_type          = 'CYCLICAL'

srf_emis_cycle_yr      = 2005

Prescribed fields: oxidants

tracer_cnst_cycle_yr   = 2005

tracer_cnst_datapath   = '/glade/p/work/${USER}/emis/prescribed_fields'

tracer_cnst_file       = 'oxidants_2005.nc'

tracer_cnst_specifier  = 'O3','OH','NO3','HO2'

tracer_cnst_type       = 'CYCLICAL'

Add prescribed fields: chemically produced CO:

tracer_srcs_cycle_yr   = 2005

tracer_srcs_datapath   = '/glade/p/work/${USER}/emis/prescribed_fields'\

tracer_srcs_file       = 'oxidants_2005.nc'

tracer_srcs_specifier  = 'CO:CO_CHMP', 'CO01:CO_CHMP'

tracer_srcs_type       = 'CYCLICAL'


Surface values - make sure same as full-chemistry simulation and cyclic for the year of interest.


flbc_file = '/glade/p/cesmdata/cseg/inputdata/atm/waccm/lb/LBC_1765-2500_1.9x2.5_CMIP5_RCP45_za_c120127.nc'

flbc_list              = 'CH4', 'CO2', 'N2O','CFC11', 'CFC12'

flbc_type              = 'CYCLICAL'

flbc_cycle_yr          =  2005

scenario_ghg           = 'CHEM_LBC_FILE'


Make sure MEGAN emissions are also the same as full-chemistry simulation (need to update this step)


megan_factors_file = '/glade/p/cesm/cseg/inputdata/atm/cam/chem/trop_mozart/emis/megan21_emis_factors_c20130304.nc'

megan_mapped_emisfctrs = .false.

megan_specifier = 'CO = carbon_monoxide', 'CO02 = carbon_monoxide'


(4) Re-compile the setup and build

>./case.setup --clean
>./case.build --clean
>qcmd -- ./case.build

Then you are ready to run (step D in running the model)

  • No labels