I want to interpolate a vector field inside convex polygons in a polygonal mesh.
For triangular meshes the scheme uses a piecewise constant interpolation in the triangle, discretized at the center of the triangle.
I am especially interested in interpolating the gradient of a scalar field on the vertices, so feel free to suggest methods that only work for the gradient.
My current simple ideas:
- Increase the degree of the interpolation polynomial.
- Solve a least-squares problem.
- Use a triangulation to get a continuous but in general non-differential field inside the polygon.
- Using hat functions like in the finite element method.
I wonder if there are more advanced techniques and what are the advantages and drawbacks of different ways to interpolate the field.
I think 1) may be a bad idea, because I do not know if it will overfit outliers in the data. In addition it may behave differently for polygons with many vertices and polygons with little vertices in the same mesh.
Approach 2) is probably useful to avoid overfitting and I guess the most common way for interpolating in overdetermined problems.
Option 3) may be the simplest, but will result in a less smooth field inside the polygon and I am not sure what the implications of choosing different triangulations are.
For option 4) I am not sure if interpolating with hat functions of a degree that depends on the number of vertices of the polygon is not equivalent to option 1), i.e., raising the degree of an interpolation polynomial.
What are other ways for interpolating vector fields / gradients in polygonal meshes?
I would like to keep this more general, as the concept can be useful for other applications, but I'll add an example application I am currently looking for.
Application
Using the discrete exterior calculus as defined in Discrete Exterior Calculus (Hirani 2003), a piecewise constant gradient $\nabla \phi_{\sigma^0,\sigma^n}$ is defined (Section 2.7) for a simplex with $\sum_{\sigma^0\prec\sigma^n}\ \phi_{\sigma^0,\sigma^n}(x) = 1$.
The notation in the sum means, that the function is evaluated at all vertices of the simplex.
One discrete $\sharp$ operator is defined in equation 5.7.2., that maps discrete $1$-forms to a vector field defined on the circumcenters of the simplices as
$$ \sum_{\sigma^0 \prec \sigma^n} (f(\sigma^0) - f(v))\nabla\phi_{\sigma^0,\sigma^n} $$
where $v$ is an arbitrary vertex $\sigma^0_i$ of the simplex $\sigma^n$.
(Note that the definition here is only given for the gradient)
This definition certainly works fine for simplices, as the edges $\overline{v\sigma^0}$ form a basis for the tangential space, that is the edges of the simplex (e.g. the two edges adjacent to a vertex of a triangle).
For polygons with more than $n+1$ vertices, there are two problems:
- $\overline{v\sigma^0}$ is not for all vertices $\sigma^0$ an edge of the polygon.
- $\overline{v\sigma_1^0}, \dots, \overline{v\sigma_{n+1+k}^0}$ is over defined. For example an quadrilateral would define three vectors to span a 2D tangential space.
There is an underlying reason for the problem, that is that a quadrilateral (or polygon of higher order) does not guarantee that all points lie in the same tangential space, which is a reason why possibly a least squares solution could be an option when one can assume that the polygon is mostly flat and why a higher order interpolation may be useful when the polygon is possibly highly curved.
The question above is, what are the best ways for interpolating, e.g., inside a 2D hexagon and what are the different advantages and problems with the approaches?
I am especially interested in which properties are conserved and which are approximated, as the DEC scheme separates its operators in ones that can be defined such that they hold exactly (on predefined elements, i.e, parts of a mesh only) and ones that involve a metric and are only approximated.