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.
bool member(const Part &) const
Bucket is a subset of the given part.
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...