[petsc-users] How to compute the condition number of SchurComplementMat preconditioned with PCSHELL.

Barry Smith bsmith at petsc.dev
Wed Nov 10 08:45:55 CST 2021


> P is a diffusion matrix, which itself is inverted by KSPCG)

This worries me. Unless solved to full precision the action of solving with CG is not a linear operator in the input variable b, this means that the action of your Schur complement is not a linear operator and so iterative eigenvalue algorithms may not work correctly (even if the linear system seems to be converging). 

I suggest you try a KSP tolerance of 10^-14 for the inner KSP solve when you attempt the eigenvalue computation.

Barry


> On Nov 10, 2021, at 9:09 AM, Vladislav Pimanov <Vladislav.Pimanov at skoltech.ru> wrote:
> 
> Great thanks, Matt!
> The second option is what I was looking for.
> 
> Best Regards,
> Vlad
> От: Matthew Knepley <knepley at gmail.com>
> Отправлено: 10 ноября 2021 г. 16:45:00
> Кому: Vladislav Pimanov
> Копия: petsc-users at mcs.anl.gov
> Тема: Re: [petsc-users] How to compute the condition number of SchurComplementMat preconditioned with PCSHELL.
>  
> On Wed, Nov 10, 2021 at 8:42 AM Vladislav Pimanov <Vladislav.Pimanov at skoltech.ru <mailto:Vladislav.Pimanov at skoltech.ru>> wrote:
> Dear PETSc community,
> 
> 
> I wonder if you could give me a hint on how to compute the condition number of a preconditioned matrix in a proper way.
> I have a MatSchurComplement matrix S and a preconditioner P of the type PCSHELL (P is a diffusion matrix, which itself is inverted by KSPCG).
> I tried to compute the condition number of P^{-1}S "for free" during the outer PCG procedure using KSPComputeExtremeSingularValues() routine.
> Unfortunately, \sigma_min does not converge even if the solution is computed with very high precision.
> I also looked at SLEPc interface, but did not realised how PC should be included.
> 
> You can do this at least two ways:
> 
>   1) Make a MatShell for P^{-1} S. This is easy, but you will not be able to use any factorization-type PC on that matrix.
> 
>   2) Solve instead the generalized EVP, S x = \lambda P x. Since you already have P^{-1}, this should work well.
> 
>   Thanks,
> 
>      Matt
> Thanks!
> 
> Sincerely,
> Vladislav Pimanov
> 
> 
> 
> -- 
> 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
> 
> https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211110/a027d46f/attachment.html>


More information about the petsc-users mailing list