=======================================================================

-----  Summaries of AERMOD model changes associated with 22112 are 
       provided below:
       
=======================================================================

       This revised version of AERMOD (dated 22112) includes the
       following modifications relative to the previous version
       (dated 21112; see MCB#15 and AERMOD User's Guide.
 
-----  Bug Fixes:

       1.  Tall Stacks/Urban
           Updated DISTF to calculate plume penetration factor for an 
           urban source only when the stack height is less than the mixing 
           height and the stack height plus plume rise is greater than or 
           equal to mixing height. Prior to this change, the penetration 
           factor was calculated when the stack height plus plume rise was 
           greater than or equal to mixing height without consideration for 
           the stack height relative to the mixing height. Adding the 
           additional consideration for stack height less than mixing height 
           avoids NaN for penetration factor calculations when stack height 
           is at or above mixing height.
       
       2.  Premature EOF - Errors.out
           End-of-File logical variable (EOF) was prematurely set to TRUE 
           in subroutine SUMTBL in aermod.f when reading from temporary 
           error file and writing AERMOD.OUT file after encountering 999 
           warnings in temporary file. In some circumstances, this would 
           result in overwriting existing messages beyond the first 999 
           in the temporary file before messages are written to the 
           permanent ERRORS.OUT file. Subroutine in SUMTBL in aermod.f 
           was updated to read to end of the temporary file to avoid 
           overwriting existing messages.
       
       3.  NO2 Background - PVMRM
           Corrected double counting of NO2 background concentrations when 
           the PVMRM NOX-to-NO2 Tier 3 method is applied when modeling NO2.
       
       4.  BLPINPUT Checks
           Corrected the logic in SOSET.f to check that a BLPINPUT record 
           is present in the input control file when one or more buoyant 
           line sources are modeled. Also added checks for the omission or 
           presence of combinations of BUOYLINE source type, BLPINPUT 
           keyword, and BLPGROUP keyword
       
       5.  URBANOPT - Monin-Obukhov Length
           Corrected Monin-Obukhov Length calculation for URBANOPT to select 
           the most neutral value for nighttime hours and the most convective 
           for daytime hours.
       
       6.  URBANOPT - BUOYLINE PG Stability
           Corrected the PG Stability class assignment for the BOUYLINE 
           source when urban option is used. PG stability class is now set 
           to 4 for stable hours when the URBANOPT is used.
       
       7.  BUOYLINE Source Limit
           The array DEL was changed from a fixed value (10) to an allocatable 
           array. Corrected an additional bug in which two or more BLPGROUP 
           keywords with the same BLP Group ID (BLPGrpID) caused an error 
           during setup, i.e., BLPGROUP was not repeatable with the same 
           BLPGrpID, inconsistent with the AERMOD User’s Guide
       
       8.  BL_INTRSE - Loop Indices
           Corrected selection of indices to be used in an interpolation in 
           subroutine BL_INTRSE in file bline.f. A limited number of indices 
           were selected in v21112, the correction allows all indices to be 
           selected.       
       
       9.  Vertical Velocity Profile Discontinuity
           Corrected discontinuity in vertical velocity profile at 
           (Z = Z0 +_DISPHT).
              
      10.  Initial Lateral Sigma-y
           Corrected double counting of initial lateral dispersion (sigmay) 
           for RLINE source types.
      
      11.  RLINEXT Barrier Algorithm
           Corrections to RLINEXT barrier algorithm: initialize barrier 
           variables in RLCALC; correct location of barrier relative to 
           road in TRANSLATE_ROTATE; correct location of release for 
           upwind barriers in oblique winds
      
      12.  Order of Variable Declarations
           Corrected order of variable declarations for array lengths in 
           POLYINTERP in rline.f, needed for some compilers.
      
      13.  Debug File Units
           Added 900 to the file units for AWMADWDBUNT, RLINEDBUNT, 
           PLATFMDBUNT, URBNUT, URBNUT1, and BLPUNT in modules.f to 
           avoid possible output file unit conflict with several system 
           files. Conflict is still possible, but user now receives 
           warning of conflict.

-----  Enhancements:

       1.  Unused Variables
           Comment out variables that are set but never used and variables 
           that are defined but never used.
       
       2.  User Options Summary
           Reformatted user options summary that is reported in the standard 
           aermod.out file to simplify future code maintenance.
       
       3.  BUOYLINE Debug File
           Added debug file for the BOUYLINE source, RLINE source types, 
           and the urban option, URBANOPT.
       
       4.  EVALFIL Format
           Modified the EVALFIL output to have only one line per hour/receptor 
           rather than screen breaks.
       
       5.  RLINE Meander
           Implemented MEANDR subroutine in RLINE for calculating FRAN 
           (fraction of random plume). This update replaces original RLINE 
           meander calculations and further integrates RLINE into AERMOD 
           for consistency with AERMOD formulation for other source types.
       
       6.  Error/Warning Messages - Array Indices
           Updated error/warning message arrays to use dynamic array indices 
           (incremented variable) rather than hardcoded numbers to simplify 
           future code maintenance.
       
       7.  RLINE FASTALL
           Added a FAST option for RLINE source types based on CALINE 
           interpolation approach for estimating plume width. This same 
           approach has been applied in estimating the effective wind speed 
           for RLINE in which a look-up table us used to determine plume
           wind speed, reducing computation time.
       
       8.  RLINE/BUOYLINE - Urban
           Removed ALPHA requirement for using the URBAN option with the 
           RLINE or BOUYLINE sources
           using the subroutine LTOPG.

-----  Formulation Updates - Regulatory:

       1.  Minimum Ozone
           NOMINO3 option has been added that removes the nighttime, 
           stable, minimum ozone restriction for NO2 conversion. Unless 
           NOMINO3 option is specified, AERMOD will limit the minimum 
           nighttime ozone to 40 ppb (78 ug/m3) for NO conversion in OLM, 
           PVMRM, GRSM, and TTRM. NOMINO3 option should be used in 
           consultation with reviewing agency.

-----  Formulation Updates - BETA:

       1.  Generic Reaction Set Method (GRSM)
           The GRSM NO2 conversion method has been changed from ALPHA to 
           BETA status.

-----  Formulation Updates - ALPHA:

       1.  PLATFORM Downwash
           Added new keyword, PLATFORM, on SO pathway to input overwater 
           platform dimensions. One platform is associated with one SRCID. 
           Modified POINT source type processing to enhance plume spread 
           and decrease plume rise when a platform is present.
       
       2.  RLINEFDH
           Added model option RLINEFDH, which removes the displacement 
           height from RLINE wind speed profile.       
       
       3.  Travel Time Reaction Method - 2
           The TTRM2 NO2 conversion method has been added as a new ALPHA NO2 
           conversion technique. TTRM2 applies the existing TTRM method 
           with one of ARM2, OLM, or PVMRM and will select the lowest 
           NO2 concentration from TTRM and the other selected NO2 
           technique.
       
       4.  SWPOINT - Sidewash
           Experimental source type SWPOINT was added to facilitate further 
           research of “sidewash” phenomena caused by building downwash. 
           Sidewash occurs when wind is at an oblique angle to the long 
           side of an elongated building. In this circumstance, there is
           a lateral shift of the cavity that forms on the lee side of the 
           building. This a point type source with limited input and no 
           buoyancy and does not utilize the PRIME building downwash algorithm.
       
       5.  AWMAUTURB and AWMAUTURBHX
           Updated subroutine wake_u_turb in prime.f associated with AWMA 
           ALPHA downwash options AWMAUTURB and AWMAUTURBHX. Limit on tiz 
           updated from 50 to 18. Limit on tiy updated from 50 to 6.
       
       6.  FRANmin and PBAL
           Added two alpha low wind options (FRANmin and PBAL) to the 
           LOW_WIND keyword in the CO pathway. FRANmin is a user-specified 
           minimum value for the meander factor within a range of 0.0 – 1.0 
           which overrides the default value of 0.0. PBAL is a secondary 
           keyword to replace the default energy balance approach to 
           determining plume meander with a momentum balance approach.
      


=======================================================================

-----  Summaries of AERMOD model changes prior to version 22112 are 
       provided below:
       
=======================================================================

       This revised version of AERMOD (dated 21112) includes the
       following modifications relative to the previous version
       (dated 19191); see MCB#15 and AERMOD User's Guide.
 
-----  Bug Fixes:

       1.  BUOYANT Line Source Flagpole Receptor Heights
           Added capability to use flagpole receptor heights to buoyant
           line sources.

       2.  Deposition Debug File
           Updated subroutine DEBOPT to add a default debug filename, 
           DEPOS.DBG that contains wet deposition information when 
           deposition debug requested and model debug is not requested.

       3.  MMIF/AERMET
           Updated subroutine METEXT to recognize MMIF data processed 
           through AERMET as valid. Previously MMIF processed through 
           AERMET was seen by AERMOD as possibly from an outdated version 
           of AERMET

       4.  Error Message - Background Units
           Added error message when using ppb or ppm for background units 
           unless pollutant is NO2, SO2, or CO. Other pollutants are 
           assumed to be ug/m3 and do not have conversion factors built in.

       5.  Duplicate Sigma-v Calculations
           Updated PFLCNV to remove duplicate sigma-v calculations when 
           checking to see if adjust u* has been applied. Sigma-v is 
           initially calculated from sigma-theta if wind speed is not 
           missing. Duplicate code calculated sigma-v from sigma-theta 
           even if wind speed was missing. This fix only affects
           meteorological data with site-specific turbulence measurements. 
           Applications involving NWS data only are not affected.

       6.  Parallel BUOYLINE Check
           Added check to determine if lines in a buoyant line group are 
           parallel; differences in excess of 5 degrees generates a warning 
           message and AERMOD will continue the model run.

       7.  Correction to for Met Params Reset
           Corrected BL_CALC to not reset key met parameters to rural values 
           when no urban sources.

       8.  RLINE QEMIS
           Updated RLINE.F to add local QEMIS for calculation of emissions 
           when using EMISFACT keyword for time-varying emission factors 
           with RLINE sources.

       9.  AO3CONC
           Updated HRLOOP to set AO3CONC to missing when reading missing 
           values from the hourly ozone data file so that MAXDCONT results 
           will match base AERMOD run.

      10.  AWMADWDBG
           Initialize logical variable AWMADWDBG to FALSE to avoid writing 
           downwash debug output even when building downwash not being 
           calculated.
           
      11.  AWMA_DOWNWASH
           Updated AWMA_DOWNWASH subroutine in COSET.F to change error 
           message for AWMAUTURB and STREAMLINE to be 126 to avoid 
           conflict with intended purpose of error message 125. Error 
           message 125 is for situations where keyword FINISHED is 
           not found. Updated modules.f to include error message 126 
           and error message 125.
      
      12.  SUMBACK_NO2 and EV_SUMBACK
           Updated the SUMBACK_NO2 and EV_SUMBACK modules to properly 
           convert background concentrations when the BACKUNIT keyword 
           is used to convert output units.
           
      13.  RLINE or RLINEXT INCLUDED Files
           Removed fatal error which would occur if processing INCLUDED 
           files with RLINE or RLINEXT LOCATION inputs.

-----  Enhancements:

       1.  Parallel BUOYLINE Check
           Added check to determine if lines in a buoyant line group are 
           parallel; differences in excess of 5 degrees generates a warning 
           message and AERMOD will continue the model run.
           
       2.  Multiple BUOYLINE Groups
           Added capability to process multiple buoyant line groups.
           
       3.  'Stack height > or = EPA Formula Height
           The warning message that has been associated with code 
           305 - 'Stack height > or = EPA formula height for SRCID: 
           ' has been removed and AERMOD will no longer issue this 
           message. This warning was added in version 11059 when the WAKEFLG 
           setting based on the wind direction specific GEP calculation was 
           disabled. The warning was originally added at the time to inform 
           users that downwash would be applied even though stack height 
           was above the direction specific GEP for the hour, calculated 
           using the direction specific building dimension for the current 
           hour the model is processing. The message has caused confusion 
           implying that the stack height is > or = to the non-direction 
           specific formula GEP height based on the building height and 
           maximum projected building width.
           
       4.  Gas Deposition
           Updated SOSET to allow users to enter a 0 for gas deposition 
           parameters to use a default value for that parameter. Also 
           updated SOSET to allow users to enter a 0 for fine mass 
           fraction and/or mean particle diameter for certain pollutants.
           
       5.  Sigma-theta, Sigma-w
           Add new keywords in ME pathway to set non-missing σθ or σw in 
           profile file to missing for all hours, stable hours only, or 
           convective hours only. Options are also available to set each 
           one missing independently of the other.
           
       6.  Processing Speed
           Made changes to code to improve speed without affecting result 
           (e.g., using integer exponent when possible).
           
       7.  Prognostic Data Processing
           Added PROG to metext.f and meset.f to include PROG as viable 
           source of met in addition to MMIF. This is to accommodate the 
           update to AERMET with a PROG pathway. The update ensures 
           capability with previous versions of AERMET and future AERMET 
           updates. This only affects cases with prognostic data.
           using the subroutine LTOPG.

-----  Formulation Updates - Regulatory: None

-----  Formulation Updates - BETA: None

-----  Formulation Updates - ALPHA:

       1.  RLINEXT - 2-Barriers
           A 2-barrier algorithms (i.e., barriers on both sides of a roadway) 
           was added for the RLINEXT source type. The input SO RBARRIER 
           pathway now includes an option for a second barrier. 
           
       2.  RLINEXT - 1 Barrier
           The existing 1-barrier algorithms were updated for the RLINEXT 
           source type based on Ahangar et al. 2017 and Venkatram et al. 2021.
          
       3.  AWMAENTRAIN and AWMAUTURBHX
           Added two new ALPHA options (AWMAENTRAIN and AWMAUTURBHX) that affect 
           that affect the PRIME downwash algorithm. AWMAENTRAIN changes the 
           beta entrainment coefficient for PRIME downwash referred to in 
           the code as, beta0 and betap, from 0.60 to 0.35 in PRIME.f. 
           AWMAUTURBHX enables enhanced calculation of tiz, tiy using 
           subroutine wake_u_turb; it is also used to get a new value of 
           velocity deficit like AWMAUTURB. With this option all enhanced 
           calculations use the PRIME plume rise at each x value.
           
       4.  SWMIN and BIGT
           Add two new ALPHA low wind options (SWMIN and BIGT) which allow 
           the user to override AERMOD’s default values of minimum sigma-w 
           and the time period used to calculate the time scale TRAN, 
           respectively. AERMOD’s default value for SWMIN is 0.02 m/s. 
           With the SWMIN option, the user can specify a value within a 
           range of 0.0 m/s to 3.0 m/s. AERMOD’s default value for BIGT 
           is 24.0 hours. With the BIGT option, the user can specify a value 
           within a range of 0.5 hours to 48.0 hours.
           
       5.  Generic Reaction Set Method (GRSM)
           Added the Generic Reaction Set Method (GRSM) for computing NO to NO2 
           conversion based on equilibrium chemistry between NO, NO2, and the 
           reaction with ozone. Method requires ozone background through the 
           OZONEVAL, O3VALUES, or OZONEFIL keyword and NOx background through 
           new NOXVALUE, NOX_VALS, or NOX_FILE keyword.
           
       6.  Travel Time Reaction Method (TTRM)
           Added the Travel Time Reaction Method (TTRM) for computing NO to NO2 
           conversion based on the reaction with ozone and limitations of the 
           travel time between the source and receptor. Method requires ozone 
           background through the OZONEVAL, O3VALUES, or OZONEFIL keyword.         
       

=======================================================================

       This revised version of AERMOD (dated 19191) includes the
       following modifications relative to the previous version
       (dated 18181); see MCB#14 and AERMOD User's Guide.

-----  Bug Fixes:

       1.  BACKGROUND Concentrations output units
           Modified subroutine SUMBACK to convert background concentrations
           to the model output units requested via the EMISUNIT or CONCUNIT
           keywords. Background concentrations are converted internally in
           AERMOD to μg/m3 but were not being converted to the requested
           output units when model outputs were not μg/m3. Background
           concentrations are converted to the requested model output 
           units by dividing EMIFAC(1) by 1.0x106 (the default conversion
           of grams to mg) in SUMBACK.

       2.  BACKGROUND Concentrations and deposition
           Modified subroutine SUMBACK to not include background
           concentrations with deposition outputs. Previously, if
           background concentrations were in an AERMOD run with
           deposition outputs, background concentrations were added
           to deposition fluxes.

       3.  Wet particle deposition and Method_2 particle deposition
           Modified subroutine SCAVRAT to calculate the scavenging
           ratio when using Method_2 particle deposition based on a 
           parameterization of the washout ratio from Wesely 2002. 
           Washout ratio is calculated based on the fine mass fraction, 
           and an assumed diameter of 6 microns for the coarse mode. 
           The washout ratio is used to calculate the collision efficiency 
           which is then used to calculate the scavenging ratio. Previously, 
           AERMOD used particle density and settling velocity for the fine 
           particle to calculate wet deposition parameters when using 
           Method 1 or 2 for particle deposition. These were inconsistent
           with the Method 2 inputs in that density is not an input for 
           Method 2 and Method 2 dry deposition assumes a settling 
           velocity of 0 m/s for the fine particle mode.
           
       4.  Buoyant Line Source Minimum Release Height and Minimum Wind Speed
           A minimum release height of 2.0 meters is imposed. A buoyant 
           line source release height of 0.0 meters caused AERMOD to run 
           very slowly and produce 0.0 ug/m3 for all hours and receptors. 
           A minimum reference height wind speed of 1.0 m/s is imposed. 
           This value is consistent with the meteorology that was produced 
           with the CRSTER meteorological processor, the met processor for 
           the Buoyant Line and Point (BLP) model.

       5.  MODELOPT Number 6
           Previously, the AERMOD.out summary file lists two No. 6 user-specified 
           options when user selects non-DFAULT and URBANOPT. One of the two 
           messages incorrectly indicates a NO2 conversion is applied when 
           non-NO2 POLLUTID used. An if statement was added for NO2 processing 
           in inpsum.f to remove the duplicated message.
          
       6.  DFAULT with ADJ_Ustar
           Previously, a W402 warning message was returned in the AERMOD.out 
           summary file when the DFAULT MODELOPT was used without use of the 
           AERMET ADJ_U*. The block of code responsible for the incorrect warning
           message was eliminated in PFLCNV subroutine of metext.f.

       7.  ERRMSG(18)
           ERRMSG(18) was defined three times in modules.f, using ERRHDL numbers 
           133, 137, and 138, which resulted in some compilers (g95) not 
           functioning properly. The modules.f file was reorganized sequentially 
           and ERRMSG(18) usage of ERRHDL 137 and 138 was removed. ERRHDL 137 
           and 138 were replaced with ERRMSG 204 in the coset.f.

       8.  LOW_WIND Undefined ERROR Message
           Previously, an undefined ERROR message and “ELWD” error code was 
           returned in the AERMOD.out summary file when the LOW_WIND MODELOPT 
           was used without the ALPHA MODELOPT. The ERROR message code was 
           modified to “E133” in coset.f.

       9.  ELEVUNIT
           Previously, the optional ELEVUNIT keyword to convert elevation 
           units from feet to meters was not applied to LINE or BUOYLINE sources.  
           The SOLOCA subroutine in soset.f was modified to apply the feet to  
           meters conversion used for other source types to LINE and BUOYLINE sources.

-----  Enhancements:

       1.  ARM2 Enabled with BETA RLINE and ALPHA RLINEXT Source Types
           ARM2 was extended for application to sources and source groups 
           that include the BETA RLINE and ALPHA RLINEXT line sources.

       2.  EVENT Processing Enabled with BETA RLINE and ALPHA RLINEXT Source Types
           EVENT processing was extended for application to sources and 
           source groups that include RLINE and RLINEXT line sources.

       3.  Urban Stability Enabled with BETA RLINE and ALPHA RLINEXT Source Types
           The URBAN option was extended for application to sources 
           and source groups that include RLINE and RLINEXT line sources.

       4.  Buoyant Line Source Urban Stability
           Previously, AERMOD treated a buoyant line source in an urban 
           environment as a source in a rural environment, as is done 
           in the Buoyant Line and Point (BLP) model. The capability to 
           process a buoyant line source in an urban environment was 
           added as an ALPHA option. The surface roughness (SFCZ0), 
           Monin-Obukhov length (OBULEN), and mixing height (ZI) are 
           adjusted for an urban environment and a new value of the 
           Pasquill-Gifford (P-G) stability category (KST) is computed 
           using the subroutine LTOPG.

-----  Formulation updates: None

-----  BETA

       1.  RLINE Source Type
           The RLINE source type was added to model roadways, or 
           similar line-type releases, which uses the dispersion 
           calculations from the R-LINE model (version 1.2) and 
           requires the BETA and FLAT model options. The RLINE 
           source type has identical inputs to the LINE source type
           R-LINE model: current version 1.2, last updated November 2013 
           (https://www.cmascenter.org/r-line).  

-----  ALPHA

       1.  Enhanced Building Downwash Options
           Options to examine the effects of enhanced building downwash 
           algorithms for point sources was added. The user can 
           selectively apply one or more of these options in the 
           AERMOD input control file. Two new keywords are added 
           to the CO pathway: ORD_DWNW and AWMADWNW. Each of these 
           keywords has several parameters that control downwash 
           processing. For ORD_DWNW, the parameters are: ORDUEFF to 
           control the height at which an effective wind speed is 
           calculated for main plume concentrations; ORDTURB to control 
           an adjustment for the non-dimensional vertical turbulence 
           intensity, wiz0, from 0.6 to 0.7; and ORDCAV to shift the 
           point at which the vertical and lateral dispersion coefficients 
           begin to grow with downwind distance from the lee edge of the 
           building to the end of the cavity. Parameters available for the 
           AWMADWNW keyword are: AWMAUEFF to control the height at which 
           an effective wind speed is calculated for main plume 
           concentrations; AWMAUTURB to specify new lower and upper 
           bounds for calculating the effective parameters ueff, sweff, 
           sveff, and tgeff; and STREAMLINE (or STREAMLINED) to perform 
           downwash for a streamlined building such as a cooling tower. 
           Any combination of parameters is allowed EXCEPT ORDUEFF and 
           AWMAUEFF cannot both be specified in the same model run. 
           In addition, STREAMLINE (or STREAMLINED) requires the AWMAUTURB 
           option to also be specified. If any of these keywords and 
           parameters are used, the ALPHA option must be specified on 
           the MODELOPT record. An optional debug file is available 
           for the options associated with the AWMADWNW keyword by 
           specifying AWMADW on the DEBUGOPT keyword. If none of 
           these options are applied, the standard AERMOD building 
           downwash algorithms will be used.

       2.  RLINEXT Source Type
           The RLINEXT source type was added to model roadways, 
           or similar line-type releases, using the dispersion 
           calculations from the R-LINE model (version 1.2) and 
           requires the ALPHA and FLAT model options. The RLINEXT 
           source has inputs and capabilities identical to the R-LINE model. 
           The RLINEXT source has capability to model depressed roadways 
           and roadside barriers; the RLINE source does not have these 
           capabilities.
           R-LINE model: current version 1.2, last updated November 2013 
           (https://www.cmascenter.org/r-line).

       3.  Method 2 particle deposition and gas deposition ALPHA Option
           Gas deposition and method 2 particle deposition were 
           switched from non-DEFAULT to ALPHA options. While the 
           two deposition options were previously non-DEFAULT, 
           there has been little evaluation of their use in AERMOD. 
           It was decided to make these two options ALPHA options 
           while the deposition algorithms undergo evaluation. 
           Note that METHOD 1 particle deposition is still allowed 
           with the DFAULT option as it is based on a method from 
           a previous model, the Acid Deposition and Oxidant model (ADOM)
       

=======================================================================

       This revised version of AERMOD (dated 18081) includes the
       following modifications relative to the previous version
       (dated 16216); see MCB#13 and AERMOD User's Guide.

-----  Bug Fixes:

       1.  In the subroutine SZSFCLPR in prime.f, the calculation of 
           the surface layer dispersion term is different for stable 
           and unstable conditions. For unstable conditions, in 15181 
           the term was calculated if the receptor height was less 
           than 1/10 of the mixing height. Otherwise, the surface 
           layer dispersion term was set to 0.0 in unstable conditions.

           In 16216r, the conditional statement was modified to 
           calculate the term if the release was considered a surface 
           release, regardless of the receptor height. Thus, the 
           surface layer dispersion term is applied in 16216r under 
           unstable conditions to all receptors if defined as a 
           surface release which is determined differently under 
           different conditions.

           Code was reverted back to 15181.

       2.  AERMOD includes a decay coefficient for URBAN SO2sources.  
           This decay will automatically apply if the DFAULT option 
           is specified, but was not applied for Non-DFAULT 
           applications of AERMOD (i.e., when DFAULT option keyword 
           was omitted). The 4-hour half-life is now applied to SO2 
           urban sources regardless of whether the DFAULT option is 
           specified or not and a user-defined value is not specified.
           The default decay coefficient is 4-hours if a user-defined 
           value is not specified. Subroutines BL_CALC in calc1.f and 
           DECAY in calc2.f were updated to apply the default (or 
           user-defined) decay coefficient to urban SO2 sources for 
           non-default applications.

       3.  For multi-year runs, when outputting ANNUAL POSTFILEs, 
           AERMOD would output each year's annual concentration 
           at each receptor with year numbers 1,2, etc.  Following 
           all of the individual years' concentrations, AERMOD would 
           output the multi-year average at each receptor and labeled 
           the row with the final year number.  Reporting individual 
           year's concentrations was introduced in 15181.  Prior to 
           15181, the POSTFILE would output the multi-year average, 
           not individual years. In this release, the POSTFILE will 
           have the individual years, but not the multi-year average. 
           The multi-year average can still be obtained from a 
           PLOTFILE. In aermod.f, the condition of call to subroutine 
           PSTANN was modified to avoid writing period average to 
           annual POSTFILE.

       4.  Summary table of buoyant line source parameters was not 
           included in the AERMOD.OUT file along with the summaries 
           for other source types. Summary table was added.

       5.  AERMOD was using the wrong seasonal assignment for 
           calculation of cuticle resistance for ozone (Rcox) for 
           winter and snow precipitation in subroutine VDP in 
           calc1.f. Conditional statement was corrected to reference 
           seasonal code 4 (winter with snow) rather than 5.

       6.  Corrections were made to the range checks for user-defined 
           ARM2 limits and Error and Warning messages were updated 
           accordingly.

       7.  AERMOD was printing the SECT1 values for both SECT1 and 
           SECT2 for: SEASON, MONTH, HROFDY, HRDOW, HRDOW7, SHRDOW, 
           SHRDOW7, MHRDOW, MHRDOW7 (functioning correctly for SEASHR). 
           SECT2 values were correctly used in the model, but were 
           printed incorrectly in the output list file Also, AERMOD 
           was not writing any values for WSPEED. Reporting errors 
           were corrected in this release.

       8.  The minimum wind speed was applied to vector winds in 
           calc1.f and iblval.f by taking the max of the calculated 
           effective wind speed and minimum wind set as a lower limit 
           (either a default value or user-defined value that is 
           entered with the ALPHA and LOW_WIND keywords).

       9.  If the surface meteorological file existed, but was empty, 
           AERMOD would enter an infinite error loop. This cause AERMOD 
           to write to the error file until the local disk was full. 
           meset.f was modified to check to see if the file was empty 
           on first read and issue the correct warning if so.

-----  Enhancements:

       1.  ARM2 was extended for application to buoyant line sources 
           and source groups that include buoyant line sources.

       2.  Similar to the BETA option flag, an ALPHA option flag was 
           added to distinguish options that are considered 
           research/experimental options (ALPHA) from those that have 
           been vetted within the scientific community that are under 
           consideration for promulgation as regulatory options (BETA).

       3.  Capability added for user to specify control filename 
           (.inp) and standard output filename (.out) on the 
           command-line when AERMOD is executed. User can include 0, 1, 
           or 2 arguments. If no arguments are included, AERMOD will 
           assume the default names (aermod.inp and aermod.out). When 
           included, the first argument must be the control filename, 
           and the second argument must be the output filename. If only 
           the control filename is provided, AERMOD will use the path 
           and base of the control filename (excluding extension) as the 
           path and base filename for the output file and append “.out” 
           to the end of the filename.  Filenames can include the 
           absolute path or relative path from the working directory.

       4.  Individual BETA options LOWWIND1, LOWWIND2, LOWWIND3 were 
           removed and replaced with LOW_WIND ALPHA option that enables 
           user to specify different values for minimum wind speed, 
           sigma-v, and maximum meander factor (see LOW-WIND Alpha 
           Option in the Enhancements section).

       5.  A new ALPHA option LOW_WIND which enables the user to 
           enter user-defined values for minimum wind speed, sigma-v, 
           and maximum meander factor in lieu of LOWWIND1, LOWWIND2, 
           and LOWWIND3.

       6.  The original Ambient Ratio Method (ARM), which was replaced 
           with ARM2, was still functional in AERMOD 16216r and could be 
           specified when the DFAULT keyword was also specified. ARM has 
           been removed from AERMOD. Equivalent functionality can be 
           obtained by setting the maximum and minimum ambient ratio to 
           the desired value using the ARM2 options. 

       7.  Absoft and gfortran compilers issued warnings that the 
           user-defined functions ERF and ERFC in prime.f were named 
           the same as two intrinsic functions. User-defined functions 
           were renamed FNERF and FNERFC to avoid a potential name 
           conflict. Call statements were updated to reference new 
           function names.

       8.  Initialized variables identified by gfortran compiler as 
           uninitialized. Exceptions are the allocated arrays.  All 
           variables that were initialized are set = 0.0D0 (all are 
           double precision). All variables identified were found to 
           be set somewhere in the code either as the value of another 
           variable or by formula, so initialization has no effect. 
           Allocatable arrays were already initialized in code at 
           some point after allocation.

-----  Formulation updates:
       
       None
       
=======================================================================

       This revised version of AERMOD (dated 16216) includes the
       following modifications relative to the previous version
       (dated 15181); see MCB#12 and AERMOD User's Guide Addendum.

-----  Bug Fixes:

       1.  Modified subroutine HRLOOP to use .LE. instead of .LT. in
           comparing FULLDATE vs. IEDATE. This affects all pollutants
           and all source types.

       2.  Modified subroutine ALLSETUP to increment the array
           dimensions associated with AREA source types by 1 to
           accommodate more complex AREAPOLY sources. This affects
           all pollutants and AREA source types.

       3.  Modified subroutine PRESET  to account for name changes
           in the beta low wind options.

       4.  Modified subroutine SBLRIS to avoid potential runtime
           errors in calculating plume rise under stable conditions
           if (TERMB*TERMC+1-TERMD) .LE. 0.0  This affects all
           pollutants and POINT source types.

       5.  Modified subroutine SETSRC to initialize SURFAC = .T. for
           sources with release heights less than 0.1 times the
           mixing height (ZI). This affects all pollutants and POINT
           source types.

       6.  Modified subroutine CENTROID to set SURFAC = .F. for
           sources with release heights greater than or equal to the
           mixing height (ZI). This affects all pollutants and POINT
           source types.

       7.  Added code to define a receptor exclusion zone in which
           receptors within the maximum extents of a buoyant line
           source are omitted from calculations. This affects all
           pollutants and BUOYLINE source types.

       8.  An individual line in a buoyant line source can be
           included in a SRCGROUP . This affects all pollutants and
           all source types.

       9.  The hourly emissions file for a buoyant line source now
           requires a buoyancy flux parameter for each line of a
           buoyant line source.  This affects all pollutants and all
           source types.

       10. Included buoyant line sources in event processing.  This
           affects all pollutants and BUOYLINE source types.

-----  Enhancements:

       1.  Subroutine PRESET was modified to account for BLP
           options. This affects all pollutants and all source
           types.

       2.  Replaced the previous PVMRM option with the PVMRM2
           option, retaining PVMRM as the option name.   This
           affects NO2 pollutants and all source types.

       3.  Removed the requirement for specifying the BETA option
           for application of the PVMRM, OLM, and ARM2 options for
           NO2. This affects NO2 pollutants and all source types.

       4.  Modified subroutine SOLOCA to remove the BETA/Non-default
           status of POINTCAP and/or POINTHOR sources. This affects
           all pollutants and POINTCAP & POINTHOR source types.

       5.  Modified subroutine MEOPEN to remove BETA/Non-default
           status of MMIF meteorological data.  This affects all
           pollutants and all source types.

       6.  Modified subroutines MEOPEN and PFLCNV to identify
           whether measured turbulence parameters (i.e., Sigma-Theta
           and/or Sigma-W) are included in the PROFFILE input file.
           This information is used to determine whether an
           application utilizing the ADJ_U* option in AERMET is
           considered to be “regulatory” or non-DFAULT. This affects
           all pollutants and all source types.

-----  MISCELLANEOUS:

       1.  The format of the MODOPS array included in the header
           records of AERMOD output files has been slightly
           modified. This affects all pollutants and all source
           types.
       

=======================================================================


       This revised version of AERMOD (dated 15181) includes the
       following modifications relative to the previous version
       (dated 14134); see MCB#11 and AERMOD User's Guide Addendum.

-----  Bug Fixes:

       1.  Modified subroutine PCALC to check for POINTCAP
           and POINTHOR options before checking for the NOSTD
           option. Previous versions checked for NOSTD first, which
           could result in skipping the POINTCAP option and
           producing erroneous results for capped stacks if the
           NOSTD option was included on the MODELOPT keyword.
           Results for POINTHOR sources would not have been affected
           by this bug since the POINTHOR option is consistent with
           the NOSTD option. This affects all pollutants and
           pointcap source types.

       2.  Modified subroutine CENTROID to account for
           distance-dependent centroid height (CENTER) and SURFAC
           logical variable under stable conditions. This affects
           all pollutants and all source types.

       3.  Modified subroutines REFL_HT and DISTF to address a
           formulation bug that imposed unrealistic limits on plume
           rise for some tall sources in urban areas (see
           Section 5.1 of the AERMOD Implementation Guide). The new
           formulation emulates the plume rise for penetrated plumes
           during convective conditions if the initial plume height
           estimate is greater than or equal to the urban mixing
           height. This affects all pollutants and all source types.

       4.  Modified subroutines PCALC, VCALC, ACALC, and OCALC to
           include an array to save the flow vectors for each source
           for use in the MAXDCONT processing. This affects NO2,
           SO2, and PM2.5 pollutants and all source types.

       5.  Modified subroutines ACALC and OCALC to reset the
           emission rate (QTK) after processing each receptor since
           it may have been changed if the point source
           approximation was used under the FASTAREA or FASTALL
           options. This affects all pollutants and AREA, AREACIRC,
           AREAPOLY, LINE, and OPENPIT source types.

       6.  Modified subroutines PLUME_VOL, PCALC, VCALC, ACALC, and
           OCALC to include the vertical and horizontal dimensions
           of the contributing sources for the penetrated plume
           contribution for the PVMRM and PVMRM2 options. This
           affects NO2 pollutants and all source types.

       7.  Modified subroutines PVMRM_CALC and MAJOR_CONT to remove
           the CWDELT and DWDELT variables previously used in
           determining which sources contributed to the NO to NO2
           conversion under the PVMRM option. This affects NO2
           pollutants and all source types.

       8.  Modified subroutine MAJOR_CONT to define the elevation of
           the receptor above the source elevation (ZRT) to use ZRT
           based on the dominant source instead of varying for each
           source. This affects NO2 pollutants and all source types.

       9.  Modified subroutine MOLES_NOX to determine the total NOx
           emissions of major contributing sources separately based
           on the horizontal plume component and the
           terrainresponding plume component under the PVMRM and
           PVMRM2 options. The NOx emissions associated with the
           penetrated plume contribution were also added for
           horizontal and terrain-responding plume components. This
           affects NO2 pollutants and all source types.

       10. Modified subroutine OZONVALS to use ISECT instead of
           IO3SECT as the array index for variable O3 concentrations
           for the HRDOW variable emission option. This affects NO2
           pollutants and all source types.

       11.  Modified subroutines HRLOOP, SET_METDAT and DAYRNG to
           include separate IPROC and IPROCL arrays to identify
           which days to process for non-leap years and leap years,
           respectively, under the ME DAYRANGE keyword. This affects
           all pollutants and all source types.

       12.  Modified subroutines PSIDE and PSIDE_TOX to change the
           tolerance parameter passed to subroutine ZBRENT from 1.0
           to 0.001. Earlier versions may have produced anomalous
           results for winds blowing nearly perpendicular to AREA
           LINE sources in some cases. This affects all pollutants
           and area, areapoly, areacirc, line, and, openpit source
           types.

-----  Enhancements:

       1.  Included a new Plume Volume Molar Ration Method 2
           non-DFAULT/BETA option that uses total dispersion
           coefficients instead of relative dispersion coefficients
           for stable conditions and relative dispersion
           coefficients for unstable conditions. The new PVMRM2
           option incorporates additional modifications relative to
           the PVMRM option, including the use of downwind distance
           instead of radial distance from source to receptor to
           calculate the plume volume and moles of NOx. See the
           modified Model Formulation Document Addendum for
           additional details. This affects NO2 pollutants and all
           source types.

       2.  Included a new LowWind3 non-DFAULT/BETA option that
           increases the minimum value of sigma-v from 0.2 to 0.3,
           consistent with the LowWind2 option, but eliminates
           upwind dispersion, consistent with the LowWind1 option.
           The LowWind3 option uses an “effective” sigma-y value
           that replicates the centerline concentration accounting
           for meander, but sets concentrations to zero (0) for
           receptors that are more than 6*sigma-y off the plume
           centerline, similar to the FASTALL option. This affects
           all pollutants and all source types.

       3.  Included a new source type option, BUOYLINE, to allow
           modeling of buoyant line sources based on the BLP model.
           This affects all pollutants and BUOYLINE source types.

       4.  Included a new debug file for the relative dispersion
           coefficients used with the PVMRM and PVMRM2 options. This
           affects NO2 pollutants and all source types.

       5.  Modified subroutine PSTANN to include ANNUAL results for
           each year in the data period for ANNUAL POSTFILEs. This
           affects all pollutants and all source types.

       6.  Modified subroutine OUCARD to allow use of the MAXDAILY
           and MDYBYYR output options for 24-hour PM2.5 processing.
           This affects PM2.5 pollutants and all source types.

       7.  Modified subroutine COCARD to include a field in the
           MODOPS array incorporated in the page header for all
           output files to indicate whether all sources were modeled
           as RURAL, all sources were modeled as URBAN, or if both
           RURAL and URBAN sources were included. This affects all
           pollutants and all source types.

-----  Miscellaneous:

       1.  Modified subroutine METDEB to clarify that the ambient
           temperature included in the METEOR debug file is at stack
           height rather that at the surface. This affects all
           pollutants and all source types.
       

=======================================================================


       This revised version of AERMOD (dated 14134) includes the
       following modifications relative to the previous version
       (dated 13350); see MCB#10 and AERMOD User's Guide Addendum.

-----  Bug Fixes:

       1.  Modified several subroutines to address issues with EVENT
           processing. Subroutine EVCALC was modified to call PCALC
           VCALC/ACALC/OCALC (as appropriate) if the PVMRM, OLM,
           ARM, or ARM2 options apply, even if the source is not
           included in the source group for the event being
           processed, since the full CHI array of hourly results for
           each source and receptor is needed for these NO2 options.
           Subroutine EVLOOP was modified to perform date
           synchronization checks based on YR/MN/DY (without the HR)
           due to the fact that hourly events within the same day
           may not be in chronological order, and to include a
           logical array to keep track of whether an EVENT has
           already been processed to avoid reprocessing of events
           that may occur within the say day but may not be in
           chronological order. Subroutine EVLOOP was also modified
           to call PVMRM_CALC and OLM_CALC for hours with missing
           ozone data. This affects NO2 pollutants and all source
           types.

       2.  Modified subroutines ARM_CALC and ARM2_CALC to address
           several issues associated with the ARM and ARM2 options,
           including the omission of applying ARM for ANNUAL
           averages, and also modified subroutine PERAVE to
           eliminate code specific to the ARM and ARM2 options to
           correct problems with annual averages for ARM and ARM2.
           This affects NO2 pollutants and all source types.

       3.  Modified subroutines PVMRM_CALC and PLUME_VOL to include
           the receptor index in the call to PLUME_VOL to account
           for distance-dependent plume penetration factor (PPFACT).
           This affects NO2 pollutants and all source types.

       4.  To address issues associated with the NO2 options in
           general, subroutines SUMVAL and SUMBACK were modified to
           remove the source group loop, and subroutines PCALC,
           VCALC, ACALC, and OCALC, as well as ARM_CALC, ARM2_CALC,
           OLM_CALC, and PVMRM_CALC, were modified to include a
           source group loop when calling SUMVAL and SUMBACK. This
           affects NO2 pollutants and all source types.

       5.  Modified subroutines PCALC, VCALC, ACALC, and OCALC, to
           fully account for cases when concentration calculations
           are skipped, e.g., receptor located less than 1m from a
           POINT source, located “inside” a VOLUME or OPENPIT
           source, or receptor located upwind of an AREA source, in
           terms of reinitializing the CHI array associated with the
           PVMRM, OLM, ARM, or ARM2 options, and other arrays
           associated with the PVMRM option. This affects NO2
           pollutants and POINT, VOLUME, and OPENPIT source types.

       6.  Modified subroutines PCALC, VCALC, ACALC, and OCALC, to
           store the EPSEFF parameter to an array by source and
           receptor for use in PVMRM_CALC for the PVMRM option. This
           affects NO2 pollutants and all source types.

       7.  Modified subroutine LPARM to include checks on the aspect
           ratio (length/width) of LINE sources and issue a warning
           message if the aspect ratio is greater than 100:1,
           consistent with the checks for AREA sources. This affects
           all pollutants and LINE source types.

       8.  Modified subroutine IBLVAL to include LINE source type in
           the call to subroutine ADISZ to calculate vertical
           dispersion coefficients based on distance-dependent
           effective parameters. Previous versions omitted this call
           for LINE sources, which may have caused incorrect results
           in some cases. This affects all pollutants and LINE source types.

       9.  Modified subroutines SOGRP, OLMGRP, and PSDGRP to check
           for the existence of single SrcIDs input on the SRCGROUP,
           OLMGROUP, and PSDGROUP keywords. Previous versions only
           checked for whether the userspecified SrcID was within a
           range of SrcID’s, but would not issue any message if the
           single SrcID had not been defined. This affects all
           pollutants and all source types.

       10.  Modified subroutine EVCALC to assign METHDR = .T. in
           order to print source-&-receptor-independent
           meteorological debug information in the METEOR debug
           output file. Also modified sub EVCALC to call sub EV
           SUMBACK for the ARM and ARM2 options. This affects all
           pollutants and all source types.

       11.  Modified subroutine MEREAD to use new MEREAD_Date
           variable to check for end of the year for EVENT
           processing, and to assign IHOUR = 24 when setting date
           variables for date synchronization checks since full days
           of met data are read in the EVENT mode. Also modified
           subroutine MEREAD to identify and process embedded header
           records (containing station IDs and AERMET version date)
           in concatenated surface meteorology files. This affects
           all pollutants and all source types.

       12.  Modified subroutine O3READ to use YR/MN/DY date variable
           to perform date synchronization checks for the EVENT
           loop, similar to subroutine MEREAD. Modified O3READ to
           use the IO3HR variable read from the hourly O3 file as
           the hour index for the EV_O3CONC array, and also modified
           O3READ to allow 0.0 as a valid hourly O3 value; version
           13350 incorrectly treated cases with a zero O3 value as
           missing O3 data. This affects NO2 pollutants and all
           source types.

       13.  Modified subroutine BGREAD to use IBGHR variable read
           from the hourly background file as the hour index for the
           EV_BGCONC array. Also modified BGREAD to perform date
           consistency checks based on YR/MN/DY since hour for
           events within the same day may not be in order. This
           affects all pollutants and all source types.

       14.  Modified subroutine METEXT to improve error handling and
           reporting for cases where the input met data file does
           not begin with hour 1 for applications involving 1-hr
           NO2, 1-hr SO2 and 24-hr PM2.5, since these applications
           require full years of data. This included modifying
           subroutine METEXT to limit assigning a runtime error for
           cases when the first “hour” of the met data file is not
           hour 1 and the MAXDCONT option is being used. Non-fatal
           warning messages are issued if the first hour is not hour
           1 if the NO2AVE, SO2AVE or PM25AVE options are being used
           without the MAXDCONT option. This affects NO2, SO2, PM2.5
           pollutants and all source types.

       15.  Modified subroutine SRCSIZ to check for whether the
           TMPSRCID array has been allocated before checking for
           AREACIRC source IDs. This affects all pollutants and
           AREACIRC source types.

       16.  Modified subroutine MAXDCONT_LOOP to remove unneeded
           IDYMAX array, and to use DABS of the difference between
           the original concentration and MAXDCONT value before
           applying the consistency test. This affects NO2, SO2, and
           PM2 pollutants and all source types.

       17.  Subroutine DEBOPT was modified to increase the number of
           fields on DEBUGOPT keyword to accommodate all applicable
           DEBUG options, including the optional userspecified file
           names. Note that a new AREA/LINE debug option had been
           added with v14134 (see below under enhancements). This
           affects all pollutants and all source types.

       18.  Modified MAIN routine to compare the maximum value in
           the SHVALS array for the SEASONHR output file used in the
           test for issuing a warning message to utilize the ‘EXP’
           option to 9999.99999999D0 (instead of 9999999.99999D0) to
           be consistent with the output format of F13.8 used in
           subroutine SHOUT. This affects all pollutants and all
           source types.

       19.  Modified subroutine HRLOOP to include additional checks
           for runtime errors (RUNERR = .T.) after processing of
           hourly emission files, hourly background data, and hourly
           ozone data to avoid extraneous error or warning messages
           that may be generated. This affects all pollutants and
           all source types.

       20.  Modified the IF-THEN block in subroutine HRLOOP for NO2
           options to check for calm or missing met data first
           rather than including those checks for each of the
           options. This Affects NO2 pollutants and all source
           types.

       21.  Modified subroutine HRLOOP to increment the number of
           hours remaining in the year if the FULLDATE variable
           equals the ISDATE variable. This affects all pollutants
           and all source types.

-----  Enhancements:

       1.  Modified subroutine POLLID to allow for an additional
           user-specified field to disable the special processing
           associated with the 1-hr NO2, 1-hr SO2 and 24-hr PM2.5
           NAAQS, which are based on a multi-year average of ranked
           maximum daily values (1-hr values in the case of NO2 and
           SO2 and 24-hr values in the case of PM2.5). The optional
           field allowed after than pollutant ID can be ‘H1H’, 
           H2H’, or ‘INC’ (without the single quotes), indicating
           that the results will be processed consistent with a
           deterministic standard, such as the original 3-hr and 24
           hr SO2 standards, which could be exceeded once per year,
           and consistent with PSD increments, which can also be
           exceeded once per year. These options are intended to
           provide a mechanism for modeling to demonstrate
           compliance with the 24-hr PM2.5 increments, and also to
           provide a mechanism to evaluate the various NO2 chemistry
           options incorporated in AERMOD without the requirement
           for modeling complete years of meteorological data. This
           affects NO2, SO2, and PM2.5 pollutants and all source types.

       2.  Modified subroutine DEBOPT to include a new AREA/LINE
           debug option, which is output to a separate file,
           including an optional user-specified file name. This
           includes additional information regarding AREA/LINE (and
           OPENPIT) calculations as compared to the AREArelated
           debug information included under the previous DEBUG
           option. Also modified subroutines ACALC and PSIDE to
           output AREA/LINE debug information under the new AREA
           LINE debug option. Debug information is no longer
           included in the main ‘aermod.out’ file. This affects all
           pollutants and AREA, LINE, and OPENPIT source types.

       3.  Modified subroutine MEOPEN to check for flags in the
           header record of the input SURFFILE indicating that MMIF
           generated meteorological inputs were used, which is
           currently treated as non-DFAULT/BETA option, and for use
           of BULKRN option, which is treated as a DFAULT option.
           Subroutine MEOPEN also checks for measurement heights in
           the input PROFFILE file and issues a warning if heights
           exceed 999m, which could indicate that inputs were based
           on MMIF or other gridded meteorological data that were
           processed in a manner that did not include identifying
           information in the surface file header record (e.g.,
           processing MMIF-generated pseudo- surface and upper air
           data with user-defined surface characteristics rather
           than the AERSURF file generate by MMIF. Subroutine MEOPEN
           was also modified to include checks for blank/missing
           upper air, surface and/or onsite station IDs in the
           surface file header record, and issues warning messages
           if the respective station IDs specified on the ME pathway
           in the aermod input file are not zero (0). This affects
           all pollutants and all source types.

       4.  Modified subroutine PRTSRC to include a table of SrcIDs
           for sources identified as urban sources under the
           URBANSRC keyword. This affects all pollutants and all
           source types.

       5.  Modified subroutine PRTDET to include the original GrpVal
           concentration from the Non-EVENT run in the header
           information for the DETAIL output option under EVENT
           processing. This affects all pollutants and all source
           types.

-----  Miscellaneous:

       1.  Modified subroutine PRTOPT to include additional
           information on the initial input summary page of the 
           aermod.out’ file related to the use of NO2 options, and
           to identify which debug options have been selected on the
           CO DEBUGOPT keyword. This affects NO2 pollutants and all
           source types.

       2.  Modified subroutine SRCQA to issue a warning message,
           instead of a fatal error, if source group ALL is not
           included for the ARM or ARM2 options. The revised
           implementation of the ARM and ARM2 options in v14134 of
           AERMOD no longer requires the user to specify source
           group ALL. This affects NO2 pollutants and all source
           types.

       3.  Modified subroutine PRESET, SETUP, PREINCLUD, and EV
           SETUP to check for blank records in the ‘aermod.inp’ file
           and cycle the read loop based on LEN_TRIM(RUNST1) = 0, to
           optimize processing of the aermod input file by avoiding
           unnecessary calls to LWRUPR, DEFINE and GETFLD. Also
           modified to include comment records from the CO, SO, and
           ME pathways from the non-EVENT input file in the EVENT
           file. This affects all pollutants and all source types.

       4.  Modified subroutine METEXT to replace the logical
           variable L_NewMetData used to flag whether input surface
           met file includes NAD/ADJ flags introduced with version
           11059 of AERMOD with variable L_NAD_ADJ_Flags for better
           clarity. This affects all pollutants and all source
           types.

       5.  Modified subroutines HEADER, PRTOPT, and EVSET to
           generate and use a character string containing only the
           applicable modeling options to include in the header
           records of the ‘aermod.out’ file and other text output
           files, rather than printing the entire ModelOpts array
           including blank fields, as done in previous versions. The
           new model options string is also included in the header
           records for all of the DEBUG option files, except for the
           DEPOS debug file. This affects all pollutants and all
           source types.

       6.  Modified subroutine BACK_GRND to include additional
           checks on the optional user-specified Fortran FORMAT
           statement for reading the background data and issues
           warning messages to flag potential errors. This affects
           all pollutants and all source types.

       7.  The “acceptable” AERMET version date has been modified to
           version 12345, and AERMOD will not run if meteorological
           data generated by earlier versions of AERMET are input.
           AERMOD will run if meteorological data from versions
           12345 or 13350 are used, but a warning message will be
           issued and AERMET version 14134 should be used for
           regulatory applications of AERMOD. This affects all
           pollutants and all source types.

       8.  Several obsolete error/warning messages associated with
           inputs exceeding array limits were consolidated since
           array sizes are dynamically allocated at runtime. This
           affects all pollutants and all source types.

=======================================================================

       This revised version of AERMOD (dated 13350) includes the
       following modifications relative to the previous version
       (dated 12345); see MCB#9 and AERMOD User's Guide Addendum.

-----  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 swithed 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-devide 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 inforation 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 direcion. 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 runime 
           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.

       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 to 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 
              errors occur to faciliate 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.


-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       December 16, 2013

-----  MODIFIED FROM:        AERMOD
                       (Version Dated 12345)


=======================================================================

       This revised version of AERMOD (dated 12345) includes the
       following modifications relative to the previous version
       (dated 12060); see MCB#8 and AERMOD User's Guide Addendum.

-----  Bug Fixes:

       1.  Adjustments to wind speeds based on the assumption that input
           wind speeds are vector (or resultant) mean winds have been 
           removed (see Eq. 112 on page 79 of the AERMOD Model Formulation 
           Document, EPA-454/R-03-004). This is considered a formulation bug
           fix since current EPA guidance for site-specific meteorological 
           monitoring (EPA-454/R-99-005) recommends that scalar mean wind 
           speeds be used in steady-state Gaussian dispersion models. 
           Furthermore, all wind speeds derived from NWS or FAA airport 
           data represent scalar mean wind speeds.  
       
           An option has also been included on the MODELOPT keyword 
           on the CO pathway (VECTORWS) that allows users to specify that 
           input wind speeds are vector means, in which case the previous 
           adjustments will be included. The new VECTORWS option is not 
           linked with the DFAULT option, but users should be able to 
           confirm that input speeds are vector means in order to justify 
           use of the option.  However, scalar mean wind speeds, if 
           available, should be used based on the current guidance.  
           This change affected several subroutines.
    
       2.  Modified subroutine HRLOOP to correct a problem associated
           with missing hourly ozone data during MAXDCONT post-processing
           when no O3 values have been specified for substitution through
           the OZONEVAL or O3VALUES keywords on the CO pathway. The 
           MAXDCONT results in those cases were invalid and may have 
           shown up as negative concentrations.
    
       3.  Modified subroutines DAYRNG, METEXT, and SET_DATES 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.  Also included checks of the year specified on
           the SURFDATA keyword with the first year included in the surface
           meteorological data file. The ISYEAR variable is now adjusted to 
           match the first year of the data file, unless the DAYRANGE keyword 
           is being used. In that case, a fatal error is generated since the 
           ISYEAR variable is used to determine leap vs. non-leap years for 
           the YR/MN/DY conversion to Julian day for the DAYRANGE option.
           
       4.  Modified subroutine HRQREAD to check for large negative hourly 
           emissions (< -90), which may be used as missing indicators.
           Since AERMOD allows inputs of negative emissions for use in 
           emission credit calculations, negative values used as missing 
           indicators in the HOUREMIS file resulted in negative hourly 
           concentrations in the previous versions.  Warning messages are 
           generated and the emission rate is set to zero (0) for these cases.
           
       5.  Modified subroutine EVALFL to address a potential problem 
           with URBAN applications where the L_MorningTrans logical
           variable was not defined.

       6.  Modified MAIN program and subroutine PRESET to check for 
           duplicate STARTING keywords on the SO or RE pathways,since
           that would reset the array limits for setup arrays to zero
           during the PRESET phase, resulting in array subscript 
           out-of-bounds runtime errors.


-----  Enhancements:
    
       1.  Incorporated two new BETA (non-Default) options to address
           concerns regarding model performance under low wind speed
           conditions.  The LOWWIND1 option increases the minimum value
           of sigma-v from 0.2 to 0.5 m/s and "turns off" the horizontal
           meander component. The LOWWIND2 option increases the minimum
           value of sigma-v from 0.2 to 0.3 m/s, and incorporates the 
           meander component, with some adjustments to the algorithm, 
           including an upper limit on the meander factor (FRAN) of 0.95.
           A new LOW_WIND keyword has been added to the CO pathway that
           allows users to adjust the minimum sigma-v value (within a
           range of 0.01 to 1.0 m/s), and the minimum wind speed value
           (within a range from 0.01 to 1.0 m/s), with a default value
           of 0.2828 m/s, consistent with the default applied in previous
           versions based on SQRT(2*SVmin*SVmin) with SVmin=0.2. The new
           LOW_WIND keyword also allows users to adjust the maximum value
           for the meander factor (FRAN) within a range of 0.50 to 1.0,
           inclusive, when the LOWWIND2 option is used.  Both of the new 
           LowWind BETA options also modify the the adjustment of vector 
           mean wind speeds (based on Eq. 112, p. 79, of the AERMOD Model 
           Formulation Document) to use the original values of sigma-v
           before they are adjusted based on SVmin. The new LOWWIND1
           and LOWWIND2 options are mutually exclusive and the model will
           issue a fatal warning message if both options are specified.
   
           These new LowWind BETA options can also be used in conjunction 
           with the new option in AERMET (v12345) to adjust the surface 
           friction velocity (U*) under low-wind/stable conditions (ADJ_U*), 
           based on Qian, W., and A. Venkatram, 2011: "Performance of Steady-
           State Dispersion Models Under Low Wind-Speed Conditions", Boundary-
           Layer Meteorology, 138, 475-491. The ADJ_U* option in AERMET is 
           also considered a non-Default option, and users must also specify 
           the BETA option on the MODELOPT keyword in AERMOD in order to 
           process meteorological inputs derived using the new ADJ_U* option. 
           See the AERMET Model Change Bulletin (MCB) #3 and AERMET User's 
           Guide Addendum for additional details regarding the ADJ_U* option 
           in AERMET.
           
           The new LowWind BETA options in AERMOD and the new ADJ_U*
           option in AERMET are considered to be non-Default options
           and are therefore subject to the alternative model provisions
           in Section 3.2 of Appendix W (40 CFR Part 51). Users should
           coordinate with the appropriate reviewing authority regarding
           the procedures and requirements for approval of these BETA
           options for regulatory modeling applications.
          
       2.  A new LINE source type has been included that allows users
           to specify line-type sources based on a start-point and 
           end-point of the line and the width of the line, as an 
           alternative to the current AREA source type for rectangular
           sources. The LINE source type utilizes the same routines as
           the AREA source type, and will give identical results for 
           equivalent source inputs.  The LINE source type also includes
           an optional initial sigma-z parameter to account for initial
           dilution of the emissions. As with the AREA source type, the
           LINE source type does not include the horizontal meander 
           component in AERMOD. This change affected several subroutines
           and also includes a new LPARM subroutine.


-----  Miscellaneous:

       1.  Modified subroutine HRQEXT to include additional range checks
           on hourly stack exit velocities and exit temperatures input
           through the HOUREMIS option. A fatal error is 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. This may indicate that 
           incorrect units for exit temperature have been used, or that 
           the order of exit temperature and exit velocity may have been 
           reversed in the HOUREMIS file. Also added a new warning message 
           for exit velocities larger than 250 m/s. Comparable changes 
           were incorporated also in subroutine PPARM for inputs on the 
           SRCPARAM keyword.

       2.  Modified subroutine MEOPEN to adjust the acceptable AERMET
           version date from 06341 to 11059. AERMOD will no longer run
           with met data based on version 06341 of AERMET.  AERMOD will 
           run using met data based on version 11059. However, a warning 
           message will be generated, and users are strongly encouraged 
           to update their meteorological data to version 12345 of AERMET
           due to the scope of changes included in that update.

           
-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       December 10, 2012

-----  MODIFIED FROM:        AERMOD
                       (Version Dated 12060)


=======================================================================

       This revised version of AERMOD (dated 12060) includes the
       following modifications relative to the previous version
       (dated 11353); see MCB#7.

-----  Bug Fixes:

       1.  Modified subroutine MAXDCONT_LOOP to correct problems with the
           MAXDCONT option for applications that vary emissions (EMISFACT), 
           background ozone data (O3VALUES), or background concentrations 
           (BACKGRND) with a day-of-week component, e.g., SHRDOW or SHRDOW7, 
           etc. Also modified subroutine MAXDCALC to correct the MAXDCONT 
           option for applications that include hourly emissions (HOUREMIS) 
           for at least one source, but not all sources. Both of these bugs 
           associated with the MAXDCONT option may have caused significant 
           errors in the source group contributions in the MAXDCONT output 
           file. 
   
           Subroutine MAXDCONT_LOOP was also modified to include checks on 
           the consistency between results in the SUMVAL_MAXD and SUMHNH 
           arrays for the "target" source group under the MAXDCONT option. 
           The SUMVAL_MAXD array values are recalulated during the MAXDCONT 
           processing, whereas the SUMHNH array values are calculated during 
           normal processing. Results in these two arrays should match for 
           the "target" source group. These consistency checks will serve
           to flag any potential problems with the MAXDCONT option.

       2.  Modified subroutine O3READ to correct a problem with the OLM and
           PVMRM options under the EVENT processing mode when only the 
           CO OZONEVAL keyword is used to specify a background ozone value,
           without an hourly ozone file through the CO OZONEFIL keyword or
           varying ozone values through the CO O3VALUES keyword.  Previous
           versions effectively assumed a background ozone value of 0 (zero)
           in these cases, resulting in underestimated source contributions 
           in the EVENT output file.

       3.  Modified subroutine LTOPG to use code from CTDMPLUS (also used
           in CALPUFF) for estimating PG class from Monin-Obukhov length 
           and surface roughness based on Golder (1972). The CTDMPLUS code
           more closely matches the PG-class curves in Figure 4 of the Golder 
           (1972) paper. The LTOPG routine is only used to determine the
           stability-dependent distance for transitioning to a virtual point 
           source approximiation for area sources under the FASTAREA
           or FASTALL options.
           
-----  Enhancements:
   
       1.  Modified subroutines PRESET, SRCSIZ, and URBANS to allow for 
           the use of URBANSRC ALL on the SO pathway to indicate that 
           all sources are to be treated as URBAN sources. This option 
           assumes that only one (1) urban area has been defined using 
           the CO URBANOPT keyword.
   
       2.  Modified subroutines PRESET and MECARD and added subroutine 
           NUMYR to allow the user to specify the number of years of 
           meteorological data that are being processed for a particular 
           run.  The option is exercised with the new NUMYEARS keyword on 
           the ME pathway. The value specified on the NUMYEARS keyword 
           is used to allocate storage for the arrays that are used in 
           the MAXDCONT option, and allows the user to reduce the memory 
           storage requirements under the MAXDCONT option when less than 
           five (5) years of met data are being used. The default number 
           of years used for the MAXDCONT array allocation without the 
           NUMYEARS keyword is still 5 years (formerly specified by 
           the NYEARS PARAMETER).
   
-----  Miscellaneous:
   
       1.  Modified subroutine ALLRESULT to eliminate the arrays of 
           profile met data (the observed data in the PROFFILE input) 
           by hour-of-year, level, and year for use with the MAXDCONT 
           option. The profile met data arrays are not needed for the 
           MAXDCONT option and their removal reduces the memory 
           requirements for that option. Additional adjustments to the
           array allocations for the MAXDCONT option were made based
           on the options used for a specific model run in order to 
           minimize the memory requirements for the MAXDCONT option.
           Subroutine ALLRESULT was also modified to improve the 
           accuracy of the memory storage estimates included on the
           first page of the AERMOD.OUT file.
   
       2.  Modified subroutine OUMAXD_CONT to include checks on the use 
           of a limited range of ranks (specified on the OU RECTABLE 
           keyword) with the THRESH option on the OU MAXDCONT keyword. 
           A fatal error message will be generated if the range of ranks 
           specified is less than or equal to the design value rank for 
           the specified pollutant plus 4, i.e., a fatal error will be 
           generated if the range of ranks is less than or equal to 8 
           for 1-hr SO2, or less than or equal to 12 for 1-hr NO2 or 
           24-hr PM2.5. A non-fatal warning message is also generated 
           if the range of ranks is less than or equal to the design 
           value rank plus 20, i.e., if the range of ranks is less than 
           or equal to 24 for 1-hr SO2, or less than or equal to 28 for 
           1-hr NO2 or 24-hr PM2.5.


-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       February 29, 2012

-----  MODIFIED FROM:          AERMOD
                       (Version Dated 11353)


=======================================================================

       This revised version of AERMOD (dated 11353) includes the
       following modifications relative to the previous version
       (dated 11103); see MCB#6.

-----  Bug Fixes:

       1.  Modified subroutines METEXT, MAXD_METEXT, ALLRESULT to fix the
           MAXDCONT option for URBAN applications. Source contributions 
           reported in MAXDCONT files generated by the previous version
           could be erroneous for applications involving URBAN sources.

       2.  Modified subroutine OUTQA to include logical variable PLFILE 
           for PLOTFILEs in the check for output file options that use
           the FILEFORM keyword specifying whether fixed-format or 
           exp-format is used. Previous versions erroneously issued 
           warning message W399 if PLOTFILE was the only relevant output 
           option used with the FILEFORM keyword.

       3.  Modified subroutine O3VALS to correct the test for number of 
           parameters to be .GE. 4 to allow for the ANNUAL option.

       4.  Modified subroutine METEXT to only increment the hour index and 
           year index if MAXDCONT option is being used. This change avoids 
           unnecessary runtime error if the met data file includes a single 
           hour (or more) beyond the maximum number of years specified by the 
           NYEARS PARAMETER, which is initialized to 5 in the MAIN1 module.

       5.  Modified subroutine PRTO3VALS to use the O3FLAG variable which
           identifies the user-specified option for defining temporally-
           varying background ozone concentrations. The previous version 
           erroneously referenced the BFLAG variable associated with 
           user-specified BACKGROUND concentrations. This error would not
           have affected modeled concentrations based on the previous 
           version of the model, but could result in a runtime error due 
           to an array subscript out-of-bounds for some applications, or 
           could result in skipping the summary of user-specified ozone
           values in the output file for some applications.


-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       December 19, 2011

-----  MODIFIED FROM:          AERMOD
                       (Version Dated 11103)


=======================================================================

       This revised version of AERMOD (dated 11103) includes the
       following modifications relative to the previous version
       (dated 11059); see MCB#5 and updated User's Guide Addendum.

-----  Bug Fixes:

       1.  Modified subroutine MXDLYFL to include an IF-THEN block 
           to account for cases with NHIMXDLY = 1, i.e., only the 
           1st-highest rank was selected on the RECTABLE keyword.  
           The previous version (11059) resulted in all short-term 
           values being 0.0 if only the 1st-highest rank was selected 
           for applications involving the special processing for 
           daily maximum values (24hr PM25, 1hr NO2 and 1hr SO2).
           This bug did not affect the results for applications
           that included other ranks on the RECTABLE keyword,
           including single ranks other than 1st-highest or any
           range of ranks, or applications that do not utilize
           the special processing for the 24hr PM25, 1hr NO2 and 
           1hr SO2 NAAQS.

-----  Miscellaneous:

       1.  Modified subroutines O3FIL and BACK_GRND to include checks
           for potential problems with the Fortran format specifier 
           for hourly ozone files and hourly background files.  The 
           hourly ozone and/or background concentrations may have been 
           assigned values of zero (0) in previous versions of AERMOD 
           if the user-specified Fortran format includes an integer 
           (I) format to read the concentration values.  This could
           significantly affect modeled concentrations for the OLM
           and PVMRM options based on hourly ozone data, without any
           clear indication of a problem.  The user-specified format
           must use an integer format to read the date variables and
           a real format (F, E, or D) to read the concentration 
           variable.  Warning messages will be generated if the format
           does not meet these requirements.  In addition, the compiler
           options for the AERMOD executable distributed on SCRAM have 
           been modified to include an option to check for consistency 
           between variable types and format specifiers, which will 
           cause AERMOD to issue a fatal error when reading the file 
           in cases where real variables are read with an integer
           format, or vice versa.  The AERMOD User's Guide Addendum 
           has also been modified to clarify the requirements for 
           user-specified Fortran formats with these options.


-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       April 13, 2011

-----  MODIFIED FROM:          AERMOD
                       (Version Dated 11059)


=======================================================================

       This revised version of AERMOD (dated 11059) includes the
       following modifications relative to the previous version
       (dated 09292); see MCB#4 and updated User's Guide Addendum:

-----  Bug Fixes:

       1.  Modified subroutines PVMRM_CALC, MAJOR_CONT, and 
           MOLES_NOX to include calls to subroutine SETSRC for 
           all source types, and modified subroutine SETSRC to 
           initialize arrays for area source dimensions and 
           initial sigmas to correct initialization problems 
           with the PVMRM option.  Also modified subroutine 
           RELDISP to more appropriately account for initial
           sigmas for volume and area sources in the calculation 
           of relative dispersion coefficients for determining 
           plume volume.

       2.  Modified subroutines PVMRM_CALC and MOLES_NOX to
           include calls to subroutine EMFACT to apply emission
           factors, if appropriate, in order to use the 
           EMISFACT-adjusted emission rates in the calculations
           of the moles of NOx. Previous versions used the 
           emission rate specified on the SRCPARAM keyword
           to calculate the models of NOx.

       NOTE:  These bugs related to the PVMRM option could have 
              significant impacts on modeled concentrations using 
              the PVMRM option with the EMISFACT option and/or with
              mixed source types.  The magnitude and bias of the
              differences associated with these bugs will depend on 
              the specifics of the application, but there may
              be a tendency to overestimate NO2 concentrations 
              for POINT sources due to the first item when the 
              application also included VOLUME sources with large
              initial sigma values.

       3.  Modified subroutine HRLOOP to skip call to CHK_ENDYR
           to determine whether the end of the year has been 
           reached if the NOCHKD or WARNCHKD options are specified, 
           since the end-of-year processing is only applicable to
           sequential meteorological data.  Since the NOCHKD option
           is invoked if the SCREEN option is specified, the call
           to CHK_ENDYR will also be skipped for screening met data
           with AERSCREEN.
           
       4.  Modified subroutine CHKDAT to correct problems with 
           date sequence checks involving gaps of complete days 
           or complete years.  A gap of complete calendar years 
           is allowed even without the NOCHKD or WARNCHKD options
           to account for missing years due to data completeness
           issues for applications involving design values that
           are based on multi-year averages (e.g., 1hr NO2/SO2
           and 24hr PM2.5).
        
       5.  Modified subroutine TERRST to correct problems with 
           determining the number of calm and/or missing hours 
           only for the data period that is processed.   

       6.  Modified subroutine EVLINI to include initializations
           for SZMAX(:) and HSBLMX(:) arrays used for EVALFILEs.

       7.  Corrected subroutines OUMXFL, OUPOST, OUPLOT, PERPST, 
           PERPLT, OUTOXX, OUSEAS, OURANK, and OUEVAL to set lower 
           limit for acceptable user-specified file units to 31, 
           in order to avoid potential conflicts with hardcoded 
           file units. Previous version incorrectly used '.LT. 30' 
           rather than '.LE. 30' for checks on user-specified file 
           units, allowing for potential file units conflicts with 
           the debug file for particle deposition velocities.

-----  Enhancements:

       1.  A number of enhancements have been incorporated to more 
           fully support the form of the new 1-hour NO2 and SO2 
           NAAQS, as well as the 24-hour PM2.5 standard.  The 
           form of these standards are similar in that they are 
           based on a ranked percentile value averaged over the 
           number of years processed.  To more fully support 
           implementation of recent guidance on these NAAQS, 
           the RECTABLE keyword has been modified to allow 
           user-specified ranks of short-term averages (for all 
           pollutants) up to the 999th highest value.  The 
           previous version of AERMOD was limited to the 
           10th-highest value and also restricted the rank 
           for the 24-hour PM2.5 NAAQS to the 8th-highest value
           (corresponding to the 98th percentile of daily values
           during a year).  Note that the range of ranks specified
           on the RECTABLE keyword (not the individual ranks) also
           determines the range of ranks that may be considered 
           with the new MAXDCONT option, described below.

       2.  Added new MAXDAILY option on the OU pathway to output a 
           summary of daily maximum 1-hour values for each day
           processed.  These files provide an interim output product
           that may be used to analyze new 1-hour NO2 and SO2 NAAQS
           based on a specified percentile rank of daily maximum 
           1-hour values.

       3.  Added new MXDYBYYR option on the OU pathway to output a
           summary of daily maximum 1-hour values by year and rank.  
           These files provide an interim output product that may
           be used to analyze the new 1-hour NO2 and SO2 NAAQS based 
           on a specified percentile rank of daily maximum 1-hour 
           values.

       4.  Added new MAXDCONT option on the OU pathway to output a
           summary of source group contributions to high ranked values
           for a target group, averaged across the number of years 
           processed and paired in time and space.  The new MAXDCONT 
           option is applicable to daily maximum values for the 24-hour 
           PM2.5 NAAQS and the new 1-hour NO2 and SO2 standards, and
           can be used to determine whether a source or a group of 
           sources contributes significantly to modeled violations of
           the NAAQS, paired in time and space.

       5.  For applications addressing the 24-hour PM2.5 standard 
           or the 1-hour NO2 and SO2 standards, which are based on 
           ranked values averaged across the number of years modeled, 
           the PLOTFILE option has been enhanced to include values 
           for each of the years processed based on the specified 
           rank, in addition to the multi-year average.

       6.  Added new BACKGRND option on the SO pathway to allow 
           users to specify background concentrations, which can
           be added to impacts from modeled emission sources to 
           determine cumulative impacts.  Background concentrations
           can be varied temporally using options similar to the
           EMISFACT keyword for temporally-varying source emissions.
           The new BACKGRND keyword also allows an option to use
           a separate file of background concentrations on an hourly
           basis. Applications with hourly background concentrations
           can also include temporally-varying background values 
           based on the EMISFACT options, such as SEASHR for season
           by hour-of-day, which are used to substitute for missing
           hourly values.

       7.  For applications using the OLM or PVMRM options for NO2, 
           a new option for specifying background ozone concentrations 
           has been incorporated.  Similar to the new BACKGRND keyword, 
           the new O3VALUES keyword on the CO pathway allows the user 
           to specify temporally-varying background O3 concentrations 
           using many of the same options available on the EMISFACT 
           keyword for source emission factors.  The O3VALUES keyword 
           can be used by itself or in conjunction with an hourly 
           ozone file.  In the latter case, the O3VALUES are used to 
           fill in for missing values in the hourly ozone file.
           A separate OZONUNIT keyword is also available on the CO
           pathway to specify units for the concentrations input 
           through the O3VALUES keyword.

       8.  Incorporated the equilibrium NO2/NOx ratio component of the
           PVMRM option into the OLM option for estimating conversion 
           from NOx emissions to ambient NO2 concentrations. The same
           NO2EQUIL keyword on the CO pathway can be used to specify
           the equilibrium ratio for either option, and a default 
           ratio of 0.90 is assumed for both options if the NO2EQUIL
           option is omitted.
 
       9.  Modified subroutine DEBOPT to allow user to specify
           debug output only for PVMRM or deposition options
           on the DEBUGOPT keyword, avoiding large output files 
           under the MODEL debug option. Debug output for deposition 
           options will still be generated if the MODEL debug option 
           is selected. See AERMOD User's Guide Addendum for details 
           on the DEBUGOPT keyword.  Also assigned file unit 9 to 
           variable PVMDBG for the PVMRM debug file, and adjusted 
           the PVMRM debug output to report total PercentNO2, 
           including in-stack NO2/NOx contribution.

      10.  A modification to the urban option has been implemented 
           to address issues with the transition from the nighttime 
           urban boundary layer to the daytime convective boundary 
           layer. Under the new default urban option, the model will
           continue to apply the urban boundary layer approach for
           urban sources until the daytime convective boundary layer
           exceeds the population-dependent urban boundary layer 
           height. This enhancement is desribed in more detail in 
           Appendix E of the updated AERMOD User's Guide Addendum.  
           A non-DFAULT option has also been included to allow
           users to revert to the original urban implementation.

      11.  Increased the maximum length of source IDs from 8 to 12
           characters, and increased the length of EVENT names from
           8 to 10 characters, involving modifications to several 
           subroutines.

      12.  Included a new NOHEADER keyword on the OU pathway to allow
           users to suppress the file header records for formatted 
           output files.


-----  Miscellaneous:

       1.  Modified subroutines CHK_ENDYR, PRTPM25, PRTPM25SUM,
           OUHIGH, and PRTOPT to allow for user-specified rank for
           processing PM2.5 24-hour averages to accommodate current
           recommendations for PM2.5 modeling. Also changed the
           name of array used to store these values from SUMH8H 
           to SUMHNH.

       2.  The table of distances used in calculating the dominant 
           plume volume for the PVMRM option (in subroutine PLUME_VOL)
           was adjusted to use a more logical progression of distance 
           intervals and to reduce the total number of intervals. This 
           change may affect results slightly, but will also reduce 
           model runtime. 

       3.  Subroutine WAKFLG was modified to no longer ignore potential 
           downwash effects for stack heights that equal or exceed the 
           EPA formula height.  The determination of whether building
           downwash effects apply is based on the criterion implemented
           within the PRIME downwash algorithm.

       4.  Modified subroutine URBPOP to adjust the limit for issuing 
           a warning for urban population out-of-range from 10,000 to 
           21,206, which corresponds to a population density of 
           750/sq-km for an area within a 3km radius, consistent with 
           the Appendix W criterion for urban/rural determination based 
           on the population density.

       5.  Several miscellaneous changes to address output formatting 
           issues, replace DO loops with array assignments for array
           initializations, and other minor code cleanup.

       6.  Moved setup-related subroutines for EVENT processing option
           from the 'evcalc.f' source file to the 'evset.f' source file.


-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       February 28, 2011

-----  MODIFIED FROM:          AERMOD
                       (Version Dated 09292)

=======================================================================

       This revised version of AERMOD (dated 09292) includes the
       following modifications relative to the previous version
       (dated 07026); see MCB#3:

-----  Bug Fixes:

       1.  Modified subroutine OLM_CALC to correct initialization 
           problem with OLMGROUP keyword option.  The NO2VAL and NO_VAL 
           arrays need to be reinitialized for each receptor when the 
           OLMGROUP keyword is used.  This bug may result in significant
           errors in concentration estimates for applications of the
           OLM option with OLMGROUPs.  More details regarding this bug
           are provided in the Addendum to MCB#3.

       2.  Modified subroutine CHK_ENDYR to check for allocation
           status of allocatable arrays during array initializations;
           this has caused runtime errors on some compilers related to 
           initializing unallocated ALLOCATABLE arrays when ANNUAL or 
           PERIOD averages were calculated.         

       3.  Modified ISSTAT() array indices in subroutine SOCARD to
           eliminate potential conflicts among different options
           referencing the same index.

       4.  Modified subroutine MEOPEN to correct problems with
           processing of the 'SCREEN' option in the AERMET version
           date field of the header record of the surface file to 
           support the use of screening meteorological data with 
           AERSCREEN.

       5.  Modified subroutine SETIDG to use 'I8' format for an internal
           read of the source group ID from NUMID to avoid runtime errors 
           with some compilers.

       6.  Modified subroutines METEXT and MEREAD to include a more 
           robust check for stable or missing hours in calculation
           of solar irradiance (QSW) for use in dry deposition
           calculations.

       7.  Modified subroutine OUTQA to correct write statement for
           message '540' to accommodate MONTH average option, labeled
           as 720-hr option. Also modified subroutine OUTQA to include 
           error checking for file name and file unit conflicts across 
           output file options.

       8.  Modified subroutines OUMXFL, OUPOST, OUPLOT, PERPST, PERPLT,
           OUTOXX, OUSEAS, OURANK, and OUEVAL to set lower limit for
           acceptable user-specified file units to 31, in order to avoid 
           potential conflicts with hardcoded file units.  Also modified 
           file units for deposition debug files to be within the range
           established for hardcoded file units.

       9.  Modified subroutine METH_2 to check for out-of-range inputs
           for fine mass fraction (finemass) for the Method 2 particle
           deposition option.

      10.  Modified subroutine PLUME_VOL to include a call to subroutine
           PENFCT to calculate plume penetration factor.  This corrects
           potential errors with the PVMRM option for penetrated plumes.
    
      11.  Modified subroutine SIGZ to include a check on the sign of 
           TGEFF before calculation of BVFRQ to avoid potential runtime 
           errors.

      12.  Modified subroutine SRCQA to check for source being defined
           as both particulate and gaseous.  Also modified SRCQA to check
           for invalid shape of AREAPOLY source, identified with
           an area = 0.

      13.  Modified subroutine VDP1 to output ZRDEP instead of undefined
           variable ZREF.

      14.  Modified subroutine METQA to include error checking for a 
           value of wind speed reference height (UREFHT) of less than 
           0.001m for non-missing and non-calm hours. Fatal error issued
           to avoid runtime errors that may occur for values entered as 
           zero.

      15.  Modified several subroutines to address potential problems
           related to options that assume full years of meteorological
           data.  This includes modifications to subroutines STAEND and 
           METEXT for setting the month, day, and hour for the "end of 
           the year", based on the first hour of the meteorological data 
           file or on the STARTEND keyword, to resolve potential problems 
           for PM-2.5 and ANNUAL average applications in which the 
           "starting hour" is not 01.  Modified subroutine METEXT to 
           determine "end of the year" for the MULTYEAR option, and 
           modified subroutine HRLOOP to call CHK_ENDYR for the MULTYEAR 
           option to allow error checking for use of incomplete years or 
           periods longer than a year with the MULTYEAR option.  Modified 
           subroutine RSINIT to adjust the "starting hour" read from a 
           re-start file (based on the INITFILE or MULTYEAR keyword) by 
           adding 1 hour for the re-started model run.  Also improved the 
           error handling in subroutine STAEND for user-specified start and
           end dates, including a check for the user-specified STARTEND
           period being less than 1 complete year when the ANNUAL average
           option and/or the MULTYEAR option are specified, resulting
           in a setup error.

      16.  Modified code in subroutines RSINIT and METEXT to include
           checks for potential conflicts between the first date of met
           data file or the user-specified start date on STARTEND keyword
           being later than the "start date" from a re-start file.  This 
           data gap results in a fatal error message for INITFILE re-starts
           and a warning message for MULTYEAR re-starts.  Also checks for
           overlapping periods for MULTYEAR applications with start date
           from STARTEND keyword being earlier than start date from the 
           MULTYEAR re-start file.  This condition results in a fatal error
           message.

      17.  Modified subruotines METEXT and MEREAD to check for the
           meteorological data file starting hour, and issue appropriate
           warnings regarding short-term averages for the first day
           of data if the starting hour is not 01, since they may 
           represent partial data periods.  Modifications were also 
           made to subroutine MEREAD to cycle through the meteorological 
           data file until the hour matches the hour loop index for 
           EVENT processing.

      18.  Modified MAIN program to adjust the order of calls to 
           subroutine RSDUMP to write results arrays to the SAVEFILE
           for ANNUAL averages and for PERIOD averages with the MULTYEAR
           option.  These adjustments ensure that the summary of overall
           maximum PERIOD averages with the MULTYEAR option are based on
           the maximum individual PERIOD values across the years processed, 
           while the maximum ANNUAL averages reflect the multi-year 
           average of the ANNUAL values across the years processed.  
           The order of calculating averages by season and hour-of-day 
           with the SEASONHR option was also adjusted to ensure that the 
           SEASONHR averages are correct across the years of data processed.
           Subroutine PRTSUM was modified to include a message in the
           summary tables of maximum PERIOD and high ranked short-term
           averages to indicate the number of years represented by the 
           results when the MULTYEAR option is used.  Subroutine PRTOPT 
           was also modified to clarify what PERIOD averages represent 
           when the MULTYEAR option is used.

      19.  Modified several subrountines, including HRLOOP, METEXT,
           HRQREAD, O3READ, and O3EXT, to provide additional error
           handling for premature "end-of-file" (EOF) condition for
           input meteorological data, hourly emissions data (HOUREMIS
           keyword), and ozone data files.  A fatal error is generated 
           if the data files end before the "end date" specified by the 
           user on the STARTEND keyword.

      20.  Modified subroutines OUMXFL and OUPOST to correct problems
           with MAXIFILE and POSTFILE outputs for re-started model 
           runs using the SAVEFILE/INITFILE option.  The previous 
           version of AERMOD used the 8-digit date from the MAXIFILE
           and POSTFILE files to compare with the "full" 10-digit
           date read from the INITFILE, and also read the 8-digit 
           date from the wrong columns for POSTFILEs.  Also added
           error handling for missing MAXIFILE and/or POSTFILE
           files with INITFILE option, and for MAXIFILE and/or
           POSTFILE files with data past the start date for the
           MULTYEAR option.

      21.  Modified subroutine INCLUD to include the EV pathway to
           ensure proper handling of INCLUDED files for events on the
           EV pathway.  Also incorporated additional error handling
           for INCLUDED files.

      22.  Modified assignment of ILAND_NDX based on flow vector (AFV)
           in subroutine VDP to be consistent with assignment of the
           flow vector sector for downwash, IFVSEC.

      23.  Modified subroutine OCALC to correct the calculation of the
           adjusted emission rate for the point source approximation 
           for OPENPIT sources under the FASTAREA option to use the 
           length and width of the "effective" area source rather than 
           length and width of the original openpit source.  Also 
           modified subroutine ARDIST to recalculate the coordinates
           for the center of the "effective" area source used for the
           OPENPIT source algorithm, rather than using the center
           coordinates of the original OPENPIT source.

      24.  Modified several subroutines to correct and clarify aspects
           of the logic related to use of the deposition algorithms
           for both gas and particle deposition, especially in relation
           to the depletion options for applications including both
           gaseous and particulate emissions.  Previous versions of
           AERMOD would allow a particulate source and a gaseous source
           in the same model run for calculating concentrations only,
           but would indicate that dry and wet depletion were being 
           applied, even if no deposition parameters were specified 
           for the gaseous source.  The updated version will only 
           allow both gaseous and particulate sources in the same model
           run for concentrations if deposition parameters are also 
           specified for the gaseous source, or if dry and wet depletion 
           are turned off by specifying the NODRYDPLT and NOWETDPLT 
           options on the MODELOPT keyword.  Specifying NODRYDPLT and
           NOWETDPLT removes any requirement for deposition parameters 
           for the gaseous source. See the AERMOD User's Guide Addendum 
           for more details regarding use of deposition algorithms. 

-----  Enhancements:

       1.  Incorporated additional options under EMISFACT keyword to 
           vary emissions by hour-of-day and day-of-week (HRDOW and 
           HRDOW7).

       2.  Improved efficiency of allocating array storage, including
           more precise allocation of array limits for AREAPOLY and
           AREACIRC sources, more precise allocation for number of 
           particle size categories for particulate sources, and 
           allocating the building downwash arrays only when needed.  
           Also included additional informational messages to identify 
           where allocation errors occur with a list of array limits 
           and preliminary memory storage estimate to facilitate 
           diagnosis of problems.  Modifications made to MAIN program, 
           MODULE MAIN1, and subroutines ALLSETUP, ALLRESULT, PRESET, 
           and SRCSIZ.

       3.  Modified subroutines HRQREAD (renamed from HQREAD), HRQEXT,
           and EV_HRQEXT to allow option of specifying hourly varying 
           release height and initial dispersion coefficients for VOLUME 
           and AREA sources (including AREAPOLY and AREACIRC) through 
           the optional HOUREMIS file.  Also eliminated redundant code 
           for processing hourly emission files for 'normal' vs. 'event' 
           processing to ensure consistency and simplify code maintenance.

       4.  Increased maximum length for filenames to 200 (controlled by
           the ILEN_FLD parameter in modules.f), and the maximum input
           string length to 512 (controlled by the ISTRG parameter in
           modules.f).  Also modified subroutine DEFINE to allow double 
           quotes (") as field delimiters in the 'aermod.inp' file to 
           support filenames with embedded spaces.

       5.  Modified subroutines SRCQA and OCALC to allow for use of the 
           non-DFAULT METHOD_2 option for particulate emissions and for
           non-particulate (gaseous) emissions for OPENPIT sources.

       6.  Modified several subroutines to allow for the non-DFAULT 
           option of FLAT terrain to be specified for individual sources,
           allowing both FLAT and ELEV terrain treatments within the 
           same model run (see Section 4.1 of the AERMOD Implementation
           Guide regarding modeling of sources with terrain-following 
           plumes in sloped terrain).  This non-DFAULT option is 
           activated by specifying both 'ELEV' and 'FLAT' on the 
           CO MODELOPT keyword.  The user identifies which sources to
           model with the FLAT terrain option by specifying 'FLAT' (not
           case-sensitive) on the SO LOCATION keyword in place of the 
           field for source elevation.  Sources treated as FLAT terrain 
           will be identified in the 'aermod.out' file in the summary 
           tables of source input parameters.  The 'aermod.out' page 
           header of model options, and other output file headers, 
           will include the field 'FLAT and ELEV' to identify use 
           of this feature.                    

       7.  Incorporated a non-DFAULT option to optimize model runtime
           for POINT and VOLUME sources through an alternative 
           implementation of the horizontal meander algorithm,
           which preserves the centerline concentration based on 
           the DFAULT meander algorithm, but uses of an effective 
           sigma-y for the lateral spread of the plume. This eliminates 
           the upwind component of dispersion that occurs under the 
           DFAULT meander algorithm for POINT and VOLUME sources, 
           which should significantly reduce model runtime.  This 
           option is selected by including 'FASTALL' on the 
           CO MODELOPT keyword.  The FASTALL option also activates 
           the optimized treatment for AREA sources (including AREAPOLY, 
           AREACIRC, and OPENPIT sources) formerly associated with the 
           TOXICS option, which is now obsolete (see Item #22 below 
           under 'Miscellaneous' and the AERMOD User's Guide Addendum).

       8.  Incorporated non-DFAULT option for user-specified dry 
           deposition velocity for gaseous emissions, using the GASDEPVD 
           keyword on the CO pathway.  The user-specified dry deposition 
           velocity will be used for all gaseous sources.  Particulate 
           sources can also be included in the same model run, but no 
           wet deposition calculations (WDEP, DEPOS or WETDPLT) will
           be allowed.

       9.  Modified OPEN statements for input data files to use the
           ACTION='READ' specifier to allow file sharing across 
           multiple model runs.  This includes the 'aermod.inp' input
           file, INCLUDED files referenced from 'aermod.inp', surface 
           and profile meteorological inputs, hourly emission files, 
           and hourly ozone data files.

      10.  Added new SUMMFILE option on the OU pathway to output the 
           summary of high ranked values to a separate file.  The new
           SUMMFILE includes the "MODEL SETUP OPTIONS SUMMARY" page, 
           the summary of meteorological data periods processed and
           summary of first 24 hours of meteorological data, the
           summaries of high ranked values provided at the end of 
           the standard output file, and the summary of error and 
           warning messages.

      11.  Added new FILEFORM option on the OU pathway to allow
           the user to specify exponential-formatted rather than
           fixed-format output of model results (CONC, DEPOS, DDEP, 
           and/or WDEP) for external results files.  Output file 
           options affected by this feature are MAXIFILE, PLOTFILE,
           POSTFILE (using PLOT format), RANKFILE, and the SEASONHR
           file.  The default will continue to be fixed format for
           these output files.  Results included in the 'aermod.out' 
           file and optional SUMMFILE output file are not affected
           by this new keyword.  Also included checks on values that
           may exceed the output format limit, and a warning message
           is generated if the FILEFORM = EXP option is not used.

      12.  Modified several subroutines to include model run date
           and run time in the header records for output files,
           including the MAXIFILE, PLOTFILE, POSTFILE (using PLOT 
           format), RANKFILE, and SEASONHR file options.

      13.  Modified several subroutines to include a new option 
           on the MODELOPT keyword to issue warnings rather than
           fatal errors for records out of date sequence in the
           meteorological data files.  The new option is selected
           with the WARNCHKD parameter on the MODELOPT keyword.  
           This option is primarily intended for multi-year 
           meteorological data files that include gaps between 
           years of meteorological data.  The WARNCHKD option is 
           allowed under the regulatory DFAULT option, but should 
           only be used when processing files with data gaps is 
           clearly documented and justified.

-----  Miscellaneous:

       1.  Modified subroutine URBOPT to prohibit use of urban roughness
           length not equal to 1.0m for regulatory DFAULT applications, 
           as discussed in Section 5.3 of the AERMOD Implementation Guide.  
           Also modified limits on urban roughness length used to generate 
           warning messages.

       2.  Modified code (most modules and subroutines) to explicitly
           declare most non-integer variables as DOUBLE PRECISION.
           This addresses some long-standing concerns regarding the 
           potential sensitivity of the model to precision involving 
           UTM coordinates, with the full Northing coordinate near 
           the limit of single precision.  More serious concerns have 
           arisen recently with a case showing a consistent negative 
           bias of about 3 percent for modeled concentrations based on 
           source group ALL as compared to the sum of concentrations 
           from the same sources grouped separately.  These differences 
           were attributable to precision errors, with the group ALL 
           results biased low due to the impacts from many sources being 
           truncated as a result of the wide range of impacts across  
           sources.  This change should also result generally in more 
           consistent concentration estimates from AERMOD across different
           compilers, compiler options, and computing platforms.

       3.  Modified code in subroutines METEXT and MEREAD for processing
           multi-year meteorological data files to determine whether an 
           embedded header record is included between individual calendar
           years of data in the surface file, which may occur if the files
           have been concatenated.  An error while attempting to read 
           the data as a header record will be interpreted to mean that 
           there is no embedded header record, while the presence of a 
           colon (':') will be interpreted to mean that there is an embedded 
           header record. AERMOD should accept data with or without the
           embedded header records.  However, if multi-year surface files
           based on non-calendar year periods are concatenated, then the 
           embedded header records must be removed before input to AERMOD.
           The revised code also issues warning messages if UAIR and 
           SURF IDs do not match inputs in the runstream file for multiple 
           years since AERMOD allows mismatch (with warning) for single 
           year files.

       4.  Modified subroutines PRTANN, SPRTHT, and PRTPM25 to include
           EVALCART receptors with DISCCART receptors for output tables.

       5.  Expanded array sizes (in 'modules.f') to 50 for ICSTAT,
           ISSTAT, IRSTAT, IMSTAT, and IOSTAT arrays.  Also changed the
           index used for the FINISHED keyword on each pathway to 50
           instead of 25.

       6.  Removed obsolete code inherited from ISCST3 code, including
           TGSET.FOR and other references to the 'TG' (terrain grid)
           pathway; reference to IRSTAT(7) in subroutine RECARD and
           other references to BOUNDARY receptors in subroutine PRTDAY;
           'HE>ZI' option; and NWET parameter.  Also removed obsolete
           MODULE DEPVAR from the 'modules.f' source file.

       7.  Replaced *.pri "INCLUDE" files used for global data storage
           in PRIME subroutines with MODULE subprograms. The new MODULE
           subprograms are contained in the 'modules.f' source file.
           Also imposed explicit variable type declarations through use
           of IMPLICIT NONE within the PRIME portions of the AERMOD code.

       8.  Incorporated several modifications to subroutine PRTOPT, 
           including a more "refined" estimate of memory storage
           requirements, including the DFAULT urban roughness 
           length and a more complete summary of options when DFAULT
           option is not specified, correcting cosmetic problems with
           the output option summary for EVENT vs. standard processing,
           clarification of deposition option logic, inclusion of 
           emission and output units for both concentrations and
           deposition when needed, and more complete explanations 
           for some options.

       9.  Modified subroutine SRCQA to issue warning messages for 
           sources that are not included in any SRCGROUPs, modified
           checks for urban areas without urban sources, and changed
           warning to fatal error for urban areas with no urban sources.
           Additional error-checking for OLMGROUPs and PSDGROUPSs has
           also been included.

      10.  Modified criterion for issuing a warning message regarding
           aspect ratio for rectangular AREA sources being out of range,
           from an aspect ratio of 10:1 to an aspect ratio of 100:1. 
           The upper limit of aspect ratio for stable performance of 
           the numerical integration algorithm for area sources has not 
           been fully tested and documented, and may vary depending on 
           the specifics of the application.  A ratio of 10:1 is probably 
           too strict and may unnecessarily lead to a large number of 
           warning messages in some cases.  Users should always carefully 
           quality assure the source inputs provided to AERMOD for 
           accuracy and appropriateness for the application.

      11.  Added error message (number 499) to handle PRIME plume rise
           error when maximum number of downwind distances for numerical
           plume rise (MXNW) is exceeded. This error condition has
           occurred with application of Model Clearinghouse procedure
           for capped stacks (using large effective stack diameter),
           which is not appropriate with PRIME algorithms. Also
           modified subroutine NUMRISE to include additional information
           regarding this error message. 

      12.  Modified subroutine PRTSRC to remove reference to "STABILITY
           CATEGORY" and correct format statement 9024 for 'WSPEED' 
           EMISFACT option (inherited from legacy ISCST3 code for
           'STAR' option).

      13.  Modified subroutines PPARM, VPARM, APARM, APPARM, ACPARM, and 
           OPARM to issue a fatal error message for source release heights 
           that exceed 3,000 meters.  Such abnormally high release heights 
           have resulted in runtime errors and are considered beyond the 
           range of applicability for AERMOD.

      14.  Modified subroutines RANKFL and VARINI to increase number of
           high ranked values allowed in the RANKFILE option without
           overflowing the field, from 999 to 999,999.

      15.  Modified subroutine HEADER in aermod.f to use ASCII
           form feed character (ACHAR(12)) in 'aermod.out' file to 
           eliminate need for the non-standard CARRIAGECONTROL='FORTRAN'
           option in the OPEN statement for the 'aermod.out' file.  
           Modified subroutine FILOPN to eliminate the use of the 
           CARRIAGECONTROL='FORTRAN' option when opening the
           'aermod.out' file.  Also modified subroutine SETUP 
           to remove '1X' from format statements for echoing 
           the runstream inputs to the output file since Fortran 
           carriage-control is no longer applied.  These modifications 
           will improve the portability of the AERMOD code to other
           compilers and platforms.

      16.  Modified several subroutines to reflect updates to the
           listing of MODELOPT options based on other modifications
           to the model.  The summary of model options in the page
           header of output files has been modified to more clearly
           indicate when the regulatory default mode (DFAULT) is in
           effect and whether non-DFAULT options are being used for
           applications where the DFAULT option has not been specified.
           Also included error checking for conflicting options being
           included on the MODELOPT keyword, such as the DRYDPLT and
           NODRYDPLT options.

      17.  Modified subroutine PNPOLY to use an Internal Function 
           for EOR rather than a Statement Function, which has been 
           identified as obsolescent in Fortran 95.  

      18.  Modified subroutine METEXT to check for the presence of 
           additional variables in the surface meteorological file 
           needed for use of the deposition options when required.
           A fatal error is issued if less than the minimum number 
           of variables is included in the surface file.

      19.  Modified subroutines SURFIL and PROFIL in meset.f to remove 
           the optional user-specified READ format for the surface and 
           profile meteorological input files.  AERMOD assumes FREE 
           format for all input meteorological data files, i.e., the data 
           fields must be space or comma-delimited.  Note that the 
           "header" record for the surface file must conform to the 
           format used by AERMET.

      20.  Modified subroutines SOLOCA and RECARD to check for missing
           source or receptor elevations, coded as -9999.0 by AERMAP.
           Missing elevations will generate a fatal error, requiring the
           user to resolve the issue(s) associated with the missing 
           elevations.

      21.  Modified subroutine FILOPN in aermod.f to use lower case for
           'aermod.inp' and 'aermod.out' files.  Also modified Fortran
           source code filenames to use lower case with '.f' file
           extensions.  These changes may be important for operating
           systems that recognize case-sensitive file names.

      22.  Modified several subroutines to remove the non-DFAULT 
           TOXICS option, inherited by AERMOD from the ISCST3 model 
           code.  The area source optimizations previously activated 
           with the TOXICS option are now associated with the new
           non-DFAULT 'FASTAREA' option, and are also included under
           the new non-DFAULT 'FASTALL' option (see Item #7 above
           under 'Enhancements' and the AERMOD User's Guide Addendum).
           The TOXICS option is no longer required to utilize the 
           gas deposition options or the METHOD_2 option for particle
           deposition.  However, these options are still considered
           to be non-DFAULT options within AERMOD.  Also modified
           several subroutines to clarify reporting of deposition
           options in the 'aermod.out' file, including previously 
           undocumented options to turn off dry depletion (NODRYDPLT)
           and wet depletion (NOWETDPLT).

      23.  Modified subroutine MODOPT in coset.f to use fatal error
           (message number 204) for several options that conflict 
           with the regulatory DFAULT option, including the BETA,
           OLM, PVMRM, PSDCREDIT, SCIM, FASTALL, FASTAREA, and 
           AREADPLT options.

      24.  Modified subroutines COCARD and MECARD to skip keywords
           that are not valid for EVENT processing runs, including
           EVENTFIL, SAVEFILE, INITFILE, and MULTYEAR on the CO 
           pathway, and STARTEND and DAYRANGE on the ME pathway.  
           These keywords are not echoed to the input file created 
           with the EVENTFIL keyword, so this change would only 
           impact cases where these keywords were added to the
           EVENTFIL after the file was created by the standard 
           run, or EVENT input files created through other means.

      25.  Modified subroutines HRQREAD and O3EXT to allow for 
           4-digit years in the HOUREMIS and OZONEFIL data files.

      26.  Modified subroutine CHKREC to include a check for 
           receptors beyond MAXDIST from sources, using the center 
           coordinates for AREA/AREACIRC/AREAPOLY and OPENPIT 
           sources.  MAXDIST is set to 80km under the non-DFAULT 
           FASTALL and FASTAREA options.

      27.  Modified subroutine MYEAR to treat the 'H6H' field 
           for the MULTYEAR keyword as optional, with a warning 
           indicating that it is no longer required.

      28.  Modified subroutine METQA to calculate the total 
           precipitation amount from the surface met data file.
           Also modified subroutine SUMTBL to include the total
           precipitation amount with the message summary in the
           'aermod.out' file, and included a warning message for
           applications using wet deposition algorithms with a 
           total precipitation amount of zero (0).

      29.  Modified subroutine TERRST to determine the number of
           calm and/or missing hours only for the meteorological
           data period being processed when the STARTEND and/or 
           DAYRANGE keywords are used.  Also modified subroutine 
           SUMTBL to include the number of hours processed from 
           the meteorological data file in the message summary.

      30.  Modified subroutines PRTSUM and PRTPM25SUM to adjust 
           format of column headers and other write statements in
           the summary tables of high ranked values, including removal 
           of '1X' used to skip the Fortran carriage-control character, 
           which is no longer needed.

      31.  Miscellaneous code clean-up, including the removal of 
           extraneous Fortran 'SAVE' statements and specifying the
           SAVE attribute only where needed for local variable type
           declaration statements, removal of subroutines PRESOINC
           and PREREINC to eliminate unnecessary code redundancy, 
           removal of unused subroutine EV_CHKDAT, removal of obsolete
           PRIME subroutine NUMMET, removal of unused PARAMETERS in 
           MODULE MAIN1, replacement of DO loops for variable 
           initialization with array assignments, improved consistency 
           of error handling for processing of numeric inputs from 
           the runstream file, adjusting header format in subroutine
           SHOUT for SEASONHR files with multiple output typse, and 
           removal of code associated with "wet SCIM'ing" option 
           which is not supported in AERMOD.  The input format for
           the SCIMBYHR keyword has also been adjusted to remove 
           the parameters associated with wet SCIM'ing, but the
           model should still process input files based on the 
           previous format while issuing a warning message.


-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       October 19, 2009

-----  MODIFIED FROM:          AERMOD
                       (Version Dated 07026)

=======================================================================

       This revised version of AERMOD (dated 07026) includes the
       following modifications relative to the previous version
       (dated 06341); see MCB#2:

-----  Bug Fixes:

       1.  Corrected array indexing problem for POINT, POINTCAP, and
           POINTHOR sources in subroutine SOPARM that could result 
           in incorrect processing of SRCPARAM data for some sources 
           and/or incorrect issuance of fatal runtime errors for number
           of parameters specified (error code 'E201').

       2.  Modified subroutine SRCQA to include QA checks on the
           number of emission factors input for MHRDOW and MHRDOW7
           options.

       3.  Modified subroutines SRCSIZ and PRESOINC to correct
           potential problem with assignment of array size for
           MHRDOW option.

       4.  Modified subroutine SRCQA to use DOUBLE PRECISION in the
           calculation of area and centroid coordinates for AREAPOLY
           sources. This change avoids problems encountered with
           the Compaq Visual Fortran compiler producing erroneous
           results for some compiler options.

       5.  Modified subroutine MEREAD to assign non-array logical
           variables STABLE and UNSTAB for use in subroutine COMPTG
           for EVENT processing mode.

       6.  Modified subroutines PCALC, VCALC, ACALC and OCALC to
           include calls to subroutine HEFF prior to calculation of
           zsubp for deposition applications.

       7.  Modified subroutine HRQEXT for the HOUREMIS option to
           correct processing of missing parameters for point sources
           to assign all parameters to 0.0 if any of the parameters 
           are missing, in conformance with Section 3.3.9 of the 
           AERMOD User's Guide.

       8.  Modified subroutine VDP to prevent potential zero-divide
           condition for cases with zero specific humidity deficit.

       9.  Modified subroutines VARINI and RESINI to check for 
           allocation status of allocatable arrays during array 
           initializations.

-----  Miscellaneous:

       1.  Included additional error-checking for the non-DFAULT,
           BETA-test PSDCREDIT option.

       2.  Modified subroutine PRTSRC to correct format for printing
           QFLAG from A6 to A7 to accommodate SHRDOW7 and MHRDOW7,
           and other minor adjustments to formatting.

       3.  Modified code to read the header record of the surface file
           in subroutines MEOPEN, METEXT, and MEREAD to include a 
           separate test on the AERMET version date field under the 
           SCREEN option, to allow for the future use of screening 
           meteorology that is not directly linked to a specific
           version of the AERMET processor.  Also modified subroutine
           METDAT to include meteorological data version date in the
           summary of met data inputs.


-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       January 24, 2007

       MODIFIED FROM:          AERMOD
                       (Version Dated 06341)

=======================================================================

       This revised version of AERMOD (dated 06341) includes the
       following modifications relative to the previous version
       (dated 04300); see MCB#1:

-----  Bug Fixes:

       1.  Initialize HE = HS prior to first call to ADISY in
           subroutines ACALC and OCALC.

       2.  Replaced undefined variable lbd with .TRUE. in calls to
           WAKE_XSIG to ignore BID for "outside" cavity source
           in subroutine CAV_SRC.

       3.  Modified subroutine PRMDELH to save L_INWAKE to local
           variable.

       4.  Modified subroutines WAKE_DFSN and WAKE_DFSN2 to initialize
           dummy variables zkdum and ykdum to 0.0.  Otherwise these
           variables may be undefined in subrountine WAKE_SIG under
           some circumstances.

       5.  Moved call to RSDUMP for MULTYR option from subroutine
           HIPER to MAIN to resolve minor discrepancy in ANNUAL
           averages for MULTYR option.

       6.  Added arrays to store WDSIN and WDCOS by source for use
           in determining the wind direction for the dominant source
           in the PVMRM option.

       7.  Deleted code in subroutine PCALC that adjusts DHCRIT based
           on distance to well-mixed layer for stable conditions for
           consistency with Model Formulation Document.

       8.  Added error checking for missing GASDEPOS inputs.

       9.  Corrected variable type from INTEGER to REAL for variable
           NEWRAD (effective radius) in subroutine GENCIR for AREACIRC
           sources.

-----  Enhancements:

       1.  A new 'BETA' option has been added to the CO MODELOPT card
           to identify and allow use of new features added to the model
           that are still in a draft BETA-test status.  The  BETA option
           is a non-DFAULT option, and will be overridden if the DFAULT
           option is specified.

           The following two draft enhancements are included in
           this update to AERMOD under the BETA option:

           a) options for capped stacks (source type = POINTCAP) and for
              horizontal releases (source type = POINTHOR); and
           b) the PSDCREDIT option for PVMRM to account for NO/NO2 plume
              chemistry of combined plumes in the computation PSD credits.

           Inclusion of these draft BETA-test options does not imply
           any endorsement of their use for regulatory or non-regulatory
           applications of the model. In addition, the designation of
           BETA-test to these draft enhancements does not imply that
           these options have completed rigorous internal (Alpha) testing
           prior to being included in a public release of the model.

       2.  Additional options under EMISFACT keyword to vary emissions
           by month, hour-of-day, and day-of-week (MHRDOW and MHRDOW7).

       3.  Expanded urban option to allow multiple urban areas to
           be defined through multiple URBANOPT cards.  A new
           Urban ID parameter has been added to link sources with
           specific urban areas.  Existing input files with a single
           urban area do NOT need to be modified to run with this
           version of the model.

       4.  The following changes have been made to ensure consistency
           with the current PM NAAQS:

           a) Added special processing for PM-2.5 to calculate design
              values in accordance with the PM NAAQS.  The design value
              for 24-hour averages is based on the high-eighth-high (H8H)
              averaged over N years, as an unbiased surrogate for the 98th
              percentile.  The long-term design value for PM-2.5 is based
              on the highest annual average concentration averaged over
              N years using the ANNUAL keyword on the AVERTIME card.

           b) The "post-1997" PM-10 processing based on H4H averaged over
              N years has been removed since that standard was vacated.
              The PM-10 design value for 24-hour averages is based on the
              high-sixth-high (H6H) over five years (for NWS data), or more
              generally by the high-N+1-high value over N years. This can
              be accomplished using the existing CO MULTYEAR option with
              multiple 1-year input met data files, or using single
              five-year data files without the MULTYEAR option.

       5.  Added option to specify initial in-stack NO2 ratio for
           PVMRM and OLM options with CO NO2STACK card.  Default ratio
           without the NO2STACK card for OLM is 0.10.  No default ratio
           has been determined for PVMRM, so user must either use the
           CO NO2STACK card to initialize ratio for all sources, or
           specify ratio for each source using the SO NO2RATIO card.
           The SO NO2RATIO card can be used to override the value
           specified on the CO NO2STACK card for specific sources.

       6.  The maximum number of vertices for an AREAPOLY source is now
           allocated dynamically at runtime.  The previous version of
           AERMOD allowed a maximum of 20 vertices.  The maximum number
           of vertices allowed for AREACIRC sources is not allocated
           dynamically.  However, the maximum number of vertices allowed
           for AREACIRC sources will always be at least 50, and if both
           AREAPOLY and AREACIRC sources are included in the same model
           run, then the maximum number of vertices identified for the
           AREAPOLY sources will also define the maximum number allowed
           for the AREACIRC sources if it is larger than 50.

-----  Miscellaneous:

       1.  Added range check on value of vertical potential temperature
           gradient above ZI (variable VPTGZI), to avoid problems with
           data provided from sources other than AERMET.  A minimum
           value of 0.005 K/m is applied for consistency with AERMET,
           and a warning message is also generated for values larger
           than 0.10 K/m.

       2.  Refined the process of dynamically allocating array storage
           to skip allocation of arrays that are not needed based on the
           model options selected, in order to reduce unnecessary memory
           usage.

       3.  Removed calls to subroutines VDP and SCAVRAT from subroutine
           PLUME_VOL.

       4.  Removed references to obsolete BOUNDARY keyword for receptors
           in RECSIZ and PREREINC subroutines to allocate receptor arrays,
           and in subroutines PRTANN, SPRTHT, and PRTPM25 of OUTPUT.FOR.

       5.  Changed AMAX1/AMIN1 intrinsics to MAX/MIN.


-----  MODIFIED BY:    Roger W. Brode
                       U.S. EPA, OAQPS/AQAD
                       Air Quality Modeling Group

                       James O. Paumier (PSDCREDIT option)
                       MACTEC Federal Programs, Inc.

                       December 7, 2006

       MODIFIED FROM:          AERMOD
                       (Version Dated 04300)

=======================================================================

       This DRAFT version (dated 04300) includes the Plume Volume Molar
       Ratio Method (PVMRM) and the Ozone Limiting Method (OLM) for
       modeling conversion of NOx to NO2.  This work was supported by
       BP Exploration (Alaska), Inc., Phillips Exploration, Inc.,
       and the Alaska Department of Environmental Conservation.

       This DRAFT version (dated 04300) also includes the following
       modifications:

       1.  Dry depletion (DRYDPLT) and wet depletion (WETDPLT) are no
           longer optional for deposition applications.  These options
           for removal of mass from the plume due to dry and/or wet
           deposition processes will automatically be invoked for
           applications in which dry and/or wet deposition are
           considered.  The DRYDPLT and WETDPLT options on the
           MODELOPT card will be ignored, and need not be removed
           from the model input file for the model to run.

       2.  Correction made to area source algorithm, subroutine PLUMEF,
           to include a call to CRITDS to calculate the critical
           dividing streamline height for gaseous pollutants.  Also
           modified PLUMEF to correct a problem with the AREADPLT option.

       3.  Corrections made to area source and openpit algorithms,
           in subroutines ACALC and OCALC, to include tilted plume
           for point source approximation of particle emissions, and
           to include reinitialization of __VAL arrays at end of
           receptor loop (reinitializations also included in PCALC and
           VCALC for point and volume sources for consistency).  The
           latter correction fixes a potential problem with particle
           emissions for area sources when the point source
           approximation is used under the TOXICS option.

       4.  Corrected calling arguments for call to WAKE_SIG from
           subroutine WAKE_DFSN2, to use wakiz and wakiy instead of
           turbz and turby.

       5.  Minor correction made to wet deposition calculations to
           include lateral term (FSUBY) in weighting of direct
           and penetrated source contributions for WETFLUX.

       6.  Modified suroutine PRMCALC to place receptor on centerline
           of cavity plumes by setting Y2 = 0.0 for SCREEN option.

       7.  Modified subroutine SRCQA to calculate equivalent XINIT
           and YINIT values for AREAPOLY sources to allow for
           calculation of area of source under TOXICS option and
           for PVMRM option.  Also modified SRCQA to include a more
           refined computation of centroid for AREAPOLY sources.

       8.  Included check in subroutine METQA for absolute values of
           Monin-Obukhov length (OBULEN) less than 1.0.  Adjustment
           of OBULEN is made to limit ABS(OBULEN) .GE. 1.0.  The
           sign of OBULEN is assigned the opposite of the sign of the
           heat flux if OBULEN is 0.0.  This limit on OBULEN is
           already applied in AERMET, so this change in AERMOD will
           only affect input data generated by other means.

       9.  Moved call to SUB. METDAT ahead of call to SUB. SET_METDATA
           to avoid potential problem with negative (missing) 
           precipitation for first hour.

      10.  Added range check on gas deposition parameters to trap
           on input of zero (0.0) values.

      11.  Modified subroutine METQA to reduce number of extraneous
           warning messages, especially for hours with missing
           meteorological data.  Also modified range check for missing
           wind direction in subroutine CHKMSG.

      12.  Modified PLOTFILE output to include date field.

      13.  Modifications to some debug output statements based on
           code provided by ENSR.

       MODIFIED BY:    Roger W. Brode
                       MACTEC Federal Programs, Inc.
                       (formerly known as PES, Inc.)
                       October 26, 2004

       MODIFIED FROM:          AERMOD
                       (Version Dated 04079)

=======================================================================

       This revised DRAFT version (dated 04079) incorporates
       modifications to the wet deposition algorithms for both
       gaseous and particle emissions.  For both gaseous and particle
       wet deposition, the wet fluxes have been corrected to include
       a factor of 3600.*SQRT(2*PI) in the denominator.  The factor
       of 3600 was needed to correct a unit conversion error between
       seconds and hours in the final calculation of the flux.
       The factor of SQRT(2*PI) is needed to complete the integrated
       vertical term.  A problem causing potential runtime errors for
       volume and area sources with dry depletion was also corrected.

       In addition to the corrections identified above, the particle
       wet deposition algorithms were also modified to include an
       algorithm for calculating the collision efficiency as a function
       of particle size and raindrop size.  The previous version of
       the model included a fixed value of 4.0e-4 for the collision
       efficiency.


       MODIFIED BY:    Roger W. Brode
                       MACTEC Federal Programs, Inc.
                       (formerly known as PES, Inc.)
                       March 19, 2004

       MODIFIED FROM:           AERMOD
                         (Version Dated 03273)

=======================================================================

       This DRAFT version (dated 03273) incorporates wet and dry
       deposition algorithms based on the draft ANL report (Wesely,
       et. al, 2001), with modifications to the wet deposition
       algorithms based on peer review comments.  The dry deposition
       algorithms include dry depletion based on the simple source
       depletion method.

       NOTE:  The wet SCIM'ing and output by particle size options 
       from the ISCST3 model have not been implemented yet in AERMOD.

       This version includes the following modifications relative to
       the previous draft (dated 03213):

       1.  Removed depletion for the "inside cavity source" from the
           PRIME calculations.

       2.  Moved the code to adjust for TS < TA (used to model a fixed
           delta TS-TA) from SUBROUTINE SETSRC back to SUBROUTINE
           FLUXES.  This corrects some minor discrepancies between
           the consequence analysis results for non-buoyant sources
           relative to version 02222.

       3.  Removed the dry particle deposition code associated with
           DFAULT mode in ISCST3.  The only dry particle deposition
           in AERMOD is based on the ANL report for Methods 1 and 2.
           This also corrects a logic problem if neither TOXICS nor
           DFAULT options are specified.

       4.  Modified FUNCTION F2INT to only call DELTAH for point
           sources during plume depletion calculation.

       5.  Added identification of urban sources and Method 2 sources
           in summary of source inputs.

       6.  Included optional dry depletion option for Method 2.

       7.  Additional code cleanup and documentatino, including removal
           of unused data arrays associated with ISCST3 depletion code
           and moving the call to SUBROUTINE METINI to follow the call
           to SETSRC in SUBROUTINE OCALC for open pit sources.


       Version 03213 (August 1, 2003) included the following
       modifications relative to the previous draft (dated 03171):

       1.  Corrects problem with calculation of f2 term used in gas
           dry deposition.  The calculation of Wnew and f2 had to be
           moved outside the source loop to properly account for
           accumulated precipitation over three hour period.

       2.  Changed the definition of the "top of the plume" to be based
           on the plume centerline height plus 2.15*sigma-z, evaluated
           at 20km downwind.  The previous definition was based on
           3.9*sigma-z.

       3.  Terrain effects are now incorporated in the dry depletion
           calculation.  The terrain elevation is linearly interpolated
           between the source base elevation and the terrain elevation
           at the receptor.  The hill height scale is linearly
           interpolated between the stack release height at the
           source and the hill height scale from AERMAP at the receptor
           location.

       4.  Modified the short-term EVENT processing option to be
           compatible with the deposition algorithms.  If more than
           one output type is selected in the normal model run that
           generates the EVENT input file, the events will be defined
           based on the first output type, in the order of CONC, DEPOS,
           DDEP, WDEP.

       5.  Modified summary of first 24-hours of met data to include
           additional parameters for deposition applications.

       6.  Modified the program to use free-formatted READ for the
           surface meteorological input file for all cases.  Decision
           on whether to read additional parameters needed for deposition
           is based on logical variables associated with deposition
           calculations.

       7.  Incorporated a patch in SUBROUTINE UNLUMP of PRIME.FOR to
           avoid potential math error for downwash calculations.
           The plume temperature calculated by NUMRISE is limited to
           be greater than or equal to the ambient temperature minus
           10 K.  This avoids a potential SQRT of a negative number.

       MODIFIED BY:    Roger W. Brode
                       MACTEC Federal Programs, Inc.
                       (formerly known as PES, Inc.)
                       September 30, 2003

       MODIFIED FROM:           AERMOD
                         (Version Dated 02222)

=======================================================================

       This DRAFT version (dated 02222) includes fixes to the following
       bugs:

       1) modification to ACALC to avoid potential math errors
          for AREAPOLY sources;
       2) correction to METSUM to output missing temperatures correctly
          for the SCIM option;
       3) correction to EMVARY to replace 'STAR' option with
          'WSPEED' option;
       4) modified CAV_SRC to keep "outside" cavity source in array
          element 3 for cases when no "inside" cavity source contribution
          occurs;
       5) corrected meander algorithm to combine "plume" and
          "pancake" components of concentrations rather than just
          blending the lateral dispersion term, removed limit on pancake
          term to be smaller than plume lateral term, and removed meander
          from the PRIME component for sources subject to building
          downwash;
       6) corrected problem in NUMRISE to avoid referencing an
          undefined variable (xbi);
       7) corrected calling arguments for call to WAKE_SIG from
          subroutine WAKE_DFSN, to use wakiz and wakiy instead of
          turbz, and turby; and
       8) correction of Z_iuo in subroutine URBCALC from 500 to 400
          meters.

       Modified to remove command line arguments for specifying
       input and output file names, and use hardwired names of
       AERMOD.INP and AERMOD.OUT.

       This version includes an adjustment to ustar and L for urban stable
       cases, by equating the "convective" sigma-w based on the urban
       "convective" w* with the mechanical sigma-w based on u*
       evaluated at a height of 7 times the urban roughness length.
       The URBANOPT keyword was modified to allow the user to input
       the urban roughness length as an optional parameter following
       the optional city name.  If no urban roughness length is input,
       then the model assumes an urban roughness length of 1.0 meter.

       This version also includes a modification to the minimum layer
       depth near the ground used to calculate effective parameters.
       A minimum layer depth of 5 meters is used instead of 2 meters
       if the plume centroid height and receptor height are both below
       5 meters.

       MODIFIED BY:    Roger W. Brode
                       PES, Inc.
                       September 10, 2002

       MODIFIED FROM:           AERMOD
                         (Version Dated 01247)

=======================================================================

       This draft version (dated 01247) includes the PRIME building
       downwash algorithms based on the ISC-PRIME model (dated 99207).
       For cases involving building downwash, the model calculates a
       non-wake contribution using the AERMOD algorithms, a wake
       contribution using the PRIME algorithms, and blends the two
       results using a factor called GAMFACT that varies based on the
       location of the receptor relative to the wake.  For receptors
       within the wake region, where the lateral and vertical boundaries
       are defined by the wake half-width and height, respectively, and
       the longitudinal boundary is defined by a distance equal to 15R
       or the point where wake turbulence intensity decays to ambient
       turbulence intensity, whichever is greater, measured from the
       upwind edge of the building, GAMFACT is set equal to 1.0 (i.e.,
       uses the PRIME result only).  The PRIME algorithm has been
       modified to use the AERMOD meteorological profiles and
       definitions of ambient turbulence.

       This version also includes a modification to the DTHETA/DZ 
       profile (TEMPGRID.FOR) for extrapolating above the highest
       measurement height for cases with observed temperature profiles,
       a modification to the upper limit on the integration for
       HCRIT (CALC2.FOR), a correction to the calculation of FYPAN
       for meander (CALC2.FOR), and an adjustment to ISTRT_WIND used
       for Y2K compliance to subtract 1 from ISTRT_WIND in case the
       meteorological data file contains data from the end of the
       previous year.

       MODIFIED BY:    Roger W. Brode
                       PES, Inc.
                       September 4, 2001

       MODIFIED FROM:           AERMOD
                         (Version Dated 00357)

=======================================================================

       This version (dated 00357) includes enhancements based on the
       current ISCST3 model (dated 00101).  These include:  1) the use of
       globally allocatable arrays for data storage; 2) expanded data
       structures to allow for output of concentration and deposition in
       a single model run (for use when deposition algorithms are added
       to AERMOD); 3) EVENT processing for short-term culpability analyses;
       4) post-1997 PM10 processing; 5) TOXICS option enhancements such as
       optimizations for area sources, the SCIM option, and SEASONHR output
       file option; 6) explicit treatment of multiple-year meteorological
       data files and ANNUAL averages; 7) the SHRDOW and SHRDOW7 options
       for specifying emissions that vary by season, hour-of-day, and
       day-of-week; and 8) improved data structures for field length and
       filename lengths.

       The following modifications have also been made to correct errors:
       1) the PARAMETER LAMDAY was implicitly typed as integer in previous
       versions, and is now explicitly typed as real, which has an impact
       on the plume height calculations for the indirect source; 2) the
       calculation of the plume centroid height for unstable conditions
       for area sources was moved from SUB. ACALC to be included inside
       the area source integration in SUB. PLUMEF and SUB. PWIDTH, which
       affects results for area sources during unstable conditions,
       especially for receptors located inside an elongated area source
       with the wind blowing along the long dimension of the source; and
       3) the STABLE and UNSTAB logical variables are now assigned prior
       to the call to COMPTG in SUB. METEXT, potentially affecting the
       observed DTHETA/DZ profile for the first stable hour in a day;
       4) the calculation of wind direction (WDIR) at stack top in SUB.
       METINI and at stack height plus 0.5*deltaH in SUB. PCALC was
       corrected to account for possible 0-360 crossover in the profile;
       5) corrections were made to the vertical terms to correct the
       reflection component for receptors located below stack base elevation;
       6) corrected calculation of FYPAN term for meander in SUB. FYTERM
       to use radial distance (DISTR) instead of downwind distance (X); and
       7) application of meander to both stable and unstable conditions.
       Additional modifications were made to consolidate redundant code
       and simplify future maintenance activities.

       MODIFIED BY:    Roger W. Brode
                       PES, Inc.
                       December 22, 2000

       MODIFIED FROM:           AERMOD
                         (Version Dated 99351)

========================================================================

                              (Version Dated 99351)
                                December 17, 1999

        This version (99351) includes the following corrections to the
        implementation of the Schulman-Scire downwash algorithm:  1) added
        call to DHPSS in calculation of plume centroid height (CENTER) in
        subroutine PCALC; and 2) modified to use SZ3LB and SY3LB based on
        building enhanced dispersion curves only in subroutine DHPSS.
        Additional modifications were made to improve consistency with
        ISCST3 implementation of Schulman-Scire downwash algorithm.
        Also includes changes to subroutine PCCODE to facilitate
        compilation of the model using the DEC Visual Fortran compiler.
        The output file unit number, IOUNIT, was also changed from 6 to 9
        in order for runtime status update to appear on the screen for
        DEC-compiled executables.  Minor, inconsequential changes were
        also made to comment headers and variable declarations in
        SIGGRID.FOR.


        MODIFIED FROM:
                              (Version Dated 99211)
                                  July 30, 1999

========================================================================

        This version (99211) incorporates modifications for Y2K compliance.
        Uses a window of 1950 to 2049 for 2-digit years.  Will utilize
        4-digit year if input for surface and profile files using FREE
        format (the default read format still reads a 2-digit year).
        Changes also include calculation of a 10-digit date variable
        (FULLDATE) with 4-digit year for date comparisons, and changes of
        the output formats for the 8-digit variable, KURDAT, to I8.8 to
        include leading zeros.  The date and time routines used for the
        page headers have been modified to use the standard Fortran 90
        routines, and minor changes have been made to remove obsolescent
        features from the code.  Changes also include a correction to
        a variable name in SUBROUTINE DELTAH.


        MODIFIED FROM:
                              (Version Dated 98314)
                                November 10, 1998

========================================================================

        This version (dated 98314) incorporates modifications for the final
        draft AERMOD Model. This draft represents the final version of the
        model prior to the Notice of Proposed Rulemaking for including
        AERMOD in the modeling Guideline and subsequent public comment period.
        Changes to the model are too numerous to list here in detail.
        Changes to the interface are incorporated in the revised
        AERMOD user's guide, and pertain primarily to the regulatory
        default option on the CO MODELOPT card, and removal of the
        developmental options for terrain affects.  The CO TERRHGTS
        keyword is now obsolete, and a new mandatory ME PROFBASE
        keyword has been added for inputting the base elevation above
        MSL for the gridded potential temperature profile.


        MODIFIED FROM:
                               (Version Dated 98022)
                                  January 22, 1998

========================================================================

        This version (dated 98022) incorporates modifications for the revised
        draft AERMOD Model. This draft represents the final Phase I version
        of the model.  This version includes the use a minimum sigma-v of
        0.2 m/s. It also incorporates corrections to the downwash algorithms.
        It limits the number of iterations on inhomogeneity to 1,
        i.e., effective parameters are calculated based on an average
        for the layer from plume centerline to 2.15 sigma-z, where
        sigma-z is based on parameters at plume centerline height.
        The transport wind direction is based on the modpoint between
        stack height and "final" plume height.  Modifications have also
        been made to the dtheta/dz profile, the Tly and Tlz used for stable
        plumes above the CBL, and the height of the effective reflecting
        surface for stable plumes.


        MODIFIED FROM:
                               (Version Dated 97350)
                                 December 16, 1997

========================================================================

        This draft includes an option for specifying the transport wind
        direction.  The option is specified on the MODELOPT card, where
        WDOPT1 is for wind direction taken at stack height, and
        WDOPT2 is for wind direction at the midpoint between stack height
        and "final" plume height.  The default option is WDOPT1.
        This version does not include conditional compilation code to
        support the Microsoft Fortran compiler.  This version of the
        code is compatible with the Lahey F77L3 and Lahey LF/90 compilers.
        The deposition algorithm for AERMOD is still under development,
        and is not operational in this version.
                   R.W. Brode, PES, Inc., December 16, 1997


        MODIFIED FROM:
                               (Version Dated 97064)
                                   March 5, 1997

========================================================================

        Incorporates modifications for second round of Beta Testing,
        including code clean-up and removing obsolete options.  Since
        the urban stable boundary layer algorithm in AERMOD is still
        under development, the keywords for implementing the urban
        option in AERMOD have been disabled for this revised draft
        Beta release of the model.
                   R.W. Brode, PES, Inc., March 5, 1997

        MODIFIED FROM:
                               (Version Dated 96239)
                                   August 26, 1996

========================================================================

        Includes modification to wind direction gridded profiling in
        SUB. GRDWD, correcting a problem with wind directions backing
        through 360 degrees.  This could result in a level of observed
        wind direction being erroneously counted as missing.
                   R.W. Brode, PES, Inc., August 26, 1996

        MODIFIED FROM:
                               (Version Dated 96228)
                                   August 15, 1996

========================================================================

        Includes modifications for low wind/low turbulence cases.  Also
        changed definition of "valid lower bound" to be 7zo instead of
        20zo for consistency with recent changes to AERMET.  The terrain
        options have also been reinstated on the CO MODELOPT card as
        TERROPT1 and TERROPT2.  The command line developmental option
        switch has been enabled in this version.
                   R.W. Brode, PES, Inc., August 15, 1996

        MODIFIED FROM:

                               (Version Dated 96198)
                                    July 16, 1996

========================================================================

        Includes Urban Boundary Layer Option based on the Model Coding
        Abstract by Akula Ventkatram dated 4/1/96.  Modified inputs
        include two new keywords:

                 CO URBANOPT  Urbpop  (Urbnam)
                    where Urbpop is the population of the urban area, and
                          Urbnam is an optional character field
                          for the name of the urban area.

                 SO URBANSRC  Srcid's  and/or  Srcrng's
                    where Srcid's identifies individual sources to be
                          modeled as urban sources, and Srcrng's
                          identifies a range of sources to be modeled
                          as urban.


        MODIFIED FROM:
                               (Version Dated 96131)
                                    May 10, 1996

        Includes OPTG3 and OPTG4 for stable plume reflection options.

        MODIFIED FROM:
                               (Version Dated 96053)
                                 February 22, 1996

        Includes flow vector, AFV, in the EVALFILE output.

        MODIFIED FROM:
                               (Version Dated 96046)
                                 February 15, 1996

        Includes new sigma-v and sigma-w profiles coded by Bob Paine,
        some modifications to TEMPGRID.FOR to avoid discontinuities in
        the VPTG profile, reinstates command-line input for developmental
        options for the Lahey version, modifies the default option settings
        to remove stable plume reflections, reinstates the original stable
        profile for TLz, increases the maximum number of iterations in
        IBLVAL from 5 to 20, and includes patches for smoothed h < 0 and
        for mixing heights at (or near) 5,000m.
                   R.W. Brode, PES, Inc., February 15, 1996

        MODIFIED FROM:
                               (Version Dated 95272)

        Includes a SCREEN mode option on CO MODELOPT card,
        addition of AREAPOLY and AREACIRC source types,
        and INCLUDED keyword option for including data from
        an external file for the SO and RE pathways.  The
        INCLUDED option is intended as a link to AERMAP and
        for use with the screening version of AERMOD.

        MODIFIED FROM:
                               (Version Dated 95188)

        Hardcoded option settings for the Beta release of AERMOD.

        MODIFIED FROM:
                               (Version Dated 95066)

        "Optionized" version of AERMOD for Developmental Evaluation.
        Developmental options are selected by use of an additional
        10-character command line argument, e.g. '1213121111'.
        If the additional command line argument is not present, then
        the model will default to the Base Model.  This is equivalent
        to using an additional command line argument of '1111111111'.
        Note that the single quotes are not included on the command line.
                   R.W. Brode, PES, Inc., January 27, 1995

        Version 95066 includes a few minor fixes, some modifications to
        the EVALFILE output, and the volume source option (mostly untested).
        The fixes affect the SBL plume reflection option (OPTG2), and two of
        the inhomogeneity options (OPTD2 and OPTD3).  In the latter cases,
        the effective wind speed was allowed to be less than the effective
        sigma-w.  Also, included EVALCART receptors with DISCCART receptors
        for output purposes (RECTABLE, DAYTABLE, etc., and INPSUM.FOR).
                   R.W. Brode, PES, Inc., February 16, 1995

        Base Case Model for AERMOD Developmental Evaluation - 12/8/94

        MODIFIED FROM:    ISC2 Short Term Model - ISCST2
                               (Version Dated 93109)

        MODIFIED FROM:         (Version Dated 92273)

        MODIFIED FROM:         (Version Dated 92062)

        PURPOSE: Controls Overall Flow and Processing of ISCST2 Model

        PROGRAMMED BY: Roger W. Brode
                       James O. Paumier
                       Jayant A. Hardikar
                       Pacific Environmental Services, Inc.
                       P.O. Box 12077
                       Research Triangle Park, North Carolina  27709

        DATE:    November 9, 1993

        INPUTS:  Command Line Options

        OUTPUTS: Model Results

========================================================================