TransWikia.com

How to solve a linear problem A x = b in PETSC when matrix A has zero diagonal enteries?

Computational Science Asked by ARUN KUMAR on December 8, 2020

I am solving a structural mechanics problem that involves setting constraints, and I use Lagrange multipliers to set it. Consequently, some diagonal entries of the tangent stiffness matrix vanish, and I couldn’t solve the system using the KSP solver.

I will appreciate any help.

One Answer

Use of Lagrange multipliers produces a saddle-point problem, $$ begin{pmatrix} A & B^T B & 0 end{pmatrix} begin{pmatrix} u lambda end{pmatrix} = begin{pmatrix} b 0 end{pmatrix} $$

As you've noticed, many preconditioners break down for this sort of system. One can use direct solvers that support pivoting, but if you want iterative solvers, a common flexible strategy is to use PCFIELDSPLIT; see the factorization (Schur) methods in the Users Manual section on Solving Block Matrices.

Note that the fact that you cannot use conjugate gradients because this problem is not positive definite. You can use MINRES with some preconditioners, but it's sometimes more effective to use nonsymmetric (usually block triangular) preconditioners.

Correct answer by Jed Brown on December 8, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP