pydrake.multibody.contact_solvers
- class pydrake.multibody.contact_solvers.IcfSolverParameters(*args, **kwargs)
(Advanced) Parameters to configure the Irrotational Contact Fields (ICF) convex solver.
For details, see
[Kurtz and Castro, 2025] Kurtz V. and Castro A., 2025. CENIC: Convex Error-controlled Numerical Integration for Contact. https://arxiv.org/abs/2511.08771.
[Hairer and Wanner, 1996] Hairer E. and Wanner G., 1996. Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems. Springer Series in Computational Mathematics, Vol. 14. Springer-Verlag, Berlin, 2nd edition.
- __init__(self, **kwargs) None
- property alpha_max: float
Maximum step length for exact linesearch.
- property enable_hessian_reuse: bool
Whether hessian reuse between iterations and time steps is enabled.
- property hessian_reuse_target_iterations: int
Target maximum number of iterations for Hessian reuse. The solver effectively estimates the number of iterations to convergence. If the estimate is larger than this target, the Hessian will be recomputed to regain faster Newton-style convergence. See [Hairer and Wanner, 1996], Ch. IV.8.
- property linesearch_tolerance: float
Convergence tolerance for exact linesearch.
- property max_iterations: int
Maximum number of Newton iterations.
- property max_linesearch_iterations: int
Maximum iterations for exact linesearch.
- property min_tolerance: float
Minimum tolerance ε for the convergence conditions
‖D⋅∇ℓ‖ ≤ ε max(1, ‖D⋅r‖), η ‖D⁻¹⋅Δv‖ ≤ ε max(1, ‖D⋅r‖),
as detailed in Section VI.B of [Kurtz and Castro, 2025]. When the problem splits into islands, the conditions (including the norms and r) are evaluated for each island separately; see IcfSolver.
This provides a lower bound on the actual tolerance used, which is specified explicitly when calling the solver. For instance, CENIC passes an adaptive tolerance based on the desired accuracy to the ICF solver, see Section VI.B of [Kurtz and Castro, 2025].
- property print_solver_stats: bool
Whether to print stats to the console at each iteration.
- property use_dense_algebra: bool
Dense algebra (LDLT) for solving for the search direction H⁻¹⋅g. This is primarily useful for debugging and testing: sparse algebra is generally much faster.
- property use_islands: bool
Whether to decompose the problem into independent constraint islands (connected components of the clique graph) and solve them separately. When false, all cliques are solved together as a single Newton problem.