4.4.11. Use projection

4.4.11.1. Setup for using growth only
4.4.11.2. Setup for using controls only
4.4.11.3. Setup for both growth and controls

4.4.11.1. Setup for using growth only

The SMOKE growth capability is needed when the inventory year and the modeling year are different. For example, if your base-year inventory is for 2002 and you must evaluate a control strategy in 2010, then you will need to use the SMOKE growth capability.

  1. Create and install growth packet files

    The /PROJECTION/ packet handles the growth from the base year to a future year. This packet is part of the GCNTL file described in Chapter 8, SMOKE Input Files. A packet for each source category that requires growth should be created and saved in a file with the correct name, as described next. Users must ensure that all of the SCCs in the inventory that require growth are included in this packet. Any source that does not match an entry in this file will have a factor of 1 assigned to indicate no change from the base to the future year.

    In the default configuration of SMOKE, a GCNTL file must be created that includes the /PROJECTION/ packet to use SMOKE growth. This file must follow the naming convention gcntl.$YEAR_$FYEAR.txt, where YEAR is set in the Assigns file and FYEAR is set in the script as per Section 4.2.4, “Script settings”.

    The file should be installed in the inventory input directory for the source category to which it applies:

    • Non-point (stationary area) files: $ARDAT directory

    • Nonroad mobile files: $NRDAT directory

    • On-road mobile files: $MBDAT directory

    • Point files: $PTDAT directory

    Please note that these instructions apply to on-road mobile sources in the following ways:

    • Growth of on-road mobile VMT

    • Growth of on-road mobile precomputed emissions

    Creating on-road mobile emission factors is accomplished by changing the FYEAR setting and using the SMK_FUTURE_YN set to Y. This is described also in Section 4.4.12, “Use MOVES for on-road mobile sources” on running SMOKE with MOVES.

  2. Create scripts with correct settings for your particular needs

    To create the scripts with the correct settings, the best starting place is one of the SMOKE example future-year scripts, introduced in Section 4.2.3, “Example script files and their purposes”. These scripts are already setup to run for growth only. To help you understand what the scripts are doing, we have described in the list below the key elements of the script:

    • Uses the base-year Assigns file for the case we are running. The script settings (such as FYEAR and SMK_FUTURE_YN) will adjust what the Assigns file does.

    • FYEAR defined and SMK_FUTURE_YN not defined initially (default is N).

    • Run Cntlmat to create growth matrices only (these scripts do not create control matrices, although that is not normally what users will do in real cases). This program reads the GCNTL file and creates a growth matrix.

    • Run Grwinven to grow base year inventory to future year (no controls).

    • Reset SMK_FUTURE_YN to Y (note: placeholder for resetting SMK_CONTROL_YN is included, but is not set to Y in example script).

    • Source the Assigns file, which will change output directories and file names now that SMK_FUTURE_YN is set to Y. Note that RUN_PART1 is temporarily reset to N in the example script to prevent Assigns file from deleting SMOKE intermediate files.

    • Run Temporal and Smkmerge. The Temporal program will use the grown emissions to create hourly grown emissions. Smkmerge will use these in addition to the base-year gridding matrix and speciation matrix to create future-year model-ready emissions. The base year matrices can be used because they are identical to the future-year ones when SMOKE is used to apply growth.

4.4.11.2. Setup for using controls only

Using controls only in the SMOKE scripts is needed when you import a grown inventory that does not include any or all of the controls that you wish to apply to the inventory. This is what we have assumed in these instructions. We assume that in this case, the growth of the inventory was performed outside of SMOKE, and SMOKE has read in an inventory for the year defined by the FYEAR script setting. This inventory must be imported in a different script that is similar to the base-year script, but follows the instructions for importing future-year inventories in Section 4.4.2.6, “Future-year inventories”.

  1. Determine which control packets you need

    Please refer to the Cntlmat section of Chapter 6, SMOKE Core Programs for a description of what each of the control packets can do and how they interact.

    The available packets are:

    • /MACT/ packet

    • /CONTROL/ packet

    • /EMS_CONTROL/ packet

    • /CTG/ packet

    • /ALLOWABLE/ packet

    • /REACTIVITY/ packet

  2. Create and install control packets file

    The control packets just listed handle the application of controls for a certain future year. These controls can represent the existing controls that must be applied by emission sources so that they will be in compliance with the law. The controls can also represent additional controls that you want to evaluate to see their impact on modeled air quality. Chapter 8, SMOKE Input Files explains these packets and their formats.

    You should create a separate control file for each source category that contains all of the control packets that apply to that source category. Any inventory source and pollutant that does not receive a control is assigned a factor of 1 to indicate no change between the base case and the control case.

    In the default configuration of SMOKE, a GCNTL file must be created that includes the only control packets. This file must follow the naming convention gcntl.$CNTLCASE.txt, where CNTLCASE is set in the script as per Section Section 4.2.4, “Script settings”.

  3. Create scripts with correct settings for your particular needs

    To create the scripts with the correct settings, the best starting place is one of the SMOKE example future-year scripts, introduced in Section 4.2.3, “Example script files and their purposes”. The script must be changed, however, in the following ways to implement control-only. There are two ways to run controls in SMOKE. The first is to apply multiplicative controls using Grwinven and reactivity controls (if needed) with Smkmerge. The second is the apply both multiplicative and reactivity controls using Smkmerge. The following settings must be used for each case:

    • Apply multiplicative controls with Grwinven and reactivity control (if any) with Smkmerge

      • Uses the base-year Assigns file for the case we are running. The script settings (such as FYEAR, CNTLCASE, and SMK_CONTROL_YN) will adjust what the Assigns file does.

      • Set FYEAR = the imported future-year inventory

      • Set SMK_FUTURE_YN = Y on the line after FYEAR. Remove this setting from later in the script (around line 120).

      • Set RUN_CNTLMAT = Y to run Cntlmat to create control matrices only

      • Set RUN_GRWINVEN = Y to run Grwinven to import the control matrices

      • Set RUN_TEMORAL = Y to run Temporal on controlled inventory

      • Set RUN_SMKMERGE = Y to run Smkmerge on controlled inventory

      • Set options for Cntlmat, Grwinven, Temporal, and Smkmerge (see Chapter 6, SMOKE Core Programs).

      • Set SMK_NUM_CTLMAT to 1

        For area or nonroad mobile, set ACMAT01 to $ACMAT

        For on-road mobile, set MCMAT01 to $MCMAT

        For point, set PCMAT01 to $PCMAT

        These settings assume that you are using only one multiplicative control matrix. Grwinven can actually import multiple control matrices from different cases. To use more than one control matrix, set SMK_NUM_CTLMAT to the number of control matrices and set ACMAT02, ACMAT03, etc to the names of the additional control matrices.

      • Set CNTLCASE to the control strategy name that you want for the control case.

      • At line 120 of file, reset SMK_CONTROL_YN to Y

      • To run Smkmerge for reactivity controls, add the MRG_CTLMAT_REAC option to the Smkmerge options and set to “A”, “M”, “P” or some combination of those letters to indicate whether you want it to use the reactivity matrix for area (including nonroad), on-road mobile, or point sources.

    • Apply both multiplicative and reactivity controls with Smkmerge

      • Uses the base-year Assigns file for the case we are running. The script settings (such as FYEAR, CNTLCASE, and SMK_CONTROL_YN) will adjust what the Assigns file does.

      • Set FYEAR = the imported future-year inventory

      • Set SMK_FUTURE_YN = Y on the line after FYEAR. Remove this setting from later in the script (around line 120).

      • Set RUN_CNTLMAT = Y to run Cntlmat to create control matrices only

      • Set RUN_GRWINVEN = N to run Grwinven to import the control matrices

      • Set RUN_TEMORAL = N

      • Set RUN_SMKMERGE = Y to run Smkmerge on controlled inventory

      • Set options for Cntlmat and Smkmerge (see Chapter 6, SMOKE Core Programs).

      • Set CNTLCASE to the control strategy name that you want for the control case.

      • At line 120 of file, reset SMK_CONTROL_YN to N

      • To run Smkmerge for multiplicative controls, add the MRG_CTLMAT_MULT setting to Smkmerge options and set to “A”, “M”, “P” or some combination of those letters to indicate whether you want it to use the multiplicative control matrix for area (including nonroad), on-road mobile, or point sources.

      • To run Smkmerge for reactivity controls, add the MRG_CTLMAT_REAC setting to the Smkmerge options and set to “A”, “M”, “P” or some combination of those letters to indicate whether you want it to use the reactivity control matrix for area (including nonroad), on-road mobile, or point sources.

4.4.11.3. Setup for both growth and controls

Follow the instructions that apply for both of the previous two subsections. The differences between this case and the previous two cases are as follows:

  • Name the GCNTL input file differently. It should be named: gcntl.$YEAR_$FYEAR_$CNTLCASE.txt

  • The Grwinven program must be used at least to grow the inventory, so you must

    • Set RUN_GRWINVEN to Y.

    • Set SMK_NUM_CTLMAT to at least 1. It should be set to the total number of growth and control matrices to be applied by the Grwinven program.

    • The ACMAT01, ACMAT02, etc file names should be set to be consistent with the matrices being applied and the source categories (e.g., ACMAT01 should be $APMAT or $ACMAT, but not $PCMAT, since that would be inconsistent between source categories).