The low-level reader changes little of the airport speed mismatch

11 September 2026 · Saved 1 June 2023 CALMET wind · Follow-up to the airport observation check

A similarly large speed mismatch is already present in the native surface-wind reference. At the airport, a native surface-wind reference using the reader's same four neighbouring points has mean speed 4.064 m/s, against 1.713 m/s observed. The captured profile reader gives 4.022 m/s; the saved adjustments-off result gives 4.014 m/s. The total mean change is −0.050 m/s. These changes barely affect the existing mismatch; they do not identify its physical cause or a preferred model setting.

This trace covers every 201 × 201 cell, the original 101 × 101 area, all 24 intervals, and all 13 existing community, source and station references, at nominal 10 m above model terrain. Airport observations provide one local comparison within that larger computational audit. They do not validate winds throughout the valley, over water or at release height.

Three quantities are kept distinct: the native surface reference blends WS10/WD10 at the actual four neighbouring points; the profile reader is captured immediately after the native profile is read and interpolated; the final off case is the unchanged saved wind after later processing. “Adjustments off” retains two smoothing passes in the lowest layer. The earlier nearest-native-point reference uses a different spatial sampling method, so its contrast with CALMET cannot isolate the low-level reader.

Airport stage Mean speed Speed bias Speed MAE Vector RMSE
Same-four-point surface reference 4.064 +2.351 2.460 3.314
Captured profile reader 4.022 +2.309 2.418 3.277
Saved final off case 4.014 +2.301 2.410 3.273

Values are m/s; every row uses the same 24 observations. Bias is calculated minus observed speed; vector RMSE includes both horizontal components. During the 10 observed calms, model mean speed is 1.783 / 1.743 / 1.738 m/s, respectively. Calm has no meaningful wind direction.

Airport wind speed and the much smaller changes between processing stages

The horizontal axis is the wind-forcing endpoint in fixed PST (UTC−8). The saved intervals run from 00:00–01:00 through 23:00–00:00 next day. Actual low-level processing consumes 24 native states, UTC 1 June 09:00 through 2 June 08:00; the extra leading file state was skipped. This is an interval diagnostic driven by endpoint wind, not an hourly wind average. Timing and coordinate conventions

The primary direction comparison requires both observed and model speed to be at least 1 m/s. All three stages share the same 12 interval indices, 9–20. The 2 m/s sensitivity retains those same times. At 0.5 m/s, index 7 is added; all three series then have one direction error above 90°.

Shared speed threshold Pairs Surface direction MAE Reader Final
1 m/s 12 27.318° 27.295° 27.458°
0.5 m/s 13 37.579° 37.630° 37.768°
2 m/s 12 27.318° 27.295° 27.458°

The fixed 0.5 m roughness assumption really is used in the below-first-level reader branch. Across the 48,000 consumed native column-states, the lowest valid profile height is only 10–12 m above native terrain. There are 46,151 logarithmic branches and 1,849 cases at the first level. Where logarithmic extrapolation occurs, it multiplies the lowest profile wind by 0.94263–0.96917, reducing that profile magnitude by 3.08–5.74%. This reader constant is separate from each CALMET cell's surface roughness. It is not a large extrapolation from a high first level in this case. Native surface wind and profile wind are distinct products; their difference is not solely the logarithmic multiplier.

Across the expanded domain, changes are small on average but uneven. The table gives mean / maximum vector-change magnitude, using all cell-hours equally. Full distributions, signed speed changes and every reference are retained in the checks.

Stage comparison Expanded area (m/s) Original area (m/s)
Surface reference → reader 0.03644 / 0.37707 0.03885 / 0.35803
Reader → final 0.03762 / 0.72570 0.04106 / 0.72570
Surface reference → final 0.05537 / 0.76730 0.05992 / 0.76730

The output-only diagnostic run reproduced the entire original CALMET output byte for byte, including 29,088,720 saved U/V/W values and the static fields. Independent source arithmetic reconstructed 96,000 native wind components and 1,939,248 reader components, with maximum residuals 0.000000477 and 0.000000954 m/s. Both pass the pre-existing 0.00005 m/s arithmetic tolerance. A second implementation reproduced all area/reference summaries and airport cohorts. This establishes numerical consistency, not accurate weather or vertical transport.

A small timing-arithmetic distinction remains explicit: the public surface reference selects the native endpoint. Applying the actual final-buffer expression changes 6,257 components only in the final interval, by at most 0.0000001192 m/s. The independent endpoint field otherwise matches exactly; the largest resulting summary difference is below 0.000000000002 m/s. This difference does not affect the displayed conclusions.

Station exposure and historical sampling details remain unresolved, native heights have printed rounding limits, and upstream use of the station in WRF assimilation is unknown. The reader's direct coordinate convention is preserved. Nothing here establishes inversion structure, pollutant concentrations or community exposure. The terrain-following W audit addresses the separate persistent interior vertical-component excursion.

Numerical checks, all 13 references and source locators · Methods and reproducible derived data, about 20 MB · Airport rows · Vector figure

The download includes scripts, the frozen protocol and correction, lossless derived fields, observations and reference tables sufficient to recompute the published summaries. Original native/CALMET binaries and provider source code are identified by hashes and are not bundled. Primary sources are ECCC airport observations and the inspected CALMET 6.5.0 provider version, with retained native-data provenance in the protocol.