The linear conjugate gradient method is widely used in physical simulation, particularly for solving large-scale linear systems derived from Newton's method. The nonlinear conjugate gradient method generalizes the conjugate gradient method to nonlinear optimization, which is extensively utilized in solving practical large-scale unconstrained optimization problems. However, it is rarely discussed in physical simulation due to the requirement of multiple vector-vector dot products. Fortunately, with the advancement of GPU-parallel acceleration techniques, it is no longer a bottleneck. In this paper, we propose a Jacobi preconditioned nonlinear conjugate gradient method for elastic deformation using interior-point methods. Our method is straightforward, GPU-parallelizable, and exhibits fast convergence and robustness against large time steps. The employment of the barrier function in interior-point methods necessitates continuous collision detection per iteration to obtain a penetration-free step size, which is computationally expensive and challenging to parallelize on GPUs. To address this issue, we introduce a line search strategy that deduces an appropriate step size in a single pass, eliminating the need for additional collision detection. Furthermore, we simplify and accelerate the computations of Jacobi preconditioning and Hessian-vector product for hyperelasticity and barrier function. Our method can accurately simulate objects comprising over 100,000 tetrahedra in complex self-collision scenarios at real-time speeds.
翻译:线性共轭梯度法广泛应用于物理仿真,尤其用于求解牛顿法产生的大规模线性系统。非线性共轭梯度法将共轭梯度法推广至非线性优化,广泛用于求解实际大规模无约束优化问题。然而,由于需要多次向量-向量点积运算,该方法在物理仿真中鲜有讨论。幸运的是,随着GPU并行加速技术的进步,这已不再是瓶颈。本文提出了一种基于雅可比预处理的内点法非线性共轭梯度法用于弹性变形。该方法简单直接、可进行GPU并行实现,具有快速收敛性且对大时间步长具有鲁棒性。内点法中障碍函数的使用需要每迭代步执行连续碰撞检测以获得无穿透步长,该过程计算成本高且难以在GPU上并行化。为解决此问题,我们引入了一种单次推导合适步长的线性搜索策略,无需额外碰撞检测。此外,我们简化并加速了超弹性和障碍函数的雅可比预处理及海森-向量乘积的计算。本方法可在实时速度下准确模拟包含超过10万个四面体的复杂自碰撞场景中的物体。