NodeSet LinearPyramid::sample_points( NodeSet ) const { NodeSet result; result.set_all_corner_nodes(PYRAMID); result.clear_corner_node(4); return result; }
void NodeSetTest::test_num_before() { const EntityTopology type = HEXAHEDRON; NodeSet set; set.clear(); set.set_mid_face_node( 2 ); CPPUNIT_ASSERT_EQUAL( 0u, set.num_before_mid_face( 2 ) ); CPPUNIT_ASSERT_EQUAL( 1u, set.num_before_mid_face( 3 ) ); set.set_corner_node( 0 ); CPPUNIT_ASSERT_EQUAL( 1u, set.num_before_mid_face( 2 ) ); CPPUNIT_ASSERT_EQUAL( 2u, set.num_before_mid_face( 3 ) ); CPPUNIT_ASSERT_EQUAL( 0u, set.num_before_corner( 0 ) ); CPPUNIT_ASSERT_EQUAL( 1u, set.num_before_corner( 1 ) ); set.set_all_corner_nodes( type ); CPPUNIT_ASSERT_EQUAL( TopologyInfo::corners(type), set.num_before_mid_edge(0) ); CPPUNIT_ASSERT_EQUAL( TopologyInfo::corners(type)-1, set.num_before_corner(TopologyInfo::corners(type)-1) ); CPPUNIT_ASSERT_EQUAL( 0u, set.num_before_corner(0) ); CPPUNIT_ASSERT_EQUAL( 1u, set.num_before_corner(1) ); CPPUNIT_ASSERT_EQUAL( 2u, set.num_before_corner(2) ); CPPUNIT_ASSERT_EQUAL( 3u, set.num_before_corner(3) ); CPPUNIT_ASSERT_EQUAL( 4u, set.num_before_corner(4) ); const unsigned total_nodes = 27; set.set_all_nodes( type ); CPPUNIT_ASSERT_EQUAL( total_nodes - 1, set.num_before_mid_region( 0 ) ); set.clear_mid_edge_node( 0 ); CPPUNIT_ASSERT_EQUAL( total_nodes - 2, set.num_before_mid_region( 0 ) ); set.clear_mid_edge_node( 1 ); CPPUNIT_ASSERT_EQUAL( total_nodes - 3, set.num_before_mid_region( 0 ) ); }
NodeSet TriLagrangeShape::sample_points( NodeSet ns ) const { if (ns.have_any_mid_node()) { ns.set_all_corner_nodes(TRIANGLE); } else { ns.clear(); ns.set_mid_face_node(0); } return ns; }
MESQUITE_EXPORT NodeSet get_samples( size_t element, NodeSet non_slave_nodes ) const { // If we have a mapping function, use it const EntityTopology type = element_by_index(element).get_element_type(); const MappingFunction* f; if (mSettings && (f = mSettings->get_mapping_function(type))) return f->sample_points( non_slave_nodes ); // Otherwise default to sampling at all non-slave nodes non_slave_nodes.set_all_corner_nodes(type); return non_slave_nodes; }
void NodeSetTest::test_set_all() { const EntityTopology types[] = { TRIANGLE, QUADRILATERAL, TETRAHEDRON, HEXAHEDRON, PRISM, PYRAMID }; const int num_types = sizeof(types)/sizeof(types[0]); for (int i = 0; i < num_types; ++i) { NodeSet set; set.set_all_corner_nodes( types[i] ); check_range_set( types[i], set, 0 ); set.clear(); set.set_all_mid_edge_nodes( types[i] ); check_range_set( types[i], set, 1 ); set.clear(); set.set_all_mid_face_nodes( types[i] ); check_range_set( types[i], set, 2 ); set.clear(); set.set_all_mid_region_nodes( types[i] ); check_range_set( types[i], set, 3 ); } }
NodeSet MappingFunction::sample_points( NodeSet higher_order ) const { higher_order.set_all_corner_nodes( element_topology() ); return higher_order; }