June 2023 wind comparison: methods and sources

5 September 2026 · B.C. regional WRF and ECCC station observations

This calculation compares native modelled 10 m winds with archived station winds at matching timestamps. It does not run a dispersion model, correct either dataset, or assess pollutant concentrations.

Frozen selection

The protocol was written and hashed at 21:50:50 UTC on September 5, 2026, before model errors were calculated. Its SHA-256 is f5eec8ec46150815c95e1002502f9afc6005cfb25db2a0db49f07a9c2b6f71b3. The two original model downloads completed afterward. The previously examined static grid headers and observation availability informed selection; agreement between wind values did not.

Station ECCC climate ID Native grid I,J Grid latitude, longitude Approximate distance Model terrain, m MSL Current catalogue elevation, m
Squamish Airport 10476F0 33,84 49.7889, −123.1675 778 m 22 53.7
Howe Sound – Pam Rocks 10459NN 25,59 49.4874, −123.2994 42 m 0 7.1

Catalogue elevation is not anemometer height. The catalogue and currently returned historical observations do not establish that instruments, exposure or coordinates were unchanged in June 2023. Grid coordinates are rounded native output; distances are approximate spherical distances, not survey precision.

A supplemental WMO registry lookup, completed after the numerical comparison, found wind deployments listing a 10.0 m distance above the local reference surface, with validity beginning April 29, 2016 and no recorded end date. The corresponding reference-surface field is empty. Reporting is listed hourly, while exact averaging, exposure and instrument details remain absent or unknown. These retrospective registry entries are a useful metadata lead, not a contemporaneous June 2023 instrument log; no height correction or changed cell selection follows. The original XML states the unit explicitly as metres. Airport WMDR record, Pam Rocks WMDR record

The OSCAR location history also changes the Airport coordinates on June 9 and June 13, 2023, without explaining those changes as physical relocations. The frozen ECCC-coordinate crosswalk is retained; these registry edits are not used to move the comparison point or split the observation series. Corroborating station history is needed to resolve the discrepancy. Airport registry history

Original observations

The unchanged ECCC responses contain 698 Airport and 720 Pam Rocks records. Each response reports the matching returned count with no next page. All returned wind speed, wind direction and general flags are null; that inventory is not independent quality certification. Missing Airport records are June 6, 09:00–15:00; June 7, 09:00–16:00; and June 8, 09:00–15:00, all PST. The clustered daytime absence limits the representativeness of its available-pair monthly statistics.

The original UTC_DATE is used for joining. It equals LOCAL_DATE plus eight hours in every returned record. Pam Rocks’ native feature order is not chronological, so array position is never used to match observations and model states. The paired table retains source feature indices, identifiers, timestamps, original numeric lexemes and flags.

Speed is converted from km/h to m/s by dividing by 3.6. Native wind direction is multiplied by ten to obtain true degrees from the wind’s origin. ECCC describes short near-hour wind averages; a record labelled hourly does not establish a full-hour mean. The precise station-specific 2023 averaging algorithm and sensor height remain unresolved. ECCC glossary

Original responses: Squamish Airport, Pam Rocks. Their exact preserved hashes and station crosswalk are in the source record and reproduction kit.

Original model records

The B.C. archive supplies 1.333 km regional WRF data. These native headers identify WRF_ARW V4.6.0, CALWRF v2.0.3 Level190426, 3D.DAT2.1 and 40 vertical levels. Each acquired monthly tile contains 733 complete hourly states, June 1, 00:00 UTC through July 1, 12:00 UTC, inclusive. The analysis selects only the frozen primary and secondary periods.

The reader checks full-file hashes, header flags, static cell coordinates, consecutive timestamps, grid order and the complete surface-plus-40-profile record structure through the end of each file. Each file contains 73,300 surface and 2,932,000 profile records. Profiles have variable byte lengths and are traversed structurally; this comparison does not interpret their atmospheric values. Selected surface records retain their exact original bytes, file offsets and hashes.

Surface columns 63–70 contain WD10 in true degrees from north; columns 71–78 contain WS10 in m/s. These winds are already earth-oriented. No additional grid rotation is applied. These are model states at the timestamp, rather than exact replicas of the station averaging operator. The factual field schema follows the matching writer and resolves ambiguities in the generic format table. CALPUFF format documentation, §7.7, matching CALWRF archive

Original monthly tiles: Airport tile, Pam Rocks tile. Together they are 296,160,948 bytes, retained externally to the small reproduction kit.

Eligibility and calculations

Every expected station-hour remains in the paired table: 1,440 rows, including 22 absent-observation rows. A missing observation is not zero. Speed eligibility requires finite nonnegative speeds and null recorded wind/general flags. Vector eligibility additionally requires a valid bearing for every nonzero wind. A zero speed contributes exactly zero eastward and northward velocity, without assigning it a direction. All 1,418 observed pairs pass both masks.

For speed S and meteorological direction θ, eastward u = −S sin θ and northward v = −S cos θ. Bias is model minus observation. Speed MAE averages absolute speed error; speed RMSE is the square root of mean squared speed error. Vector RMSE = √mean(Δu² + Δv²), with no division by two. All these statistics include eligible reported-zero observations.

Absolute direction error is the wrapped difference in [0°,180°]. Its primary subset requires both speeds ≥1 m/s. Predeclared sensitivities use ≥0.5 and ≥2 m/s; these are analysis choices, not standards or health thresholds. Each threshold reports its own denominator and counts excluded because only the observation, only the model, or both were below it. The large-difference count uses strictly greater than 90°.

For observed native speed equal to zero, the download provides an empirical frequency distribution of the paired model speed, plus median and maximum. The median averages the two central values for an even sample. It does not assume a matching model calm threshold. No confidence interval or significance test treats the dependent hourly records as independent samples.

Interpretation and reproduction

B.C.’s guideline describes this archive as using four-dimensional data assimilation. The assimilated station/time inventory and nudging configuration have not been established here. Agreement could partly reflect observations already used by the weather model. This is therefore a consistency diagnostic, not independent validation. One June month does not validate winter outflow, inversions, onsite shoreline wind, vertical transport or a forecast. B.C. dispersion modelling guideline, July 2026, §6.2

The independently reconstructed results and their comparison coverage are recorded in the checks. The reproduction kit includes the frozen protocol, original ECCC responses, factual schema, original readers, expected data and verification instructions. It fetches or reuses only the two hash-identified external model tiles. No third-party model program, source code or reference manual is included. Rendering the optional figure requires Matplotlib; data calculations use Python’s standard library.

Findings and figure · Paired hours · All 112 summary groups · Direction thresholds · Reported-zero distributions