How can I use BICGStab on a matrix with zero entries on the diagonal

Matthew Knepley knepley at gmail.com
Mon Aug 20 06:25:35 CDT 2007


On 8/18/07, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>
> On Thu, 16 Aug 2007, Matthew Knepley wrote:
>
> > On 8/16/07, Barry Smith <bsmith at mcs.anl.gov> wrote:
> > >
> > >
> > >
> > > On Sun, 12 Aug 2007, Zhu Liang wrote:
> > >
> > > > Yes, you are right, I am trying to solve Oseen equation.
> > > >
> > > > I tried using preconditioner PCILU(1) which works well.
> > > > But for PCILU(0) it did not work, as well as PCBJACOBI.
> > > > I have tried to insert zero on the diagonal, but it still does not work.
> > > >
> > > > In your opinion, what is the best parallel solver and preconditioner
> > > > for the Oseen equation ?
> > >
> > >    Black box? I wish I did!
> > >
> > >    Matt, when are we going to add a "general purpose" Stokes solver to PETSc?
> > > Does that question even make sense?
> >
> > It makes sense if we know more about the discretization and weak form. There
> > are a few good ways to solve Stokes: block smoothers on an element-by-element
> > basis, block triangular preconditioning by field, efficient projection onto the
> > null space of B.
> > These all require that we can slice up the unknowns correctly.
>
>    Please be specific here; do you mean more than just saying which values
> are in the lower block and which are not?

For the big block methods (Wathen, Silvester, Elman) we just need to separate
entire fields. For block smoother (which avoid the small saddle), we need to
do the same thing at the element level.

  Matt

> > Once people buy into my discretization framework, which will happen shortly
> > after I finish coding it, we can start to get this going. I have a
> > Stokes example
> > now, without any of these nifty solvers :) They will get done this fall.
> >
> >   Matt
> >
> > >    Barry
> > >
> > > >
> > > > Thanks for your reply.
> > > > Liang
> > > >
> > > > On 8/12/07, Barry Smith <bsmith at mcs.anl.gov> wrote:
> > > > >
> > > > >
> > > > >   It is not really the BiCGstab Krylov solver that it complaining;
> > > > > it is the default ILU or block Jacobi with ILU on the blocks that is
> > > > > complaining.
> > > > >
> > > > >   You first need to make sure you insert 0 entries on the all the diagonal
> > > > > entries that are 0. BUT given the structure of your matrix you may want
> > > > > to think about solvers that specifically handle that type of matrix.
> > > > >
> > > > >    Barry
> > > > >
> > > > > Stokes type solvers?
> > > > >
> > > > >
> > > > > On Mon, 13 Aug 2007, Zhu Liang wrote:
> > > > >
> > > > > > By the way, the block of my matrix is like :
> > > > > >
> > > > > > U ,     a
> > > > > > A^T ,   0
> > > > > >
> > > > > >
> > > > > >
> > > > > > ---------- Forwarded message ----------
> > > > > > From: Zhu Liang <liangcanada at gmail.com>
> > > > > > Date: Aug 13, 2007 5:46 AM
> > > > > > Subject: How can I use BICGStab on a matrix with zero entries on the
> > > > > > diagonal
> > > > > > To: petsc-users at mcs.anl.gov
> > > > > >
> > > > > >
> > > > > > Dear petsc-users
> > > > > >
> > > > > > When I try to solve a linear equation Ax=b with BicgStab preconditioner,
> > > > > I
> > > > > > got
> > > > > > an error "Matrix is missing diagonal number".  That is because I have
> > > > > zeros
> > > > > > on
> > > > > > the diagonal of the matrix.
> > > > > >
> > > > > > I am wondering if there is some simple method to avoid that?
> > > > > >
> > > > > > Best,
> > > > > > Liang
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > >
> >
> >
> >
>
>


-- 
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




More information about the petsc-users mailing list