4.2. Cntlmat

4.2.1. Description
4.2.2. Processing Order
4.2.3. Files and Environment Variables

4.2.1. Description

Processing categories: area, mobile, point

The Cntlmat program uses control packets to create a growth matrix, and/or a multiplicative control matrix, and/or a reactivity control matrix. Cntlmat allows seven different control packet types: /MACT/, /CONTROL/, /EMS_CONTROL/, /CTG/, /ALLOWABLE/, /REACTIVITY/, and /PROJECTION/. The format of each packet type is given in Section 6.6.1, “GCNTL: Files for controls and/or past- and future-year growth”.

  • Growth matrix - This contains past- or future-year growth factors for all sources.

  • Multiplicative control matrix - This matrix contains the combination of various types ofcontrols typically used in emissions processing: CTG, MACT, RACT, control efficiency, rule effectiveness, rule penetration, allowable emissions, and caps. The logic used when applying this matrix is described below this bulleted list.

  • Reactivity matrix - This matrix contains the information needed for applying reactivity controls.

4.2.1.1. Application Logic for the Multiplicative Control Matrix

The multiplicative matrix is built from entries in four packets: /MACT/, /CONTROL/ or /EMS_CONTROL/, /CTG/, and /ALLOWABLE/. The packets are applied in the following order:

  • /MACT/

  • /CONTROL/ or /EMS_CONTROL/ (cannot use both at same time)

  • /CTG/

  • /ALLOWABLE/

With the exception of the /CONTROL/ packet, all controls are always applied in addition to one another.

4.2.1.1.1. /MACT/ packet

The /MACT/ packet is designed to support the primary MACT controls needed for toxics processing. It is applied first, and uses the following logic. When a source is found that matches a /MACT/ packet entry (source matching is addressed in Section 4.2.1.2, “Source Matching Hierarchy”), Cntlmat first calculates a inventory efficiency value (Effinv) for that source based on the control efficiency (Ceff), rule effectiveness (Reff), and rule penetration (Rpen) provided in the inventory:

Effinv = Ceff [inventory] x Reff [inventory] x Rpen [inventory]

Next, a control factor is calculated for existing sources (Facexist) using the control efficiency of existing sources (Effexist) and fraction of new sources (Fracnew) provided in the /MACT/ packet entry. If Effexist > Effinv, then Facexist is calculated as:

Facexist = (1 - Fracnew) x ((1 - Effexist) / (1 - Effinv))

Otherwise,

Facexist = (1 - Fracnew)

Cntlmat then calculates a control factor for new sources (Facnew) using the control efficiency of new sources (Effnew) provided in the /MACT/ packet. If Effnew > Effinv, then

Facnew = Fracnew x ((1 - Effnew) / (1 - Effinv))

Otherwise,

Facnew = Fracnew

Finally, the new and existing source factors are summed to compute the final /MACT/ packet control factor (FacMACT).

FacMACT = Facexist + Facnew

The /MACT/ packet is designed to be used only for sources with MACT codes, currently nonpoint and point toxic sources.

4.2.1.1.2. /CONTROL/ packet

After processing the /MACT/ packet, the /CONTROL/ packet is applied using the following logic. Each entry in the /CONTROL/ packet can be identified as “replacement” or “additive”. If set to “replace”, the /CONTROL/ entry will be used to replace the controls from the /MACT/ packet or the base-year inventory controls; otherwise, the control will be applied in addition to the controls from the /MACT/ packet or the base-year inventory controls. When the controls are replaced, the default behaviour of Cntlmat is to back out the existing controls and apply the replacement controls. Usually, users want to do this only when the replacement controls are more stringent (i.e., a greater reduction) than the /MACT/ packet or base-year controls - so this is the default behaviour of Cntlmat. This default behaviour can be changed by setting the value of COMPARE_REPLACE_CONTROL to "N" in your run script. In this case, the replacement controls will be applied regardless of the existing controls from the base invetory or the /MACT/ packet, which could result in increased emissions.

When an “additive” entry is matched to a source, the /CONTROL/ packet factor (FacCONTROL) the control packet information is applied in addition to the exitsing controls, which further reduce the remaining emissions.

For “additive” control packet entries, the control factors are calculated from the control efficiency, rule effectiveness, and rule penetration values provided in the /CONTROL/ packet entry as follows:

FacCONTROL = (1 - Ceff [packet] x Reff [packet] x Rpen [packet])

A cumulative control factor Facresult is then calculated by multiplying FacExisting x FacCONTROL.

In the case of “additive” controls only, The overall reduction factor is then used to calculate an overall new control efficiency to be put in any resulting inventory files as: Ceff [result] = 1 - Facresult . The final Rule Penetration and Rule Effectiveness values are then set to 100%.

For “replacement” entries, Cntlmat first “backs out” the existing controls provided in the inventory from the control values provided in the /CONTROL/ packet entry as follows:

D = (1 - Ceff [inventory] x Reff [inventory] x Rpen [inventory])

If D = 0.0, then the backout value, B, is equal to 0; otherwise, B = 1/D. Using this backout value, the /CONTROL/ factor is calculated as

FacCONTROL = B x (1 - Ceff [packet] x Reff [packet] x Rpen [packet])

Unlike “additive” entries, the FacCONTROL value for “replacement” entries replaces the factor calculated from the /MACT/ packet or base year inventory (if any). The /CONTROL/ packet can be applied to stationary area/nonpoint, nonroad, on-road mobile, and point sources. On-road mobile source inventories do not include control efficiency, rule effectiveness, or rule penetration fields. However, the /CONTROL/ packet can still be used to apply adjustment factors to mobile sources. In this case, B in the above formula will be 1 when computing factor FacCONTROL that is applied to the emissions.

4.2.1.1.3. /CTG/ packet

The /CTG/ packet is processed next, as follows. The emission value (after application of /MACT/, /CONTROL/, and/or /EMS CONTROL/) is compared to the cutoff value specified as part of the /CTG/ packet record. If the emission value exceeds the cutoff value, then the control technology factor is applied to the emissions. If the resulting emissions value still exceeds the cutoff value, then either the MACT or the RACT factor is used. The MACT factor is used if it is defined (i.e., greater than zero); if it is not defined (less than or equal to zero), then the RACT factor is used. If neither the MACT nor RACT are defined, but the emissions are still greater than the cutoff, then the emissions are set to the cutoff value.

4.2.1.1.4. /ALLOWABLE/ packet

Finally, the /ALLOWABLE/ packet is processed. The entries in this packet override the /MACT/, /CONTROL/, /EMS CONTROL/, and /CTG/ packets. The way this packet is applied depends on whether or not the Cap and Replace values in the packet are defined (greater than zero).

  • If the Cap value is defined, Cntlmat compares the inventory emissions value to the Cap value, and sets a control factor, using the following procedure: If both the Cap and Replace values are defined, this control factor is the Replace value divided by the original emissions value. If only the Cap value is defined, the factor is the Cap value divided by the original emissions value.

  • If the Cap value is not defined, then the factor is the Replace value divided by the original emissions value.

  • If neither the Cap nor Replace values are defined, the packet entry is invalid and is ignored.

4.2.1.2. Source Matching Hierarchy

To match each sources with the appropriate control packet entry, Cntlmat uses a hierarchy of source characteristics, trying to match each source to the most specific control packet entry. Note that not all combinations are applicable to all control packets (for example, there is no MACT code associated with the /PROJECTION/ packet). “Left x of SCC” refers to an 8- or 10-digit SCC with all digits except the first x set to 0. “Left 2 of SIC code” refers to a 4-digit SIC code with the third and fourth digits set to 0. The maximum field width in SMOKE and its input files for SCC is 20 characters as of SMOKE v4.0. The 8 or 10 digit SCC are still supported, but if the SCC is greater than 10 digits the SCC hierarchial approach will not be supported. The SIC may also be up to 20 characters in length, but if the SIC is larger than 4 characters then the hierarchial approach will not be used.

For point sources, the following hierarchy is used, in order of most specific to least specific. (NOTE: only for SCC less than or equal to 10 characters and SIC less than or equal to 4 characters)

  1. Country/State/County code, plant ID, point ID, stack ID, segment ID, 8-digit SCC code, pollutant

  2. Country/State/County code, plant ID, point ID, stack ID, segment ID, pollutant

  3. Country/State/County code, plant ID, point ID, stack ID, pollutant

  4. Country/State/County code, plant ID, point ID, pollutant

  5. Country/State/County code, plant ID, 8-digit SCC code, pollutant

  6. Country/State/County code, plant ID, MACT code, pollutant

  7. Country/State/County code, plant ID, pollutant

  8. Country/State/County code, plant ID, point ID, stack ID, segment ID, 8-digit SCC code

  9. Country/State/County code, plant ID, point ID, stack ID, segment ID

  10. Country/State/County code, plant ID, point ID, stack ID

  11. Country/State/County code, plant ID, point ID

  12. Country/State/County code, plant ID, 8-digit SCC code

  13. Country/State/County code, plant ID, MACT code

  14. Country/State/County code, plant ID

  15. Country/State/County code, MACT code, 8-digit SCC code, pollutant

  16. Country/State/County code, MACT code, pollutant

  17. Country/State code, MACT code, 8-digit SCC code, pollutant

  18. Country/State code, MACT code, pollutant

  19. MACT, 8-digit SCC code, pollutant

  20. MACT, pollutant

  21. Country/State/County code, MACT code, 8-digit SCC code

  22. Country/State/County code, MACT code

  23. Country/State code, MACT code, 8-digit SCC code

  24. Country/State code, MACT code

  25. MACT code, 8-digit SCC code

  26. MACT code

  27. Country/State/County code, 4-digit SIC code, pollutant

  28. Country/State/County code, left 2 of SIC code, pollutant

  29. Country/State code, 4-digit SIC code, pollutant

  30. Country/State code, left 2 of SIC code, pollutant

  31. 4-digit SIC code, pollutant

  32. Left 2 of SIC code, pollutant

  33. Country/State/County code, 4-digit SIC code

  34. Country/State/County code, left 2 of SIC code

  35. Country/State code, 4-digit SIC code

  36. Country/State code, left 2 of SIC code

  37. 4-digit SIC code

  38. Left 2 of SIC code

  39. Country/State/County code, 8-digit SCC code, pollutant

  40. Country/State/County code, left 6 of SCC code, pollutant

  41. Country/State/County code, left 3 of SCC code, pollutant

  42. Country/State/County code, left 1 of SCC code, pollutant

  43. Country/State code, 8-digit SCC code, pollutant

  44. Country/State code, left 6 of SCC code, pollutant

  45. Country/State code, left 3 of SCC code, pollutant

  46. Country/State code, left 1 of SCC code, pollutant

  47. 8-digit SCC code, pollutant

  48. Left 6 of SCC code, pollutant

  49. Left 3 of SCC code, pollutant

  50. Left 1 of SCC code, pollutant

  51. Country/State/County code, 8-digit SCC code

  52. Country/State/County code, left 6 of SCC code

  53. Country/State/County code, left 3 of SCC code

  54. Country/State/County code, left 1 of SCC code

  55. Country/State code, 8-digit SCC code

  56. Country/State code, left 6 of SCC code

  57. Country/State code, left 3 of SCC code

  58. Country/State code, left 1 of SCC code

  59. 8-digit SCC code

  60. Left 6 of SCC code

  61. Left 3 of SCC code

  62. Left 1 of SCC code

  63. Country/State/County code, pollutant

  64. Country/State/County code

  65. Country/State code, pollutant

  66. Country/State code

  67. Pollutant

For nonpoint/stationary area sources, the following hierarchy is used. The maximum field width in SMOKE and its input files for SCC is 20 characters as of SMOKE v4.0. The 8 or 10 digit SCC are still supported, but if the SCC is greater than 10 digits the SCC hierarchial approach will not be supported. The SIC may also be up to 20 characters in length, but if the SIC is larger than 4 characters then the hierarchial approach will not be used. Nonpoint SCCs can have either 8 or 10 digits, which is why there are two separate SCC levels mentioned for each of the SCC-based assignments.(NOTE: hierarchial approach is only for SCC less than or equal to 10 characters and SIC less than or equal to 4 characters)

  1. Country/State/County code, MACT code, 8- or 10-digit SCC code, pollutant

  2. Country/State/County code, MACT code, pollutant

  3. Country/State code, MACT code, 8- or 10-digit SCC code, pollutant

  4. Country/State code, MACT code, pollutant

  5. MACT code, 8- or 10-digit SCC code, pollutant

  6. MACT code, pollutant

  7. Country/State/County code, MACT code, 8- or 10-digit SCC code

  8. Country/State/County code, MACT code

  9. Country/State code, MACT code, 8- or 10-digit SCC code

  10. Country/State code, MACT code

  11. MACT code, 8- or 10-digit SCC code

  12. MACT code

  13. Country/State/County code, 4-digit SIC code, pollutant

  14. Country/State/County code, left 2 of SIC code, pollutant

  15. Country/State code, 4-digit SIC code, pollutant

  16. Country/State code, left 2 of SIC code, pollutant

  17. 4-digit SIC code, pollutant

  18. Left 2 of SIC code, pollutant

  19. Country/State/County code, 4-digit SIC code

  20. Country/State/County code, left 2 of SIC code

  21. Country/State code, 4-digit SIC code

  22. Country/State code, left 2 of SIC code

  23. 4-digit SIC code

  24. Left 2 of SIC code

  25. Country/State/County code, 8- or 10-digit SCC code, pollutant

  26. Country/State/County code, left 6 or left 7 of SCC code, pollutant

  27. Country/State/County code, left 3 or left 4 of SCC code, pollutant

  28. Country/State/County code, left 1 or left 2 of SCC code, pollutant

  29. Country/State code, 8- or 10-digit SCC code, pollutant

  30. Country/State code, left 6 or left 7 of SCC code, pollutant

  31. Country/State code, left 3 or left 4 of SCC code, pollutant

  32. Country/State code, left 1 or left 2 of SCC code, pollutant

  33. 8- or 10-digit SCC code, pollutant

  34. Left 6 or left 7 of SCC code, pollutant

  35. Left 3 or left 4 of SCC code, pollutant

  36. Left 1 or left 2 of SCC code, pollutant

  37. Country/State/County code, 8- or 10-digit SCC code

  38. Country/State/County code, left 6 or left 7 of SCC code

  39. Country/State/County code, left 3 or left 4 of SCC code

  40. Country/State/County code, left 1 or left 2 of SCC code

  41. Country/State code, 8- or 10-digit SCC code

  42. Country/State code, left 6 or left 7 of SCC code

  43. Country/State code, left 3 or left 4 of SCC code

  44. Country/State code, left 1 or left 2 of SCC code

  45. 8- or 10-digit SCC code

  46. Left 6 or left 7 of SCC code

  47. Left 3 or left 4 of SCC code

  48. Left 1 or left 2 of SCC code

  49. Country/State/County code, pollutant

  50. Country/State/County code

  51. Country/State code, pollutant

  52. Country/State code

  53. Pollutant

On-road mobile and nonroad sources are matched to the control packet entries using the following hierarchy if the SCC length is less than 10 characters. As of SMOKE v4.0 the SCC character length may be up to 20 characters in length:(NOTE: this hierarchial approach is only for SCC less than or equal to 10 characters and SIC less than or equal to 4 characters)

  1. Country/State/County code, 10-digit SCC code, pollutant

  2. Country/State/County code, left 7 of SCC code, pollutant

  3. Country/State/County code, left 4 of SCC code, pollutant

  4. Country/State/County code, left 2 of SCC code, pollutant

  5. Country/State code, 10-digit SCC code, pollutant

  6. Country/State code, left 7 of SCC code, pollutant

  7. Country/State code, left 4 of SCC code, pollutant

  8. Country/State code, left 2 of SCC code, pollutant

  9. 10-digit SCC code, pollutant

  10. Left 7 of SCC code, pollutant

  11. Left 4 of SCC code, pollutant

  12. Left 2 of SCC code, pollutant

  13. Country/State/County code, 10-digit SCC code

  14. Country/State/County code, left 7 of SCC code

  15. Country/State/County code, left 4 of SCC code

  16. Country/State/County code, left 2 of SCC code

  17. Country/State code, 10-digit SCC code

  18. Country/State code, left 7 of SCC code

  19. Country/State code, left 4 of SCC code

  20. Country/State code, left 2 of SCC code

  21. 10-digit SCC code

  22. Left 7 of SCC code

  23. Left 4 of SCC code

  24. Left 2 of SCC code

  25. Country/State/County code, pollutant

  26. Country/State/County code

  27. Country/State code, pollutant

  28. Country/State code

  29. Pollutant