Failed with sending to the list, so copying below. Lawrence On 10 Nov 2014, at 19:02, Lawrence Mitchell <lawrence.mitchell@imperial.ac.uk> wrote:
On 10 Nov 2014, at 18:48, Anna Kalogirou <a.kalogirou@leeds.ac.uk> wrote:
Dear Lawrence,
Thank you very much for the reply. Very useful. It now gives the error:
====================== Traceback (most recent call last): File "nonlinear_swe.py", line 73, in <module> phi_solver.solve() File "<string>", line 2, in solve File "/opt/firedrake/2.0/lib/python2.7/site-packages/PyOP2-0.11.0_117_gcfe592d-py2.7-linux-x86_64.egg/pyop2/profiling.py", line 197, in wrapper return f(*args, **kwargs) File "/opt/firedrake/2.0/lib/python2.7/site-packages/firedrake/solving.py", line 336, in solve %s""" % (self.snes.getIterationNumber(), msg)) RuntimeError: Nonlinear solve failed to converge after 0 nonlinear iterations. Reason: DIVERGED_LINE_SEARCH ======================
Do you have any idea what that might be? Do I need do give any arguments in the phi_solver.solve()?
So this tells me that the nonlinear solver (line search newton) failed because the line search failed. You can try running with
solver_parameters={'snes_monitor': True, 'ksp_monitor': True, 'snes_linesearch_monitor': True}
(add this as an argument to the construction of the nonlinearvariationalsolver)
to see what's going on.
If I make what I /think/ are the correct changes to your initial script, I see that the phi solver has the same diverged line search. This looks to be because at the second time step, the residual is already 1e-14 before we start. But I don't know if that's expected, or if I changed bits correctly.
Lawrence