Skip to content

Update containment regression baselines after bugfix for points on/near surface - #39

Merged
kennyweiss merged 3 commits into
mainfrom
feature/kweiss/update-inout-baselines
Jul 10, 2026
Merged

Update containment regression baselines after bugfix for points on/near surface#39
kennyweiss merged 3 commits into
mainfrom
feature/kweiss/update-inout-baselines

Conversation

@kennyweiss

Copy link
Copy Markdown
Member

Companion PR to llnl/axom#1909
which addresses this issue: llnl/axom#611

This PR updates our regression baselines for the inout and signed distance queries after a bugfix for how we treat query points that are on the surface (or within the vertex welding threshold of the surface).

The containment results still match the signs of the signed distances results (which did not change).

Differences were of the form:

>quest_regression_test -m ../boxedSphere.stl  --distance --containment -b boxedSphere_40_baseline.root 

[INFO] Running containment queries 
[INFO] Initializing InOutOctree over mesh '../boxedSphere.stl'... 
[INFO] Initialization took 1.642821474 seconds. 
[INFO] Mesh bounding box is: { min:(-0.5,-0.5,-0.5); max:(0.5,0.5,0.5); range:<1,1,1> } 
[INFO] Query bounding box is: { min:(-1,-1,-1); max:(1,1,1); range:<2,2,2> } 
[INFO] Querying InOutOctree on uniform grid  of resolution (40,40,40) using 112 threads 
[INFO] Filling coordinates array took 0.001 seconds 
[INFO] Querying (40,40,40)^3 containment field (InOutOctree) took 0.017 seconds (@ 3,971,600 queries per second) 
[INFO] -- 
[INFO] Running distance queries 
[INFO] Initializing linear BVH over mesh '../boxedSphere.stl'... 
[INFO] Initialization took 0.094 seconds. 
[INFO] Mesh bounding box is: { min:(-0.5,-0.5,-0.5); max:(0.5,0.5,0.5); range:<1,1,1> } 
[INFO] Query bounding box is: { min:(-1,-1,-1); max:(1,1,1); range:<2,2,2> } 
[INFO] Querying BVH on uniform grid of resolution (40,40,40) using 112 threads 
[INFO] Filling coordinates array took 0.001 seconds 
[INFO] Querying (40,40,40)^3 signed distance field (BVH) took 0.545 seconds (@ 126,557 queries per second) 
[INFO] -- 
[INFO] Comparing results from containment and distance queries 
[INFO] ** Methods agree 
[INFO] -- 
[INFO] Comparing results to baselines 
[INFO] ** Containment test failed.  There were 818 differences. Showing first 10 -- 
  Disagreement on sample 17272 @ (-0.45,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 0 
  Disagreement on sample 17273 @ (-0.4,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 0 
  Disagreement on sample 17274 @ (-0.35,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 0 
  Disagreement on sample 17275 @ (-0.3,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 0 
  Disagreement on sample 17276 @ (-0.25,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 2.3420180361420893e-15 
  Disagreement on sample 17277 @ (-0.2,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 6.866350197783356e-16 
  Disagreement on sample 17278 @ (-0.15,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 6.473657049138938e-16 
  Disagreement on sample 17279 @ (-0.1,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 6.753223014464259e-16 
  Disagreement on sample 17280 @ (-0.05,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 9.930136612989092e-16 
  Disagreement on sample 17281 @ (0,-0.45,-0.5).  Expected outside, got inside -- distance from query point to surface is 5.661048867003676e-16  
[INFO] ** Baseline tests failed 
[INFO] -- 

i.e. the distances are negligible and the disagreements are due to fixing our convention for points on or extremely close to the surface.

I also changed the query bounding box for the tetrahedron tests from {(-5,-5,-5), {5,5,5)} to {(-1.5,-1.5,-1.5), {1.5,1.5,1.5)} since the tetrahedron lies in the cube {(-1,-1,-1), {1,1,1)}, so most query points from the original were far outside the mesh bounding box.

…taset

After modifying InOutOctree to return "inside" for points on the surface (or within the welding threshold distance to the surface).
…edron dataset

After modifying InOutOctree to return "inside" for points on the surface (or within the welding threshold distance to the surface).
Also tightens the bounding box for this test since it was too loose, and updates the tetrahedron_31 dataset to the same query box.
…sphere dataset

After modifying InOutOctree to return "inside" for points on the surface (or within the welding threshold distance to the surface).
@kennyweiss
kennyweiss merged commit 75b49d8 into main Jul 10, 2026
@kennyweiss
kennyweiss deleted the feature/kweiss/update-inout-baselines branch July 10, 2026 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants