Note that in (28) as defined a few lines earlier in Will's pdf (well I made that):

h_cm(t) = h_m(y=0,t)


I think it may be nice pedagogical 1D firedrake example when it all works?
This was a 2016 cdt task btw.


From: firedrake-bounces@imperial.ac.uk <firedrake-bounces@imperial.ac.uk> on behalf of William Booker <scwb@leeds.ac.uk>
Sent: Thursday, March 2, 2017 2:06 PM
To: firedrake
Subject: [firedrake] Point evaluations of a function
 

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