FEniCS/basix

Tensor Product Order - Get Permutation Vector

Closed this issue ยท 3 comments

It would be interesing to have a function that could provide the permutation of dofs to match the tensor product order.
Something to map from basix order to tensor product order.

Something like:

auto cell = basix::cell::type::hexahedron;
auto family = basix::element::family::P;

std::vector<int> perm = function_to_get_tensor_product_order(family, cell, degree);

I think we need to provide this alongside the information about which spaces make up the tensor product representations, as without that info, know the permutation doesn't tell us much

I guess Lagrange on quads and hexes would be a good start.

Yes, I was trying to work out how we do this for RT no quads, but with the integral moment versions of these spaces it gets much more complicated than with the point evaluation versions.

I'll have a go at adding something for Lagrange today (copying from my experiments in symfem), then we can revise it once we work out how RT etc should work.