# Parallel Direct Solution of Flexible Multibody Systems Based on Block Gaussian Elimination
## 3 Parallel Direct Solution Scheme Based on Block Gaussian Elimination
### Algorithm-Level Parallel Direct Solution of System Linear Equations Based on BGE  
The block sparsity and symmetry of system Jacobian matrix \(\mathbf{J}\) resemble that of submatrix \(\mathbf{J}_{i}\), which exhibits a strong principal diagonal property as shown in Figures 2 and 3a. Hypothesizing that high-speed rotating parts are not directly incorporated into the system, the Jacobian matrix can still remain positive. This is because damping typically does not dominate the behavior of structural components [29]. Consequently, for the linearized system Equation (45), block Gaussian elimination (BGE) can be employed directly to enable algorithm-level parallel computation. For convenience, we note \(\mathbf{c}_{\xi_{1}}\triangleq\frac{\partial\mathbf{c}}{\partial\xi_{1}^{T}}\), \(\mathbf{c}_{\xi_{1}}^{T}\triangleq\frac{\partial\mathbf{c}^{T}}{\partial\xi_{1}^{T}}\) and write Equation (45) in a partitioned form as [37] does; thus, we obtain  
\[ \begin{bmatrix}\mathbf{I}_{1}&&&&\mathbf{c}_{\xi_{1}}^{T}\\ &\mathbf{J}_{2}&&&\mathbf{c}_{\xi_{2}}^{T}\\ &&\ddots&&\vdots\\ &&&\mathbf{J}_{m}&\mathbf{c}_{\xi_{m}}^{T}\\ \mathbf{c}_{\xi_{1}}&\mathbf{c}_{\xi_{2}}&\cdots&\mathbf{c}_{\xi_{m}}\end{bmatrix}\begin{bmatrix} \Delta\xi_{1}\\ \Delta\xi_{2}\\ \vdots\\ \Delta\xi_{m}\\ \Delta\lambda\end{bmatrix} =- \begin{bmatrix}\mathbf{\tau}_{1}\\ \mathbf{\tau}_{2}\\ \vdots\\ \mathbf{\tau}_{m}\\ \mathbf{c}\end{bmatrix} . \tag{51}\]  
Then, the algorithm-level parallel scheme for the direct solution of the flexible multibody system based on BGE is as follows:  
Step 1: Each block row corresponding to the submatrix \(\mathbf{J}_{i}\) is left-multiplied by the Gaussian eliminator \(\mathbf{J}_{i}^{-1}\)_in parallel_ to obtain  
\[\begin{bmatrix}\mathbf{E}_{n_{1}}&&&&\mathbf{I}_{1}^{-1}\mathbf{c}_{\xi_{1}}^{T}\\ &\mathbf{E}_{n_{2}}&&&\mathbf{I}_{2}^{-1}\mathbf{c}_{\xi_{2}}^{T}\\ &&\ddots&&\vdots\\ &&\mathbf{E}_{n_{m}}&\mathbf{J}_{m}^{-1}\mathbf{c}_{\xi_{m}}^{T}\\ \mathbf{c}_{\xi_{1}}&\mathbf{c}_{Step 4: Substitute \(\Delta\lambda\) back into Equation (53) to obtain the increments \(\Delta\xi_{i},i=1,\cdots,m\)_in parallel_ for all bodies. With the known \(J_{i}^{-1}\tau_{i}\) and \(J_{i}^{-1}\epsilon_{\xi_{i}}^{\Upsilon}\) in Step 2, general coordinate increments of bodies are  
\[\Delta\xi_{i}=-J_{i}^{-1}\tau_{i}-J_{i}^{-1}\epsilon_{\xi_{i}}^{\Upsilon} \Delta\lambda,\ i=1,\cdots,m; \tag{55}\]  
Step 5: Update the general coordinates by the residual increments _in parallel_ for all bodies and constraints. Since the time step \(n\) and the iteration superscript \(j\) are omitted in Formulas (51)-(55), we restore it to update the Newton iteration as  
\[\left\{ \begin{array}{l}\xi_{i}^{(n,j+1)}=\xi_{i}^{(n,j)}+\Delta\xi_{i}^{(n,j )}\\ \lambda^{(n,j+1)}=\lambda^{(n,j)}+\Delta\lambda^{(n,j)}\end{array} \right.. \tag{56}\]  
In our proposed scheme, steps 1, 2, 4, and 5 are algorithmic-level block parallel, whereas step 3 is serial within the \(k\) constraint DOFs. In reality, step 3 still allows for acceleration via parallelism in a single column of row [38], but the efficiency of this parallelism [39] is not as high as that of block parallelism. Figure 4 illustrates the flowchart of the presented computational scheme integrating block parallel. Figure 4: Flowchart of the proposed BGE-based algorithm-level parallel scheme for direct solution of the flexible multibody systems. Since the original matrix is sparse and there is no interaction between rows and columns required, the assembly of the system matrix \(\mathbf{J}\) is actually unnecessary. This approach saves time on topology calculation and data copying of sparse matrices, which is advantageous for parallel implementations of both OpenMP and MPI. The proposed block-parallel scheme remains stable for a system lacking damping and gyroscopic matrix \(\mathbf{C}\), and the stability analysis process is akin to that of the linearized submatrix Equation (48) for \(\mathbf{J}_{i}\) in Section 3.2.