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.