We present the package FastOPInterpolation.jl. It provides interpolation on arbitrary tensor product domains. The main goal is fast, repeated evaluations at fixed order with forward recursion and fast reinterpolation of updated or new functions. The implemented domains include lines, disks, and triangles. The extension to other domains is easily possible. It was originally developed with integral equations on product spaces in mind.
The package FastOPInterpolation.jl provides interpolation on an arbitrary number of tensor product domains. For example, a prism as a product of a line and a triangle, a cylinder as a product of a line and a disk or simply hypercubes as a product of lines.
The interpolation is based on nodal values using a lazy Kronecker product of Vandermonde matrices. The evaluation utilizes forward recurrence relations of orthogonal polynomials on the elementary domains. This provides numerical stability and speed while being entirely non-allocating. Additionally, the forward recurrence structure allows for an easy extension to other domains, provided a set of orthogonal polynomials together with their recurrence relation is known.
The initial version includes Jacobi polynomials, including Chebyshev and Legendre polynomials as special cases, on the line, where evaluation nodes are provided for arbitrary polynomial order. The triangle with Koornwinder IV polynomials (nodes up to order 18), and the disk with Koornwinder II polynomials, which include the Zernike polynomials as special case (nodes up to order 30).
The package was originally developed with applications to integral and integral-differential equations of several functions on tensor product domains in mind.