Skip to content

Tensor product of geometry types

Simon Praetorius requested to merge feature/tensor-product into master

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 GeometryTypes 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

Merge request reports

Loading