Topic: Spatial Localizer for Shell Elements with Faceted Models

Borek,
For the next step of developing my coupled model, I need to come up with a way to use a Spatial Localizer with a faceted shell model of a curved surface. I'm having difficulties figuring out a way to get the correct element for a point that is on the curved surface, but is not "in" any of the shell elements due to the faceting.

Originally I was thinking that I could use the giveElementCloseToPoint functions, but something is either wrong with my code, or the distance function sometimes has problems. If I understand how the function is computed, I am thinking the problem may be in the distance function.

An example that I think highlights the problem, is a small element that connects to a long skinny element. The center of the small element is closer than the center of the long skinny element for points near the edge of the long skinny element. However, these points actually belong to the long skinny element.

I have not been able to come up with a distance function that will do a better job for the faceted shell element model for a curved surface case.

My current idea is to use an artificially large "thickness" for the shell element in the element functions that check whether a point is "in" the element. Then use the giveElementContainingPoint Spatial Localizer function. This artificial "thickness" could be something like the average length of the element sides.
Any suggestions or thoughts would be much appreciated.

Regards,
Erik

2

Re: Spatial Localizer for Shell Elements with Faceted Models

Dear Erik,

I understand your problem. We were facing the similar problem some time ago, when working on adaptive stuff. The adaptivity requires mapping from one mesh to another and as the meshes are generated by external mesher from real geometry, it sometimes happen, that domains are not overlapping exactly, for example on curved boundaries. For every point of interest (integration point on a new grid) we needed to find element on the old grid, which contained the new point. So first we are looking if there is any element containing the given point, if not, we are looking for closest element using OctreeSpatialLocalizer :: giveElementCloseToPoint method.
When looking into the code and implementation of OctreeSpatialLocalizer :: giveElementCloseToPoint  I see something that should be corrected and could solve your problem as well. The giveElementCloseToPoint  (see http://www.oofem.org/resources/doc/oofe … tml#l00687) is using SpatialLocalizerI_giveDistanceFromParametricCenter method, provided by the element. At least, the name of this method  is somehow misleading, better would be to call this method SpatialLocalizerI_giveDistance and it should return the distance of the given point from the element. Of course, it could be implemented as distance from element center, but one may think about more suitable (and precise) implementation of such distance function.
In your case, you may think to compute this distance as minimum from
1) distance of given point to element plane (if projection is inside element area)
2) distance of given point to element nodes and edges (if projection is inside edge)

Borek