All posts
Optimisation·5 min read

How we currently derive cloudbase: T2, Q2, and PSFC

Cloudbase in the API today comes from a surface-parcel LCL using 2 m temperature, 2 m mixing ratio, and surface pressure. Here is what that gets right, what it gets wrong, and where it is going.

`cloudbase_agl_ft` is the field pilots look at more than any other. It decides whether you can fly at all (no cloudbase, no soaring) and how high the day is worth. The forecast needs to be in the right ballpark of what pilots actually see, otherwise the API has no credibility.

Cloudbase in WRF is not a directly-output field in a way that is reliable on a 4 km grid. The model's own cloud fraction is too grid-dependent and saturates too easily to use as a clean cloudbase signal. So the pipeline derives cloudbase in post-processing from the temperature and moisture state. Formally it is the lifting condensation level (LCL) - the altitude at which a parcel lifted dry-adiabatically reaches saturation.

Today's implementation uses the surface parcel: take 2 m temperature (T2), 2 m mixing ratio (Q2), and surface pressure (PSFC) at each grid cell, run those through a Magnus-formula LCL calculation, and that gives an LCL height in metres above the surface. Convert to feet, and that is the `cloudbase_agl_ft` field served by the API. It is fast, deterministic, and easy to validate by hand.

What the surface-parcel formulation gets right. On clear-air days with shallow convection and a well-mixed surface layer, the surface parcel's properties are close enough to the parcels actually feeding cumulus that the LCL is in roughly the right place. Day-to-day variation tracks the synoptic moisture pattern. The morning-to-afternoon evolution as the surface dries out is captured.

What the surface-parcel formulation gets wrong. The surface parcel sees the boundary layer at its coldest and moistest point. Real cumulus cloudbase is set by parcels that have mixed up through the PBL, lost some moisture to entrainment of drier air aloft, and warmed slightly. A pure surface-parcel LCL therefore tends to undersell cloudbase on days with active mixing - the modelled base sits lower than the cloudbase pilots actually see. This is a known bias of the simplest formulation.

Why ship the simple version anyway. Two reasons. First, you cannot tune the next version of cloudbase derivation until you have shipped one and watched how it actually performs. The surface-parcel LCL is the obvious starting baseline against which any future improvement gets measured. Second, the bias is in a useful direction for soaring: undershooting cloudbase keeps pilots clear of cloud, which is the safer side of the error to be on.

What is on the roadmap. A mixed-layer LCL formulation that averages temperature and moisture over the diagnosed PBL depth before lifting, which is what most operational soaring forecasts use. That requires plumbing the PBL height field through into the cloudbase calc and handling some edge cases (very shallow PBLs, residual moisture layers). It is the next planned change, conditional on the validation pipeline being in place to measure the improvement.

Until then, the field is what it is: a clean, simple, surface-parcel LCL that gets the synoptic story right and tends to err low on actively-mixing days. Documented, deterministic, and shipping. Glossary entry on the model page.