11 #include <stk_util/unit_test_support/stk_utest_macros.hpp> 13 #include <stk_mesh/base/Selector.hpp> 14 #include <stk_mesh/base/Bucket.hpp> 15 #include <stk_mesh/base/Part.hpp> 16 #include <stk_mesh/base/Types.hpp> 17 #include <stk_mesh/base/GetBuckets.hpp> 18 #include <stk_util/environment/WallTime.hpp> 20 #include <stk_util/parallel/Parallel.hpp> 22 #include <stk_mesh/fixtures/SelectorFixture.hpp> 28 using stk_classic::mesh::fixtures::SelectorFixture ;
30 void initialize(SelectorFixture& fixture)
32 fixture.m_meta_data.commit();
33 fixture.m_bulk_data.modification_begin();
34 fixture.generate_mesh();
35 STKUNIT_ASSERT(fixture.m_bulk_data.modification_end());
73 STKUNIT_UNIT_TEST( UnitTestSelector, one_SelectorFixture )
79 STKUNIT_EXPECT_TRUE(
true);
86 STKUNIT_UNIT_TEST( UnitTestSelector, two_SelectorFixture )
96 STKUNIT_EXPECT_TRUE(
true);
106 STKUNIT_UNIT_TEST( UnitTestSelector, A_12345 )
116 bool result = selector(bucket);
117 STKUNIT_EXPECT_TRUE(result);
121 bool result = selector(bucket);
122 STKUNIT_EXPECT_TRUE(result);
126 bool result = selector(bucket);
127 STKUNIT_EXPECT_FALSE(result);
131 bool result = selector(bucket);
132 STKUNIT_EXPECT_FALSE(result);
136 bool result = selector(bucket);
137 STKUNIT_EXPECT_FALSE(result);
146 STKUNIT_UNIT_TEST( UnitTestSelector, Ac_12345 )
156 bool result = selector(bucket);
157 STKUNIT_EXPECT_FALSE(result);
161 bool result = selector(bucket);
162 STKUNIT_EXPECT_FALSE(result);
166 bool result = selector(bucket);
167 STKUNIT_EXPECT_TRUE(result);
171 bool result = selector(bucket);
172 STKUNIT_EXPECT_TRUE(result);
176 bool result = selector(bucket);
177 STKUNIT_EXPECT_TRUE(result);
185 STKUNIT_UNIT_TEST( UnitTestSelector, D_5 )
194 bool result = selector(bucket);
195 STKUNIT_EXPECT_FALSE(result);
201 STKUNIT_UNIT_TEST( UnitTestSelector, Ac_15 )
214 bool result = selector(bucket);
215 STKUNIT_EXPECT_FALSE(result);
219 bool result = selector(bucket);
220 STKUNIT_EXPECT_TRUE(result);
228 STKUNIT_UNIT_TEST( UnitTestSelector, AiB_12 )
230 SelectorFixture fix ;
241 bool result = selector(bucket);
242 STKUNIT_EXPECT_FALSE(result);
246 bool result = selector(bucket);
247 STKUNIT_EXPECT_TRUE(result);
255 STKUNIT_UNIT_TEST( UnitTestSelector, AuB_14 )
257 SelectorFixture fix ;
268 bool result = selector(bucket);
269 STKUNIT_EXPECT_TRUE(result);
273 bool result = selector(bucket);
274 STKUNIT_EXPECT_FALSE(result);
282 STKUNIT_UNIT_TEST( UnitTestSelector, AiBc_12 )
284 SelectorFixture fix ;
295 bool result = selector(bucket);
296 STKUNIT_EXPECT_TRUE(result);
300 bool result = selector(bucket);
301 STKUNIT_EXPECT_FALSE(result);
309 STKUNIT_UNIT_TEST( UnitTestSelector, AuBc_13 )
311 SelectorFixture fix ;
322 bool result = selector(bucket);
323 STKUNIT_EXPECT_TRUE(result);
327 bool result = selector(bucket);
328 STKUNIT_EXPECT_FALSE(result);
338 STKUNIT_UNIT_TEST( UnitTestSelector, Ai_BuC_c_12 )
340 SelectorFixture fix ;
352 bool result = selector(bucket);
353 STKUNIT_EXPECT_TRUE(result);
357 bool result = selector(bucket);
358 STKUNIT_EXPECT_FALSE(result);
365 bool result = newSelector(bucket);
366 STKUNIT_EXPECT_TRUE(result);
370 bool result = newSelector(bucket);
371 STKUNIT_EXPECT_FALSE(result);
380 STKUNIT_UNIT_TEST( UnitTestSelector, entityTest )
383 SelectorFixture fix ;
391 bool result = selector(pEntity);
392 STKUNIT_EXPECT_FALSE(result);
400 STKUNIT_UNIT_TEST( UnitTestSelector, defaultConstructor )
402 SelectorFixture fix ;
410 bool result = selector(bucket);
411 STKUNIT_EXPECT_FALSE(result);
423 STKUNIT_UNIT_TEST( UnitTestSelector, flipComplement_AuB_c )
425 SelectorFixture fix ;
437 bool result = notOrSelector(bucket);
438 STKUNIT_EXPECT_FALSE(result);
442 bool result = notOrSelector(bucket);
443 STKUNIT_EXPECT_FALSE(result);
447 bool result = notOrSelector(bucket);
448 STKUNIT_EXPECT_FALSE(result);
452 bool result = notOrSelector(bucket);
453 STKUNIT_EXPECT_TRUE(result);
460 bool result = notNotOrSelector(bucket);
461 STKUNIT_EXPECT_TRUE(result);
465 bool result = notNotOrSelector(bucket);
466 STKUNIT_EXPECT_TRUE(result);
470 bool result = notNotOrSelector(bucket);
471 STKUNIT_EXPECT_TRUE(result);
475 bool result = notNotOrSelector(bucket);
476 STKUNIT_EXPECT_FALSE(result);
487 STKUNIT_UNIT_TEST( UnitTestSelector, flipComplement_AiB_c )
489 SelectorFixture fix ;
501 bool result = notAndSelector(bucket);
502 STKUNIT_EXPECT_TRUE(result);
506 bool result = notAndSelector(bucket);
507 STKUNIT_EXPECT_FALSE(result);
511 bool result = notAndSelector(bucket);
512 STKUNIT_EXPECT_TRUE(result);
516 bool result = notAndSelector(bucket);
517 STKUNIT_EXPECT_TRUE(result);
524 bool result = notNotAndSelector(bucket);
525 STKUNIT_EXPECT_FALSE(result);
529 bool result = notNotAndSelector(bucket);
530 STKUNIT_EXPECT_TRUE(result);
534 bool result = notNotAndSelector(bucket);
535 STKUNIT_EXPECT_FALSE(result);
539 bool result = notNotAndSelector(bucket);
540 STKUNIT_EXPECT_FALSE(result);
550 STKUNIT_UNIT_TEST( UnitTestSelector, complementEmpty ) {
551 SelectorFixture fix ;
557 bool result = selector(bucket);
558 STKUNIT_EXPECT_FALSE(result);
563 bool result = selector(bucket);
564 STKUNIT_EXPECT_TRUE(result);
573 STKUNIT_UNIT_TEST( UnitTestSelector, AuBuCuD )
575 SelectorFixture fix ;
583 std::cout <<
"A|B|C|D = " << selector << std::endl;
584 std::ostringstream msg;
586 STKUNIT_EXPECT_EQUAL(
"!(!PartA AND !PartB AND !PartC AND !PartD)" , msg.str() );
593 STKUNIT_UNIT_TEST( UnitTestSelector, AiBiC )
595 SelectorFixture fix ;
602 std::cout <<
"A&B&C = " << selector << std::endl;
603 std::ostringstream msg;
605 STKUNIT_EXPECT_TRUE( msg.str() ==
"PartA AND PartB AND PartC" );
612 STKUNIT_UNIT_TEST( UnitTestSelector, complicated )
614 SelectorFixture fix ;
622 std::cout <<
"complicated selector = " << selector << std::endl;
623 std::ostringstream msg;
625 STKUNIT_EXPECT_EQUAL(
"!(!PartA AND !((!(PartA AND PartB) AND !PartC) AND !(PartD AND !PartB)))" , msg.str() );
635 SelectorFixture fix ;
639 parts.push_back( & fix.m_partA );
640 parts.push_back( & fix.m_partB );
645 bool result = selector(bucket);
646 STKUNIT_ASSERT_FALSE(result);
650 bool result = selector(bucket);
651 STKUNIT_ASSERT_TRUE(result);
655 bool result = selector(bucket);
656 STKUNIT_ASSERT_FALSE(result);
660 bool result = selector(bucket);
661 STKUNIT_ASSERT_FALSE(result);
665 bool result = selector(bucket);
666 STKUNIT_ASSERT_FALSE(result);
669 std::ostringstream msg;
671 STKUNIT_EXPECT_TRUE( msg.str() ==
"PartA AND PartB");
681 SelectorFixture fix ;
685 parts.push_back( & fix.m_partA );
686 parts.push_back( & fix.m_partB );
687 parts.push_back( & fix.m_partC );
692 bool result = selector(bucket);
693 STKUNIT_ASSERT_TRUE(result);
697 bool result = selector(bucket);
698 STKUNIT_ASSERT_TRUE(result);
702 bool result = selector(bucket);
703 STKUNIT_ASSERT_TRUE(result);
707 bool result = selector(bucket);
708 STKUNIT_ASSERT_TRUE(result);
712 bool result = selector(bucket);
713 STKUNIT_ASSERT_FALSE(result);
716 std::ostringstream msg;
718 std::cout <<
"msg.str() = " << msg.str() << std::endl;
719 STKUNIT_EXPECT_EQUAL(
"!(!PartA AND !PartB AND !PartC)", msg.str() );
796 STKUNIT_UNIT_TEST( UnitTestSelector, ZeroiuZero ) {
797 SelectorFixture fix ;
806 bool result = selector(bucket);
807 STKUNIT_EXPECT_FALSE(result);
812 bool result = selector(bucket);
813 STKUNIT_EXPECT_TRUE(result);
827 STKUNIT_UNIT_TEST( UnitTestSelector, ZeroiuA )
829 SelectorFixture fix ;
841 bool result = selectNoneOrA(bucket);
842 STKUNIT_EXPECT_TRUE(result);
846 bool result = selectAllAndA(bucket);
847 STKUNIT_EXPECT_TRUE(result);
855 STKUNIT_UNIT_TEST( UnitTestSelector, copyConstructor )
857 SelectorFixture fix ;
865 std::ostringstream descriptionA;
866 descriptionA << selectA;
867 std::ostringstream descriptionAnotherA;
868 descriptionAnotherA << anotherSelectA;
869 STKUNIT_EXPECT_EQUAL( descriptionA.str() == descriptionAnotherA.str(), true );
879 STKUNIT_UNIT_TEST( UnitTestSelector, AlliuAll )
889 std::ostringstream description;
890 description << selectAllANDAll;
891 STKUNIT_EXPECT_EQUAL(
"!() AND !()", description.str() );
895 std::ostringstream description;
896 description << selectAllORAll;
897 STKUNIT_EXPECT_EQUAL(
"!(())", description.str() );
906 SelectorFixture fix ;
914 bool result = selectA(bucket);
915 STKUNIT_EXPECT_TRUE(result);
920 bool result = selectA(bucket);
921 STKUNIT_EXPECT_FALSE(result);
926 bool result = selectABC(bucket);
927 STKUNIT_EXPECT_TRUE(result);
934 STKUNIT_UNIT_TEST( UnitTestSelector, select_part )
936 SelectorFixture fix ;
944 std::cout <<
"select_part selector = " << selector << std::endl;
945 STKUNIT_EXPECT_TRUE(selector(partA));
946 STKUNIT_EXPECT_TRUE(selector(partB));
947 STKUNIT_EXPECT_FALSE(selector(partC));
948 STKUNIT_EXPECT_TRUE(selector(partD));
952 ( !( (partA & partB) | partC)
957 STKUNIT_EXPECT_TRUE(selector(partA));
958 STKUNIT_EXPECT_TRUE(selector(partB));
959 STKUNIT_EXPECT_FALSE(selector(partC));
960 STKUNIT_EXPECT_FALSE(selector(partD));
962 selector = partC & (!partD);
963 STKUNIT_EXPECT_FALSE(selector(partA));
964 STKUNIT_EXPECT_FALSE(selector(partB));
965 STKUNIT_EXPECT_TRUE(selector(partC));
966 STKUNIT_EXPECT_FALSE(selector(partD));
Selector selectIntersection(const PartVector &intersection_part_vector)
Selector & complement()
Complement: this = !(this) Postcondition: this is a compound expression.
This is a class for selecting buckets based on a set of meshparts and set logic.
An application-defined subset of a problem domain.
Selector selectField(const FieldBase &field)
Return a selector for the union of the parts where field exists.
A fundamental unit within the discretization of a problem domain, including but not limited to nodes...
Selector selectUnion(const PartVector &union_part_vector)
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.