We need to have a version of a Quasi-Newton method which forces Jacobian reuse and terminates if convergence starts to fail. I think this can be done just with a SingleFactorizeNewton and some extended TerminationCondition stuff.
For this SingleFactorizeNewton, we'd need to allow it in the iterator form to have a mode where changing u does not cause a new Jacobian to be taken. Thus in the cache interface, we'd need a reevalute_jacobian! that can be handled outside the solver for such cases.
Once those are together, then I think we're good to try it in OrdinaryDiffEq?
This package is almost complete to be used in OrdinaryDiffEq.jl. For other discussions on this topic, see https://github.com/SciML/OrdinaryDiffEq.jl/issues/1570
However, there are some special things done in its nonlinear solvers which we would need to allow for here:
SingleFactorizeNewton
and some extendedTerminationCondition
stuff.SingleFactorizeNewton
, we'd need to allow it in the iterator form to have a mode where changingu
does not cause a new Jacobian to be taken. Thus in thecache
interface, we'd need areevalute_jacobian!
that can be handled outside the solver for such cases.Once those are together, then I think we're good to try it in OrdinaryDiffEq?