https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Functions
ClassifyPartialElementTest.C File Reference

Go to the source code of this file.

Functions

 TEST (ClassifySubdomainFromOccupancyTest, FullyInsideOrOutside)
 
 TEST (ClassifySubdomainFromOccupancyTest, MarkIntercepted)
 
 TEST (ClassifySubdomainFromOccupancyTest, LambdaThreshold)
 
 TEST (ClassifySubdomainFromOccupancyTest, EnclosedSurfaceEndpoints)
 
 TEST (ClassifySubdomainFromOccupancyTest, IsInactive)
 
 TEST (SelectSubdomainFromOccupanciesTest, FullyOccupiedTakesPrecedence)
 
 TEST (SelectSubdomainFromOccupanciesTest, PartialSelection)
 
 TEST (SelectSubdomainFromOccupanciesTest, NoOccupiedCandidate)
 

Function Documentation

◆ TEST() [1/8]

TEST ( ClassifySubdomainFromOccupancyTest  ,
EnclosedSurfaceEndpoints   
)

Definition at line 70 of file ClassifyPartialElementTest.C.

71{
72 EXPECT_EQ(classify(true, false, 0.5, 0.5, false), INSIDE); // inactive fraction 0.5 not > 0.5
73 EXPECT_EQ(classify(true, false, 0.5, 0.3, false), OUTSIDE); // inactive fraction 0.5 > 0.3
74 EXPECT_EQ(classify(true, false, 0.5, 0.5, true), INTERCEPTED);
75}

◆ TEST() [2/8]

TEST ( ClassifySubdomainFromOccupancyTest  ,
FullyInsideOrOutside   
)

Definition at line 40 of file ClassifyPartialElementTest.C.

41{
42 EXPECT_EQ(classify(true, false, 1.0, 0.5, true), INSIDE);
43 EXPECT_EQ(classify(true, false, 1.0, 0.0, false), INSIDE); // lambda 0 rejects a partial elem
44 EXPECT_EQ(classify(true, false, 1.0, 1.0, false), INSIDE);
45
46 EXPECT_EQ(classify(false, true, 0.0, 0.5, true), OUTSIDE);
47 EXPECT_EQ(classify(false, true, 0.0, 1.0, false), OUTSIDE); // lambda 1 accepts a partial elem
48 EXPECT_EQ(classify(false, true, 0.0, 0.0, false), OUTSIDE);
49}

◆ TEST() [3/8]

TEST ( ClassifySubdomainFromOccupancyTest  ,
IsInactive   
)

Definition at line 79 of file ClassifyPartialElementTest.C.

80{
81 EXPECT_TRUE(SBMUtils::isInactive(1.0, 0.0));
82 EXPECT_FALSE(SBMUtils::isInactive(0.0, 1.0));
83 EXPECT_TRUE(SBMUtils::isInactive(0.2, 0.5));
84 EXPECT_FALSE(SBMUtils::isInactive(0.8, 0.5));
85}
bool isInactive(Real active_fraction, Real lambda)
Return whether a partial element is inactive, i.e.
Definition SBMUtils.C:81

◆ TEST() [4/8]

TEST ( ClassifySubdomainFromOccupancyTest  ,
LambdaThreshold   
)

Definition at line 61 of file ClassifyPartialElementTest.C.

62{
63 EXPECT_EQ(classify(false, false, 0.2, 0.5, false), OUTSIDE); // inactive fraction 0.8 > 0.5
64 EXPECT_EQ(classify(false, false, 0.8, 0.5, false), INSIDE); // inactive fraction 0.2 < 0.5
65}

◆ TEST() [5/8]

TEST ( ClassifySubdomainFromOccupancyTest  ,
MarkIntercepted   
)

Definition at line 53 of file ClassifyPartialElementTest.C.

54{
55 EXPECT_EQ(classify(false, false, 0.5, 0.0, true), INTERCEPTED);
56 EXPECT_EQ(classify(false, false, 0.5, 1.0, true), INTERCEPTED);
57}

◆ TEST() [6/8]

TEST ( SelectSubdomainFromOccupanciesTest  ,
FullyOccupiedTakesPrecedence   
)

Definition at line 87 of file ClassifyPartialElementTest.C.

88{
89 const std::vector<SBMUtils::SubdomainOccupancy> candidates{
90 {4, {false, false, 0.9}}, {7, {true, false, 1.0}}, {3, {true, false, 1.0}}};
91
92 EXPECT_EQ(SBMUtils::selectSubdomainFromOccupancies(candidates, MARK_INTERCEPTED, 0.5), 3);
93}
std::optional< SubdomainID > selectSubdomainFromOccupancies(const std::vector< SubdomainOccupancy > &candidate_occupancies, const InterceptedSubdomainPolicy &intercepted_policy, Real lambda)
Select a subdomain based on how multiple candidate domains occupy an element.
Definition SBMUtils.C:92

◆ TEST() [7/8]

TEST ( SelectSubdomainFromOccupanciesTest  ,
NoOccupiedCandidate   
)

Definition at line 108 of file ClassifyPartialElementTest.C.

109{
110 const std::vector<SBMUtils::SubdomainOccupancy> candidates{{3, {false, true, 0.0}},
111 {7, {false, true, 0.0}}};
112
113 EXPECT_FALSE(SBMUtils::selectSubdomainFromOccupancies(candidates, DO_NOT_MARK_INTERCEPTED, 0.5));
114 EXPECT_FALSE(SBMUtils::selectSubdomainFromOccupancies({}, MARK_INTERCEPTED, 0.5));
115}

◆ TEST() [8/8]

TEST ( SelectSubdomainFromOccupanciesTest  ,
PartialSelection   
)

Definition at line 95 of file ClassifyPartialElementTest.C.

96{
97 // This perturbation is small enough for absoluteFuzzyEqual, so the lower ID must win the tie.
98 const std::vector<SBMUtils::SubdomainOccupancy> candidates{
99 {7, {false, false, 0.8 + 1e-14}}, {3, {false, false, 0.8}}, {4, {false, false, 0.6}}};
100
101 EXPECT_EQ(SBMUtils::selectSubdomainFromOccupancies(candidates, DO_NOT_MARK_INTERCEPTED, 0.5), 3);
102 EXPECT_EQ(SBMUtils::selectSubdomainFromOccupancies(candidates, MARK_INTERCEPTED, 0.5),
103 INTERCEPTED);
104 EXPECT_FALSE(SBMUtils::selectSubdomainFromOccupancies(candidates, DO_NOT_MARK_INTERCEPTED, 0.0));
105 EXPECT_EQ(SBMUtils::selectSubdomainFromOccupancies(candidates, DO_NOT_MARK_INTERCEPTED, 1.0), 3);
106}