PlumeSmartEPA Regulatory Air Dispersion Modeling
Air Modeling GuideCovers AERMOD 24142 & 26135 — every excerpt version-stamped · current NAAQS

Validation — AERMOD 26135

When EPA released AERMOD/AERMET version 26135 on July 9, 2026 — replacing 24142 as the regulatory version — we did not simply recompile and ship it. Before the new version became selectable on this platform, we validated our build against EPA's own official test suite: the 53-case bundle EPA publishes on SCRAM for exactly this purpose.

Re-validated July 19, 2026 — the 26135-family library cases re-run on the current build and matched again, most exactly.

Re-validated July 29, 2026 — the complete 41-case platform library was rebuilt and re-run end-to-end through the product interface on the production service, each case compared against EPA's reference outputs. All 41 passed: every design value within the acceptance envelope, the large multi-source cases verifying every per-receptor value the references provide.

Extended August 31, 2026 — EPA publishes the 26135 suite under two met pairings; the transition pairing (AERMET-24142 met, EPA's primary validation set) is what the 53/53 above used. The latest-met × latest-model pairing (aermet26135_aermod26135) — the exact chain this platform runs for users — is now also verified: its reference case reproduces EPA's published output on the production AWS runtime, and the case runs in the continuous nightly conformance gate alongside the AERMET 26135 byte-match matrix.

Result: 53 of 53 cases validated

Every comparable output artifact EPA ships — plotfiles, postfiles, summary tables, threshold-exceedance and season-hour files — was compared against EPA's reference outputs, receptor by receptor and hour by hour. Across all 53 cases:

  • The design values — the numbers actually compared against a NAAQS — match EPA's references in every case, to at least four significant figures and typically to six.
  • 36 cases reproduce EPA's output character-for-character, millions of values identical.
  • Across the full suite, more than 99.9% of all compared values are identical; the remainder agree within 5×10⁻⁴ relative (most within 10⁻⁵), confined to individual hourly values — never a design value.

The acceptance criterion

A validated case means: every output artifact compared, design values in agreement with EPA's references to at least four significant figures, and any remaining differences quantified, attributable to compiler arithmetic, and within the envelope EPA's own methodology accepts. All 53 cases meet this bar.

The small residual differences arise because EPA compiles its reference binaries with a different Fortran compiler and platform than any independent build; different compilers order floating-point operations slightly differently, so two correct builds of identical code can disagree in the last digit of an occasional value. Two facts establish that this is expected behavior, not a defect:

  • The control experiment. Our long-validated 24142 binary shows the same magnitude of last-digit differences against EPA's own published 24142 references — the envelope predates 26135 and applies to every AERMOD build on every platform, from every vendor.
  • EPA's own acceptance method. The instructions EPA ships with the test cases direct users to compare runs using EPA's R scripts, which produce comparison plots and summary statistics — not byte equality across builds.

Detailed accounting

CasesOutcome
36Output identical, character-for-character
1Identical except one value near 10⁻¹⁷ differing by one unit in the file format's last decimal
9Individual hourly values agree within 5th–7th significant figure; design values match to 4+ significant figures
5The multi-year (MULTYEAR) chain, run sequentially as EPA runs it: 99.987% of 9,465,984 hourly values identical; all remaining differences below 0.0007 µg/m³ in magnitude; design values for all five years match to ~10⁻⁶
2Cases whose EPA inputs request only summary outputs: design-value tables match to 8.9×10⁻⁶ or better; auxiliary files within the same envelope as the 24142 control

What each case runs

Each row is one case from EPA's official suite. Together they exercise the model's breadth: all the major source types, the five NO₂ chemistry options, urban dispersion, building downwash, deposition, multi-year processing, and every receptor network type.

CasePollutantAveraging (hr)SourcesWhat it exercisesReceptors
Test1_Base_cart_3cond_SNCOTHER11 RLINEXTflagpole receptors, flat terrainCartesian grid
Test20_Urban_cart_3cond_SNCOTHER11 RLINEXTurban option, flagpole receptors, flat terrainCartesian grid
Test3_Base_cart_3cond_SNC_barOTHER11 RLINEXTflagpole receptors, flat terrainCartesian grid
Test4_Base_cart_3cond_SNC_depOTHER11 RLINEXTflagpole receptors, flat terrainCartesian grid
aermod-baldwin45OTHER1 3 8 24 PERIOD3 BUOYLINEhourly emission file, flat terrainCartesian grid
aermod-baldwinHorizOTHER1 3 8 24 PERIOD3 BUOYLINEhourly emission file, flat terrainCartesian grid
aermod-baldwinVertOTHER1 3 8 24 PERIOD3 BUOYLINEhourly emission file, flat terrainCartesian grid
aertestSO21 3 8 24 PERIOD1 POINTbuilding downwash, EVENT companion run, flat terrainpolar grid
allsrcsSO21 3 8 24 PERIOD3 RLINEXT + 3 BUOYLINE + 2 POINT + 1 AREA + 1 AREACIRC + 1 AREAPOLY + 1 VOLUME + 1 OPENPIT + 1 RLINE + 1 LINEbuilding downwash, flat terrainCartesian grid, polar grid, discrete points, evaluation grid
bg_no2_arm2_ppbNO211 POINTbackground concentrations, NO2 equilibrium ratio, ARM2 NO2 chemistrypolar grid
bg_no2_arm2_ugm3NO211 POINTbackground concentrations, NO2 equilibrium ratio, ARM2 NO2 chemistrypolar grid
bg_no2_grsm_ppbNO211 POINTbackground concentrations, NO2 equilibrium ratio, GRSM NO2 chemistrypolar grid
bg_no2_grsm_ugm3NO211 POINTbackground concentrations, NO2 equilibrium ratio, GRSM NO2 chemistrypolar grid
bg_no2_olm_ppbNO211 POINTbackground concentrations, NO2 equilibrium ratio, OLM NO2 chemistrypolar grid
bg_no2_olm_ugm3NO211 POINTbackground concentrations, NO2 equilibrium ratio, OLM NO2 chemistrypolar grid
bg_no2_pvmrm_ppbNO211 POINTbackground concentrations, NO2 equilibrium ratio, PVMRM NO2 chemistrypolar grid
bg_no2_pvmrm_ugm3NO211 POINTbackground concentrations, NO2 equilibrium ratio, PVMRM NO2 chemistrypolar grid
bg_no2_ttrm_ppbNO211 POINTbackground concentrations, NO2 equilibrium ratio, TTRM NO2 chemistrypolar grid
bg_no2_ttrm_ugm3NO211 POINTbackground concentrations, NO2 equilibrium ratio, TTRM NO2 chemistrypolar grid
blp_urbanOTHER1 ANNUAL2 BUOYLINEurban option, flat terrainCartesian grid
cappedSO21 3 8 24 PERIOD5 POINT + 2 POINTCAP + 2 POINTHORbuilding downwash, EVENT companion run, flat terrainpolar grid
capped_nostdSO21 3 8 24 PERIOD2 POINT + 1 POINTHOR + 1 POINTCAPEVENT companion run, flat terrainpolar grid
flatelevSO21 3 8 24 PERIOD2 POINTEVENT companion run—
hrdowOTHER1 3 8 24 ANNUAL6 POINTvariable emission factors, EVENT companion run, flat terrainpolar grid
in_urbanSF611 POINTurban option, hourly emission file, flat terrainevaluation grid
lovettSO21 3 24 PERIOD—hourly emission file, EVENT companion run—
mcrSO21 3 24 PERIOD8 POINTbuilding downwash, hourly emission file, EVENT companion rundiscrete points
multurbSO21 3 8 24 PERIOD—urban option, EVENT companion run, flat terrainpolar grid
no2_1yrAK_1tierNO21 ANNUAL1 POINT + 1 VOLUME + 1 AREAbuilding downwash, background concentrations, MAXDCONT contributions, NO2 equilibrium ratio, flat terrainpolar grid
no2_1yrAK_arm2NO21 ANNUAL1 POINT + 1 VOLUME + 1 AREAbuilding downwash, background concentrations, MAXDCONT contributions, NO2 equilibrium ratio, ARM2 NO2 chemistry, flat terrainpolar grid
no2_1yrAK_arm2minNO21 ANNUAL1 POINT + 1 VOLUME + 1 AREAbuilding downwash, background concentrations, MAXDCONT contributions, NO2 equilibrium ratio, ARM2 NO2 chemistry, flat terrainpolar grid
no2_1yrAK_grsmNO21 ANNUAL1 POINT + 1 VOLUME + 1 AREAbuilding downwash, background concentrations, MAXDCONT contributions, NO2 equilibrium ratio, GRSM NO2 chemistry, flat terrainpolar grid
no2_1yrAK_olmNO21 ANNUAL1 POINT + 1 VOLUME + 1 AREAbuilding downwash, background concentrations, MAXDCONT contributions, NO2 equilibrium ratio, OLM NO2 chemistry, flat terrainpolar grid
no2_1yrAK_olmgrpNO21 ANNUAL1 POINT + 1 VOLUME + 1 AREAbuilding downwash, OLM groups, background concentrations, MAXDCONT contributions, NO2 equilibrium ratio, OLM NO2 chemistry, flat terrainpolar grid
no2_1yrAK_pvmrmNO21 ANNUAL1 POINT + 1 VOLUME + 1 AREAbuilding downwash, background concentrations, MAXDCONT contributions, NO2 equilibrium ratio, PVMRM NO2 chemistry, flat terrainpolar grid
olmNO21 ANNUAL1 POINTEVENT companion run, OLM NO2 chemistry, flat terrainpolar grid
olmgrpNO21 ANNUAL2 POINTOLM groups, EVENT companion run, OLM NO2 chemistry, flat terrainpolar grid
openpitsSO21 3 24 PERIOD3 OPENPITparticle deposition (Method 2), particle deposition, EVENT companion run, flat terrainpolar grid
psdcredNO21 ANNUAL3 POINTPSD-credit groups, PVMRM NO2 chemistry, flat terrainpolar grid
pvmrmNO21 ANNUAL1 POINTEVENT companion run, PVMRM NO2 chemistry, flat terrainpolar grid
scimtestOTHERANNUAL1 POINT + 1 AREA + 1 AREACIRC + 1 AREAPOLY + 1 VOLUME + 1 OPENPITSCIM sampled-hour scheme, flat terrainpolar grid
surfcoalOTHER1 24—hourly emission file, particle deposition, flagpole receptors, EVENT companion run, flat terraindiscrete points
testgasBENZENE11 POINTgas deposition, flat terraindiscrete points
testgas2BENZENE1 3 8 24 MONTH ANNUAL1 POINTgas deposition, EVENT companion run, flat terrainpolar grid
testpartCHROMIUM11 POINTparticle deposition (Method 2), flat terraindiscrete points
testpm10PM101 24 PERIOD2 POINTbuilding downwash, EVENT companion run, flat terrainpolar grid
testpm10_1986PM101 PERIOD2 POINTMULTYEAR, building downwash, EVENT companion run, flat terrainpolar grid
testpm10_1987PM101 PERIOD2 POINTMULTYEAR, building downwash, EVENT companion run, flat terrainpolar grid
testpm10_1988PM101 PERIOD2 POINTMULTYEAR, building downwash, EVENT companion run, flat terrainpolar grid
testpm10_1989PM101 PERIOD2 POINTMULTYEAR, building downwash, EVENT companion run, flat terrainpolar grid
testpm10_1990PM101 PERIOD2 POINTMULTYEAR, building downwash, EVENT companion run, flat terrainpolar grid
testpm25PM2524 ANNUAL2 POINTbuilding downwash, EVENT companion run, flat terrainpolar grid
testprt2CHROMIUM1 3 8 24 MONTH ANNUAL1 POINTparticle deposition (Method 2), EVENT companion run, flat terrainpolar grid

Parallel (receptor-split) execution was re-proven under 26135 directly: the same run executed whole and split across multiple containers produces identical results to the last digit, for both discrete receptors and gridded networks.

The full platform library, re-run under 26135: 41 of 41

Beyond EPA's own test suite, the platform's EPA reference library — the 41 cases built entirely through the product interface and maintained as durable projects — was re-run under 26135 the way a real user upgrades: each project's version pin switched to 26135 and re-run, so every library project now holds both runs of record side by side. All 41 match EPA's 26135 references: every design value (including the ranked tables EPA's own inputs request), and every per-receptor value where the reference provides them — the largest case verifying all 1,080 evaluation-grid cells.

Based on this, new projects now default to AERMOD 26135. Existing projects keep their pinned version — a re-run of yesterday's project reproduces yesterday's run, always.

AERMET 26135: 32 of 32 byte-identical

The meteorological preprocessor was validated separately, against EPA's own AERMET test-case bundle — eight cases (EX01–EX05, Anchorage, Lovett, Martins Creek) in each of the two suites EPA distributes (the default configuration and the ADJ_U* low-wind configuration).

  • Every produced surface and profile met file is byte-for-byte identical to EPA's bundled reference output — 32 of 32 case-runs. No tolerance was needed: character-for-character equality.
  • The same harness run against the 24142 suites with our 24142 build also matches 32 of 32 — the method is identical to the long-standing gate that has guarded the platform's met processing since launch.
  • Both versions stay proven. These 32 case-runs are not a one-time clearance: the same byte-for-byte comparison is re-run automatically whenever the meteorological preprocessor, the image it runs in, or the code that invokes it changes — for both versions and both suites. Because a project keeps whatever version it was pinned to, a superseded version has to keep working, so it keeps being checked.
  • AERMET 26135 also introduces support for the GHCNh surface-data format, which replaces the discontinued ISHD format for newly published data.

Every processed met dataset records which AERMET version produced it, that version is shown on the run record, and datasets processed under different versions are kept strictly separate.

AERSURFACE 26135: reference case reproduced exactly

The surface-characteristics preprocessor was validated against the test case EPA distributes with AERSURFACE (Raleigh-Durham, NLCD 2021 land cover with impervious and tree-canopy supplements), whose bundled reference output was generated by EPA's own AERSURFACE 26135. Our build reproduces every data line of that reference exactly.

AERMINUTE 26135: both EPA test cases reproduced

The 1-minute ASOS wind processor was validated against both cases EPA ships with the AERMET test suite — Pittsburgh (2000) and Providence (2005), a full year of 1-minute data each. Every output the cases produce (the hourly wind file that feeds AERMET, the summary file, and the comparison file against standard observations) matches EPA's reference copies: Providence is character-for-character identical, and Pittsburgh differs only in the run-date header lines.

The prior version (15272) passes the same comparison against its own EPA references, so projects processed under the earlier met chain re-run with the exact program their results were built with. Version 26135 also reads GHCNh files as the standard-observation input, matching the AERMET 26135 data chain end to end.

The 26135 capabilities, each proven against the running system

Version 26135 added several modeling capabilities beyond its corrections. Each one on this platform was verified against the deployed system — not just unit tests — before it became selectable:

  • Multiple hourly emission files in one run. A year-long, eight-source reference case was run twice — once with a single merged hourly file, once split across two files — and the resulting concentration files are identical byte for byte.
  • Backup upper-air station substitution. A complete four-stage meteorology chain (surface + primary radiosonde + backup radiosonde + merge) was processed end to end for Raleigh-Durham; the control chain without the backup produces the same output when the primary record has no missing soundings, exactly as the method specifies.
  • GHCNh surface data. The same station-month was processed twice — once from the GHCNh archive, once from the ISHD archive it replaces — and every comparable hour agrees on wind speed, wind direction, and temperature.
  • Segmented roadside barriers and edge effects. A roadway case with a solid barrier shows reduced concentrations behind the wall; turning on edge effects changes concentrations near the barrier ends — both in the direction the method describes.
  • Vegetative roadside barriers. The inputs are accepted with the vegetation's computed wake, and the calculation is confirmed active through the model's own diagnostic output. No published reference values exist for this research-grade option yet, so no numerical comparison is claimed.
  • Aircraft sources. An apron source modeled with aircraft plume rise produces different — lower peak — ground-level concentrations than the same source without it, consistent with exhaust rising from engine momentum and buoyancy.
  • Refined roughness rings. Subdividing the surface-roughness sectors into distance bands changes every computed surface characteristic for the reference site, confirming the refinement takes effect.

What changed between 24142 and 26135

EPA's release memorandum lists the substantive changes, several of which this platform's users benefit from directly: corrections to the Ozone Limiting Method with sector-varying background concentrations, corrected source-group accounting in MAXDCONT under GRSM, corrected POSTFILE output under multi-year processing, and support for per-source hourly-emission files. EPA's own comparison statistics quantify the concentration effects as small (average relative differences of 10⁻⁸ to 10⁻⁴ in the affected cases) with design-value-class metrics unchanged.

Version policy on this platform

  • New meteorological processing also defaults to the current EPA chain — AERMET 26135 and AERSURFACE 26135 — while every existing processed dataset keeps the version that produced it, recorded in its provenance.

  • Every project is pinned to one AERMOD version, so a re-run always reproduces the run of record.

  • A new EPA version becomes selectable only after this validation passes.

  • Existing projects stay on their pinned version; new analyses can use the current regulatory version, and an explicit upgrade re-run is always available.

For version 24142 — validated end-to-end through the product UI itself — see the companion report Validation — AERMOD 24142.