pydrake.multibody.contact_solvers

class pydrake.multibody.contact_solvers.IcfSolverParameters

(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: pydrake.multibody.contact_solvers.IcfSolverParameters, **kwargs) None
property alpha_max

Maximum step length for exact linesearch.

property enable_hessian_reuse

Whether hessian reuse between iterations and time steps is enabled.

property hessian_reuse_target_iterations

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

Convergence tolerance for exact linesearch.

property max_iterations

Maximum number of Newton iterations.

property max_linesearch_iterations

Maximum iterations for exact linesearch.

property min_tolerance

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].

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

Whether to print stats to the console at each iteration.

property use_dense_algebra

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.