On Tue, 28 Oct 2008, Adam Arbree wrote:
> I am trying to integrate a jump term over the interior boundary between two
> 3D elements. To do a sanity check on my code, I run the code snippet at the
> end of this mail. It fails at the last assertion and I cannot figure out
Just because the two neighboring elements are using an identical
quadrature rule doesn't mean they're going to get matching points.
For a simple example: Imagine two cubes touching each other. Now,
rotate one of them 90 degrees around their common axis. The side
quadrature points rotate with it, so even if they matched the other
cube's quadrature points before, they won't after. And yet both
meshes are perfectly valid.
> I am sorry if I am missing something simple.
Simple but disappointing: we can make no guarantees, even on
conforming meshes, that quadrature points will match the way you want
them to. The robust thing to do is the inverse maps that I suggested
in a recent mailing list entry. Do it the way JumpErrorEstimator does
it and your code will work even for non-conforming interfaces.
If you're determined to avoid the inverse maps you could try to get
the quadrature points on one element in terms of face xi-eta
coordinates, figure out which coordinate (xi, eta, 1-xi, whatever)
each of those corresponds to on the face of the adjoining element, and
then use the result as a face quadrature rule there. But I wouldn't
recommend it; the code I'm imagining wouldn't have to do any Newton
solves but it would be a huge morass of switch statements and linear