Dear Firedrakers,
This is a somewhat similar query to what Onno asked earlier this week about evaluating a function at a point in Firedrake.
It's a bit easier because the point evaluation comes at the boundary of the domain, so we're currently including it through ds(1) integrals.
The attached script is a Crank-Nicholson weak form for equations 11-14 in the attached pdf.
The point evaluation comes in at equation 28 where the boundary inflow evolution can be combined with the diffusion equation.
The current script works when theta = 0, so that the non-linear parts are known so we can use a linear solver.
When we choose a non zero theta, we get the following error for a nonlinear solve:
h_solver.solve()
File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/variational_solver.py", line 223, in solve
solving_utils.check_snes_convergence(self.snes)
File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/solving_utils.py", line 160, in check_snes_convergence
%s""" % (snes.getIterationNumber(), msg))
firedrake.exceptions.ConvergenceError: Nonlinear solve failed to converge after 0 nonlinear iterations.
Reason:
Inner linear solve failed to converge after 0 iterations with reason: DIVERGED_NANORINF
We believe it may be due to having the unknown boundary flux evaluation.
What can we do to fix this for a nonzero theta?
Thanks
Will