Units / surface
surface.surface_p11 partial
- Layer
- 31
- Upstream lines
- 1,789
- Functions
- 5
- Rust module
surface::surface::p11
Source: crates/solidcore/src/surface/surface/p11.rs
Upstream: source/SMLib/src/SmSurface.cpp
Notes
PARTIAL: difftest 600 generated cases (LocalSurfaceIntersect over Bezier patches and planes: crossing, standing, nearly parallel, tiny and huge scales, sub-domains, guesses on boundaries, plane normals (also zero), previous points, boundary testing; IntersectSurfaceBoundaries of coincident and crossing patches and planes), 498 pass bit-identical, 0 failed, 102 deferred (surface.surface_p8 102: sm_IntersectSrfBndryCrv); --perturb SENSITIVE 498/498; SmCSGlobalSolver/SmSSGlobalSolver::LocalSolve are compared through surface.surface_p7's GlobalCurveSolve/GlobalSurfaceSolve cases (first 16 solutions; minimize, maximize, normalize, signed directed minimize, intersect for nodes) and the intersectors; LiftCurve defers at sm_ExtractIsoCurve (surface.surface_p8) and past it has a dispatch gap for non-B-spline surfaces (CrvOnSurf holds a B-spline, findings.md; marked UNPORTED(curve.crv_on_surf)). Coverage acknowledged, not closed: the shim builds only Bezier patches and planes (the leaf solves are not compared on revolution, curve-bounded, Step or SrfInVolume surfaces); SM_SO_3D_SIGNED_DIRECTED_MAXIMIZE is not generated because sm_SCLocalSolve asserts on it (the Rust side returns InvalidInput, the release C++ continues); LiftCurve has no shim or runner after its first line; some passes compare no values; MAX_SUBDIVISION_NODES (2^20) stays (a surface.surface_p1 case at 1e-4 scale needs more than 2^18). Wired UNPORTED(surface.surface_p11): SmSurface::LocalSurfaceIntersect (intersect.surface_intersector_p1, used by adv_surface_intersector/p3/p4/p5), SmCSGlobalSolver/SmSSGlobalSolver::LocalSolve (surface.surface_p7: global_curve_solve/global_surface_solve now take the kernel and handles; intersect.topology_solver_p2 updated), GlobalSurfaceSolve SM_SR_NODES (intersect.surface_intersector_p4 FindInteriorCurves, via global_surface_solve_with). Wired UNPORTED(surface.surface_p3) after merging main: SmSurface::LocalSurfaceSolve. Bounded surface cache subdivision (surface.surface_cache_p3 MAX_SUBDIVISION_NODES, the 3.5 GB abort). Upstream issues UB-121, WR-99; plane boundary curve type mismatch with surface.surface_p9 recorded in findings.md. 5 fns; largest: SmSurface::LocalSurfaceIntersect, SmSSGlobalSolver::LocalSolve, SmSurface::LiftCurve, SmCSGlobalSolver::LocalSolve; cycle back-edges (call into later units; stub or co-port): surface.surface_p8(2); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit Re-run (PR #118, sm_IntersectSrfBndryCrv and sm_ExtractIsoCurve wired to surface.surface_p8): 600 cases, 559 pass, 41 deferred (curve.iso_curve 41), 0 failed; --perturb SENSITIVE 559/559; the surface.surface_p8 deferrals are gone.
Difftest
- Cases
- 600
- Passed
- 559
- Deferred
- 41
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
curve.iso_curve green | 41 |
Report JSON (per-case results)
Dependencies
Depends on: curve.crv_on_surf partial curve.curve_cache green curve.curve_p2 green geom.extent1d green geom.extent2d green geom.global_solver partial geom.local_solve_nd green geom.object partial geom.polar_box green geom.pseudo_box green geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green surface.surface_cache_p1 green surface.surface_p1 partial surface.surface_p2 partial surface.surface_p3 green surface.surface_p5 green surface.surface_p6 green surface.surface_p7 partial surface.surface_p9 partial
Soft dependencies: curve.composite_curve_p1 green curve.composite_curve_p2 green curve.curve_p4 partial curve.curve_p8 green curve.iso_curve green geom.extent3d green geom.geom_utility_p1 green geom.tree partial surface.plane_p1 partial
Dependents: none
Soft dependents: blend.fillet_geom_p1 claimed blend.fillet_geom_p2 todo blend.fillet_geom_p4 todo blend.fillet_geom_p5 todo blend.fillet_geom_p6 todo intersect.adv_surface_intersector partial intersect.surface_intersector_p1 partial intersect.surface_intersector_p4 partial offset.offset_geometry_creation claimed topology.brep_p2 claimed topology.brep_p3 claimed topology.brep_p7 claimed
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmCSGlobalSolver::LocalSolve | SmSurface.cpp:17405 | 246 | [CsGlobalSolver::local_solve_branch] (and its GlobalSolve impl) |
SmSSGlobalSolver::LocalSolve | SmSurface.cpp:21019 | 484 | [SsGlobalSolver::local_solve_branch] |
SmSurface::IntersectSurfaceBoundaries | SmSurface.cpp:21745 | 174 | [Surface::intersect_surface_boundaries], [BoundaryIntersections] |
SmSurface::LiftCurve | SmSurface.cpp:24054 | 279 | [Surface::lift_curve], [LiftedCurve] |
SmSurface::LocalSurfaceIntersect | SmSurface.cpp:27439 | 606 | [Surface::local_surface_intersect], [SurfaceIntersection], [LocalSurfaceIntersectOptions] |
Module file-header table (5 rows)
| Rust | Upstream |
|---|---|
[Surface::local_surface_intersect], [SurfaceIntersection], [LocalSurfaceIntersectOptions] | SmSurface::LocalSurfaceIntersect (declared virtual; no class overrides it) |
[CsGlobalSolver::local_solve_branch] (and its GlobalSolve impl) | SmCSGlobalSolver::LocalSolve |
[SsGlobalSolver::local_solve_branch] | SmSSGlobalSolver::LocalSolve |
[Surface::intersect_surface_boundaries], [BoundaryIntersections] | SmSurface::IntersectSurfaceBoundaries (not virtual) |
[Surface::lift_curve], [LiftedCurve] | SmSurface::LiftCurve (not virtual) |
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