← Back to team overview

dolfin team mailing list archive

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

 

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

Garth Wells proposed the following answer:

On 29/04/10 00:42, N.A. Borggren wrote:
> Question #108259 on DOLFIN changed:
> https://answers.launchpad.net/dolfin/+question/108259
>
> N.A. Borggren proposed the following answer:
> Hello,
>     It seems that my Krylov solver was working better a few weeks ago than
> now as well.  I applied the assemble_system suggestion above but I still get
> an error message for a humble 756x756 matrix that works just fine without
> the 'gmres' option in solve.  I was relying on 'gmres' before to solve
> problems when just "solve(A, self.u1.vector(), b)" (PETSc LU solver,
> umfpack) would run out of memory.

Try using

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

   solver.solve(A, x, b)

It's possible that your solver wasn't converging before, but is only now 
picked up because DOLFIN now throws an error by default upon failed 
convergence.

Garth


So I've returned to the conundrum of how
> to solve larger systems when neither of these options work.  Any
> suggestions? I'm running on Fedora 12 and had quite an adventure (still
> unsuccesful on my home computer) making dorsal with the Fedora 11 platform
> run.  Is it something wrong with my build?
>     Thanks,
>         Nathan Borggren
>
>
> Assembling linear system and applying boundary conditions...
> Matrix of size 756 x 756 has 9910 nonzero entries.
> Solving linear system of size 756 x 756 (Krylov solver).
> Traceback (most recent call last):
>    File "Lorenz.py", line 120, in<module>
>      z.Run()
>    File "/home/nborggren/Codes/Aleph/Dynamics/DynSys.py", line 166, in Run
>      solve(A, self.u1.vector(), b,'gmres')
>    File
> "/home/nborggren/Work/FEniCS/build/lib/python2.6/site-packages/dolfin/cpp.py",
> line 3834, in solve
>      return _cpp.solve(*args)
> RuntimeError: *** Error: Krylov solver did not converge.
>
>
> On Mon, Apr 26, 2010 at 1:06 PM, Kent
> <question108259@xxxxxxxxxxxxxxxxxxxxx>wrote:
>
>> Question #108259 on DOLFIN changed:
>> https://answers.launchpad.net/dolfin/+question/108259
>>
>>     Status: Open =>  Answered
>>
>> Kent proposed the following answer:
>>> Anders Logg wrote:
>>>> Question #108259 on DOLFIN changed:
>>>> https://answers.launchpad.net/dolfin/+question/108259
>>>>
>>>>      Status: Open =>  Answered
>>>>
>>>> Anders Logg proposed the following answer:
>>>> On Sat, Apr 24, 2010 at 03:38:42AM -0000, Murtazo Nazarov wrote:
>>>>
>>>>> New question #108259 on DOLFIN:
>>>>> https://answers.launchpad.net/dolfin/+question/108259
>>>>>
>>>>> Hi,
>>>>>
>>>>> My solver was working until I recompiled dolfin for some reasons. The
>>>>> Petcs Krylov solver does not converges:
>>>>>
>>>>> Solving linear system of size 4184 x 4184 (PETSc Krylov solver).
>>>>> terminate called after throwing an instance of 'std::runtime_error'
>>>>>    what():  *** Error: PETSc Krylov solver did not converge (PETSc
>>>>> reason -4).
>>>>>
>>>>> However it works well with LUSolver.
>>>>>
>>>>> Does anyone had similar problem?
>>>>>
>>>>
>>>> Are you sure it used to converge? We recently changed a warning to an
>>>> error, so it might be that your old solver didn't converge but you
>>>> only thought it did.
>>>>
>>>>
>>>
>>> I checked now the output of my old solver. It converged with hypre. But,
>>> now it converges with LUSolver but not with Krylov solver.
>>>
>>> I simple solve the mass matrix, after applying Dirichlet boundary
>>> conditions.
>>>
>>> murtazo
>>>
>>
>> I've also seen this a number of times. The problem goes away when
>> using assemble_system that makes the matrix symmetric.
>>
>> I don't have a good explaination, though. And I think it is a bit
>> strange.
>>
>> Kent
>>
>> --
>> You received this question notification because you are a member of
>> DOLFIN Team, which is an answer contact for DOLFIN.
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dolfin<https://launchpad.net/%7Edolfin>
>> Post to     : dolfin@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dolfin<https://launchpad.net/%7Edolfin>
>> More help   : https://help.launchpad.net/ListHelp
>>
>

-- 
You received this question notification because you are a member of
DOLFIN Team, which is an answer contact for DOLFIN.



Follow ups

References