]> https://gitweb.dealii.org/ - dealii.git/commit
Explicitly use the inverse orientation instead of hard-coding. 16916/head
authorDavid Wells <drwells@email.unc.edu>
Sat, 20 Apr 2024 21:57:44 +0000 (17:57 -0400)
committerDavid Wells <drwells@email.unc.edu>
Sat, 20 Apr 2024 22:21:34 +0000 (18:21 -0400)
commit31d8f7b10c1af2b9e39e2607b28319b84d4b8234
tree11275a6edd7a484c251a3d99a24a0eb584b9d05c
parent9b4d7b6a5ad9149263c767e942f2bffc7e038064
Explicitly use the inverse orientation instead of hard-coding.

Partially reverts #15678.

While #15678 fixed the permutation bug, it didn't address the true cause of the
problem: since face orientations are computed in the "apply this permutation to
face 1 to get face 2" direction, QProjector should use inverse orientations.
Since 2d orientations are their own inverses this only shows up in 3d.

Whenever two faces abutt, the first face is always in the default orientation
and the second face's orientation is computed relative to that (as decribed
here). Hence, when we project quadrature points onto the first face they do not
need to reoriented. However, we need to apply the *reverse* permutation on the
second face so that they end up in the same positions as the first face. More
formally: most, but not all, orientations are their own inverses. In particular,
triangle orientations 3 and 5 are each-other's inverses.

This matches the notion of inverse orientation used in #16828 for hypercubes. In
the future, we should combine the hypercube and non-hypercube implementations to
avoid these kinds of inconsistencies.

Part of #14667.
include/deal.II/grid/reference_cell.h
source/base/qprojector.cc
tests/simplex/orientation_02.cc

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.