[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


> 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

More information about the petsc-users mailing list