[petsc-users] complex-valued problem, singular preconditioner

Barry Smith bsmith at mcs.anl.gov
Thu Apr 4 13:12:50 CDT 2013

```On Apr 4, 2013, at 11:43 AM, Nico Schlömer <nico.schloemer at gmail.com> wrote:

> Hi,
>
> I've got this complex-valued problem
>
> - \Delta u + i omega u = f
>
> (where omega typically >>1). According to
> <https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=877730&tag=1>,
> this problem can be solved well with, e.g., BiCGStab and and AMG
> approach (after it's been broken up into real and imaginary part).
>
> Using PETSc, this approach indeed works well. Except, that is, for
> somewhat rough discretizations. The output I'm getting would be
> something like
>
> 0 KSP preconditioned resid norm 4.941153318127e+75 true resid norm
> 5.201089914056e+02 ||r(i)||/||b|| 1.000000000000e+00
>  1 KSP preconditioned resid norm 6.449747027242e+59 true resid norm
> 2.018314797006e+03 ||r(i)||/||b|| 3.880561248425e+00

By default it is using the preconditioned residual for convergence which as gone from 4.941153318127e+75 to 6.449747027242e+59 (of course in this situation the preconditioner is garbage so these numbers are meaningless).   You can run with -ksp_pc_side right to get it to use right preconditioning and hence the unpreconditioned residual norm for the convergence test. But as Matt notes the preconditioner is failing for this problem

Barry

>
> after which PETSc happily aborts with CONVERGED_RTOL. First of all,
> ||r(i)||/||b|| doesn't seem to be what the stopping criterion looks at
> (I always thought it would be). Second, obviously there's something
> fishy going on with the hypre_amg preconditioner, but I can't quite
> point my finger at it.
>
> Anyone else?
>
> --Nico

```