[petsc-users] Schur complement with a preconditioner

Matthew Knepley knepley at gmail.com
Thu Jul 25 13:07:48 CDT 2013


On Thu, Jul 25, 2013 at 12:29 PM, Umut Tabak <u.tabak at tudelft.nl> wrote:

>  Dear all,
>
> I have  a system that I would like to solve for multiple rhs, represented
> in block notation as
>
> [ A     C ] x1    b1
>                    =
> [ C^T B ] x2    b2
>
> I could solve the system
>
> (B - C^TA^{-1}C)x2 = bupdated
>
> with Minres algorithm in MATLAB by using the Incomplete Factorization of B
> in decent iteration counts, like 43. The problem is that B is not SPD and
> it has one negative eigenvalue. That is the reason to use MINRES.
>
> Just as a try, I saved the matrix represented by (B - C^TA^{-1}C) in
> sparse format and used the hypre euclid preconditioner in PETSc  which
> resulted in 25 iterations to convergence. But since for large problems,
> this approach is not viable, I was wondering if that is possible to use the
> complete cholesky factorization of B+alpha*diag(B) where  alpha is given
> as
>
> alpha = max(sum(abs(A),2)./diag(A))-2
>
> as a preconditioner for the above schur complement. Or in general use an external preconditioner
> for the matrix operator.
>
>
You can use PCFIELDSPLIT as the outer PC
  and then -pc_fieldsplit_type schur,
    and then -pc_fieldsplit_schur_preconditioner a11
      which will use B to form the preconditioner for S
    or -pc_fieldsplit_schur_precondition user
      for which you could provide B+alpha*diag(B)

  Thanks,

     Matt

>
> Any pointers are appreciated.
> Best,
> Umut
>
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130725/9399c8d7/attachment-0001.html>


More information about the petsc-users mailing list