Tensor product of geometry types
Summary
This MR extends the GeometryType
utilities by
GeometryTypes::conicalProduct(a,b)
GeometryTypes::prismaticProduct(a,b)
The prismatic product is recursively defined as follows:
prismaticProduct(a,b) = {
a, if b.isVertex(),
prismaticExtension(a), if b.isLine(),
prismaticProduct(prismaticExtension(a), base(b)), otherwise, assuming that b.isPrismatic()
}
Analogously, the conical product is recursive defined as follows:
conicalProduct(a,b) = {
conicalExtension(a), if b.isVertex(),
conicalProduct(conicalExtension(a), base(b)), otherwise, assuming that b.isConical()
}
Thus, the products are just sequences of the corresponding functions conicalExtension
and prismaticExtension
, to allow the formal tensor product of GeometryType
s that are also of prismatic or conical form. The products are defined recusively and only works if the arguments are both of conical or prismatic type, respectively. Corresponding tests are added to the test-suite.
Additionally, the tensor product quadrature rules are made public and are extended to allow products or arbitrary rules and not just the one-dimensional extension.
ToDo
-
Remove changes to tensor-product quadrature rules -
Squash commits -
Add Changelog entry
Edited by Simon Praetorius