Tarik Moussa
|
65fc8ac816
|
refactor(api): consistent naming for spherical + hyper-ideal helpers (A1–A3)
C++ Tests / test-fast (pull_request) Successful in 2m20s
C++ Tests / quality-gates (pull_request) Has been skipped
C++ Tests / test-cgal (pull_request) Has been skipped
Standardize the low-level free-function API on <verb>_<geom>_<rest>,
matching the already-consistent setup_<geom>_maps. Old names kept as
[[deprecated]] inline aliases for one release; all internal call sites
migrated.
Renames:
assign_vertex_dof_indices -> assign_spherical_vertex_dof_indices
assign_all_spherical_dof_indices -> assign_spherical_all_dof_indices
assign_all_dof_indices -> assign_hyper_ideal_all_dof_indices
compute_lambda0_from_mesh -> compute_spherical_lambda0_from_mesh
gradient_check -> gradient_check_hyper_ideal
A4/A5 (public CGAL API) intentionally deferred pending the license/
provenance decision (see CGAL submission audit G0/G1).
Verified: 277/277 CGAL tests pass, no deprecation warnings.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-05-31 10:37:06 +02:00 |
|
Tarik Moussa
|
3f124eb071
|
feat(phase4): HyperIdeal Newton solver, SparseQR fallback, examples, docs
Phase 4 complete — 87 CGAL tests pass, 2 skipped.
Newton solver (phase4a):
- hyper_ideal_hessian.hpp: symmetric FD Hessian (O(ε²), PSD by convexity)
- newton_hyper_ideal(): Newton + backtracking for the HyperIdeal functional
- detail::solve_with_fallback(): optional bool* fallback_used parameter
- solve_linear_system(): public API exposing LDLT→SparseQR fallback
SparseQR fallback tests (SparseQRFallback.*):
- FullRankSystem_CorrectSolution: LDLT path, fallback_used=false
- SingularMatrix_FallbackActivated: zero-pivot → QR activated, fallback_used=true
- Euclidean_ClosedMeshNoPinConverges: gauge-mode null space handled via QR
HyperIdeal Newton tests (NewtonSolver.HyperIdeal_*):
- ConvergesTriangleAllVariable, ResultFieldsConsistent,
ConvergesTetrahedron, SparseQRFallbackNoCrash
- Natural-target base point (b=1.0, a=0.5) — x=0 is degenerate in log-space
Pipeline tests (test_pipeline.cpp):
- End-to-end: all three geometries, mesh I/O round-trip, solve+export
Example programs (code/examples/):
- example_euclidean.cpp: headless Euclidean pipeline
- example_hyper_ideal.cpp: headless HyperIdeal pipeline
- example_viewer.cpp: interactive libigl viewer with jet colour map
README:
- Mathematical scope table: C++ vs Java original (18 rows)
- "For mathematicians" section: mental model, step-by-step new-functional
guide, half-edge traversal snippets, recommended reading
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-13 00:11:25 +02:00 |
|