Inconsistent Lagrange element type for coordinates at higher degrees
- Dominant language
- C++
- Stars
- 1.2k
- Forks
- 261
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 71
Description
#3633 checks that the coordinate element used in generated code is the same as the coordinate element associated with the mesh. It exposed inconsistent mixing of `basix.LagrangeVariant.unset` and `basix.LagrangeVariant.equispaced` for coordinate elements. In practice it makes no different at degree <-= 2. To get consistency, #3633 changes mesh coordinate elements to `basix.LagrangeVariant.unset`.
`basix.ufl.element` defaults to `basix.LagrangeVariant.unset`. Forcing the user to specify the variant would be tiresome since nearly all meshes are degree 1 or 2. We could just raise/throw an exception for p > 2 geometry elements when the variant is `basix.LagrangeVariant.unset`, i.e. force the user to be explicit for higher order meshes (where is matters).
For high-order meshes, it would be neat if we could interpolate the geometry, e.g. interpolate a degree 3 mesh with equispaced points to a degree 3 mesh with GLL points.
Contributor guide
Assessment
This issue has not been assessed yet.