<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 26, 2022 at 11:00 PM 晓峰 何 <<a href="mailto:tlanyan@hotmail.com">tlanyan@hotmail.com</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 style="overflow-wrap: break-word;">
Dear developers,
<div><br>
</div>
<div>To avoid zero pivot error in IC/ILU preconditioners,  I plan to permute matrix before solving the linear system. I referred example ex10(<a href="https://petsc.org/main/src/ksp/ksp/tutorials/ex10.c.html" target="_blank">https://petsc.org/main/src/ksp/ksp/tutorials/ex10.c.html</a>)
 and ex18(<a href="https://petsc.org/main/src/ksp/ksp/tutorials/ex18.c.html" target="_blank">https://petsc.org/main/src/ksp/ksp/tutorials/ex18.c.html</a>), and was confused that why vector b is permuted by column permutation index set:</div>
<div><br>
</div>
<div>// in ex18.c</div>
<div>
<pre width="80" style="font-variant-ligatures:normal"><a name="m_9213192851420715342_line174">174: </a>  <font color="#4169E1">if</font> (permute) {
<a name="m_9213192851420715342_line175">175: </a>    <a href="https://petsc.org/main/docs/manualpages/Mat/Mat/" target="_blank">Mat</a> Aperm;
<a name="m_9213192851420715342_line176">176: </a>    <a href="https://petsc.org/main/docs/manualpages/MatOrderings/MatGetOrdering/" target="_blank">MatGetOrdering</a>(A, ordering, &rowperm, &colperm);
<a name="m_9213192851420715342_line177">177: </a>    <a href="https://petsc.org/main/docs/manualpages/Mat/MatPermute/" target="_blank">MatPermute</a>(A, rowperm, colperm, &Aperm);
<span style="background-color:rgb(255,38,0)"><a name="m_9213192851420715342_line178">178: </a>    <a href="https://petsc.org/main/docs/manualpages/Vec/VecPermute/" target="_blank">VecPermute</a>(b, colperm, <a href="https://petsc.org/main/docs/manualpages/Sys/PETSC_FALSE/" target="_blank">PETSC_FALSE</a>);</span>
<a name="m_9213192851420715342_line179">179: </a>    <a href="https://petsc.org/main/docs/manualpages/Mat/MatDestroy/" target="_blank">MatDestroy</a>(&A);
<a name="m_9213192851420715342_line180">180: </a>    A = Aperm; <font color="#B22222">/* Replace original operator with permuted version */</font>
<a name="m_9213192851420715342_line181">181: </a>  }</pre>
<div>As far as I understand, vector b should be only  affected by permuting rows in matrix A, instead of column permutation. How to understand that permuting vector b with column permutation index set of matrix A?</div>
</div>
<div><br></div></div></blockquote><div><br></div><div>I get confused by this also. I just test it. Try one and if thats wrong, its the other! </div><div>As I recall a permutation vector has the place where the equation sould _go_</div><div><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 style="overflow-wrap: break-word;"><div>
</div>
<div>Another question is why  <span style="font-family:-apple-system,system-ui,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";background-color:rgb(255,255,255)">MatReorderForNonzeroDiagonal
 function </span><span style="font-family:-apple-system,system-ui,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";background-color:rgb(255,255,255);font-size:14px">only
 works for type MATSEQAIJ? If it works for other matrix types, then this function will meet my </span><font face="-apple-system, system-ui, Segoe UI, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol"><span style="font-size:14px">requirement.</span></font></div>
<div><br></div></div></blockquote><div><br></div><div>It has not been implemented. You could do this, clone the MATSEQAIJ one for the matrix type that you want.</div><div>See <a href="https://petsc.org/release/developers/contributing/">https://petsc.org/release/developers/contributing/</a>  for instructions on contributing to PETSc.</div><div><br></div><div>Thanks,</div><div>Mark</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div>
</div>
<div><br>
</div>
<div>Thanks,</div>
<div><br>
</div>
<div>Xiaofeng</div>
</div>

</blockquote></div></div>