It appears as though ElementMeshInterpolation does not play nice with the element meshes produced by BoundaryMesh
<< NDSolve`FEM`
bmesh = ToBoundaryMesh[Ball[]];
bscalarvals = RandomReal[1, Length[bmesh["Coordinates"]]];
bmeshinterp = ElementMeshInterpolation[{bmesh}, bscalarvals];
(* ElementMeshInterpolation::fememtlq: The quality -1. of the underlying mesh is too low. The quality needs to be larger than 0.`. *)
This seems to stem from the fact that, being a surface mesh, bmesh has no volume elements. Is there some way to trick this thing into working or acquire the desired functionality in some other way?
In the meantime I've written something to convert points on the surface mesh to the barycentric coordinates of one of the triangles and interpolate that way, but I wonder if there is a better way.


ToElementMesh[MeshCoordinates[DiscretizeRegion[ImplicitRegion[((Sqrt[x^2 + y^2] - 2.0)/1)^2 + z^2 <= 1, {x, y, z}]]]]["Wireframe"]Not that I particularly expected it would, but I need to figure something out for these surfaces as well. I guess I can switch back to the barycentric coordinate strategy. – alessandro Dec 08 '20 at 14:59