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