chore: project scaffolding for decomposition solver package #23
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Set up the package structure and dependencies for the graph decomposition meta-solver within the
solver/Python package.Context
The decomposition solver is a Python
IKCSolverplugin that decomposes assembly constraint problems into subproblems via graph analysis, dispatches them to backend solvers (Ondsel), and reconciles results. This issue establishes the skeleton that subsequent issues build on.References:
docs/SOLVER_THEORY.mdinkindred/create— plugin architecture specsrc/Mod/Assembly/Solver/inkindred/create— KCSolve C++ API (IKCSolver, Types.h, SolverRegistry)src/Mod/Assembly/Solver/bindings/— pybind11kcsolvemoduleTasks
solver/decomposition/package with__init__.pysolver.py— IKCSolver subclass (entry point)constraint_graph.py— SolveContext → graph translationstructural_analyzer.py— DOF counting and diagnosticsdecomposer.py— biconnected decomposition + solve plandispatcher.py— subproblem routing to backend solversreconciler.py— sub-solution merging and validationpatterns/__init__.py— closed-form pattern solverspyproject.tomlwith new dependencies:igraph— biconnected components, articulation points (C core, fast)scipy— sparse Jacobian rank checksnumpy— numerical operationskcsolvemodule requires a FreeCAD build)tests/decomposition/test directory withconftest.pyproviding shared SolveContext fixturesFile layout target
Acceptance criteria
import solver.decompositionsucceedspytest tests/decomposition/runs (even if tests are trivially passing stubs)pip install -e .[dev]or pixi