//VERTEX BOUND void TerminationCriterionTest::test_vertex_bound() { MsqPrintError err(std::cout); PatchData pd; create_twelve_hex_patch( pd, err ); ASSERT_NO_ERROR(err); // get bounding dimension for patch double maxcoord = 0.0; for (size_t i = 0; i < pd.num_nodes(); ++i) for (int d = 0; d < 3; ++d) if (fabs(pd.vertex_by_index(i)[d]) > maxcoord) maxcoord = fabs(pd.vertex_by_index(i)[d]); // add a little bit for rounding error maxcoord += 1e-5; TerminationCriterion tc; tc.add_bounded_vertex_movement( maxcoord ); tc.reset_inner( pd, ofEval, err ); ASSERT_NO_ERROR(err); tc.reset_patch( pd, err ); ASSERT_NO_ERROR(err); CPPUNIT_ASSERT(!tc.terminate()); int idx = pd.num_free_vertices() - 1; Vector3D pos = pd.vertex_by_index(idx); pos[0] = 2*maxcoord; pd.set_vertex_coordinates( pos, idx, err ); ASSERT_NO_ERROR(err); tc.accumulate_inner( pd, 0.0, 0, err ); ASSERT_NO_ERROR(err); tc.accumulate_patch( pd, err ); ASSERT_NO_ERROR(err); CPPUNIT_ASSERT(tc.terminate()); }