Assume we have a 3D finite element structural problem discretized with hexahedral elements with 8 nodes and 3 degrees of freedom per node. Instead of solving the global stiffness matrix system for all degree of freedom would it be possible to split the global system matrix into three smaller matrices for each degree of freedom and solve these smaller matrices independently from each other in parallel? If this works how would such a splitting look like? An example based on a simple 3D element would be very helpful.


1 Answer 1


In general, no.

For displacements, you have the following system of coupled differential equations:

$$(\lambda + 2\mu)\nabla\nabla\mathbf{u} - \mu\nabla\times\nabla\times\mathbf{u} + \mathbf{f} = \rho\frac{\partial^2 \mathbf{u}}{\partial t^2}\, . $$

This implies that the degrees of freedom for displacements in different directions are coupled.

In the Finite Element Method, the most common formulation for solid mechanics is displacement-based and it will inherit this coupling. Thus, your stiffness matrices will have elements that are different from zero for different components of the displacement vector.

  • $\begingroup$ This sounds quite clear for me. So there is no chance to solve the DOFs one after another even if it cannot be done parallel but serial? $\endgroup$
    – vydesaster
    Jun 7, 2019 at 22:08
  • $\begingroup$ @vydesaster, that sounds feasible … something like a Jacobi iteration for different DOFs. I am not 100% sure, though. $\endgroup$
    – nicoguaro
    Jun 7, 2019 at 22:13
  • 2
    $\begingroup$ You cannot split the matrix exactly due to the reasons mentioned in the answer. But if you want, you can try to make an approximate splitting and use it as a preconditioner. However, due to the same physical reasons, I'd expect this will be a bad preconditioner. $\endgroup$
    – VorKir
    Jun 8, 2019 at 1:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.