2 #include <stk_util/unit_test_support/stk_utest_macros.hpp> 4 #include <stk_util/parallel/Parallel.hpp> 6 #include <stk_mesh/base/MetaData.hpp> 7 #include <stk_mesh/base/BulkData.hpp> 8 #include <stk_mesh/base/Entity.hpp> 9 #include <stk_mesh/base/GetEntities.hpp> 10 #include <stk_mesh/base/Selector.hpp> 11 #include <stk_mesh/base/GetBuckets.hpp> 12 #include <stk_mesh/base/Comm.hpp> 14 #include <stk_mesh/fem/CreateAdjacentEntities.hpp> 15 #include <stk_mesh/fem/FEMHelpers.hpp> 17 #include <stk_mesh/fixtures/HexFixture.hpp> 18 #include <stk_mesh/fixtures/QuadFixture.hpp> 20 #include <stk_util/parallel/ParallelReduce.hpp> 22 #include <Shards_BasicTopologies.hpp> 28 STKUNIT_UNIT_TEST( UnitTestStkMeshSkinning , testCreateAdjacentEntities3x1x1 )
36 fixture.m_fem_meta.commit();
37 fixture.generate_mesh();
40 std::vector<size_t> counts ;
43 STKUNIT_EXPECT_EQ( counts[0] , 16u );
44 STKUNIT_EXPECT_EQ( counts[1] , 0u );
45 STKUNIT_EXPECT_EQ( counts[2] , 0u );
46 STKUNIT_EXPECT_EQ( counts[3] , 3u );
51 stk_classic::mesh::create_adjacent_entities(fixture.m_bulk_data, empty_add_parts);
54 std::vector<size_t> counts ;
57 STKUNIT_EXPECT_EQ( counts[0] , 16u );
58 STKUNIT_EXPECT_EQ( counts[1] , 28u );
59 STKUNIT_EXPECT_EQ( counts[2] , 16u );
60 STKUNIT_EXPECT_EQ( counts[3] , 3u );
64 STKUNIT_UNIT_TEST( UnitTestStkMeshSkinning , testCreateAdjacentEntities3x3x3 )
66 const size_t elem_rank = 3;
67 const size_t face_rank = 2;
68 const size_t edge_rank = 1;
69 const size_t node_rank = 0;
77 fixture.m_fem_meta.commit();
78 fixture.generate_mesh();
81 std::vector<size_t> counts ;
84 STKUNIT_EXPECT_EQ( counts[node_rank] , 64u );
85 STKUNIT_EXPECT_EQ( counts[edge_rank] , 0u );
86 STKUNIT_EXPECT_EQ( counts[face_rank] , 0u );
87 STKUNIT_EXPECT_EQ( counts[elem_rank] , 27u );
92 stk_classic::mesh::create_adjacent_entities(fixture.m_bulk_data, empty_add_parts);
95 std::vector<size_t> counts ;
98 STKUNIT_EXPECT_EQ( 64u, counts[node_rank] );
99 STKUNIT_EXPECT_EQ( 144u, counts[edge_rank] );
100 STKUNIT_EXPECT_EQ( 108u, counts[face_rank] );
101 STKUNIT_EXPECT_EQ( 27u, counts[elem_rank] );
104 stk_classic::mesh::BucketVector elem_buckets = fixture.m_bulk_data.buckets(elem_rank);
105 for ( stk_classic::mesh::BucketVector::iterator b_itr = elem_buckets.begin();
106 b_itr != elem_buckets.end();
111 for (
size_t i = 0; i< b.
size(); ++i) {
114 STKUNIT_EXPECT_EQ( 6u, elem.
relations(face_rank).size() );
115 STKUNIT_EXPECT_EQ( 12u, elem.
relations(edge_rank).size() );
116 STKUNIT_EXPECT_EQ( 8u, elem.
relations(node_rank).size() );
121 stk_classic::mesh::BucketVector face_buckets = fixture.m_bulk_data.buckets(face_rank);
122 for ( stk_classic::mesh::BucketVector::iterator b_itr = face_buckets.begin();
123 b_itr != face_buckets.end();
128 for (
size_t i = 0; i< b.
size(); ++i) {
130 STKUNIT_EXPECT_EQ( 4u,face.
relations(edge_rank).size());
131 STKUNIT_EXPECT_EQ( 4u, face.
relations(node_rank).size() );
135 stk_classic::mesh::BucketVector edge_buckets = fixture.m_bulk_data.buckets(edge_rank);
136 for ( stk_classic::mesh::BucketVector::iterator b_itr = edge_buckets.begin();
137 b_itr != edge_buckets.end();
142 for (
size_t i = 0; i< b.
size(); ++i) {
144 STKUNIT_EXPECT_EQ( 2u, edge.
relations(node_rank).size() );
149 STKUNIT_UNIT_TEST( UnitTestStkMeshSkinning , testCreateAdjacentEntities3x3 )
151 const size_t elem_rank = 2;
152 const size_t edge_rank = 1;
153 const size_t node_rank = 0;
160 fixture.m_fem_meta.commit();
161 fixture.generate_mesh();
164 std::vector<size_t> counts ;
167 STKUNIT_EXPECT_EQ( counts[node_rank] , 16u );
168 STKUNIT_EXPECT_EQ( counts[edge_rank] , 0u );
169 STKUNIT_EXPECT_EQ( counts[elem_rank] , 9u );
174 stk_classic::mesh::create_adjacent_entities(fixture.m_bulk_data, empty_add_parts);
177 std::vector<size_t> counts ;
180 STKUNIT_EXPECT_EQ( 16u, counts[node_rank] );
181 STKUNIT_EXPECT_EQ( 24u, counts[edge_rank] );
182 STKUNIT_EXPECT_EQ( 9u, counts[elem_rank] );
185 stk_classic::mesh::BucketVector elem_buckets = fixture.m_bulk_data.buckets(elem_rank);
186 for ( stk_classic::mesh::BucketVector::iterator b_itr = elem_buckets.begin();
187 b_itr != elem_buckets.end();
192 for (
size_t i = 0; i< b.
size(); ++i) {
195 STKUNIT_EXPECT_EQ( 4u, elem.
relations(edge_rank).size() );
196 STKUNIT_EXPECT_EQ( 4u, elem.
relations(node_rank).size() );
201 stk_classic::mesh::BucketVector edge_buckets = fixture.m_bulk_data.buckets(edge_rank);
202 for ( stk_classic::mesh::BucketVector::iterator b_itr = edge_buckets.begin();
203 b_itr != edge_buckets.end();
208 for (
size_t i = 0; i< b.
size(); ++i) {
210 STKUNIT_EXPECT_EQ( 2u, edge.
relations(node_rank).size() );
bool comm_mesh_counts(BulkData &M, std::vector< size_t > &counts, bool local_flag)
Global counts for a mesh's entities.
size_t size() const
Number of entities associated with this bucket.
PairIterRelation relations() const
All Entity relations for which this entity is a member. The relations are ordered from lowest entity-...
A fundamental unit within the discretization of a problem domain, including but not limited to nodes...
std::vector< Part *> PartVector
Collections of parts are frequently maintained as a vector of Part pointers.
A container for the field data of a homogeneous collection of entities.