Skip to content

Simplify implementation of MonomialBasisSize

Oliver Sander requested to merge simplify-monomialbasis into master

MonomialBasisSize is a class that computes the number of monomial basis functions for a reference element given at compile time and an approximation order given at run-time. The previous implementation did a recursive template-meta-program sweep across the construction steps of the reference elements (i.e., across, e.g., Pyramid<Prism<Prism>>).

However, it is much easier to simply use a for loop to iterate over the bit representation of the construction in the topology id. This is what the current patch does: it replaces the recursive TMP construction by an iterative loop. The result is a much shorter code, and less stress for the compiler. Also, it is one step on the way to getting rid of the reference-topology- encoded-as-nested-type construction that is still in use here and there, and should be replaced by constexpr GeometryType and friends.

Edited by Oliver Sander

Merge request reports