1 #include <libmesh/libmesh.h> 
    2 #include <libmesh/elem.h> 
   21   CPPUNIT_TEST( testContainsPointTri3 );
 
   22   CPPUNIT_TEST( testContainsPointTet4 );
 
   25   CPPUNIT_TEST_SUITE_END();
 
   35     Point a(3,1,2), b(1,2,3), c(2,3,1);
 
   36     containsPointTri3Helper(a, b, c, a);
 
   39     containsPointTri3Helper(a/5000., b/5000., c/5000., c/5000.);
 
   42     containsPointTri3Helper(
Point(0.000808805, 0.0047284,  0.),
 
   43                             Point(0.0011453,   0.00472831, 0.),
 
   44                             Point(0.000982249, 0.00508037, 0.),
 
   45                             Point(0.001,       0.005,      0.));
 
   56       Node one   (1., 0., 0., 1);
 
   57       Node two   (0., 1., 0., 2);
 
   58       Node three (0., 0., 1., 3);
 
   61       elem->set_node(0) = &
zero;
 
   62       elem->set_node(1) = &one;
 
   63       elem->set_node(2) = &two;
 
   64       elem->set_node(3) = &three;
 
   67       CPPUNIT_ASSERT (elem->contains_point(elem->centroid()));
 
   70       CPPUNIT_ASSERT (elem->contains_point(
zero));
 
   71       CPPUNIT_ASSERT (elem->contains_point(one));
 
   72       CPPUNIT_ASSERT (elem->contains_point(two));
 
   73       CPPUNIT_ASSERT (elem->contains_point(three));
 
   76       CPPUNIT_ASSERT (!elem->contains_point(
Point(.34, .34, .34)));
 
   77       CPPUNIT_ASSERT (!elem->contains_point(
Point(.33, .33, -.1)));
 
   78       CPPUNIT_ASSERT (!elem->contains_point(
Point(0., -.1, .5)));
 
   89       Node one   (epsilon, 0., 0., 1);
 
   90       Node two   (0., epsilon, 0., 2);
 
   91       Node three (0., 0., 1., 3);
 
   94       elem->set_node(0) = &
zero;
 
   95       elem->set_node(1) = &one;
 
   96       elem->set_node(2) = &two;
 
   97       elem->set_node(3) = &three;
 
  100       CPPUNIT_ASSERT (elem->contains_point(elem->centroid()));
 
  103       CPPUNIT_ASSERT (elem->contains_point(
zero));
 
  104       CPPUNIT_ASSERT (elem->contains_point(one));
 
  105       CPPUNIT_ASSERT (elem->contains_point(two));
 
  106       CPPUNIT_ASSERT (elem->contains_point(three));
 
  109       CPPUNIT_ASSERT (elem->contains_point(
Point(epsilon/2, 0, 0.5)));
 
  112       CPPUNIT_ASSERT (!elem->contains_point(
Point(epsilon, epsilon, epsilon/2)));
 
  113       CPPUNIT_ASSERT (!elem->contains_point(
Point(epsilon/10, epsilon/10, 1.0)));
 
  114       CPPUNIT_ASSERT (!elem->contains_point(
Point(epsilon/2, -epsilon/10, 0.5)));
 
  131     elem->set_node(0) = &a;
 
  132     elem->set_node(1) = &b;
 
  133     elem->set_node(2) = &c;
 
  142     CPPUNIT_ASSERT (elem->contains_point(elem->centroid()));
 
  145     CPPUNIT_ASSERT (elem->contains_point(a));
 
  146     CPPUNIT_ASSERT (elem->contains_point(b));
 
  147     CPPUNIT_ASSERT (elem->contains_point(c));
 
  150     CPPUNIT_ASSERT (!elem->contains_point(elem->centroid() + 
std::sqrt(
TOLERANCE) * oop_unit));
 
  153     CPPUNIT_ASSERT (!elem->contains_point(a + va * 
TOLERANCE * 10));
 
  154     CPPUNIT_ASSERT (!elem->contains_point(b + vb * 
TOLERANCE * 10));
 
  155     CPPUNIT_ASSERT (!elem->contains_point(c - (va + vb) * 
TOLERANCE * 10));
 
  158     CPPUNIT_ASSERT (elem->contains_point(p));