I'm continuing Clemens Domanig's work. Currently I'm stuck at his problem as 
described here: 
http://lists.mcs.anl.gov/pipermail/petsc-users/2011-August/009571.html

As far as I understand, getting the diagonal matrix from MUMPS is not possible, 
so Clemens (and I) resort to MATSOLVERPETSC to obtain D.


Uwe 

On 12.12.2011, at 18:40, Barry Smith wrote:
> 
>   A "factored" matrix in PETSc whether with a PETSc implementation or an 
> external implementation such as MUMPS, or SuperLU is a weird beast. It is 
> likely in some strange convoluted data structure from which extracting 
> information is not easy.
> 
>   What information, exactly do you want to obtain from the factored matrix? 
> If we know that we might be able to help you get it.
> 
>    Barry
> 
> On Dec 12, 2011, at 11:35 AM, Uwe Schlifkowitz wrote:
> 
>> Dear list,
>> 
>> following advice from this list and petsc documentation (especially 
>> http://www.mcs.anl.gov/petsc/petsc-current/src/ksp/ksp/examples/tutorials/ex52.c.html
>>  ), i have the following code:
>> 
>> //---------
>>                              ierr = KSPCreate( coml,&kspBA);CHKERRQ(ierr);
>>                              ierr = KSPSetOperators( kspBA, Kt, Kt, 
>> DIFFERENT_NONZERO_PATTERN);CHKERRQ(ierr);
>> 
>>                              ierr = 
>> KSPSetType(kspBA,KSPPREONLY);CHKERRQ(ierr);
>> 
>>                              ierr = KSPGetPC(kspBA, &pcba);
>> 
>>                              ierr = PCSetType(pcba, 
>> PCCHOLESKY);CHKERRQ(ierr);
>> 
>>                              ierr = PCFactorSetMatSolverPackage(pcba, 
>> MATSOLVERPETSC);CHKERRQ(ierr);
>>                              ierr = 
>> PCFactorSetUpMatSolverPackage(pcba);CHKERRQ(ierr);
>>                              ierr = 
>> MatGetFactor(Kt,"petsc",MAT_FACTOR_CHOLESKY,&DiagM);CHKERRQ(ierr);
>>                              ierr = PCFactorGetMatrix(pcba, 
>> &DiagM);CHKERRQ(ierr);
>> 
>>                              ierr = KSPSetUp(kspBA);CHKERRQ(ierr);
>>                              //ierr = 
>> MatView(DiagM,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
>>                              //ierr = 
>> MatView(DiagM,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
>>                              ierr = VecDuplicate(fin,&diag);CHKERRQ(ierr);
>>                              ierr = MatGetDiagonal(DiagM,diag);CHKERRQ(ierr);
>> //-----------
>> 
>> where Kt is a stiffness matrix. I was hoping that PCFactorGetMatrix() makes 
>> DiagM become D from a LDL^T factorization, but to me it seems as if this is 
>> not true.
>> 
>> Can anyone clarify?
>> 
>> Regards,
>> Uwe


Reply via email to