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