solidcore

Units / surface

surface.volume_p2 partial

Layer
25
Upstream lines
1,490
Functions
18
Rust module
surface::volume::p2

Source: crates/solidcore/src/surface/volume/p2.rs

Upstream: source/SMLib/src/SmVolume.cpp

Notes

difftest partial: 11220 cases (9220 fixtures incl. 5014 bend and 2290 unbend cases + 2000 generated), 10922 pass, 298 deferred (intersect.curve_class_p4 162: bend IsCurveInParamDomainSimple -> SmCurve::IsOnPositiveSideOfPlanes; surface.surface_p8 136: unbend IsCurveInParamDomainSimple -> SmCurve::HasPlaneCrossings), max_rel_err 0; 100k-seed run clean; --perturb SENSITIVE; after surface.bend_volume (PR #22): bend overrides (EvaluateBoundingBoxSimple, GlobalPointSolveSimple, LocalPointSolveSimple, ReadFromDB) dispatched, SmBendVolume::ReadFromDB reads the base data (removes the bend unit's deferred read_db case), shim builds default and component bends (kinds 6, 7); the bend and unbend ReadDb FFI guards reuse this unit's strict text grammar; after surface.unbend_volume (PR #20): its CO-PORTED SmVolume::EvaluatePoint / IsPointInParamDomain replaced by this unit's, unbend overrides and SmUnbendVolume::ReadFromDB wired (shim builds component unbends); wired UNPORTED(surface.volume_p2) in geom.transform, surface.twist_volume, curve.crv_in_volume, geom.tol, intersect.point_class (volume branch; not exercised) (geom.transform and surface.twist_volume promoted to green). 18 fns; largest: SmVolume::EvaluateBoundingBoxSimple, SmVolume::EvaluateBoundingBox, SmVolume::EvaluatePseudoBoxSimple, SmVolume::InvMapPoint; unit-SCC #22 (220 units); 317 upstream test entry points reach this unit Re-run (PR #118, GlobalCurveIntersect wired; HasPlaneCrossings ignores its status): 11220 cases, 11058 pass, 162 deferred (intersect.curve_class_p4), 0 failed.

Difftest

Cases
11,220
Passed
11,058
Deferred
162
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
intersect.curve_class_p4 claimed162

Report JSON (per-case results)

Dependencies

Depends on: geom.extent1d green geom.extent3d green geom.local_solve_nd green geom.pseudo_box green geom.solution_array partial geom.vector3d green surface.volume_p1 green topology.database_io green

Soft dependencies: geom.transform green surface.b_spline_volume green surface.bend_volume green surface.twist_volume green surface.unbend_volume green

Dependents: surface.srf_in_volume partial

Soft dependents: intersect.curve_class_p8 partial intersect.point_class partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmVolume::IsPointInParamDomainSmVolume.cpp:91925[Volume::is_point_in_param_domain]
SmVolume::IsLineInInSpaceDomainSmVolume.cpp:109739[Volume::is_line_in_in_space_domain]
SmVolume::IsBoxInParamDomainSmVolume.cpp:118330[Volume::is_box_in_param_domain]
SmVolume::IsPseudoBoxInInSpaceDomainSmVolume.cpp:138853[Volume::is_pseudo_box_in_in_space_domain]
SmVolume::EvaluateBoundingBoxSmVolume.cpp:1692176[Volume::evaluate_bounding_box]
SmVolume::MapPseudoBoxSmVolume.cpp:2058103[Volume::map_pseudo_box]
SmVolume::EvaluatePointSmVolume.cpp:326313[Volume::evaluate_point]
SmVolume::Evaluate1stDerivativesSmVolume.cpp:328331[Volume::evaluate_1st_derivatives]
SmVolume::InvEvaluatePointSmVolume.cpp:341199[Volume::inv_evaluate_point]
SmVolume::InvMapPointSmVolume.cpp:3907132[Volume::inv_map_point]
SmVolume::GlobalPointSolveSmVolume.cpp:451295[Volume::global_point_solve]
SmVolume::HasDiscontinuitiesSmVolume.cpp:522054[Volume::has_discontinuities]
SmVolume::EvaluateBoundingBoxSimpleSmVolume.cpp:5865180[Volume::evaluate_bounding_box_simple]
SmVolume::EvaluatePseudoBoxSimpleSmVolume.cpp:6057159[Volume::evaluate_pseudo_box_simple]
SmVolume::InvEvaluatePointSimpleSmVolume.cpp:666559[Volume::inv_evaluate_point_simple]
SmVolume::GlobalPointSolveSimpleSmVolume.cpp:678845[Volume::global_point_solve_simple]
SmVolume::LocalPointSolveSimpleSmVolume.cpp:6857108[Volume::local_point_solve_simple]
SmVolume::ReadFromDBSmVolume.cpp:810489[Volume::read_from_db]
Module file-header table (19 rows)
RustUpstream
[Volume::is_point_in_param_domain]IsPointInParamDomain
[Volume::is_line_in_in_space_domain]IsLineInInSpaceDomain
[Volume::is_box_in_param_domain]IsBoxInParamDomain
[Volume::is_pseudo_box_in_in_space_domain]IsPseudoBoxInInSpaceDomain
[Volume::evaluate_bounding_box]EvaluateBoundingBox
[Volume::map_pseudo_box]MapPseudoBox
[Volume::evaluate_point]EvaluatePoint
[Volume::evaluate_1st_derivatives]Evaluate1stDerivatives
[Volume::inv_evaluate_point]InvEvaluatePoint
[Volume::inv_map_point]InvMapPoint
[Volume::global_point_solve]GlobalPointSolve
[Volume::has_discontinuities]HasDiscontinuities
[Volume::evaluate_bounding_box_simple]EvaluateBoundingBoxSimple (virtual)
[Volume::evaluate_pseudo_box_simple]EvaluatePseudoBoxSimple
[Volume::inv_evaluate_point_simple]InvEvaluatePointSimple
[Volume::global_point_solve_simple]GlobalPointSolveSimple (virtual)
[Volume::local_point_solve_simple]LocalPointSolveSimple (virtual)
[Volume::read_from_db]ReadFromDB (static, by type)
[Volume::read_base_from_db]ReadFromDB(SmVolume_TYPE, ..) (base data of an existing volume)

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