Heterogeneous Subspace Corrections for GPU Deformable Multibody Dynamics
| Dewen Guo | Zhendong Wang | Minchen Li | Sheng Li | Guoping Wang | Huamin Wang | Chenfanfu Jiang | Yin Yang |
ACM Trans. Graph. (2026)
Simulating heterogeneous multibody systems with both deformable and stiff components remains a challenge for GPU solvers. While Newton-Krylov methods are popular for their matrix-free nature and good GPU compatibility, they often suffer from severe ill-conditioning and slow convergence when handling stiff contacts and material disparities in deformable multibody systems. In this paper, we present Heterogeneous Subspace Corrections (HSC), a novel Newton-CG variant to efficiently simulate such complex systems. HSC decouples the system into two Krylov iterations: a Newton-CG procedure for deformable bodies and a Neumann-based iteration for the affine subsystem. We introduce a GPU-based Adaptive Cross Approximation (ACA) algorithm to exploit the low-rank nature of the coupling matrices, which manages to reduce the overhead of sparse matrix-vector multiplications substantially on the GPU. For the affine subsystem, we propose a dedicated data structure for fast assembling contact Hessians in parallel. A variety of experimental results demonstrate that our framework consistently outperforms existing GPU simulators, achieving convergence rates comparable to direct solvers even in scenes with high-resolution models and extensive stiff contacts.
Dewen Guo, Zhendong Wang, Minchen Li, Sheng Li, Guoping Wang, Huamin Wang, Chenfanfu Jiang, Yin Yang (2026). Heterogeneous Subspace Corrections for GPU Deformable Multibody Dynamics. ACM Trans. Graph., 45(4).
@article{guo2026heterogeneous,
author = {Dewen Guo and Zhendong Wang and Minchen Li and Sheng Li and Guoping Wang and Huamin Wang and Chenfanfu Jiang and Yin Yang},
title = {Heterogeneous Subspace Corrections for GPU Deformable Multibody Dynamics},
year = {2026},
issue_date = {July 2026},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {45},
number = {4},
url = {https://doi.org/10.1145/3811275},
doi = {10.1145/3811275},
journal = {ACM Trans. Graph.},
month = july
}