sim.contact_solve.SapContactSolve#

class sim.contact_solve.SapContactSolve(model: SapModel, *, max_rigid_contact: int = 128, contact_beta: float = 1.0, contact_sigma: float = 0.001, contact_tau_d: float = 0.1, block_size: int | None = None, diag_shift: float = 0.0, contact_assembly_tile_size: int = 256, solve_precision: str = 'fp64', linear_solve_precision: str = 'fp64')[source]#

Bases: object

SAP SAP stage2 contact solve in SAP-order generalized velocities.

This class consumes SapContactJacobianResult buffers. Runtime collision detection stays outside this module and is adapted to SapContacts before entering the solver components.

__init__(model: SapModel, *, max_rigid_contact: int = 128, contact_beta: float = 1.0, contact_sigma: float = 0.001, contact_tau_d: float = 0.1, block_size: int | None = None, diag_shift: float = 0.0, contact_assembly_tile_size: int = 256, solve_precision: str = 'fp64', linear_solve_precision: str = 'fp64')[source]#

Methods

__init__(model, *[, max_rigid_contact, ...])

evaluate_itemwise(contact_result, state, ...)

Evaluate itemwise SAP objective, gradient, and line-search quantities for diagnostics or solver internals.

prepare(contact_result, state, control, dt, ...)

Prepare contact-solve buffers for the current active contact set before iterative solve evaluation.

solve(contact_result, state, control, dt, ...)

Solve the SAP velocity objective for the active contacts and write the next generalized velocity in SAP order.