Couplers#

A coupler transfers forces and state between the physics solvers so that different material types interact in a shared scene, for example a rigid gripper grasping a soft object. The simulator holds exactly one coupler, selected by the coupler options you pass to the scene.

Available couplers#

Coupler

What it is

Best for

LegacyCoupler

The default coupler that handles all cross-solver pairs (rigid, MPM, SPH, PBD, FEM), slated for deprecation

General multi-physics scenes

SAPCoupler

A Semi-Analytic Primal (SAP) contact solver, as used in Drake

Accurate rigid-deformable contact with implicit FEM

IPCCoupler

Incremental Potential Contact, a barrier-based, intersection-free contact model

Cloth and large-deformation soft bodies

See Couplers for guidance on choosing between them.

Configuration#

The coupler is chosen by the type of coupler_options passed to the scene. Omitting it selects the legacy coupler.

import genesis as gs

gs.init()
scene = gs.Scene(
    coupler_options=gs.options.SAPCouplerOptions(),
)

Once the coupler is set, coupling between entities happens automatically as the scene steps; there is no per-step coupling call.

Coupler types#

See also#