<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">Could that be due to "numerical zero pivot" (caused due to cancellation and underflow)?  You can try to force diagonal to be nonzero.</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">Looking at the options page:</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><a href="https://petsc.org/main/docs/manualpages/Mat/MATSOLVERSUPERLU_DIST/">https://petsc.org/main/docs/manualpages/Mat/MATSOLVERSUPERLU_DIST/</a><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">You can enable this one:</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><dt style="box-sizing:border-box;font-weight:700;color:rgb(51,51,51);font-family:-apple-system,"system-ui","Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:15px">-mat_superlu_dist_replacetinypivot</dt><dd style="box-sizing:border-box;margin-top:3px;margin-bottom:10px;margin-left:30px;color:rgb(51,51,51);font-family:-apple-system,"system-ui","Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:15px"><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1.15rem;font-size:1em">replace tiny pivots</p></dd></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">(the default is NO, not to replace tiny pivots, including zero pivots.)</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000">Sherry</div><div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small;color:#000000"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 10, 2022 at 4:31 PM Jorti, Zakariae via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">




<div dir="ltr">
<div id="gmail-m_-7469783467229031629divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols" dir="ltr">
<div>Hi, <br>
<br>
<p>Thank you all for your answers. <br>
I have tried your suggestions and here is what I found. <br>
Barry you were right about the first case. But in the second case, I am not using a Schur fieldsplit but a multiplicative fieldsplit : -fieldsplit_TEBV_fieldsplit_EBV_pc_type fieldsplit -fieldsplit_TEBV_fieldsplit_EBV_pc_fieldsplit_type multiplicative
<br>
<br>
So, there should not be any Schur complement approximation Sp. <br>
<br>
When I ran a test with -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_ksp_view_pre -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_ksp_error_if_not_converged, I got this error:
<br>
</p>
<p><br>
</p>
<div>    0 SNES Function norm 6.368031218939e-02 <br>
      0 KSP Residual norm 6.368031218939e-02 <br>
      Linear fieldsplit_ni_ solve converged due to CONVERGED_ATOL iterations 0<br>
        Linear fieldsplit_TEBV_fieldsplit_tau_ solve converged due to CONVERGED_RTOL iterations 1<br>
          Linear fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_EP_ solve converged due to CONVERGED_RTOL iterations 3<br>
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------<br>
[0]PETSC ERROR: Zero pivot in LU factorization: <a href="https://petsc.org/release/faq/#zeropivot" target="_blank">https://petsc.org/release/faq/#zeropivot</a><br>
[0]PETSC ERROR: Zero pivot in row 1658<br>
[0]PETSC ERROR: See <a href="https://petsc.org/release/faq/" target="_blank">https://petsc.org/release/faq/</a> for trouble shooting.<br>
[0]PETSC ERROR: Petsc Development GIT revision: v3.16.3-751-g2f43bd9bc3  GIT Date: 2022-01-26 22:34:02 -0600<br>
[0]PETSC ERROR: ./main on a macx named <a href="http://pn2032683.lanl.gov" target="_blank">pn2032683.lanl.gov</a> by zjorti Fri Jun 10 16:17:35 2022<br>
[0]PETSC ERROR: Configure options PETSC_ARCH=macx --with-fc=0 --with-mpi-dir=/Users/zjorti/.brew --download-hypre --with-debugging=0 --with-cxx-dialect=C++11 --download-superlu_dist --download-parmetis --download-metis --download-ptscotch --download-cmake</div>
<br>
<br>
<p></p>
<p>Then I tried this flag -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_ksp_view_pmat binary:BVmat:binary_matlab and checked the resulting matrix in Matlab.
<br>
For Matlab, this is a full rank matrix, and the LU factorization there was carried out without any issues.</p>
<p>I also outputted the BV block directly from the Jacobian matrix. <br>
Once again, according to Matlab, it is a full rank matrix and it computes the LU factorization without any problem.
</p>
</div>
<br>
<br>
<div style="color:rgb(0,0,0)">
<hr style="display:inline-block;width:98%">
<div id="gmail-m_-7469783467229031629divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> Barry Smith <<a href="mailto:bsmith@petsc.dev" target="_blank">bsmith@petsc.dev</a>><br>
<b>Sent:</b> Friday, June 10, 2022 7:32 AM<br>
<b>To:</b> Jorti, Zakariae<br>
<b>Cc:</b> <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>; Tang, Xianzhu<br>
<b>Subject:</b> [EXTERNAL] Re: [petsc-users] Question about SuperLU</font>
<div> </div>
</div>
<div>
<div><br>
</div>
  It is difficult to tell exactly how the preconditioner is being formed with the information below it looks like in the 
<div><br>
</div>
<div>first case: the original B diagonal block and V diagonal block of the matrix are being factored separately with SuperLU_DIST </div>
<div><br>
</div>
<div>second case: the B block is factored with SuperLU_DIST and an explicit approximation to a Schur complement of the V block (Schur complement on eliminating the B block) is formed using "Preconditioner for the Schur complement formed from Sp, an
 assembled approximation to S, which uses A00's %sdiagonal's inverse" (this is the printout from a KSPView() for this part of the preconditioner). </div>
<div><br>
</div>
<div>  My guess is you have a "Stokes"-like problem where the V block is identically 0 so, of course, the SuperLU_DIST will fail on it. But the approximation of the Schur complement onto that block is not singular so SuperLU_DIST has no trouble. If
 I am wrong and the V block is not identically 0 then it may be singular (or possibly, but less likely just badly order) so that SuperLU_DIST encounters a zero pivot.</div>
<div><br>
</div>
<div>  You can run with -ksp_view_pre to have the KSP print the KSP solver algorithm details BEFORE the linear solve (hence they would get printed despite your failed solve). That would be useful to see exactly what your preconditioner is.</div>
<div><br>
</div>
<div>   You can use -ksp_view_pmat (with appropriate prefix) to display the matrix that is going to be factored. Thus you can quickly verify what V is.</div>
<div><br>
</div>
<div>  If you run with -ksp_error_if_not_converged then the solver will stop exactly when the zero pivot is encountered; this would include some information from SuperLU_DIST which might include the row number etc. </div>
<div><br>
</div>
<div>  Notes on PETSc improvements needed. </div>
<div><br>
</div>
<div>1) The man page for KSPCheckSolve() is terribly misleading</div>
<div><br>
</div>
<div>2) It would be nice to have a view that displayed the nested fieldsplit preconditioners more clearly</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
<div><br>
<blockquote type="cite">
<div>On Jun 9, 2022, at 5:19 PM, Jorti, Zakariae via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>> wrote:</div>
<br>
<div>
<div id="gmail-m_-7469783467229031629divtagdefaultwrapper" dir="ltr" style="font-style:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;font-size:12pt;font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<p style="margin-top:0px;margin-bottom:0px"></p>
<div>Hi,<span> </span><br>
<br>
I am solving non-linear problem that has 5 unknowns {ni, T, E, B, V}, and for the preconditioning part, I am using a FieldSplit preconditioner. At the last fieldsplit/level, we are left with a {B,V} block that tried to precondition in 2 different ways:<span> </span><br>
a) SuperLU:<span> </span><br>
-fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_ksp_type preonly -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_pc_type lu -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_pc_factor_mat_solver_type superlu_dist  <br>
b) a Schur-based fieldsplit preconditioner that uses SuperLU for both V and B blocks:<br>
-fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_ksp_type gmres -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_pc_type fieldsplit -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_pc_fieldsplit_type schur -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_pc_fieldsplit_schur_precondition
 selfp -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_fieldsplit_B_ksp_type preonly -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_fieldsplit_B_pc_type lu -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_fieldsplit_B_pc_factor_mat_solver_type superlu_dist -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_fieldsplit_V_ksp_type
 preonly -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_fieldsplit_V_pc_type lu -fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_fieldsplit_V_pc_factor_mat_solver_type superlu_dist<br>
<br>
Option a) yields the following error:<span> </span><br>
"     Linear fieldsplit_ni_ solve converged due to CONVERGED_ATOL iterations 0<br>
        Linear fieldsplit_TEBV_fieldsplit_tau_ solve converged due to CONVERGED_RTOL iterations 1<br>
          Linear fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_EP_ solve converged due to CONVERGED_RTOL iterations 5<br>
          Linear fieldsplit_TEBV_fieldsplit_EBV_fieldsplit_BV_ solve did not converge due to DIVERGED_PC_FAILED iterations 0<br>
                         PC failed due to FACTOR_NUMERIC_ZEROPIVOT "<span> </span><br>
whereas options b) seems to be working well.<span> </span><br>
Is it possible that the SuperLU on the {V,B} block uses a reordering that introduces a zero pivot or could there be another explanation for this error?</div>
<br>
Many thanks.<span> </span><br>
Best,<br>
<br>
Zakariae<span> </span></div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>

</blockquote></div>