Hello everyone:

I am having an issue with the `Elem::contains_point()` function where it
returns a false negative when the point tested is near the boundary of an
element when using tol=libMesh::TOLERANCE.

I modified introduction_ex1 on this branch
<https://github.com/tradowsk/libmesh/blob/rayfire-issue/examples/introduction/introduction_ex1/introduction_ex1.C>
to
show this behavior. I've manually plotted the element nodes and the point
to confirm that the point is indeed on the element, though right on an edge.

tl;dr
how can I best handle this behavior to avoid a false negative? Arbitrarily
raising the tolerance until the failure goes away seems more like tuning
the code to a specific mesh rather than trying to fix the underlying
problem.

======
longer version

This issue arose in development of the GRINS::RayfireMesh class. In short,
the user supplies an origin point on a mesh boundary, and the class will
walk in a straight line across the mesh in a given direction. On each
element along the line, the class will calculate the points where it enters
and leaves that element to create an EDGE2 element that gets stored
internally. The problem with that calculation is verifying whether or not a
calculated point is actually on the side/face of the given element (SECOND
order elements use a newton solver due to the potential nonlinearity on the
element sides/faces).

The test case above is from a larger mesh where the rayfire traverses the
z=0 mesh boundary. I found that using 10.0*libMesh::TOLERANCE for
`contains_point()` allows the rayfire to complete successfully for this
particular mesh, but I don't know if that tolerance value would work for an
arbitrary mesh.

Does anyone have a suggestion for how I can best handle these cases? In the
test case above, I imagine the failure is due to the difference in
z-components, even though they are all essentially zero.

Any help is greatly appreciated!

~Tim
tradowsk
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to