12 #include <stk_util/unit_test_support/stk_utest_macros.hpp> 14 #include <stk_util/parallel/Parallel.hpp> 16 #include <stk_mesh/base/BulkData.hpp> 18 #include <stk_mesh/fem/FEMMetaData.hpp> 27 bool has_part(
const Entity& entity,
const Part& part)
38 #define SETUP_MESH() \ 39 stk_classic::ParallelMachine pm = MPI_COMM_SELF; \ 41 const unsigned spatial_dim = 2; \ 43 std::vector<std::string> entity_rank_names = stk_classic::mesh::fem::entity_rank_names(spatial_dim); \ 44 FEMMetaData meta_data(spatial_dim, entity_rank_names); \ 45 Part& unranked_part = meta_data.declare_part("unranked_part"); \ 46 Part& element_rank_part = meta_data.declare_part("element_rank_part", meta_data.element_rank()); \ 47 Part& element_rank_superset_part = meta_data.declare_part("element_rank_superset_part", meta_data.element_rank()); \ 48 Part& side_rank_part = meta_data.declare_part("side_rank_part", meta_data.side_rank()); \ 49 Part& unranked_superset_part = meta_data.declare_part("unranked_superset_part"); \ 50 meta_data.declare_part_subset(unranked_superset_part, element_rank_part); \ 51 meta_data.declare_part_subset(element_rank_superset_part, element_rank_part); \ 54 BulkData mesh(FEMMetaData::get_meta_data(meta_data), pm); \ 56 mesh.modification_begin(); \ 58 stk_classic::mesh::PartVector parts; \ 59 parts.push_back(&unranked_part); \ 60 parts.push_back(&element_rank_part); \ 61 Entity& elem = mesh.declare_entity(meta_data.element_rank(), 1 , parts); \ 64 parts.push_back(&side_rank_part); \ 65 Entity& side1 = mesh.declare_entity(meta_data.side_rank(), 1 , parts); \ 66 Entity& side2 = mesh.declare_entity(meta_data.side_rank(), 2 , parts); \ 69 Entity& node = mesh.declare_entity(meta_data.node_rank(), 1 , parts); \ 71 mesh.declare_relation(elem, side1, 0 ); \ 72 mesh.declare_relation(elem, side2, 1 ); \ 73 mesh.declare_relation(side1, node, 0 ); \ 74 mesh.declare_relation(side2, node, 0 ); 76 STKUNIT_UNIT_TEST ( UnitTestInducedPart , verifyBasicInducedPart )
82 STKUNIT_EXPECT_TRUE(has_part(node, side_rank_part));
83 STKUNIT_EXPECT_TRUE(has_part(side1, element_rank_part));
84 STKUNIT_EXPECT_TRUE(has_part(side2, element_rank_part));
86 mesh.modification_end();
89 STKUNIT_EXPECT_TRUE(has_part(node, side_rank_part));
90 STKUNIT_EXPECT_TRUE(has_part(side1, element_rank_part));
91 STKUNIT_EXPECT_TRUE(has_part(side2, element_rank_part));
94 STKUNIT_UNIT_TEST ( UnitTestInducedPart , verifyNotTransitiveInducedPart )
102 STKUNIT_EXPECT_TRUE(!has_part(node, element_rank_part));
105 STKUNIT_UNIT_TEST ( UnitTestInducedPart, verifyInducedPartCorrectnessWhenRelationsRemoved )
111 mesh.destroy_relation(elem, side1, 0 );
112 STKUNIT_EXPECT_TRUE(!has_part(side1, element_rank_part));
116 mesh.destroy_relation(side1, node, 0 );
117 STKUNIT_EXPECT_TRUE(has_part(node, side_rank_part));
121 mesh.destroy_relation(side2, node, 0 );
122 STKUNIT_EXPECT_TRUE(!has_part(node, side_rank_part));
125 STKUNIT_UNIT_TEST ( UnitTestInducedPart , verifySupersetsOfInducedPart )
132 STKUNIT_EXPECT_TRUE(has_part(side1, element_rank_superset_part));
133 STKUNIT_EXPECT_TRUE(has_part(side1, unranked_superset_part));
Bucket & bucket() const
The bucket which holds this mesh entity's field data.
An application-defined subset of a problem domain.
Manager for an integrated collection of entities, entity relations, and buckets of field data...
A fundamental unit within the discretization of a problem domain, including but not limited to nodes...
bool member(const Part &) const
Bucket is a subset of the given part.