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