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
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
participants (2)
-
Onno Bokhove
-
William Booker