Skip to content

Commit

Permalink
Merge pull request #12419 from KratosMultiphysics/core/fix-bb-check
Browse files Browse the repository at this point in the history
[Core] Fix BB check
  • Loading branch information
loumalouomega authored Jun 4, 2024
2 parents 571b2b5 + 4d3eef2 commit 0ee7c1a
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
39 changes: 39 additions & 0 deletions kratos/tests/cpp_tests/utilities/test_search_utilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,4 +170,43 @@ KRATOS_TEST_CASE_IN_SUITE(SynchronousPointSynchronizationWithRadius, KratosCoreF
}
}

KRATOS_TEST_CASE_IN_SUITE(PointIsInsideBoundingBox, KratosCoreFastSuite)
{
Point min_point = Point(0.0, 0.0, 0.0);
Point max_point = Point(1.0, 1.0, 1.0);
const BoundingBox<Point> box(min_point, max_point);
const Point point_inside(0.5, 0.5, 0.5);
const Point point_outside(1.5, 1.5, 1.5);

KRATOS_EXPECT_TRUE(SearchUtilities::PointIsInsideBoundingBox(box, point_inside));
KRATOS_EXPECT_FALSE(SearchUtilities::PointIsInsideBoundingBox(box, point_outside));
}

KRATOS_TEST_CASE_IN_SUITE(PointIsInsideBoundingBoxArray, KratosCoreFastSuite)
{
Point min_point = Point(0.0, 0.0, 0.0);
Point max_point = Point(1.0, 1.0, 1.0);
const std::array<double, 6> box = {max_point[0], min_point[0], max_point[1], min_point[1], max_point[2], min_point[2]};
const Point point_inside(0.5, 0.5, 0.5);
const Point point_outside(1.5, 1.5, 1.5);

KRATOS_EXPECT_TRUE(SearchUtilities::PointIsInsideBoundingBox(box, point_inside));
KRATOS_EXPECT_FALSE(SearchUtilities::PointIsInsideBoundingBox(box, point_outside));
}

KRATOS_TEST_CASE_IN_SUITE(PointIsInsideBoundingBoxWithTolerance, KratosCoreFastSuite)
{
Point min_point = Point(0.0, 0.0, 0.0);
Point max_point = Point(1.0, 1.0, 1.0);
const BoundingBox<Point> box(min_point, max_point);
const Point point_inside(0.5, 0.5, 0.5);
const Point point_outside_limit(1.0, 1.0, 1.0);
const Point point_outside(1.5, 1.5, 1.5);
const double tolerance = 0.6;

KRATOS_EXPECT_TRUE(SearchUtilities::PointIsInsideBoundingBox(box, point_inside, tolerance));
KRATOS_EXPECT_TRUE(SearchUtilities::PointIsInsideBoundingBox(box, point_outside_limit, tolerance));
KRATOS_EXPECT_TRUE(SearchUtilities::PointIsInsideBoundingBox(box, point_outside, tolerance));
}

} // namespace Kratos::Testing
2 changes: 1 addition & 1 deletion kratos/utilities/search_utilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ class SearchUtilities

// Apply Tolerances (only in non zero BB cases)
const double epsilon = std::numeric_limits<double>::epsilon();
if (norm_2(max_point) > epsilon && norm_2(min_point) > epsilon) {
if (norm_2(max_point - min_point) > epsilon) {
for (unsigned int i=0; i<3; ++i) {
max_point[i] += Tolerance;
min_point[i] -= Tolerance;
Expand Down

0 comments on commit 0ee7c1a

Please sign in to comment.