@@ -30,6 +30,7 @@ class SideVertexAverageNormalTest : public CppUnit::TestCase
3030public :
3131 LIBMESH_CPPUNIT_TEST_SUITE ( SideVertexAverageNormalTest );
3232 CPPUNIT_TEST ( testEdge2 );
33+ CPPUNIT_TEST ( testEdge3 );
3334 CPPUNIT_TEST ( testTri3 );
3435 CPPUNIT_TEST ( testQuad4 );
3536 CPPUNIT_TEST ( testPyramid5 );
@@ -79,6 +80,43 @@ public:
7980 }
8081 }
8182
83+ void testEdge3 ()
84+ {
85+ LOG_UNIT_TEST ;
86+
87+ {
88+ // Reference
89+ const Elem & edge3 = ReferenceElem ::get (EDGE3 );
90+ const Point n1 = edge3 .side_vertex_average_normal (0 );
91+ LIBMESH_ASSERT_FP_EQUAL (-1 , n1 (0 ), TOLERANCE * TOLERANCE );
92+ LIBMESH_ASSERT_FP_EQUAL (0 , n1 (1 ), TOLERANCE * TOLERANCE );
93+ LIBMESH_ASSERT_FP_EQUAL (0 , n1 (2 ), TOLERANCE * TOLERANCE );
94+ const Point n2 = edge3 .side_vertex_average_normal (1 );
95+ LIBMESH_ASSERT_FP_EQUAL (1 , n2 (0 ), TOLERANCE * TOLERANCE );
96+ LIBMESH_ASSERT_FP_EQUAL (0 , n2 (1 ), TOLERANCE * TOLERANCE );
97+ LIBMESH_ASSERT_FP_EQUAL (0 , n2 (2 ), TOLERANCE * TOLERANCE );
98+ }
99+
100+ {
101+ // Oriented, checked with the FE construction
102+ std ::vector < Point > pts = {Point (1 , 0 , 0 ), Point (1 , 3 , 0 ), Point (2.2344 , 1.210293 , 0 )};
103+ auto [edge3 , nodes ] = this -> construct_elem (pts , EDGE3 );
104+ std ::unique_ptr < libMesh ::FEBase > fe (libMesh ::FEBase ::build (1 , libMesh ::FEType (1 )));
105+ libMesh ::QGauss qface (0 , libMesh ::CONSTANT );
106+ const std ::vector < Point > & normals = fe -> get_normals ();
107+ for (const auto s : make_range (edge3 -> n_sides ()))
108+ {
109+ const std ::unique_ptr < const Elem > face = edge3 -> build_side_ptr (s );
110+ fe -> attach_quadrature_rule (& qface );
111+ fe -> reinit (edge3 .get (), s , TOLERANCE );
112+ const Point n1 = edge3 -> side_vertex_average_normal (s );
113+ LIBMESH_ASSERT_FP_EQUAL (normals [0 ](0 ), n1 (0 ), TOLERANCE * TOLERANCE );
114+ LIBMESH_ASSERT_FP_EQUAL (normals [0 ](1 ), n1 (1 ), TOLERANCE * TOLERANCE );
115+ LIBMESH_ASSERT_FP_EQUAL (normals [0 ](2 ), n1 (2 ), TOLERANCE * TOLERANCE );
116+ }
117+ }
118+ }
119+
82120 void testTri3 ()
83121 {
84122 LOG_UNIT_TEST ;
0 commit comments