Clemens, Petsc's LDLt decomposition is likely different from mumps' LDLt. Are you sure you want Petsc's D, but use mumps LDLt?
I suggest sending a request to mumps developer on how to accessing mumps' D. Hong On Tue, Aug 2, 2011 at 8:12 AM, Matthew Knepley <knepley at gmail.com> wrote: > On Tue, Aug 2, 2011 at 12:53 PM, Clemens Domanig > <clemens.domanig at uibk.ac.at> wrote: >> >> Maybe I should describe the hole problem. >> I'm using MUMPS to make LDLt decomposition - all from command line. >> But sometimes I need the diagonal entries (respectively the number of >> negative entries) of the D matrix. But there is no way to get this >> information back from MUMPS via petsc ( as far as I found out). > > Yes, we have no access to MUMPS internal data. > >> >> There was the suggestion to use MatGetIntertia but this is only for >> off-diagonal-information. > > I am not sure what you mean by that. > >> >> So I used >> PCSetType( prec, PCCHOLESKY); >> PCFactorGetMatrix( prec, &M); >> MatGetDiagonal( M, z); >> It only works without MUMPS and gives me the diagonal entries I want in >> Matrix M - although the entries are 1/x. >> Vector z is full of zeros - only the last entry is the 'same' as in M (x >> instead of 1/x). >> >> So the idea was to somehow turn off MUMPS if I need the diagonal entries >> and then turn it on again. > > Here is the easiest way to do it. Keep two complete solvers > ? a) KSP with MUMPS > ? b) KSP with Cholesky, give this one KSPSetOptionsPrefix(ksp, "diag_"); > That way -diag_pc_type cholesky will work. Then use the solver you want. > >> >> The problem with PCFactorGetMatSolverPackage is I didn't manage to use it. >> >> const MatSolverPackage pack; >> PCFactorGetMatSolverPackage( prec, &pack); >> PetscSynchronizedPrintf( PETSC_COMM_WORLD, "%s\n", pack); >> I expected 'mumps' as output but got 'H??????tdH3%0' > > It would seem its not yet setup. > ? ?Matt > >> >> Thx >> >> >> >> Matthew Knepley wrote: >>> >>> On Tue, Aug 2, 2011 at 9:28 AM, Clemens Domanig >>> <clemens.domanig at uibk.ac.at <mailto:clemens.domanig at uibk.ac.at>> >>> wrote: >>> >>> ? ?Hi, >>> >>> ? ?usually I'm using MUMPS by puting '-pc_factor_mat_solver_package >>> ? ?mumps' into the .petscrc. >>> ? ?Now I want to change in runtime between MUMPS and non-MUMPS so I >>> ? ?tried to turn it on with >>> ? ?PCFactorSetMatSolverPackage( pre, MAT_SOLVER_MUMPS); >>> ? ?but I doesn't have any effect. >>> >>> >>> This is complicated because you have to set this at the right time during >>> the solver setup process. >>> Command line arguments are much easier. However, you should call this >>> after the preconditioner >>> type is set, but before it is setup. >>> >>> ? ?I also have a problem with PCFactorGetMatSolverPackage(). How can I >>> ? ?get back an output as described in the documentation that has the >>> ? ?type 'const'? >>> >>> >>> What is the problem? I do not understand? >>> >>> ? ?Matt >>> >>> ? ?Thx - Clemens >>> >>> >>> >>> >>> -- >>> 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 >> > > > > -- > 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 >
