Also, how about the tri/tet elements? Will they cause zero determinant problems?
On Mon, Jul 18, 2016 at 1:42 PM, Xujun Zhao <xzha...@gmail.com> wrote: > It sounds like this is an inherent problem of the present algorithm for > determining if a point is in an element??? especially for complex elements > such as HEX27. Is there any other more robust solution in computational > geometry? > > I also tried to use the 1st order element, it passed the test for this > simple case, although I am not sure if this really solves the problem. Is > it possible to add another contains_point(Point& pt, ORDER order) that > allows using lower order shape function? In CFD with mixed finite elements, > we sometimes use higher order interpolation for velocity and lower order > ones for pressure. But when to determine which element a point moves into, > we can still use first order algorithm as an approximation. > > > On Mon, Jul 18, 2016 at 1:26 PM, John Peterson <jwpeter...@gmail.com> > wrote: > >> >> >> On Mon, Jul 18, 2016 at 12:13 PM, Roy Stogner <royst...@ices.utexas.edu> >> wrote: >> >>> >>> On Mon, 18 Jul 2016, Xujun Zhao wrote: >>> >>> Yes, the points are not quad-points but arbitrary points, which are >>>> moving >>>> particles in the domain. It mainly happened when the points are out of >>>> the >>>> element. >>>> >>> >>> Oh, yes, looking for points far outside an element can give you >>> inverse map failures. If you imagine extending the master->physical >>> element map for, say, a QUAD4 trapezoid with one very narrow side on >>> top, you can see how the map stops being invertible a little way above >>> that top. We avoid ever hitting many such cases because we precede >>> the inverse_map with a bounding box test, but that's a performance >>> optimization, not a guarantee of an invertible map. We pass >>> secure=false to inverse_map to, in theory, avoid screaming and dying >>> when handling a case that might be expected to fail. >>> >>> Looks like there's a bug in the 3D case, though? We rely on >>> TypeTensor::solve() in the Newton iteration in 3D, but we *don't* warn >>> solve() (or have a way to warn solve()?) that in the secure=false case >>> we don't necessarily expect a solution to exist. >>> >> >> I can fix this. The zero determinant asserts could be changed to >> libmesh_error()'s (or explicit exception throws) and then we could catch >> the exception in inverse_map(). It should be an "exceptional" case, so it >> seems reasonable to me. >> >> Other options would be to return an error code, or pass an extra flag to >> TypeTensor::solve()? In these cases you'd have to check the flag every >> time... >> >> -- >> John >> > > ------------------------------------------------------------------------------ What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic patterns at an interface-level. Reveals which users, apps, and protocols are consuming the most bandwidth. Provides multi-vendor support for NetFlow, J-Flow, sFlow and other flows. Make informed decisions using capacity planning reports.http://sdm.link/zohodev2dev _______________________________________________ Libmesh-users mailing list Libmesh-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-users