Rational functions for pyramid
This commit generates the proper orthonormal rational functions for the pyramid. See https://github.com/FEniCS/basix/issues/894
Still doing more checks on the derivatives, especially around p=q.
The Lagrangian elements have a problem with these functions at the top vertex (nan), even though the limit is well defined.
These are not yet the orthonormal rational functions that we want though. The first generated proper rational function here are (2x-1+z)(2y-1+z)/(1-z). This should be x y/(1-z) as in Cockburn and Fu and https://defelement.org/elements/examples/pyramid-lagrange-equispaced-1.html However, for orthogonality purposes, the base should then be from -1,-1,zmin to 1,1,zmin and the peak at 0,0,1. This will keep the admissiblity/compatibility. Alternatively it should be (x-1/2)(y-1/2)/(1-z) with the regular base peak at 1/2,1/2,1. So in the end the tilted, asymmetric pyramid is a bad choice. To get the 1 and 2-forms going without immediately needing to apply piola transformations doesn't seems to work.
I am changing to pyramid such that there are four slanted faces as in https://www.math.u-bordeaux.fr/~durufle/montjoie/pyramid.php. I also changed the orthogonal rational functions to include an extra factor of 1/(1-z) overall. This makes sure that the first order derivatives of the lower order rational functions are included in the function space as required for the generation of for order complexes of elements c.f. Cockburn and Fu. (to be verified again). For complexes with higher derivatives, more such factor may need to be included. There are still a couple of problems: a) basix.create_lattice is still on the original pyramid b) picture? c) Elements with dofs on vertices don't work yet, and will need modification. This will require removing the 1/(1-z) factor, but the orthogonal polynomials will need to stay the same, so it will need to be applied when needing orthogonal polynomials for a quadrature application.
Closing this in favour of #918