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.configclass 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 """How often particle self-contact detection is applied. ``< 0``: once before initialization. ``0``: once before and once after initialization. ``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_contact_k_start: float = 1.0e2 """Initial stiffness seed for rigid-body contacts [N/m].""" rigid_body_particle_contact_buffer_size: int = 256 """Per-body capacity of the particle, edge, and face soft-contact list. Increase this value when Newton reports a per-body particle contact buffer overflow. Only used when :attr:`integrate_with_external_rigid_solver` is ``False``. """