Source code for isaaclab_newton.physics.vbd_manager_cfg

# Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause

"""Configuration for the Newton VBD solver."""

from __future__ import annotations

from typing import TYPE_CHECKING

from isaaclab.utils import configclass

from .newton_manager_cfg import NewtonSolverCfg

if TYPE_CHECKING:
    from isaaclab_newton.physics import NewtonManager


[docs] @configclass class VBDSolverCfg(NewtonSolverCfg): """Configuration for the Vertex Block Descent solver.""" class_type: type[NewtonManager] | str = "{DIR}.vbd_manager:NewtonVBDManager" """Manager class for the VBD solver.""" iterations: int = 10 """Number of VBD iterations per substep.""" integrate_with_external_rigid_solver: bool = False """Whether an external solver integrates rigid bodies.""" particle_enable_self_contact: bool = False """Whether to enable particle self-contact.""" particle_self_contact_radius: float = 0.005 """Particle radius used for self-contact detection [m].""" particle_self_contact_margin: float = 0.005 """Self-contact detection margin [m].""" particle_collision_detection_interval: int = -1 """Self-contact detection: <0 before init, 0 before and after init, k>=1 before every k VBD iterations.""" particle_vertex_contact_buffer_size: int = 32 """Preallocation size for each vertex contact buffer.""" particle_edge_contact_buffer_size: int = 64 """Preallocation size for each edge contact buffer.""" particle_topological_contact_filter_threshold: int = 2 """Topological distance below which self-contacts are discarded.""" particle_rest_shape_contact_exclusion_radius: float = 0.0 """Rest-shape separation threshold for filtering contacts [m].""" rigid_compliant_alm: bool | None = None """Whether to use compliant ALM for rigid joints and contacts; ``None`` preserves Newton's default.""" rigid_contact_k_start: float = 1.0e2 """Initial stiffness seed for rigid-body contacts [N/m].""" rigid_body_contact_buffer_size: int = 64 """Per-body body-body contact capacity when VBD integrates rigid bodies.""" rigid_body_particle_contact_buffer_size: int = 256 """Per-body particle, edge, and face soft-contact capacity when VBD integrates rigid bodies."""