Jump to: navigation, search


These packages contain scripts, inventories, and ancillary files related to the 2011eh_cb05_v6_11g, 2011eh_cb6v2_v6_11g, 2017eh_cb6v2_v6_11g, and 2025eh_cb6v2_v6_11g cases, which serve as the basis for EPA's 2011v6.2 platform for air quality modeling. This platform will be used for assessing ozone transport within the continential U.S. and for other studies.

CMAQ and CAMx model-ready emissions generated using these packages with SMOKE v3.6 should be identical to those used in EPA's 2011v6.2 platform. However, there may be emissions differences resulting from differences in the Linux operating system, hardware platform, and other system-specific differences.

Additional information on the 2011v6.2 platform is available here:

  • The data files are divided into several directories:
    • - 2011emissions contains emission inventories for the year 2011, including national CEMS emissions, nonroad inventories and onroad activity data, and point and nonpoint inventories
    • - 2017emissions contains emissions inventories for the year 2017
    • - 2025emissions contains emissions inventories for the year 2025
    • - ancillary_inputs contains general ancillary files (ge_dat), including those related to speciation, spatial allocation (gridding) and temporalization
    • - ocean_chlorine contains a gridded ocean chlorine emissions file which is included in the final model-ready emissions
    • - smoke_scripts_utils contains scripts to run SMOKE and utility programs
    • - spatial_surrogates contains 12km, 36km, and 4km spatial surrogates
  • Modeling sectors used in the platform are described below.
  • Inventory files and descriptions are provided below.
  • Ancillary (non-inventory) files and their descriptions are provided below.

Requirements for processing emissions for air quality modeling

If you are only reviewing inventories and not developing emissions for air quality modeling, you do not need to install SMOKE or to follow the instructions below. Instead, unzip the files with the data of interest and examine those and the corresponding reports that are provided.

If you plan to develop emissions for air quality modeling, SMOKE v3.6 is REQUIRED to process this case. SMOKE v3.6 uses a new temporal profile and cross-reference format, and the profiles and cross-references included in this package are not compatible with older versions of SMOKE. In addition, bug fixes and new features were implemented between SMOKE v3.5 and SMOKE v3.6, including compatibility with MOVES2014 for mobile emissions.

Python: We also recommend (if not require) python version 2.6 or later, along with select python libraries. Many of the helper scripts included in this package use python. The python scripts within this package reference '#!/usr/bin/env python' or '#!/usr/bin/env python2.6'; you may need to change this on your computing platform.

Description of packages

Inventory Packages

Base Year Inventory Packages

Inventories for both 2011eh cases are included in the following files, all of which should be unpackaged in INSTALL_DIR. All inventories are unzipped to the "2011eh_cb05_v6_11g/inputs" directory, but the same inventories are shared by both 2011eh_cb05_v6_11g and 2011eh_cb6v2_v6_11g.

Biogenics Package
The "biogenics" package includes gridded land use, BIOSEASON, and biogenic emission factor files for input to BEIS 3.6.1. The latest version of BEIS uses different land use and emission factor inputs compared to prior versions, such as BEIS 3.14. This package also includes a b3grd file for 12US2. This file is output by the Normbeis program, and is included in the package for those people who do not wish to run Normbeis and generate their own b3grd using the provided land use and emission factor files. This b3grd file is not speciation-specific and can be used with both CB05 and CB6.

  • Zip File: 2011emissions/

CEM Package
The "cem" package includes the hourly CEM (Continuous Emissions Monitoring) emissions used by the ptegu sector. This is the same data as is available on EPA's Air Markets Program Data website (, except that we've split the data into months and days as needed for our scripts.

  • 2011emissions/

NONPT Package
The "inputs_nonpt" package includes inventories for the following sectors: afdust, ag, agfire, c1c2rail, c3marine, nonpt, np_oilgas, rwc.

  • Zip File: 2011emissions/

The two "inputs_nonroad" packages include the inventories for the nonroad sector. It was split into two .zips in order to reduce the size of each individual .zip. The "part1" zip includes all states from Alabama to Missouri, alphabetically, except for California (FIPS 01 through 29, except 06). The "part2" zip includes all states from Montana to Wyoming, alphabetically, and also California (FIPS 30 through 56, plus 06). Part 2 also includes Puerto Rico and U.S. Virgin Islands. For 2017 nonroad, there is only one inventory .zip which includes all states. The 2017 nonroad inventory does not contain all of the extra toxic pollutants, and so the inventory is smaller, making it unnecessary to split it into two parts.

  • Zip File: 2011emissions/
  • Zip File: 2011emissions/

The "inputs_onroad" package includes the activity data for the onroad and onroad_ca_adj sectors. It does not include the emission factor tables also required to run SMOKE-MOVES; these are not stored on the FTP site due to their large size and instead are furnished upon request. CB05 and CB6 each have a separate set of emission factor tables.

  • Zip File: 2011emissions/

The "inputs_oth" package includes the inventories for Canada, Mexico, and offshore emissions. These are used by the othafdust, othar, othon, and othpt sectors.

  • Zip File: 2011emissions/

The "inputs_point" package includes the inventories for the following sectors:ptnonipm, ptegu, pt_oilgas.

  • Zip File: 2011emissions/

The "inputs_ptfire" package includes the inventories for the total ptfire sector, and the separate ptprescfire3D and ptwildfire3D sectors.

  • Zip File: 2011emissions/

All of the "inputs" packages also include sample list (.lst) files, which list the inventories used by each sector. The run scripts automatically create new .lst files with the correct paths, so there is no need to edit these unless you are running SMOKE with your own scripts.

Future Year Inventory Packages

The 2017emissions and 2025emissions directories contain the corresponding inventories for the 2017eh_cb6v2_v6_11g and 2025eh_cb6v2_v6_11g cases, respectively. As with the scripts, inventories for sectors that are carried over from 2011 for the future year cases - agfire, beis, othafdust, and all ptfire - are not provided separately in the 2017 and 2025 inventory packages; they must be downloaded from 2011emissions.

See section 4 for a description of each modeling sector.

Ancillary file packages

These packages contain input files that are shared between sectors. The following packages should be unpacked in INSTALL_DIR:

  • ancillary_inputs/
  • ancillary_inputs/
  • ancillary_inputs/ (if running CB05)
  • ancillary_inputs/ (if running CB6)
  • ancillary_inputs/
  • spatial_surrogates/
  • spatial_surrogates/

The "surrogates" packages contain the gridding surrogates for 12US2, for US and Canada+Mexico. Surrogates for 36km (36US1) and 4km are also provided for the US only in the spatial_surrogates directory.

The "gridding" package includes all SMOKE inputs related to gridding other than the spatial surrogates, including cross-references, surrogate descriptions, and gridded transportable fractions used in afdust_adj and othafdust_adj.

The "speciation" packages include speciation profiles, cross-references, and VOC-to-TOG conversion factors. Separate .zips are provided for CB05 and CB6.

Additional speciation .zips are also provided for CB05 w/toxics (consistent with NATA) and SAPRC07TB. The toxics .zip includes speciation profiles for mercury, metals such as chromium and nickel, xylenes, and other HAPs. There are three "toxics" GSREFs in this .zip: one for ptegu, one for c1c2rail/c3marine/nonroad, and one for other toxics sectors. (Ag and othar are not toxics sectors and should continue to use their own GSREF, which is also provided in this .zip.)

These two additional speciation .zips, in particular the SAPRC07TB .zip, are provided on an as-is basis and do not include all of the speciation profiles needed in order to process the entire 2011v6.2 platform. In addition, we do not have onroad (SMOKE-MOVES) emission factor tables for SAPRC07TB, or for additional HAPs such as mercury, for the 2011eh, 2017eh, or 2025eh cases. Since the future year cases were only run with CB6 speciation, only the CB6 speciation package contains any speciation-related ancillary files needed for 2017 or 2025.

The "temporal" package includes temporal profiles and cross-references, including daily and hourly temporal profiles developed by the SMOKE program Gentpro for use in the rwc and ag sectors, respectively.

The "other" ge_dat package includes all other SMOKE ancillary files not included in the above packages, including:

- Inventory tables (INVTABLE)

- Lists of sources to exclude from CAP/HAP integration (NHAPEXCLUDE)

- SMOKE-MOVES ancillary files, including the reference county (MCXREF) and fuel month (MFMREF) cross-references, pollutant (MEPROC) and emission factor table (MRCLIST) lists, activity SCC to full SCC cross-references (SCCXREF), hourly speed profiles (SPDPRO), daily temperature data (METMOVES), and control factors for onroad_ca_adj and Colorado gasoline refueling (CFPRO)


- Smkreport configuration files (REPCONFIG, all in ge_dat/repconfig/default)

The run scripts (see section 7) are already set up to use the proper ancillary files and inventories for each sector and speciation.

Run Script packages

For 2011, these three run script packages should be unpacked in INSTALL_DIR:

  • smoke_scripts_utils/
  • smoke_scripts_utils/
  • smoke_scripts_utils/

For 2017 and 2025, there are two additional script packages:

  • smoke_scripts_utils/
  • smoke_scripts_utils/

The helper_scripts package includes scripts which are called by the primary run scripts. You should not have to run any of these scripts directly.

The 2011eh scripts packages include the scripts that you run directly in order to replicate our emissions. Separate script(s) are provided for each sector, and the CB05 and CB6 scripts are in separate .zips. Scripts for sectors which do not have any VOC emissions - afdust, ag, and othafdust - are identical between the two 2011eh .zips. The scripts are unpacked to INSTALL_DIR/$CASE/scripts/.

See section 4 for information pertinent to each sector. In general, you edit the INSTALL_DIR and MET_ROOT, and then run.

  • For afdust sectors, run afdust/othafdust first, then afdust_adj/othafdust_adj.
  • For point sectors, run "onetime" first, and then "daily".
  • For onroad sectors, run RPV/RPD/RPH/RPP first, then the merge.
  • For CAMx conversion scripts, see the section below.

Other packages

ocean_chlorine/ This package contains gridded ocean chlorine emissions, which are included in the sector merge. Unzip in INSTALL_DIR.

Installation of data files and scripts

Choose an install directory on your system; we will refer to this directory as "INSTALL_DIR" or "SMK_HOME". To review/reproduce emissions for all sectors, unzip all the .zip files into INSTALL_DIR. The packages have subdirectories embedded within them, so it is important that all files be unpacked in the same place in order for the scripts to run.

If you are only interested in reproducing or examining emissions for specific sectors, you may download and unzip only the data for those sectors from the 2011emissions directory, but for SMOKE processing you should also include the files in the directories: ancillary_inputs, ocean_chlorine, smoke_scripts_utils, and spatial_surrogates for the grid(s) you plan to run.

All SMOKE inventories, scripts, and ancillary files used for the 2011v6.2 platform are provided, except emission factor tables for onroad processing via SMOKE-MOVES. The full set of emission factor tables is too large to permanently store on the FTP server and instead are furnished upon request.

The following are NOT included in the packages:

  • - MCIP meteorology data, which is used for the afdust, onroad, onroad_catx_adj, onroad_rfl, biogenics (beis), and ptfire3D sectors. See MET_ROOT instructions below. The sea salt portion of the CAMx conversion (see section 9) requires CAMx-formatted WRF output, which is also not included in the package.

Prior to running SMOKE, in each run script, you will need to edit the INSTALL_DIR (your install directory) and MET_ROOT (location of MCIP meteorology data) environment variable definitions at the top of the script. The MCIP data should be located in MET_ROOT/12US2/mcip_out/, or MET_ROOT/[grid]/mcip_out/ if processing emissions for a grid other than 12US2. SMOKE only uses the GRIDCRO2D, METCRO2D, and METCRO3D files.

In the ptegu run script, you will also need to edit NAMEBREAK_HOURLY so that it equals the number of underscores in your INSTALL_DIR (the full path), plus 5. Example: if INSTALL_DIR = '/disk/your/home_directory/foo_foo/install_dir', then set NAMEBREAK_HOURLY = 8 (3+5).

Directory Structure

List of Directories (bold) and associated Environment Variables (red font)

All zips are unzipped here.
All of the following environment variables are set equal to INSTALL_DIR: $SMK_HOME, $OUT_ROOT, $PROJECT_ROOT, $DAT_ROOT, $SMK_SUBSYS
Helper scripts which define some environment variables.
Helper scripts which define some environment variables.
Compiled I/O API utilities (m3xtract, juldate, etc).
$IOAPI_LOCATION if defined by user, otherwise $IOAPIDIR as defined by assigns/sysflags
This scripts directory only includes a script called “platform” which defines some environment variables. SMOKE scripts are elsewhere in the structure.
Home of SMOKE executables;
assigns/: Includes ASSIGNS.emf and other helper scripts, which define SMOKE environment variables, directory structures, and so forth. :::$ASSIGNS_FILE = $INSTALL_DIR/$SMK_VERSION/assigns/ASSIGNS.emf
Linux2_x86_64ifort/: Compiled SMOKE executables.
$SMOKE_LOCATION if defined by user, otherwise $SMK_BIN as defined by assigns/sysflags
scripts/: SMOKE run scripts.
afdust_adj/: Scripts for applying transportable fraction and meteorological adjustments to afdust emissions
annual_report/: Scripts for creating annual total reports from daily Smkmerge reports
emf/: EMF helper scripts. These, such as smk_ar_annual_emf.csh, are called by the scripts that are created by the EMF. These scripts themselves call the scripts in run/.
log_analyzer/: The script that scans SMOKE logs for errors or non-routine warnings.
run/: SMOKE run scripts, called by the scripts in scripts/emf. These are the scripts that actually execute SMOKE.
Each emissions case has its own directory within $INSTALL_DIR.
inputs/[sector]/: Each inputs/[sector] directory includes the emissions inventories for that sector.
intermed/[sector]/: All SMOKE outputs are located in intermed/[sector]/, including intermediate files (e.g. Temporal matrices), and sector-specific model-ready emissions (Smkmerge outputs). Does NOT include inline model-ready emissions or stack_groups files.
logs/: SMOKE logs are kept here. Mrggrid logs are in intermed/mrggrid/logs/.
[RPX]/: For SMOKE-MOVES, there is another directory level corresponding to rate-per-distance (RPD), rate-per-hour (RPH), and so on. For example, onroad RPD SMOKE outputs are in intermed/onroad/RPD/.
reports/: SMOKE reports.
annual_report/: Annual post-SMOKE totals derived from Smkmerge reports. These reports are created by the script in scripts/annual_report/.
inv/: All Smkreport output.
log_analyzer/: Reports generated by the log analyzer in scripts/log_analyzer.
mrggrid/: Reports generated by Mrggrid. Also includes post-Mrggrid domain totals, which our scripts generate.
programs/: Includes reports generated by Elevpoint. Also includes post-adjustment afdust reports, generated by the scripts in scripts/afdust_adj/.
smkmerge/[sector]/: Daily Smkmerge reports, with separate directories for each sector. As with intermed/onroad, reports for RPD, RPH, etc are kept in separate directories beneath this level, e.g. smkmerge/onroad/RPD/.
temporal/: Smkreport output for Temporal reports, although we almost never run these reports.
scripts/: Includes the scripts created by the EMF that define all SMOKE inputs and parameters from the EMF case. These scripts each call one EMF helper script in scripts/emf/.
ge_dat/: SMOKE ancillary files. The root ge_dat directory itself includes some files, such as the COSTCY and INVTABLE. There are several subdirectories within ge_dat:
cntlmat/: Control and projection packets used by Cntlmat.
gridding/: Includes AGREF/MGREF, GRIDDESC, and SRGDESC.
surrogates/: Spatial surrogates are kept here.
nhapexclude/: Includes NHAPEXCLUDE files.
onroad/: Includes all ancillary files related to SMOKE-MOVES.
point/: Includes ancillary files related to point source processing, such as the PELVCONFIG.
smk_dates/: Includes files that map calendar dats to representative dates. SMOKE does not actually use these; only our scripts do.
smkreport/: Includes SCC descriptions, NAICS descriptions, etc.
repconfig/: REPCONFIGs are kept in another level below smkreport/.
speciation/: GSPROs, GSREFs, GSCNVs, GSPRO_COMBOs.
[case]/: See spec_parts.
spec_parts/: We keep GSPROs and GSREFs in separate components that are concatentated together by our run scripts. The separate components are in speciation/spec_parts, and the concatenated verisons are in [case]/ (one separate directory per emissions case). The root speciation/ directory typically only includes complete GSPROs/GSREFs, such as those we use in SMOKE-MOVES, and also GSPRO_COMBOs.
temporal/: Temporal profiles and cross-references.
smoke_out/: SMOKE outputs get a separate directory from CMAQ and CAMx outputs.
[case]/: Emissions case name.
[grid]/: Grid name, e.g. 12US2.
[speciation]/: Speciation name, e.g. cmaq_cb6. $OUTPUT = the full path up through [speciation]
This directory level includes the merged 2-D emissions and stack_groups files.
[sector]/: Inline emissions files are in separate subdirectories by sector.

Image of Directory Structure

Directories new html.jpg

Case descriptions

Base Year Cases

2011eh_cb05_v6_11g and 2011eh_cb6v2_v6_11g emissions were processed for a 12km national grid ($grid = 12US2). The differences between the two cases are:


  • - 2011eh_cb05 uses CB05 speciation


  • - 2011eh_cb6v2 uses CB6 speciation. The 'v2' part of 'cb6v2' refers to a newer version of the CB6 speciation.
  • - The cb6v2 case also includes an update affecting onroad rate-per-hour (RPH) emissions that was not included in the cb05 case.

Future Year Cases

Emissions are also provided for two future year scenarios: The future year scenarios were only run with CB6 speciation. To run the future year cases with CB05 speciation, use the GSPROs from the CB05 speciation package combined with the GSREFs for future year processing from the CB6 speciation package. (GSPROs are different for CB05 versus CB6, but GSREFs are not.) CB05 onroad emission factor tables for the future years are also available upon request.


2017 CB6 Speciation Case

CFPRO for 2017eh

The 2017eh case includes additional CFPRO files, which adjust emissions output by SMOKE-MOVES. For this case, the purpose of the CFPRO is to approximate 2017 emissions values using 2018 activity and 2018 emission factors.

The 2017eh case was originally run with an older version of SMOKE 3.6 that did not support hierarchy in the CFPRO - for example, one could not combine a state-level factor with county-level factors, where county would take precedence over state. This meant the CFPROs had to be extremely large. After 2017eh was run, SMOKE 3.7 was released, which supports CFPRO hierarchy. The tradeoff of this new feature, however, is runtime, particularly when reusing the large CFPROs originally developed for 2017eh.

So for this package, as of October 2015, the 2017eh CFPROs were redone to take advantage of SMOKE's new CFPRO hierarchy feature. The result is significantly smaller CFPROs, and also more manageable runtimes.

One caveat: The original 2017eh CFPROs were incorrect in a few counties in Colorado. This has been fixed in the new 2017eh CFPROs, so emissions generated using these CFPROs will not be identical to EPA's 2017eh run in parts of Colorado. The Colorado counties affected by this are: 08014, 08015, 08027, 08033, 08053, 08057, 08065, 08067, 08083, 08091, 08093, 08097, 08103, 08111, 08113, 08117, 08119. Also, the results will only be different in RPD, RPV, and RPH - not RPP.


2025 CB6 Speciation Case

Supported Air Quality Models

Furthermore, emissions were processed for two air quality models: CMAQ and CAMx.


SMOKE outputs are "CMAQ-ready" as-is. After all CMAQ-ready emissions are processed, they are converted to CAMx by a standalone converter. This converter is included in the package and is described in section 9.


The 2017 and 2025 cases were run only for CAMx and not for CMAQ modeling. Creating CMAQ-ready emissions is an intermediate step in creating CAMx-ready emissions; however, the current version of CMAQ (as of 16 Jul 2015) only supports CB05 speciation, not the CB6 speciation that was used in our future year modeling. See the previous paragraph for information on processing the future year cases with CB05 speciation.

Emissions processing is split into "sectors". Each sector has its own run scripts for processing, with one (or more) run scripts per case. (See the next section for information about the run script zips.)

Run instructions for each sector

How to run individual SMOKE Sectors

All sectors are US-only unless otherwise listed as other or "OTH" in the sector name.
All of the run scripts are found under the $INSTALL_DIR/$CASE/$SCRIPTS directory.
The naming convention for the run scripts is the following:
To list all run scripts that are that are available for a sector use the unix command:
ls *[sector]*.csh
For example the following command will list all of the scripts associated with the ptfire sector.
ls *ptfire*.csh

  • Annual_ptfire_inline_daily_12US2_2011eh_cb6v2_v6_11g.csh
  • Annual_ptfire_inline_onetime_12US2_2011eh_cb6v2_v6_11g.csh

The sectors are described here:


All 'Point' sectors are processed via two scripts: the 'onetime' script, and the 'daily' script. The point sector run script names will have the sector name and the process (daily or onetime) included in the name. For example for the PTNONIPM Sector there are two scripts: Annual_ptnonipm_onetime_12US2_2011eh_cb6v2_v6_11g.csh and Annual_ptnonipm_daily_12US2_2011eh_cb6v2_v6_11g.csh. The order of how the process scripts are run is important, the 'onetime' script must be run prior to the daily script(s).

  • PTEGU: Electric generating unit emissions. This sector incorporates CEM (Continuous Emissions Monitoring) hourly emissions for a majority of sources. This sector was called "ptipm" in the 2007v5 platform. In the 2011v6 platform, this sector was split into two sectors - ptegu and ptegu_pk - but for 2011v6.2, there is no longer a separate sector for peaking. For ptegu there are two 'daily' scripts for different months of the year: 'summer' (May through September), and 'winter' (October through April). For sources without hourly CEM emissions, summer and winter use different hourly temporalization, and so they are run with separate inputs. You may need to change the NAMEBREAK_HOURLY setting in the run scripts, as described in the run script comments, and in section 3 of this readme.
  • PTNONIPM: Point source emissions from industrial activities.
  • PTFIRE: Point source emissions from year specific controlled burning and wild fires. For this sector (as opposed to ptprescfire3D and ptwildfire3D), fires are processed in the 'inline' format for CMAQ, and are all elevated (no low-level contribution). These inline fire emission files are only needed by CMAQ, not CAMx, so if you are not running CMAQ, you can omit this sector and only run ptprescfire3D and ptwildfire3D.
  • PTPRESCFIRE3D and PTWILDFIRE3D: Same as ptfire, except instead of processing emissions as 'inline', 3-D layered emissions files are produced, using meteorology data and the SMOKE Laypoint program to calculate plume rise. Fire emissions are output into one of Z vertical layers, where Z = the number of layers in your MCIP data. The number of layers is defined in the run script by the parameter SMK_EMLAYS; for us, this was equal to 25. These 3-D ptfire emissions files are only needed by CAMx, not CMAQ, so if you are not running CAMx, you can omit this sector and only run ptfire. For CAMx, the ptfire sector was split into ptprescfire3D (prescribed burning) and ptwildfire3D (wildfires) to support future source apportionment modeling. The current version of CMAQ does not support multiple ptfire sectors, however, so for CMAQ (inline), ptfire must remain as a single sector. This is a 'point' sector, and like all 'point' sectors, is processed via two scripts: the 'onetime' script, and the 'daily' script. The 'onetime' script must be run first.
  • PT_OILGAS: Point source oil and gas emissions.
  • OTHPT: Point source emissions from Canada, Mexico, and offshore areas. Includes all offshore c3 commercial marine emissions, which were part of the c3marine sector in the 2007v5 and prior platforms. All emissions in this sector are elevated (no low-level contribution).


For onroad sectors, run RPV/RPD/RPH/RPP first, then the merge.

  • ONROAD: On highway mobile source emissions, excluding California. This sector is processed using SMOKE-MOVES with multiple scripts as described in detail in the Notes regarding onroad section below.
  • ONROAD_CA_ADJ: On highway mobile source emissions, California only. This sector is processed using SMOKE-MOVES with multiple scripts as described in section 4B. The onroad sector configuration is different in 2011v6.2 compared to 2011v6; the changes are described in detail below.
Notes regarding onroad

Onroad mobile emissions are processed using SMOKE-MOVES. The processing is split into multiple run scripts. In the 2011v6.2 platform, SMOKE-MOVES inputs were prepared using the latest version of MOVES: MOVES2014. This update introduces several changes to the mobile emissions modeling process.

As described in the SMOKE online documentation, SMOKE-MOVES handles onroad mobile emissions separately for FOUR types of processes (up from three in prior versions of SMOKE-MOVES): - On-network emissions (RatePerDistance, or RPD) - Off-network emissions, fuel vapor venting (RatePerProfile, or RPP) - Off-network emissions, extended idling (RatePerHour, or RPH) - Off-network emissions, non-venting, non-extended idle (RatePerVehicle, or RPV)

For each of the two onroad sectors (onroad, onroad_ca_adj), there are separate run scripts for RPD, RPP, RPH, and RPV, plus a merge script that combines emissions from RPD, RPP, RPH, and RPV into a single emissions file per day.

These scripts may take a particularly long time to run, especially RPD. Therefore, consideration should be given to running multiple RPD jobs in parallel, such as one job per quarter.

The reason mobile has been split into two sectors - onroad and onroad_ca_adj - is in order to match SMOKE-MOVES annual emission totals with those provided by California for non-refueling sources. To do this, we split California into a separate sector, and ran SMOKE-MOVES with a control factor file (CFPRO) which nudges the emissions so that the annual totals post-SMOKE-MOVES equal those provided by CARB, at the county/CSCC6 level. (CSCC6 is "comparison SCC6", which serves as a bridge between MOBILE6-style SCCs used byprior versions of SMOKE-MOVES and the new MOVES2014-style SCCs.)

For the onroad sector, a CFPRO is provided in the ancillary_inputs/ package which zeroes out gasoline refueling emissions in 53 Colorado counties. We zero out these emissions in order to prevent a double count with the ptnonipm sector, since that sector includes gasoline refueling emissions in these counties.

  • Nonroad
    • NONROAD: Off highway mobile source emissions.
  • Other Onroad
    • OTHON: Mobile source emissions from Canada and Mexico.


  • BEIS: Biogenic emissions generated using the BEIS model, version 3.6.1.


  • Dust

For Dust sectors, run afdust/othafdust first, then afdust_adj/othafdust_adj.

    • AFDUST: Particulate emissions from fugitive dust sources. This sector is processed in two steps. The first (Annual_afdust_12US2_*) processes the annual inventory, and the second (Annual_afdust_adj_12US2*) applies adjustments - transportable fraction and meteorologically-based - and outputs the adjusted emissions under the sector name "afdust_adj". The afdust scripts must be run in that order.
    • OTHAFDUST: Particulate emissions from fugitive dust sources in Canada. Just like with afdust, this sector is processed in two steps. The first (Annual_othafdust_12US2_*) processes the annual inventory, and the second (Annual_othafdust_adj_12US2*) applies adjustments - transportable fraction and meteorologically-based - and outputs the adjusted emissions under the sector name "othafdust_adj". The othafdust scripts must be run in that order. Fugitive dust emissions in Mexico are included in the othar sector and do not need the same transportable fraction and meteorological adjustments that the Canada fugitive dust emissions in othafdust do.
  • Agriculture
    • AG: Agricultural ammonia emissions.
    • AGFIRE: Agricultural burning emissions. In the 2011v6 platform, these emissions were part of the nonpt sector.
  • Marine and Rail
    • C1C2RAIL: Emissions from C1 and C2 commercial marine sources, including ports and navigable waterways. Includes offshore c1/c2 marine emissions in the Atlantic and Pacific Oceans, and the Gulf of Mexico. Railway emissions are also part of this sector.
    • C3MARINE: Ocean going class 3 marine port and underway emissions within, or close to, the US mainland. (Offshore c3 emissions are in the othpt sector.) Unlike in the 2011v6 platform, this sector is now an 'area' sector using emissions directly from the 2011NEIv2, and the outputs are gridded low-level emissions similar to other 'area' sectors such as nonpt.
  • Nonpoint
    • NONPT: Area source emissions not included in other sectors.
    • NP_OILGAS: Area source oil and gas emissions.
    • RWC: Area source residential wood combustion emissions.

Miscellaneous programs

CAMx conversion

The package smoke_scripts_utils/ contains all scripts and programs needed in order to convert the CMAQ-ready emissions (SMOKE outputs) into emissions inputs for the CAMx air quality model. For 2011, scripts for both CB05 and CB6 are in this package. Scripts are also included for 2017 and 2025 (CB6 only).

The primary run scripts are unpacked to INSTALL_DIR/$CASE/scripts/camx/. The ptprescfire and ptwildfire scripts convert the 3-D gridded SMOKE emissions (ptprescfire3D and ptwildfire3D) to CAMx format and should be run first, regardless of whether you are running a 2011 case or one of the future year cases. Then, the primary camx_convert script should be run, which converts the remaining SMOKE emissions to CAMx cormat, including the outputs from the ptfire scripts. The ptfire conversion is included in separate scripts because this step normally takes longer than the remaining steps. Sea salt emissions are added to the emis2d file in the primary camx_convert script, rather than in an additional script as in prior platforms.

All CAMx-ready files will go to: INSTALL_DIR/$CASE/smoke_out/$CASE/12US2/camx/

FORTRAN programs used by the CAMx converter

The CAMx converter uses several FORTRAN programs. The contains both our compiled FORTRAN executables (which may or may not work on your system), and the original FORTRAN source code and Makefiles, so that you may recompile these helper programs yourself.

The source code is in INSTALL_DIR/camx/src/, and our executables are in INSTALL_DIR/camx/bin/. If you have to recompile the code, this is where the recompiled executables should ultimately go.

Other files used by the CAMx converter

The subdirectories 'dates', 'land', 'seasalt', and 'Species_Mapping_Tables' in INSTALL_DIR/camx/ include other files used by the converter.

The addition of sea salt emissions requires CAMx-formatted meteorological data from WRF. Specifically, this requires a 'met3d' file and a 'met2d' file. Like the MCIP meteorology, these files are not included in the package.


GENTPRO: For those wishing to generate their own meteorology-dependent temporal profiles for residential wood combustion (RWC) or ag livestock ammonia emissions using the SMOKE program Gentpro, sample Gentpro scripts and inputs have been provided in: smoke_scripts_utils/

The scripts in this package are not intended to be "portable"; they are only provided as examples. In addition to scripts - one for RWC, one for ag - two other sample Gentpro input files are provided. The METLIST file lists the MCIP file for each day, including the last day of 2010, and the first two days of 2012. (If MCIP for those days is not available, one could create "fake" MCIP files for those days using m3tshift.) The "RWC county threshold" file lists southern states that have a higher temperature threshold for RWC emissions, for the purposes of estimating when RWC emissions occur. (General idea: someone who lives in a warmer climate is more likely to run his fireplace if it's 55F outside than someone who lives in a colder climate.)

Even though SMOKE 3.6 has a new format for temporal profiles, Gentpro still only supports the OLD format temporal cross-reference (ATREF). An old-format ATREF is included in the package. If using the same inventories as in our packages, the ATREF output by Gentpro should be ignored, and the ATREFs in the packages can be used. You would only replace the profiles output by Gentpro (ATPRO_DAILY and ATPRO_MONTHLY for RWC, ATPRO_HOURLY_NCF for ag).


CEMCorrect: A program is provided which corrects anomalous values in the continuous emissions monitoring (CEM) hourly emissions data available on the CAMD website. The program is available in: smoke_scripts_utils/

This program has already been run on the hourly CEM data provided in these packages.

To adjust settings for each sector run use the following environment variables


Note that the sector run scripts set environment variables and call their respective $SMK_VERSION sector run scripts. For instance the Monthly_nonroad_12US2_2011eh_cb6v2_v6_11g.csh calls the following $SMK_VERSION run script. ./smoke3.6/scripts/emf/smk_ar_monthly_emf.csh The following environment variables are set in the smk_ar_monthly_emf.csh script.

  • RUN_SMKINVEN # Y runs inventory import program
  • RUN_SPCMAT # Y runs speciation matrix program
  • RUN_GRDMAT # Y runs gridding matrix program
  • RUN_TEMPORAL # Y runs temporal allocation program
  • RUN_SMKMERGE # Y runs merge program
  • RUN_SMKREPORT # Y runs reporting for state reports
  • RUN_M3STAT # Y runs the m3stat program on the Smkmerge outputs

      • NOTE I Don't see these environment variables in any of the $SMK_VERSION/scripts/emf/* scripts
        • RUN_LAYPOINT
        • RUN_MOVESMRG
        • RUN_NORMBEIS3
        • RUN_TMPBEIS3


SMOKE-MOVES can be run more efficiently if running more than one day at a time. For example, Movesmrg can create one 7-day emissions file more quickly than it can create seven individual 1-day emissions files. To turn on this feature, use the DAYS_PER_RUN variable, set to the number of days you wish to run in a single Movesmrg instance. The recommended value for DAYS_PER_RUN is 7.

The onroad scripts in the 2025eh scripts .zip include a setting called "DAYS_PER_RUN", set to 1 as the default. The paramater setting can also be added to other onroad scripts.

If DAYS_PER_RUN > 1, after Movesmrg is run, the run scripts will use the I/O API utility m3xtract to split up the multi-day emissions file into single day (25-hour) emissions files.

Multi-day Movesmrg runs will never cross months. For example, if DAYS_PER_RUN = 7, then the last Movesmrg run of January will start on January 29th and end on January 31st (3 days), and the first Movesmrg run of February will start on February 1st and end on February 7th.

Using the multi-day Movesmrg functionality requires multi-day MCIP files. For example, if DAYS_PER_RUN = 7, your METCRO2D files must also be 7 days (169 hours) long. These multi-day MCIP files should be stored in MET_ROOT/[grid]/mcip_out/Xday/, where X = DAYS_PER_RUN (i.e. /7day for DAYS_PER_RUN = 7).

The primary drawback to using this multi-day Movesmrg functionality is an increase in the memory usage.

Merging all Sectors

After all sectors have been processed, the Sector_merge script merges the low-level emissions from all sectors into a single CMAQ-ready emissions file per day.

Merged model-ready emissions will be output to: INSTALL_DIR/$CASE/smoke_out/$CASE/12US2/$SPC/

Inline emissions files will be output to the same directory, except in subdirectories by sector name (e.g. .../$SPC/ptnonipm/).

For the CAMx conversion, see the section on Miscellaneous Programs

Future year scenarios

The future year scenarios, 2017eh_cb6v2_v6_11g and 2025eh_cb6v2_v6_11g, reuse emissions from the 2011eh_cb6v2_v6_11g case for the following sectors: agfire, beis, othafdust, and all ptfire sectors. Scripts for these sectors are not provided in the future year script packages; they must be run under the 2011eh_cb6v2_v6_11g case.

Testing Procedure