1 #include <libmesh/libmesh.h>     2 #include <libmesh/elem.h>    21   CPPUNIT_TEST( testContainsPointNodeElem );
    22   CPPUNIT_TEST( testContainsPointTri3 );
    23   CPPUNIT_TEST( testContainsPointTet4 );
    26   CPPUNIT_TEST_SUITE_END();
    36     Node node  (1., 1., 1., 0);
    38     elem->set_node(0, &node);
    41     CPPUNIT_ASSERT(elem->contains_point(
Point(1.+epsilon/2, 1.-epsilon/2, 1+epsilon/2), epsilon));
    42     CPPUNIT_ASSERT(!elem->contains_point(
Point(1.+epsilon/2, 1.-epsilon/2, 1+epsilon/2), epsilon/2));
    50     Point a(3,1,2), b(1,2,3), c(2,3,1);
    51     containsPointTri3Helper(a, b, c, a);
    54     containsPointTri3Helper(a/5000, b/5000, c/5000, c/5000);
    57     containsPointTri3Helper(
Point(0.000808805, 0.0047284,  0.),
    58                             Point(0.0011453,   0.00472831, 0.),
    59                             Point(0.000982249, 0.00508037, 0.),
    60                             Point(0.001,       0.005,      0.));
    73       Node one   (1., 0., 0., 1);
    74       Node two   (0., 1., 0., 2);
    75       Node three (0., 0., 1., 3);
    78       elem->set_node(0, &
zero);
    79       elem->set_node(1, &one);
    80       elem->set_node(2, &two);
    81       elem->set_node(3, &three);
    84       CPPUNIT_ASSERT (elem->contains_point(elem->vertex_average()));
    87       CPPUNIT_ASSERT (elem->contains_point(
zero));
    88       CPPUNIT_ASSERT (elem->contains_point(one));
    89       CPPUNIT_ASSERT (elem->contains_point(two));
    90       CPPUNIT_ASSERT (elem->contains_point(three));
    93       CPPUNIT_ASSERT (!elem->contains_point(
Point(.34, .34, .34)));
    94       CPPUNIT_ASSERT (!elem->contains_point(
Point(.33, .33, -.1)));
    95       CPPUNIT_ASSERT (!elem->contains_point(
Point(0., -.1, .5)));
   103       Real epsilon = 1.e-4;
   106       Node one   (epsilon, 0., 0., 1);
   107       Node two   (0., epsilon, 0., 2);
   108       Node three (0., 0., 1., 3);
   111       elem->set_node(0, &
zero);
   112       elem->set_node(1, &one);
   113       elem->set_node(2, &two);
   114       elem->set_node(3, &three);
   117       CPPUNIT_ASSERT (elem->contains_point(elem->vertex_average()));
   120       CPPUNIT_ASSERT (elem->contains_point(
zero));
   121       CPPUNIT_ASSERT (elem->contains_point(one));
   122       CPPUNIT_ASSERT (elem->contains_point(two));
   123       CPPUNIT_ASSERT (elem->contains_point(three));
   126       CPPUNIT_ASSERT (elem->contains_point(
Point(epsilon/2, 0, 0.5)));
   129       CPPUNIT_ASSERT (!elem->contains_point(
Point(epsilon, epsilon, epsilon/2)));
   130       CPPUNIT_ASSERT (!elem->contains_point(
Point(epsilon/10, epsilon/10, 1.0)));
   131       CPPUNIT_ASSERT (!elem->contains_point(
Point(epsilon/2, -epsilon/10, 0.5)));
   148     elem->set_node(0, &a);
   149     elem->set_node(1, &b);
   150     elem->set_node(2, &c);
   159     CPPUNIT_ASSERT (elem->contains_point(elem->vertex_average()));
   162     CPPUNIT_ASSERT (elem->contains_point(a));
   163     CPPUNIT_ASSERT (elem->contains_point(b));
   164     CPPUNIT_ASSERT (elem->contains_point(c));
   167     CPPUNIT_ASSERT (!elem->contains_point(elem->vertex_average() + std::sqrt(
TOLERANCE) * oop_unit));
   170     CPPUNIT_ASSERT (!elem->contains_point(a + va * 
TOLERANCE * 10));
   171     CPPUNIT_ASSERT (!elem->contains_point(b + vb * 
TOLERANCE * 10));
   172     CPPUNIT_ASSERT (!elem->contains_point(c - (va + vb) * 
TOLERANCE * 10));
   175     CPPUNIT_ASSERT (elem->contains_point(p));
 void containsPointTri3Helper(Point a_in, Point b_in, Point c_in, Point p)
CPPUNIT_TEST_SUITE_REGISTRATION(ContainsPointTest)
A Node is like a Point, but with more information. 
static constexpr Real TOLERANCE
The libMesh namespace provides an interface to certain functionality in the library. 
TypeVector< T > unit() const
void testContainsPointTet4()
static std::unique_ptr< Elem > build(const ElemType type, Elem *p=nullptr)
TypeVector< typename CompareTypes< T, T2 >::supertype > cross(const TypeVector< T2 > &v) const
void testContainsPointTri3()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
A Point defines a location in LIBMESH_DIM dimensional Real space. 
void testContainsPointNodeElem()