12 #include <stk_util/unit_test_support/stk_utest_macros.hpp> 14 #include <stk_mesh/baseImpl/PartRepository.hpp> 16 #include <stk_mesh/base/MetaData.hpp> 18 #include <stk_mesh/fem/FEMMetaData.hpp> 19 #include <stk_mesh/fem/FEMHelpers.hpp> 24 using stk_classic::mesh::impl::PartRepository;
26 class UnitTestPartRepository
29 UnitTestPartRepository();
30 ~UnitTestPartRepository() {}
32 const int spatial_dimension;
34 stk_classic::mesh::impl::PartRepository partRepo;
35 stk_classic::mesh::impl::PartRepository partRepo_1;
36 stk_classic::mesh::impl::PartRepository partRepo_2;
46 std::vector<stk_classic::mesh::Part *> intersection;
48 const CellTopologyData * singleton;
51 UnitTestPartRepository::UnitTestPartRepository()
52 : spatial_dimension(3)
53 , meta(
stk_classic::mesh::fem::entity_rank_names(spatial_dimension) )
57 , universal_part( partRepo.universal_part() )
74 STKUNIT_UNIT_TEST( UnitTestPartRepository, construct )
76 UnitTestPartRepository upr;
77 STKUNIT_EXPECT_TRUE( upr.universal_part != NULL );
80 STKUNIT_UNIT_TEST( UnitTestPartRepository, universal_in_subset )
82 UnitTestPartRepository upr;
84 upr.partRepo.declare_subset(*upr.part_A,*upr.universal_part),
89 STKUNIT_UNIT_TEST( UnitTestPartRepository, subset_equal_superset )
91 UnitTestPartRepository upr;
93 upr.partRepo.declare_subset(*upr.part_A,*upr.part_A),
98 STKUNIT_UNIT_TEST( UnitTestPartRepository, universal_in_intersection )
100 UnitTestPartRepository upr;
101 upr.intersection.push_back(upr.universal_part);
102 STKUNIT_ASSERT_THROW(
103 upr.partRepo.declare_part(upr.intersection),
106 upr.intersection.push_back(upr.part_A);
107 STKUNIT_ASSERT_THROW(
108 upr.partRepo.declare_part(upr.intersection),
113 STKUNIT_UNIT_TEST( UnitTestPartRepository, circular_subset )
115 UnitTestPartRepository upr;
116 upr.partRepo.declare_subset(*upr.part_A,*upr.part_B);
117 upr.partRepo.declare_subset(*upr.part_B,*upr.part_C);
118 STKUNIT_ASSERT_THROW(
119 upr.partRepo.declare_subset(*upr.part_C,*upr.part_A),
124 STKUNIT_UNIT_TEST( UnitTestPartRepository, inconsistent_rank_subset )
126 UnitTestPartRepository upr;
128 STKUNIT_ASSERT_THROW(
129 upr.partRepo.declare_subset(*upr.part_A,*upr.part_D),
133 STKUNIT_ASSERT_NO_THROW(
134 upr.partRepo.declare_subset(*upr.part_D,*upr.part_A)
138 STKUNIT_UNIT_TEST( UnitTestPartRepository, two_part_repositories )
140 UnitTestPartRepository upr;
142 STKUNIT_ASSERT_THROW(
143 upr.partRepo_1.declare_subset(*upr.part_1_A,*upr.part_2_A),
149 upr.intersection.push_back(upr.part_1_A);
150 upr.intersection.push_back(upr.part_1_B);
151 STKUNIT_ASSERT_THROW(
152 upr.partRepo_2.declare_part( upr.intersection ),
158 upr.intersection.push_back(upr.part_1_A);
159 upr.intersection.push_back(upr.part_2_A);
160 STKUNIT_ASSERT_THROW(
161 upr.partRepo_1.declare_part( upr.intersection ),
167 STKUNIT_UNIT_TEST( UnitTestPartRepository, invalid_relation )
169 UnitTestPartRepository upr;
170 upr.relation.m_root = upr.part_B;
171 upr.relation.m_target = upr.part_A;
172 STKUNIT_ASSERT_THROW(
173 upr.partRepo.declare_part_relation( *upr.part_A, upr.relation, *upr.part_B ),
179 STKUNIT_UNIT_TEST( UnitTestPartRepository, declare_attribute_no_delete )
181 UnitTestPartRepository upr;
182 upr.partRepo.declare_attribute_no_delete(*upr.part_A, upr.singleton);
An application-defined subset of a problem domain.
Manager for an integrated collection of entities, entity relations, and buckets of field data...
Part & declare_part(FEMMetaData &meta_data, const std::string &name)
Declare a part with a given cell topology. This is just a convenient function that wraps FEMMetaData'...
A defined entity-relationship between parts. An internal class that should never need to be directly...