All posts
Optimisation·7 min read

Land surface and the soil-moisture trap

Noah-MP is the right land surface scheme for soaring. But if you feed it stale soil moisture from GFS after a dry spell, it will quietly ruin your spring forecasts. Here is how we got caught and how we fixed it.

The land surface model controls how much of the sun's energy goes into heating the air versus evaporating water. That partition (the Bowen ratio in the literature) drives everything downstream: surface temperature, boundary layer growth, trigger temperature, cloudbase. Get the land surface wrong and every field in the soaring forecast is wrong, consistently, in ways that are hard to diagnose because no individual number looks obviously broken.

We picked Noah-MP. It is the current-generation community land surface model, handles soil hydrology and vegetation properly, and couples well to YSU. That part of the decision was correct and never came into question.

The problem was initial conditions. Soil moisture is an initial condition like any other state variable, and in our setup it comes from GFS. GFS runs a lower-fidelity land surface model (Noah, not Noah-MP) at 13 km resolution, and its soil moisture field evolves slowly over many forecast cycles. If the real weather has just broken a dry spell with a line of heavy showers, GFS soil moisture can lag reality by 48 to 72 hours.

This caught us in April 2026. The UK had a dry late-winter and early-spring, then a front cleared through on a Friday dropping 12 to 25 mm over most of the country. The Saturday forecasts assumed dry soil. Actual soil on Saturday was wet. Real surface heat flux was lower than modelled (more energy went into evaporating the overnight ground moisture), real trigger temperatures were higher and later, real cloudbase was lower. Pilots who went out on the Saturday forecasts reported trigger running 1.5 hours late and `wstar_ms` overshooting by 25 to 40 percent across the day.

We saw it first in the day-rating correlation against XContest. Saturday was coming out as `good` and produced a handful of sub-100 km flights. That gap was far larger than the validation set had ever shown. Digging in, the signal was in the land surface: model soil moisture was at a seasonal low, ground observations (from the UK flux tower network that Noah-MP validation papers use) showed it near saturation.

The fix came in two parts. First, immediate mitigation: we extended the pre-forecast spin-up from 6 hours to 24 hours for the surface model. This lets the cycled surface precipitation over the previous day wet the soil in the model before the forecast integration starts. It does not fully fix rapid wet events (24 h is often not enough to rewet a drained soil) but it stops the worst of the lag.

Second, a longer-term fix that is still in development: we are planning to pull soil moisture from an independent source (ERA5 reanalysis, updated daily with a one-day latency) rather than from GFS. ERA5 has its own issues but its soil moisture field is far more responsive to observed precipitation than GFS's is. This will replace the GFS soil moisture at initialisation.

Lessons. The first is that the failure mode of a land surface model is silent. Nothing crashes, no error gets logged, the fields look sensible. You only catch it by comparing `day_rating` forecasts against actual flying, which is why the validation pipeline is as important as the forecast pipeline. If we had not been routinely checking against XContest we would have shipped a bad spring quietly.

The second is that the weakest link in a WRF pipeline is usually at the boundary, not in the physics inside. We spent weeks tuning Thompson and arguing about PBL schemes, and the thing that cost us the most forecast credibility was an initial condition we had been treating as 'just GFS'. Any WRF operator running continuous forecasts needs an independent soil moisture source lined up.

This work is ongoing. The WRF model page will be updated when the ERA5 soil moisture switch lands. Until then, if you notice forecasts going sideways immediately after a wet front, the soil is the likely culprit.