<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">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<br></div><div>Natacha <br></div><div><br></div><div> <br></div><div><br></div><br></div>