Emoslib is now deprecated


Interpolation from a gaussian grid to lat-long grid normally uses a bilinear technique from four neighbouring gaussian points to create a new lat-long point. Rules are applied to reduce the spreading of 'trace' amounts of precipitation during interpolation. The value for precipitation at an interpolated point is set to zero:

  • if its calculated value is less than a defined threshold.
  • if its nearest neighbour on the input grid has no precipitation.

When interpolating from gaussian to latitude-longitude grids, this operation is performed before any special processing at the poles. Polar values for precipitation will always be the average of the nearest gaussian line with no threshold check applied.

The interpolation of accumulated precipitation fields is affected by a number of factors which sometimes give rise to negative values when calculations are done on the interpolated grids to form the difference between one timestep and an earlier timestep:

  • the scaling of values during GRIB packing, and
  • the interpolation threshold rules applied when creating new grids from original model reduced gaussian grids.

The field values are scaled when packing in GRIB format: the range of values (maximum - minimum) is scaled to fit into a fixed number of bits for each grid point value.

For accumulated fields, the range increases from one timestep to the next but, typically, the same number of bits is used for packing every timestep. As a result, the precision of the stored values can change slightly from one timestep to the next. For example, a value stored as 0.000053 at one step may be stored as 0.000046 (say) at a later step even though the value has not changed in the model output at that point (this is a feature of GRIB!). In itself, this could give rise to small negative values which would be unreal but not too troublesome.

However, the change in value can have a significant effect in the interpolation from a gaussian grid to a lat-long grid because of the rules applied for trace amounts of precipitation. Values below 0.00005 are regarded as negligible and treated as zero. In the case that the interpolated point value or its nearest neighbouring gaussian point has a trace value, the interpolated point is set to zero.

As an example, if at one timestep one of the neighbours had value 0.000053, all four neighbours would be used to create an interpolated lat-long point value. At a following step, because of the GRIB scaling to fit the increase precipitation in the total field the same neighbour might have value 0.000046 (below the trace threshold) and the interpolated lat-long point value would be set to zero without regard to its other three neighbouring values. The effect may then be to reduce the point value from a non-zero value at the first step to a zero value at the later step. In such a case, the interpolation amplifies the GRIB packing difference.

In general, more satisfactory results will be obtained by forming the difference from one timestep and a later timestep using the original gaussian grids, and then interpolating the result to a lat-long grid as a final step.