[petsc-users] external solvers

Jed Brown jed at 59A2.org
Thu Feb 25 07:47:20 CST 2010

```On Thu, 25 Feb 2010 14:19:17 +0100, Umut Tabak <u.tabak at tudelft.nl> wrote:
> I am not sure I understood this, my main problem was due to the badly
> conditioned matrices where the convergence was really too slow for the
> iterative methods, cg especially.

I misunderstood since you were trying direct solvers like MUMPS (which
many people run under -ksp_type preonly).

> ( A +alpha * I )x = b

[snip]

> This is what I mean, you transform the system to another one, but how to
> recover back to the original problem?

Normally this shift is only applied as needed within the preconditioner.
So you have L*L' ~= A+D where D is diagonal (but not usually a multiple
of the identity).  Since the iterative method still uses A, you should
still converge to the correct answer, but it may be slow if D ended up
being large.  One interesting idea that Barry suggested a while back is
to do a first-order Taylor expansion of inv(A) in terms of inv(A+D),
something like

A^{-1} = (A+D-D)^{-1} (A+D) (A+D)^{-1}
= [(A+D)^{-1} (A+D-D)]^{-1} (A+D)^{-1}
= [I - (A+D)^{-1} D]^{-1} (A+D)^{-1}
~= [I + (A+D)^{-1} D] (A+D)^{-1}

I haven't tried this, but I'd like to hear if it helps.

> Matrices are pretty badly conditioned. Moreover one is singular but to
> form an operator matrix. I am subtracting another scaled matrix from the
> singular one. As of,
>
> Operator = Sing_Mat - alpha * Another_Mat ; (alpha is large btw, on the
> order of e5)

Is this producing negative eigenvalues?  CG and (incomplete) Cholesky
assume that the system is positive definite, if your system is
indefinite, then you will have to investigate other options.

Jed
```