HowTo: Use FindPointsGSLIB for high-order interpolation

FindPointsGSLIB provides a wrapper for high-order interpolation via findpts, a set of routines that were developed as a part of the gather-scatter library, gslib. While findpts was originally developed for interpolation of grid functions in H1 for meshes with quadrilateral or hexahedron elements, FindPointsGSLIB also enables interpolation of functions in L2, H(div), H(curl) on meshes with triangle and tetrahedral elements. FindPointsGSLIB has also been extended to support surface meshes and effect the functionality on GPUs, and the core methodology is described in Mittal et al., "General Field Evaluation in High-Order Meshes on GPUs".

The key steps of using FindPointsGSLIB, as demonstrated in the gslib miniapps are:

For convenience, FindPointsGSLIB class provides methods such as FindPointsGSLIB::Interpolate(mesh, xyz, u, ui) which combines the three steps described above (setup, finding the computational coordinates of the sought points, and interpolation) into a single method. Please see the class definition for more details.

Application of FindPointsGSLIB

The gslib miniapps demonstrate several applications of FindPointsGSLIB:

FindPointsGSLIB is also used in TMOP-based r-adaptivity miniapps (e.g., meshing/pmesh-optimizer) to remap grid functions from the initial mesh to optimized mesh.