On Mar 7, 2013, at 9:00 AM, Jed Brown <jedbrown at mcs.anl.gov> wrote:
> > On Thu, Mar 7, 2013 at 8:44 AM, Barry Smith <bsmith at mcs.anl.gov> wrote: > And merged with the SNESUpdateCheckJacobian() which is not as extensive > as the "compare" test but far better designed and much prettier code :-) Also > could all that code be pulled out of SNESComputeJacobian() and put in a > separate private routine called by SNESComputeJacobian()? > > I see snes->ops->update in all the solvers, including those that do not > compute Jacobians. Can those calls be moved inside SNESComputeJacobian()? Ok > > If SNESUpdateCheckJacobian continues to be called before computing the > Jacobian, then it should finish by re-evaluating the residual at the original > point. It is to be merged with your compare stuff and all called from SNESComputeJacobian() as I indicated in my last email. It will not be called by the Update stuff, I was wrong to put it there. > Why? Because we allow people to cache part of the Jacobian internally and > (especially for non-smooth problems) we need to ask the user for the Jacobian > at exactly the same place we evaluated the residual. > > Do we need this SNESSetUpdate() system for anything else? Maybe not. > > I object to -snes_compare because it sounds like you are comparing SNESes, > which you are not. Maybe -snes_jacobian_compare ? > > I'm happy to use -snes_jacobian_check (or -snes_check_jacobian, depending on > our endianness). I like -snes_jacobian_check options rather than a million -snes_jacobian_check_xyz
