← Back to team overview

dolfin team mailing list archive

Re: [Question #108259]: PETSc Krylov solver did not converge (PETSc reason -4).

 

Anders Logg wrote:
Question #108259 on DOLFIN changed:
https://answers.launchpad.net/dolfin/+question/108259

Anders Logg posted a new comment:
On Thu, Apr 29, 2010 at 04:14:21PM -0000, Murtazo Nazarov wrote:
Question #108259 on DOLFIN changed:
https://answers.launchpad.net/dolfin/+question/108259

    Status: Answered => Solved

Murtazo Nazarov confirmed that the question is solved:
Yes, it seems hypre in my solver does not converge only in the first
iteration. Before it was just a warning, but with the latest dolfin it
stoped since it is assumed that it is an error.

Here I made a test for the same problem using the following lines:

   solver = KrylovSolver("gmres")
   solver.parameters["monitor_convergence"] = True
   solver.parameters["error_on_nonconvergence"] = False
..

"Old" dolfin gives:
....
Applying boundary conditions to linear system.
Applying boundary conditions to linear system.
Solving linear system of size 4184 x 4184 (PETSc Krylov solver).
  0 KSP preconditioned resid norm 2.663347782311e+02 true resid norm 1.371810197831e+01 ||Ae||/||Ax|| 7.817835153984e+08
*** Warning: Krylov solver did not converge (PETSc reason -4).
PETSc Krylov solver (gmres, hypre) failed to converge in 0 iterations.
...

and the latest dolfin gives:

Applying boundary conditions to linear system.
Applying boundary conditions to linear system.
Solving linear system of size 4184 x 4184 (PETSc Krylov solver).
  0 KSP preconditioned resid norm 6.346755394553e+02 true resid norm 3.269022479529e+01 ||Ae||/||Ax|| 3.675021072956e+08
*** Warning: Krylov solver did not converge (PETSc reason -4).
PETSc Krylov solver (gmres, hypre) failed to converge in 0 iterations.

It happened because of the luck of stabilization in startup.

It is nice to know about the latest flags in the parameter list for the
Krylov solver.

murtazo

ok, good to know. So there is nothing wrong with the solver.

I suggest you let "error_on_nonconvergence" stay true, otherwise you
will not see when it fails.

--
Anders


yes, you are right. I put it false only for the first time-step, then I change it to be true. Otherwise I still get warning, which I usually track.

murtazo




References