void test_evaluate_2D_weight() { MsqPrintError err(cout); PatchData pd; bool rval; double value; QMType m( &ideal, &e_weight, &faux_pi ); tester.get_ideal_element( TRIANGLE, true, pd ); rval = m.evaluate( pd, 0, value, err ); CPPUNIT_ASSERT(!MSQ_CHKERR(err)); CPPUNIT_ASSERT(rval); CPPUNIT_ASSERT_DOUBLES_EQUAL( faux_pi.value*e_weight.value, value, DBL_EPSILON ); }
void test_surf_eval_ortho_quad() { MsqPrintError err(cout); PatchData pd; bool rval; double value; QMType m( &surf_target, &faux_zero ); faux_zero.count = 0; tester.get_ideal_element( QUADRILATERAL, true, pd ); rval = m.evaluate( pd, 0, value, err ); CPPUNIT_ASSERT(!MSQ_CHKERR(err)); CPPUNIT_ASSERT(rval); CPPUNIT_ASSERT_EQUAL( 1, faux_zero.count ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, col_dot_prod(faux_zero.last_A_2D), DBL_EPSILON ); }
void test_3d_eval_ortho_hex() { MsqPrintError err(cout); PatchData pd; bool rval; double value; QMType m( &ideal, &faux_zero ); faux_zero.count = 0; tester.get_ideal_element( HEXAHEDRON, true, pd ); rval = m.evaluate( pd, 0, value, err ); CPPUNIT_ASSERT(!MSQ_CHKERR(err)); CPPUNIT_ASSERT(rval); CPPUNIT_ASSERT_EQUAL( 1, faux_zero.count ); // test that columns are orthogonal for ideal hex element MsqMatrix<3,3> A = faux_zero.last_A_3D; CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, A.column(0) % A.column(1), 1e-6 ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, A.column(0) % A.column(2), 1e-6 ); CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, A.column(1) % A.column(2), 1e-6 ); }