solidcore

Units / surface

surface.surface_p8 partial

Layer
31
Upstream lines
2,374
Functions
10
Rust module
surface::surface::p8

Source: crates/solidcore/src/surface/surface/p8.rs

Upstream: source/SMLib/src/SmSurface.cpp

Notes

PARTIAL: difftest 2000 generated cases (find_knots_by_max_continuity, coincidence_check, global_line_intersect, global_curve_intersect, local_line_intersect, invert_point_near_singularity, create_blend_surface, SpGlobalSolver::local_solve_branch), 1995 pass bit-identical, 5 deferred (intersect.surface_drop_curve 5: SmSurfaceDropCurve::DoTrace), 0 failed; --perturb SENSITIVE 1995/1995. All UNPORTED(surface.surface_p8) stubs wired (ray_tracer, topology_solver_p1/p2, surface_intersector_p3, surface_point_solve_p2, curve_p4, unbend_volume, and surface_p7 GlobalPointSolve_0, which now takes the kernel and the surface handle) and the p5 ones (DropPoint, LocalPointSolve, sm_SpLocalSolve). Review of PR #118: plane fallback line interval, InvertPointNearSingularity tolerance and DropPoint result, sm_ExtractIsoCurve tolerance, ignored statuses (GlobalCurveIntersect combine, LocalSolve add, CreateBlendSurface, coincidence evaluations with only_upper_half), non-zero tangents in sm_IntersectSrfBndryCrv; revolutions with the apex on the axis are generated; the SpLocal guard admits SM_BIG_DOUBLE. extract_iso_curve and intersect_srf_bndry_crv are statics: Rust-tested only. CreateBlendSurface shim probes upstream UB (UB-157) and rejects SmLine rails (findings). Generated surfaces start at scale 1e-3 (HANG-15). Left: SmSurface::DropCurve (intersect.surface_drop_lib_p3) and SmSurfaceDropCurve::DoTrace (intersect.surface_drop_curve). Re-run (PR #118, round 3, after merging main): 2054 cases (54 new fixtures: fixtures/surface.surface_p8/plane_line_fallback.json, the plane line-intersect fallback), 2049 pass, 5 deferred (intersect.surface_drop_curve 5), --perturb SENSITIVE 2049/2049. sm_IntersectSrfBndryCrv and sm_ExtractIsoCurve are wired into surface::surface::p11 (UNPORTED(surface.surface_p8) stubs of PR #120). UB-119 renumbered UB-157 (main took UB-119; every lower free number is on main or claimed by an open PR, reserved with prepush.sh ids --reserve, 2026-10-16); HANG-15 unchanged. GlobalPointSolve(.., maximize) without a handle returns the solutions with null objects (Deviations of surface::surface::p4). Round 3 follow-up: global_curve_intersect_in / global_line_intersect_in (and Plane::global_line_intersect_in) solve on the caller's surface cache, as upstream's shared cache does; intersect.surface_intersector_p5 0 failed (1009 pass, 716 deferred), intersect.surface_intersector_p3 1181 pass. SurfaceCache::map_handles added (surface.surface_cache_p1, Rust adapter).

Difftest

Cases
2,054
Passed
2,049
Deferred
5
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
intersect.surface_drop_curve partial5

Report JSON (per-case results)

Dependencies

Depends on: curve.curve_p2 green curve.iso_curve green geom.a_object partial geom.extent1d green geom.extent2d green geom.extent3d green geom.global_solver partial geom.object partial geom.polar_box green geom.pseudo_box green geom.solution_array partial geom.tol green geom.tree partial geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green nurbs.b_spline_curve_p2 green surface.surface_cache_p1 green surface.surface_p1 partial surface.surface_p2 partial surface.surface_p3 green surface.surface_p4 green surface.surface_p5 green surface.surface_p6 green surface.surface_p7 partial

Soft dependencies: curve.curve_cache green curve.curve_p4 partial curve.curve_p6 green curve.curve_p8 green curve.line green geom.geom_utility_p1 green nurbs.b_spline_curve_n_lib green surface.surface_cache_p3 partial surface.surface_p10 partial

Dependents: none

Soft dependents: blend.fillet_geom_p1 claimed blend.fillet_solver_p1 claimed blend.fillet_solver_p2 todo boolean.topology_intersector_p1 partial boolean.topology_intersector_p2 claimed intersect.curve_class_p2 claimed intersect.curve_class_p8 partial intersect.ray_tracer partial intersect.surface_intersector_p3 partial intersect.topology_solver_p1 partial intersect.topology_solver_p2 partial offset.offset_geometry_creation claimed surface.surface_point_solve_p2 green topology.brep_p1 claimed topology.brep_p8 claimed topology.face_p3 claimed topology.face_p4 claimed

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmSurface::FindKnotsByMaxContinuitySmSurface.cpp:705853[Surface::find_knots_by_max_continuity]
SmSurface::CoincidenceCheckSmSurface.cpp:7266507[Surface::coincidence_check], [Surface::base_coincidence_check]
SmSurface::CreateBlendSurfaceSmSurface.cpp:15375141[Surface::create_blend_surface]
SmSurface::GlobalCurveIntersectSmSurface.cpp:16958307[Surface::global_curve_intersect], [Surface::global_curve_intersect_in]
SmSurface::GlobalLineIntersectSmSurface.cpp:18946552[Surface::global_line_intersect], [Surface::global_line_intersect_in], [Surface::base_global_line_intersect], [Surface::base_global_line_intersect_in]
SmSPGlobalSolver::LocalSolveSmSurface.cpp:19665195[SpGlobalSolver::local_solve_branch]
SmSurface::InvertPointNearSingularitySmSurface.cpp:21926210[Surface::invert_point_near_singularity]
sm_ExtractIsoCurveSmSurface.cpp:23824179[extract_iso_curve]
SmSurface::LocalLineIntersectSmSurface.cpp:25005142[Surface::local_line_intersect]
sm_IntersectSrfBndryCrvSmSurface.cpp:2683788[intersect_srf_bndry_crv]
Module file-header table (10 rows)
RustUpstream
[Surface::find_knots_by_max_continuity]SmSurface::FindKnotsByMaxContinuity
[Surface::coincidence_check], [Surface::base_coincidence_check]SmSurface::CoincidenceCheck (virtual; SmPlane overrides it)
[Surface::create_blend_surface]SmSurface::CreateBlendSurface
[Surface::global_curve_intersect], [Surface::global_curve_intersect_in]SmSurface::GlobalCurveIntersect
[Surface::global_line_intersect], [Surface::global_line_intersect_in], [Surface::base_global_line_intersect], [Surface::base_global_line_intersect_in]SmSurface::GlobalLineIntersect (virtual; SmPlane overrides it)
[SpGlobalSolver::local_solve_branch]SmSPGlobalSolver::LocalSolve
[Surface::invert_point_near_singularity]SmSurface::InvertPointNearSingularity
[Surface::local_line_intersect]SmSurface::LocalLineIntersect
[extract_iso_curve]sm_ExtractIsoCurve (static)
[intersect_srf_bndry_crv]sm_IntersectSrfBndryCrv (static)

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