On Tue, Aug 3, 2010 at 10:54 PM, Filippo Spiga <span dir="ltr">&lt;<a href="mailto:filippo.spiga@disco.unimib.it">filippo.spiga@disco.unimib.it</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
 Dear Hong,<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This confirms that your Jacobian is singular, thus none of linear<br>
solvers would work.<br>
</blockquote>
<br>
So do any preconditioner not help me to solve the problem?<br></blockquote><div><br></div><div>There can exist no solutions when the matrix is singular, thus you have a problem</div><div>with either:</div><div><br></div>
<div>  a) the problem definition</div><div><br></div><div>  b) the creation of your matrix in PETSc</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I put some stuff here: <a href="http://tinyurl.com/fil-petsc" target="_blank">http://tinyurl.com/fil-petsc</a><br>
- &quot;A_LS.m&quot; is matrix (saved by PETSc)<br>
- &quot;b_LS-m&quot;<br>
- the file &quot;eigenvalues_A&quot; contains the eigenvalues of the matrix A, computed by MATLAB.<br>
<br>
I used &quot;-pc_type lu&quot; and 1 only processor. The result is the same of my previous email (*).<br></blockquote><div><br></div><div>This shows that your matrix is singular.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Anyway if I solve the problem using MATLAB I get the right solution. The formulation seems correct. To be</blockquote><div><br></div><div>What does this mean? What method in MATLAB? Some methods (like CG) can iterate on rank deficient</div>
<div>matrices with a compatible rhs and get a solution, but other Krylov methods will fail. Most preconditioners</div><div>will fail.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
honest, the eigenvalues don&#39;t say me nothing. But I&#39;m a computer scientist, not a mathematician. I&#39;m not able to recognize which preconditioner I should use or which modifications (scaling all/part of the rows? reformulate the system in another way?...) do to solve the problem. From my side, it is not possible to try all the preconditioners and also it is not the right way...<br>
</blockquote><div><br></div><div>Actually, I strongly disagree. Preconditioners are very problem specific, and it is often impossible</div><div>to prove which one will work for a certain problem. There are many well-known results along these</div>
<div>lines, such as the paper of Greenbaum, Strakos, and Ptak on GMRES. Experimentation is essential.</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Once again, thanks.<br>
<br>
(*)<br>
[0|23:14:58]: unknown: MatLUFactorNumeric_SeqAIJ() line 668 in src/mat/impls/aij/seq/aijfact.c: Zero pivot row 1 value 0 tolerance 2.77778e-14 * rowsum 0.0277778<br><font color="#888888">
<br>
-- <br>
<br>
Filippo SPIGA<br>
<br>
«Nobody will drive us out of Cantor&#39;s paradise.»<br>
     -- David Hilbert<br>
<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener<br>