Commit cc5101a8 authored by Committed by David ThompsonBrowse files
Add Lagrange polynomial higher-order cells to VTK.
This commit adds support for Lagrange cells of the following shape: curve, triangle, quadrilateral, tetrahedron, hexahedron, and wedge. The new cell types may have arbitrary order, up to a compile-time maximum of 10. The maximum may be changed easily. The order is inferred from the number of points defining the cell and is assumed to be the same along each coordinate axis. Visualization operations that cells must provide (contouring, clipping, cutting) are implemented by approximating each higher-order cell as a collection of multi-linear "primitive" cells of the same shape. Note that the wedge element, when asked for boundary faces, returns faces with outward-pointing normals. This is not the same convention as vtkWedge but is the same as other VTK cell shapes. See the vtkCellTypeSource class in vtkFiltersSources for an example of how cell connectivity is specified. In general, the shape corner points are specified first, matching the linear cell counterparts. Then points on edges and faces bounding the shape are listed. Finally, interior points are listed. This will allow simpler connectivity entries in the future where points on edges and faces may only require 2 numbers each instead of a number proportional to the order raised to the parametric dimension of the boundary. T. J. Corona provided the triangle and tetrahedron implementations.