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.