Simon,
I have now compared the implementation using UnitToReal function
wrapper + QuadratureGenerator vs using an auxiliary triangulation with
one reference cell onto which I interpolate my "level set function",
so to speak, + DiscreteQuadratureGenerator. The latter is waaay
faster.
> Just out of curiosity (and if it is not a research secret), what is your use case? Why do you need to generate many quadratures for the same cell?
Well, I am certainly misusing deal.II. I have a problem involving a
field living in R^{dim^2} and a field in R^{dim}. The weak form
involves products between the two, and integrals are over
dim^2-dimensional domains, which may be decomposed into two iterated
dim-dimensional integrals. The inner integral then goes over a ball
which cuts elements. This is where non-matching quadrature comes
along, but I have to compute them for each outer quadrature point, so
to speak. Also the integrand is not polynomial all, so some
quadratures are of higher degree.
The proper way of doing this would be to utilize a FEM library that
supports mesh/elements/quadratures in dim^2. Can one do this with
deal.ii? Most of the code seems to be dimension-independent, but then
there are plenty of places where e.g. Point<dim> constructors are
specialized for dimensions 1..3.
Right now I am doing a "quick and dirty" test implementation, where I
am basically manually working on a tensor product mesh with tensor
product FEM etc, which is highly inelegant. If you are
doing/interested in research, I would be happy to discuss the problem
in detail/collaborate.
/Anton