solidcore

Units / surface

surface.surface_cache_p2 partial

Layer
24
Upstream lines
1,245
Functions
7
Rust module
surface::surface_cache::p2

Source: crates/solidcore/src/surface/surface_cache/p2.rs

Upstream: source/SMLib/src/SmSurfaceCache.cpp

Notes

Review validation: 905 cases, 808 bit-identical, 0 failed, 97 deferred (intersect.curve_class_p4 1, surface.surface_cache_p1 53, surface.surface_p5 43); --perturb detected 751/751; max_rel_err=0. surface_p9 FindTessellationSplits wired with the caller Kernel; remaining deferrals are recorded in the current report. Historical notes: PARTIAL: difftest 905 cases (105 fixture + 800 generated), 749 pass bit-identical, 156 deferred (after surface.surface_p7 wired SmSurface::EvaluateNormal, PR #24: 28 more compared; counts below are from before that: surface.plane_p1 53: SmPlane::CreateIsoParametricCurve in bounding planes and size tolerances; surface.surface_p1 47: SmSurface::GetFace in the B-spline bounding box of SM_AD_AUX_DATA nodes; surface.surface_p5 43: SmSurface::IsSingularity 35 in the Bezier approximation of B-splines, SmSurface::CreateIsoParametricCurve 8 of curve-bounded surfaces; surface.surface_p7 28: SmSurface::EvaluateNormal in bounding planes; surface.surface_p9 13: SmSurface::FindTessellationSplits in every SubdivideByBlock with a surface); --perturb SENSITIVE 721/721; wired the SmPlane override of IsSingularity into the surface cache Bezier approximation (p1 helper); no co-ports; 7 fns; largest: SmSurfaceCache::TestAgainstTolerances, SmSurfaceCache::SubdivideByBlock, sm_CreateApproximateBezierPatchBlock, sm_CreateBezierPatchBlock; cycle back-edges (call into later units; stub or co-port): surface.surface_p1(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit Re-run with surface.surface_p5's back-edges wired (PR #50): cases=905 passed=796 failed=0 deferred=109 max_rel_err=0e0 blocked_by=surface.surface_cache_p1(53),surface.surface_p3(43),surface.surface_p9(13). Re-run (PR #52, after merging surface_p4/#49 and surface_p5/#50): 905 cases, 843 pass, 62 deferred (surface.surface_cache_p1 53, curve.iso_curve 8, intersect.curve_class_p4 1). Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 905 cases, 851 pass, 54 deferred (intersect.curve_class_p4 1, surface.surface_cache_p1 53), 0 failed, max_rel_err 0.

Difftest

Cases
905
Passed
851
Deferred
54
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
surface.surface_cache_p1 green53
intersect.curve_class_p4 claimed1

Report JSON (per-case results)

Dependencies

Depends on: geom.extent2d green geom.object partial geom.vector3d green nurbs.b_spline_surface_p1 green nurbs.nurbs_srf green surface.surface_cache_p1 green surface.surface_p2 partial

Soft dependencies: curve.curve_p5 partial curve.iso_curve green geom.extent1d green geom.extent3d green geom.pseudo_box green geom.tol green geom.tree partial geom.vector2d green nlib.knots green nlib.srf_basic green nlib.srf_nurb green nurbs.b_spline_curve_p1 green nurbs.b_spline_surface_p2 partial surface.surface_p9 partial

Dependents: query.tess partial surface.surface_cache_p3 partial

Soft dependents: intersect.surface_intersector_p2 partial intersect.topology_solver_p1 partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmPatchBoundaryBoundingPlanes::GetNthBoundingPlaneSmSurfaceCache.cpp:62843[PatchBoundaryBoundingPlanes::nth_bounding_plane], [NthBoundingPlane], [BoundingPlane]
SmSurfaceCache::AddCurvesToCacheSmSurfaceCache.cpp:146935[SurfaceCache::add_curves_to_cache]
SmSurfaceCache::TestAgainstTolerancesSmSurfaceCache.cpp:3461528[SurfaceCache::test_against_tolerances], [ToleranceTest]
SmSurfaceCache::SubdivideByBlockSmSurfaceCache.cpp:4027433[SurfaceCache::subdivide_by_block]
sm_CreateBezierPatchBlockSmSurfaceCache.cpp:478569[create_bezier_patch_block], [BezierPatchBlock]
sm_CreateApproximateBezierPatchBlockSmSurfaceCache.cpp:4860107[create_approximate_bezier_patch_block], [ApproximateBezierPatchBlock]
SmSurfaceCache::~SmSurfaceCacheSmSurfaceCache.cpp:589830Drop (implicit)
Module file-header table (7 rows)
RustUpstream
[PatchBoundaryBoundingPlanes::nth_bounding_plane], [NthBoundingPlane], [BoundingPlane]SmPatchBoundaryBoundingPlanes::GetNthBoundingPlane
[SurfaceCache::add_curves_to_cache]SmSurfaceCache::AddCurvesToCache
[SurfaceCache::test_against_tolerances], [ToleranceTest]SmSurfaceCache::TestAgainstTolerances
[SurfaceCache::subdivide_by_block]SmSurfaceCache::SubdivideByBlock
[create_bezier_patch_block], [BezierPatchBlock]sm_CreateBezierPatchBlock (static)
[create_approximate_bezier_patch_block], [ApproximateBezierPatchBlock]sm_CreateApproximateBezierPatchBlock (static)
Drop (implicit)SmSurfaceCache::~SmSurfaceCache

Upstream tests reaching this unit

prog_test:my_test_surface_closest_point, prog_test:my_test_drop_point, prog_test:my_test_matrix, prog_test:my_test_reversed_line_join, SM_API_test:TestSmCreateRectangle, SM_API_test:TestSmCreateRegularPolygon