Units / blend
blend.fillet_custom_solver partial
- Layer
- 41
- Upstream lines
- 1,236
- Functions
- 8
- Rust module
blend::fillet_custom_solver
Source: crates/solidcore/src/blend/fillet_custom_solver.rs
Upstream: source/SMLib/inc/SmFilletCustomSolver.h, source/SMLib/src/SmFilletCustomSolver.cpp
Notes
PARTIAL: difftest 448 cases (48 fixture, 400 generated), 401 pass, 0 failed, 47 deferred (blend.fillet_standard_solver_p2 47: GuessPointOnPlaneSolve; LocalPointSolve_1 on the other rail's offset runs since surface.surface_point_solve_p3 landed), max_rel_err 0; earlier: --perturb SENSITIVE (360/360); 4000-seed run 4048 cases, 3242 pass, 0 failed, 806 deferred. CreateSurface (SmEiffelTowerCrossSectionFSG) is compared on 'Eiffel tower' sections over straight (ruled branch), concentric arc (surface of revolution branch) and free-form rails (skin with extrusion cross-boundary derivative surfaces), equal radii, vanishing/zero second arc, touching rails (point sections), mismatched point counts and knot vectors, different intervals on parallel 2-point line rails (the only different-interval inputs the FFI guard admits), tolerances 0 to above the rail gap, scales 1e-6 to 1e6; the shim's solver is an SmConstantRadiusFS (CreateSurface reads only its context and tolerance). LoadJacobian / LoadInitialValues of SmEiffelTowerFS and SmSecantConstantRadiusFS run in C++ on solvers built on an SmApiCreateBox edge use with their offset surfaces, orientations and radii replaced and edge uses cleared; the offset surfaces are the ported SmOffsetSurface (surface.offset_surface, wired in PR #62) built with the case's lSingularities: SM_SS_UNKNOWN (upstream's default) now runs SmSurface::GetSingularities; LoadInitialValues with rbDoSurf2Calcs runs GlobalPointSolve, and LocalPointSolve on the other rail's offset (a copy: the solver is borrowed shared), which reaches LocalPointSolve_1 (surface.surface_point_solve_p3, landed). Other stubs: UNPORTED(blend.fillet_standard_solver_p2) GuessPointOnPlaneSolve, UNPORTED(blend.fillet_standard_solver_p1) the SmConstantRadiusFS edge-use constructor. Co-ports (see CO-PORTED notes of blend.fillet_solver_p1, blend.fillet_standard_solver_p1); the offset surface co-port is replaced by surface.offset_surface (PR #62). Plan notes: 8 fns; largest: SmEiffelTowerFS::LoadInitialValues, SmSecantConstantRadiusFS::LoadInitialValues, SmEiffelTowerCrossSectionFSG::CreateSurface, SmEiffelTowerFS::LoadJacobian; cycle back-edges (call into later units; stub or co-port): blend.fillet_solver_p1(8), blend.fillet_standard_solver_p2(2); unit-SCC #22 (220 units); only 3 of 1236 lines survive RTA (reached via virtual dispatch to classes no in-scope entry point constructs); low priority / likely deferrable; 317 upstream test entry points reach this unit
Difftest
- Cases
- 448
- Passed
- 401
- Deferred
- 47
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
blend.fillet_standard_solver_p2 todo | 47 |
Report JSON (per-case results)
Dependencies
Depends on: geom.axis2_placement green geom.extent1d green geom.extent2d green geom.object partial geom.solution_array partial geom.vector2d green geom.vector3d green intersect.surface_intersector_p1 partial nurbs.b_spline_curve_p1 green surface.surface_p7 partial topology.edgeuse_p1 partial
Soft dependencies: curve.curve_p1 partial curve.curve_p2 green curve.curve_p4 partial curve.curve_p5 partial curve.curve_p6 green geom.geom_utility_p2 green geom.matrix green geom.tol green nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p2 green nurbs.b_spline_curve_p3 partial nurbs.b_spline_surface_n_lib_p1 green nurbs.b_spline_surface_n_lib_p2 partial nurbs.b_spline_surface_p1 green nurbs.b_spline_surface_p2 partial surface.offset_surface green surface.surf_of_extrusion_p1 green surface.surface_p1 partial surface.surface_p2 partial surface.surface_p4 green surface.surface_p5 green topology.edge partial topology.face_p2 partial
Dependents: none
Soft dependents: blend.fillet_solver_p1 claimed blend.fillet_standard_solver_p1 claimed
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmEiffelTowerFS::~SmEiffelTowerFS | SmFilletCustomSolver.h:33 | 1 | |
SmEiffelTowerCrossSectionFSG::~SmEiffelTowerCrossSectionFSG | SmFilletCustomSolver.h:83 | 1 | |
SmSecantConstantRadiusFS::~SmSecantConstantRadiusFS | SmFilletCustomSolver.h:111 | 1 | |
SmEiffelTowerFS::LoadInitialValues | SmFilletCustomSolver.cpp:62 | 281 | [EiffelTowerFs::load_initial_values] |
SmEiffelTowerFS::LoadJacobian | SmFilletCustomSolver.cpp:380 | 223 | [EiffelTowerFs::load_jacobian] |
SmEiffelTowerCrossSectionFSG::CreateSurface | SmFilletCustomSolver.cpp:611 | 265 | [EiffelTowerCrossSectionFsg::create_surface] |
SmSecantConstantRadiusFS::LoadInitialValues | SmFilletCustomSolver.cpp:903 | 266 | [SecantConstantRadiusFs::load_initial_values] |
SmSecantConstantRadiusFS::LoadJacobian | SmFilletCustomSolver.cpp:1199 | 198 | [SecantConstantRadiusFs::load_jacobian] |
Module file-header table (11 rows)
| Rust | Upstream |
|---|---|
[EiffelTowerFs], [EiffelTowerFs::new] | SmEiffelTowerFS (members, constructor; Drop is the destructor) |
[EiffelTowerFs::load_initial_values] | SmEiffelTowerFS::LoadInitialValues |
[EiffelTowerFs::load_jacobian] | SmEiffelTowerFS::LoadJacobian |
[EiffelTowerCrossSectionFsg] | SmEiffelTowerCrossSectionFSG (constructor; Drop is the destructor) |
[EiffelTowerCrossSectionFsg::create_surface] | SmEiffelTowerCrossSectionFSG::CreateSurface |
[SecantConstantRadiusFs], [SecantConstantRadiusFs::new] | SmSecantConstantRadiusFS (members, constructor; Drop is the destructor) |
[SecantConstantRadiusFs::load_initial_values] | SmSecantConstantRadiusFS::LoadInitialValues |
[SecantConstantRadiusFs::load_jacobian] | SmSecantConstantRadiusFS::LoadJacobian |
[ConstantRadiusAssistedFs] (CO-PORTED) | the data of SmFilletSolver, SmConstantRadiusFS and SmConstantRadiusAssistedFS these solvers read |
[OffsetSurface], [SurfaceId] | an SmOffsetSurface* rail surface (unit surface.offset_surface) and the identity of its base pointer |
[JacobianLoad], [InitialValues] | the in/out arguments of LoadJacobian, LoadInitialValues |
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