Rework nodal utilities and add support for nodal prisms
This MR refactors the nodal points utilities that are found in the NodalUtil.h
and NodalUtil.cpp
files, and introduces a new NodalUtil
class which handles the generation of Vandermonde matrices, integration weights, interpolation matrices and derivative matrices for arbitrary sets of points on the triangle, tetrahedron and prism elements. The latter element is newly supported.
This branch:
- Significantly reduces the amount of code from sporadic function calls to a more organised class structure, eliminating most duplicate code
- Fixes a bug in the generation of nodal tetrahedral weights
- Enables the use of nodal prism elements
- Adds a lot of doxygen documentation to describe the new structure
- Replaces the NodalUtil demos with a single NodalDemo, which is now tested in the regression tests
This should be seen as a stepping-stone branch, depending on the outcome of the working being done in the feature/basis-refactor branch, but will hopefully make any further efforts easier.