Generic Interpolator

The Generic Interpolation block provides an interpolation method that is intended to work in most cases.

The outline of a yaml configuration for the interpolation block is shown below:

- saber block name: interpolation
  inner geometry:
    function space: <covariance model functionspace>
    grid:
      name: <covariance model grid>
    partitioner: (optional, default = 'equal regions')
    halo: 1
  forward interpolator: <fw interpolator name>
    ...
  inverse interpolator: <inv interpolator name>
    ...
  active variables: <vars>

The inner geometry key specifies the geometry used by the blocks sandwiched in between the adjoint and forward interpolation blocks in the full block chain. Thus, it is the ‘target’ geometry in the adjoint (inverse) direction and the ‘source’ geometry for the forward (tangent-linear) direction. The grid partitioner and halo depth can also be specified. For most cases, the partitioner key can be left out (which will result in the default equal regions partitioning), but for some cases, a different partitioner must be specified. For example, for block chains that involve spectral methods, the ectrans partitioner must be used.

Also, both a forward interpolator and an inverse interpolator should be specified. The forward interpolator is used in the forward, inner-to-model geometry direction, and the inverse interpolator goes the opposite direction, from model-to-inner geometry. Currently, there is a choice between between the AtlasInterpolator and the UnstructuredInterpolator implementations. See Atlas Interpolator and Unstructured Interpolator below for more information.

Finally, the active variables affected by the interpolation may be specified. If none are provided, the full set of incoming increment variables will be interpolated.

Atlas Interpolator

The Atlas Interpolator option is a wrapper around the interpolator provided by the atlas library from the ECMWF. This is a more sophisticated option that utilizes knowledge of the atlas functionspaces underlying the geometrical grids to provide a higher fidelity interpolation. The yaml snippet below demonstrates an example configuration for the AtlasInterpolator

forward interpolator:
  local interpolator type: atlas interpolator
  interpolation method:
    type: cubedsphere-bilinear

The option set as the type will depend on the geometry of the source grid. So in the forward direction it will depend on the FunctionSpace of the inner geometry and in the adjoint (inverse) direction it will depend on the model grid’s FunctionSpace.

Warning

There is currently an issue in atlas which will cause this interpolator to hang when run in parallel.

Unstructured Interpolator

The Unstructured Interpolator option is a simpler implementation that performs a barycentric interpolation on a triangulation of the source grid, and has some additional features allowing it to be used with masks (e.g., land/sea masks) and with integer/categorical fields. The yaml configuration for the UnstructuredInterpolator is relatively simple and shown below:

forward interpolator:
  local interpolator type: oops unstructured grid interpolator