IPOLATES: grid interpolation library 8/2018
IPOLATES is a fortran library from NCEP that interpolates between
grids using both scalar and vector interpolates. IPOLATES knows
about grid-relative winds and can convert those winds to earth-relative
winds and vice versa. IPOLATES included with wgrib2 supports
bilinear
bicubic
nearest neighbor
budget
interpolation. The interpolation routines are aware of and uses
the flag for undefined values. As of writing (8/2018), the single
precision GRIB1 version of ipolates is being replaced by the
double precision GRIB2 version of ipolates.. (wgrib2 v2.0.7 uses
the former and v2.0.8 will use the latter.)
Installing the IPOLATE enables the following functions to work
-new_grid interpolate to a new grid
-new_grid_winds set type of winds to use (mandatory)
-new_grid_vectors set type of vector fields
-new_grid_interpolation set type of interpolation to use
bilinear is the default
-new_grid_ipopt set interpolation parameters
see iplib documentation
The single-precision GRIB1 ipolates is used in operations at NCEP.
The double-precision GRIB2 ipolates is formally in beta testing at NCEP.
ipolates was written by staff at NCEP and is in the public domain
IPOLATES and wgrib2: the good
With the IPOLATES library, wgrib2 can interpolate from one grib file
to another grib file. You can also convert from grid-relative to
more commonly used earth-relative winds.
Single precision GRIB1 IPOLATES: the bad
This version of IPOLATES is a single precision library. It assumes a
spherical earth, The grib1 standard uses a position to the nearest
millidegreee except the single precsion math puts the practical
precision to about a hundredth of a degree using IEEE floats.
The ipoltes library assumes a hard-coded radius of spherical earth. Wgrib2
works around the problem and supports a variable radius spherical grid by
assuming the radius is the mean of the semi-major and semi-minor axes.
"Glahn" scanning mode is not supported.
Double precision GRIB2 IPOLATES: the good
This library supports lat-lon values to the grib2 standard of a
millidegree. The WMO standard rotated lat-lon grids are supported, and
we are working towards supporting the FV3 cubed sphere.
Double precision should be slower than single precision. However, more threaded
code has made the performance on multi-core machines similar or much better
(budget interpolation).
Future versions of this library will support the "Glahn" scanning order
and perhaps the staggering bits.
Double precision GRIB2 IPOLATES: the bad
This library is restricted to a spherical earth.
Wgrib2 is probably the first major use of this library.
Spectral Interpolation
Spectral interpolation has been part IPOLATES but it wasn't implimented because
of large executable size increase for a minor feature and the origins of the source
code were questionable. For the 2/2019 wgrib2 release, codes were documented to be
open source by either being rewritten or removed. Consequently the spectral library
included with wgrib2 should not be used as a "clean" version for general use.
Spectral interpolation is more accurate than bilinear interpolation for smooth fields.
Spectral interpolation was added for the Conventional Observation Reanalysis project.
Other reanalyses have a higher resolution, so partially compansate by improving the
interpolation.
Changes
2/2012 changed to new IPOLATES
3/2013: removed OpenMP directives
7/2016: tested iplib.v3.0.0 (current version at NCEP)
internal interface uses optional arguments, faster because
unnecessary calculations are avoided
passes testing, if passes more testing, will replace iplib.2012
9/2017 iplib.v3.0.0 is default, tested in NCO Operations
(this wasn't my idea)
5/2018 option to use grib2 ipolates
7/2018 finished optimization of grib2 ipolates so that I expect that
time critical codes will not be affected by the new library.