I’m running into some visual artifacts when rendering high order elements with large deformation. The non-linear subdivisions are not updating for some surfaces, but seem to be for others, which leads to strange behavior along edges. See attached figure.
Also, I have uploaded the vtu file of a single 6th order lagrange hexahedra undergoing large deformation. The issue only appears for high order elements with large deformations. Setting the non-linear subdivisions to 1 gives non-overlapping results, but anything higher causes excessive z fighting caused by the non consistent edges.
I think what is happening is that as the element wraps around a tight curve, some triangles are not subdivided and span the curve – causing them to become inverted; these cause the “ridges” on the sides of the hexahedron. If you can provide a deflection vector (or a vector holding the original points of the hexahedron), it might be simpler to confirm this is what’s happening.
This is also an example of where forcing subdivision on the shader might help, because such a fine subdivision on the CPU (where you must hold on to the entire subdivided mesh, as opposed to generating it on the fly on the GPU) really sucks up memory. The new vtkCellGrid classes do this, but don’t support arbitrary-order cells just yet. I should have that in pretty soon, though.
Finally, note that the purple lines in your image (indicating the cell is selected) appear to use a coarser triangulation (and thus a lower NonlinearSubdivisionLevel) than the base representation. That is a bug (the selection representation’s NonlinearSubdivisionLevel property should be linked to the base representation).