Schur Complement-based Substructuring of Stiff Multibody Systems with Contact

Résumé

Substructuring permits parallelization of physics simulation on multi-core CPUs. We present a new substructuring approach for solving stiff multibody systems containing both bilateral and unilateral constraints. Our approach is based on non-overlapping domain decomposition with the Schur complement method, which we extend to systems involving contact formulated as a mixed bounds linear complementarity problem. At each time step, we alternate between solving the subsystem and interface constraint impulses, which leads to the identification of the active constraints. By using the active constraints to compute the effective mass of subsystems within the interface solve, we obtain an exact solution. We demonstrate that our simulations have preferable behavior compared to standard iterative solvers and substructuring techniques based on the exchange of forces at interface bodies. We observe considerable speedups for structured simulations where a user-defined partitioning can be applied, and moderate speedups for unstructured simulations, such as piles of bodies. In the latter case, we propose an automatic partitioning strategy based on the degree of bodies in the constraint graph. Because our method makes use of direct solvers, we are able to achieve interactive and real-time frame rates for a number of challenging scenarios involving large mass ratios, redundant constraints, and ill-conditioned systems.
*Both authors contributed equally to this work.

Publication
ACM Transactions on Graphics
Date

BibTeX

    @article{substructuring2019,
        author = {Peiret, Albert and Andrews, Sheldon and K\“{o}vecses, J\‘{o}zsef and Kry, Paul G. and Teichmann, Marek},
        title = {Schur Complement-based Substructuring of Stiff Multibody Systems with Contact},
        journal = {ACM Trans. Graph.},
        volume = {38},
        number = {5},
        year = {2019},
        pages = {150:1–150:17},
        articleno = {150},
        numpages = {17},
        doi = {10.1145/3355621},
        publisher = {ACM}
    }