Skip to content

Smoke and thermals

Wildfire smoke is the biggest unmodeled factor in a British Columbia summer forecast: from July to September it routinely caps thermal strength and visibility while the wind-profile models carry on as if the sun were clean. Windgram treats smoke the way it treats everything else — published raw with its provenance, derived openly, and never silently blended into another model’s numbers.

Two independent models supply it, and they disagree in useful ways:

  • HRRR carries its own smoke. The operational HRRRv4 runs a prognostic smoke tracer, and its profiles publish a per-hour smoke block — near-surface concentration, column mass, and optical thickness — from the same run as every other value.
  • The ECCC models are smoke-blind. HRDPS, RDPS, and GDPS see no smoke at all. For their sites, smoke arrives as a separate smoke document from ECCC’s RAQDPS air-quality model, joined to a profile hour by hour at read time — never folded into the profile itself, because one document carries one model’s values.

On a rendered windgram, smoke is a strip: the line is near-surface concentration (the breathe-it number), and the haze tint behind it deepens with optical depth (the sun-dimming number). The strip’s label always names which model’s smoke it shows.

The physics of the correction, in one chain

Section titled “The physics of the correction, in one chain”

Thermals run on surface heating. Smoke of optical depth τ cuts the irradiance reaching the ground by a factor f, the heat fluxes scale with the irradiance, and Deardorff’s w* — the thermal-strength scale the windgram draws — is the cube root of the heat flux. So the whole correction collapses to one line:

adjusted w* = published w* × ∛f

Two facts make this correction far gentler than intuition suggests, and both are worth internalizing before a smoky-day flight decision:

Smoke dims the sun far less than intuition says — and thermals even less

Line chart of the fraction of surface irradiance and of thermal strength retained as smoke optical depth grows from 0 to 5. The measured transmittance curve exp(−0.16·τ) falls gently, the naive exp(−τ) plunges, and the w* curve — the cube root of the transmittance — stays highest: at optical depth 2, irradiance keeps 73 percent and thermal strength 90 percent.

0 %25 %50 %75 %100 %τ 0τ 1τ 2τ 3τ 4τ 5exp(−τ) — the intuitionirradiance, measured (k = 0.16)w* retained — ∛ of irradianceτ 2: severe BC episode
Computed at build time from the package's own cited constants (Donaldson 2021, Chubarova 2012, McKendry 2019 — three datasets converging on k ≈ 0.14–0.22). At a severe-episode optical depth of 2, irradiance keeps 73 % and w* keeps 90 % — the honest headline of the smoke correction.Units x: smoke optical depth τ (mid-visible) · y: fraction retained

First, smoke scatters far more than it absorbs (single-scattering albedo around 0.95), so most of the “blocked” light still arrives as diffuse sky — measured dimming follows exp(−0.16·τ), not the Beer–Lambert exp(−τ). Second, the cube root compresses whatever remains. A severe plume at τ = 2 removes about a quarter of the sun’s power but only about a tenth of w*. If a smoked-out day feels far worse than that, the missing effects are real but different: a shallower boundary layer, visibility, and air quality — which is why the correction is labeled a partial one, and why the raw smoke numbers are always published beside it.

The constants in that chain are versioned physics claims with citations, not tuning knobs: the 4.7 m²/g mass-extinction efficiency converting a smoke column to optical depth is Reid et al. 2005’s aged temperate/boreal value, and the transmittance coefficient comes from three independent datasets — California 2020 solar-generation data (Donaldson et al. 2021), pyranometers under extreme Russian smoke (Chubarova et al. 2012), and the July 2015 British Columbia episode itself (McKendry et al. 2019). They live in windgram/derive next to the functions that use them.

Because every input is published, the correction never has to happen in the pipeline: the stored document keeps the model’s own derivation, and the smoke-adjusted view is re-derived in the renderer, hour by hour — w* derated by the slant-path transmittance for that hour’s actual sun angle, and the usable-lift envelope recomputed from the derated value.

The same afternoon, before and after the smoke correction

Smoke optical depth climbs through a convective afternoon while the smoke-blind model keeps its heat fluxes and w* strong — the gap a smoke-adjusted reading corrects.

Wildfire smoke thickens over strong thermals. This windgram shows one atmospheric profile in America/Vancouver. Smoke optical depth climbs through a convective afternoon while the smoke-blind model keeps its heat fluxes and w* strong — the gap a smoke-adjusted reading corrects.

Base view — the smoke-blind read: no plume drawn, full-strength thermals

Pressure kPa 90.3 90 Precip mm/h 0.5 0 Cloud % 100 0 H M L Layers % w* m/s 3 0 CAPE J/kg 1500 0 900m 2953ft 1668m 5472ft 2436m 7991ft 3203m 10510ft 3971m 13029ft 4739m 15548ft 10 11 12 13 14 15 16 17 18 19 11° 16° 23° 26° 24° 17° 13° launch 1050 m G7 G9 G11 G14 G22 G29 G32 G22 G16 G13 10° 20°

Smoke-adjusted view — smoke-over-thermals 2000-08-01T12:00:00Z, w* × ∛f

Pressure kPa 90.3 90 Precip mm/h 0.5 0 Cloud % 100 0 H M L Layers % Smoke µg/m³ this model's forecast · not in its physics 250 0 w* m/s 3 0 CAPE J/kg 1500 0 900m 2953ft 1668m 5472ft 2436m 7991ft 3203m 10510ft 3971m 13029ft 4739m 15548ft 10 11 12 13 14 15 16 17 18 19 11° 16° 23° 26° 24° 17° 13° launch 1050 m G7 G9 G11 G14 G22 G29 G32 G22 G16 G13 10° 20°
Both panels are serialized from one committed scenario profile; only the render options differ. The base panel is the smoke-blind read — no plume drawn, full-strength w* — even though the model publishes the smoke it cannot feel. The adjusted panel draws that plume and derates: its w* bump sits visibly lower under the severe afternoon smoke. The correction is deliberately gentle (cube-root), because diffuse light still drives thermals under smoke.Units altitude m and ft · w* m/s · smoke µg/m³ · haze tint = optical depth

The adjusted view always declares itself: the scene graph carries the smoke model and run that derated it, and the reference key renders that label. An adjusted windgram that looks like a base forecast is the failure mode the declaration exists to prevent.

Feel the relationship directly — drag a plume of any thickness over the same afternoon:

Drag a plume over the day

Change only smoke optical depth while the column, fluxes, and winds stay fixed: thermals fade far more gently than the sky darkens.

An interactive windgram applying the package's smoke-adjusted derivation to the smoke teaching scenario at a uniform optical depth chosen by a slider.

Sunlight reaching the ground 85 %Thermal strength kept 95 %Peak adjusted w* 2.7 m/s
Smoke µg/m³ this model's forecast · not in its physics 106.4 0 w* m/s 3 0 900m 2953ft 1668m 5472ft 2436m 7991ft 3203m 10510ft 3971m 13029ft 4739m 15548ft 10 11 12 13 14 15 16 17 18 19

Conclusion. Even at a severe τ of 2, the derived thermals keep roughly nine tenths of their strength — the cube root is doing the compressing. What the slider cannot show is what the correction deliberately leaves out: a real plume also shallows the boundary layer and cuts visibility, which is why the adjusted view is labeled a partial correction.

The slider replaces the scenario's smoke arc with one uniform optical depth (column mass kept consistent through the package's cited 4.7 m²/g extinction efficiency) and rebuilds the smoke-adjusted scene — the same windgram/scene option downstream apps use.Units optical depth τ (mid-visible) · w* m/s · smoke µg/m³ · haze tint = τ

HRRR’s smoke is radiatively coupled: its forecast smoke attenuates its own shortwave radiation, so its published heat fluxes — and the w* derived from them — are already smoke-aware. Derating an HRRR windgram again would double-count the smoke. The catalogue declares this per model (capabilities.smoke: "radiativelyCoupled"), every HRRR document echoes it (semantics.smoke), and the adjusted view quietly refuses on such profiles. The declaration cuts the other way too: on an HRRR windgram, weak afternoon thermals under a thick haze strip are not a contradiction — the model already did the arithmetic this page describes.

One honest caveat rides along: evaluation of the 2023 season found HRRR underpredicts optical depth for aged, long-range smoke, so even a smoke-aware base picture can run optimistic in dense imported-smoke events.

When both sources cover a site, their disagreement is signal, not noise. On the first live day of this feature, HRRR put five times more smoke over a Fraser Valley site than RAQDPS did — two independent emission and transport models reading the same fires differently. A reader who can see both, each labeled with its model and run, knows more than a reader shown one blended number: that is the provenance thesis, applied to smoke.

The constants in the correction chain are cited claims, and cited claims should answer to measurement: the dataset now publishes GOES-18’s satellite-measured downward shortwave at every site, ten-minute cadence, as observation documents. On their first live day — the same BC smoke event — the four founding sites read 553–625 W/m², all quality-good, one smoky afternoon: consistent with a cloudless sky delivering ~650–700 W/m² attenuated by the plume overhead. Measured irradiance beside a smoke document’s optical depth is exactly the comparison exp(−0.16·τ) was fitted from — now running continuously over the sites this dataset serves.

The optical depth itself is measured now too: GOES-18’s aerosol optical depth is the second observation dataset, so a windgram can hold three independent statements about the same smoke side by side — RAQDPS’s forecast AOT, HRRR’s physics-felt smoke, and GOES-18’s measured AOT. Same quantity, same 550 nm wavelength, same field name, drawn as neighbouring strips with one haze encoding — the measured strip’s tint is the forecast smoke strip’s own, so one key chip explains both and the eye compares them directly. Like every measurement, the strip renders below the provenance divider, and its gaps are honest: it is a daytime product, and an absent instant means no accepted retrieval — never clear air.

Agreement between the forecast smoke strip and the measured strip is earned trust: the plume the smoke-adjusted view derates w* with is really overhead, at about the stated thickness. Disagreement is the more valuable signal — the forecast plume is misplaced, mistimed, or mis-sized, and the adjusted view inherits that error, so read its derated thermals with the same skepticism. The measurement wins on what the sky is doing right now; the forecast is still the only voice with anything to say about the hours ahead. On the measured strip’s first live afternoon — the same BC event — it tracked the plume over one site thinning from AOT 2.9 to 1.3: the number every forecast strip beside it could finally be held to.