solidcore

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 unitDeferred cases
blend.fillet_standard_solver_p2 todo47

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 functionDefined atLinesRust (from the file header)
SmEiffelTowerFS::~SmEiffelTowerFSSmFilletCustomSolver.h:331
SmEiffelTowerCrossSectionFSG::~SmEiffelTowerCrossSectionFSGSmFilletCustomSolver.h:831
SmSecantConstantRadiusFS::~SmSecantConstantRadiusFSSmFilletCustomSolver.h:1111
SmEiffelTowerFS::LoadInitialValuesSmFilletCustomSolver.cpp:62281[EiffelTowerFs::load_initial_values]
SmEiffelTowerFS::LoadJacobianSmFilletCustomSolver.cpp:380223[EiffelTowerFs::load_jacobian]
SmEiffelTowerCrossSectionFSG::CreateSurfaceSmFilletCustomSolver.cpp:611265[EiffelTowerCrossSectionFsg::create_surface]
SmSecantConstantRadiusFS::LoadInitialValuesSmFilletCustomSolver.cpp:903266[SecantConstantRadiusFs::load_initial_values]
SmSecantConstantRadiusFS::LoadJacobianSmFilletCustomSolver.cpp:1199198[SecantConstantRadiusFs::load_jacobian]
Module file-header table (11 rows)
RustUpstream
[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