From: KIRK, BENJAMIN (JSCEG) (NASA) <benjamin.kirk1@na...>  20051230 21:45:24

It seems that "contains_point()" name and the actual implementation are at odds with each other. The algorithm in the inverse map on a 2D element allows the point to live in 3D space (see line ~1211 in fe_map.C). The linear system to be solved at each nonlinear iterate is of the form J dP = dX where J ix 3x2, dP is 2x1, and dX is 3x1. The current implementation instead solves the normal equations, which are constructed as J^T J dP = J^T dX This is essentially equivalent to looking for the orthogonal projection of the desired point onto the element of interest. This orthogonal projection produces a line normal to the shell which goes through the point of interest. If the intersection of the line and the shell lies inside the reference element ([1,1]^2 in the local coordinates for a quad) then I believe the test will pass, even if the point itself is not on the surface. I'll look into this a little more for the specific example you give, but I think that is the issue. Ben Original Message From: libmeshusersadmin@... [mailto:libmeshusersadmin@...] On Behalf Of Manav Bhatia Sent: Wednesday, December 28, 2005 7:36 PM To: Roy Stogner Cc: libmeshusers@... Subject: Re: [Libmeshusers] possible bug in elem This is a critical point that you mentioned. I did go through the FE class in libMesh, and it appeared to me that it makes the assumtion of a 2D elem in a 2D space only, and like wise. For example, if I give FE a plane element with a nonzero zcoordinate, it seems to omit it for the calculation of shape functions, and derivatives. Hence, I always reduce my shell elems to a local 2D plane and then generate the matrices. However, the FE::inverse_map() method mentions something about NOT assuming that a lower dimensional elem lies in same dimensional elem itself. This makes it a little more confusing. Thanks Manav On Wed, 28 Dec 2005, Roy Stogner wrote: > On Wed, 28 Dec 2005, Manav Bhatia wrote: > >> I used the elem.contains_point() method to find if a point lies >> inside an element or not. For the following, I get true, which should >> otherwise be false. > > Does libMesh support lowerdimensional elements contained in > higherdimensional space? There's some support for "virtual" elements > generated as faces and edges of real elements, but in other cases I > think the code may assume that 2D elements are entirely in the XY > plane. > > I'll look through the code and see if there is such an assumption (and > see how hard it would be to remove); it would obviously be nice to be > able to use beam and shell elements in 3space. >  > Roy Stogner >  This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ Libmeshusers mailing list Libmeshusers@... https://lists.sourceforge.net/lists/listinfo/libmeshusers 