OK, got it. Thanks,
Franck ----- Mail original ----- > De: "Hong" <[email protected]> > À: "Franck Houssen" <[email protected]> > Cc: "For users of the development version of PETSc" <[email protected]> > 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" < [email protected] > > > > > > > À: "Franck Houssen" < [email protected] > > > > > > > Cc: "For users of the development version of PETSc" < > > > [email protected] > > > > > > > > > > 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 < [email protected] > > > > > > > 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 > > > > > >
