Model Change Bulletin MCB#9 12/16/2013 AERMOD (dated 13350) This Model Change Bulletin (MCB) documents changes made to the AERMOD Dispersion Model. A brief description of the changes is provided below. Additional details are available in the Fortran source code. Changes to the user instructions associated with this update are documented in an updated AERMOD User's Guide Addendum. This revised version of AERMOD (dated 13350) includes the following modifications relative to the previous version (dated 12345): -- Bug Fixes: 1. Modified subroutine HRQEXT to remove the FATAL = .TRUE. statement for cases when the exit temp < 200K (about -100F) with non-zero emissions in the HOUREMIS file. This case was intended to be treated as a non-fatal warning condition, but was inadvertently treated as a fatal error in version 12345 by including the FATAL = .TRUE. statement. A fatal error message is still generated if the hourly exit temperature is less than 200K (about -100F) and the exit velocity is greater than 200m/s, unless the hourly emissions are zero (0) for that hour, since this would likely indicate that exit velocity and exit temperature were switched in the HOUREMIS file. 2. Modified subroutine HRLOOP to correct a bug associated with use of the DAYRANGE keyword for multiple years of meteorological data, where the YR/MN/DY conversion to Julian may be incorrect in relation to leap-years vs. non-leap-years. This problem was partially corrected in version 12345. 3. Modified subroutine BGREAD to move the unit conversion for hourly background concentrations to follow the READ statements to avoid "double counting" unit conversion for non-hourly background since unit conversion for BGFILL has already been applied in sub_BGVAL. 4. Moved calculation of the center of effective area source for OPENPIT sources from subroutine ARDIST to subroutine PITEFF. Previous versions would have skipped calculation of center coordinates if the first receptor was located inside the actual OPENPIT source. 5. Modified subroutine AREAIN to include an additional check for the number of sides exceeding the maximum number for an AREAPOLY source and to issue an AERMOD error message to avoid a compiler-generated runtime error. 6. Modified subroutines wake_dfsn and wake_dfsn2 to correct a problem with virtual sigma-z values for the cavity source, which could result in anomalously high concentrations in some cases due to the initial dispersion coefficient for the "cavity source" being set to zero (0). 7. Modified subroutine OLM_CALC to include a check for the OLM value (variable OLMVAL) being zero (0) to avoid a zero-divide in calculating PercentNO2. 8. Modified subroutine HEFF to include plume rise for penetrated source, DHP3, for purposes of calculating plume height at 20km for use in wet deposition/depletion calculations. 9. Modified subroutine IBLVAL to use a minimum value of 5m for ZHI in the calculation of effective parameters. 10. Modified subroutine O3READ to avoid including a substituted ozone (O3) value for hours with missing O3 data in the calculation of the maximum ozone value within the past 24 hours, which may be used in the adjustment of the hourly O3 value under stable conditions. -- Enhancements: 1. Incorporated new options for modeling NO2, including a new Default option for the Ambient Ratio Method (ARM) and a non-Default BETA option for the Ambient Ratio Method - 2 (ARM2). 2. Incorporated options to vary background ozone (O3) data by wind sector (new CO O3SECTOR keyword), and options to vary background concentrations for the pollutant being modeled by wind sector (new SO BGSECTOR keyword). Any of the existing options for specifying background data can be used with the new sector-varying options, and will continue to work as before if no sectors are defined. The applicable sector is determined by the flow vector (downwind) based on the wind direction in the surface meteorological data file. 3. Added new "debug" output file options for the OLM option and for the new ARM and ARM2 options for NO2. Also added a new PRIME debug option to separate the debug information associated with the PRIME downwash algorithm from the non-PRIME related information provided under the MODEL debug option. Also removed all debug information from the main 'aermod.out' file. -- Miscellaneous: 1. Modified module MAIN1 and subroutine SRCSIZ to include a new NVPOLY parameter for the number of additional vertices to include for AREAPOLY sources, beyond the number of vertices used to define the source. This is needed to account for the integrated portion of the area intersecting several sides of the polygon, depending on the geometry of the source, receptor, and wind direction. The NVPOLY parameter is assigned a value of 12, which should work in most cases, but users are cautioned to avoid overly complex shapes for AREAPOLY sources to avoid model runtime errors. Reducing the complexity of AREAPOLY sources will also reduce model runtime in most cases. The value of NVPOLY is added to NVMAX (determined based on the maximum number of area sources vertices defined by the user) in subroutine SRCSIZ for purposes of allocating arrays for AREAPOLY sources. The previous version of AERMOD added a value of 8 to NVMAX in subroutine SRCSIZ. 2. Incorporated checks on the consistency of concentrations that are calculated during the EVENT processing mode with the original value calculated during normal processing, which is included on the EVENTPER keyword. Warning messages are generated if the results are inconsistent, which may indicate a potential error in the AERMOD code. Subroutine EVPER was also modified to make the concentration field (provided by AERMOD during the initial non-EVENT processing) mandatory. 3. Modified several subroutines to include the AERMET version date associated with the input meteorological data in the header records of the 'aermod.out' file and all other output file options. Also modified the earliest acceptable version date for AERMET inputs from 11059 to 12345. However, users are encouraged to use input meteorological data based on the latest version of the AERMET processor (dated 13350). 4. Modified subroutines MEREAD, MEOPEN, and METEXT to extract met data station IDs from the header record of the surface met data file based on the index of keywords within the header record to provide more flexibility in the positioning of station IDs within the surface header record. 5. Modified some error/warning messages to improve the clarity of the message and to provide more flexibility in the error reporting. For example: a. Errors associated with allocating arrays have been modified to identify the type of array(s) being allocated when the error occurs; b. Additional error handling and reporting has been incorporated for problems associated with opening, reading, and/or writing to external data files; c. Subroutine JULIAN was modified to provide additional information when errors occur to facilitate diagnosing and correcting problems; d. Subroutines ERRHDL, TERRST, and other subroutines that call these routines, were modified to include up to 12 characters in the module names included in error/warning/informational messages. The previous version limited the module name to 6 characters. ***************** * IMPORTANT * ***************** This program will henceforth be identified by its name and a Julian date, i.e.: AERMOD (dated 13350). Future changes to this model will be identified by an updated Julian date found at the beginning of the model source code and followed by a reference to a SCRAM Model Change Bulletin (MCB#n) which will explain the nature and content of the changes. All Model Change Bulletins for this program will always be available for back reference on this website. In the future, notification of changes (MCBs) to this program will be made in the Recent Additions section of the SCRAM website.