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