Skip to content

Handle edge orientations systematically by basis transformations

Daniel Bauer requested to merge bauerd/n1e1-orientations into master

The rationale behind this MR is detailed in https://i10git.cs.fau.de/terraneo/hhg_doku/-/blob/master/P3Function_thoughts/orientations.tex. This MR implements the proposed approach for the N1E1 space.

TL;DR

I spent some time thinking about how to handle orientation of mesh entities and how to implement that in HyTeG having the general case in mind. The conclusion is that we should perform basis transformations during communication. More details about these transforms are given in [1]. As a result only two parts in HyTeG require care: the communication (PackInfo) and the matrix assembly. The goal is to have both generated automatically.

Some Notes

  • N1E1 forms do not depend on edge directions any more. The reason why this was introduced initially was confusion on my side about the difference between matrix diagonals and linear forms.
  • Assembly of linear forms is now a free function (for N1E1) and the Operator is not defined for linear forms anymore. I am open to discussions about this.

Related

https://i10git.cs.fau.de/terraneo/hyteg-form-generator/-/merge_requests/30

[1] M. W. Scroggs, J. S. Dokken, C. N. Richardson, and G. N. Wells, “Construction of Arbitrary Order Finite Element Degree-of-Freedom Maps on Polygonal and Polyhedral Cell Meshes,” ACM Trans. Math. Softw., vol. 48, no. 2, pp. 1–23, Jun. 2022, doi: 10.1145/3524456.

Edited by Daniel Bauer

Merge request reports