[petsc-dev] any way to detect if a matrix is singular?

Barry Smith bsmith at mcs.anl.gov
Wed Oct 11 05:36:09 CDT 2017


  For testing purposes you can use -pc_type none -ksp_monitor_singular_value  and see if it looks like the smallest singular value is converging to zero.




> On Oct 10, 2017, at 7:20 PM, Kong, Fande <fande.kong at inl.gov> wrote:
> 
> Thanks, Hong and Matt,
> 
> I think the matrix is singular.  I will be checking the implementation.
> 
> Fande,
> 
> On Tue, Oct 10, 2017 at 8:57 AM, Hong <hzhang at mcs.anl.gov> wrote:
> Fande,
> '-pc_factor_shift_amount 1' is huge.
> Try use petsc default shift amount '1.e-14' by 
>  '-pc_factor_shift_type  nonzero' only.
> 
> Hong
> 
> On Tue, Oct 10, 2017 at 9:40 AM, Matthew Knepley <knepley at gmail.com> wrote:
> On Tue, Oct 10, 2017 at 10:36 AM, Kong, Fande <fande.kong at inl.gov> wrote:
> Hi Developers,
> 
> I am trying to use the native LU in PETSc to compute a matrix (arising from a fluid-structure interaction problem). I encounter a zero pivot. The matrix gives the wrong Newton direction when using "-pc_factor_shift_type  nonzero -pc_factor_shift_amount 1".  I hence guess the matrix is singular.
> 
> Any easy way to detect if or not the matrix is singular??
> 
> That is the easiest way, namely having LU fail. You can catch the failure and do something useful.
> 
>   Matt
>  
> Fande,
> 
> 
> 
> -- 
> 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/
> 
> 



More information about the petsc-dev mailing list