Dear Libmesh developers,

I found a problem with the mesh locator.

I created a 2nd order 2D mesh with gmesh software.

When I run my code using this mesh, I'm getting an error with the PointLocator.

Does PointLocator support QUAD9 elements?

Bellow you can find output from my debugger.

If you need the mesh to reproduce the problem, I can provide it.

Thank you,

Michael.

Program received signal SIGFPE, Arithmetic exception.
0x00002aaab87a575c in libMesh::FE<2u, (libMesh::FEFamily)0>::inverse_map 
(elem=0x1f42750, physical_point=...,
    tolerance=9.9999999999999995e-08, secure=false) at src/fe/fe_map.C:1726
1726                dp(0) = (Ginv11*dxidelta + Ginv12*detadelta);
Missing separate debuginfos, use: debuginfo-install glibc-2.17-260.el7.x86_64 
hwloc-libs-1.11.8-4.el7.x86_64 hwloc-plugins-1.11.8-4.el7.x86_64 
libfabric-1.7.0-1.el7.x86_64 
libibumad-43.1.1.MLNX20180612.87b4d9b-0.1.45101.x86_64 
libibverbs-41mlnx1-OFED.4.5.0.1.0.45101.x86_64 
libmlx4-41mlnx1-OFED.4.5.0.0.3.45101.x86_64 
libmlx5-41mlnx1-OFED.4.5.0.3.8.45101.x86_64 libnl3-3.2.28-4.el7.x86_64 
libpciaccess-0.14-1.el7.x86_64 librdmacm-41mlnx1-OFED.4.2.0.1.3.45101.x86_64 
libtool-ltdl-2.4.2-22.el7_3.x86_64 libxml2-2.9.1-6.el7_2.3.x86_64 
numactl-libs-2.0.9-7.el7.x86_64 
opensm-libs-5.3.0.MLNX20181108.33944a2-0.1.45101.x86_64 
xz-libs-5.2.2-1.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) p dxidelta
$1 = -2.0365205457321792e+22
(gdb) p Ginv11
$2 = inf
(gdb) p Ginv12
$3 = inf
(gdb) p detadelta
$4 = 1.0182602728660896e+22
(gdb) up
#1  0x00002aaab8721e1b in libMesh::FEInterface::inverse_map (dim=2, fe_t=..., 
elem=0x1f42750, p=...,
    tolerance=9.9999999999999995e-08, secure=false) at src/fe/fe_interface.C:570
570      fe_with_vec_switch(inverse_map(elem, p, tolerance, secure));
(gdb) p p
$5 = (const libMesh::Point &) @0x5131998: {<libMesh::TypeVector<double>> = 
{_coords = {1140, 1216,
      0}}, <No data fields>}
(gdb) p elem->type()
$6 = libMesh::QUAD9
(gdb) p elem->point(0)
$7 = (const libMesh::Point &) @0xbe79d0: {<libMesh::TypeVector<double>> = 
{_coords = {1073.919607848597,
      1053.6736755206391, 0}}, <No data fields>}
(gdb) p elem->point(1)
$8 = (const libMesh::Point &) @0xd7c550: {<libMesh::TypeVector<double>> = 
{_coords = {1118.8895049213079,
      1069.0910114055571, 0}}, <No data fields>}
(gdb) p elem->point(2)
$9 = (const libMesh::Point &) @0xc440d0: {<libMesh::TypeVector<double>> = 
{_coords = {1136.2480098839389,
      1025.636099727888, 0}}, <No data fields>}
(gdb) p elem->point(3)
$10 = (const libMesh::Point &) @0xc57a50: {<libMesh::TypeVector<double>> = 
{_coords = {1091.286513287763,
      998.03909901903012, 0}}, <No data fields>}
(gdb) p elem->point(4)
$11 = (const libMesh::Point &) @0xe34510: {<libMesh::TypeVector<double>> = 
{_coords = {1096.404556384952,
      1061.3823434630981, 0}}, <No data fields>}
(gdb) p elem->point(5)
$12 = (const libMesh::Point &) @0xe345d0: {<libMesh::TypeVector<double>> = 
{_coords = {1127.5687574026231,
      1047.3635555667231, 0}}, <No data fields>}
(gdb) p elem->point(6)
$13 = (const libMesh::Point &) @0xe34690: {<libMesh::TypeVector<double>> = 
{_coords = {1113.767261585851,
      1011.8375993734591, 0}}, <No data fields>}
(gdb) p elem->point(7)
$14 = (const libMesh::Point &) @0xe34750: {<libMesh::TypeVector<double>> = 
{_coords = {1082.6030605681799,
      1025.8563872698351, 0}}, <No data fields>}
(gdb) p elem->point(8)
$15 = (const libMesh::Point &) @0xe34810: {<libMesh::TypeVector<double>> = 
{_coords = {1105.0859089854021,
      1036.609971418279, 0}}, <No data fields>}
(gdb)
(gdb) up
#2  0x00002aaab889f5cf in libMesh::Elem::point_test (this=0x1f42750, p=..., 
box_tol=9.9999999999999995e-07,
    map_tol=9.9999999999999995e-07) at src/geom/elem.C:2406
2406                                                          /*secure=*/ 
false);
(gdb)
#3  0x00002aaab889eec6 in libMesh::Elem::contains_point (this=0x1f42750, p=..., 
tol=9.9999999999999995e-07)
    at src/geom/elem.C:2321
2321        return this->point_test(p, TOLERANCE, tol);
(gdb)
#4  0x00002aaab8de5cc6 in libMesh::TreeNode<4u>::find_element (this=0x318a930, 
p=..., allowed_subdomains=0x0,
    relative_tol=9.9999999999999995e-07) at src/utils/tree_node.C:484
484                if ((*pos)->active() && (*pos)->contains_point(p, 
relative_tol))
(gdb)
#5  0x00002aaab8de5eee in libMesh::TreeNode<4u>::find_element_in_children 
(this=0x31890c0, p=...,
    allowed_subdomains=0x0, relative_tol=9.9999999999999995e-07) at 
src/utils/tree_node.C:517
517                                        relative_tol);
(gdb)
#6  0x00002aaab8de5d27 in libMesh::TreeNode<4u>::find_element (this=0x31890c0, 
p=..., allowed_subdomains=0x0,
    relative_tol=9.9999999999999995e-07) at src/utils/tree_node.C:492
492                                              relative_tol);
(gdb)
#7  0x00002aaab8de5eee in libMesh::TreeNode<4u>::find_element_in_children 
(this=0x314d730, p=...,
    allowed_subdomains=0x0, relative_tol=9.9999999999999995e-07) at 
src/utils/tree_node.C:517
517                                        relative_tol);
(gdb)
#8  0x00002aaab8de5d27 in libMesh::TreeNode<4u>::find_element (this=0x314d730, 
p=..., allowed_subdomains=0x0,
    relative_tol=9.9999999999999995e-07) at src/utils/tree_node.C:492
492                                              relative_tol);
(gdb)
#9  0x00002aaab8de5eee in libMesh::TreeNode<4u>::find_element_in_children 
(this=0x313d2c0, p=...,
    allowed_subdomains=0x0, relative_tol=9.9999999999999995e-07) at 
src/utils/tree_node.C:517
517                                        relative_tol);
(gdb)
#10 0x00002aaab8de5d27 in libMesh::TreeNode<4u>::find_element (this=0x313d2c0, 
p=..., allowed_subdomains=0x0,
    relative_tol=9.9999999999999995e-07) at src/utils/tree_node.C:492
492                                              relative_tol);
(gdb)
#11 0x00002aaab8de5eee in libMesh::TreeNode<4u>::find_element_in_children 
(this=0x3132c20, p=...,
    allowed_subdomains=0x0, relative_tol=9.9999999999999995e-07) at 
src/utils/tree_node.C:517
517                                        relative_tol);
(gdb)
#12 0x00002aaab8de5d27 in libMesh::TreeNode<4u>::find_element (this=0x3132c20, 
p=..., allowed_subdomains=0x0,
    relative_tol=9.9999999999999995e-07) at src/utils/tree_node.C:492
492                                              relative_tol);
(gdb)
#13 0x00002aaab8de5eee in libMesh::TreeNode<4u>::find_element_in_children 
(this=0x3132df0, p=...,
    allowed_subdomains=0x0, relative_tol=9.9999999999999995e-07) at 
src/utils/tree_node.C:517
517                                        relative_tol);
(gdb)
#14 0x00002aaab8de5d27 in libMesh::TreeNode<4u>::find_element (this=0x3132df0, 
p=..., allowed_subdomains=0x0,
    relative_tol=9.9999999999999995e-07) at src/utils/tree_node.C:492
492                                              relative_tol);
(gdb)
#15 0x00002aaab8ddd67e in libMesh::Tree<4u>::find_element (this=0x3132de0, 
p=..., allowed_subdomains=0x0,
    relative_tol=9.9999999999999995e-07) at src/utils/tree.C:152
152      return root.find_element(p, allowed_subdomains, relative_tol);
(gdb)
#16 0x00002aaab8d81ac7 in libMesh::PointLocatorTree::operator() 
(this=0x3132af0, p=..., allowed_subdomains=0x0)
    at src/utils/point_locator_tree.C:207
207          this->_element = this->_tree->find_element (p,allowed_subdomains);
(gdb)


_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to