Units / surface
surface.surface_p7 partial
- Layer
- 26
- Upstream lines
- 2,406
- Functions
- 23
- Rust module
surface::surface::p7
Source: crates/solidcore/src/surface/surface/p7.rs
Upstream: source/SMLib/src/SmSurface.cpp
Notes
PARTIAL: difftest 3660 cases (660 fixture: EvaluateNormal at poles/folds/pinched corners, IsClosed on a rational cylinder and upstream Surface.sms, sm_LoadGuesses with the my_test_surface_closest_point points, GoodDrop/CheckSeam branches, a separated-surface GlobalSurfaceSolve, zero/NaN/tiny projection vectors; 3000 generated over B-splines (incl. 1e-4/1e4 scales), planes and curve-bounded surfaces), 3039 pass bit-identical, 621 deferred (all surface.surface_p1: surface cache for the global solves/projection, SmCSNormalizeENFO, the FindDegenParamForDirection EFO, IsFlatCorner, EvaluateSTEP, GetFace in the B-spline bbox); --perturb SENSITIVE 3039/3039. CO-PORTED from surface.surface_p1: SmSurface::Evaluate1stDerivatives, Evaluate2ndDerivatives, EvaluateDirectionalDerivs -> surface::surface::p7. Back-edges wired (12 UNPORTED(surface.surface_p7) sites, then intersect.surface_tracer's and intersect.point_class's EvaluateNormal after they merged + a mislabelled UNPORTED(surface.surface_p5) IsClosed in b_spline_surface::p1 + the co-ported wrappers' stubs); re-run all pass: crv_on_surf +185, tangent_field +132, surface_cache_p1 +107, surface_cache_p2 +28, curve_bounded_surface +25, intersect.surface_tracer +22, b_spline_surface_p1 +15, intersect.surface_intersector_p1 +10 newly compared cases, none promoted. (CO-PORTED in intersect.surface_intersector_p1 (PR #33): SmSurface::IsClosed (default tolerance, no continuity; SmPlane override) -> private helper surface_is_closed in intersect::surface_intersector::p1; replace it with the real Surface::is_closed; replaced by Surface::is_closed in PR #24, which also points its Evaluate1stDerivatives/EvaluateDirectionalDerivs/EvaluateNormal at surface::surface::p7.) SurfaceEvaluate gained evaluate_normal (default = SmSurface body). 23 fns; largest: SmSurface::EvaluateNormal, SmSurface::FindDegenParamForDirection, SmSurface::LocalCurveSolve, SmSurface::IsClosed; cycle back-edges (call into later units; stub or co-port): surface.surface_p1(26), intersect.adv_surface_intersector(1), intersect.surface_intersector_p5(1), topology.face_p4(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit intersect.surface_intersector_p5 wired (PR #82): CreateParallelProjectionCurves fully ported (takes the kernel, returns None for NULL UV curves), deferring at its surface cache (SmSurface::CalculateContinuities, surface.surface_p6); now 3660 cases, 3453 pass, 207 deferred (surface.surface_p8 72, surface.surface_p11 59, surface.surface_p4 52, surface.surface_p6 24). [surface.surface_p6 wired (PR #92): 3660 cases, 3456 pass, 204 deferred (surface.surface_p1 15, surface.surface_p11 59, surface.surface_p4 52, surface.surface_p8 78)] Re-run with surface.surface_p5's back-edges wired (PR #50): cases=3660 passed=3505 failed=0 deferred=155 max_rel_err=0e0 blocked_by=intersect.adv_surface_intersector(9),surface.surface_p11(59),surface.surface_p6(15),surface.surface_p8(72). surface.surface_p11 (PR #120, after merging main with surface.surface_p3): cases=3660 passed=3567 failed=0 deferred=93 (surface.surface_p1 15, surface.surface_p8 78); GlobalCurveSolve/GlobalSurfaceSolve take the kernel and solution handles and run the leaf solves; the cases now compare the first 16 solutions (type, value, parameters), and the generator adds normalize and signed directed curve solves and surface/surface solves (lifted patches; intersect for the node pairs); SmCSGlobalSolver/SmSSGlobalSolver::BranchMayContainAnswers read the solve caches' polar boxes; --perturb SENSITIVE 3522/3522. Re-run (PR #118): 3660 cases, 3509 pass, 151 deferred (surface.surface_p5 72 via GlobalPointSolve_0, which has no surface handle: dispatch gap in plan/findings.md; surface.surface_p11 59, surface.surface_p1 15, surface.surface_point_solve_p3 5). Re-run (PR #118 review): GlobalPointSolve_0 takes the kernel and the surface handle and runs SpGlobalSolver (SmSPGlobalSolver::BranchMayContainAnswers reads the cache); the Gps0 cases now compare the solutions: 3660 cases, 3581 pass, 79 deferred (surface.surface_p11 64, surface.surface_p1 15), 0 failed; the 72 surface.surface_p5 deferrals are gone. Re-run (PR #118, round 3): 3660 cases, 3644 pass, 16 deferred (surface.surface_p1 15, intersect.surface_intersector_p2 1), 0 failed; --perturb SENSITIVE 3644/3644.
Difftest
- Cases
- 3,660
- Passed
- 3,659
- Deferred
- 1
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
intersect.surface_intersector_p2 partial | 1 |
Report JSON (per-case results)
Dependencies
Depends on: geom.a_object partial geom.extent1d green geom.extent2d green geom.extent3d 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.tree partial geom.vector2d green geom.vector3d green nurbs.b_spline_surface_p1 green surface.surface_cache_p1 green surface.surface_p2 partial
Soft dependencies: curve.curve_cache green curve.curve_p2 green geom.axis2_placement green geom.geom_utility_p2 green geom.local_solve1d green geom.tol green nurbs.b_spline_curve_p1 green nurbs.b_spline_curve_p2 green surface.surface_cache_p3 partial
Dependents: blend.fillet_custom_solver partial blend.fillet_standard_solver_p1 claimed intersect.curve_class_p4 claimed intersect.surface_drop_lib_p1 partial intersect.surface_drop_lib_p2 green intersect.surface_drop_lib_p3 claimed query.face_p3 claimed surface.offset_surface green surface.plane_p2 partial surface.surface_p11 partial surface.surface_p3 green surface.surface_p4 green surface.surface_p5 green surface.surface_p6 green surface.surface_p8 partial topology.edge partial topology.face_p2 partial topology.vertexuse partial
Soft dependents: blend.fillet_corner_p1 todo blend.fillet_corner_p2 todo blend.fillet_executive_p1 todo blend.fillet_geom_p1 claimed blend.fillet_geom_p5 todo blend.fillet_geom_p6 todo blend.fillet_solver_p1 claimed blend.fillet_solver_p4 claimed blend.fillet_standard_solver_p2 todo boolean.topology_intersector_p1 partial heal.face_props partial heal.heal_data_p3 partial intersect.adv_surface_intersector partial intersect.curve_class_p2 claimed intersect.curve_class_p8 partial intersect.point_class partial intersect.ray_tracer partial intersect.surface_drop_curve partial intersect.surface_intersector_p1 partial intersect.surface_intersector_p2 partial intersect.surface_intersector_p3 partial intersect.surface_intersector_p4 partial intersect.surface_silhouette green intersect.surface_tracer partial intersect.topology_solver_p2 partial offset.offset_executive_p1 claimed offset.offset_geometry_creation claimed primitive.primitive_creation_p1 claimed primitive.primitive_creation_p2 todo primitive.primitive_creation_p3 todo query.brep claimed query.tess partial surface.surface_p10 partial surface.surface_point_solve_p1 green sweep.rotational_sweep_geometry partial sweep.trans_sweep_geometry partial topology.brep_p1 claimed topology.brep_p3 claimed topology.brep_p4 claimed topology.brep_p8 claimed topology.edgeuse_p1 partial topology.edgeuse_p2 partial topology.edgeuse_p3 claimed topology.face_p1 partial topology.face_p3 claimed topology.face_p4 claimed topology.loopuse partial topology.trimming_tools partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
sm_LoadGuesses | SmSurface.cpp:4117 | 169 | [load_guesses] |
sm_PassSCConvergenceTest | SmSurface.cpp:4750 | 56 | [pass_sc_convergence_test] |
SmSurface::ApproxDerivativeLengths | SmSurface.cpp:5731 | 30 | [approx_derivative_lengths] |
SmSurface::FindDegenParamForDirection | SmSurface.cpp:6757 | 292 | [Surface::find_degen_param_for_direction], [DegenParam] |
sm_CheckSeamDrop | SmSurface.cpp:7837 | 85 | [check_seam_drop] |
SmSurface::ComputeHigherOrderDerivs | SmSurface.cpp:8855 | 67 | [compute_higher_order_derivs], [HigherOrderDerivs] |
SmSurface::ComputeInwardVector | SmSurface.cpp:8930 | 24 | [compute_inward_vector] |
SmSurface::CreateParallelProjectionCurves | SmSurface.cpp:9465 | 120 | [Surface::create_parallel_projection_curves] |
sm_GoodDropResult | SmSurface.cpp:10256 | 104 | [good_drop_result] |
SmSurface::DropPointsToTangentPlane | SmSurface.cpp:10636 | 45 | [drop_points_to_tangent_plane] |
SmSurface::DropVectors | SmSurface.cpp:10689 | 39 | [drop_vectors_at] |
SmSurface::EvaluateNormal | SmSurface.cpp:11016 | 449 | [Surface::evaluate_normal], [base_evaluate_normal] |
SmSurface::GetBrep | SmSurface.cpp:12017 | 4 | [Surface::brep] |
SmSurface::GetFlatCorners | SmSurface.cpp:12655 | 46 | [Surface::flat_corners], [FlatCorners] |
SmSurface::GlobalCurveSolve | SmSurface.cpp:17781 | 99 | [Surface::global_curve_solve] |
SmSPGlobalSolver::BranchMayContainAnswers | SmSurface.cpp:19568 | 91 | [SpGlobalSolver] |
SmSurface::GlobalPointSolve_0 | SmSurface.cpp:20264 | 74 | [Surface::global_point_solve_0] |
sm_PassSSConvergenceTest | SmSurface.cpp:20854 | 49 | [pass_ss_convergence_test] |
SmSSGlobalSolver::BranchMayContainAnswers | SmSurface.cpp:20964 | 48 | [SpGlobalSolver] |
SmSurface::GlobalSurfaceSolve | SmSurface.cpp:21676 | 62 | [Surface::global_surface_solve] |
SmSurface::IsClosed | SmSurface.cpp:22157 | 200 | [Surface::is_closed], [base_is_closed] |
SmSurface::IsPlanar | SmSurface.cpp:22363 | 13 | [b_spline_is_planar] |
SmSurface::LocalCurveSolve | SmSurface.cpp:25538 | 240 | [Surface::local_curve_solve], [CurveSurfaceSolution] |
Module file-header table (25 rows)
| Rust | Upstream |
|---|---|
[Surface::evaluate_normal], [base_evaluate_normal] | EvaluateNormal (virtual: the SmPlane and SmCurveBoundedSurface overrides; the SmSurface body) |
SurfaceEvaluate::evaluate_normal (trait method in p2) | EvaluateNormal for code generic over the surface type (default: the SmSurface body; [Surface] dispatches) |
[Surface::is_closed], [base_is_closed] | IsClosed (virtual: the SmPlane override; the SmSurface body) |
[Surface::is_planar] | IsPlanar (virtual: the SmPlane override; the SmSurface body) |
[b_spline_is_planar] | SmSurface::IsPlanar of an SmBSplineSurface (over its CalculateBoundingBox override) |
[Surface::brep] | GetBrep |
[Surface::flat_corners], [FlatCorners] | GetFlatCorners |
[approx_derivative_lengths] | ApproxDerivativeLengths |
[compute_higher_order_derivs], [HigherOrderDerivs] | ComputeHigherOrderDerivs |
[compute_inward_vector] | ComputeInwardVector |
[drop_points_to_tangent_plane] | DropPointsToTangentPlane |
[drop_vectors_at] | DropVectors |
[Surface::find_degen_param_for_direction], [DegenParam] | FindDegenParamForDirection |
[Surface::global_point_solve_0] | GlobalPointSolve_0 |
[Surface::global_curve_solve] | GlobalCurveSolve |
[Surface::global_surface_solve] | GlobalSurfaceSolve |
[Surface::local_curve_solve], [CurveSurfaceSolution] | LocalCurveSolve |
[Surface::create_parallel_projection_curves] | CreateParallelProjectionCurves |
[SpGlobalSolver] | SmSPGlobalSolver (BranchMayContainAnswers) |
[SsGlobalSolver] | SmSSGlobalSolver (BranchMayContainAnswers) |
[load_guesses] | sm_LoadGuesses (static) |
[pass_sc_convergence_test] | sm_PassSCConvergenceTest (static) |
[pass_ss_convergence_test] | sm_PassSSConvergenceTest (static) |
[check_seam_drop] | sm_CheckSeamDrop (static) |
[good_drop_result] | sm_GoodDropResult (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