[petsc-dev] How to get L and D from cholesky factorisation ?

Franck Houssen franck.houssen at inria.fr
Fri Aug 25 12:44:28 CDT 2017


OK, got it. 

Thanks, 

Franck 

----- Mail original -----

> De: "Hong" <hzhang at mcs.anl.gov>
> À: "Franck Houssen" <franck.houssen at inria.fr>
> Cc: "For users of the development version of PETSc" <petsc-dev at mcs.anl.gov>
> Envoyé: Jeudi 24 Août 2017 18:29:46
> Objet: Re: [petsc-dev] How to get L and D from cholesky factorisation ?

> Franck:

> > OK. I 'll try to shed some light on this when I have a MUMPS's guy around
> > !... And try to ask to get that exposed if possible (?).
> 
> > I guess the answer is the same for getting L and U from LU factorisation
> > (using MUMPS).
> 

> Why do you want to see L and U?

Wanted to test an idea "quick and fast" as I supposed I could get L and U easily (as it has been computed somewhere !). Anyway, no big deal. 

> > What about the same question when using any other package ? (say SUPERLU)
> 

> Would Same response, same response from PETSc as well. Logical L and U are
> actually stored in strange data structures for efficient data accessing
> (see our paper attached), which are not intended to be exposed to users.

OK, thanks. I'll try to read the paper. 

> Hong

> > > De: "Hong" < hzhang at mcs.anl.gov >
> > 
> 
> > > À: "Franck Houssen" < franck.houssen at inria.fr >
> > 
> 
> > > Cc: "For users of the development version of PETSc" <
> > > petsc-dev at mcs.anl.gov
> > > >
> > 
> 
> > > Envoyé: Jeudi 24 Août 2017 17:00:40
> > 
> 
> > > Objet: Re: [petsc-dev] How to get L and D from cholesky factorisation ?
> > 
> 

> > > mumps stores LDLt using its private internal data structure, which is not
> > > exposed to user and can be used only via mumps API.
> > 
> 
> > > Either ask mumps developer about it or use a debugger to step into mumps
> > > source code.
> > 
> 

> > > Hong
> > 
> 

> > > On Thu, Aug 24, 2017 at 9:46 AM, Franck Houssen < franck.houssen at inria.fr
> > > >
> > > wrote:
> > 
> 

> > > > How to get L (as a Mat) and D (probably as a Vec) from cholesky
> > > > factorisation
> > > > ?
> > > 
> > 
> 

> > > > I googled and looked in the doc but didn't find any obvious answer. I
> > > > am
> > > > not
> > > > sure to get the steps to follow: is there a dedicated example ?
> > > 
> > 
> 

> > > > To make it short, I have:
> > > 
> > 
> 
> > > > PCSetType(pc, PCCHOLESKY); // LDLt
> > > 
> > 
> 
> > > > PCFactorSetMatSolverPackage(pc, "mumps");
> > > 
> > 
> 
> > > > PCFactorGetMatrix(pc, &f);
> > > 
> > 
> 
> > > > MatGetInertia(f, ....); // OK !
> > > 
> > 
> 

> > > > Now, I would like to get/see L and D: how to get them ?
> > > 
> > 
> 

> > > > From petsc/src/ksp/ksp/examples/tutorials/ex52.c, I would say
> > > > MatGetDiagonal(f, D) returns D: correct ? If so, how to get L as well ?
> > > 
> > 
> 

> > > > A related question would be : how to get L and U from a PCLU
> > > > factorisation
> > > > ?
> > > 
> > 
> 

> > > > Franck
> > > 
> > 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20170825/12fe8011/attachment.html>


More information about the petsc-dev mailing list