Very cool problem. I think you should use TS to solve it. TS has higher order solvers with adaptive time-stepping, likely at the very beginning it will end up with a very small time step but then quickly increase the time-step. Frankly it is goofy to use backward Euler with fixed time step on this problem; you'll find that TS is no harder to use than SNES, you just need to use TSSetRHSFunction() and TSSetRHSJacobian() and select an implicit solver.
Barry > On Dec 12, 2016, at 2:29 AM, Praveen C <[email protected]> wrote: > > Hello Matt > > I have attached the detailed output. > > Fenics automatically computes Jacobian, so I think Jacobian should be > correct. I am not able to run the Fenics code without giving the Jacobian. I > am currently writing a C code where I can test this. > > This equation is bit weird. Its like this > > u_t = ( K u_x)_x > > K = u / sqrt(u_x^2 + eps^2) > > If u > 0, then this is a nonlinear parabolic eqn. Problem is that eps = h > (mesh size), so at extrema, it is like > > u_t = (u/eps)*u_xx > > and (1/eps) is approximating a delta function. > > Best > praveen > > On Mon, Dec 12, 2016 at 12:41 PM, Matthew Knepley <[email protected]> wrote: > On Mon, Dec 12, 2016 at 1:04 AM, Matthew Knepley <[email protected]> wrote: > On Mon, Dec 12, 2016 at 12:56 AM, Praveen C <[email protected]> wrote: > Increasing number of snes iterations, I get convergence. > > So it is a problem of initial guess being too far from the solution of the > nonlinear equation. > > Solution can be seen here > > https://github.com/cpraveen/fenics/blob/master/1d/cosmic_ray/cosmic_ray.ipynb > > Also, how is this a parabolic equation? It looks like u/|u'| to me, which > does not look parabolic at all. > > Matt > > Green curve is solution after two time steps. > > It took about 100 snes iterations in first time step and about 50 in second > time step. > > I use exact Jacobian and direct LU solve. > > I do not believe its the correct Jacobian. Did you test it as I asked? Also > run with > > -snes_monitor -ksp_monitor_true_residual -snes_view -snes_converged_reason > > and then > > -snes_fd > > and send all the output > > Matt > > Thanks > praveen > > > > -- > What most experimenters take for granted before they begin their experiments > is infinitely more interesting than any results to which their experiments > lead. > -- Norbert Wiener > > > > -- > What most experimenters take for granted before they begin their experiments > is infinitely more interesting than any results to which their experiments > lead. > -- Norbert Wiener > > <log.txt>
