how to inverse a sparse matrix in Petsc?

Lisandro Dalcin dalcinl at gmail.com
Tue Feb 5 12:43:06 CST 2008


Yujie,

My recommendation was mainly directed to Ben Tay, as he (like me) only
needs to solve a simple scalar elliptic PDE. In your case, as you
said, BoomerAMG is hard to use.

Any way, to put things completelly clear, I believe you should NEVER
try to build and explicit inverse matrix (unless you problem is really
small and perhaps only for the shake of debug something). Instead, you
have to use LU factorization through the combination of options
'-ksp_type preonly -pc_type lu'.


On 2/5/08, Yujie <recrusader at gmail.com> wrote:
> Hi, Lisandro
>
> I have tried to use BoomerAMG for my problem. My problem is a set of
> elliptic-type linear PDEs. They are strong coupled. The convergence
> was bad. I tried to adjust some parameters, the convergence
> had some improvements and was always bad. I have little knowledge
> about your problem. I have discussed my
> problem with Hypre developers,
>  they told me that if the PDEs are strong coupled, it is difficult to use
> BoomerAMG.
>
> Regards,
> Yujie
>
>
> On 2/5/08, Lisandro Dalcin <dalcinl at gmail.com> wrote:
> > Ben, some time ago I was doing some testing with PETSc for solving
> > incompressible NS eqs with fractional step method. I've found that in
> > our software and hardware setup, the best way to solve the pressure
> > problem was by using HYPRE BoomerAMG. This preconditioner usually have
> > some heavy setup, but if your Poison matrix does not change, then the
> > sucessive solves at each time step are really fast.
> >
> > If you still want to use a direct method, you should use the
> > combination '-ksp_type preonly -pc_type lu' (by default, this will
> > only work on sequential mode, unless you build PETSc with an external
> > package like MUMPS). This way, PETSc computes the LU factorization
> > only once, and at each time step, the call to KSPSolve end-up only
> > doing the triangular solvers.
> >
> > The nice thing about PETSc is that, if you next realize the
> > factorization take a long time (as it usually take in big problems),
> > you can switch BoomerAMG by only passing in the command line
> > '-ksp_type cg -pc_type hypre -pc_hypre_type boomeramg'. And that's
> > all, you do not need to change your code. And more, depending on your
> > problem you can choose the direct solvers or algebraic multigrid as
> > you want, by simply pass the appropriate combination options in the
> > command line (or a options file, using the -options_file option).
> >
> > Please, if you ever try HYPRE BoomerAMG preconditioners, I would like
> > to know about your experience.
> >
> > Regards,
> >
> > On 2/5/08, Ben Tay <zonexo at gmail.com> wrote:
> > > Hi everyone,
> > >
> > > I was reading about the topic abt inversing a sparse matrix. I have to
> > > solve a poisson eqn for my CFD code. Usually, I form a system of linear
> > > eqns and solve Ax=b. The "A" is always the same and only the "b" changes
> > > every timestep. Does it mean that if I'm able to get the inverse matrix
> > > A^(-1), in order to get x at every timestep, I only need to do a simple
> > > matrix multiplication ie x=A^(-1)*b ?
> > >
> > > Hi Timothy, if the above is true, can you email me your Fortran code
> > > template? I'm also programming in fortran 90. Thank you very much
> > >
> > > Regards.
> > >
> > > Timothy Stitt wrote:
> > > > Yes Yujie, I was able to put together a parallel code to invert a
> > > > large sparse matrix with the help of the PETSc developers. If you need
> > > > any help or maybe a Fortran code template just let me know.
> > > >
> > > > Best,
> > > >
> > > > Tim.
> > > >
> > > > Waad Subber wrote:
> > > >> Hi
> > > >> There was a discussion between Tim Stitt and petsc developers about
> > > >> matrix inversion, and it was really helpful. That was in last Nov.
> > > >> You can check the emails archive
> > > >>
> > > >>
> http://www-unix.mcs.anl.gov/web-mail-archive/lists/petsc-users/2007/11/threads.html
> > > >>
> > > >>
> > > >> Waad
> > > >>
> > > >> */Yujie <recrusader at gmail.com>/* wrote:
> > > >>
> > > >>     what is the difference between sequantial and parallel AIJ
> matrix?
> > > >>     Assuming there is a matrix A, if
> > > >>     I partitaion this matrix into A1, A2, Ai... An.
> > > >>     A is a parallel AIJ matrix at the whole view, Ai
> > > >>     is a sequential AIJ matrix? I want to operate Ai at each node.
> > > >>     In addition, whether is it possible to get general inverse using
> > > >>     MatMatSolve() if the matrix is not square? Thanks a lot.
> > > >>
> > > >>     Regards,
> > > >>     Yujie
> > > >>
> > > >>
> > > >>     On 2/4/08, *Barry Smith* <bsmith at mcs.anl.gov
> > > >>     <mailto:bsmith at mcs.anl.gov>> wrote:
> > > >>
> > > >>
> > > >>             For sequential AIJ matrices you can fill the B matrix
> > > >> with the
> > > >>         identity and then use
> > > >>         MatMatSolve().
> > > >>
> > > >>             Note since the inverse of a sparse matrix is dense the B
> > > >>         matrix is
> > > >>         a SeqDense matrix.
> > > >>
> > > >>             Barry
> > > >>
> > > >>         On Feb 4, 2008, at 12:37 AM, Yujie wrote:
> > > >>
> > > >>         > Hi,
> > > >>         > Now, I want to inverse a sparse matrix. I have browsed the
> > > >>         manual,
> > > >>         > however, I can't find some information. could you give me
> > > >>         some advice?
> > > >>         >
> > > >>         > thanks a lot.
> > > >>         >
> > > >>         > Regards,
> > > >>         > Yujie
> > > >>         >
> > > >>
> > > >>
> > > >>
> > > >>
> ------------------------------------------------------------------------
> > > >> Looking for last minute shopping deals? Find them fast with Yahoo!
> > > >> Search.
> > > >>
> <http://us.rd.yahoo.com/evt=51734/*http://tools.search.yahoo.com/newsearch/category.php?category=shopping>
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
> > --
> > Lisandro Dalcín
> > ---------------
> > Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
> > Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
> > Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
> > PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> > Tel/Fax: +54-(0)342-451.1594
> >
> >
>
>


-- 
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594




More information about the petsc-users mailing list