<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Natacha:</div><div class="gmail_quote">I can repeat the error with your ex1f.F.</div><div class="gmail_quote"><br></div><div class="gmail_quote">The lsqr solver in PETSc was contributed by a user a decade ago. I'll read the original algorithm and investigate it.</div><div class="gmail_quote"><br></div><div class="gmail_quote">I'll let you know the result. </div><div class="gmail_quote"><br></div><div class="gmail_quote">Hong</div><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Dear  PETSc users,<br></div>I am trying to solve an over determined linear system of equations Ax =b with the least square solver LSQR.<br></div>The matrix A is rectangular : it has m rows and n columns with m>n.  <br></div>I set the preconditioner to "PCNONE"  (following for instance post <a href="https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2012-May/013591.html" target="_blank">https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2012-May/013591.html</a>)<br><br></div>Matrix A has the form : <br></div><div>A(1:n,1:n)        = Identity(n)<br></div><div>A(n+1:m, 1:n) = 0.<br><br></div><div>I define a vector u of size n and set u(1:n) to 1.0<br><br></div><div>The right hand side b= Au. <br><br></div><div>The (fortran) test program is attached (it's  petsc-3.5.2/src/ksp/ksp/examples/tutorials/ex1f.F slightly modified)<br><br></div><div>The size of matrix A is defined at runtime<br><br></div><div>The solver ends OK with m=10, n=2 but goes wrong  with  m=10, n=3 (KSP Converged reason = -5)<br><br></div><div>The output is shown below:<br><br>First run with n=2 columns <br>====================<br>./ex1f -ksp_type lsqr -vec_type seq -ksp_monitor -m 10 -n 2<br><br>  0 KSP Residual norm 1.414213562373e+00 <br>  1 KSP Residual norm 3.790370795009e-16 <br>KSP Object: 1 MPI processes<br>  type: lsqr<br>  maximum iterations=10000, initial guess is zero<br>  tolerances:  relative=1e-07, absolute=1e-50, divergence=10000<br>  left preconditioning<br>  using UNPRECONDITIONED norm type for convergence test<br>PC Object: 1 MPI processes<br>  type: none<br>  linear system matrix = precond matrix:<br>  Mat Object:   1 MPI processes<br>    type: seqaij<br>    rows=10, cols=2<br>    total: nonzeros=2, allocated nonzeros=50<br>    total number of mallocs used during MatSetValues calls =0<br>      using I-node routines: found 4 nodes, limit used is 5<br> KSP Converged Reason  2<br>Norm of error < 1.e-12,Iterations =     1<br><br></div><div>Second run, with n=3<br>================<br>./ex1f -ksp_type lsqr -vec_type seq -ksp_monitor -m 10 -n 3<br><br> 0 KSP Residual norm 1.732050807569e+00 <br>KSP Object: 1 MPI processes<br>  type: lsqr<br>  maximum iterations=10000, initial guess is zero<br>  tolerances:  relative=1e-07, absolute=1e-50, divergence=10000<br>  left preconditioning<br>  using UNPRECONDITIONED norm type for convergence test<br>PC Object: 1 MPI processes<br>  type: none<br>  linear system matrix = precond matrix:<br>  Mat Object:   1 MPI processes<br>    type: seqaij<br>    rows=10, cols=3<br>    total: nonzeros=3, allocated nonzeros=50<br>    total number of mallocs used during MatSetValues calls =0<br>      using I-node routines: found 5 nodes, limit used is 5<br> KSP Converged Reason -5<br>Norm of error =  0.1732E+01,  Iterations =     0<br><br></div><div><br></div><div>I am using version 3.5.2 of PETSc library<br><br></div><div>I am probably doing something wrong, but I don't understand what the problem is. <br></div><div>Does anyone have an idea of what is going on ? <br></div><div>Best regards<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div>Natacha <br></div><div><br></div><div> <br></div><div><br></div><br></font></span></div>
</blockquote></div><br></div></div>